В дополнение к другим расширениям файловой системы, таким как снимки (snapshots), FreeBSD 5.0 и более поздние версии системы предлагают защиту с помощью списков контроля доступа файловой системы (File System Access Control Lists, ACLs).
Списки контроля доступа расширяют стандартную модель прав UNIX® высоко совместимым (POSIX®.1e) способом. Эта возможность позволяет администратору получить преимущество от использования более интеллектуальной модели безопасности.
Для включения поддержки ACL в файловой системе UFS, следующая строка:
должна быть добавлена в файл настройки ядра. Если параметр не
добавлен, при попытке монтирования систем, поддерживающих
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 показывают
знак +
при просмотре прав на файлы.
Например:
Здесь мы видим, что каталоги 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.
Этот, и другие документы, могут быть скачаны с http://ftp.FreeBSD.org/pub/FreeBSD/doc/.
По вопросам, связанным с FreeBSD, прочитайте
документацию прежде чем писать в
<questions@FreeBSD.org>.
По вопросам, связанным с этой документацией, пишите в рассылку
<doc@FreeBSD.org>.