- Access Control Lists (Русский)
- Contents
- Установка
- Включение ACL
- Использование
- Изменение ACL
- Просмотр ACL
- Примеры
- Вывод команды ls
- Права на выполнение личных файлов
- Системное администрирование Linux
- Настройка прав доступа ACL
- Новый ресурс
- Просмотр прав доступа
- Управление доступом
- Права по умолчанию
- Рекурсивная установка прав
- Удаление прав
- Очистка правил
- Эффективная маска
- Системное администрирование Linux
- Настройка прав доступа ACL
- Новый ресурс
- Просмотр прав доступа
- Управление доступом
- Права по умолчанию
- Рекурсивная установка прав
- Удаление прав
- Очистка правил
- Эффективная маска
- Acl права доступа linux
- 9.4.2. Директория с ACL ¶
- 9.4.3. Директория с ACL по умолчанию ¶
- 9.4.3.1. Действия ACL по умолчанию ¶
- 9.4.3.2. Применение ACL по умолчанию ¶
- 9.4.4. Алгоритм проверки ACL ¶
- 9.5. Поддержка ACL приложениями ¶
- 9.6. Дополнительная информация ¶
Access Control Lists (Русский)
Списки управления доступом (Access Control Lists, ACL) — расширенный, более гибкий механизм прав доступа для файловых систем, разработанный как дополнение к стандартным правам доступа UNIX. ACL позволяет задавать права доступа к объектам на диске для пользователей и групп.
Contents
Установка
Пакет acl уже установлен, так как является зависимостью systemd.
Включение ACL
Для использования ACL файловая система должна быть смонтирована с опцией acl . Файл fstab позволяет настроить постоянное монтирование с данной опцией.
В некоторых файловых системах параметр монтирования acl включён по умолчанию. К таким файловым системам относятся Btrfs и Ext2/3/4. Следующая команда позволяет проверить раздел с файловой системой ext* на наличие параметра acl :
Убедитесь, что используемая по умолчанию опция не была переопределена. Об этом будет свидетельствовать параметр noacl в соответствующей строке файла /proc/mounts .
Задать параметры монтирования файловой системы по умолчанию можно командой tune2fs -o параметр раздел , например:
Это очень удобно при работе с внешними дисками, поскольку такой диск будет монтироваться с опцией acl и на других Linux-машинах. В противном случае придётся редактировать файл /etc/fstab на каждой системе.
Использование
Изменение ACL
Для изменения прав ACL используется команда setfacl.
Задать права пользователя (в качестве пользователь можно использовать имя пользователя или его ID):
Задать права группы (в качестве группа можно использовать имя группы или её ID):
Задать права для остальных:
Настроить наследование новыми файлами и каталогами записей ACL родительского каталога (не относится к файлам/каталогам, которые копируются в каталог):
Удалить определённую запись ACL:
Удалить записи по умолчанию:
Удалить все записи ACL:
The factual accuracy of this article or section is disputed.
Просмотр ACL
Вывести права доступа ACL:
Примеры
Установить все права доступа к файлу abc для пользователя johnny :
Измененить права для пользователя johnny :
Удалить все записи ACL:
Вывод команды ls
Символ + (плюс) после прав доступа Unix в выводе команды ls -l указывает на использование ACL:
Права на выполнение личных файлов
Ниже описано, как процесс вроде веб-сервера может получить доступ к файлам в домашнем каталоге пользователя без ущерба для безопасности.
Будем считать что веб-сервер работает от пользователя http и получает доступ к домашнему каталогу /home/geoffrey пользователя geoffrey .
Санчала предоставим права на выполнение для пользователя http :
Поскольку пользователь http теперь имеет доступ к файлам в /home/geoffrey то безопаснее будет удалить доступ для остальных пользователей:
Проверим изменения с помощью getfacl :
Как видно из вывода, other больше не имеют никаких прав, но пользователь http всё ещё может обращаться к файлам.
Если необходимо будет выдать пользователю http права доступа на запись в определённые файлы/каталоги, выполните:
Источник
Системное администрирование Linux
2017-11-13 17:28:20 12924 0
Настройка прав доступа ACL
Для создания прав доступа к файлам Samba ресурса сервера используйте ACL (Access Control List — список контроля доступа). При помощи ACL вы можете установить доступ к файлам определенным группам, либо конечным пользователям.
Новый ресурс
Для примера допустим у вас в системе есть две группы admins и managers, а также два пользователя alexei и petr.
Создадим директорию Managers для доступа на чтение и запись пользователям, входящим в группу managers.
mkdir -m 700 Managers
setfacl -m d:g:managers:rwx,g:managers:rwx Managers
Первая команда создаст директорию с правами чтения выполнения и изменения содержимого для пользователя root.
Второй командой мы установим те же права для пользователей группы managers.
Файлы и директории, создаваемые пользователями этой группы, либо root-ом, будут наследовать атрибуты доступа.
Просмотр прав доступа
Увидеть права доступа из консоли можно выполнив команду:
Программа выведет следующий текст:
Управление доступом
Для управлением доступом используется команда setfacl.
Для модификации или добавления правила используется параметр -m.
Если пользователь пропущен, то права назначаются владельцу файла.
Если группа пропущена, то права назначаются группе-владельцу файла.
Добавить право на чтение/запись файла secretinfo пользователям alexei и petr:
setfacl -m user:alexei:rw,u:petr:rw secretinfo
Права по умолчанию
Для директорий можно указать ACL права, которые будут автоматически добавляться для файлов и директорий, создаваемых в ней.
Для этого используется идентификатор default или параметр -d. На саму директорию права указанные в default не распространяются.
Для файлов и директорий, создаваемых в директории managerdata, добавить право чтение/записи для пользователя petr.
setfacl -m default:user:iivanov:rw managerdata
Рекурсивная установка прав
Для установки прав для всех файлов и директорий внутри директории используется параметр -R.
Так как для того, чтобы читать файл необходимы права на чтение r, а для того чтобы читать директорию необходимы права на чтение и выполнение rx, то можно при указании прав вместо х указывать X.
Флаг X устанавливает права на выполнение только для директорий и файлов, которые уже имеют право на выполнение.
Флаг X вычисляется на момент запуска setfacl, поэтому в default правилах она интерпретируется как x.
Разрешить пользователю alexei читать все файлы и просматривать директории в folder.
setfacl -R -m d:u:alexei:rwx,u:apetrov:rwX folder
setfacl -R -m d:u:alexei:rw,u:apetrov:rwX folder
Обе команды имеют недостаток, который проявляется при создании новых файлов и директорий.
Разница в том, что в первом случае пользователь alexei получит право на выполнение всех новых файлов создаваемых в folder и вложенных директориях,
а во втором случае пользователь не сможет просматривать новые директории.
Удаление прав
Удалить права доступа к файлу secretfile для пользователя petr.
setfacl -x u:petr secretfile
Удалить права доступа ко всем файлам и директориям внутри folder для пользователя alexei.
setfacl -R -x u:alexei folder
Очистка правил
Для удаления всех ACL правил используется опция -b. Ее также можно использовать совместно с -m, для того, чтобы заместить права.
Удалить все ACL правила и разрешить пользователю petr читать secretfile.
setfacl -b -m u:petr:r secretfile
Эффективная маска
Эффективная маска используется для ограничения определенного действия для всех пользователей и групп описанных в ACL. То есть можно например запретить всем писать в файл установив эффективную маску r-x.
setfacl -m m::rx filename
Иногда эффективная маска вычисляется автоматически (например при действии chmod, а также при создании файла, так как применяется права umask). Для отмены маски ее следует установить в значение rwx.
Порядок определения доступа к файлу
Может ли пользователь выполнить действие над файлом или директорией определяются следующим образом.
- Используются права владельца, если пользователь им является.
- Используются права, указанные конкретно для этого пользователя.
- Если действие разрешено хотя бы для одной из группы в которую входит пользователь.
- Если пользователь не входит ни в одну группу описанную в ACL, то используются права для other.
Источник
Системное администрирование Linux
2017-11-13 17:28:20 12923 0
Настройка прав доступа ACL
Для создания прав доступа к файлам Samba ресурса сервера используйте ACL (Access Control List — список контроля доступа). При помощи ACL вы можете установить доступ к файлам определенным группам, либо конечным пользователям.
Новый ресурс
Для примера допустим у вас в системе есть две группы admins и managers, а также два пользователя alexei и petr.
Создадим директорию Managers для доступа на чтение и запись пользователям, входящим в группу managers.
mkdir -m 700 Managers
setfacl -m d:g:managers:rwx,g:managers:rwx Managers
Первая команда создаст директорию с правами чтения выполнения и изменения содержимого для пользователя root.
Второй командой мы установим те же права для пользователей группы managers.
Файлы и директории, создаваемые пользователями этой группы, либо root-ом, будут наследовать атрибуты доступа.
Просмотр прав доступа
Увидеть права доступа из консоли можно выполнив команду:
Программа выведет следующий текст:
Управление доступом
Для управлением доступом используется команда setfacl.
Для модификации или добавления правила используется параметр -m.
Если пользователь пропущен, то права назначаются владельцу файла.
Если группа пропущена, то права назначаются группе-владельцу файла.
Добавить право на чтение/запись файла secretinfo пользователям alexei и petr:
setfacl -m user:alexei:rw,u:petr:rw secretinfo
Права по умолчанию
Для директорий можно указать ACL права, которые будут автоматически добавляться для файлов и директорий, создаваемых в ней.
Для этого используется идентификатор default или параметр -d. На саму директорию права указанные в default не распространяются.
Для файлов и директорий, создаваемых в директории managerdata, добавить право чтение/записи для пользователя petr.
setfacl -m default:user:iivanov:rw managerdata
Рекурсивная установка прав
Для установки прав для всех файлов и директорий внутри директории используется параметр -R.
Так как для того, чтобы читать файл необходимы права на чтение r, а для того чтобы читать директорию необходимы права на чтение и выполнение rx, то можно при указании прав вместо х указывать X.
Флаг X устанавливает права на выполнение только для директорий и файлов, которые уже имеют право на выполнение.
Флаг X вычисляется на момент запуска setfacl, поэтому в default правилах она интерпретируется как x.
Разрешить пользователю alexei читать все файлы и просматривать директории в folder.
setfacl -R -m d:u:alexei:rwx,u:apetrov:rwX folder
setfacl -R -m d:u:alexei:rw,u:apetrov:rwX folder
Обе команды имеют недостаток, который проявляется при создании новых файлов и директорий.
Разница в том, что в первом случае пользователь alexei получит право на выполнение всех новых файлов создаваемых в folder и вложенных директориях,
а во втором случае пользователь не сможет просматривать новые директории.
Удаление прав
Удалить права доступа к файлу secretfile для пользователя petr.
setfacl -x u:petr secretfile
Удалить права доступа ко всем файлам и директориям внутри folder для пользователя alexei.
setfacl -R -x u:alexei folder
Очистка правил
Для удаления всех ACL правил используется опция -b. Ее также можно использовать совместно с -m, для того, чтобы заместить права.
Удалить все ACL правила и разрешить пользователю petr читать secretfile.
setfacl -b -m u:petr:r secretfile
Эффективная маска
Эффективная маска используется для ограничения определенного действия для всех пользователей и групп описанных в ACL. То есть можно например запретить всем писать в файл установив эффективную маску r-x.
setfacl -m m::rx filename
Иногда эффективная маска вычисляется автоматически (например при действии chmod, а также при создании файла, так как применяется права umask). Для отмены маски ее следует установить в значение rwx.
Порядок определения доступа к файлу
Может ли пользователь выполнить действие над файлом или директорией определяются следующим образом.
- Используются права владельца, если пользователь им является.
- Используются права, указанные конкретно для этого пользователя.
- Если действие разрешено хотя бы для одной из группы в которую входит пользователь.
- Если пользователь не входит ни в одну группу описанную в ACL, то используются права для other.
Источник
Acl права доступа linux
Рисунок 9.1, «Минимальный ACL: Сравнение записей ACL с битами доступа» и Рисунок 9.2, «Расширенный ACL: Сравнение записей ACL с битами доступа» соответствуют минимальному и расширенному ACL. На рисунках изображены три блока: левый показывает тип спецификации записей ACL, центральный отображает пример ACL, и правый блок соответствует битам доступа традиционной концепции привилегий (отображаемым, например, командой ls -l ). В обоих случаях привилегии класса владелец отображаются на запись ACL « владелец » . Привилегии класса другие отображаются на соответствующую запись ACL. Однако отображение прав доступа класса группа отличается для каждого из случаев.
Рисунок 9.1. Минимальный ACL: Сравнение записей ACL с битами доступа ¶
В случае минимального ACL — без маски — права доступа группы отражаются на запись ACL группа-владелец, как показывает Рисунок 9.1, «Минимальный ACL: Сравнение записей ACL с битами доступа». В случае расширенного ACL— с маской — права доступа группы отображаются на маску, Рисунок 9.2, «Расширенный ACL: Сравнение записей ACL с битами доступа».
Рисунок 9.2. Расширенный ACL: Сравнение записей ACL с битами доступа ¶
Это отображение используется для упрощения взаимодействия с приложениями, избавляя от небходимости поддержки ACL приложением. Привилегии доступа, назначенные посредством битов доступа, задают верхний предел для всех « тонких настроек » , сделанных при помощи ACL. Изменение битов доступа отражается на ACL и наоборот.
9.4.2. Директория с ACL ¶
Вы можете получить доступ к ACL с помощью команд getfacl и setfacl . Использование этих команд показано в следующем примере.
Перед созданием директории используйте команду umask , чтобы задать биты доступа маскируемые при создании файлового объекта. Команда umask 027 устанавливает привилегии по умолчанию следующим образом: владелец получает полный доступ ( 0 ), группе запрещен доступ на запись ( 2 ), доступ остальным пользователям закрыт ( 7 ). В действительности umask маскирует соответствующие биты доступа или сбрасывает их. Подробности можно узнать на man странице umask .
mkdir mydir создает директорию mydir с привилегиями, установленными командой umask . С помощью ls -dl mydir можно определить правильность установки привилегий. Для данного примера вывод будет следующим:
Используя getfacl mydir , проверьте исходное состояние ACL. Будет отображена следующая информация:
Первые три строки вывода отображают имя, владельца и группу-владельца директории. Следующие три строки содержат три записи ACL: « владелец » , « группа-владелец » и « другие » . Фактически мы имеет дело с минимальным ACL и команда getfacl не дает дополнительной информации по сравнению с командой ls .
Измените ACL, разрешив доступ на чтение, запись и выполнение пользователю geeko и группе mascots командой:
Опция -m указывает setfacl изменить существующий ACL. Следующий за ней аргумент определяет записи ACL, которые будут изменены (можно указать несколько записей, разделяя из запятыми). Последняя часть определяет имя директории, к которой будут применены эти изменения. Используйте команду getfacl , чтобы узнать полученные ACL.
В дополнение к записям, созданным для пользователя geeko и группы mascots , была добавлена запись с маской. Эта запись была создана автоматически, таким образом, что все заданные права доступа будут применены. setfacl автоматически адаптирует существующие записи с масками к изменяемым битам. Это поведение можно изменить используя опцию -n . Маска определяет максимальные эффективные привилегии для класса « группа » , включая именованного пользователя, именованную группу и группу-владельца. Биты доступа класса « группа » , отображаемые командой ls , -dl mydir теперь соответствуют записи маска .
Первый столбец вывода теперь содержит дополнительно знак + , указывая на существование расширенных ACL для этого элемента.
Согласно выводу команды ls , маска включает в себя доступ на запись. Традиционно эти биты означали бы, что группа-владелец ( project3 ) также имеет право на запись в директорию mydir . Однако эффективные права доступа соответствуют сочетанию прав заданных для группы-владельца и маски — r-x в нашем примере (Таблица 9.2, «Маскировка привилегий доступа»). Поэтому в отношении эффективных привилегий группы-владельца, даже после добавления дополнительных записей ACL, ничего не изменилось.
Измените значение маски с помощью команд setfacl или chmod . Например используйте chmod g-w mydir . ls -dl mydir покажет:
getfacl mydir даст следующий вывод:
После сброса бита доступа на запись для группы командой chmod , вывода команды ls достаточно, чтобы увидеть, что биты маски изменились: доступ на запись снова есть только у владельца mydir . Вывод getfacl подтверждает это. Он включает в себя комментарий для всех записей, в которых биты доступа не соответствуют реальным привилегиям из-за применения маски. Оригинальные права могут быть восстановлены в любое время командой chmod g+w mydir .
9.4.3. Директория с ACL по умолчанию ¶
Директории могут иметь ACL по умолчанию, которые являются специальной разновидностью ACL, определяющей права доступа, наследуемые объектами в этой директории при их создании. ACL по умолчанию влияет на поддиректории и файлы.
9.4.3.1. Действия ACL по умолчанию ¶
Существует два пути передачи ACL по умолчанию файлам и поддиректориям:
Поддиректория наследует ACL родительской директории как свои ACL по умолчанию и обычные ACL.
Файл наследует ACL по умолчанию как свои ACL.
Все системные вызовы, создающие объекты файловой системы, используют параметр режим , который определяет режим доступа к созданному объекту. Если родительская директория не имеет ACL по умолчанию, заданные umask биты доступа вычитаются из битов доступа параметра режим , а результат устанавливается созданному объекту. Если же ACL по умолчанию задан, биты доступа нового объекта соответствуют совпадающим частям параметра режим и разрешениям ACL по умолчанию. В этом случае umask не учитывается.
9.4.3.2. Применение ACL по умолчанию ¶
Следующие три примера показывают основные операции для директорий и ACL по умолчанию:
Добавить ACL по умолчанию существующей директории mydir :
Опция -d команды setfacl указывает setfacl выполнить изменения (опция -m ) для ACL по умолчанию.
Взглянем поближе на результат выполнения этой команды:
getfacl возвращает как ACL, так и ACL по умолчанию. ACL по умолчанию соответствуют строкам, начинающимся с default . Несмотря на то, что Вы передали команде setfacl только запись ACL по умолчанию для группы mascots , setfacl автоматически скопировала все остальные записи из ACL, чтобы создать валидный ACL по умолчанию. ACL по умолчанию не оказывают моментального влияния на доступ к объекту. Они вступают в игру при создании новых объектов. Эти новые объекты наследуют привилегии только от ACL по умолчанию своей родительской директории.
В следующем примере используйте команду mkdir , чтобы создать в mydir поддиректорию, которая унаследует ACL по умолчанию.
Как и ожидалось, вновь созданная директория mysubdir получила права доступа из ACL по умолчанию родительской директории. ACL директории mysubdir является точным отражением ACL по умолчанию директории mydir . Поддиректория передаст эти права вложенным в нее объектам и т.д.
Используйте touch для создания файла в директории mydir , например, touch mydir/myfile . ls -l mydir/myfile покажет:
Вывод getfacl mydir/myfile :
Если ACL по умолчанию и umask не накладывают никаких ограничений, touch при создании новых файлов использует режим со значением 0666 , создавая файлы с доступом на чтение и запись для всех (Раздел 9.4.3.1, «Действия ACL по умолчанию»). Также это означает, что все права доступа, которые не содержит значение режим будут удалены из соответствующих записей ACL. Несмотря на то, что записи для группы не были удалены из ACL, значение маски было модифицировано для маскировки прав не заданных значением режим .
Эта модель необходима для правильного взаимодействия приложений (например, компиляторов) с ACL. Вы можете создавать файлы с ограниченным доступом и затем помечать их как исполняемые. Механизм mask гарантирует, что только корректные пользователи и группы смогут запускать их как им заблагорассудится.
9.4.4. Алгоритм проверки ACL ¶
Алгоритм проверки применяется перед тем, как любому процессу или приложению будет предоставлен доступ к защищенному ACL объекту файловой системы. Основное правило проверки заключается в том, что записи ACL проверяются в следующем порядке: владелец, именованный пользователь, группа-владелец или именованная группа, другие пользователи. Доступ предоставляется в соответствии с записью, которая более подходит процессу. Привилегии не накапливаются.
Все усложняется, если процесс принадлежит более чем к одной группе и потенциально соответствует нескольким групповым записям. В этом случае из множества выбирается произвольная запись с требуемыми привилегиями. Неважно, какая из записей приведет к результату « доступ разрешен » . Аналогично, если ни одна из групповых записей не содержит требуемых привилегий, случайно выбранная запись приведет к конечному результату « доступ запрещен » .
9.5. Поддержка ACL приложениями ¶
ACL могут быть использованы для реализации очень сложных моделей привилегий, которые соответствуют требованиям современных приложений. Традиционная система привилегий и ACL могут эффективно сочетаться. Основные файловые команды ( cp , mv , ls , и т.д.) поддерживают ACL, равно как Samba и Konqueror.
К сожалению множество редакторов и файловых менеджеров до сих пор не поддерживает ACL. Например, копирование файлов с помощью Emacs приводит к потере ACL. При изменении файлов в редакторе ACL иногда сохраняются, а иногда нет, в зависимости от того способа, которым редактор создает резервные копии. Если редактор записывает изменения в оригинальный файл, ACL сохраняются. Если измененное содержание сохраняется в новый файл, который впоследствии получает имя оригинального файла, и сам редактор не поддерживает ACL, они могут быть потеряны. За исключением архиватора star в настоящее время не существует программ резервного копирования, сохраняющих ACL.
9.6. Дополнительная информация ¶
За подробной информацией об ACL обращайтесь в справку по командам getfacl(1) , acl(5) и setfacl(1) .
Источник