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

click fraud protection

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

  • Варианты -м, а также -Икс ожидайте ACL в командной строке. Несколько записей ACL разделяются запятыми (`, '). Варианты -М, а также -ИКС читать ACL из файла или со стандартного ввода. Формат записи ACL описан в разделе ЗАПИСИ ACL.
  • В --установленный а также --set-файл опции устанавливают ACL файла или каталога. Заменяется предыдущий ACL. Записи ACL для этой операции должны включать разрешения.
  • В -m (--modify) а также -M (--modify-файл) параметры изменяют ACL файл или каталог. Записи ACL для этой операции должны включать разрешения.
  • В -x (- удалить) а также -X (--remove-файл) опции удаляют записи ACL. Только записи ACL без химическая завивка поля принимаются в качестве параметров, если не определено POSIXLY_CORRECT.

При чтении из файлов с помощью 

-М, а также -ИКС параметры, setfacl принимает вывод getfacl производит. В каждой строке может быть не более одной записи ACL. После знака фунта («#») все до конца строки рассматривается как комментарий.

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

Использование Setfacl

Сначала попробуйте настроить базовый список для папки в вашем домашний каталог. Поскольку вы пробуете это впервые, сделайте новый и поиграйте с ним. Таким образом, вы не рискуете заблокировать доступ к важным документам.

mkdir ~ / acl-test. 

Затем используйте setfacl, чтобы предоставить другому пользователю вашей системы доступ к папке. Setfacl использует флаг для изменения списков контроля доступа к файлу. Обычно это означает добавление пользователя или группы.

setfacl -m u: имя пользователя: rwx ~ / acl-test /

В ты до того, как первое двоеточие сообщит команде, что вы говорите об имени пользователя. В rwx после второго гранта рead шобряд, и еИксразрешения ecute.

То же самое работает для групп, указав грамм вместо того ты перед первым двоеточием.

setfacl -m g: имя группы: rwx ~ / acl-test /

Он работает так же, как и в предыдущем примере, за исключением того, что предоставляет разрешения всей группе.

В -Икс флаг работает противоположно . Это отменит доступ для указанного пользователя или группы.

setfacl -x u: имя пользователя: w ~ / acl-test /

Команда отменяет доступ на запись в каталог для пользователя.

Вы также можете напрямую изменить разрешения для всех текущих пользователей. Это включает владельца файла и всех дополнительных пользователей, которым были предоставлены разрешения. Это что-то вроде ярлыка, использующего существующую команду, но без имени пользователя.

setfacl -m u:: rx ~ / acl-test /

Это предоставляет всем существующим пользователям разрешения на чтение и выполнение, но удаляет доступ на запись.

То же самое работает с -Икс флаг и удаление разрешений.

setfacl -x u:: w ~ / acl-test /

По сути, это то же самое, что и в предыдущем примере, только в перевернутом виде.

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

коснитесь ~ / acl-test / file {1,2} .txt. 

Теперь измените права доступа к первому файлу.

setfacl -m u: имя пользователя: rx ~ / acl-text / file1.txt. 

Теперь вы можете передать результаты getfacl, команды для получения текущей информации ACL, в setfacl.

getfacl ~ / acl-test / file1.txt | setfacl --set-file = - ~ / acl-text / file2.txt. 

Вторая заливка будет иметь те же права, что и первая.

Наконец, вы можете удалить все расширенные записи ACL, созданные командой. Это оставит файл с правами пользователя и группы, которые у него были изначально. Для этого используйте флаг -b.

setfacl -b ~ / acl-test /

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

Техническая разбивка Setfacl

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

setfacl --restore = файл.

Разрешения

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

Параметры

-b, --remove-все

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

-k, --remove-по умолчанию

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

-n, --no-mask

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

- маска

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

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

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

--restore = файл

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

--тестовое задание

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

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

  • Рекурсивно применять операции ко всем файлам и каталогам. Этот параметр нельзя использовать вместе с параметром --restore.

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

  • Логическая прогулка, переходите по символическим ссылкам. Поведение по умолчанию - следовать аргументам символической ссылки и пропускать символические ссылки, встречающиеся в подкаталогах. Этот параметр нельзя использовать вместе с параметром --restore.

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

  • Физическая прогулка, пропустить все символические ссылки. Это также пропускает аргументы символической ссылки. Этот параметр нельзя использовать вместе с параметром --restore.

--версия

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

--помощь

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

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

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

Записи ACL

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

[d [efault]:] [u [ser]:]uid [:химическая завивка]

  • Разрешения указанного пользователя. Разрешения владельца файла, если uid пустой.

[d [efault]:] g [roup]:гид [:химическая завивка]

  • Разрешения названной группы. Разрешения группы-владельца, если гид пустой.

[d [efault]:] m [спросить] [:] [:химическая завивка]

  • Маска действующих прав

[d [ошибка]:] другое] [:] [:химическая завивка]

  • Разрешения других

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

Правильные записи ACL, включая разрешения, используются в операциях изменения и установки. (параметры , -M, --установленный а также --set-файл). Записи без химическая завивка поля используются для удаление записей (варианты -Икс а также -ИКС).

Для uid а также гид вы можете указать имя или номер.

В химическая завивка поле представляет собой комбинацию символов, обозначающих разрешения: читать (р), записывать (ш), выполнять (Икс), выполнять только в том случае, если файл является каталогом или уже имеет разрешение на выполнение для какого-либо пользователя(ИКС). В качестве альтернативы химическая завивка поле может быть восьмеричной цифрой (0-7).

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

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

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

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

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

Примеры

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

Соответствие Posix 1003.1e Draft Standard 17

Если переменная среды POSIXLY_CORRECT определена, поведение setfacl по умолчанию изменяется следующим образом: Все нестандартные параметры отключены. Префикс default: отключен. В -Икс а также -ИКС параметры также принимают поля разрешений (и игнорируют их).