Como as permissões da ACL são processadas e em qual ordem elas se aplicam a uma determinada ação do usuário?

19

CentOS 6.4

Estou tentando entender melhor como as regras ACL do sistema de arquivos são processadas e em que ordem as regras ACL se aplicam.

Por exemplo, digamos que usuários bob e joe pertençam a um grupo chamado vendas. Digamos também que tenho um documento de vendas com os seguintes detalhes:

[root@Maui ~]# getfacl /home/foo/docs/foo.txt
getfacl: Removing leading '/' from absolute path names
# file: home/foo/docs/foo.txt
# owner: jane
# group: executives
user:: r--
user:bob:rw-
user:joe:rwx
group:sales:rwx
group::r--
mask::rwx
other::---

Minha pergunta é: como as permissões são processadas em um exemplo como este e quais privilégios de acesso têm precedência?

Existe apenas uma pesquisa de cima para baixo e qualquer regra que corresponda primeiro é aquela que se aplica?

Ou o Linux reforça o acesso com base em qual é a regra mais específica para o usuário em questão? Ou talvez a regra mais restritiva e aplicável tenha precedência?

    
por Mike B 26.09.2013 / 00:50

1 resposta

13

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.

Referências

por 26.09.2013 / 03:29