# Access Control Lists (Русский)

Эта страница нуждается в сопроводителе

Статья не гарантирует актуальность информации. Помогите русскоязычному сообществу поддержкой подобных страниц. См. Команда переводчиков ArchWiki

## Введение

Access Control List предоставляет расширенный и более гибкий механизм распределения прав файловых систем. Он предназначен для расширения прав доступа к файлам `UNIX`. ACL позволяет устанавливать разрешения любым пользователям или группам для различных файловых ресурсов.

## Установка

ACL доступно из /core хранилища пакетов:

    # pacman -S 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

## Примеры

Установить все разрешения на файл "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 не наделён такими полномочиями.

## Дополнительные ресурсы

- Страница руководства - man getfacl
- Страница руководства - man setfacl

Categories:

- Security (Русский)
- Русский