Esse é um tópico amplo e um pouco demais para ser abordado aqui. Vou encaminhá-lo para as Listas de Controle de Acesso POSIX no Linux whitepaper elaborado por Andreas Grünbacher, do SuSE Labs. Ele faz um bom trabalho de cobrir o assunto e decompô-lo para que você entenda como as ACLs funcionam.
Seu exemplo
Agora vamos dar uma olhada no seu exemplo e dividi-lo.
- grupo (vendas)
- membros do grupo de vendas (bob, joe)
Agora vamos detalhar as permissões no arquivo /home/foo/docs/foo.txt
. As ACLs também encapsulam as mesmas permissões com as quais a maioria das pessoas deve estar familiarizada no Unix, principalmente os bits Usuário, Grupo e Outros. Então vamos retirá-los primeiro.
user:: r--
group::r--
other::---
Normalmente, eles ficariam assim em um ls -l
:
$ ls -l /home/foo/docs/foo.txt
-r--r----- 1 jane executives 24041 Sep 17 15:09 /home/foo/docs/foo.txt
Você pode ver quem é o proprietário do arquivo e qual é o grupo com essas linhas da ACL:
# owner: jane
# group: executives
Agora, entramos no âmago da questão das ACLs:
user:bob:rw-
user:joe:rwx
group:sales:rwx
Isso mostra que o usuário bob
tem rw
, enquanto o usuário joe
tem rwx
. Há também um grupo que também tem rwx
semelhante a joe. Essas permissões são como se a coluna do usuário em nossa saída ls -l
tivesse 3 proprietários (jane, bob e joe), além de 2 grupos (executivos e vendas). Não há outra distinção além de serem ACLs.
Por fim, a linha mask
:
mask::rwx
Neste caso, não estamos mascarando nada, está totalmente aberto. Então, se os usuários bob e joe tiverem essas linhas:
user:bob:rw-
user:joe:rwx
Então essas são suas permissões efetivas. Se a máscara fosse assim:
mask::r-x
Em seguida, as permissões efetivas seriam assim:
user:bob:rw- # effective:r--
user:joe:rwx # effective:r-x
Este é um mecanismo poderoso para restringir permissões que são concedidas de forma global.
NOTA: O proprietário do arquivo e outras permissões não são afetados pela máscara de direitos efetivos; todas as outras entradas são! Portanto, com relação à máscara, as permissões da ACL são cidadãos de segunda classe quando comparadas às permissões tradicionais do Unix.