TL; DR: Rób rzeczy jako root tylko wtedy, gdy musisz. sudo
czyni to całkiem łatwym. Jeśli włączysz logowanie do konta root, nadal będziesz mógł przestrzegać tej reguły, po prostu musisz być ostrożny. Chociaż włączenie logowania roota nie jest tak naprawdę niebezpieczne, ale nie musisz włączać logowania roota, ponieważ tak jest sudo
.
Są tu naprawdę dwa powiązane pytania.
- Dlaczego zalogowanie się jako root do codziennego korzystania z komputera jest złe (przeglądanie stron internetowych, poczta e-mail, edytor tekstu, gry itp.)
- Dlaczego Ubuntu domyślnie całkowicie wyłącza logowanie do roota i używa
sudo
i polkit, aby umożliwić administratorom uruchamianie określonych poleceń jako root?
Dlaczego nie cały czas uruchamiać jako root?
Większość innych odpowiedzi obejmuje to. Sprowadza się do:
- Jeśli użyjesz uprawnień roota do zadań, które ich nie wymagają, i ostatecznie zrobisz coś, czego nie chciałeś zrobić, możesz zmienić lub uszkodzić system w sposób, którego nie chcesz.
- Jeśli uruchomić program jako root, kiedy nie trzeba, a to kończy się robić coś, co nie znaczy, bo to zrobić - na przykład ze względu na lukę w zabezpieczeniach lub innego błędu - to może zmienić lub szkody twój system w sposób, którego nie chcesz.
Prawdą jest, że nawet bez robienia rzeczy jako root, możesz wyrządzić krzywdę. Na przykład możesz usunąć wszystkie pliki z własnego katalogu domowego, który zwykle obejmuje wszystkie dokumenty, bez uruchamiania jako root! (Mam nadzieję, że masz kopie zapasowe.)
Oczywiście jako root istnieją dodatkowe sposoby przypadkowego zniszczenia tych samych danych. Na przykład możesz podać niewłaściwy of=
argument do dd
polecenia i zapisać surowe dane na swoich plikach (co sprawia, że jest to znacznie trudniejsze do odzyskania niż gdybyś je po prostu usunął).
Jeśli jesteś jedyną osobą, która korzysta z twojego komputera, szkoda, którą możesz wyrządzić tylko jako root, może nie być tak naprawdę wyższa niż szkoda, jaką możesz wyrządzić za pomocą zwykłych uprawnień użytkownika. Ale to wciąż nie jest powód, aby zwiększać ryzyko, aby uwzględnić dodatkowe sposoby na zepsucie systemu Ubuntu.
Jeśli uruchomienie z kontem użytkownika innego niż root uniemożliwiło ci sprawowanie kontroli nad własnym komputerem, byłby to oczywiście zły kompromis. Ale tak nie jest - za każdym razem, gdy rzeczywiście chcesz wykonać akcję jako root, możesz to zrobić za pomocą sudo
innych metod .
Dlaczego nie umożliwić zalogowania się jako root?
Idea, że zdolność logowania jako root jest z natury niepewna, jest mitem. Niektóre systemy mają domyślnie włączone konto root; inne systemy używają sudo
domyślnie, a niektóre są skonfigurowane z obu.
- Na przykład OpenBSD , który jest powszechnie i rozsądnie uważany za najbezpieczniejszy system operacyjny ogólnego przeznaczenia na świecie, jest dostarczany z kontem głównym włączonym do lokalnego logowania opartego na hasłach.
- Inne szanowane systemy operacyjne, które to robią, to RHEL , CentOS i Fedora .
- Debian (z którego wywodzi się Ubuntu ) decyduje, które podejście zostanie skonfigurowane podczas instalacji systemu.
Obiektywnie nie jest źle mieć system, w którym konto root jest włączone, pod warunkiem, że
- nadal używasz go tylko wtedy, gdy naprawdę potrzebujesz, i
- odpowiednio ograniczasz dostęp do niego.
Często nowicjusze pytają, jak włączyć konto root w Ubuntu. Nie powinniśmy ukrywać przed nimi tych informacji, ale zwykle, gdy ludzie o to pytają, to dlatego, że mają błędne wrażenie, że muszą włączyć konto root. W rzeczywistości prawie nigdy nie jest to konieczne, dlatego odpowiadając na takie pytania, ważne jest, aby to wyjaśnić. Włączenie konta root ułatwia także samozadowolenie i wykonywanie działań jako root, które nie wymagają uprawnień roota. Ale to nie oznacza, że włączenie konta root jest samo w sobie niebezpieczne.
sudo
zachęca i pomaga użytkownikom uruchamiać polecenia jako root tylko wtedy, gdy jest to konieczne. Aby uruchomić polecenie jako root, wpisz sudo
spację, a następnie polecenie. Jest to bardzo wygodne, a wielu użytkowników na wszystkich poziomach umiejętności woli takie podejście.
Krótko mówiąc, nie musisz włączać logowania użytkownika root, ponieważ masz sudo
. Ale tak długo, jak używasz go tylko do zadań administracyjnych, które go wymagają, tak samo bezpieczne jest włączenie i zalogowanie się jako root, o ile tylko w ten sposób :
Jednak jeśli zalogujesz się jako root w następujący sposób, pojawią się znaczne dodatkowe zagrożenia bezpieczeństwa:
Graficznie. Kiedy logujesz się graficznie, uruchamia się wiele rzeczy, aby zapewnić interfejs graficzny, a skończysz z uruchomieniem jeszcze większej liczby aplikacji jako root, aby używać tego interfejsu do czegokolwiek. Jest to sprzeczne z zasadą uruchamiania programów tylko jako root, które naprawdę potrzebują uprawnień roota. Niektóre z tych programów mogą zawierać błędy, w tym błędy bezpieczeństwa.
Ponadto istnieje powód niezwiązany z bezpieczeństwem, aby tego uniknąć. Logowanie graficzne jako root nie jest dobrze obsługiwane - jak wspomina Loevborg , programiści środowisk graficznych i aplikacji graficznych często nie testują ich jako root. Nawet jeśli to zrobią, zalogowanie się do graficznego środowiska pulpitu, ponieważ root nie otrzyma testów alfa i beta rzeczywistych użytkowników, ponieważ prawie nikt tego nie próbuje (ze względów bezpieczeństwa wyjaśnionych powyżej).
Jeśli chcesz uruchomić określoną aplikację graficzną jako root, możesz użyćgksudo
lub sudo -H
. Działa to o wiele mniej programów jako root, niż gdyby użytkownik logował się graficznie za pomocą konta root.
Zdalnie root
Konta może w efekcie nic zrobić, a to ma taką samą nazwę na praktycznie każdym systemie Unix. Logując się jako root za pośrednictwem ssh
lub innych zdalnych mechanizmów, a nawet konfigurując usługi zdalne, aby na to zezwalać , znacznie ułatwisz intruzom, w tym automatycznym skryptom i złośliwemu oprogramowaniu działającemu w botnetach, uzyskanie dostępu poprzez brutalną siłę, ataki słownikowe (i ewentualnie niektóre błędy bezpieczeństwa).
Prawdopodobnie ryzyko nie jest bardzo wysokie, jeśli zezwalasz tylko na logowanie do roota na podstawie klucza , a nie hasła .
Domyślnie w Ubuntu nie są włączone ani graficzne logowania root, ani zdalne logowania przez SSH, nawet jeśli włączysz logowanie jako root . Oznacza to, że nawet jeśli włączysz logowanie roota, nadal będzie ono włączone tylko w sposób, który jest względnie bezpieczny.
- Jeśli uruchomisz serwer ssh na Ubuntu i nie zmieniłeś się
/etc/sshd/ssh_config
, będzie on zawierał linię PermitRootLogin without-password
. To wyłącza logowanie użytkownika root na podstawie hasła, ale umożliwia logowanie na podstawie klucza. Jednak żaden klucz nie jest domyślnie skonfigurowany, więc jeśli go nie skonfigurujesz, to też nie będzie działać. Co więcej, zdalne logowanie do roota oparte na kluczach jest znacznie mniej złe niż zdalne logowanie do roota na podstawie hasła, częściowo dlatego, że nie stwarza ryzyka brutalnej siły i ataków słownikowych.
- Mimo że wartości domyślne powinny cię chronić, myślę, że nadal warto sprawdzić konfigurację ssh, jeśli zamierzasz włączyć konto root. A jeśli korzystasz z innych usług zapewniających zdalne logowanie, takich jak ftp, powinieneś je również sprawdzić.
Podsumowując:
- Rób rzeczy jako root tylko wtedy, gdy musisz;
sudo
pomaga to zrobić, jednocześnie zapewniając pełną moc rootowania w dowolnym momencie.
- Jeśli rozumiesz, jak działa root i niebezpieczeństwa jego nadużywania, włączenie konta roota nie jest tak naprawdę problematyczne z punktu widzenia bezpieczeństwa.
- Ale jeśli to zrozumiesz, wiesz również, że prawie na pewno nie musisz włączać konta root .
Aby uzyskać więcej informacji na temat roota, a sudo
także kilka dodatkowych korzyści sudo
, których tutaj nie omówiłem , gorąco polecam RootSudo na wiki pomocy Ubuntu.