В основном я хочу иметь возможность устанавливать 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
Приятная особенность самбы (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.