Мой сайт
Главная | Каталог статей | Регистрация | Вход
Четверг
25.04.2024
03:09
Приветствую Вас Гость | RSS
Главная » Статьи » Linux и Unix

ACL в FreeBSD by Daniel Harris
Списки контроля доступа FreeBSD 

Оригинал - FreeBSD access control lists http://www.onlamp.com/pub/a/bsd/2003/08/14/freebsd_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 файлов.


Источник: http://bsdportal.ru/viewtopic.php?p=41408&sid=697aab138e6144964a29268241c20c7f
Категория: Linux и Unix | Добавил: SAM (23.07.2010)
Просмотров: 1696 | Рейтинг: 0.0/0
Всего комментариев: 0
Имя *:
Email *:
Код *:
Форма входа
Категории раздела
Мои статьи [0]
Linux и Unix [47]
Все про Linux и Unix
Windows [2]
Все про Windows
Администрирование [5]
Все для Системного администратора
Cisco [2]
Мой опыт работы с кисками
Поиск
Друзья сайта
  • Официальный блог
  • Сообщество uCoz
  • FAQ по системе
  • Инструкции для uCoz
  • Статистика

    Онлайн всего: 1
    Гостей: 1
    Пользователей: 0
    Copyright MyCorp © 2024
    Бесплатный конструктор сайтов - uCoz