Wydaje się, że dzieje się tu coś zaskakującego…
Backticks oczywiście robią to, co wyjaśnili inni, rozwijając się whoami
przed wywołaniem „sudo” i pozostawiając backticks off zwracają „root”, zgodnie z oczekiwaniami.
Ale warto zrozumieć, co tak naprawdę dzieje się z sudo (8). Więc faktycznie spojrzałem na stronę podręcznika!
„Rzeczywisty i skuteczny identyfikator UID i GID są ustawione tak, aby pasowały do docelowych użytkownika…”
Wygląda więc na to, że obserwowane zachowanie nie ma nic wspólnego z różnicą między efektywnym a rzeczywistym identyfikatorem użytkownika.
Ilustruje to także wykonanie „sudo printenv” i porównanie do samego „printenv”, co mnie trochę zaskoczyło. Pokazuje, że [i] niektóre [/ i] wyeksportowane zmienne są dostępne, a inne nie: zgłasza HOME, ŚCIEŻKA, PS1, SHELL, TERM i EDYTORA wywołującego użytkownika, ale nie inne, takie jak MANPATH, CVSROOT, LD_LIBRARY_PATH lub ENV. Wydaje się to nieco dziwne, ponieważ może powodować, że programy zachowują się inaczej niż jako pierwotny użytkownik lub jako root.
whoami
? Po prostu powiedz sudo whoami .. zwraca root