ACLs (getfacl / setfacl)
Тема дорожной карты · Linux & Unix Fundamentals
POSIX-списки контроля доступа (ACL) расширяют классическую модель прав owner/group/other, позволяя выдавать права нескольким пользователям или группам на один файл. Используйте getfacl для просмотра записей и setfacl -m u:alice:rwx file для добавления, либо setfacl -d для default-ACL, наследуемых новыми файлами. Опция монтирования acl (или noacl) включает поддержку на уровне ФС; знак + в выводе ls -l показывает, что у файла есть ACL. Учтите, что запись mask может незаметно ограничивать эффективные права, что может привести к нежелательным последствиям.
Как это работает
ACLs (getfacl / setfacl) используют модель owner / group / other × read / write / execute. Команда ls -l выводит права доступа в виде rwxr-xr--; команда chmod 644 file устанавливает конкретные биты; chown user:group file изменяет владельца и группу файла. Восьмеричная нотация и символическая нотация могут использоваться для установки прав доступа. Например, 755 эквивалентно rwxr-xr-x. Специальные биты, такие как setuid (запуск под владельцем), setgid (наследование группы) и sticky (удаление может только владелец в shared-директории типа /tmp), также влияют на поведение файлов.
Кроме классических UNIX-битов, существуют дополнительные механизмы управления правами доступа, такие как ACL (setfacl, getfacl), capabilities (setcap) и метки SELinux/AppArmor. Эти механизмы позволяют более тонкое управление доступом к файлам и директориям.
Когда применять
По умолчанию следует принцип наименьших привилегий: 644 для файлов, 755 для директорий и 600 для секретных файлов. Группы используются для общего доступа; добавление большого количества пользователей в группы wheel или sudo может привести к уязвимостям безопасности. Мировые права доступа (777) почти всегда являются ошибкой и создают уязвимости.
ACLs (getfacl / setfacl) особенно полезны для тонкого управления доступом, когда требуется более тонкая настройка прав, чем стандартные биты. Например, для CI-пайплайнов и деплоя пользователей ACLs могут быть предпочтительнее рекурсивного chmod. Команды capabilities позволяют выполнять определенные действия без полного доступа root, что может быть полезно для конкретных задач, таких как запуск сервиса на порту 80.
Типичные ошибки
Типичные ловушки при использовании ACLs (getfacl / setfacl) включают установку прав доступа 777 "чтобы заработало", что создает огромную уязвимость и реальную угрозу безопасности. Неправильное использование команды chown -R на неправильной директории может привести к тому, что sudo перестанет работать, и вы больше не сможете стать root. Непонимание того, что umask влияет на права доступа новых файлов, также может привести к нежелательным последствиям. Установка setuid-битов на бинарные файлы, которые запускают неаудированный код под root, является классической уязвимостью. Команда find / -perm -4000 -type f может использоваться для поиска файлов с setuid-битами, и эти файлы следует периодически пересматривать и аудировать.