Изучите команду Linux setfacl

Утилита setfacl устанавливает списки контроля доступа (ACL) для файлов и каталогов. В командной строке за последовательностью команд следует последовательность файлов (за которой, в свою очередь, может следовать другая последовательность команд, …).

  • Опции -m и -x ожидают ACL в командной строке. Несколько записей ACL разделяются запятыми (`, ‘). Опции -M и -X читают ACL из файла или из стандартного ввода. Формат записи ACL описан в разделе ACL ENTRIES.
  • Опции —set и —set-file устанавливают ACL файла или каталога. Предыдущий ACL заменен. Записи ACL для этой операции должны включать разрешения.
  • Опции -m (—modify) и -M (—modify-file) изменяют ACL файла или каталога. Записи ACL для этой операции должны включать разрешения.
  • Опции -x (—remove) и -X (—remove-file) удаляют записи ACL. В качестве параметров принимаются только записи ACL без поля perms, если не определено POSIXLY_CORRECT.

При чтении из файлов с использованием параметров -M и -X setfacl принимает вывод, полученный getfacl. В каждой строке может быть не более одной записи ACL. После знака фунта (`# ‘) все до конца строки рассматривается как комментарий.

Если setfacl используется в файловой системе, которая не поддерживает ACL, setfacl работает с битами разрешения режима файла. Если ACL не помещается полностью в битах разрешений, setfacl изменяет биты разрешений режима файла, чтобы максимально точно отражать ACL, записывает сообщение об ошибке в стандартную ошибку и возвращает со статусом выхода больше 0.

конспект

setfacl [-bkndRLPvh] [{-m | -x} acl_spec] [{-M | -X} acl_file] файл …

setfacl —восстановление = файл

права доступа

Владельцу файла и процессам, способным к CAP_FOWNER, предоставляется право изменять ACL для файла. Это аналогично разрешениям, необходимым для доступа к режиму файлов. (В современных системах Linux root — единственный пользователь с возможностью CAP_FOWNER.)

Параметры

-б, — удалить все

  • Удалите все расширенные записи ACL. Базовые записи ACL владельца, группы и других сохраняются.

-k, —remove-default

  • Удалите ACL по умолчанию. Если ACL по умолчанию не существует, предупреждения не выдаются.

-n, —no-mask

  • Не пересчитывайте эффективную маску прав. Поведение setfacl по умолчанию заключается в пересчете записи маски ACL, если запись маски не была задана явно. Запись маски устанавливается как объединение всех разрешений группы-владельца и всех именованных записей пользователя и группы. (Это именно те записи, на которые влияет запись маски).

—маскировать

  • Пересчитайте эффективную маску прав, даже если запись маски ACL была задана явно. (Смотрите опцию -n.)

-д, — по умолчанию

  • Все операции применяются к списку ACL по умолчанию. Обычные записи ACL во входном наборе повышаются до записей ACL по умолчанию. Записи ACL по умолчанию во входном наборе отбрасываются. (Предупреждение выдается, если это произойдет).

—восстановление = файл

  • Восстановите резервную копию разрешений, созданную командой `getfacl -R ‘или аналогичной. Все разрешения полного поддерева каталога восстанавливаются с использованием этого механизма. Если входные данные содержат комментарии владельца или комментарии группы, а setfacl запускается пользователем root, восстанавливается также владелец и группа-владелец всех файлов. Этот параметр нельзя смешивать с другими параметрами, кроме `—test ‘.

—контрольная работа

  • Тестовый режим. Вместо того, чтобы изменять списки ACL каких-либо файлов, в списке отображаются полученные ACL.

-R, — рекурсивный

  • Рекурсивно применять операции ко всем файлам и каталогам. Эта опция не может быть смешана с `—restore ‘.

-L, — логический

  • Логическая прогулка, следуйте по символическим ссылкам. Поведение по умолчанию состоит в том, чтобы следовать символическим ссылочным аргументам и пропускать символические ссылки, встречающиеся в подкаталогах. Эта опция не может быть смешана с `—restore ‘.

-P, — физический

  • Физическая прогулка, пропустите все символические ссылки. Это также пропускает символические аргументы ссылки. Эта опция не может быть смешана с `—restore ‘.

—версия

  • Распечатайте версию setfacl и выйдите.

—Помогите

  • Распечатать справку, объясняющую параметры командной строки.

Конец параметров командной строки. Все остальные параметры интерпретируются как имена файлов, даже если они начинаются с тире.

Если параметр имени файла представляет собой одну черту, setfacl читает список файлов из стандартного ввода.

ACL Entries

Утилита setfacl распознает следующие форматы записи ACL:

  • [d [efault]:] [u [ser]:] uid [: perms]
  • Разрешения именованного пользователя. Разрешения владельца файла, если uid пуст.
  • [d [efault]:] g [roup]: gid [: perms]
  • Разрешения именованной группы. Разрешения группы-владельца, если gid пуст.
  • [d [efault]:] m [ask] [:] [: perms]
  • Эффективная маска прав
  • [d [efault]:] o [ther] [:] [: perms]
  • Разрешения других

Пробел между символами-разделителями и символами без разделителей игнорируется.

Правильные записи ACL, включая разрешения, используются в операциях изменения и установки. (Опции -m, -M, —set и —set-файл). Записи без поля perms используются для удаления записей (опции -x и -X).

Для uid и gid вы можете указать либо имя, либо число.

Поле perms представляет собой комбинацию символов, которые обозначают разрешения: чтение (r), запись (w), выполнение (x), выполнение только в том случае, если файл является каталогом или уже имеет разрешение на выполнение для некоторого пользователя (X). В качестве альтернативы, поле perms может быть восьмеричной цифрой (0-7).

Автоматически созданные записи

Первоначально файлы и каталоги содержат только три базовые записи ACL для владельца, группы и других. Есть несколько правил, которые должны быть выполнены, чтобы ACL был действительным:

  • Три базовые записи не могут быть удалены. Должна быть ровно одна запись каждого из этих базовых типов записей.
  • Всякий раз, когда ACL содержит именованные записи пользователя или объекты именованной группы, он также должен содержать маску действующих прав.
  • Всякий раз, когда ACL содержит какие-либо записи ACL по умолчанию, также должны существовать три базовые записи ACL по умолчанию (владелец по умолчанию, группа по умолчанию и другие по умолчанию).
  • Всякий раз, когда ACL по умолчанию содержит именованные записи пользователя или объекты именованной группы, он также должен содержать маску действующих прав по умолчанию.

Чтобы помочь пользователю обеспечить выполнение этих правил, setfacl создает записи из существующих записей при следующих условиях:

  • Если ACL содержит записи именованного пользователя или именованной группы и запись маски не существует, создается запись маски, содержащая те же разрешения, что и запись группы. Если не указана опция -n, разрешения записи маски дополнительно корректируются, чтобы включить объединение всех разрешений, затронутых записью маски. (См. Описание опции -n).
  • Если создается запись ACL по умолчанию, и ACL по умолчанию не содержит записи о владельце, группе-владельце или другой записи, в список ACL по умолчанию добавляется копия записи о владельце ACL, группе-владельце или другой записи.
  • Если ACL по умолчанию содержит именованные записи пользователя или записи именованной группы и запись маски не существует, добавляется запись маски, содержащая те же разрешения, что и для записи группы ACL по умолчанию. Если не указана опция -n, разрешения записи маски дополнительно корректируются, чтобы включить объединение всех разрешений, затронутых записью маски. (См. Описание -noption).

Примеры

  • Предоставление дополнительного доступа для чтения пользователю
  • setfacl -m u: lisa: r file
  • Отмена доступа на запись для всех групп и всех именованных пользователей (с использованием маски действующих прав)
  • setfacl -m m :: rx file
  • Удаление именованной записи группы из ACL файла
  • setfacl -x g: штатный файл
  • Копирование ACL одного файла в другой
  • getfacl file1 | setfacl —set-file = — file2
  • Копирование ACL доступа в ACL по умолчанию
  • getfacl -a dir | setfacl -d -M- dir

Соответствие стандарту Posix 1003.1e Draft Standard 17

Если переменная среды POSIXLY_CORRECT определена, поведение setfacl по умолчанию изменяется следующим образом: все нестандартные параметры отключены. Префикс « default: » отключен. Опции -x и -X также принимают поля разрешений (и игнорируют их).  

Ссылка на основную публикацию