Ich versuche herauszufinden, ob id -r
die UID oder der Benutzername des Benutzers, der sich beim System angemeldet hat, trotz aller su
's oder sudo
's ausgedruckt wird. Ich bin daran interessiert, dies zu tun, damit ich die Leute etwas stärker zur Verantwortung ziehen und die Skriptfunktion entsprechend anpassen kann (d. h.: Sie geben ein sudo für ein Skript aus und es ruft Informationen aus dem Home-Verzeichnis des angemeldeten Benutzers ab).
Mir sind sudo
Sets klar SUDO_USER
, aber ich möchte mich nicht darauf verlassen, weil es eine Variable ist, die vom Benutzer geändert werden kann, und sie enthält nur den Benutzernamen des Benutzers, der das letzte Sudo ausgeführt hat (d. h. es wird sudo -i ; sudo -iu randomUser ; echo $SUDO_USER
„root“ statt des tatsächlichen Benutzers ausgegeben).
Weder in den Manpages noch in dem, was ich online finden kann, scheint ein Hinweis auf die ordnungsgemäße Verwendung dieses Befehls zu sein, und die offensichtlichen Permutationen funktionieren nicht:
[root@ditirlns03 ~]# id -r
id: cannot print only names or real IDs in default format
[root@ditirlns03 ~]# id -r jadavis6
id: cannot print only names or real IDs in default format
[root@ditirlns03 ~]# id -r root
id: cannot print only names or real IDs in default format
An diesem Punkt bin ich mir noch nicht sicher, id -r
ob das ausgedruckt wird, was ich möchte, vor allem, weil ich nicht herausfinden kann, wie ich es dazu bringe, überhaupt etwas auszudrucken.
Antwort1
-r
muss in Verbindung mit einer anderen Option verwendet werden. Beispiel:
$ id -Gr
1000 4 24 27 30 46 109 124
Zitat aus der Manpage:
-r, --real
print the real ID instead of the effective ID, with -ugG
Antwort2
Das Programm und die Dokumentation weichen von den Standardverfahren ab:
Wenn -ugG
tatsächlich bedeutet -u|g|G[modifier]
(was es anscheinend tut), dann sollte es so dokumentiert werden. Die Autoren schienen nicht der Meinung zu sein, dass es den Aufwand wert war. Wenn der Benutzer jedoch dasselbe tut (wie Herr Davis es ganz vernünftigerweise versucht hat):
-ru
, eine legitime, intuitive Annahme, gibt einen Fehler zurück.
Apropos dieser Tipp:
stat -c "%U" $(tty)
Wahrscheinlich hätte es geholfen, zu erwähnen, dass es Shell-spezifisch ist.
Antwort3
- Drucken der Benutzer-ID:
id -u
- Ausdrucken des Benutzernamens:
id -u -n
Versuchen Sie, man id
sich mehr zu neigen.