Гид по технологиям

ACL в Linux: настройка, проверка и практическое руководство

• 6 min read • Системное администрирование • Обновлено 23 Nov 2025
ACL в Linux: настройка и проверка прав
ACL в Linux: настройка и проверка прав

TL;DR

ACL (Access Control Lists) в Linux позволяют задавать точечные права доступа к файлам и каталогам для отдельных пользователей и групп без создания множества системных групп. Используйте getfacl для просмотра, setfacl для изменения. ACL удобны, когда стандартных rwx-прав недостаточно. В статье — пошаговая настройка пользователей и групп, примеры команд, проверка, чек-листы и рекомендации по альтернативам и ограничениям.

Важно: только владелец файла и root могут менять ACL. Проверяйте совместимость с файловой системой и утилитами резервного копирования.


Фотография: концепция ACL и прав доступа в Linux

ACL (Access Control Lists) — дополнительный механизм управления доступом к файлам и каталогам в Linux. Он расширяет стандартную модель прав (владелец/группа/остальные) и позволяет назначать права отдельным пользователям или группам, не создавая для этого новых системных групп.

В этом материале показаны реальные шаги по созданию пользователей и групп, настройке ACL на файле и проверке результата на примере виртуальной машины с Kali Linux. Примеры команд и выводы терминала сохранены для воспроизводимости.

Создание пользователей и групп — подготовка окружения

Для эксперимента нужно несколько пользователей. Выполните эти команды от root или через sudo.

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

ПользовательГруппа

| john1
john2
john3 | johns | | jane1
jane2 | janes |

Добавим пользователей в систему командой adduser (интерактивно) или useradd (автоматически). Пример интерактивного создания:

adduser john1
adduser john2
adduser john3
adduser jane1
adduser jane2

Скриншот: создание пользователя с помощью adduser и вывод команды id

После создания пользователя команда id показывает uid, gid и список групп:

id john1

По умолчанию для каждого пользователя создаётся собственная группа с тем же именем. Чтобы объединить несколько пользователей в общую группу, создадим группу johns с gid 5000 и janes с gid 6000:

groupadd -g 5000 johns
groupadd -g 6000 janes

Далее назначим основной группой johns для пользователей john2 и john3 (и при желании john1):

usermod -g johns john2
usermod -g johns john3
usermod -g johns john1

Проверяем:

id john1
id john2
id john3
id jane1
id jane2

После этих действий john1, john2, john3 — члены группы johns; jane1 и jane2 — в группе janes.

Примечание: если вы хотите добавить пользователя в дополнительную группу, используйте usermod -aG <группа> <пользователь>.

Почему стандартных прав бывает недостаточно

Предположим, john1 создаёт файл в своём домашнем каталоге и хочет дать права записи только john2 и jane1, но оставить право чтения для john3 и jane2. Стандартная модель rwx для владельца/группы/остальных не позволяет комбинировать таких произвольных наборов пользователей без создания множества групп и управления ими.

Стандартные права в выводе ls выглядят так:

-rw-r--r-- 1 john1 johns 1234 Nov 12 12:00 secretfile

Разбор строки прав:

СимволыЗначение
-тип файла (файл)
rw-права владельца (чтение/запись)
r–права группы
r–права остальных

Если нужно задать права для конкретных пользователей без создания новых групп, удобнее использовать ACL.

Просмотр текущего ACL

Каждый файл имеет базовую ACL. Для просмотра используйте getfacl:

getfacl secretfile

Скриншот: вывод getfacl, показывающий user, group и other

В выводе строки без # отражают реальные записи ACL:

  • user:: — права владельца файла
  • group:: — права группы файла
  • other:: — права остальных
  • дополнительные записи user:john2:rwx или group:dev:rx — пользовательские/групповые ACL

Как задать ACL для файла

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

setfacl -m entity:name:permissions 

Где:

entitynamepermissions
кто — user (u) или group (g) или other (o) или mask (m)имя пользователя или группыr — чтение, w — запись, x — выполнение

Примеры: дать john2 и jane1 права чтения и записи на secretfile:

setfacl -m u:john2:rw secretfile
setfacl -m u:jane1:rw secretfile

Или одной командой через запятую:

setfacl -m u:john2:rw,u:jane1:rw secretfile

Проверяем:

getfacl secretfile

Скриншот: getfacl показывает дополнительные записи user:john2 и user:jane1 с rw

В выводе вы увидите новые строки вида user:john2:rw-.

Проверка работы ACL в реальной сессии

Авторизуемся под john2 и убеждаемся, что он может читать и дописывать файл:

sudo -u john2 cat secretfile
sudo -u john2 bash -c 'echo "новая строка от john2" >> secretfile'

john3, оставаясь членом той же группы, но не имея явной записи в ACL, не сможет записывать в файл, если группа или другие не имеют права записи:

sudo -u john3 bash -c 'echo "попытка записи" >> secretfile'
# ожидаем ошибку Permission denied

Таким образом ACL позволяют гибко управлять доступом.

ACL для директорий и наследование

ACL можно назначать и на каталоги. Чтобы новые файлы и подкаталоги наследовали ACL, используйте рекурсивную установку и флаги default:

setfacl -R -m d:u:john2:rwX /path/to/dir
setfacl -m u:john2:rwX /path/to/dir

Пояснения:

  • опция -R — рекурсивно
  • префикс d: перед записью указывает на default ACL, которые применяются к вновь создаваемым элементам
  • X — специальный флаг, дающий execute только для каталогов или если уже установлен x

Маска ACL и её влияние

Маска (mask) в ACL ограничивает права для всех не-владельцев: она действует как верхняя граница для записей group и user (для дополнительных пользователей и групп). Убедитесь, что mask корректна, иначе записи могут быть обрезаны.

Просмотр маски в getfacl:

getfacl secretfile
# увидите строку mask: r-- или rw-

Изменение маски:

setfacl -m m::rw secretfile

Когда ACL не подходят (ограничения и подводные камни)

  • Неподдерживаемая файловая система: некоторые файловые системы не поддерживают POSIX ACL (например, старые варианты FAT). Убедитесь, что FS смонтирована с поддержкой acl (параметр монтирования acl для ext4).
  • Неправильно настроенная маска может «отрезать» права, создавая путаницу.
  • Инструменты резервного копирования или синхронизации могут не сохранять ACL по умолчанию (проверьте rsync с опцией -A или tar –acls).
  • SELinux/AppArmor добавляют дополнительный уровень контроля и могут вести себя иначе — ACL не заменяют мандатные контроля безопасности.
  • ACL усложняет аудит: большое количество отдельных записей труднее отслеживать, чем модель с несколькими группами.

Альтернативные подходы и когда их выбирать

  • Создание групп: хорошо для стабильных наборов пользователей с длительными ролями. Простота и совместимость с большинством инструментов.
  • POSIX-права + SGID на каталог: для совместного доступа к новым файлам. SGID гарантирует наследование группы.
  • Уровень мандатной безопасности (SELinux): для сценариев, где нужны более строгие политики.
  • ACL — когда нужно гибко дать доступ конкретным пользователям без создания групп.

Методика принятия решения (мини-алгоритм)

flowchart TD
  A[Нужно дать доступ к файлу/каталогу] --> B{Доступ нужен группе или отдельным пользователям?}
  B -- группе--> C[Создать группу или назначить существующую; использовать стандартные права]
  B -- отдельным пользователям--> D[Использовать ACL]
  D --> E{Будут ли наследоваться права в каталоге?}
  E -- да --> F[Использовать default ACL на каталоге]
  E -- нет --> G[Назначить ACL на каждый файл, или использовать скрипт автоматизации]
  C --> H[Проверить резервное копирование и инструменты]
  F --> H
  G --> H

Чек-лист администратора перед применением ACL

  • Проверить, что файловая система поддерживает ACL (mount | grep acl или /etc/fstab).
  • Убедиться, что резервные копии сохраняют ACL (rsync -A, tar –acls).
  • Проверить маску ACL после установки (getfacl).
  • Протестировать доступ под реальными аккаунтами.
  • Документировать назначения ACL для аудита.

Шпаргалка по основным командам

  • Просмотр ACL:
getfacl <файл|каталог>
  • Добавить/изменить запись:
setfacl -m u:username:rw file
setfacl -m g:groupname:r file
  • Удалить запись:
setfacl -x u:username file
  • Установить default ACL для каталога:
setfacl -m d:u:username:rwX /path/to/dir
  • Рекурсивно установить ACL:
setfacl -R -m u:username:rw /path/to/dir
  • Сбросить все ACL к умолчанию (очистить все дополнительные записи):
setfacl -b file

Критерии приёмки

  • Для целевого файла/каталога getfacl показывает ожидаемые записи user/group/other.
  • Пользователи, указаные в ACL, могут выполнить разрешённые операции; остальные — нет.
  • Маска ACL не уменьшает ожидаемые права.
  • Резервное копирование и восстановление сохраняют ACL.

Короткий словарь терминов

  • ACL — список индивидуальных или групповых записей прав для файла/каталога.
  • mask — ограничение прав для non-owner записей.
  • default ACL — набор прав, применяемый к вновь создаваемым файлам в каталоге.

Рекомендации безопасности и эксплуатационные заметки

  • Документируйте все нестандартные настройки доступа и храните их в системе управления конфигурацией.
  • Ограничивайте использование root; операции с ACL проводите через процессы change control.
  • Настройте аудит доступа (auditd) при необходимости отслеживания изменений.

Заключение

ACL расширяют возможности управления доступом в Linux и полезны, когда нужно дать права отдельным пользователям без создания новых системных групп. Они особенно удобны для временных или гибких наборов разрешений, для каталогов с совместной работой и для сценариев, где стандартная модель rwx не дает нужной степени точности. Тем не менее учитывайте совместимость с файловой системой, резервными копиями и системами мандатной безопасности.


Краткое резюме

  • ACL дают гибкость для назначения прав отдельным пользователям.
  • Основные команды: getfacl и setfacl.
  • Следите за маской и совместимостью инструментов резервного копирования.
Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Несколько аккаунтов Skype: Multi Skype Launcher
Программное обеспечение

Несколько аккаунтов Skype: Multi Skype Launcher

Журнал для работы: повысить продуктивность
Productivity

Журнал для работы: повысить продуктивность

Персональные звуки уведомлений на Android
Android.

Персональные звуки уведомлений на Android

Скачивание шоу Hulu для офлайн‑просмотра
Стриминг

Скачивание шоу Hulu для офлайн‑просмотра

Microsoft Start: персонализированная новостная лента
Новости

Microsoft Start: персонализированная новостная лента

Как изменить имя в Epic Games быстро
Гайды

Как изменить имя в Epic Games быстро