Настройка и использование ACL в Linux

Как использовать ACL в Linux?

По умолчанию работа с правами доступа в Linux довольно примитивна. Можно использовать только три категории для управления правами доступа: отдельно права для владельца файла, группы владельца и всех остальных пользователей. Этого вполне достаточно при работе с обычным домашним компьютером, где нет большого количества учетных записей пользователей и они не обмениваются между собой файлами. Но если нужно настроить систему большой организации с огромным количеством пользователей и потребностью обмена файлами по Samba и NFS понадобиться более сложная конфигурация.

Настраиваем доступ с помощью - Access Control List

Linux и другие Unix подобные системы поддерживают работу с ACL списками, которые позволяют назначать права доступа вне зависимости от прав указанных для владельца и группы. Здесь можно настроить разрешения для других пользователей не в форме одного пункта другие пользователи, а для каждого пользователя или группы отдельно. Например вы можете дать пользователям A B и С право на запись в определенный файл, не включая их непосредственно в свою группу.

Списки ACL поддерживаются различными файловыми системами Linux, в том числе ext2, ext3, ext4, xfs, Btrfs и т д.

Включение ACL

Сначала нужно установить инструменты для работы с ACL. В большинстве дистрибутивов пакет так и называется - acl. Например в Ubuntu для установки выполните команду:

sudo apt-get install acl

В этой статье мы рассмотрим как работать с ACL в Ubuntu но в других дистрибутивах все будет выглядеть аналогично.
После установки инструментов, необходимо включить поддержку ACL для дисковых разделов. Сначала проверим не включен ли еще ACL на нашем диске:

mount
rootfs on / type rootfs (rw)
/dev/sda2 on / type ext4 (rw,noatime,acl)
devtmpfs on /dev type devtmpfs (rw,nosuid,relatime,size=10240k,nr_inodes=482245,mode=755)

Если поддержка ACL включена, среди опций монтирования будет указан флаг acl. Если же нет, нужно открыть файл /etc/fstab и добавить опцию acl к списку опций нужного диска.

Затем нужно перемонтировать этот раздел или просто полностью перезагрузить компьютер. Если ACL был включен для корневого раздела команда перемонтирования будет выглядеть вот так:

sudo mount / -o remount

Теперь ACL включен в вашей системе. Рассмотрим несколько примеров работы с ним.

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

Списки контроля доступа в Linux управляются двумя утилитами setfacl, и getfacl. Перавая используется непосредственно для настройки прав, а вторая показывает уже настроенные права. А теперь немного практики.

Создадим каталог foo:

mkdir /foo
ls / -lh
drwxr-xr-x 2 root root 4,0K окт 13 17:05 foo

Теперь дадим доступ к этой папке двум пользователям: test и test1. Первому полные права, а другому только на чтение. Установим права для test:

sudo setfacl -m u:test:rwx /foo

Теперь пользователь test сможет создавать подкаталоги и файлы в этом каталоге.

Затем установим права для второго пользователя:

sudo setfacl -m u:test2:rx /foo

Теперь давайте рассмотрим опции утилиты setfacl:

  • -m означает модификацию ACL списка
  • -u - пользователь
  • test - имя пользователя
  • :rwx - права доступа которые нужно установить

Теперь рассмотрим как посмотреть ACL права доступа для файла или папки:

ls -lh /foo

drwxrwxr-x+   2 root root 4,0K окт 13 17:44 foo

Как видите возле стандартных прав доступа Linux стоит знак +, это означает что для этого файла настроены права ACL. Для их просмотра нужно выполнить команду:

sudo getfacl /foo
getfacl: Removing leading '/' from absolute path names
# file: foo
# owner: root
# group: root
user::rwx
user:test:rwx
user:test1:r-x
group::r-x
mask::rwx
other::r-x

Удалить ACL для пользователя можно командой:

sudo setfacl -x u:test /foo

А если нужно стереть полностью ACL список для директории выполните:

sudo setfacl -b /foo

Команды копирования и перемещения файлов cp и mv работают не совсем стандартно с ACL правами. Например чтобы скопировать ACL список вместе с файлом нужно указать опцию -p. 

Заключение

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

Лицензия: CC BY-SA 4.0

Похожие материалы:
Помогла ли вам статья?
Да Нет
Статья оказалась полезной для 0 человек
avatar