Sie können überprüfen, warum (es ist anders), indem Sie ausführen sudo sudo -V
.
Zum Beispiel unter Linux:
$ sudo sudo -V | grep PATH
Value to override user's $PATH with: /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
Hinweis: Bei macOS / BSD, nur laufen: sudo sudo -V
.
Die obige Liste ist aufgrund des Standardsicherheitsrichtlinien-Plugins in einigen Linux-Distributionen eingeschränkt.
Dies wird weiter erläutert in man sudoers
:
Wenn die secure_path
Option gesetzt ist, wird ihr Wert für die PATH
Umgebungsvariable verwendet.
secure_path
- Pfad, der für jeden Befehl verwendet wird, der von sudo ausgeführt wird. Wenn Sie den Leuten, die sudo ausführen, nicht vertrauen, dass sie eine vernünftige PATH
Umgebungsvariable haben, können Sie diese verwenden.
Eine andere Verwendung ist, wenn Sie möchten, dass der „Stammpfad“ vom „Benutzerpfad“ getrennt ist. Benutzer in der durch die exempt_group
Option angegebenen Gruppe sind nicht betroffen secure_path
. Diese Option ist standardmäßig nicht aktiviert.
Wenn dies der Fall ist, können Sie dies ändern, indem Sie sudo visudo
die Konfigurationsdatei ausführen und bearbeiten und Ihren secure_path
(durch getrennten :
) zusätzlichen Pfad ändern oder Ihren Benutzer hinzufügen exempt_group
(damit Sie nicht von den secure_path
Optionen betroffen sind ).
Oder PATH
Sie können Folgendes ausführen, um die temporäre Gültigkeit des Benutzers zu beenden:
sudo env PATH="$PATH" my_command
und Sie können das überprüfen, indem Sie:
sudo env PATH="$PATH" env | grep ^PATH
Siehe auch: Wie macht man sudo
Konserven $PATH
?
Ein weiterer Grund, warum die Umgebung anders sein könnte sudo
, ist, dass env_reset
in Ihrer sudoers
Datei möglicherweise die Option aktiviert ist . Dadurch werden Befehle in einer neuen, minimalen Umgebung ausgeführt.
So können Sie die env_keep
Option (aus Sicherheitsgründen nicht empfohlen ) verwenden, um die Umgebungsvariablen Ihres Benutzers zu erhalten:
Defaults env_reset
Defaults env_keep += "PATH PYTHONPATH"