Мы — долго запрягаем, быстро ездим, и сильно тормозим.
|
||||||||||||||||||||||||||||||||||||||||||
www.lissyara.su
—> статьи
—> FreeBSD
|
|
Тему по пересборки ядра мы ещё не затрагивали, но вы можете не беспокоиться, так как эта опция по умолчанию находится в стандартном ядре системы с именем GENERIC.
После того, как Вы добавите необходимую опцию в ядро и соберёте ядро, это если в друг Вы уже знакомы с тем как пересобирать ядро, необходимо включить поддержку ACL для конкретной файловой системы, т.е назначить определённой точке монтирования. Существует два способа включения ACL для файловой системы:
1.   Через файл /etc/fstab путём добавления необходимого флага к файловой системе mount(8). В результате ACL включается во время загрузки ОС и монтирования файловой системы:
|
Как можно видеть из примера, флаг acls добавлен для точки монтирования /home. После перезагрузки системы можно будет использовать ACL на данной файловой системе. Для проверки того установлен ли флаг acls для файловой системы, используйте команду mount(8) без параметров:
|
Включение ACL во время загрузки системы, т.е при монитровании файловых систем имеет ряд недостатков:
Если пользователь имеет необходимый уровень доступа, то возможно перемонитрование файловой системы без флага acls – umount(8)
Возможно, удаление флага из файла /etc/fstab и в результате файловая система после перезагрузки системы будет без поддержки ACL, что может вызвать проблемы с безопасностью.
2.   Второй способ – это включение флага в заголовке файловой системы. Этот способ намного предпочтительней, чем первый по следующим причинам:
Постоянный флаг не может быть изменён путём перемонтирования файловой системы. Так же это означает, что Вы не можете выключить флаг acls на корневой и используемой файловой системе после.
Установка флага в суперблоке файловой системы приводит к постоянному монтированию системы с флагом acls, если он даже не установлен в файле /etc/fstab.
Для использования второго способа Вам понадобится команда tunefs(8). Если вы захотите включить ACL с использованием tunefs(8) Вам необходимо:
1.Размонтировать umount(8) файловую систему, на которой Вы собираетесь подключать ACL
2.Выполнить команду tunefs(8) с опцией ‘–a enable’
3.Примонтировать файловую систему обратно mount(8)
Посмотрим содержание файла /etc/fstab, оно нам далее понадобится и определимся с файловой системой, на которой нам необходимо включить поддержку ACL:
|
Будем включать поддержку ACL для файловой системы /home. Если файловая система, на которой Вы хотите включить ACL, используется и её нельзя размонтировать, то необходимо перейти в однопользовательский режим (boot –s или 3 пункт в меню загрузки):
|
  После того как Вы включили поддержку ACL для файловой системы, Вам необходимо узнавать файлы на которые установлены ACL. Это можно сделать с помощью команды ls(1):
|
Как видно из примера, файл на котором установлены ACL отображается со знаком плюс после прав доступа.
При работе с ACL будут полезны следующие команды:
•setfacl(1) – установка, удаление ACL
•getfacl(1) – получение информации об установленных ACL
•ls(1) – получение списка файлов и информации о них
Перед тем как работать с командами, опишем самые необходимые опции, которые мы будем использовать, и определим порядок установки ACL.
Для setfacl(1):
-b – удаляет все установленные ACL
-m <entries> – добавляет и модифицирует существующие записи ACL
-M <file> - добавляет и модифицирует существующие ACL взятые из указанного файла
-n – не изменяет существующую маску максимальных полномочий при установке ACL
-x <entries> – удаляет конкретную запись ACL
-X <file> – удаляет записи ACL взятые из указанного файла
Порядок установки ACL:
1.Устанавливаем маску максимальных полномочий, она определяется из тех максимальных полномочий, которые должны быть у пользователя или группы на ресурс
2.Устанавливаем или модифицируем необходимые ACL с опцией отменяющей изменение маски максимальных полномочий
3.Удаляем все или необходимые ACL записи
Важно!
1.ACL никоим образом не влияет на права доступа для владельца
2.Изменение маски максимальных полномочий отражается на группе по умолчанию, т.е права определённые маской максимальных полномочий определяются и для группы по умолчанию
3.Изменение прав доступа для категории o(other) в ACL влияет на категорию o(other) по умолчанию
При установки ACL для многих групп (u,g,o) в качестве разделителя используется запятая(,).
Практика:
(Для более подробной информации о командах обязательно читайте маны)
Установим ACL на файл и проверим работоспособность наших ACL:
|
Далее заходим пользователем atrium и проверяем установленные полномочия:
|
Давайте теперь изменим полномочия для пользователя atrium и установим для него права доступа rw- и попробуем произвести запись в тот же файл:
|
При установке ACL важен порядок следования опций, опция –n должна следовать перед опцией –m или -x
Важно!
Обязательно не забывайте использовать опцию –n при установке, модификации или удалении существующих ACL, так как при добавлении, модификации или удалении ACL без опции –n происходит изменение максимальной маски полномочий в сторону уменьшения или увеличения, в зависимости от прав доступа.
Удалим ACL установленные для пользователя tests:
|
Сделаем тоже самое, только без опции –n для демонстрации того, как меняется максимальная маска полномочий:
|
Как можно видеть максимальная маска полномочий изменилась в сторону увеличения, что соответственно может привести к проблемам с безопасностью, поэтому будьте внимательны.
Установим ACL для 2 или более пользователей одной командой:
|
Посмотрим как действует маска максимальных полномочий:
Создадим файл и установим на него ACL в виде маски максимальных полномочий r(чтение), а для пользователя test и atrium установим права rw(чтение и запись), и попробуем произвести запись пользователем atrium.
Установили права
|
Попробуем произвести запись пользователем atrium в файл
|
Как видим, доступ запрещён, хотя права доступа для пользователя atrium – rw. Эффективные права доступа для пользователя определила маска максимальных полномочий, и отображаются эффективные права доступа напротив пользователя в виде строки:
|
Специальные флаги
  Для любого файла в ОС FreeBSD можно установить специальные флаги, которые накладывают определённые ограничения на манипуляции с этим файлом. Накладываемые ограничения определяются флагом, который будет установлен на файл. Использование флагов повышает безопасность файловой системы, особенно в сочетании с уровнями безопасности security(7), так как некоторые уровни(1,2) запрещаю снимать флаги даже администратору системы – root.
  Посмотреть установленные флаги для файла возможно с помощью команды ls(1) с опциями –ol. Для примера сделаем листинг каталога содержащего файл с установленным флагом schg:
|
Как можно видеть из примера, в столбце 5 установлен флаг schg.
Давайте перечислим флаги, которые мы будем использовать, и определим их значение:
•arch, archived – архивный файл
•opaque – флаг непрозрачности для каталогов
•nodump – флаг исключает из резервной копии
•sappnd, sappend – системный флаг, устанавливающий возможность только добавления. Может устанавливаться только суперпользователем, т.е пользователем с UID=0.
•schg, schange, simmutable – системный флаг, устанавливающий запрет на изменение. Может устанавливаться только суперпользователем, т.е пользователем с UID=0.
•sunlnk, sunlink - системный флаг, запрещает удаление. Может устанавливаться только суперпользователем, т.е пользователем с UID=0.
•uappnd, uappend – пользовательский флаг, устанавливающий возможность только добавления. Может устанавливаться владельцем файла или суперпользователем, т.е пользователем с UID=0.
•uchg, uchange, uimmutable - пользовательский флаг, устанавливающий запрет на изменение. Может устанавливаться только владельцем файла или суперпользователем, т.е пользователем с UID=0.
•uunlnk, uunlink - пользовательский флаг, запрещает удаление. Может устанавливаться только владельцем файла или суперпользователем, т.е пользователем с UID=0.
Для установки и снятия флагов используется команда chflags(1). Для снятия флага необходимо использовать приставку no к флагу, т.е допустим необходимо снять флаг запрещающий изменение файла schg, для этого вместе с командой chflags(1) будем использовать флаг noschg:
|
Если необходимо установить несколько флагов для файла, то в качестве разделителя используется запятая (,).
 
Существует небольшая особенность флага sunlnk которую необходимо учитывать при его установке. Как мы знаем данный флаг, запрещает удаление файла, но никто не отменял команду:
|
которая как Вы уже догадались, удалит всё содержимое файла. Поэтому флаг sunlnk лучше комбинировать с флагом sappnd. Рассмотрим небольшой пример:
|
как видим всю информацию из файла test.file удалили, т.е мы добились практически эффекта от удаления самого файла. Теперь добавим к этому файлу флаг sappnd и проделаем тоже самое:
|
Как видим, теперь информацию и сам файл удалить невозможно.
Важно!
В начале главы мы упоминали так называемые уровни безопасности, они так же играют важную роль при работе с флагами. FreeBSD по умолчанию, использует (-1) уровень безопасности:
|
При данном уровне у пользователя с UID=0 (root) существует возможность, как установить, так и удалить флаг. При повышении уровня безопасности до (1), такая возможность отсутствует, т.е флаги можно будет снять только при понижении уровня до (-1) или (0).
При работе с флагами будут полезны следующие команды:
•ls(1) – получение списка файлов и информации о них
•chflags(1) – установка и удаление флагов
•security(7) – прочитать про уровни безопасности.
Практика:
(Для более подробной информации о командах обязательно читайте маны)
Давайте установим на файл, два любых флага, а потом удалим один из них:
|
Удалим с файла заранее установленный флаг schg
|
|
размещено: 2009-08-10,
последнее обновление: 2010-04-10,
автор: atrium
Этот информационный блок появился по той простой причине,
что многие считают нормальным, брать чужую информацию не уведомляя автора
(что не так страшно), и не оставляя линк на оригинал и автора — что более существенно.
Я не против распространения информации — только за. Только условие простое — извольте
подписывать автора, и оставлять линк на оригинальную страницу в виде прямой, активной, нескриптовой,
незакрытой от индексирования, и не запрещенной для следования роботов ссылки.
Если соизволите поставить автора в известность — то вообще почёт вам и уважение.
© lissyara 2006-10-24 08:47 MSK
Комментарии пользователей [0 шт.]