The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Списки контроля доступа FreeBSD (security acl freebsd fs)


<< Предыдущая ИНДЕКС Правка src / Печать Следующая >>
Ключевые слова: security, acl, freebsd, fs,  (найти похожие документы)
From: http://wiki.bsdportal.ru Date: Mon, 29 Jan 2006 18:21:07 +0000 (UTC) Subject: Списки контроля доступа FreeBSD Оригинал: http://wiki.bsdportal.ru/doc:acl1 Оригинал - "FreeBSD access control lists" http://www.onlamp.com/pub/a/bsd/2003/08/14/freebsd_acls.html Полномочия Unix гибки и могут решить почти любую проблему управления доступом к файлам, но как обстоят дела с теми проблемами, которые полномочия решить не могут ? Действительно ли Вы хотите создавать группу каждый раз, разделяя доступ к файлу с другим пользователем ? Возможно, Вы не имеете прав администратора системы и не можете создать группу, как Вы этого желаете. Иногда ограничения могут вызвать проблему безопасности, было бы неплохо иметь возможность создать каталог, доступный процессу, имеющему полномочия веб-сервера или другому пользователю без предоставления чтения или записи всем остальным. Конфигурационные файлы, которые могут быть изменены администратором системы, часто необходимо изменять, не получая привилегий суперпользователя; взамен использования программ вроде sudo или calife или "проваливания в программу-оболочку" при редактировании было бы лучше просто разрешать определенным пользователям редактировать эти файлы. Списки контроля доступом (ACL) решают эти проблемы. Они дают большую гибкость, чем стандартный набор полномочий "пользователь/группа/остальные". ACL доступны в коммерческих Unix-системах, таких как IRIX или Solaris (и в Windows NT) в течение нескольких лет. В настоящее время, благодаря проекту TrustedBSD, ACL доступны в FreeBSD 5.0 и выше. Многое из нижеизложенного относится и к реализации ACL на других платформах; тем не менее, Вам придется заглянуть в документацию к своей системе, чтобы избежать ошибок из-за разницы в синтаксисе команд. Вряд ли Вы найдете большое количество различий, так как FreeBSD соответствует самому последнему стандарту POSIX.1e. Включение ACL. ACL активируются опцией в суперблоке файловой системы, который редактируется с помощью tunefs. Установка опций суперблока. Команда tunefs может быть применена на отмонтированной либо доступной только для чтения файловой системе. Это означает, что, обычно, Вы должны загрузиться в однопользовательском режиме перед запуском команды /sbin/tunefs -a enable /fs где /fs обозначает точку монтирования файловой системы (/, /usr, и так далее). Если Вы не имеете доступа к терминалу машины (например, в случае машины, находящейся на colocation), Вы можете добавить вызов команды tunefs в начало файла /etc/rc для включения ACL при последующей загрузке. Если Вы используете файловую систему UFS2, включение ACL закончено. Для включения ACL необходима только строчка opions UFS_ACL встроенная по умолчанию в GENERIC-конфигурацию ядра. Если же Вы используете UFS1, следуйте инструкциям ниже. Дополнительная конфигурация для UFS1. Все усложняется, если Вы, подобно многим пользователям FreeBSD 5.0, используете UFS1 (FreeBSD 5.1 и выше используют UFS2 как файловую систему по умолчанию). ACL основаны на расширенных атрибутах, которыми не обладает UFS1. Для установки расширенных атрибутов Вы должны добавить строки options UFS_EXTATTR options UFS_EXTATTR_AUTOSTART в файл конфигурации ядра системы, после чего собрать и установить новое ядро. Не перезагружайте машину- Вам все еще необходимо инициализировать расширенные атрибуты на каждой файловой системе. Например, для инициализации атрибутов на /var требуется выполнить следующее: %mkdir -p /var/.attribute/system % cd /var/.attribute/system % extattrctl initattr -p /var/ 388 posix1e.acl_access % extattrctl initattr -p /var/ 388 posix1e.acl_default Используйте вместо /var/ любую файловую систему по своему выбору. После инициализации перезагрузитесь и атрибуты будут включены. Взгляд на ACL Работа с ACL проста. Файлы с ACL будут обозначены симолами "a+" в листинге, выдаваемом по ls -l: -rw-rw-r--+ 1 rob rob 0 Apr 19 17:27 acl-test Чтобы увидеть ACL, достаточно использовать getfacl : $ getfacl acl-test #file:acl-test #owner:1000 #group:1000 user::rw- user:nobody:rw- group::r-- group:wheel:rw- mask::rw- other::r-- Поля user::, group:: и other:: должны быть схожими. Они - не что иное, как ACL-представление стандартной системы полномочий Unix. Тем не менее, записи nobody и wheel являются новыми Они обозначают права определенных пользователей и групп (в данном случае - nobody и wheel) вдобавок к обычному набору полномочий. Добавление и удаление ACL. Команда setfacl позволяет добавлять, изменять и удалять ACL. У команды много опций, но для начала Вам нужно знать лишь немногие из них, чтобы работать с ACL. Во-первых, синтакс. ACL указываются так, как они отображаются на выводе команды getfacl. Попробуем удалить и воссоздать ACL для файла acl-test: $ setfacl -b acl-test $ setfacl -m user:nobody:rw-,group:wheel:rw- acl-test Опция "-b" удаляет все ACL, кроме стандартных полномочий пользователя, группы и остальных. Опция "-m" модифицирует ACL указанным элементом (или несколькими элементами, разделенными запятой). Можно использовать аббревиатуры элементов : нижеприведенный пример может быть сокращен до u:nobody:rw-,g:wheel:rw-. Вы даже можете использовать setfacl для модификации "традиционных" полномочий; установка элемента user::rw- эквивалентна запуску chmod u=rw для изменения прав на файл. Удаление ACL почти идентично: setfacl -x u:nobody:rw-,g:wheel:rw- удаляет указанный ACL.Также можно указать ACL в файле. Опции -M и -X выполняют функции их аналогов, задающихся строчными буквами, читая элементы их файла. Рассмотрим файл acl-test вновь: $ cat test-acl-list u:nobody:rw- # this is a comment g:wheel:rw- $ setfacl -X test-acl-list acl-test $ getfacl acl-test #file:acl-test #owner:1000 #group:1000 user::rw- group::r-- mask::r-- other::r-- ACL и другие Unix-утилиты. К сожалению, большинство Unix-утилит все еще не поддерживает ACL. Например, tar не архивирует и не восстанавливает ACL, в FreeBSD NFS также игнорирует их. Ни формат файлов в утилите tar, ни протокол NFS нет ни намека на возможность использования ACL. Тем не менее, архивы полного раздела UFS1, сделанные с помощью tar или dump, восстанавливают каталог .attribute, и утилита dump в FreeBSD модицицирована для для "понимания" UFS2 (включающую ACL). Каталог-скелет archivers/star поддерживает ACL. Вы даже можете работать с архивами, созданными в Linux и FreeBSD С помощью star и предохраняющей расширенные атрибуты (включающие и ACL). Использование ACL с Samba и Windows. Если вы собираете Samba с поддержкой ACL, Вы можете отредактировать списки доступа к файлам, "раздаваемых" Samba, с помощью поставляемых с Windows утилит для работы с ACL. Просто пересоберите Samba с поддержкой ACL. Использую коллекцию портов FreeBSD, Вы можете указать параметр утилиты make WITH_ACL_SUPPORT в диалоге конфигурации порта net/samba. Собрав и запустив Samba, просмотрите в Windows свойства файлов на сетевом диске, созданном с помощью Samba. На закладке "Безопасность" Вы можете просмотреть и изменить ACL, как если бы файлы находились на Windows-сервере. Если сопротивлялись переходу с Windows на использование Samba, мотивируя это отсутствием ACL в последней, теперь самое время серьезно задуматься о развертывании Samba и FreeBSD на своих файловых серверах. ACL по умолчанию. Расмотрим усложненный пример. Вы хотите сделать ваш каталог cool_widgets доступным для пользователя Bob, кроме остальных. Для этого необходимо добавить ACL-элемент. Хотя, когда вы добавляете файлы в этот каталог, они не будут автоматически приобретать ACL каталога. Вам необходимо установить для него ACL по умолчанию Любые файлы, созданные в каталоге, будут наследовать ACL по умолчанию. Используя опцию "-d" при вызове getfacl или setfacl эффект будет виден на ACL каталога, а не на самом каталоге. $ mkdir cool_widgets $ chmod o-rwx cool_widgets $ ls -l ... drwxr-x--- 2 rob rob 512 Apr 19 21:21 cool_widgets ... $ getfacl -d cool_widgets #file:cool_widgets #owner:1000 #group:1000 Добавляем ACL по умолчанию: $ setfacl -d -m u:bob:rw- cool_widgets setfacl: acl_calc_mask() failed: Invalid argument setfacl: failed to set ACL mask on cool_widgets Ой! ACL по умолчанию работают не так, как обычные ACL. Вы не можете установить определенный элемент ACL по умолчанию, пока не добавите общие элементы user::, group:: и other::. $ setfacl -d -m u::rw-,g::r--,o::---,u:bob:rw- cool_widgets $ setfacl -m u:bob:r-x cool_widgets Обратите внимание на необычный элемент "r-x" для пользователя bob в записях для каталога: ACL по умолчанию заметен в свойствах файлов, созданных в каталоге, а не в свойствах самого каталога. ACL-элемент "u:bob:rw-" будет добавлен к ACL любого файла, созданного в каталоге cool_widgets. Теперь у Вас имеется каталог cool_widgets, файлы в котором доступны для чтения и записи пользователям rob и bob без использования группы. Если в дальнейшем Вы решите избавиться от ACL по умолчанию, используйте опцию "-k" команды setfacl, которая работает с ACL по умолчанию так же, как опция "-b" - с ACL файлов.

<< Предыдущая ИНДЕКС Правка src / Печать Следующая >>

 Добавить комментарий
Имя:
E-Mail:
Заголовок:
Текст:




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру