Kiedy uruchamiam sudo, co dokładnie dzieje się z moim środowiskiem?
Kiedy uruchamiam sudo command
, wydaje się, że nie widzi środowiska mojego lub roota. Na przykład moja ścieżka do obu zawiera /usr/local/bin
, ale jeśli spróbuję uruchomić jeden z programów bez pełnej ścieżki, nie powiedzie się.
Myślałem, że sudo działa jako root, a więc mam środowisko roota. Czy istnieje inny sposób, w jaki bash działa w trybie sudo niż w rootie lub moim normalnym użytkowniku?
EDYTOWAĆ:
sudo -i
Ostatnio używam , ale ostatnio powoduje problemy, ponieważ mój bieżący katalog roboczy jest ustawiony na /root
. Jest to zgodne z oczekiwaniami (trochę), ale nadal nie rozumiem, dlaczego sudo nie rozpoznaje moich plików wykonywalnych /usr/local/bin
.
EDYTOWAĆ:
Korzystam z Fedory 15.
źródło
PATH
, a czasem nie jest łatwo ustalić, kto zastąpi go jako ostatni. Może to być jakieś ustawienie systemowe (np. W PAM), samo sudo lub kolejny skrypt profilu.Odpowiedzi:
Nie wiem o domyślnych ustawieniach w Fedorze, ale w
sudo
domyślnych ustawieniach Debiana jest użyciesecure_path
opcji z domyślną wartością/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/X11R6/bin
.Oznacza to, że ścieżka jest zmieniana na tę wartość przy każdym użyciu
sudo
; ale kiedy używaszsudo -i
, ścieżka jest później zmieniana przez pliki RC użytkownika root.źródło
secure_path
opcji. Ustawienie domyślne nie obejmowało/usr/local/bin
mojej instalacji. Dzięki, to naprawdę pomogło wyjaśnić sprawę!Możesz to łatwo sprawdzić za pomocą takich rzeczy
Porównaj dane wyjściowe z
I rzeczy takie jak
W ten sposób możesz spróbować dowiedzieć się, czego brakuje w konfiguracji.
źródło
/usr/local/bin
nie ma go w mojej sudo env, ale jest w mojej root env i env użytkownika. Dlaczego to?root
, zgodnie z oczekiwaniami. Co może powodować, że moja sudo env będzie inna niż moja root env?/usr/local/bin
dodaję ścieżkę roota (niestety musiałem to zrobić ręcznie)?Przez
sudo -i
Polecenie symulować początkowy logowania. W moim systemie Debian stwierdza również, że:źródło
Można regulować
sudo
„senv_keep
parametr na toPATH
, choć należy pamiętać, implikacje zabezpieczeń robić.... uruchomi twój
$EDITOR
, wtedy możesz wprowadzić zmiany wDefaults env_keep =
... odpowiednio.Możesz także dodać / usr / local / bin do ścieżki systemu, dodając pliki
/etc/profile.d
.na przykład:
źródło
sudo
ma specjalną obsługę,PATH
więc nie powinieneś tego robić.