Gibt es einen Befehl, um meinen Benutzernamen zu sehen, sobald sudo zum Rooten aufgefordert wurde?

7

Ich habe Sudo-Rechte an einer Redhat-Box. sudo su -Gibt es Befehle, die ich ausführen kann, um zu sehen, von welchem ​​Benutzernamen ich verklagt wurde, wenn ich Root in einer Shell werden muss?

Michael Campbell
quelle

Antworten:

8

Der übergeordnete Prozess der Shell ist su, daher müssen Sie den übergeordneten Prozess des Benutzers herausfinden, der ausgeführt suwird:

ps -o user= $(ps -o ppid= $PPID)

Aber Sie sollten es nicht tun, sudo su -wenn Ihre Version von sudo nicht zu alt ist sudo -i. Sudo setzt die Umgebungsvariable SUDO_USERauf den Namen des Benutzers, der sudo ausgeführt hat. Sie werden es nicht sehen, sudo su - weil es su -die Umgebung scheuert.

$ sudo -i
# echo $SUDO_USER
gilles
Gilles 'SO - hör auf böse zu sein'
quelle
Und sudo -sigibt Ihnen eine Shell mit SUDO_USERSet.
Bahamat
@ Bahamat: Gibt sudo -idir nur eine Muschel. In der Tat:sudo: you may not specify both the `-i' and `-s' options
Gilles 'SO- hör auf böse zu sein'
Ja, du hast Recht. Das war nicht in der Manpage, aber wenn es ausgeführt wird, ist das die Nachricht, die herauskommt.
Bahamat
3

Wenn Sie den Befehl whoamiausführen, erhalten Sie ungefähr Folgendes zurück:

gladimdim tty2        2011-01-27 23:54 (:0)

In Fettdruck ist "gladimdim" der Benutzer, der ursprünglich am System angemeldet war.

gladimdim
quelle
who am iist kein Befehl auf meinem System und whoamigibt "root" zurück
phunehehe
Auf meinem System funktioniert es: whoamiwho am i
Gibt
@rubik Das liegt nur daran, dass es der whoBefehl ist.
Chris Down
Ich habe versucht , diese Frage zu bearbeiten , um zu sagen whoamistatt who am i. who am iist keine zuverlässige Lösung, da sie standardmäßig nicht auf vielen Systemen installiert ist, sodass Shell-Skripte möglicherweise fehlschlagen. Es macht mir nichts aus, wenn Sie die Bearbeitung nicht genehmigen. Es ist eine Frage der "persönlichen Präferenz".
William Edwards
1

Ich denke er meinte:

$ who -am i

die (abhängig) wie folgt analysiert werden könnte:

$ who -am

Das "-a" listet alle aktuell angemeldeten Benutzer auf und "-m" filtert dies nur auf diejenigen Benutzer (sollte es wirklich einer sein), die mit STDIN verknüpft sind. Das heißt, es sagt Ihnen, bei wem angemeldet ist Ihr Terminal. Das ist was du suchst.

$ who -am
user84775
quelle