Jak używasz sudo do uruchamiania polecenia jako rzeczywisty użytkownik root na Ubuntu? Początkowo myślałem, że to domyślne zachowanie sudo, dopóki nie uruchomiłem:
myuser@localhost:~$ sudo echo `whoami`
myuser
myuser@localhost:~$ sudo -u root echo `whoami`
myuser
Jest to jednak rodzaj zachowania, którego chcę, ale tylko w jednym wierszu:
myuser@localhost:~$ sudo su -
root@localhost:~# echo `whoami`
root
whoami
? Po prostu powiedz sudo whoami .. zwraca rootOdpowiedzi:
W rzeczywistości to nie uruchamiać je jako root. Ale to, co się z tobą dzieje, polega na tym, że tyki są oceniane przed
sudo
uruchomieniem, ponieważ są one potrzebne do oceny polecenia. Mówiąc wprost, dlaczego nie tylko to:Twoje
whoami
tyknięcia z tyłu są w rzeczywistości oceniane w podpowłoce jako bieżący użytkownik, dlatego widzisz, co robisz.źródło
0
(zero), która jest dokładnie to, co ludzie nazywają „root”. (sudo
sudo
robi. Ale po przeczytaniu odpowiedzi xyr wydaje się, że tak nie jest.whoami
Najpierw wykonywana jest podpowłoka ( ), a wynik (myuser
) jest wstawiany dosudo
polecenia; cosudo
widzi jestecho myuser
. Potraktuj to jako skrót do:źródło
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.
źródło
sudo pozwala na uruchomienie dowolnej komendy z uprawnieniami administratora, ale nie jako użytkownik root. Jest to przydatne, ponieważ dzięki tej konfiguracji wiele osób może mieć prawa roota, ale wszystkie rejestrowanie itd. Nadal wskazuje, kto dokonał zmian.
Ta konfiguracja jest lepsza niż udostępnianie haseł root. Jako taki zastąpił posiadanie użytkowników root w wielu dystrybucjach, w tym w Ubuntu.
Z drugiej strony sudo su sprawia, że jesteś rootem i dlatego nie powinien być używany.
Ta różnica wyjaśnia również twoje zaobserwowane (prawidłowe) zachowanie.
źródło
Sudo tymczasowo przyznaje kimkolwiek jesteś (pod warunkiem, że możesz sudo w pierwszej kolejności) uprawnienia na poziomie root.
Aby być rootem, musisz zalogować się jako root, który jest domyślnie zablokowany w Ubuntu.
Musisz być ostrożny, sudo nie jest rootem. Jeśli chcesz pokazać, że Fred wykonuje coś w stylu sudo, sprawdź zmienne środowiskowe SUDO, SUDO_COMMAND może być najbardziej użyteczny.
źródło