Czytałem więc o różnicach między używaniem su
i sudo
, i wszyscy wydają się zgadzać, że takie sudo
podejście jest bezpieczniejsze niż umożliwianie dostępu do samego konta root. Mówią, że z kontem root możesz złamać cały system za pomocą jednego polecenia. Rozumiem to. ALE początkowy użytkownik utworzony w systemie ma również dostęp do wszystkich poleceń za pomocą sudo. Mogę to sprawdzić, uruchamiając su -l
. W takim przypadku mogę po prostu sudo <game-ending command>
zepsuć mój system. Więc jak to podejście jest lepsze lub bezpieczniejsze niż umożliwienie mi bezpośredniego dostępu do konta superużytkownika? Mogę uruchomić wszystkie te same polecenia ...
Czy to dlatego, że za pomocą sudo
wiersza poleceń wyraźnie mówię komputerowi, że myślę, że wiem, co robię? Czy myślą, że ludzie zapomną, że są na koncie superużytkownika, chyba że wyraźnie to powiedzą?
Ludzie twierdzą również, że gdyby system został przejęty i wprowadzony przez kogoś obcego, posiadanie konta roota pozwoliłoby mu na zrobienie okropnych rzeczy w moim systemie. Ale wydaje mi się, że jeśli mają już dostęp do mojego konta i znają moje hasło, mogą zrobić te same okropne rzeczy, używając sudo i wpisując moje hasło, ponieważ nawet nie muszą znać hasła superużytkownika. Czego tu nie dostanę?
źródło
Odpowiedzi:
Osobiście niekoniecznie uważam to za bezpieczniejsze, a większość korzyści (sudo) dotyczy systemu dla wielu użytkowników. W systemie dla jednego użytkownika prawdopodobnie jest to pranie.
Korzyści są (bez określonej kolejności):
sudo -i
jest prawdopodobnie najlepszą metodą izolowania zmiennych środowiskowych root od użytkownika. To pojawia się od czasu do czasu, ale jest umiarkowanie ezoteryczne. Zobacz https://help.ubuntu.com/community/RootSudo#Special_notes_on_sudo_and_shellsPrawdopodobnie jest więcej korzyści, ale te są najważniejsze, IMHO.
Zobacz także - https://help.ubuntu.com/community/RootSudo
Aby spróbować odpowiedzieć na inne twoje przemyślenia:
Więc chociaż zauważyłeś problemy lub wady sudo, su ma dokładnie te same luki i su nie jest lepszy od sudo w tych aspektach, IMHO
źródło
Wyobraź sobie, że masz 20 minut na zrobienie czegoś złożonego. Jesteś trochę kacem i musisz się spieszyć. „Używajmy su”, mówisz. „To zaoszczędzi trochę czasu” to twoje rozumowanie.
Przez przypadek piszesz
zamiast
Twój system sam się teraz łamie i masz 10 minut do terminu.
Jeśli wyraźnie wybierzesz, kiedy potrzebujesz roota, możesz zminimalizować ryzyko takiego zdarzenia. Root może nie być potrzebny,
rm -r ./*
więc po co go używać? Po co ryzykować?To właśnie oznacza tutaj „bezpieczeństwo”. Minimalizowanie ryzyka, że użytkownicy (wszyscy użytkownicy, nie tylko początkujący) popełnią fatalny błąd.
Oczywiście jest to ekstremalny przykład, który nie powinien mieć miejsca w środowisku produkcyjnym (gwarantuję, że tak się stało w środowisku produkcyjnym).
Ze względów bezpieczeństwa sudo też jest lepsze. Jak mówi @Panther - logowanie, ograniczenia, hasło roota to SPOF itp.)
źródło
chown -R nobody:nobody /
lub nawetchown -R nobody ../
jako root.chmod
oczywiście ma podobne problemy również w trybie rekurencyjnym. Ale najlepsze, co robisz, to to, że powinieneś być rootem tylko wtedy, gdy tego potrzebujesz; im mniej uprawnień do logowania, tym lepiej do normalnego użytkowania.sudo
? Piszsudo rm -rf /*
zamiastsudo rm -rf ./*
i bum ponownie.sudo rm -rf ./*
. Prawdopodobnie masz dostęp do zapisu w bieżącym katalogu, więc nie potrzebujesz sudo do tego polecenia. Więc z typoed końcach dowodzenia góry byćrm -rf /*
, co daje długi ciąg „Permission denied” wiadomości z powiadomieniem trzebactrl-c
zanim dotrze do rzeczy rzeczywiście można usunąć, a nie tylko usuwając wszystko/bin
,/boot
,/dev
, i połowa/etc
przed nawet zdajesz sobie sprawę, że coś jest nie tak.Chcę dodać trochę historycznej perspektywy do innych odpowiedzi. Niestety nie mam przygotowanych żadnych źródeł oprócz wspomnień z dyskusji w Usenecie i artykułów w czasopismach.
Jakiś czas temu, w latach 90., dystrybucje ułatwiały instalację Linuksa na twoim sprzęcie, nawet przy niewielkiej wiedzy komputerowej .¹ W ten sposób Linux zaczął przyciągać coraz więcej osób, które, o dziwo, nie były wcześniej wyszkolone jako administratorzy systemu na jakiś dialekt UN * X. Zamiast tego wielu było przyzwyczajonych do systemów (pojedynczych użytkowników), takich jak Windows 95/98. Dowiedzieli się też, że większość zadań związanych z administrowaniem systemem Linux wymaga pracy pod tym dziwnym kontem „root”.
Dlatego niektórzy użytkownicy logowali się po prostu jako root i korzystali z tego konta przez całą codzienną pracę. Dlatego powinny one mieć do pisania
su
i do głównego hasła ponownie i ponownie lub logowania do nowego terminala tylko dla niektórych poleceń administracyjnych? Ale korzystanie z roota do wszystkiego nie jest oczywiście dobrym pomysłem, ponieważ możesz wyrządzić o wiele więcej szkody systemowi, wykonując niemądre polecenie w niewłaściwym miejscu. Doprowadziło to nawet niektórych dystrybucji (czy to SuSE?) Do zmodyfikowania tła pulpitu dla użytkownika root, aby wyświetlał duże ostrzeżenie, że należy używać tego konta tylko do zadań administracyjnych.Tak więc sposób Ubuntu
sudo
ma pewne zalety (oprócz tych już wymienionych przez Panther ).sudo
buforuje twoje dane uwierzytelniające, więc w przypadku wielu poleceń administratora po kolei hasło trzeba wprowadzić tylko raz (w przeciwieństwie dosu
). Zmniejsza to potrzebę otwierania powłoki lub nowego terminala z uprawnieniami administratora .¹ A dla tych, którzy nie odważą się zrobić tego sami, zorganizowano imprezy.
² Ale można użyć polecenia podobny
sudo -i
lubsudo su - root
uzyskać powłokę roota po zalogowaniu się jako zwykły użytkownik.³ Ale wiesz oczywiście, że nie powinieneś po prostu kopiować i wklejać poleceń z Internetu , prawda?
źródło
sudo su -
lubsudo su - root
? Ponieważ widziałem podobne twierdzenia, np. Że MacOS X nie ma roota, ale jest to całkowicie błędne, gdy trzeba tylko wykonać pierwsze polecenie ...root
i hasła w oknie logowania lub w oknie dialogowym logowania X i rozpocząć sesję jako root. Ale możesz użyć jednego ze swoich poleceń (wolę,sudo -i
ponieważ jest on krótszy i jestem leniwy), aby uzyskać powłokę root.Możliwe było wyłączenie logowania roota przez ssh od dziesięcioleci. Ubuntu sposób wyłączania konta root i zmuszania ludzi do sudo wszystko to nic innego jak sztuczka. Wystarczy „sudo -s” i masz powłokę root. Wyłącz logowanie roota przez ssh i zostaw je tam.
źródło
W zależności od konfiguracji
sudo <game ending command>
niekoniecznie będzie działać. Oczywiście, jeślisudoers
konfiguracja brzmi „user ALL = (ALL) ALL”,sudo
nie zapewni żadnej dodatkowej ochrony. Możesz jednak określić listę uprzywilejowanych poleceń, które musisz często uruchamiać, takich jak instalowanie nowych pakietów, i pominąć niebezpieczne polecenia, takie jakrm
.W ten sposób możesz uruchamiać wszystkie polecenia, jeśli zalogujesz się jako
root
, ale ponieważ będziesz tego potrzebował tylko od czasu do czasu, ryzyko uruchomienia<game ending command>
zostanie znacznie zmniejszone.źródło
To sudo pozwala na stosowanie tylko niektórych poleceń, nie jest jedyną zaletą sudo nad su.
W większości sklepów nie jest to nawet najważniejsza korzyść.
Dzięki sudo wiesz, kto wykonał określone polecenie.
Może to nie ma dla ciebie znaczenia. Na przykład możesz być jedynym użytkownikiem swojego komputera. Jeśli tak, to sudo prawdopodobnie nie jest lepsze od su.
Ale wiele hostów ma więcej niż jednego administratora.
sudo staje się wtedy bardzo przydatne, ponieważ jeśli ktoś zrobi coś złego, sudo poinformuje cię, kto to zrobił.
To pozwala ci zrozumieć, dlaczego wystąpiły błędy, i edukować ludzi, aby zapobiegać powtarzającym się błędom lub, jeśli to konieczne, usuwać narzędzia od kogoś.
Jako bonus, gdy ludzie wiedzą, że ich działania są rejestrowane, często są nieco bardziej ostrożni.
Sudo nie jest idealne.
Jeśli dwie osoby wykonują „sudo sh” w tym samym czasie, może być trudno przypisać polecenia jednemu lub drugiemu.
A złośliwy administrator zawsze może usuwać lub edytować dzienniki - chociaż robienie tego w czysty sposób nie zawsze jest tak łatwe, jak ludzie myślą, szczególnie jeśli masz scentralizowane rejestrowanie.
sudo niekoniecznie zatrzymuje głupią lub złośliwą akcję z wszystkich powodów wskazanych w pierwotnym pytaniu.
Ale daje to znacznie większą szansę na zapobieganie nawrotom.
źródło
sudo
zezwala na wszystko. Jasne, możesz go skonfigurować tak, aby ograniczyć liczbę poleceń, które użytkownik może uruchamiać, ale nie sądzę, żeby tak było w pytaniu zadanym.