Gibt es eine Möglichkeit, die Umgebungsvariable eines anderen Benutzers anzuzeigen? Ich möchte das als root machen, damit Berechtigungen wohl kein Problem darstellen.
Für den Benutzer selbst verwende ich echo $PATH
oder set | grep PATH
(oder set
wenn ich mich nicht an den Variablennamen erinnere). Was wäre eine ähnliche Anweisung für einen anderen Benutzer?
Für das, was es wert ist, bin ich auf Ubuntu Server 13.04.
echo $MAIL
, aber ich dachte, es könnte eine Verknüpfung geben..forward
)? Benutzer legen häufig einige Variablen in ihren.profile
oder anderen Konfigurationsdateien fest, und es gibt keine Möglichkeit, sie alle zuverlässig aufzulisten. Nochmals, welches Problem versuchen Sie zu lösen?Antworten:
Eine andere Option ist zu verwenden
env
. Führen Sie dies aus alsroot
:Beispielsweise
quelle
HOME=/root
. Das ist das Home-Verzeichnis von root, aber nicht mein Standard-Home-Verzeichnis. Wenn Sie wissen möchten, welche Umgebung ein bestimmter Benutzer bei der Anmeldung erhalten würde, müssen Sie die Startskripts der Anmeldeshell dieses bestimmten Benutzers ausführen (und beachten, dass sich seine Anmeldeshell möglicherweise von Ihrer Anmeldeshell unterscheidet).root
über den Login-Manager anmelden? Es funktioniert gut, wenn ich zu einem tty gehe und mich als anmelderoot
.env | grep HOME
und holeHOME=/home/uwe
; Ich führesu
undenv | grep HOME
bekomme dann noch einmalHOME=/root
, dann laufesudo -u uwe env | grep HOME
und bekomme ich nochHOME=/root
.xterm
anstelle meines normalen Terminals verwendet) und erhalte das erwartete Ergebnis.sudo
Setzt laut Handbuch die Variable HOME nur, wenn die-H
Option vorhanden ist oder der entsprechende Eintrag in/etc/sudoers
gesetzt ist. Unsere sudoers-Dateien scheinen sich zu unterscheiden. Auf jeden Fall ist es wahrscheinlich eine gute Idee, sie-H
hier und möglicherweise auch zu verwenden-i
.Für einen Benutzer können Sie folgendermaßen vorgehen:
Liste $ PATH aller Benutzer:
@Camil Staps
. ~/.profile
ist also ein Trick, den ich von meinem Lieblingsmenschen Peteris Krumins lerne. Er erklärte den Trick hier . Vielleicht hatte die spätere Bash-Version das Bauen mit OptionNON_INTERACTIVE_LOGIN_SHELLS
.quelle
$PATH
es funktioniert auch ohne das. ~/.profile;
Teil - wofür ist es?$PATH
auch ohne Sourcing~/.profile
, aber es ist mit ziemlicher Sicherheit nicht der Wert, den Sie möchten (= der Wert, den dieser Benutzer sehen würde, wenn er sich anmeldet). Selbst die Beschaffung~/.profile
ist nicht vollständig zuverlässig, da der Benutzer möglicherweise eine Shell verwendet, deren Startdatei sich von der unterscheidet~/.profile
.~/.profile
überhaupt ändert . Aber auf jeden Fall kann das Verhalten vonsudo
in ziemlich viel konfiguriert werden/etc/sudoers
(siehe meine Diskussion mit terdon). Wenn sich unsere Systeme also anders verhalten, liegt das wahrscheinlich an Unterschieden in den Konfigurationsdateien.Vom root können Sie
su -
zum Benutzer und dann zur Umgebungsvariablen greifen, die Sie sehen möchten:su - <username> -c 'echo $PATH'
quelle
runuser -l <username> -c "env | grep <var>" | cut -d '=' -f 2
für mich etwas in Ordnung ist. Wenn Sie nicht root sind, müssen Sie dem Befehl das Präfix "" voranstellensudo
.