Wenn ich das Skript erstelle, das Folgendes /root/bin/whoami.sh
enthält:
#!/bin/bash
whoami
und dieses Skript wird von einem Benutzer mit einem ordnungsgemäß konfigurierten Sudo aufgerufen
root
Gibt es eine schnelle Möglichkeit, den tatsächlichen Benutzer in einem Skript zu ermitteln, oder muss ich auf Parameter zurückgreifen, die diesen Benutzernamen weitergeben?
who am i
ist hier die Antwort.who am i
istwho mom likes
. Deine Entscheidung.who
Gibt 2 Zeilen für mich zurück, die beide meinen Namen enthalten, undwho am i
keine. Irgendeine Hilfe?who am i
tut nichts, es scheint einfach zu seinwho
,who | awk '{print $1}'
funktioniert also wie erwartet;)awk
installiert haben, können Sie auch verwendencut
:who mom likes | cut -d' ' -f1
odersed
aus irgendeinem Grund:who mom likes | sed -n 's/^\([^ ]*\).*/\1/p'
Ich denke $ SUDO_USER ist gültig.
quelle
sudo env
zeigtSUDO_USER
,sudo echo $SUDO_USER
druckt aber nichts ...sudo echo $SUDO_USER
, bash wertet $ SUDO_USER aus, bevor sudo ausgeführt wird. Probieren Sie das in dieser Lösung veröffentlichte Skript aus, es funktioniert.echo ${SUDO_USER:-$USER}
, um sowohlsudo
als auch Nicht-Sudo-Laufen zu fangen . Aber Evans Antwortlogname
klingt einfacher$SUDO_USER
funktioniert nicht mitsudo su -
, aberlogname
immer.So erhalten Sie den Benutzernamen der Person, die das Skript aufgerufen hat, unabhängig davon, ob sudo oder nicht:
oder eine kürzere Version
quelle
user=${SUDO_USER:-$(whoami)}
oderuser=$(logname)
who am i | awk '{print $1}'
hat nicht für mich gearbeitet,who|awk '{print $1}'
wird aber den Job erfüllenquelle
Seltsamerweise unterscheidet das System zwischen echten und effektiven UIDs , aber ich kann kein Programm finden, das dies auf Shell-Ebene exportiert.
quelle
Mit
whoami
,who am i
,who
,id
oder$SUDO_USER
ist hier nicht richtig.Eigentlich
who
ist nie eine Lösung für die Frage, da nur die angemeldeten Benutzer aufgelistet werden, die Dutzende sein können ...In meinen Augen ist die einzige wertvolle Antwort die Verwendung von
logname
.Hoffe das hilft
rauben
quelle
Wenn es die UID ist, nach der Sie suchen (nützlich für Docker-Spielereien), dann funktioniert dies:
quelle