Формат записи ACL

Рассмотрим возможные форматы записи ACL.

[d[efault]:][u[ser]:][пользователь][:[+|^]права]
[d[efault]:] g[roup]:[группа][:[+|^]права]
[d[efault]:] m[ask][:[+|^]права]
[d[efault]:] o[ther][:[+|^]права]

Почти все возможные варианты записи мы уже рассматривали. Осталось разобраться с default и специальными символами: + и ^.

Default — устанавливает ACL по умолчанию. Имеет смысл только для директории. Если создавать файлы в директории, у которой установлен ACL по умолчанию, то значения ACL копируются во вновь создаваемые файлы.

Если при написании ACL права доступа начинаются с символа +, то эти права добавляются к уже существующим. Если в начале описания прав стоит символ ^, то их значение отнимаются от существующих прав доступа.

У программы setfacl есть еще две интересные опции: –M и –X. Первая изменяет или добавляет ACL, вторая удаляет ACL. В отличии от –m и –x, список ACL передается не в командной строке, а в отдельном файле. Формат файла соответствует выводу программы getfacl.

$ getfacl newtest > aclfile
$ cat aclfile
# file: newtest
# owner: artur
# group: users
user::rwx
user:user1:r-x  #effective:r--
group::r--
group:bin:rwx   #effective:rw-
mask::rw-
other::r--
$

Теперь установим ACL, записанные в файле aclfile, на файл test.

$ setfacl -M aclfile test
$ getfacl test
# file: test
# owner: artur
# group: users
user::rwx
user:user1:r-x                  #effective:r--
group::r--
group:bin:rwx                   #effective:rw-
mask::rw-
other::r--
$

К сожалению, многие программы не показывают наличие у файла установленных ACL (приятным исключением является программа ls. Если на файл установлены ACL, она ставит символ + после стандартных прав доступа.). Новая технология, еще не все ее приняли к рассмотрению. Более того, стандартные программы работы с архивами в Linux не понимают ACL и не сохраняют их значение в архиве. То есть, у Вас могут возникнуть проблемы с резервным копированием файлов системы. Так что прежде чем использовать ACL хорошо подумайте, а так ли они Вам нужны?