Możesz sprawdzić, dlaczego (jest inaczej), uruchamiając sudo sudo -V
.
Na przykład w systemie 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
Uwaga: Na MacOS / BSD, wystarczy uruchomić: sudo sudo -V
.
Powyższa lista jest ograniczona z powodu domyślnej wtyczki zasad bezpieczeństwa w niektórych dystrybucjach Linuksa.
Jest to wyjaśnione dalej w man sudoers
:
Jeśli secure_path
opcja jest ustawiona, jej wartość zostanie wykorzystana dla PATH
zmiennej środowiskowej.
secure_path
- Ścieżka używana dla każdego polecenia uruchamianego z sudo. Jeśli nie ufasz, że osoby uruchamiające sudo mają rozsądną PATH
zmienną środowiskową, możesz chcieć tego użyć.
Innym zastosowaniem jest, jeśli chcesz, aby „ścieżka katalogu głównego” była oddzielna od „ścieżki użytkownika”. Użytkownicy w grupie określonej przez exempt_group
opcję nie mają wpływu secure_path
. Ta opcja nie jest domyślnie ustawiona.
W takim przypadku możesz to zmienić, uruchamiając sudo visudo
i edytując plik konfiguracyjny i modyfikując secure_path
(dodając dodatkową ścieżkę oddzieloną przez :
) lub dodając użytkownika do exempt_group
(aby secure_path
opcje nie wpłynęły na ciebie ).
Lub w celu przejścia użytkownika PATH
tymczasowego, możesz uruchomić:
sudo env PATH="$PATH" my_command
i możesz to sprawdzić poprzez:
sudo env PATH="$PATH" env | grep ^PATH
Zobacz także: Jak sudo
zachować $PATH
?
Innym powodem, dla którego środowisko może być inne sudo
, jest to, że możesz mieć env_reset
włączoną opcję w swoim sudoers
pliku. To powoduje, że polecenia są wykonywane w nowym, minimalnym środowisku.
Możesz więc użyć env_keep
opcji (niezalecanej ze względów bezpieczeństwa ), aby zachować zmienne środowiskowe użytkownika:
Defaults env_reset
Defaults env_keep += "PATH PYTHONPATH"