Назад | Перейти на главную страницу

Каталоги Samba SGID и делегирование прав

В основном я хочу иметь возможность устанавливать SGID (setgid) для определенных каталогов из Windows на общих ресурсах Samba. Напоминание: файлы и каталоги, созданные в каталоге с установленным SGID, наследуют основную группу родительского каталога.

Окружающая среда

У меня есть среда с несколькими десятками групп, которым нужен доступ к файлам, связанным с проектами, к которым они принадлежат. Поскольку состав проектных групп и сами группы меняются довольно часто, я хочу делегировать настройку разрешений руководителям групп, насколько это возможно. Хотя управлять членством в группе было легко (делегирование привилегий GOSa прекрасно позаботилось об этом), я борюсь с правами доступа к файлам.

Примечание: количество групп и других подобных иерархий велико, поэтому создание разных общих ресурсов для каждой группы или иерархий невозможно (количество возможных точек монтирования в Windows ограничено, использование UNC-путей, к сожалению, также невозможно).

Папки в общей папке выглядят следующим образом:

/share root
+-- hierarchy 1
+-- hierarchy 2
|   ...
+-- hierarchy 20
+-- projects
    +-- project A
    |   +-- dir A
    |   +-- file
    +-- project B
    +-- ...
    +-- project Z

Samba ACL Group Control

Приятная особенность самбы (acl group control) позволяет мне разрешить членам основной группы, владеющей каталогом или файлом, редактировать свои права (в отличие от обычных пользователей: владельца, root и «администраторов» из smb.conf).

Поэтому, когда у меня есть такая папка (POSIX ACL из getfacl):

# file: project A
# owner: root
# group: proj-a-adm
# flags: -s-
user::rwx
group::rwx
group:Domain\040Users:r-x
group:proj-a:rwx
mask::rwx
other::---
default:user::rwx
default:group::rwx
default:group:Domain\040Users:r-x
default:group:proj-a:rwx
default:mask::rwx
default:other::---

Члены группы proj-a-adm может редактировать разрешения этого каталога (и всех каталогов и файлов, созданных в нем), а члены proj-a группа может изменять сами файлы, но не может изменять права доступа к этим файлам. Domain Users может читать только файлы внутри.

Проблема

Когда создается новый проект, root пользователю нужно запустить chmod g+s projects/project\ AA в командной строке.

Я могу без проблем редактировать разрешения для файлов и папок после создания нового проекта, используя окно разрешений файлов Windows, но для создания новой папки проекта требуется запуск команды в оболочке, которая скорее хакерский.

A) Напишите небольшую веб-форму и небольшой сценарий, который создаст группу и каталог для проекта.

Б) Напишите небольшой командный файл Windows, который будет делать то же самое по ssh. Вы можете использовать ssh-клиент из проекта cygwin или какой-нибудь собственный ssh-клиент для Windows.