Расширенные права доступа (ACL) к каталогам
Кроме расширенных прав доступа к файлу, которые могут быть назначены и каталогу, существуют специфические права доступа к каталогу, а именно права доступа по умолчанию. Файлы и подкаталоги, которые будут создаваться в этом каталоге, будут получать такие же расширенные права доступа по умолчанию, которые заданы в расширенных правах доступа к этому каталогу.
d[efault]:u[ser]::perms | права хозяина файла по умолчанию |
d[efault]:g[roup]::perms | права группы файла по умолчанию |
d[efault]:o[ther]:perms | права остальных пользователей по умолчанию |
d[efault]:m[ask]:perms | маска ACL по умолчанию |
d[efault]:u[ser]:uid:perms | права доступа по умолчанию для указанного пользователя; в качестве uid можно указать и UID, и имя пользователя |
d[efault]:g[roup]:gid:perms | права доступа по умолчанию для указанной группы; в качестве gid можно указать и GID, и имя группы |
Устанавливая права доступа по умолчанию для конкретных пользователей и групп, необходимо также установить права доступа по умолчанию для хозяина и группы файла, а также всех остальных, а также маску ACL (эти четыре обязательных записи указаны выше по тексту - первыми в таблице расширенных прав доступа к файлу).
Присвоение расширенных прав доступа осуществляется программой setfacl с ключом -s (set). Без этого ключа расширенные права доступа модифицируются, с ним - устанавливаются в точности такими, как указано в данной команде setfacl.
Например, чтобы установить права на чтение и запись файла project07 для пользователей lena и petr, надлежит выполнить команду
setfacl -m user:lena:rw-,user:petr:rw- project07
Ключ -m служит для добавления прав доступа, а не для их замены. Эффективные (т.е. те, которые в самом деле будут иметь место) права доступа пользователей lena и petr определяются не только их персональными правами доступа к этому файлу, но и маской, которая показывает права доступа по умолчанию. Из персональных прав и маски выбираются наиболее строгие ограничения, поэтому, если в персональных правах доступа или в маске для файла project07 отсутствует право на запись, то ни lena, ни petr не получат реальной возможности изменить файл project07.
Расширенные права доступа не показываются в выводе программы ls, но команда ls -l позволяет установить наличие расширенных прав доступа к файлу или каталогу. Если они назначены, то в первой колонке после стандартных прав доступа владельца, группы файла и остальных будет стоять знак "+" ("плюс"). Узнать, какие именно расширенные права доступа назначены, можно с помощью команды
getfacl имя_файла
Более подробную информацию о ключах setfacl и getfacl следует получить из man.
Помните, что назначение прав доступа с помощью chmod может привести к изменению записей ACL, а изменение маски ACL может повлиять на фактические права доступа к объекту для его владельца, группы и всех остальных пользователей.