Права доступа на папки файлового сервера SAMBA с использованием ACL
Пятница, 01 июня 2018 10:08

Права доступа на папки файлового сервера SAMBA с использованием ACL

Автор
Оцените материал
(1 Голосовать)

В предыдущих статьях был рассмотрен способ установки файлового сервера Samba в кластере и установка прав доступа на отдельные папки используя "классический" метод. Но данный метод не всегда удобен, особенно если папок на сервере много и требуется весьма разветвленная структура доступа. Весьма затруднительно вносить каждую папку, на которую требуется наложить какие-либо ограничения, в файл конфигурации сервера. Да и делегировать административные права на управление доступом гораздо проще используя другой метод. Таким методом является ACL.

Как обычно все работы будут проводиться на ОС Rosa Enterprise Linux Server 7.3 (RELS 7.3), он же CentOS 7.3, он же RedHat 7.3.

Вводные данные:

  1. smb.rpn.int - файловый сервер Samba
  2. otd1 - первое подразделение компании
  3. otd2 - второе подразделение компании
  4. unit1 - папка первого подразделения
  5. unit2 - папка второго подразделения
  6. share - общая папка всех подразделений.

Задача: организовать доступ к папкам таким образом:

  1. Пользователи из otd1 имели полный доступ к папке unit1, но не имели доступ к папке unit2
  2. Пользователи из otd2 имели полный доступ к папке unit2, но не имели доступ к папке unit1
  3. Все пользователи имеют полный доступ к папке share
  4. Все пользователи имеют право просматривать структуру корневой папки

 В предыдущей статье рассказывалось о том, как организовать такой доступ, используя стандартные настройки Samba. Сейчас же рассмотрим более "продвинутый" метод - ACL.

Стандартные команды работы с ACL - setfacl и getfacl - подробно описаны в руководстве, поэтому здесь мы ограничимся примерами.

Для работы ACL необходимо включить поддержку этого функционала при монтировании файловой системы. Когда мы подключали кластерную файловую систему к кластеру, мы это предусмотрели:

# pcs resource create fs_smb_cluster ocf:heartbeat:Filesystem device="/dev/vg_samba/lv_samba" directory="/opt/smb_fs" fstype="gfs2" options="acl,noatime" --clone

Т.е. в параметре монтирования указываем опцию acl. Если мы не используем кластерную файловую систему, а работаем с выделенным сервером, то эта опция указывается в файле, описывающим смонтированные устройства (/etc/fstab). Например:

# /dev/sda5
UUID=95b26917-535e-46ac-8d72-443d46184bb5  /media/Profil  ext3  grpquota,acl,suid,dev,usrquota,relatime,exec 0 2

Проверить поддерживает ли раздел работу с ACL можно попыткой установить список доступа на этот раздел. Например:

# setfacl -m u:testuser:rw-,g:root:rw- qqq
setfacl: qqq: Operation not supported

Operation not supported говорит о том, что поддержка ACL не была включена и необходимо ее задействовать.

Т.к. сервер в данном примере работает в домене FreeIPA, то в первую очередь создаем несколько групп:

  1. fs_users - в данную группу будут входить все пользователи, имеющие право заходить на файловый сервер, и которым будет доступен листинг корневых папок ресурса
  2. fs_admins - группа пользователей, которым будут доступны все папки на сервере и которые смогут редактировать (настраивать) ACL непосредственно из файлового менеджера без доступа в консоль сервера.
  3. otd1 - пользователи первого подразделения
  4. otd2 - пользователи второго подразделения

Далее на диске, который будет использоваться для файлового сервера создаем структуру папок:

# mkdir /opt/smb_fs/FS_Share
# mkdir /opt/smb_fs/FS_Share/unit1
# mkdir /opt/smb_fs/FS_Share/unit2

Где FS_Share - точка монтирования диска. Далее назначаем хозяина папок и раздаем права:

# chown -R root:fs_admins /opt/smb_fs/FS_Share
# chmod -R 2770 /opt/smb_fs/FS_Share

Т.е. мы назначаем группу владельца файлов и папок fs_admins и разрешаем доступ с правом чтения-записи всем пользователям, принадлежащим этой группе.

Права 2770 гарантируют, что все файлы и подпапки, находящиеся в них, будут всегда создаваться с соответствующими подгруппами этих родительских папок. Немного изменим права доступа на корневую папку:

# chmod 2775 /opt/smb_fs/FS_Share

Далее настраиваем доступ к корневой общей папке и включаем ACL в конфигурации Samba:

[SHARE]
	comment = Корневая общая папка
	path = /opt/smb_fs/FS_Share
	map acl inherit = Yes              # Включаем наследование политик доступа
	admin users = @fs_admins           # Группа с полными правами в том числе и с редактированием ACL
	create mask = 0660
	directory mask = 0770
	force create mode = 0110
	force group = +fs_admins
	inherit acls = Yes                 # Включаем наследование настроек по умолчанию acls родительского каталога
	inherit owner = Yes                # Включаем наследование владельца от родительской папки
	inherit permissions = Yes          # Включаем наследование разрешений от родительской папки
	read only = No
	valid users = @fs_users            # Разрешаем группе fs_users из домена FreeIPA доступ к ресурсу
	write list = @admins               # Разрешаем группе admins из домена FreeIPA доступ с правом записи к ресурсу

Перезапускаем сервер Samba с новыми настройками:

# systemctl restart smb

В итоге на сервере появилась общая папка SHARE, в которую имеют доступ пользователи, входящие в группу fs_admins.

Остается настроить права доступа на все папки общего ресурса. Для этого переходим в консоль сервера и начинаем настройку.

Устанавливаем права просмотра содержимого корневого каталога для всех пользователей, входящих в группу fs_users (в отличии от групп Samba в группы домена FreeIPA могут входить другие группы. Т.е. в нашем случае в группу fs_admins входят группы подразделений otd1 и otd2):

# setfacl -m g:fs_users:rx /opt/smb_fs/FS_Share

Устанавливаем полный доступ для пользователей группы otd1 на папку и все последующие папки unit1:

# setfacl -R -m g:otd1:rwx /opt/smb_fs/FS_Share/unit1

Устанавливаем полный доступ для пользователей группы otd2 на папку и все последующие папки unit2:

# setfacl -R -m g:otd2:rwx /opt/smb_fs/FS_Share/unit2

Посмотреть права доступа можно выполнив следующую команду:

# getfacl /opt/smb_fs/FS_Share/unit2
getfacl: Removing leading '/' from absolute path names
# file: opt/smb_fs/FS_Share/unit2/
# owner: root
# group: fs_admins
# flags: -s-
user::rwx
group::rwx
group:otd2:rwx
mask::rwx
other::---

Т.е. мы видим, что в данную папку разрешен полный доступ группе otd2. Всем остальным доступ запрещен.

То же самое можно посмотреть для остальных папок.

В итоге мы добились поставленной цели: все пользователи могут читать структуру корневого каталога. Пользователь имеет полный доступ в папку своего подразделения. Доступ пользователю в папку чужого подразделения запрещен.

Особенности и ограничения.

 

  • При перемещении (mv) никаких дополнительных параметров ненужно;
  • При копировании (cp), необходимо использовать ключ -p, в противном случае ACL права будут потеряны;
Внимание!!!
По умолчанию графический интерфейс при копировании не учитывает ACL права!
  • При архивировании или распаковке вместо tar используйте утилиту star (устанавливается из стандартных репозитариев)

Наиболее часто встречающиеся опции star:

 

ОпцияОписание
-c Создаёт файл архива
-n Отключает извлечение файлов, используется в сочетании с -x для просмотра списка извлекаемых файлов.
-r Заменяет файлы в архиве. Файлы записываются в конец архива, заменяя любые файлы с тем же путём и именем.
-t Выводит содержимое файла архива.
-u Обновляет файл архива. Файлы записываются в конец архива, если их ещё не было в архиве или если они новее, чем файлы с тем же именем в архиве.
-x Извлекает файлы из архива. Если используется с ключом -U и файл в архиве старее, чем соответствующий файл в файловой системе, такой файл не извлекается.
-help Выводит наиболее важные параметры.
-xhelp Выводит менее важные параметры.
-/ Оставляет ведущую косую черту в имени файла при извлечении файлов из архива. По умолчанию она убирается.
-acl При создании архива или извлечении файлов, архивирует или восстанавливает все ACL, связанные с файлами или каталогами.

Пример для архивирования утилитой star с сжатием:

star -czv -Hexustar -acl -f /tmp/homedir.tgz /media/Profil/home

Пример для разархивирования в текущий каталог:

star -xv -Hexustar -acl -f homedir.tgz 

Дополнительная информация

  • Так же интересно:
Прочитано 13495 раз Последнее изменение Пятница, 08 июня 2018 10:33
Авторизуйтесь, чтобы получить возможность оставлять комментарии
Top
Этот шаблон Joomla был скачан с сайта ДжуМикс.