Tester les autorisations effectives du fichier pour l'utilisateur

24

Est-il possible de tester les autorisations effectives d'un fichier pour un utilisateur spécifique?

Normalement, je fais cela en su useraccédant au fichier, mais je veux maintenant le tester sur un utilisateur sans shell (c'est-à-dire un utilisateur système)

dtech
la source

Réponses:

23

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
ckhan
la source
catn'est probablement pas le meilleur choix ... si vous testez un gros fichier ou un fichier binaire ...
Alexis Wilke
24

J'ai trouvé pratique à utiliser dans les scripts quelque chose comme

 sudo -u <user> test -r <file-to-test> && ...
user72025
la source
1
meilleure réponse, car vous pouvez tester la lecture (-r), l'écriture (-w) et l'exécutable (-x) sans réellement modifier / créer le fichier. man testpour plus de détails
Thomas
12
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.

Tyler Collier
la source
1
Pour moi, c'est la réponse la plus utile. Celui de user72025 était proche, mais je n'avais aucune idée du résultat. Vous l'avez dit clairement. Merci. Voter.
inspirednz
6

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
dtech
la source
Option très intéressante.
Alex