Dadas as permissões, proprietário e grupo de um arquivo, qual é o algoritmo que determina se um dado usuário pode ler / escrever / executar um arquivo? [duplicado]

1

Pelo que entendi, um arquivo tem três conjuntos de permissões: permissões de proprietário, permissões de grupo e permissões de todo mundo. Além disso, o arquivo foi atribuído a um proprietário e a um grupo.

Como o Linux combina todas essas informações para determinar as permissões que um determinado usuário tem sobre o arquivo?

Por exemplo, digamos que um arquivo seja:

--- rw- --x

Ou seja, o proprietário não tem permissões, o grupo pode ler / escrever e todos os demais podem ser executados somente.

Agora o usuário "Joe" acessa este arquivo. Dependendo de quais grupos Joe pertence e se Joe é ou não o proprietário deste arquivo, o que ele pode fazer com ele? Ele poderia executar o arquivo, porque x está definido para todos. Mas se "Joe" for o proprietário, x será proibido para o proprietário. O que tem precedência?

    
por becko 15.03.2016 / 17:49

3 respostas

3

As permissões do Linux são exclusivas umas das outras. Assim, as permissões do proprietário se aplicam somente ao proprietário, as permissões de grupo se aplicam a todos no grupo, exceto o proprietário, e outras permissões se aplicam a outras pessoas, ou seja, não são do grupo e do proprietário. Apenas uma dessas permissões será usada dependendo do UID e do GID do processo que tenta acessar o arquivo.

No seu caso, se Joe for o proprietário do arquivo, ele não poderá fazer nada, independentemente do grupo em que esteja. Se Joe não é o proprietário, mas pertence ao grupo, ele pode ler e escrever, mas não executar.
Se Joe não é proprietário nem parte do grupo, ele só pode executar.

    
por 15.03.2016 / 18:19
1

A resposta de Dmitry Grigoryev acima está correta. Como um mnemônico, é por isso que normalmente vemos permissões que são "mais largas à esquerda": u g o . Os modos comuns são 755, 644 e 600. É incomum, digamos, negar o proprietário, mas permitir o grupo. Tenho certeza de que nunca vi seu 061 em uso real.

    
por 15.03.2016 / 22:20
0

O algoritmo é assim:

  • se você for o proprietário do arquivo, as permissões do proprietário serão aplicadas
  • else, se você fizer parte de um grupo ao qual o arquivo pertence, aplicam-se permissões de grupo
  • else, se o sistema de arquivos tiver a ACL ativada e houver entradas da ACL mencionando você, elas serão aplicadas
  • else, aplicam-se "outras" permissões

No seu exemplo, se Joe for o proprietário do arquivo, ele não poderá fazer nada. Se o arquivo pertence a um grupo do qual Joe faz parte, ele poderá ler ou escrever, mas não executá-lo. Se nenhum for verdadeiro, Joe poderá executar, mas não ler ou escrever.

    
por 15.03.2016 / 18:25