Réponses:
La sudocommande peut exécuter n'importe quoi en tant qu'utilisateur particulier avec l' -uoption. 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 testpour 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 0si 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 testpour obtenir plus de tests de fonctionnement, comme test -xpour 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
catn'est probablement pas le meilleur choix ... si vous testez un gros fichier ou un fichier binaire ...