Jakie są zalety sudo w porównaniu do su?

19

Jaką rzeczywistą korzyść osiąga Ubuntu (lub pochodne Debiana) poprzez wyłączenie użytkownika root?

Wszędzie czytam, że mówi, aby zapobiec niezamierzonym szkodom dla niedoświadczonych użytkowników. Chcę wiedzieć, co dokładnie, ponieważ sudomoże wykonywać wszystkie polecenia (które znam / używam).

Więc w takim przypadku root może spowodować uszkodzenie, a sudonie może?

PS: Wiem jak sudodziała.

Web-E
źródło

Odpowiedzi:

31

Więc w takim przypadku root może spowodować uszkodzenie, a sudo nie?

Ponieważ zazwyczaj musisz przywoływać za sudokażdym razem, gdy chcesz zrobić coś, co wymaga uprawnień, powodem jest to, że „pomyślisz, zanim skoczysz”, tj. Nie po prostu zastawiasz sudo przed czymś, nie zastanawiając się przez chwilę, jakie polecenie wykonujesz zrobi.

Z sudrugiej strony, kiedy już jesteś, jesteś w środku. Masz carte blanche (otwarta licencja) na robienie wszystkiego i wszystko, a powodem jest to, że możesz na chwilę zapomnieć, że masz te przywileje i jeśli pecha, wykonaj coś, co poważnie wpłynie na / uszkodzi twój system - gdybyś nie miał uprawnień su, polecenie nie zrobiłoby nic poważnego.

ish
źródło
8
Logika „pomyśl przed skokiem” jest tak naiwna, jak myślący użytkownicy przestaną myśleć, gdy wyświetli się okno dialogowe z komunikatem „Czy naprawdę chcesz zainstalować TrashTheComputer.Virus: Tak / nie?” zmniejszy odsetek infekcji złośliwym oprogramowaniem.
Dan Neely
9
@ DanNeely - nie sądzę. Piszę wiele poleceń i większość z nich nie wymaga sudo, więc nie używam ich. Kiedy go używam, daje mi chwilę przerwy. Tak, mówię jako programista, a nie przeciętny użytkownik, ale przecież przeciętni użytkownicy nie używają wiersza poleceń.
Nathan Long
2
Nie @NathanLong końca prawda z Linuksem, powód to pytanie istnieje pokazuje „przeciętnego użytkownika” nie rozumiejąc, dlaczego używać sudoponad su. Zbyt często ludzie mówią „używaj sudo, ponieważ jest bezpieczniejsze niż su” - co naiwnie jest myśleć, ponieważ wcale nie jest bezpieczniejsze. Zapomnieć użyłeś suma usprawiedliwienia, to tylko w dół-prawo niekompetencja jeśli uruchomić polecenie jako root przypadkowo.
ash
1
@ash Nadal mówię, że przeciętny użytkownik nie pytałby o względne konsekwencje bezpieczeństwa dwóch metod zwiększania uprawnień użytkownika. W rzeczywistości OP ma pytania dotyczące StackOverflow. Ale na bok OP, pamiętanie tego, co zrobiłeś 15 sekund temu, jest łatwiejsze niż pamiętanie tego, co zrobiłeś wczoraj, i możesz łatwo mieć sesję terminalową obejmującą dni. Więc tak, nie możesz zapomnieć, kiedy używasz su, ale osobiście wolałbym nie ustawiać bomb, niż zakładać, że pamiętam, aby je rozbroić.
Nathan Długa
16

IMO ma główne zalety sudo nad su, ponieważ sudo ma lepsze rejestrowanie uruchomionych poleceń, a sudo daje lepszą kontrolę nad tym, co mogą zrobić użytkownicy.

su jest wszystkie lub nie ma go wcale, ale sudo można skonfigurować tak, aby umożliwić dostęp do niektórych, ale nie wszystkich poleceń.

Zobacz https://help.ubuntu.com/community/RootSudo, aby uzyskać pełniejszą dyskusję, w tym zalety i wady.

Pantera
źródło
11

su -

Gdy zalogujesz się jako root , każde zadanie, które uruchomisz, akcja, którą uruchomisz lub przypadkowe zdarzenie spowodowane odwiedzeniem określonej strony internetowej itp. Będzie działało jako superużytkownik .

sudo

Kiedy wywołujesz sudo , kiedy uruchamiasz polecenie, tylko to polecenie będzie działać jako superużytkownik .

Zostaniesz poproszony o podanie hasła , zanim polecenie zostanie wykonane. Wymagana jest również interakcja użytkownika .

Próby wywołania sudo mogą być również rejestrowane .

david6
źródło
2
Rzeczywiście, prosi o hasło bieżącego użytkownika, co ułatwia zarządzanie hasłem root. Jeśli konto zostanie usunięte z systemu, hasło roota nie musi być resetowane. Co więcej, konto root w ogóle nie wymaga hasła, więc konto root nie może zostać naruszone przez brutalne wymuszenie go.
jippie
@jippie ogólne dobre praktyki określają usuwanie / blokowanie / unieważnianie hasła roota i zezwalanie na dostęp tylko poprzez sudo su. podczas gdy myślnik -jest flagą akceptowaną przez sui traktuje twoją powłokę tak, jakbyś zalogował się jako użytkownik (uruchamia inny zestaw plików środowiska, np. .bashrc / .profile)
ash
3

Chodzi o zarządzanie użytkownikami / hasłami dla sysadmins.

Jeśli masz wielu użytkowników, wszyscy powinni mieć osobne konta i powinniśmy mieć możliwość śledzenia za pomocą tych kont. Oznacza to, że ludzie nie mogą ukryć swojej tożsamości. Ponadto, jeśli musisz odwołać uprawnienia określonych użytkowników, nie musisz również resetować hasła roota. Aby dać każdej osobie w środowisku z więcej niż 2 administratorami, hasło roota stanowi koszmar, gdy jedna osoba rezygnuje. Musisz nie tylko to zmienić, ale też to przekazać itp. Wszystko to musi się zdarzyć, gdy jeden z nich ma skradzionego laptopa lub coś takiego. Jedno konto z jednym hasłem na osobę ułatwia administrację. Jest podobny do filozofii, która uzasadnia, dlaczego każda usługa powinna mieć własne konto. W przypadku naruszenia bezpieczeństwa jednego konta nie trzeba ponownie konfigurować kolejnych kilkunastu usług (takich jak zadania tworzenia kopii zapasowych), aby móc korzystać z innego konta.

Uważam również, że osobiście wygodnie jest nie mieć kolejnego hasła do śledzenia, zgubienia i naruszenia bezpieczeństwa. Na RHEL specjalnie wyłączam konto root po skonfigurowaniu sudo, więc nie muszę go śledzić. Raz na jakiś czas użytkownik przegląda plik sudo, ale można go naprawić w trybie pojedynczego użytkownika. (Oczywiście jest to zwykle maszyna produkcyjna).

UWAGA: „sudo bash” pozwoli ci pominąć pisanie sudo dla każdego polecenia ...

Flickerfly
źródło
Zawsze sudo mc: D
Rony
Jedyna odpowiedź na to pytanie, warta wznowienia głosowania, wyraźnie odpowiada na pytanie bez dalszego ujednoznaczniania pytania lub wprowadzania w błąd ludzi w fałszywym sensie informacji.
popiół
@flickerfly, uważam, że w „resecie hasła roota dla tego samego użytkownika” należy usunąć „dla tego samego użytkownika” - w ten sposób będzie dokładniejszy.
Richlv,
@Richlv, masz rację. Dokonałem edycji, którą zasugerowałeś. Nie jestem pewien, co tam zamierzałem.
flickerfly
2

Myślę, że najpierw musimy przyjrzeć się, czym w rzeczywistości su i sudo

su - oznacza użytkownika zastępczego. Służy to do przełączania się na powłokę jako inny użytkownik używający hasła tego użytkownika. Powszechnie używany z rootem. Nie wymaga hasła podczas wykonywania jako root.

sudo - pozwala uprawnionemu użytkownikowi wykonać określone polecenie jako inny użytkownik. Często używany również z rootem. Pozwala to jednak na szczegółowe zarządzanie poleceniami, które mogą być wykonywane w inny sposób. (Na przykład możesz dać użytkownikowi możliwość uruchomienia skryptu init.d, ale nic więcej.)

Uwaga: zawsze możesz uruchomić sudo sulub, sudo -ia to da ci root root. Jednak brak hasła roota oznacza brak logowania bezpośrednio jako root ... co oznacza, że ​​nikt nie może włamać się do tego użytkownika.

EDYCJA: więc może ta odpowiedź, której szukasz, to: brak hasła roota zmusza cię do użycia sudo, co z kolei naturalnie dostosowuje cię do sudofilozofii, która sugeruje, abyś wymusił większą kontrolę nad działaniami wykonywanymi jako root.

użytkownik606723
źródło
Napisałem to sam ....
user606723
2

Ponadto istnieją kwestie związane z rejestrowaniem między sudo i su. Bycie su po prostu robi wszystko jako root bez wpisu innego niż jeden wiersz w dzienniku autoryzacji, mówiąc, że zostałeś rootem.

Sudo z drugiej strony - zawsze zostaje zalogowany jako identyfikator użytkownika w eskalowanym przywileju.

kd1s
źródło
0

Zazwyczaj logowanie jako su jest łatwiejsze podczas wykonywania zadań administracyjnych. Istnieje jednak co najmniej jeden wyjątek: gdy właściciel pliku ma znaczenie. Jeśli potrzebujesz użytkownika, który będzie właścicielem pliku, zaloguj się jako ten użytkownik i użyj sudo, aby załadować lub skopiować pliki. Prostymi przykładami są pliki zakładek i tapet. Jeśli użytkownik nie jest właścicielem pliku, zakładka „Przywróć” z Firefoxa zakończy się niepowodzeniem. Po ustawieniu tapety pulpitu może nie działać, jeśli nie jesteś właścicielem pliku. Czasami możesz po prostu ustawić uprawnienia lub włączyć jako plik wykonywalny, ale niektóre ustawienia lub programy zawodzą, jeśli nie jesteś właścicielem pliku.

DotheMath45
źródło
Logujesz się jako root i używasz przeglądarki Firefox do przeglądania stron internetowych? Myślę, że to jest powód wyłączenia konta root. Eliminuje to możliwość zalogowania się jako root do codziennego użytku.
adempewolff