O que eu basicamente quero fazer, é poder definir o SGID (setgid) em certos diretórios do Windows em compartilhamentos do Samba.
Lembrete: Os arquivos e diretórios criados no diretório com o conjunto SGID herdam o grupo principal do diretório pai.
Ambiente
Eu tenho um ambiente com algumas dezenas de grupos que precisam acessar arquivos relacionados a projetos aos quais pertencem. Como a associação de grupos de projetos e os próprios grupos está mudando com bastante frequência, desejo delegar a definição de permissões aos líderes de grupos o quanto for possível. Embora gerenciar membros do grupo fosse fácil (a delegação de privilégios do GOSa cuidava disso muito bem), estou lutando com permissões de arquivos.
Nota: o número de grupos e outras hierarquias similares é grande, portanto criar compartilhamentos diferentes para cada grupo ou hierarquias é impraticável (a quantidade de pontos de montagem possíveis no Windows é limitada, infelizmente, é impossível usar caminhos UNC).
As pastas no compartilhamento são assim:
/share root
+-- hierarchy 1
+-- hierarchy 2
| ...
+-- hierarchy 20
+-- projects
+-- project A
| +-- dir A
| +-- file
+-- project B
+-- ...
+-- project Z
Controle de grupo do Samba ACL
O bom recurso do samba ( acl group control
) me permite permitir que membros do grupo primário que possuem o diretório ou arquivo editem suas permissões (ao contrário do regular: proprietário, root e "admin users" do smb.conf). / p>
Então, quando eu tenho uma pasta como esta (POSIX ACL de getfacl
):
# file: project A
# owner: root
# group: proj-a-adm
# flags: -s-
user::rwx
group::rwx
group:Domain0Users:r-x
group:proj-a:rwx
mask::rwx
other::---
default:user::rwx
default:group::rwx
default:group:Domain0Users:r-x
default:group:proj-a:rwx
default:mask::rwx
default:other::---
Os membros do grupo proj-a-adm
podem editar as permissões desse diretório (e todos os diretórios e arquivos criados nele), enquanto os membros do grupo proj-a
podem modificar os próprios arquivos, mas não podem alterar as permissões desses arquivos. Domain Users
só pode ler arquivos em.
Problema
Quando há um novo projeto criado, um usuário root
precisa executar chmod g+s projects/project\ AA
na linha de comando.
Eu posso editar permissões de arquivos e pastas depois que um novo projeto foi criado sem problemas usando a janela de permissões de arquivo do Windows, mas a criação de uma nova pasta de projeto requer a execução de um comando no shell que é bastante hackish .