Do /etc/sudoers
listy plików, które użytkownicy mogą robić to, co z sudo
poleceniem
Użytkownik root tworzy i modyfikuje /etc/sudoers
plik.
Trudno mi zrozumieć tę koncepcję.
Jeśli wszyscy użytkownicy mający uprawnienia sudo należą do sudoers
grupy, wszyscy mogą zostać rootami, wydając sudo su
polecenie.
Więc kto jest faktycznym użytkownikiem root i jak kontroluje uprawnienia użytkowników w grupie sudoers?
Proszę, wytłumacz mi to.
permissions
sudo
users
root
access-control
rancho
źródło
źródło
root
dostępem asudo
prawami staje się nieistotna, JEŚLI zezwoliszsudo su
na uruchomienie. Nie musisz jednak na to pozwolić. Możesz zezwolić tylko na określony zestaw poleceń, np. Dać młodszemu administratorowisudo
tylko dostęp do określonych poleceń tworzenia kopii zapasowych.Odpowiedzi:
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
su
komendą („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/hosts
Pozwoli 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 su
pozwoliłoby ci po prostu zostać rootem. Rezultat jest taki sam, jakbyś zalogował się jako root lub wykonałsu
polecenie, 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
login
w 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/passwd
plik 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 mysql
komendy, albo użyćsudo
miejsca, w którym plik sudoers daje ci uprawnienia mysql do tych konkretnych komend.źródło
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
.su
jest skrótem od „użytkownika zastępczego”;sudo
jest zatem „zastępczym użytkownikiem do”. Możesz użyćsu
do zalogowania się jako inny użytkownik, nie tylkoroot
. I możesz używaćsudo
do wykonywania poleceń jako inny użytkownik.