Teste as permissões efetivas do arquivo para o usuário

24

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

Normalmente faço isso su useracessando o arquivo, mas agora quero testá-lo em um usuário sem shell (ou seja, um usuário do sistema)

dtech
fonte

Respostas:

23

O sudocomando pode executar qualquer coisa como um usuário específico com a -uopção Em vez de se preocupar com shells, tente cat(ou execute o que for) o seu arquivo como usuário alvo:

$ sudo -u apache cat .ssh/authorized_keys 
cat: .ssh/authorized_keys: Permission denied
ckhan
fonte
catnão é provavelmente a melhor escolha embora ... você está testando um grande arquivo ou um arquivo binário ...
Alexis Wilke
24

Achei conveniente usar em scripts algo como

 sudo -u <user> test -r <file-to-test> && ...
user72025
fonte
1
melhor resposta, pois você pode testar legível (-r), gravável (-w) e executável (-x) sem realmente modificar / criar o arquivo. man testpara mais detalhes
Thomas
12
sudo -u <user> test -r <file-to-test>; echo $?

A echo $?peça emitirá o status de saída do teste.

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

Como o comentário de @ Thomas na resposta de @ user72025, use man testpara obter mais testes de operação, como test -xtestar a executabilidade, test -wa gravabilidade etc.

Tyler Collier
fonte
1
Para mim, esta é a resposta mais útil. O do user72025 estava próximo, mas eu não fazia ideia do resultado. Você deixou isso claro. Obrigado. Votação.
Inspirado em
6

Eu 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
dtech
fonte
Opção muito interessante.
Alex