Na verdade, é bastante fácil. A maioria das pessoas parece achar que precisam definir permissões de todos os arquivos em um determinado diretório, mas isso não é verdade. Apenas o diretório de nível superior fará:
chown :team /path/to/dir
chmod 2770 /path/to/dir
Primeiro, definimos o proprietário do grupo para o grupo team
, que você diz já existir e contém as pessoas que devem poder acessar o diretório correto. Em seguida, definimos as permissões para "definir o ID do grupo" no diretório (para que todos os arquivos criados abaixo desse diretório também pertençam ao team
group; não são estritamente necessários, mas acho que é um lembrete útil), e conceda permissões completas a qualquer pessoa no grupo team
, bem como ao proprietário do diretório. Qualquer pessoa não nesse grupo terá others
permissão, que está vazia aqui.
O resultado dessa configuração será que, para qualquer pessoa que não esteja no grupo team
, mesmo fazendo um ls
nesse diretório, obterá Permission denied
. As pessoas que são um membro do grupo correto, no entanto, poderão ler e escrever nesse diretório, desde que nenhum arquivo seja definido individualmente para permissões de arquivo erradas. Se nenhum desses arquivos deve ser protegido contra a escrita, corrija as permissões agora:
chmod -R g+rw /path/to/dir
find /path/to/dir -type d -print0 | xargs -0 chmod g+x
Na ausência de ACLs, definir as permissões para arquivos futuros (ou seja, recém-criados) não é algo que você possa fazer definindo criativamente os bits de permissão; os usuários precisam definir sua umask. Você pode fazer isso por meio de uma linha em /etc/profile
:
umask 002
É importante definir isso, porque o padrão em muitas distribuições será 022 (permitindo ler, mas não gravar, permissões para membros do grupo), 077 (permitindo nada para outros usuários), ou 027 (permitindo ler, mas não escrever, agrupar; e nada para os outros). Nenhuma dessas opções é o que você quer.
Se você tiver requisitos diferentes para partes diferentes de seu sistema de arquivos, ou se quiser garantir que as pessoas não atrapalhem as coisas brincando com sua umask individualmente, use as ACLs padrão:
find /path/to/dir -type d -print0 | xargs -0 setfacl -m d:g:team:rwx -m d:o:---
Depois de configurar tudo, realmente não importa se você usa SSHFS ou NFS. Se ainda assim não funcionar, provavelmente é melhor voltar com perguntas mais específicas