Setfacl — различия между версиями
Vaal (обсуждение | вклад) |
Vaal (обсуждение | вклад) |
||
Строка 3: | Строка 3: | ||
==Установка== | ==Установка== | ||
− | ACL | + | Установка ACL доступна из репозитория rhel-server-eus-rpms или rhel-server-rpms пакетов: |
− | + | # yum install -y acl | |
==Настройка== | ==Настройка== |
Версия 16:13, 5 июля 2017
Содержание
Введение
Access Control List предоставляет расширенный и более гибкий механизм распределения прав файловых систем. Он предназначен для расширения прав доступа к файлам UNIX
. ACL позволяет устанавливать разрешения любым пользователям или группам для различных файловых ресурсов.
Установка
Установка ACL доступна из репозитория rhel-server-eus-rpms или rhel-server-rpms пакетов:
- yum install -y acl
Настройка
Включение ACL
Для включения ACL - отредактируйте файл /etc/fstab и добавьте атрибут acl к опциям раздела, где полагается использование ACL:
# # /etc/fstab: static file system information # # <file system> <dir> <type> <options> <dump> <pass> none /dev/pts devpts defaults 0 0 none /dev/shm tmpfs defaults 0 0 UUID=5de01fca-7c63-49b0-9b2b-8b1790f8428e swap swap defaults 0 0 UUID=8e5259dd-26fc-411a-88e2-f38d4dc36724 /home reiserfs defaults,acl 0 1 UUID=c18f753e-0039-49bd-930f-587d48b7e083 / reiserfs defaults 0 1
Сохраните файл. Переподключите раздел:
# mount -o remount /home
Установка прав ACL
Для изменения ACL используйте команду setfacl. Для добавления прав используйте setfacl -m.
Добавление прав какому-нибудь пользователю:
# setfacl -m "u:username:permissions"
или
# setfacl -m "u:uid:permissions"
Для добавления прав какой-нибудь группе:
# setfacl -m "g:groupname:permissions"
или
# setfacl -m "g:gid:permissions"
Удаление всех расширений ACL:
# setfacl -b
Удаление всех записей:
# setfacl -x "entry"
Проверка установленных разрешений:
# getfacl filename
Параметры
Опции | Значение |
---|---|
-m, --modify=acl | Добавить и модифицировать существующие записи ACL |
-M, --modify-file=file | Добавить и модифицировать существующие записи ACL взятые из указанного файла |
-x, --remove=acl | Удалить указанные ACL права взятые из указанного файла |
-b, --remove-all | Удалить все ACL права с объекта, сохраняя основные права |
-k, --remove-default | Удалить с объекта ACL по умолчанию. Если таковых на объекте нет, предупреждение об этом выдаваться не будет |
--set=acl | Установить новые указанные права ACL, удаляя все существующие. Необходимо, чтобы наравне с задаваемыми правилами ACL были также указаны стандартные права Unix, в противном случае будет давать ошибку |
--set-file=file | Установить новые указанные права ACL, взятые из указанного файла, удаляя все существующие. Необходимо, чтобы наравне с задаваемыми правилами ACL были также указаны стандартные права Unix, в противном случае будет давать ошибку |
--mask | Пересчитать маску действующих прав |
-n, --no-mask | Не пересчитывать маску действующих прав |
-d, --default | Установить ACL по умолчанию на объект |
-R, --recursive | Рекурсивное назначение (удаление) прав, тобишь пройтись по всем подкаталогам |
-L, --logical | Логический обход, следующий символическим ссылкам |
-P, --physical | Физический обход, не следующий символическим ссылкам |
--restore=file | Восстанавить ACL права на объекты из ранее созданного файла с правами |
--test | Тестовый режим |
-v, --version | Вывод версии |
-h, --help | Вывод справки |
Примеры
Установить все разрешения на файл "abc" для пользователя johny:
# setfacl -m "u:johny:rwx" abc
Проверить разрешения:
# getfacl abc
# file: abc # owner: someone # group: someone user::rw- user:johny:rwx group::r-- mask::rwx other::r--
Изменение разрешений для пользователя johny:
# setfacl -m "u:johny:r-x" abc
Проверка разрешений:
# getfacl abc
# file: abc # owner: someone # group: someone user::rw- user:johny:r-x group::r-- mask::r-x other::r--
Удаление всех записей расширения ACL:
# setfacl -b abc
Проверка разрешений:
# getfacl abc
# file: abc # owner: someone # group: someone user::rw- group::r-- other::r--
Вывод команды ls
При использовании команды ls -l можно заметить +(знак плюс) следующий за правами unix, предупреждающий об использовании расширений ACL для файла.
$ ls -l /dev/audio crw-rw----+ 1 root audio 14, 4 nov. 9 12:49 /dev/audio $ getfacl /dev/audio getfacl: Removing leading '/' from absolute path names # file: dev/audio # owner: root # group: audio user::rw- user:solstice:rw- group::rw- mask::rw- other::---
Повышение безопасности веб-сервера
Для повышения безопасности веб-сервера добавьте расширенные права на домашнюю директорию и/или директорию сайта только для пользователя http.
Перейдите в домашнюю директорию:
# cd /home
Добавьте разрешение +x для пользователя http с помощью ACL:
# setfacl -m "u:http:--x" homeusername/
Теперь удалите права rx разрешающие использование директории другим пользователям:
# chmod o-rx homeusername/
Проверьте изменения:
# file: username/ # owner: username # group: users user::rwx user:http:--x group::r-x mask::r-x other::---
Как мы можем видеть, другие пользователи не имеют доступа, но для пользователя http установлен атрибут "x", что разрешает ему просмотр пользовательской директории и дает доступ к веб-страницам пользователя. Это справедливо, если веб-сервер работает от имени пользователя http. По умолчанию пользователь http не наделён такими полномочиями.
Ссылки
- OpenNET setfacl мануал — Мануал по setfacl