Testen Sie die effektiven Berechtigungen der Datei für den Benutzer

24

Ist es möglich, die effektiven Berechtigungen einer Datei für einen bestimmten Benutzer zu testen?

Normalerweise mache ich das su userund greife dann auf die Datei zu, aber ich möchte dies jetzt auf einem Benutzer ohne Shell (dh einem Systembenutzer) testen.

dtech
quelle

Antworten:

23

Der sudoBefehl kann alles als ein bestimmten Benutzer mit der ausführen -uOption. Anstatt sich Gedanken über Shells zu machen, versuchen Sie einfach cat, Ihre Datei als Zielbenutzer auszuführen:

$ sudo -u apache cat .ssh/authorized_keys 
cat: .ssh/authorized_keys: Permission denied
ckhan
quelle
catist wahrscheinlich nicht die beste Wahl ... Sie testen eine große Datei oder eine Binärdatei ...
Alexis Wilke
24

Ich fand es praktisch, in Skripten so etwas wie zu verwenden

 sudo -u <user> test -r <file-to-test> && ...
user72025
quelle
1
beste Antwort, da Sie auf lesbare (-r), beschreibbare (-w) und ausführbare (-x) Dateien testen können, ohne die Datei tatsächlich zu ändern / zu erstellen. man testFür weitere Informationen
Thomas
12
sudo -u <user> test -r <file-to-test>; echo $?

Das echo $?Teil gibt den Ausgangsstatus des Tests aus.

Denken Sie daran, dass die Ausgabe erfolgt, 0wenn die Operation erfolgreich war! Oder ungleich Null, z 1. B. wenn nicht.

Verwenden Sie @ Thomas 'Kommentar zur Antwort von @ user72025, man testum mehr Operationstests test -xzu erhalten, um die Ausführbarkeit, die test -wBeschreibbarkeit usw. zu testen .

Tyler Collier
quelle
1
Für mich ist dies die hilfreichste Antwort. Das von user72025 war knapp, aber ich hatte keine Ahnung, was das Ergebnis war. Sie haben das klargestellt. Vielen Dank. Voting up.
Inspirednz
6

Ich habe festgestellt, dass Sie su -s <shellname> <username>eine bestimmte Shell als bestimmten Benutzer eingeben können . Anschließend können Sie die Dateiberechtigungen wie gewohnt testen.

Z.B:

su -s /bin/bash Debian-exim
touch /etc/exim4/exim4.conf.template
dtech
quelle
Sehr interessante Option.
Alex