В дополнение к другим расширениям файловой системы, таким как снимки (snapshots), FreeBSD 5.0 и более поздние версии системы предлагают защиту с помощью списков контроля доступа файловой системы (File System Access Control Lists, ACLs).
Списки контроля доступа расширяют стандартную модель прав UNIX® высоко совместимым (POSIX®.1e) способом. Эта возможность позволяет администратору получить преимущество от использования более интеллектуальной модели безопасности.
Для включения поддержки ACL в файловой системе UFS, следующая строка:
options UFS_ACL
должна быть добавлена в файл настройки ядра. Если параметр не добавлен, при попытке монтирования систем, поддерживающих ACL, появится предупреждающее сообщение. Этот параметр включен в ядро GENERIC. ACL основывается на дополнительных атрибутах, встроенных в файловую систему. Дополнительные атрибуты поддерживаются по умолчанию следующим поколением файловых систем UNIX, UFS2.
Замечание: Для включения дополнительных атрибутов в UFS1 требуется больше усилий по сравнению с UFS2. Производительность дополнительных атрибутов в UFS2 также существенно выше. По этим причинам для работы с списками контроля доступа предпочтительно использование UFS2
ACL включаются во время монтирования
флагом acls
, который добавляется к /etc/fstab. Этот флаг также можно сделать постоянным с помощью tunefs(8), изменив
флаг ACL в заголовке файловой системы. Вообще
говоря, использование флага в суперблоке предпочтительно по нескольким причинам:
Постоянный ACL флаг не может быть изменен
путем перемонтирования системы (mount(8) -u
), а только через umount(8) и mount(8). Это
означает, что ACL нельзя включить на
корневой файловой системе после загрузки. Это также означает, что вы не можете
изменить флаг на используемой файловой системе.
Установка флага в суперблоке приводит к постоянному монтированию файловой системы с включенным ACL, даже если нет записи в fstab или при смене порядка устройств. Это предотвращает случайное монтирование файловой системы без ACL, которое может повлечь за собой проблемы с безопасностью.
Замечание: Мы можем изменить поведение ACL для включения флага без полного перемонтирования, но считаем, что желательно исключить случайное монтирование без ACL, поскольку вы можете попасть в неприятную ситуацию, если включите ACL, затем выключите их, затем опять включите без сброса расширенных атрибутов. Обычно, как только вы включили ACL в файловой системе, они не должны быть выключены, поскольку получающаяся защита файлов может быть не совместима с той, что применяется пользователями системы, и повторное включение ACL может подключить предыдущие списки контроля доступа к файлам, права на которые изменены, что приведет к непредсказуемому поведению.
Файловые системы с включенными ACLs показывают знак + при просмотре прав на файлы. Например:
drwx------ 2 robert robert 512 Dec 27 11:54 private drwxrwx---+ 2 robert robert 512 Dec 23 10:57 directory1 drwxrwx---+ 2 robert robert 512 Dec 22 10:20 directory2 drwxrwx---+ 2 robert robert 512 Dec 27 11:57 directory3 drwxr-xr-x 2 robert robert 512 Nov 10 11:54 public_html
Здесь мы видим, что каталоги directory1, directory2, и directory3 используют преимущества ACL. Каталог public_html их не использует.
ACL файловой системы можно просмотреть с помощью утилиты getfacl(1). Например, для просмотра настроек ACL файла test, может использоваться команда:
% getfacl test #file:test #owner:1001 #group:1001 user::rw- group::r-- other::r--
Для изменения ACL этого файла, вызовите утилиту setfacl(1). Выполните:
% setfacl -k test
Параметр -k
удалит все установленные на данный момент
ACL из файла или файловой системы. Более
предпочтительный метод это использование параметра -b
,
который оставит необходимые для работы ACL поля.
% setfacl -m u:trhodes:rwx,group:web:r--,o::--- test
В вышеприведенной команде параметр -m
использован для
изменения записей ACL по умолчанию.
Поскольку предустановленных записей не было (они были удалены предыдущей командой),
эта команда восстановит параметры по умолчанию и задаст приведенные параметры.
Имейте ввиду, при добавлении пользователя или группы, которых нет в системе, на
stdout будет выведена ошибка “Invalid argument”.
Пред. | Начало | След. |
OpenSSH | Уровень выше | Мониторинг вопросов безопасности в ПО сторонних разработчиков |
Этот, и другие документы, могут быть скачаны с ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.
По вопросам, связанным с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.
По вопросам, связанным с этой документацией, пишите <doc@FreeBSD.org>.
По вопросам, связанным с русским переводом документации, пишите в рассылку <frdp@FreeBSD.org.ua>.
Информация по подписке на эту рассылку находится на сайте проекта перевода.