Você precisa de ACLs. Primeiro de tudo, seu sistema de arquivos deve ser montado com essa opção. Você pode remontá-lo com essa opção com:
# mount -o remount,acl /mount/point
Se você quiser esta opção estática (disponível após cada reinicialização):
# vi /etc/fstab
#...
/dev/partition /mount/point fstype defaults,acl 1 2
A parte importante aqui é ", acl" na coluna de opções. Tudo o mais que você pode ignorar.
Você precisa instalar o acl
package e usar setfacl
. Para definir padrões para um diretório (cada novo arquivo e subdir criado terá esses acls):
# setfacl -d -m u::rwx,u:user1:rx,g::rx,g:group1:rwx,g:group2:rx,o::- directory
- O usuário de criação tem permissões totais
- user1 leu apenas uma execução
- mesmo para o grupo padrão
- group1 leu o acesso para execução e gravação
- group2 ler e executar
- outros não têm chance aqui
Agora você deve definir permissões neste diretório (sim, apenas a opção strip -d):
# setfacl -m u::rwx,u:user1:rx,g::rx,g:group1:rwx,g:group2:rx,o::- directory
AVISO de que, se houver algum conteúdo nesse diretório, as permissões DEVEM ser explicitamente definidas. Você pode usar o find para configurar as permissões corretamente (lembre-se, os diretórios devem ter acesso de leitura e execução para as pessoas acessarem / listarem). Para começar com esse assunto, encontre ./ -type d-lhe subdiretórios na localização atual e o seguinte irá configurar as permissões padrão para cada uma destas:
# find ./ -type d -exec setfacl -d -m <acl> \{} \;
-
<acl>
deve ser o acl desejado -
\{} \;
é uma sequência de escape para encontrar.
Se você quiser verificar as permissões herdadas pelos arquivos e diretórios criados, use getfacl
Você também pode usar a opção -R | - recursiva, mas isso pode atrapalhar as permissões de arquivos e diretórios.