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.
Simplesmente faça o seguinte:
Agora todos no
teamA
grupo podem fazer tudo por dentro/src/teamA
A mágica é o bit sgid (definir identificação do grupo) no diretório
fonte
Se você deseja que os usuários possam acessar arquivos em uma pasta compartilhada (por exemplo, pessoas diferentes fazem logon na mesma máquina em momentos diferentes e precisam acessar os mesmos arquivos), pode usar
bindfs
para criar um diretório compartilhado.Ele permite que vários usuários locais leiam e gravem (criem, excluam, renomeiem, modifiquem ...) todos os arquivos (incluindo os recém-criados) de um diretório compartilhado e seus subdiretórios. Cada usuário verá os arquivos e pastas (incluindo os recém-criados) como pertencentes a eles.
Resumidamente, você corre
para tornar / home / shared disponível para user1, user2 e user3.
Instruções
Consulte Bindfs-SharedDirectoryLocalUsers (documentação do Ubuntu) para obter instruções completas, incluindo a configuração permanente (sempre que você liga o computador). Uso isso em minha própria máquina para vários diretórios, cada um com diferentes grupos de compartilhamento (uma pasta está disponível para todas as contas, outra apenas para contas comerciais, outra apenas para contas pessoais).
Da postagem:
Listas de controle de acesso (ACLs)
A documentação observa:
Veja a resposta de Gilles para mais detalhes.
fonte
Você pode combinar a solução do shellholic com um trabalho cron que atualiza o gid para todos os arquivos nessa pasta a cada 15 segundos ou algo semelhante.
fonte