Beim Versuch, einige Umgebungsvariablen beim Ausführen an die neue Umgebung weiterzuleiten, tritt der folgende Fehler auf sudo
:
sudo: sorry, you are not allowed to preserve the environment
Einige Informationen, die beim Debuggen hilfreich sein können:
[deploy@worker1 ~]$ sudo -l
Matching Defaults entries for deploy on this host:
requiretty, !visiblepw, always_set_home, env_reset, env_keep="COLORS DISPLAY HOSTNAME HISTSIZE INPUTRC KDEDIR LS_COLORS", env_keep+="MAIL PS1 PS2 QTDIR USERNAME LANG LC_ADDRESS LC_CTYPE",
env_keep+="LC_COLLATE LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES", env_keep+="LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE", env_keep+="LC_TIME LC_ALL LANGUAGE LINGUAS _XKB_CHARSET
XAUTHORITY", secure_path=/sbin\:/bin\:/usr/sbin\:/usr/bin, env_keep+="GIT_WORK_TREE GIT_DIR", !requiretty
User deploy may run the following commands on this host:
(ALL) NOPASSWD: /usr/bin/git, (ALL) /etc/init.d/httpd*, (ALL) /sbin/service, (ALL) /usr/bin/make, (ALL) /bin/echo
Mein Laufbeispiel:
[deploy@worker1 ~]$ export GIT_DIR="/home/ashinn/testing"
[deploy@worker1 ~]$ sudo -E sh -c 'echo "$GIT_DIR"'
sudo: sorry, you are not allowed to preserve the environment
Meine sudoers.d-Datei für diese spezielle Konfiguration:
Defaults:deploy env_keep += "GIT_WORK_TREE GIT_DIR", !requiretty
deploy ALL=(ALL) NOPASSWD: /usr/bin/git, /etc/init.d/httpd*, /sbin/service, /usr/bin/make, /bin/echo
Ich habe auch versucht !env_reset
, die Standardeinstellungen hinzuzufügen , und es schlägt immer noch mit dem gleichen Fehler fehl. Ich habe das Gefühl, dass ich etwas Offensichtliches vermisse und ein zweites Paar Augen brauche. Was vermisse ich hier?
sudo
(option(s))
echo $GIT_DIR
sudo
$GIT_DIR
sudo
sudo printenv GIT_DIR
sudo env | grep GIT_DIR
sudo sh -c 'echo "$GIT_DIR"'
Antworten:
Sie können das
SETENV
"Tag" in Ihrersudoers
Datei verwenden, wie in:Oder, um es mit NOPASSWD zu kombinieren:
Relevanter Auszug aus dem Sudoer-Man:
quelle
Geben Sie die
-E
Option nicht an. Wenn-E
Sie sagen, dass alle Umgebungsvariablen für den Benutzerdeploy
erhalten bleiben sollen, nicht nurGIT_DIR
Laufen
sudo echo $GIT_DIR
sollte funktionieren, da SieGIT_DIR
derenv_keep
Liste hinzugefügt habenquelle