Инструменты пользователя

Инструменты сайта


gnulinux:acl_fs

extACL: Управление списками контроля доступа

extACL - Extended Access Control List в Unix-like OS - мощный инструмент управления доступом к файлам и каталогам, который представляет расширение стандартных прав UNIX. Одно из основных преимуществ «расширенных привилегий»: большая гибкость при создании «правил доступа» и отсутствие ограничений модели «пользователь-группа-гость» - пользователей может быть любое количество и они могут состоять в разных группах. Также стоить отметить, что механизм POSIX ACL позволяет настроить наследование для всех «вложенных» объектов - для всех новых файлов и каталоги, созданных в рамках «дерева», будут установлены права в соответствии с инструкциями.

Включить

По умолчанию «расширенные ACL» отключены!
Для настройки POSIX ACL потребуется включить его поддержку для конкретной файловой системы, отредактировав назначение в /etc/fstab. Следует добавить acl после defaults1). Например:

...
/dev/sdb1        /var/fs4       ext4    defaults,acl    1 2
...

После завершения редактирования файла требуется «перемонтировать» файловую систему (# mount -o), либо - перезагрузить хост, если изменения произведены на корневой файловой системе.
Также может потребоваться установить ПО для управления расширенными списками контроля доступа. Для Linux CentOS пакет называется acl:

# yum install acl

Инструменты управления

Для управления ACL используются следующие команды:

  • getfacl - получить настройки текущего списка доступа;
  • setfacl - установить новые настройки списка доступа;
  • umask - изменение режима создания пользовательских файлов.

Примеры использования

getfacl

Получить сведения о правах доступа для одного объекта:

# getfacl /tmp/acl_test/file

Получить сведения о правах доступа для всех объектов в каталоге2) и перенаправить вывод в файл acl0:

# getfacl -R /tmp/acl_test > acl0

setfacl

Ниже представлен список «ключей» команды setfacl и краткое описание:

Ключ Описание Пример
-b Удалить все записи о «расширенных правах» # setfacl -b /tmp/acl_test/file
-k Удалить все сведения о «правилах наследования» (для каталога) # setfacl -k /tmp/acl_test
-n Не пересчитывать «effective» маску # setfacl -n -m -u:root:rw- /tmp/acl_test/file
-d Не выполнять действия по изменению «правил наследования» # setfacl -d -m -u:root:rwX /tmp/acl_test
-R Обрабатывать вложенные объекты # setfacl -R -m -g:staff:r-x /tmp/acl_test
-x Удалить запись из списка правил # setfacl -x -m -g:admin /tmp/acl_test
–restore Установить значения из файла # setfacl –restore=acl0

Редактирование

Для редактирования POSIX ACL рекомендую следующий вариант:

  1. Получить сведения о правах для объекта(-ов) и перенаправить вывод в файл с помощью команды getfacl.
  2. Отредактировать файл так, как требуется.
  3. Восстановить права для объекта(-ов) с помощью команды setfacl.

Немного автоматизации

Создание каталога и применение расширенных POSIX ACL:

  • mkdir_acl.sh:
#!/bin/sh
#
# mkdir_acl.sh
# e-mail: web@stty.ru
# (c) greendruid, 26.08.2010
if test -e $1
then
    /bin/echo "[error | object exist] - can't create $1!"
    exit 1;
fi
/bin/mkdir $1
/bin/chown websrv:customers $1
/usr/bin/getfacl /usr/local/bin/tpl | /usr/bin/setfacl -R --set-file=- $1
exit 0;
  • права для файла tpl (копируются права, а не содержимое файла 8-) )
# file: tpl
# owner: websrv
# group: customers
user::rwx
user:ab:rwx
user:websrv:rwx
group::---
group:wheel:rwx
group:customers:---
mask::rwx
other::---
default:user::rwx
default:user:ab:rwx
default:user:websrv:rwx
default:group::---
default:group:wheel:rwx
default:group:customers:rwx
default:mask::rwx
default:other::---

Полезные ссылки

1) или прочих атрибутов
2) -R
3) на примере SuSE
4) «Deployment Guide» на сайте centos.org
gnulinux/acl_fs.txt · Последние изменения: 2017/05/24 12:39 — Alex