Teste permissões efetivas de arquivo para usuário

17

É possível testar permissões efetivas de um arquivo para um usuário específico?

Eu normalmente faço isso por su user e, em seguida, acesso ao arquivo, mas agora quero testar isso em um usuário sem shell (ou seja, um usuário do sistema)

    
por dtech 21.04.2012 / 12:49

4 respostas

21

O comando sudo pode executar qualquer coisa como um usuário específico com a opção -u . Em vez de se preocupar com shells, tente cat (ou execute, qualquer que seja) seu arquivo como seu usuário de destino:

$ sudo -u apache cat .ssh/authorized_keys 
cat: .ssh/authorized_keys: Permission denied
    
por 21.04.2012 / 18:53
17

Eu achei conveniente usar em scripts algo como

 sudo -u &ltuser&gt test -r &ltfile-to-test&gt && ...
    
por 10.06.2014 / 12:35
8
sudo -u <user> test -r <file-to-test>; echo $?

A parte echo $? emitirá o status de saída do teste.

Lembre-se apenas de que a saída será 0 se a operação foi bem-sucedida! Ou diferente de zero, por exemplo, 1 , se não.

Assim como @o comentário de Thomas em @ user72025 responda, use man test para obter mais testes de operação, como test -x para testar a executabilidade, test -w para gravabilidade, etc.

    
por 26.09.2014 / 02:32
4

Descobri que você pode usar su -s <shellname> <username> para inserir um shell específico como um usuário específico. Você pode testar as permissões de arquivo como de costume.

Por exemplo:

su -s /bin/bash Debian-exim
touch /etc/exim4/exim4.conf.template
    
por 21.04.2012 / 13:26