Listas de controle de acesso
A resposta direta são as listas de controle de acesso (ACLs) . Sim, você pode encontrar um contra-exemplo, mas eles são bons o suficiente na prática (ao contrário da mera gravabilidade em grupo, que exige que os usuários pensem nisso o tempo todo). O que eles exigem é que o administrador do sistema (raiz) defina os grupos, se você deseja que os arquivos sejam compartilhados apenas por um grupo nomeado (o raiz pode optar por delegar, por exemplo, aceitando grupos do LDAP, mas isso é outra história).
Você precisa que os usuários participantes tenham uma umask de 022. Se eles criarem arquivos não legíveis por mundo rotineiramente, esse esquema não funcionará. Mas se eles têm uma umask restritiva, é provável que não desejem compartilhar arquivos de qualquer maneira.
Ativando ACLs
O Ubuntu não habilita ACLs por padrão, então há um requisito de administração único. Edite /etc/fstab
usando seu editor favorito e altere todas as linhas correspondentes a um sistema de arquivos em que você deseja compartilhar arquivos: adicione acl
às opções. (Certifique-se de não alterar nenhuma outra linha e de não usar um editor que agrupe linhas longas.) Aqui está um exemplo de linha com a acl
opção adicionada:
UUID=5e1ec7ed-face-dead-beef-c011ec7ab1e5 / ext4 errors=remount-ro,acl 0 1
Para que a opção entre em vigor na primeira vez, use um comando como o seguinte (para cada sistema de arquivos):
sudo mount -o remount,acl /
Instale as ferramentas ACL do acl
pacote.
Configurando o Diretório Compartilhado
Para ter arquivos compartilhados pelo grupo mygroup
:
setfacl -m group:mygroup:rwx /path/to/shared/root
setfacl -d -m group:mygroup:rwx /path/to/shared/root
Se as pessoas criarem arquivos e os copiarem para o diretório compartilhado, os arquivos ficarão legíveis por todo o mundo (por causa do umask) e qualquer pessoa no grupo poderá adicionar e remover arquivos (porque o grupo é gravável em grupo). As pessoas não podem editar os arquivos umas das outras, mas isso é bom ou você pode ter conflitos de edição imediatamente.
Se você não possui um grupo unix, pode adicionar usuários um por um:
setfacl -m user:bob:rwx /path/to/shared/root
setfacl -d -m user:bob:rwx /path/to/shared/root
Controle de versão
Se você deseja que as pessoas possam editar arquivos no local, também precisa de algo para evitar conflitos de edição. Isso é controle de versão.
Você não precisa disso para compartilhar um repositório git. Você sabe que existem soluções como gitosis, então use-as.