14.2. Назначение ACL для доступа

Существуют два типа ACL: ACL для доступа и ACL по умолчанию. ACL для доступа — это список управления доступом для заданного файла или каталога. ACL по умолчанию может быть связан только с каталогом, и если файл в этом каталоге не имеет ACL для доступа, он использует правила, определённые в ACL по умолчанию, связанном с каталогом. ACL по умолчанию являются необязательными.

Списки ACL можно настроить:

  1. На уровне пользователей

  2. На уровне групп

  3. С помощью маски эффективных прав

  4. Для пользователй, не включённых в группу данного файла

Утилита 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