В дополнение к другим расширениям файловой системы, таким как снимки (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/.