Chmod
Файлы в Unix имеют двух владельцев: пользователя (user owner) и группу (group owner). Владелец пользователь может не являтся членом группы, владеющей файлом. Это дает большую гибкость в организации доступа к файлам.
Для определения владельцев файла текущего каталога можно получить подробный листинг командой ls -l. Третья и четвертая колонки содержат имена владельца-пользователя и владельца-группы:
| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
| drwxr-x—x | 2 | root | root | 5456 | Dec 31 | 23:59 | Santa.Claus |
| -rw-r—r— | 1 | andy | group | 23456 | Nov 12 | 13:29 | readme.txt |
Владельцем-пользователем вновь созданного файла является пользователь, который создал файл. Порядок назначения владельца-группы зависит от конкретной версии Unix. Таким образом, владение файлом определяет тот набор операций, который пользователь может совершить с файлом. Часть из них, такие как изменение прав доступа или владельца файла может осуществить толко владелец(или суперпользователь), другие операции, такие как чтение, запись и запуск на выполнение(для исполняемых файлов) дополнительно контролируется правами доступа.
Для определения прав доступа к файлу можно воспользоваться той же самой командой ls -l
| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
| drwxr-x—x | 2 | root | root | 5456 | Dec 31 | 23:59 | Santa.Claus |
| -rw-r—r— | 1 | andy | group | 23456 | Nov 12 | 13:29 | readme.txt |
Права доступа листинга отображаются в первой (1) колонке (за исключением первого символа, обозначающего тип файла) Наличие прав доступа обозначается соответствующим символом, а отсутствие — символом «-».
Права доступа могут быть изменены только владельцем файла или суперпользователем(superuser) — администратором системы. Для этого используется команда chmod.
chmod — изменение атрибутов защиты файла
синтаксис
chmode mode file…
описание
Команда изменяет атрибуты защиты файла file. Атрибуты защиты, обозначимые mode, могут быть заданны в числовом или символическом виде.
В символическом виде атрибуты задаются в формате
В операционной системе Unix существуют три базовых класса доступа к файлу, в каждом из которых установленны соответствующие права доступа:
| User accsess(u) | для владельца — пользователя файла |
| Group accsess(g) | для членов группы, являющихся владельцем файла |
| Other accsess(o) | для остальных пользователей (кроме супер- пользователя) |
Первое поле, обозначеное как who, может содержать один или несколько следующих символов:
a установка атрибутов защиты для всех категорий пользователей;
g установка атрибутов защиты для групп пользователей;
o установка для прочих процессов (эффективные идентификаторы которых не совпадают с пользовательскими);
u установка прав доступа только для владельца.
- отмена прав доступа;
= определение перечисленных прав и отмена всех прочих для данного who.
Поле, обозначенное как permission, может быть комбинацией следущих символов:
x делает файл выполнимым(разрешение выполнения);
r разрешение чтения;
w разрешение записи;
s установка пользовательского или группового идентификатора.
В числовом виде атрибуты защиты файла здаются в форме восьмеричного числа, соответствующие биты которого обозначают режимы доступа:
4000 установка ID пользователя при выполнениии (S_ISUID);
2000 установка ID группы при выполнениии (S_ISGID);
1000 зависит от реализации;
0400 право владельца на чтение (S_IRUSR);
0200 право владельца на запись (S_IWUSR);
0100 право владельца на выполнение (S_IXUSR);
0040 право группы на чтение (S_IRGRP);
0020 право группы на запись (S_IWGRP);
0010 право группы на выполнение (S_IXGRP);
0004 право прочих процессов на чтение (S_IROTH);
0002 право прочих процессов на запись (S_IWOTH);
0001 право прочих процессов на выполнение (S_IXOTH);
0000 нет доступа.
Для каталогов поле х означает не выполнение, а поиск. Для каталога с правом х— пользователи будут иметь доступ к любому известному им файлу в каталоге, но не смогут выполнять команду ls или читать каталог, что бы узнать, какие файлы в нем находятся. Каталог с правом r— можно читать, но нельзя работать с его файлами. Право на запись w для каталога дает пользователю возможность записывать и удалять файлы из каталога! При этом права доступа для самого файла!
| $ chmod a+w text | Предоставить право на запись для всех пользователей для файла text |
| $ chmod go=r text | Установить право на чтение для всех пользователей,за исключением владельца |
| $ chmod g+x-w run | Добавить для группы право на выполнение файла run и снять право на запись |
| $ chmod u+w,og+r text1 text2 | Добавить право записи для владельца, право на чтение для группы и остальных пользователей, отключить право на записьвсех пользователей, исключая владельца |
| $ chmod 754 * | Устанавить для владельца права на чтение, запись и выполнение, для группы на чтение и выполнение и для остальных пользователей только на чтение, всех файлов в текущем каталоге |
| число определяется следущим образом: нужно предствить права доступа в двоичном виде(0 — отсутствие соответствуещего права, 1 — его наличие) и каждую триаду, соответсчвующую класу доступа, в свою очередь преобразовать в десятичное число.7=111(rwx) 5=101(r-x) 4=100(r—) | |
| $ chmod rw-rw-rw junk | Так нельзя! надо использовать: $ chmod a=rw junk или$ chmod 666 junk |
| $ chmod a-w . | закрыть текущий каталог по записи для всех пользователей, включая себя |
| $ chmod o-r+x private | сделать для всех пользователей, кроме себя текущий каталог private невидимым. |
Статья взята с http://linuxland.itam.nsc.ru/book/unix09/chmod/index.html