Каковы различные способы установки прав доступа к файлам и т. Д. На gnu / linux

В Unix, долгое время назад, я узнал о chmod : традиционном способе установки разрешений в Unix (и чтобы программы могли получать привилегии, используя setuid, setgid).

Недавно я обнаружил несколько новых команд на GNU / Linux:

  • setfacl расширяет традиционные ugo:rwx биты и бит t chmod .
  • setcap дает больше контроля зернистости, чем ug:s бит chmod .
  • chattr Позволяет использовать некоторые другие элементы управления (бит микса) файла.

Есть ли другие?

  • chmod : изменить бит режима файла

    Использование (восьмеричный режим):

     chmod <octal-mode> files... 

    Использование (символический режим):

     chmod <references><operator><modes> files.. 

    references – это комбинация букв ugoa , в которых указывается, какой пользовательский доступ к files будет изменен:

    • u пользователь, которому это принадлежит
    • g других пользователей в группе file
    • o другие пользователи, не входящие в группу файлов
    • всех пользователей

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

    operator является одним из символов +-= :

    • + добавить указанные бит режима файла в существующие биты режима file каждого file
    • - удаляет указанные бит режима файла в существующие биты режима file каждого file
    • = добавляет указанные биты и удаляет неуказанные биты, кроме битов setuid и setgid заданных для каталогов, если явно не указано.

    mode состоит из комбинации букв rwxXst , которые определяют, какой бит разрешения должен быть изменен:

    • r читать
    • написать
    • x выполнить (или искать каталоги)
    • X выполнить / выполнить поиск, только если файл является каталогом или уже установлен бит выполнения для некоторого пользователя
    • s setuid или setgid (в зависимости от указанных references )
    • t ограниченный флаг удаления или липкий бит

    В качестве альтернативы, mode может состоять из одной из букв ugo , и в этом случае режим соответствует разрешениям, предоставленным в настоящее время владельцу ( u ), члену группы file ( g ) или разрешениям пользователей ни в одном из предшествующие категории ( o ).


  • chattr : изменить атрибуты файла

    Применение:

     chattr <operator><attribute> files... 

    operator является одним из символов +-= :

    • + добавляет выбранные атрибуты к существующим attributes files
    • - удаляет выбранные attributes
    • = перезаписывает текущий набор атрибутов, которые имеют файлы с указанными attributes .

    attribute является комбинация букв acdeijstuADST , которые соответствуют атрибутам:

    • добавление только
    • c сжатый
    • d без сброса
    • формат экстента
    • i непреложный
    • j журналирование данных
    • безопасное удаление
    • нет слияния хвостов
    • u undeletable
    • Нет обновлений atime
    • D синхронных обновлений каталога
    • Синхронные обновления S
    • T вершина иерархии каталогов

  • setfattr : изменить расширенные атрибуты файла

    Использование (атрибут set):

     setfattr -n <name> -v <value> files... 

    Использование (удалить):

     setfattr -x <name> files... 

    name – это имя расширенного атрибута для установки или удаления

    value – новое значение расширенного атрибута


  • setfacl : изменить списки управления доступом к файлам

    Применение:

     setfacl <option> [default:][<target>:][<param>][:<perms>] files... 

    option должна включать одно из следующего:

    • --set установить ACL файла или каталога, заменив предыдущий ACL
    • -m | --modify изменить ACL файла или каталога
    • -x | --remove удалить записи ACL файла или каталога

    target – одна из букв ugmo (или более длинная форма, показанная ниже):

    • u , разрешение users именованного пользователя, идентифицированное param , по умолчанию для владельца файла uid если его не указано
    • g , group разрешение именованной группы, идентифицированное param , по умолчанию – владение группой uid если ее опущено
    • m , mask эффективными правами маски
    • o , other разрешения других лиц

    perms – комбинация букв rwxX , которые соответствуют разрешениям:

    • r читать
    • написать
    • x выполнить
    • X выполняется только в том случае, если файл является каталогом или уже имеет разрешение на выполнение для некоторого пользователя

    В качестве альтернативы, perms может быть восьмеричной цифрой ( 0 ), указывающей набор разрешений.


  • setcap : возможность изменения файлов

    Применение:

     setcap <capability-clause> file 

    Предложение capability-clause состоит из списка имен функций, разделенных запятыми , а затем списка пар операторов-флагов.

    Доступные операторы: = , + и - . Доступными флажками являются e , i и p которые соответствуют наборам Effective , Inheritable and Permitted .

    Оператор = Если флаги не указаны вместе с оператором = все наборы функций будут сброшены. Операторы + и - повышают или уменьшают один или несколько указанных наборов возможностей соответственно.


  • chcon : изменить контекст безопасности SELinux

    Применение:

     chcon [-u <user>] [-r <role>] [-t <type>] files... 

    пользовательпользователь SELinux, такой как user_u , system_u или root .

    Роль – это роль SELinux (всегда object_r для файлов)

    тип – тип объекта SELinux


  • chsmack : изменить расширенные атрибуты chsmack

    Применение:

     chsmack -a <value> file 

    value – это метка SMACK64 которая будет установлена ​​для расширенного атрибута файла SMACK64


  • setrichacl : изменить список контроля доступа.

    richacl s – это функция, которая добавит более продвинутые списки ACL.

    В настоящее время идет работа, поэтому я не могу рассказать вам много о них. Я их не использовал.

    См. Также этот вопрос. Существуют ли более передовые ACL-файлы для файловой системы за пределами традиционных «rwx» и POSIX ACL? и справочная страница