ACL в Linux: расширенные права доступа для файлов и директорий

Содержание
- Что такое ACL в Linux?
- Как проверить поддержку ACL в Linux
- Как установить ACL в Linux
- Ubuntu / Debian
- CentOS / RedOS
- ALT Linux
- Как посмотреть текущие ACL права
- Какие права используются в ACL
- Как задать ACL права в Linux
- Назначить права пользователю
- Назначить права группе
- Как удалить ACL
- Полезные примеры использования ACL
- Как узнать, есть ли у файла ACL?
- Как ACL работает вместе с chmod и chown?
- Часто задаваемые вопросы
- Заключение
Когда обычных прав rwx
в Linux уже недостаточно — приходит время познакомиться с ACL (Access Control Lists). Это мощный механизм управления доступом, который позволяет более гибко задавать права для конкретных пользователей и групп. Особенно актуально, если один файл должен быть доступен разным пользователям с разными правами.
Что такое ACL в Linux?
В стандартной системе прав Linux у файла есть только три уровня доступа:
- Владелец (
user
) - Группа (
group
) - Остальные (
others
)
Но что делать, если нужно дать доступ не владельцу и не группе, а какому-то другому пользователю? Здесь на помощь приходит ACL.
ACL (Access Control List) — это список, в котором для каждого пользователя или группы указано, какие права они имеют на файл или папку.
Как проверить поддержку ACL в Linux
Большинство современных файловых систем (например, ext4) уже поддерживают ACL. Но если ты не уверен — можно проверить, примонтирована ли файловая система с поддержкой ACL:
mount | grep acl
Если ничего не найдено, попробуй посмотреть fstab
:
cat /etc/fstab
Там может быть опция acl
, например:
UUID=... / ext4 defaults,acl 0 1
Если acl
нигде не отображается, это не значит, что он не работает — в современных дистрибутивах Linux он включён по умолчанию и может даже не быть явно прописан в fstab
.
Как установить ACL в Linux
На большинстве дистрибутивов всё уже есть, но если команда getfacl
и setfacl
не найдена, можно установить нужный пакет.
Ubuntu / Debian
sudo apt update && sudo apt install -y acl
CentOS / RedOS
sudo dnf update -y && sudo dnf install -y acl
ALT Linux
sudo apt-get update -y && sudo apt-get install -y acl
Как посмотреть текущие ACL права
getfacl имя_файла
Пример:
getfacl test.txt
Вывод может выглядеть так:
# file: test/test.txt
# owner: user
# group: user
user::rw-
group::rw-
other::r--
Какие права используются в ACL
ACL использует привычные для Linux флаги прав:
r
— чтение (просмотр содержимого файла или списка файлов в каталоге)w
— запись (изменение содержимого файла или создание файлов в каталоге)x
— исполнение- для файлов — возможность запускать как программу
- для директорий — возможность заходить в папку (
cd
)
Совет: если ты даёшь доступ к директории, не забудь про
x
, иначе пользователь не сможет в неё зайти, даже если у него есть права на чтение (r
).
Как задать ACL права в Linux
Назначить права пользователю
setfacl -m u:alex:rw report.txt
Расшифровка:
-m
— модифицировать ACLu:alex:rw
— дать пользователюalex
праваrw
Назначить права группе
setfacl -m g:devs:r report.txt
Как удалить ACL
Удалить конкретные ACL:
setfacl -x u:alex report.txt
Полностью сбросить все ACL:
setfacl -b report.txt
Полезные примеры использования ACL
Дать полный доступ к папке
setfacl -m u:student:rwx /var/data
Дать доступ ко всем файлам внутри папки
setfacl -R -m u:student:rw /var/data
Сделать так, чтобы новые файлы в папке наследовали права
setfacl -d -m u:student:rwx /var/data
-d
означаетdefault
— такие права применяются ко всем новым файлам и папкам внутри указанной директории.
Посмотреть ACL права всех файлов в папке
getfacl -R /var/data
Как узнать, есть ли у файла ACL?
При выводе ls -l
, если у файла установлен ACL, ты увидишь +
после прав:
-rw-r--r--+ 1 alex admins 0 Jun 26 13:00 test.txt
Как ACL работает вместе с chmod и chown?
ACL не заменяет классические права доступа — они работают вместе.
Ты всё так же можешь использовать chmod
, chown
, umask
, но при наличии ACL система сначала проверяет его.
Подробнее о классических правах в Linux — читай в отдельной статье
Часто задаваемые вопросы
Чем ACL отличается от chmod?
chmod
работает только с владельцем, группой и остальными, а ACL позволяет задавать доступ для конкретных пользователей и групп, которых нет в этих категориях.
Где особенно полезен ACL?
- В компаниях, где один файл должен использоваться многими пользователями.
- На файловых серверах.
- В проектах с несколькими отделами (например, dev и QA), которым нужны разные уровни доступа.
Можно ли использовать ACL для директорий?
Да, и даже можно задать наследуемые права, чтобы новые файлы в папке автоматически получали нужный уровень доступа.
Заключение
ACL — незаменимый инструмент для системного администратора или продвинутого пользователя Linux. Он расширяет стандартную модель прав доступа и позволяет точно управлять, кто и что может делать с файлами и каталогами.
Если ты работаешь в многопользовательской системе или настраиваешь сервер — обязательно научись пользоваться ACL, это сэкономит кучу времени и избавит от сложных костылей с группами.