Существуют два типа ACL: ACL для доступа и ACL по умолчанию. ACL для доступа — это список управления доступом для заданного файла или каталога. ACL по умолчанию может быть связан только с каталогом, и если файл в этом каталоге не имеет ACL для доступа, он использует правила, определённые в ACL по умолчанию, связанном с каталогом. ACL по умолчанию являются необязательными.
Списки ACL можно настроить:
На уровне пользователей
На уровне групп
С помощью маски эффективных прав
Для пользователй, не включённых в группу данного файла
Утилита setfacl устанавливает ACL файлов и каталогов. Передайте ей параметр -m, чтобы добавить или удалить ACL файла или каталога:
setfacl -m <rules> <files>
Формат правил (<rules>) описывается ниже. В одной команде можно указывать несколько правил, разделяя их запятыми.
- u:<uid>:<perms>
Назначает ACL для доступа заданному пользователю. Здесь можно указать имя или код пользователя. Это может быть любой пользователь, допустимый в данной системе.
- g:<gid>:<perms>
Назначает ACL для доступа заданной группе. Здесь можно указать имя или код группы. Это может быть любая группа, допустимая в данной системе.
- m:<perms>
Назначает маску эффективных прав. Маска — это объединение всех разрешений группы-владельца и всех записей пользователй и групп.
- o:<perms>
Назначает ACL для доступа пользователям, не включённым в группу файла.
Пробелы не учитываются. Вместо (<perms>) необходимо указать сочетание символов r, w и x, обозначающих чтение (read), запись (write) и execute (исполнение) соответственно.
Если с файлом или каталогом уже связан ACL, и выполняется команда setfacl, в этот ACL добавляются новые правила или изменяются существующие.
Например, чтобы назначить разрешения на чтение и запись пользователю andrius, выполните:
setfacl -m u:andrius:rw /project/somefile
Чтобы удалить все разрешения, данные пользователю, группе или всем остальным, используйте параметр -x и не указывайте никаких разрешений:
setfacl -x <rules> <files>
Например, чтобы удалить все разрешения, данные пользователю с кодом 500, выполните:
setfacl -x u:500 /project/somefile