Linux

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

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

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

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

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

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

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

mkdir ~ / acl-test

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

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

Символ u перед первым двоеточием сообщает команде, что вы говорите о имени пользователя. RWX после второго гранта один г EAD, ш обряде и е х ecute разрешений.

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

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

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

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

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

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

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

setfacl -mu :: rx ~ / acl-test /

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

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

setfacl -xu :: w ~ / acl-test /

Это по сути то же самое, что и предыдущий пример, перевернутый.

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

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

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

setfacl -mu: имя пользователя: 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 = file

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

Параметры

-b, —remove-all

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

-k, —remove-default

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

-n, —no-mask

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

—mask

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

-d, —default

—restore = файл

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

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

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

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

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

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

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

-П, — Физический

  • Физическая прогулка, пропустите все символические ссылки . Это также пропускает символические аргументы ссылки. Этот параметр нельзя смешивать с `—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-file ). Записи без   поля 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 , разрешения записи маски дополнительно корректируются, чтобы включить объединение всех разрешений, затрагиваемых записью маски. (См.  Описание опции -n ).
Похожие посты
Linux

8 лучших окружений рабочего стола Linux

AndroidIphone и ipadLinuxWindows

Окончательное руководство по включению темного режима везде

LinuxКак сделать

Что такое Swappiness в Linux? (и как это изменить)

LinuxКак сделать

Как использовать команду ls для вывода списка файлов и каталогов в Linux