Файлы и директории в Unix-системах имеют три типа прав доступа: чтение(‘r’), запись(‘w’) и выполнение(‘x’). Каждый тип может быть разрешен или запрещен для трех категорий пользователей: владельца (‘owner’), пользователей из группы владельца (‘group’) и прочих пользователей.
Чтобы увидеть права доступа на файл воспользуемся командой:
1 | ls -lg filename |
Вывод будет похож на этот:
1 | -rwxr-x--x 1 owner group 2300 Jul 14 14:38 filename |
Левая часть строки показывает режимы доступа. Первый символ (в нашем случае ‘-‘) означает что перед нами обычный файл. Для директории он выглядит как ‘d’, ссылки это ‘l’, сокеты – ‘s’. Символы со второго по четвертый (‘rwx’) – маска прав владельца файл. Символы с 5го по 7й — права для группы, как видно, пользователи группы не могу записывать в файл. Дальше идут права прочих пользователей. В нашем случае им запрещено читать и писать в файл.
Таблица прав доступа для наглядности:
OCT | BIN | Маска | Права на файл | Права на директорию |
---|---|---|---|---|
0 | 000 | --- | отсутствие прав | отсутствие прав |
1 | 001 | --x | права на выполнение | доступ к файлам и их атрибутам |
2 | 010 | -w- | права на запись | отсутствие прав |
3 | 011 | -wx | права на запись и выполнение | все, кроме доступа к именам файлов |
4 | 100 | r-- | права на чтение | только чтение имен файлов |
5 | 101 | r-x | права на чтение и выполнение | чтение имен файлов и доступ файлам и их атрибутам |
6 | 110 | rw- | права на чтение и запись | только чтение имен файлов |
7 | 111 | rwx | полные права | все права |
Для управления правами существует команда chmod, общая форма которой выглядит так:
1 | chmod X@Y file |
Где:
X комбинация символов: u — владелец, g — группа, o — прочие, a — все;
@ это знак + для добавления прав, — для отключения, или = заменить права на указанные;
Y это комбинация символов r, w, x.
Вот несколько примеров:
Выдать владельцу права на выполнение и чтение но не запись:
1 | chmod u=rx file |
Отключить права на rwx для группы и прочих пользователей:
1 | chmod go-rwx file |
Выдать права на запись пользователям группы:
1 | chmod g+w file |
Выдать всем права на выполнение двух файлов:
1 | chmod a+x file1, file2 |
Выдать группе чтение и выполнение, прочим пользователям – выполнение:
1 | chmod g+rx,o+x file |
Выдача прав работает также с директориями. Те пользователи, кто имеет права ‘r’ на директорию могут просматривать список ее файлов (команда ls). Право ‘w’ делает возможным создавать и удалять файлы. ‘x’ делает возможным доступ к файлу по известному имени.
Помимо текстовых масок можно использовать и числовые. Для этого используются цифры из колонки OCT таблицы. Первая цифра – это права для владельца, вторая для группы, третья – для прочих пользователей.
chmod 744 file — установит права для файла file — (rwxr—r—);
chmod -R 775 directory — установит права на каталог directory и на все объекты, что внутри этого каталога, включая содержимое подкаталогов (rwxrwxr-x)
chmod 700 * — установит права только для владельца на все файлы и каталоги в текущем каталоге, включая подкаталоги и их содержимое (rwx——).
C полным списком параметром можно ознакомиться выполнив man chmod или прочитать здесь https://ru.wikipedia.org/wiki/Chmod.