Warum wird beim Wechseln des Benutzers su <username>
und anschließenden Ausführen who am i
der vorherige Benutzer ausgegeben, als den ich angemeldet war, und nicht der Benutzer, zu dem ich gewechselt habe?
9
Sie führen wahrscheinlich den falschen Befehl aus.
who
soll zeigen, wer angemeldet ist, dh welchem Benutzer das Terminal gehört. Es gibt eine Zeile wie folgt zurück:
ckhan pts/1 2012-11-05 03:06 (c-21-13-25-10.ddw.ca.isp.net)
whoami
soll Ihnen zeigen, wie die effektive Benutzer-ID der Person lautet, die sie ausführt. Es gibt nur einen einzigen Namen wie diesen zurück (und entspricht dem Ausführen id -un
):
ckhan
Ich denke, Sie haben möglicherweise buchstäblich who am i
am Terminal getippt , das who
mit zwei ignorierten Argumenten ( am
, i
) lief.
Siehe man who
und man whoami
für weitere Details.
am
undi
werden nicht ignoriert, werden sie sogar von POSIX angegeben: „In der POSIX locale, begrenzen die Ausgabe zu der Beschreibung des rufenden Benutzer, das entspricht der-m
Option.“Gemäß meiner Ubuntu 12.04.2-Manpage für den Befehl 'who' ist 'who am i' (oder who mit zwei beliebigen Argumenten) identisch mit 'who -m' und sollte Ihnen den mit STDIN verknüpften Hostnamen und Benutzer geben. Ich bekomme jedoch keine Ausgabe mit 'wer bin ich'. Entweder ist die Manpage falsch oder der Befehl hat einen Fehler. Unabhängig davon, wie zuvor von ckhan beantwortet, gibt Ihnen der Befehl 'whoami' den Benutzernamen für Ihre effektive Benutzer-ID. Zumindest in Ubuntu 12.04.2 gibt Ihnen weder ID noch "Wer bin ich" oder "Whoami" nur den Benutzernamen der Person, die am aktuellen Terminal angemeldet ist. Als Workaround können Sie dies erreichen mit:
quelle
Problemumgehung :
das funktioniert als ersatz von
who am i | awk '{print $1}'
. Erklärung unten:Auf vielen Systemen
who am i
entspricht "who -m
" " ". Das Problem hierbei ist, dass bei einigen Terminals "who -m
" nichts zurückgibt!Beispiel 1 läuft von einem xfce4-Terminal aus
aber Beispiel # 2 von einem Gnom-Terminal (gleicher Computer, gleiche Befehle)
Dies scheint eine Folge davon zu sein, dass das Gnome-Terminal keine utmp-Einträge hinzufügt…
quelle
stat
stattdessen:stat -c '%U' "$(tty)"
Sie sollten wahrscheinlich auch nicht analysierenwho am i
, da Benutzernamen in einigen seltenen Fällen Leerzeichen enthalten können.