Access Control Lists (Русский)

Списки управления доступом (Access Control Lists, ACL) — расширенный, более гибкий механизм прав доступа для файловых систем, разработанный как дополнение к стандартным правам доступа UNIX. ACL позволяет задавать права доступа к объектам на диске для пользователей и групп.

Состояние перевода: На этой странице представлен перевод статьи Access Control Lists. Дата последней синхронизации: 10 июля 2021. Вы можете помочь синхронизировать перевод, если в английской версии произошли изменения.

Установка

Пакет acl уже установлен, так как является зависимостью systemd.

Включение ACL

Для использования ACL файловая система должна быть смонтирована с опцией acl. Файл fstab позволяет настроить постоянное монтирование с данной опцией.

В некоторых файловых системах параметр монтирования acl включён по умолчанию. К таким файловым системам относятся Btrfs и Ext2/3/4. Следующая команда позволяет проверить раздел с файловой системой ext* на наличие параметра acl:

# tune2fs -l /dev/sd''XY'' | grep "Default mount options:"
Default mount options:    user_xattr acl

Убедитесь, что используемая по умолчанию опция не была переопределена. Об этом будет свидетельствовать параметр noacl в соответствующей строке файла /proc/mounts.

Задать параметры монтирования файловой системы по умолчанию можно командой tune2fs -o параметр раздел, например:

# tune2fs -o acl /dev/sdXY

Это очень удобно при работе с внешними дисками, поскольку такой диск будет монтироваться с опцией acl и на других Linux-машинах. В противном случае придётся редактировать файл /etc/fstab на каждой системе.

Примечание:
  • acl используется как опция монтирования по умолчанию при создании файловой системы ext2/3/4. Это настраивается в файле /etc/mke2fs.conf.
  • Параметры монтирования по умолчанию в /proc/mounts не указаны.

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

Изменение ACL

Для изменения прав ACL используется команда setfacl.

Совет:
  • Флаг --test позволяет вывести изменения прав доступа к файлу/каталогу без их реального применения (т.н. dry-run).
  • Флаг -R/--recursive позволяет применять действия рекурсивно.

Задать права пользователя (в качестве пользователь можно использовать имя пользователя или его ID):

# setfacl -m "u:пользователь:права" <file/dir>

Задать права группы (в качестве можно использовать имя группы или её ID):

# setfacl -m "g:группа:права" <file/dir>

Задать права для остальных:

# setfacl -m "other:права" <file/dir>

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

# setfacl -dm "запись_ACL" <dir>

Удалить определённую запись ACL:

# setfacl -x "запись_ACL" <file/dir>

Удалить записи по умолчанию:

# setfacl -k <file/dir>

Удалить все записи ACL:

# setfacl -b <file/dir>

Просмотр ACL

Вывести права доступа ACL:

# getfacl <file/dir>

Примеры

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

# setfacl -m "u:johny:rwx" abc

Проверка:

# getfacl abc
# file: abc
# owner: someone
# group: someone
user::rw-
user:johny:rwx
group::r--
mask::rwx
other::r--

Измененить права для пользователя johnny:

# setfacl -m "u:johny:r-x" abc

Проверка:

Удалить все записи ACL:

# setfacl -b abc

Проверка:

Вывод команды ls

Символ (плюс) после прав доступа Unix в выводе команды указывает на использование ACL:

Права на выполнение личных файлов

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

Будем считать что веб-сервер работает от пользователя и получает доступ к домашнему каталогу пользователя geoffrey.

Санчала предоставим права на выполнение для пользователя :

# setfacl -m "u:http:--x" /home/geoffrey

Поскольку пользователь теперь имеет доступ к файлам в то безопаснее будет удалить доступ для остальных пользователей:

# chmod o-rx /home/geoffrey

Проверим изменения с помощью :

Как видно из вывода, other больше не имеют никаких прав, но пользователь всё ещё может обращаться к файлам.

Если необходимо будет выдать пользователю права доступа на запись в определённые файлы/каталоги, выполните:

# setfacl -dm "u:http:rwx" /home/geoffrey/project1/cache

Смотрите также

gollark: Yes, Macron has been known to induce incredibly strong apiolectromagnetic fields.
gollark: Your bee has been dispatched to you and is loaded with 77kg of antimatter.
gollark: Okay, reallocating bee from the general use pool.
gollark: We mostly use bee emulation anyway.
gollark: We have free bees. We just aren't using them for this.
This article is issued from Archlinux. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.