-
' = файл, 'd
' = каталог, 'l
' = ссылка, 's
' = сокет и т. п.), далее три группы прав владельца, группы и остальных по три символа 'r/-
', 'w/-
' 'x/-
' для чтения, записи и исполнения соответственно ('-
' означает отсутствие прав). Флаг sticky
обозначается символом 't
' вместо 'x
' в группе «остальные». флаги suid/sgid – символом 's
' вместо 'x
' в группе «владелец» или «группа» соответственно. Если за этой строчкой идёт символ '+
', это значит, что на этот файл установлены acl (см. ниже).
Менять права на файл можно командой chmod
. Сменить владельца файла – командой chown
, группу – chgrp
. Для того, чтобы сменить права на файл, команде chmod нужно указать новые в восьмеричном виде или в символьном. Последний вариант позволяет добавить или удалить отдельные права для владельца, группы или остальных, например:
В символьном виде для chmod
указывается один или более символов 'u/g/o/a
' (владелец, группа, остальные, все три группы вместе), затем символ '+
' или '-
' для установки или сброса прав, и затем один или более символов 'r/w/x
' – какие права затрагиваются. Например, chmod go+rx myfile
добавит права на чтение и исполнение для группы и остальных файлу myfile
.
Описанная выше система покрывает множество потребностей, но не все. В попытках улучшить её были созданы различные расширения, реализованные в файловых системах Linux. Одно из них – расширенные атрибуты файлов. Они включены по умолчанию, и их можно смотреть и изменять командами lsattr
и chattr
. Самые важные для нас:
Таблица 4: некоторые расширенные атрибуты
Если расширенный атрибут запрещает какое-то действие (например удаление), то это распространяется даже на суперпользователя (в отличие от обычных атрибутов). Но суперпользователь может легко снять или установить любой из них.
Другое расширение, как правило требующее активации на файловой системе, – ACL (Access Control List), списки контроля доступа. Посмотреть и изменить их можно командами getfacl
и setfacl
. Они работают аналогично традиционным правам доступа, рассмотренным выше, однако права на чтение/запись/исполнение теперь можно устанавливать отдельным пользователям и/или группам, а также ограничивать эти права маской. Маска – набор «максимальных» прав из правил acl (традиционные к ним не относятся), которые будут работать. Например, разрешим пользователю vasya
чтение файла и запись в файл test.txt
:
Здесь ключ '-m
' указывает модифицировать правила acl. Указав ключ '--set
', можно заменить правила, т. е. удалить старые и заменить новыми (в setfacl
можно указать несколько правил одновременно). Ключом '-x
' правила можно удалять. Строка 'u:vasya;rw
' указывает на то, что правило относится к пользователю (u = user, g = group, o = others), его и<я vasya,
и устанавливаются права на чтение и запись. Теперь установим маску – разрешим пользователю vasya
(и другим, имеющим доступ через правила acl) «не более чем» чтение:
Как видим, правило осталось, но права на запись ограничены маской.
Ещё одно