Różnica między użytkownikiem sudo a użytkownikiem root [zamknięta]


21

Do /etc/sudoerslisty plików, które użytkownicy mogą robić to, co z sudopoleceniem

Użytkownik root tworzy i modyfikuje /etc/sudoersplik.

Trudno mi zrozumieć tę koncepcję.

Jeśli wszyscy użytkownicy mający uprawnienia sudo należą do sudoersgrupy, wszyscy mogą zostać rootami, wydając sudo supolecenie.

Więc kto jest faktycznym użytkownikiem root i jak kontroluje uprawnienia użytkowników w grupie sudoers?

Proszę, wytłumacz mi to.


4
Myślę, że musisz rozwinąć tę część, która jest trudna do zrozumienia.
garethTheRed

kto jest użytkownikiem root? To pytanie jest dla mnie trudne do zrozumienia. Ponieważ użytkownicy humn mogą przynależeć tylko do grupy sudoers
rancho

@rancho zaktualizuj pytanie, proszę
Peter


Prosta odpowiedź na podstawowe pytanie (na podstawie komentarzy do odpowiedzi): To prawda, że ​​różnica między rootdostępem a sudoprawami staje się nieistotna, JEŚLI zezwolisz sudo suna uruchomienie. Nie musisz jednak na to pozwolić. Możesz zezwolić tylko na określony zestaw poleceń, np. Dać młodszemu administratorowi sudotylko dostęp do określonych poleceń tworzenia kopii zapasowych.
Wildcard

Odpowiedzi:


29

Streszczenie: „root” to rzeczywista nazwa konta administratora. „sudo” to polecenie, które pozwala zwykłym użytkownikom wykonywać zadania administracyjne. „Sudo” nie jest użytkownikiem.


Długa odpowiedź:

„root” (aka „superuser”) to nazwa konta administratora systemu. Początki nazwy są trochę archaiczne, ale to nie ma znaczenia.

Użytkownik root ma identyfikator użytkownika 0 i nominalnie ma nieograniczone uprawnienia. Root może uzyskać dostęp do dowolnego pliku, uruchomić dowolny program, wykonać dowolne wywołanie systemowe i zmodyfikować dowolne ustawienie. (Ale patrz poniżej¹).

Przed wynalezieniem polecenia „sudo”, jeśli chciałeś wykonywać zadania administracyjne, musiałeś zalogować się jako root, albo otrzymując monit o logowanie², albo sukomendą („su” to skrót od zastępczego użytkownika.) ³

To trochę kłopotliwe, a także nie daje użytkownikom częściowych uprawnień administracyjnych. Tak więc wymyślono polecenie „sudo” (skrót od „substitute user do”).

Polecenie „sudo” umożliwia wykonywanie poleceń z uprawnieniami administratora, o ile identyfikator użytkownika znajduje się w pliku sudoers, co daje niezbędne uprawnienia.

Tak więc np. sudo vi /etc/hostsPozwoli ci edytować plik hosts tak, jakbyś działał jako root. Nie potrzebujesz nawet hasła roota, tylko własne hasło logowania.

I oczywiście sudo supozwoliłoby ci po prostu zostać rootem. Rezultat jest taki sam, jakbyś zalogował się jako root lub wykonał supolecenie, tyle że nie musisz znać hasła roota, ale musisz znajdować się w pliku sudoers.

Plik sudoers określa, kto może korzystać z polecenia sudo i co może z nim zrobić.

Plik sudoers daje wielu administratorom⁴. W rzeczywistości administratorzy są rootami, a także wszyscy wymienieni w pliku sudoers. Bez pliku sudoers jedynym administratorem jest root.

W rzeczywistości w organizacjach, w których ktoś inny administruje twoim komputerem, dość często nie znasz hasła roota twojego komputera - tak długo, jak jesteś w pliku sudoers, nie ma to znaczenia.

W jednej firmie, dla której pracowałem, z gigantyczną farmą serwerów, tylko bardzo, bardzo mała liczba osób znała hasła roota. Zamiast tego istniała baza danych, kto mógł pracować na których serwerach. Zautomatyzowany proces dodałby cię do plików sudoers tych serwerów, do których masz uprawnienia dostępu, i usunął cię po wygaśnięciu autoryzacji.


¹ Jeszcze jedno: nowoczesne wersje Uniksa mogą teraz ograniczać nawet to, co może zrobić użytkownik root.

W SELinux (Security Enhanced Linux) istnieje efektywnie lista kontroli dostępu, która określa, który program może zrobić, a nawet root nie może ominąć tych ograniczeń.

W systemie Apple System Integrity Protection (SIP) (aka „rootless”) niektóre pliki i katalogi są blokowane, aby tylko aplikacje na odpowiedniej białej liście miały do ​​nich dostęp.

Systemy te istnieją, aby chronić system przed przypadkiem, gdy złośliwy użytkownik zdoła uzyskać dostęp do konta root. (Lub w niektórych przypadkach, aby uniemożliwić użytkownikom jailbreakowanie ich urządzeń osadzonych). Z oczywistych powodów bardzo trudno jest ominąć te ograniczenia, nawet z dostępem do konta root.

² Podpowiedź „login:” to kolejny archaiczny kawałek historii Uniksa, datowany na czasy, kiedy wszyscy używaliśmy terminali ascii na liniach szeregowych zamiast systemów okien. Nadal możesz uzyskać monit „login:”, po prostu wpisując loginw dowolnym oknie terminala lub otwierając połączenie ssh (lub telnet lub rsh) z komputerem z innego miejsca. Jeśli chcesz, możesz zalogować się jako inny użytkownik. (A jeśli twój komputer ma porty szeregowe, nadal możesz go skonfigurować, aby zezwolił na logowanie.)

³ Możliwe jest również, że poszczególne programy mają dostęp do roota. Programy te mogą zrobić wszystko, co może zrobić użytkownik z dostępem do konta root, nawet jeśli są uruchamiane przez zwykłego użytkownika. Zazwyczaj są one ograniczone do określonych zadań. Na przykład program crontab ma uprawnienia rootowania, dzięki czemu może edytować tabele cron. Oczywiście „sudo” ma uprawnienia rootowania, dzięki czemu może robić to, co robi.

Cover Omówię jeszcze jedną kwestię, o której wcześniej wspomniałem. Używam „administrator” i „root” zamiennie, ale są też inni administratorzy. Są one często nazywane „kontami ról”, co oznacza, że ​​konta te nie należą do rzeczywistych ludzi, ale istnieją, aby pełnić określoną rolę w systemie. Jeśli spojrzysz na /etc/passwdplik w swoim systemie, znajdziesz dziesiątki takich kont.

Na przykład, jeśli mysql został zainstalowany w twoim systemie, byłby użytkownik „mysql”, a wszystkie pliki bazy danych, pliki konfiguracyjne itd. Byłyby własnością tego użytkownika. Tylko ten użytkownik miałby niezbędne uprawnienia dostępu do plików i uruchomienia serwera mysql. W pewnym sensie ten użytkownik byłby kontem administratora, ale tylko dla mysql.

Jeśli musisz wykonywać zadania administracyjne bazy danych, możesz albo stać się „mysql” za pomocą su mysqlkomendy, albo użyć sudomiejsca, w którym plik sudoers daje ci uprawnienia mysql do tych konkretnych komend.


1
Plik sudoers daje wielu administratorom. W rzeczywistości administratorzy są rootami, a także wszyscy wymienieni w pliku sudoers. Bez pliku sudoers jedynym administratorem jest root.
Edward Falk

1
„W SELinux (Security Enhanced Linux) istnieje lista kontroli dostępu, która określa, kto może co robić, a nawet root nie może ominąć tych ograniczeń”. - jeśli nawet root nie może przejść tych ograniczeń, to kto je tworzy?
rancho

1
Aby to wyjaśnić: „W rzeczywistości administratorzy są rootami, a także wszyscy wymienieni w pliku sudoers”. wpisy sudoers nie muszą oznaczać pełnego dostępu do katalogu głównego, a nawet dostępu na poziomie administratora; Mogę przyznać Svenowi możliwość ponownego uruchomienia agenta monitorowania działającego jako monitor.
Jeff Schaller

1
The "sudo" command lets you execute commands with superuser privileges as long as your user id is in the sudoers file [..]. Na moim komputerze (Solus OS 3) to źle. Mojej nazwy użytkownika nie ma w pliku sudoers. i wciąż mogę to zrobić sudo.
Martin Andersson

2
Stara odpowiedź i to jest pedanteria, ale sujest skrótem od „użytkownika zastępczego”; sudojest zatem „zastępczym użytkownikiem do”. Możesz użyć sudo zalogowania się jako inny użytkownik, nie tylko root. I możesz używać sudodo wykonywania poleceń jako inny użytkownik.
josaphatv
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.