Jaka jest różnica między poleceniami „su -s” i „sudo -s”?

23

Jaka jest różnica między dwoma poleceniami superużytkownika, su -sa sudo -s?

Oba dają powłokę z dostępem do konta administratora.

Callum
źródło

Odpowiedzi:

30

W praktyce oboje uczynią cię superużytkownikiem. Robią jednak nieco inne rzeczy, na nieco inne sposoby.

Po pierwsze, su -przełącza cię do powłoki logowania, podczas sudo -sgdy nie. W praktyce często oznacza to, że zmienne środowiskowe nie zostaną przełączone rootna sudo -s. Pamiętaj, że możesz uruchomić tylko supo to, aby nie uzyskać powłoki logowania lub sudo -iuzyskać powłokę logowania [nie we wszystkich wersjach].

Po drugie, sui su -przełącznik do nowego użytkownika przez prośbą o uwierzytelnienie jako nowy użytkownik. sudo -soraz sudo -i(i po prostu zwykłe sudo foo) pozwalają uruchomić polecenie, dla którego masz wstępną autoryzację [patrz /etc/sudoers], być może prosząc o potwierdzenie aktualnego ID.

Jeśli chcesz być naprawdę słodki, możesz także uruchomić sudo su -, który poprosi o zalogowanie się jako root ( su -) prowadzony przez użytkownika root ( sudoczęść).

Jeśli użytkownik root jest zablokowany (np. W systemie Ubuntu), nie będzie można zalogować się jako użytkownik root su. W takim przypadku musisz użyć sudo -slubsudo -i

Mikeage
źródło
5
Warto również powiedzieć, że w wielu dystrybucjach sudonie ma domyślnych uprawnień dla zwykłych użytkowników. W tych systemach sujest to jedyna opcja.
Telemachus
12
su -s

Przełącza się na użytkownika (w tym przypadku root) i uruchomi wskazaną powłokę lub jedną z kilku innych metod określania powłoki. Jest to przydatne, jeśli chcesz używać zsh lub innej powłoki jako root bardzo szybko ... iz jakiegoś powodu nie używasz sudo.

sudo -s

Po prostu wykonuje powłokę za pomocą sudo, co dałoby ci root root. Możesz także przekazać do niej powłokę.

su -s jest starszy, znacznie starszy niż polecenie sudo -s. Domyślam się, że programista stara się maksymalnie ułatwić przejście na sudo.

Mark Turner
źródło
9

su to polecenie zmiany na innego użytkownika w celu uruchomienia powłoki lub wykonania określonego polecenia. Musisz uwierzytelnić się jako drugi użytkownik. Jeśli chcesz su do rootowania, potrzebujesz hasła roota.

sudo to polecenie do wykonania innego polecenia (opcjonalnie powłoki) jako inny użytkownik. Musisz uwierzytelnić się jako własny użytkownik . Zezwolenie na korzystanie z sudo (i konkretne rzeczy, które możesz z nim zrobić) są określone przez administratora w pliku sudoers.

Jeśli dasz komuś dostęp do su (na przykład podając mu hasło roota), może on zrobić z nim wszystko - uruchomić inne polecenia, otworzyć powłokę, zmienić hasło, zalogować się zdalnie przez ssh i tak dalej. Zasadniczo dajesz im dostęp do drugiego konta, a „su” jest tylko jedną rzeczą, którą mogą z tym zrobić.

sudo jest znacznie bardziej drobnoziarnisty. Możesz przyznać uprawnienia użytkownikowi lub grupie. Możesz zezwolić użytkownikowi lub grupie na sudo w określonych ramach czasowych (np. Od poniedziałku do piątku w godzinach od 9:00 do 17:00). Możesz określić konkretną listę poleceń, które mogą uruchamiać (np. Tylko / usr / local / bin / run_backup) lub możesz określić konkretnego użytkownika, któremu mogą uruchamiać polecenia (np. Www, backup, personel itp. ).

Oprócz swojej elastyczności, sudo jest lepszym rozwiązaniem we wszystkich przypadkach, ponieważ nie wymaga dostępu do niczego, czego użytkownik jeszcze nie ma. Jeśli dasz komuś dostęp do sudo, możesz go odwołać, usuwając jego linię z pliku sudoers lub usuwając go z grupy sudoers. Jeśli usuniesz ich konto, ich dostęp zniknie.

Jeśli podasz im hasło roota, nawet zakładając, że nie zrobią z nim nic nieprzyjemnego, będą go znali na zawsze. Jeśli masz wiele osób, które potrzebują dostępu do konta root w celu wykonania zadań administracyjnych, oznacza to albo zmianę wszystkich haseł użytkownika root, ilekroć ktoś odejdzie, albo założenie, że dostęp do twoich systemów jest pełny po twoim odejściu.

Dan Udey
źródło
dobre wyjaśnienie różnic między dwoma poleceniami su i sudo.
John aka hot2use
5
  • su zapyta cię o hasło użytkownika root .
  • sudo poprosi cię o podanie hasła (musisz to zrobić, aby uzyskać dostęp do sudo).
badp
źródło
2
Zasadniczo jest to domyślne zachowanie sudo, ale można je również skonfigurować tak, aby prosiło o hasło roota lub inne hasło.
theotherreceive
2

Z Wikipedii :

su (skrót zastępujący użytkownika lub przełącz użytkownika) to komenda uniksowa używana do uruchamiania powłoki innego użytkownika bez wylogowania.

Powiązana komenda o nazwie sudo wykonuje komendę jako inny użytkownik, ale przestrzega zestawu ograniczeń dotyczących tego, którzy użytkownicy mogą wykonywać, które komendy, jak inni użytkownicy (zazwyczaj w pliku konfiguracyjnym o nazwie / etc / sudoers, najlepiej edytowalnym przez komendę visudo). W przeciwieństwie do su, sudo uwierzytelnia użytkowników na podstawie własnego hasła, a nie hasła użytkownika docelowego (aby umożliwić przekazanie określonych poleceń określonym użytkownikom na określonych hostach bez dzielenia się między nimi hasłami i jednocześnie zmniejszając ryzyko jakichkolwiek nienadzorowanych terminali).

Yaakov Ellis
źródło
2

Jedną z rzeczy, które nie zostały w pełni wyjaśnione, jest to: to, którego można często używać, zależy od używanej dystrybucji i od tego, kto ją obsługuje. Jedno lub drugie ( sulub sudo) prawdopodobnie nie jest skonfigurowane do pełnego użycia domyślnie. Na przykład, jak wspomnieli niektórzy, OS X i Ubuntu wyłączają konto roota (su domyślnie ). Debian nie daje również zwykłym użytkownikom żadnych domyślnych uprawnień sudo. (We wszystkich tych systemach możesz zmienić te ustawienia domyślne, ale tylko wtedy, gdy masz na początku jakieś uprawnienia administracyjne. Przypuszczam, że mówimy o sytuacji innej niż serwer i administrujesz maszyną, ponieważ jesteśmy na SU niż SF, ale na wszelki wypadek.)

Na koniec, jeśli chcesz używać sudow bardziej szczegółowy sposób, powinieneś sprawdzić, man sudoersjak edytować plik / etc / sudoers . Jednak nigdy nie należy go edytować ręcznie. Użyj programu visudo - zapobiegnie to zapisywaniu zmian, chyba że są one co najmniej minimalnie rozsądne. Jest to świetne zabezpieczenie przed prostymi błędami, które mogą zablokować ci uprawnienia administratora twojego systemu.

Telemachus
źródło
1

W systemach, w których konto administratora jest wyłączone, takich jak Mac OS X, su nie będzie działać; sudo -sWola.

Wygląda też na to, że nie jest su -sdostępny, przynajmniej na moim komputerze.

jtbandes
źródło
Odwrotna jest często prawda. Oznacza to, że w wielu starszych dystrybucjach uniksowych zwykli użytkownicy nie mają domyślnych uprawnień, na podstawie sudoktórych (nawet nie zawsze są instalowane).
Telemachus
1

To wprowadzenie może ci pomóc. sujest skrótem od su root, i zachowujesz swoje prawa jako drugiego użytkownika na czas nieokreślony. Bardziej niebezpieczne, ale także wygodniejsze, jeśli wykonujesz wiele poleceń dostępu do konta root przez pewien czas.

Nikhil Chelliah
źródło
1

su po prostu utworzy nową powłokę logowania z innymi uprawnieniami użytkownika (logowanie). sudo tymczasowo zezwoli na wykonanie polecenia przy użyciu określonego użytkownika. W niektórych systemach UNIX, takich jak FreeBDS, nie ma opcji „-s”.

hendrasaputra
źródło