Réponses:
La sudo
commande peut exécuter n'importe quoi en tant qu'utilisateur particulier avec l' -u
option. Au lieu de vous soucier des shells, essayez simplement cat
(ou exécutez, peu importe) votre fichier en tant qu'utilisateur cible:
$ sudo -u apache cat .ssh/authorized_keys
cat: .ssh/authorized_keys: Permission denied
J'ai trouvé pratique à utiliser dans les scripts quelque chose comme
sudo -u <user> test -r <file-to-test> && ...
man test
pour plus de détails
sudo -u <user> test -r <file-to-test>; echo $?
La echo $?
pièce affichera l'état de sortie du test.
N'oubliez pas ici que la sortie se fera 0
si l'opération a réussi! Ou différent de zéro, par exemple 1
, sinon.
Comme le commentaire de @ Thomas sur la réponse de @ user72025, utilisez man test
pour obtenir plus de tests de fonctionnement, comme test -x
pour tester l'exécutabilité, l' test -w
écriture, etc.
J'ai trouvé que vous pouvez utiliser su -s <shellname> <username>
pour entrer un shell spécifique en tant qu'utilisateur spécifique. Vous pouvez ensuite tester les autorisations de fichier comme d'habitude.
Par exemple:
su -s /bin/bash Debian-exim
touch /etc/exim4/exim4.conf.template
cat
n'est probablement pas le meilleur choix ... si vous testez un gros fichier ou un fichier binaire ...