Es scheint, als sudo
würde sudo -u $user
die Umgebung von root immer noch benutzt, wenn man das Programm herunterlädt . Wie kann ich sudo
die Benutzerumgebung nutzen? als spezieller hinweis haben nicht alle benutzer, bei denen ich dies verwenden werde, login shells.
19
# whoami => root # sudo -u user whoami => user
sudo -u user
ist analog zumsu user
Umschalten des Env in Su, das Sie verwenden müssensu - user
-u
sie ignorieren auch Gruppen ... Ich habe etwas von root aus versucht (mit sudo -u down) und es hat anscheinend funktioniert, anscheinend nicht für den Benutzer. .. also muss ich sicherstellen, dass ich Befehle auf eine Art und Weise ausführe, die alle Einschränkungen und Umweltprobleme mit sich bringt.Antworten:
Versuchen
sudo -i -u $user
quelle
/etc/passwd
:( haben, aber ich schätze ...-E
als wäre dies diejenige, die die Umgebung schützt, dh alle Umgebungsvariablen usw. sind vorhanden, obwohl sie immer noch nicht festgelegt sindPATH
undLD_LIBRARY_PATH
für den aufrufenden Benutzer gelten.$SUDO_USER
kann verwendet werdenman sudoers
on Debian erwähnt eine andere Möglichkeit. Sie sind sich nicht sicher, welchen Weg Sie einschlagen möchten, aber Ihre Frage klingt so, als hätten Sie dieenv_reset
Option/etc/sudoers
- das Gegenteil ist im Grunde dieenv_keep
Liste. Um das richtige zu setzenHOME
, können Sie die-H
Option verwenden, umsudo
direkt oder, erneut insudoers
, mit deralways_set_home
Option.Alternativ können Sie auch
env_file
eine genaue Umgebung angeben, die Sie übergeben möchten. Ich halte es jedoch für das Beste, wenn Sie sich dieenv_*
Optionen von ansehenman sudoers
, denn Sie/etc/sudoers
kontrollieren alles und darauf sollten Sie sich konzentrieren.Hier ist ein Teil des Kontexts, in dem ich
env_reset
in meinersudoers
Datei verwende:quelle
Beim Sudo werden Umgebungsvariablen nicht beibehalten.
In meinem Fall verwende ich hier-Dokument .
Sie legen Ihre Handlungen beispielsweise
my_script.sh
in Ihr HIER-DOKUMENT:Sie sollten Variablen nicht direkt hier einfügen, da sie von Ihrem aktuellen Benutzer interpretiert würden.
Wenn
$MY_VAR
für den Benutzer, der das Skript ausführt, nicht festgelegt ist, wird es nicht festgelegt.Ihre Variable muss in Ihren Skripten aufgerufen werden, oder Sie müssen sie mit Escapezeichen versehen
\
.Z.B.
Hier
$MY_VAR
wirdsome_user
kontextuellen Wert haben.quelle
su - some_user
stattsu -u some_user
.