BSDPORTAL.RU

На этом сайте обсуждаются вопросы использования ОС FreeBSD
 Портал  •  Статьи  •  Форум  •  Wiki  •  Поиск  •  FAQ  •  Обои  •   Официальная документация  •  Новые темы 

Часовой пояс: UTC + 4 часа




Начать новую тему Ответить на тему  [ Сообщений: 3 ] 
Автор Сообщение
 Заголовок сообщения: ACL в FreeBSD by Daniel Harris
СообщениеДобавлено: Вт 24 янв, 2006 2:16 pm 
Не в сети
Модератор

Зарегистрирован: Чт 26 май, 2005 12:37 pm
Сообщения: 271
Откуда: Ekaterinburg
Списки контроля доступа FreeBSD

Оригинал - FreeBSD access control lists http://www.onlamp.com/pub/a/bsd/2003/08 ... _acls.html. By Daniel Harris.


Полномочия 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 файлов.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт 24 янв, 2006 6:00 pm 
Не в сети
Site Admin
Аватара пользователя

Зарегистрирован: Чт 23 окт, 2003 12:31 pm
Сообщения: 559
практически художественный перевод
аффтар пиши есчо ;)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Вт 24 янв, 2006 6:22 pm 
Не в сети
Модератор

Зарегистрирован: Чт 26 май, 2005 12:37 pm
Сообщения: 271
Откуда: Ekaterinburg
Завтра будет в wiki

_________________
With shadowed face for the coming centuries


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 3 ] 

Часовой пояс: UTC + 4 часа


Кто сейчас на конференции

Зарегистрированные пользователи: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
cron
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB
Яндекс.Метрика