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

21

CentOS 6.4

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

Por exemplo, digamos que os usuários bob e joe pertençam a um grupo chamado sales. Digamos também que eu 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 esse e quais privilégios de acesso têm precedência?

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

Ou o Linux aplica 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?

Mike B
fonte

Respostas:

15

Esse é um tópico amplo e um pouco demais para abordar aqui. Vou encaminhá-lo para o whitepaper POSIX Access Control Lists no Linux, elaborado por Andreas Grünbacher, do SuSE Labs. Ele faz um bom trabalho ao abordar o assunto e analisá-lo para que você entenda como as ACLs funcionam.

Seu exemplo

Agora vamos dar uma olhada no seu exemplo e detalhá-lo.

  • grupo (vendas)
  • membros do grupo de vendas (bob, joe)

Agora vamos quebrar 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 o Usuário, Grupo e Outros bits. Então, vamos retirá-los primeiro.

user:: r--
group::r--
other::---

Eles normalmente se pareceriam com isso 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 possui o arquivo e qual é o grupo com estas linhas da ACL:

# owner: jane
# group: executives

Então agora vamos ao âmago da questão das ACLs:

user:bob:rw-
user:joe:rwx
group:sales:rwx

Isso está mostrando que o usuário bobpossui rw, enquanto o usuário joepossui rwx. Há também um grupo que também tem rwxsimilar ao joe. Essas permissões são como se a coluna do usuário em nossa ls -lsaída tivesse 3 proprietários (jane, bob e joe) e 2 grupos (executivos e vendas). Não há outra distinção além de serem ACLs.

Por fim, a masklinha:

mask::rwx

Nesse caso, não estamos mascarando nada, está bem aberto. Portanto, se os usuários bob e joe tiverem estas 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

Então, suas permissões efetivas seriam assim:

user:bob:rw-    # effective:r--
user:joe:rwx    # effective:r-x

Esse é um mecanismo poderoso para restringir as permissões concedidas de maneira geral.

NOTA: O proprietário do arquivo e outras permissões não são afetadas 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

slm
fonte