Dlaczego nie ma opcji logowania jako root?

39

Dlaczego system Ubuntu nie pozwala użytkownikom GUI zalogować się jako root w momencie uruchamiania systemu jak administrator w systemie Windows?

Dlaczego ograniczają nas do logowania tylko przez terminal?

Renjith G.
źródło
4
Należy również pamiętać o „gksu”, które pozwala uruchamiać aplikacje graficzne jako root. Tj. „Gksu nautlius”
Jeremy
1
Niektóre dystrybucje pozwalają zalogować się do X jako root. CentOS6.2 jest jednym z nich.
djangofan

Odpowiedzi:

42

Ponieważ nie jest to zalecane, chyba że dokładnie wiesz , co robisz. Root jest superużytkownikiem, co oznacza, że ​​może robić wszystko i wszystko - jest przeznaczony tylko do zadań administracyjnych. Codzienne zadania mogą wiązać się z zagrożeniem bezpieczeństwa, które BĘDZIE wykorzystane, jeśli KAŻDY (lub duża część użytkowników) użyje roota. Pomyśl o systemie Windows - 99% problemów ze złośliwym oprogramowaniem i wirusami pochodzi od osób używających kont administratora do codziennych zadań.

Spójrzmy na przykład.

Co jeśli ktoś włamie się do twojego systemu i powie mu, aby wymazał twoje dyski? Jeśli działasz jako zwykły użytkownik, jedynymi plikami, które (powinny) być w stanie usunąć, są te, które należą do ciebie, a nie nikogo innego. Jeśli powiedzmy, że masz inne osoby korzystające z komputera, ich pliki nie zostaną w ogóle dotknięte, bez względu na to, jak bardzo się starasz. Oznacza to, że nie będziesz w stanie zmienić żadnych plików systemowych , a zatem Twój system pozostanie solidny i niezmieniony / niezakażony.

Jeśli jednak uruchamiasz się jako root, możesz całkowicie wyczyścić dysk twardy, prawdopodobnie spowodować uszkodzenie samego sprzętu i ogólnie uniemożliwić korzystanie z systemu. Korekta: każdy, kto może uruchomić jedno polecenie jako root na twoim komputerze (złośliwa strona internetowa lub załącznik e-mail), może to zrobić.

Spójrz na http://everyjoe.com/technology/explain-why-not-log-on-as-root/ , to fajny artykuł, który może wyjaśnić to lepiej niż ja.

EDYCJA: oto kolejna http://ihazomgsecurityskillz.blogspot.nl/2010/09/running-as-root.html

EDYCJA 2: zawsze możesz użyć sudo commandlub gksu commanduruchomić commandjako superużytkownik, oba działają z narzędziami graficznymi i wiersza poleceń. sudojest zwykle używany w interfejsie CLI i gksujest graficznym hasłem, które robi to samo.

W pewnym stopniu pozwalają ci stać się roottymczasowo - znacznie, znacznie lepiej niż ciągłe rootowanie i ryzyko niestabilności.

evgeny
źródło
1
Ale dlaczego Fedora zezwala na tę opcję podczas uruchamiania?
Renjith G
5
Ubuntu ma być przyjazny dla użytkownika i podejrzewam, że przez niedopuszczenie do rootowania usuwają pokusę zwykłych użytkowników (czytaj: nowicjusze Linuksa) działających jako root.
evgeny,
Nie rozumiem cie
Renjith G
2
Mój komentarz był nieco błędny. Powiedzmy to w ten sposób: nie zezwalając na graficzne logowanie roota, uniemożliwia on uruchamianie się jako root, JEŻELI NIE WIEM, CO ROBIĄ. To moim zdaniem powinno być dozwolone tylko dla doświadczonych użytkowników, którzy znają i rozumieją wszystkie ryzyka.
evgeny,
1
Ma być nieco agresywny, po prostu, aby szarpnąć czytelników z powrotem do rzeczywistości i naprawdę zrobić rację.
evgeny,
11

W standardowym Ubuntu rootlogowanie nie jest dozwolone, ani z menedżera logowania GDM (graficznego), ani z konsoli tekstowej (tj. Tej, którą otrzymujesz po naciśnięciu Ctrl+ Alt+ F1).

W celu wykonania root(czyli administratora) operacje trzeba użyć sudopolecenia w terminalu lub innego równoważnego GUI nim: to poprosi o swoim hasłem, a następnie wykonać żądanej uprzywilejowaną operację (i tylko jeden).

Przyczyną takiego zachowania jest, jak zauważyli inni, fakt, że wykonywanie rootoperacji jest z natury ryzykowne, a liczba operacji wymagających naprawdę rootuprzywilejowanych uprawnień jest stosunkowo niewielka: dzięki takiemu sudopodejściu przez większość czasu korzystasz z konta nieuprzywilejowanego (tj. Nieszkodliwego do systemu i innych użytkowników) i po prostu uzyskaj rootmoc, kiedy jest to naprawdę potrzebne.

Przykład może pomóc w wyjaśnieniu. Załóżmy, że chcesz zainstalować nową usługę (demona) na swoim komputerze; jest to stosunkowo nowe i musisz o nim poczytać i jak skonfigurować go do swoich potrzeb. Skończysz często przeglądając sieć, by znaleźć informacje, przykładowe konfiguracje itp., Może masz jakiś czat IRC z prośbą o więcej informacji - to nie wymaga rootmocy! W końcu potrzebujesz uprzywilejowanego dostępu tylko dla dwóch operacji:

  1. zainstaluj nowy program (tj. sudo apt-get install ...) i
  2. edytować domyślną konfigurację

Powszechnie akceptowaną zasadą bezpieczeństwa komputera jest zawsze używanie najniższego możliwego poziomu uprawnień do wykonywania operacji. - zmniejsza to ryzyko, że stanie się coś złego z powodu błędów w oprogramowaniu lub błędów ze strony operatora.

Domyślna konfiguracja Ubuntu idzie w tym kierunku; gdybyś używał rootloginu, skończyłbyś surfowaniem po Internecie, robiąc IRC (i prawdopodobnie wszystkie inne rzeczy, które jednocześnie robi) z rootkonta, niepotrzebnie narażając system na zagrożenie.

Aktualizacja: W twoim przykładzie kompilatora postąpiłbym następująco:

  1. Zaloguj się do węzła za pośrednictwem SSH jako zwykły użytkownik oraz z innego węzła Ubuntu lub GNU / Linux, na którym działa graficzny wyświetlacz X11. Pamiętaj, aby włączyć przekazywanie X11 przez SSH:

    ssh -X [email protected]
    
  2. W wierszu poleceń powłoki / SSH wydaj polecenie:

    sudo /path/to/the/compiler/install/program
    

    Spowoduje to uruchomienie instalatora kompilatora z rootuprawnieniami i dostęp (poprzez przekazywanie SSH) do wyświetlacza graficznego przed sobą.

Riccardo Murri
źródło
Dobrze. Załóżmy, że korzystam z jednej maszyny linuxowej (mając 10 użytkowników podłączonych przez kit). Chcę zainstalować jedno oprogramowanie (np. Jeden kompilator, muszę również ustawić zmienne środowiskowe dla tego samego) jako root, aby były dostępne dla wszystkich użytkowników. Ale instalator działa tylko w trybie GUI i nie ma instalatora z linii poleceń i będzie działał tylko z logowaniem roota. Jak mogę zarządzać instalacją? Spotkałem się z tą sytuacją podczas instalowania arm-linux-gcc w moim Ubuntu, ale z powodzeniem zainstalowałem to samo w mojej maszynie Fedora (wersja Shrick RedHata)
Renjith G
@Renjit G: cóż, samo w sobie jest to dobre pytanie, dlaczego po prostu go nie zadasz?
Riccardo Murri,
1
@Renjit G: Chciałem zasugerować, aby zadać nowe pytanie. Zadawanie wielu szczegółowych pytań jest lepsze niż zadawanie jednego wieloaspektowego, ponieważ pozwala na szczegółowe i konkretne odpowiedzi. Edytując bieżące pytanie, odpowiedzi, które już otrzymałeś, wyglądają, jakby odpowiadały tylko na połowę twojego pytania ...
Riccardo Murri,
Dzięki Murri. Na pewno będę śledzić w ten sposób tylko od moich następnych postów.
Renjith G
1
Biorąc pod uwagę taki kompilator, myślę, że większość z nas byłaby ciekawa, który to kompilator. W przypadku dowolnego oprogramowania rozpowszechnianego przez źródła APT lub samodzielne pliki .deb wystarczy instalacja z wiersza poleceń za pomocą „sudo” (tak, nawet dla wszystkich użytkowników). Możliwe jest również instalowanie takich plików z GUI dla wszystkich użytkowników, bez konieczności rootowania. Otrzymany monit o hasło GUI jest odpowiednikiem „sudo”.
szkodzi
8

Powód używania sudo w Ubuntu można znaleźć tutaj . Jeśli kiedykolwiek potrzebujesz szybkiego sposobu na „rootowanie”, używam sudo -slub sudo -i.

Jorge Castro
źródło
9
I dla wyjaśnienia, uważam, że sudo -s tworzy sesję root jako użytkownik, podczas gdy sudo -i tworzy sesję root jako użytkownik root. Najłatwiejszym sposobem odróżnienia jest wydanie polecenia, a następnie wykonanie polecenia „echo $ HOME”, aby sprawdzić, jakie środowisko jest używane. Lub „cd ~”, a następnie „pwd” też by działało.
Scaine
6

Oprócz gór ostrzeżeń z użyciem korzeń, to może umożliwić logowanie roota logując się i wykonywania wynikających z terminala:

sudo passwd

Najpierw wyświetli się monit o podanie hasła, a następnie prośba o zmianę hasła UNIX. Podane hasło będzie dotyczyło rootkonta.

Ubuntu Wiki ma świetny artykuł na głębokości korzeni i sudo wewnątrz Ubuntu - zastrzeżeniami i pułapek.

Marco Ceppi
źródło
5

Tutaj są dwa pytania. Po pierwsze, dlaczego rootowanie jest domyślnie wyłączone w Ubuntu? Zostało to rozwiązane w kilku postach tutaj.

Drugie pytanie brzmi: dlaczego graficzne loginy root są szczególnie zróżnicowane?

Wszystkie wady nielogicznych loginów root dotyczą również graficznych loginów root. Ale kiedy logujesz się graficznie, uruchamiasz o wiele więcej programów, działając w znacznie bardziej skomplikowany sposób, niż gdy logujesz się nielogicznie. Cały graficzny interfejs użytkownika i wszystkie programy graficzne potrzebne do skutecznego korzystania z GUI działałyby jako root. Drobna luka w zabezpieczeniach w dowolnym z nich umożliwiłaby komuś przejęcie pełnej kontroli nad systemem.

Logowanie się jako root nie jest zalecane w Ubuntu, ale społeczność bezpieczeństwa nie ma zgody, że jest to ogólnie zła praktyka. Graficzne loginy root są jednak po prostu złą praktyką i prawie wszystkie systemy operacyjne wycofały je lub zdecydowanie odradzają.

W mniejszym stopniu posiadanie użytkownika innego niż root (zwłaszcza takiego, który może wykonywać operacje jako root z sudo lub PolicyKit) w graficznym logowaniu stanowi ryzyko. Ale są one znacznie bardziej kontrolowane niż wtedy, gdy wszystko w środowisku graficznym musi faktycznie działać jako root z nieograniczonymi możliwościami. Mimo to w sytuacjach, w których bezpieczeństwo jest najważniejsze, zwykle zaleca się całkowite wyeliminowanie interfejsów graficznych, dlatego Ubuntu Server domyślnie nie jest wyposażony w interfejs GUI i oficjalnie odradza jego instalowanie (chociaż jest to obsługiwane) .

W świecie Windows można teraz zainstalować system Windows Server w sposób, który zasadniczo eliminuje graficzny interfejs użytkownika (technicznie niektóre elementy pozostają, ale jest bardzo uproszczony i nie można uruchamiać dowolnych programów graficznych). Opiera się to na tym samym rozumowaniu.

Nawet jeśli zdecydujesz się włączyć logowanie roota, nie loguj się graficznie jako root. Włączenie logowania użytkownika root może spowodować nieznacznie wyższe ryzyko bezpieczeństwa; uruchamianie całego środowiska graficznego jako root naraża Cię na znacznie wyższe ryzyko.

Dodatkowo, z wyjątkiem graficznych narzędzi administracyjnych, które są zaprojektowane do uruchamiania jako root za pomocą gksu / gksudo / kdesudo, większość programów graficznych nie jest przeznaczona do uruchamiania jako root. Ponieważ nie są one dokładnie testowane w tym trybie, mogą zawieść lub zachowywać się nieprawidłowo (co byłoby szczególnie złe, ponieważ działają jako root ).

Wreszcie, nawet niektóre graficzne narzędzia administracyjne, takie jakusers-admin , przestaną działać, jeśli są uruchamiane jako root, ponieważ spodziewają się, że będą uruchamiane przez zwykłych użytkowników i będą wykonywać działania jako root (bez faktycznego uruchamiania jako root) za pomocą PolicyKit.

Eliah Kagan
źródło
4

Otwórz Terminal ( Ctrl+ Alt+ Tlub Dash home> Więcej aplikacji> Zainstalowane (Rozwiń)> Terminal).

ABY AKTYWOWAĆ KONTO ROOT

W terminalu wpisz lub wklej sudo passwd root. Wprowadź normalne hasło logowania (jeśli zostaniesz o to poproszony), a następnie zostaniesz poproszony o wprowadzenie nowego roothasła i potwierdzenie go.

ABY DODAĆ NOWY ZAPYTANIE DO LOGOWANIA, KTÓRE ZEZWALA NA WEJŚCIE DO ROOTA I JEGO HASŁA

W terminalu wpisz lub wklej. gksudo gedit /etc/lightdm/lightdm.conf. Spowoduje to otwarcie graficznego okna edytora tekstu, w którym możesz edytować plik konfiguracyjny ekranu logowania.

Dodaj linię greeter-show-manual-login=truena dole pliku.

Plik powinien teraz brzmieć następująco:

[SeatDefaults]
greeter-session=unity-greeter
user-session=ubuntu
greeter-show-manual-login=true

Zapisz lightdm.confplik i wyjdź z gedit.

Uruchom ponownie Ubuntu 12.04, a zobaczysz nowe okno „Logowanie” (zastępuje poprzednie okno „Inne”), które umożliwia wprowadzenie nazwy użytkownika i hasła. Wprowadź rootnazwę użytkownika, a następnie hasło przypisane do konta root.

Mam nadzieję, że to pomaga innym, którzy potrzebują / chcą rootdostępu.

Pete
źródło
2

tak jak w Ubuntu 12.04 LTS, możesz to zrobić, korzystając z uprawnień roota:

echo "greeter-hide-users=true" >> /etc/lightdm/lightdm.conf

Następnie zostaniesz poproszony o wpisanie nazwy użytkownika i hasła, aby zalogować się graficznie. Zakładam, że ustawiłeś już hasło roota :)

Wiem, że istnieje niezliczony powód, dla którego nie powinieneś logować się bezpośrednio jako root, jednak zdarzają się rzadkie przypadki (na przykład w polu testowym uruchomionym w vmware), kiedy naprawdę doceniasz poczucie bycia rootem.

Allan Ruin
źródło
1

Ponieważ użytkownik root i administrator (w systemie Windows) są odpowiednikami boga dla komputera. Ten użytkownik może dostosować wszystko, od uprawnień do plików, a nawet do usuwania całego systemu plików. Przeciętny użytkownik domowy często działa jako administrator (pod tą nazwą lub inną nazwą skonfigurowaną przy pierwszym uruchomieniu). Ponieważ każdy program wykonywany jako ten użytkownik jest ogólnosystemowy, staje się niebezpieczny.

Brak kontroli nad uprawnieniami administracyjnymi pozwala na wirusy / złośliwe oprogramowanie, a nawet na problemy autodestrukcyjne. Z tego powodu wiele dystrybucji, w tym Ubuntu, ograniczyło przejście do wysokiej mocy o dodatkowy krok (nieco poznawczy krok, który pomaga upierać się, że „wszelkie zmiany, które tu wprowadzam, są zmianami o większym zasięgu”).

Casey Keller
źródło
heh heh. ... „wszelkie zmiany, które tu wprowadzam, mają większy zasięg”.
emf
1

Chociaż nie możesz zalogować się bezpośrednio jako root (z powodów, które inni już dobrze wyjaśnili), możesz uruchamiać aplikacje GUI jako root. Na przykład System → Administracja → Synaptic Package Manager to aplikacja graficzna działająca jako root.

Aby uruchomić aplikację jako root (aplikacja tekstowa lub aplikacja GUI), wystarczy użyć jednego z następujących poleceń:

sudo name-of-the-application
gksu name-of-the-application

Są prawie identyczne. Główną różnicą jest to, że pierwszy pyta o twoje hasło na terminalu, drugi używa graficznego okna dialogowego.

Andrea Corbellini
źródło
1
Różnica między sudoi gksujest bardziej znacząca niż w przypadku wprowadzenia hasła. gksujest preferowany dla aplikacji GUI i sudowiersza poleceń, patrz tutaj i tutaj
Warren Hill
1

Root naprawdę nie jest zalecany do normalnego użytkowania, ale czasami masz długą listę poleceń terminalowych, które wymagają uprawnień roota i po prostu wygodniej jest zalogować się jako root. Używam sudo xtermlub gksu xtermotwieram terminal root. Myślę, że trochę łatwiej jest rozróżnić, które okno terminów ma uprawnienia roota, gdy masz przydatny monit „root @”.

Barry K.
źródło
0

Uwaga dodatkowa: Ubuntu nie zezwala użytkownikom GUI na logowanie się jako root, ponieważ Ubuntu zapobiega przypadkowemu usunięciu lub usunięciu ważnych plików za pomocą aplikacji GUI (takich jak nautilus).

Dzięki interfejsowi użytkownika CLI można zmniejszyć ryzyko naszego błędu. Ale wcześniej nie mogliśmy zalogować się przy użyciu roota nawet w trybie CLI, ponieważ Ubuntu tworzy losowe hasło do roota. Zadanie administracyjne root można wykonać tylko przy użyciu hasła użytkownika z poleceniem sudo lub gksu.

Opiera się na zasadzie Debiana.

squallbayu
źródło
co oznacza polecenie gksu?
Renjith G
1
man gksu: gksu - GTK + frontend dla su i sudo
squallbayu 13.10.10
1
Przepraszam, znowu, dla mnie niewystarczająco jasne
Renjith G
Mam na myśli „gksu” oznacza nakładkę GTK + dla su i sudo.
squallbayu
1
tak, masz rację. spróbuj „gksu nautilus” w terminalu. Pojawią się Nautilus z uprawnieniami roota.
squallbayu
0

Biorąc pod uwagę, że nie ma dobrych powodów, aby zalogować się jako root , zgaduję, że różnica między RH (zezwalaj na rootowanie) a ubuntu (rób wszystko używając sudo / gksu) jest kwestią preferencji.

Jeśli chodzi o drugą część pytania, powinieneś być w stanie uruchomić instalację graficzną, logując się jako zwykły użytkownik, naciskając ALT-F2i wchodząc gksu. W wyświetlonym oknie dialogowym wpisz polecenie uruchamiające instalator.

agnul
źródło
0

Root nie jest zalecany do codziennych zadań. Ponieważ zapewnia on superużytkownikowi wcześniejsze możliwości, może być niewłaściwie wykorzystywany. Nie ma opcji rootowania przy logowaniu.

Ashu
źródło
0

Zawsze powinieneś zalogować się jako użytkownik, a następnie sudo, aby wykonać działania jako root. System Ubuntu jest skonfigurowany tak, aby domyślnie umożliwiał ci większość dostępu. Drobne zmiany zajmą się resztą (jak dodanie Twojego przyzwyczajonego do innych grup). Logowanie się jako root jest uważane za złą praktykę. Najlepszą praktyką w branży jest tutaj domyślna konfiguracja.

Ktoś, kto może zalogować się jako root, może być bardzo zły z punktu widzenia bezpieczeństwa.

Hej Gary
źródło