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?
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?
Antworten:
Der übergeordnete Prozess der Shell ist su
, daher müssen Sie den übergeordneten Prozess des Benutzers herausfinden, der ausgeführt su
wird:
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_USER
auf 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
sudo -i
dir nur eine Muschel. In der Tat:sudo: you may not specify both the `-i' and `-s' options
Wenn Sie den Befehl whoami
ausfü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.
who am i
ist kein Befehl auf meinem System und whoami
gibt "root" zurück
whoami
who am i
who
Befehl ist.
whoami
statt who am i
. who am i
ist 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".
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
sudo -si
gibt Ihnen eine Shell mitSUDO_USER
Set.