Jesteś administratorem, ale nie jesteś root. rootUżytkownik może nic zrobić. Administratorzy mogą wykonywać działania jakoroot , ale zwykle to, co robią administratorzy, nie jest wykonywane root. W ten sposób masz pełną kontrolę nad własnym systemem, ale tylko wtedy, gdy zdecydujesz się go używać.
Ubuntu prosi o podanie hasła, gdy próbujesz robić różne rzeczy root, aby upewnić się, że to naprawdę Ty.
Konta użytkowników: ludzkie i inne
Prawdziwi użytkownicy mają konta użytkowników do ich reprezentowania. Utworzyłeś jedno takie konto podczas instalacji Ubuntu. Ale nie wszystkie konta użytkowników reprezentują prawdziwych użytkowników .
Prawdziwym użytkownikom przypisuje się (i odmawia) zdolności za pośrednictwem ich kont użytkowników. Muszą używać swoich kont użytkowników, aby korzystać z systemu; dlatego mają do nich zastosowanie możliwości i ograniczenia ich kont użytkowników.
Konta użytkowników służą również do kodyfikacji zestawów umiejętności i ograniczeń. Niektóre konta użytkowników - w rzeczywistości, chyba że masz wielu ludzkich użytkowników maszyny - istnieją, aby niektóre programy lub polecenia mogły być uruchamiane z ich tożsamością, tożsamością o odpowiednich możliwościach i ograniczeniach dla zadania.
Na przykład www-dataużytkownik istnieje, więc jeśli uruchamiasz serwer WWW, jest on właścicielem danych, które serwer udostępnia. Żaden prawdziwy użytkownik nie musi być upoważniony do wprowadzania niekontrolowanych zmian w tych danych, a serwer WWW nie musi być upoważniony do wykonywania żadnych czynności niepotrzebnych do obsługi Internetu. W związku z tym zarówno dane sieciowe, jak i reszta systemu są bardziej zabezpieczone przed przypadkowym lub umyślnym uszkodzeniem, niż gdyby serwer sieciowy był uruchamiany przez jakiegoś człowieka, który posiadałby wszystkie uprawnienia serwera WWW (i którego uprawnienia serwer WWW miałby posiadać).
Najważniejsze konto użytkownika innego niż człowiek
Superuser , którego nazwa jest root, jest nie-ludzka konto użytkownika o bardzo specyficznej kombinacji umiejętności i ograniczeń: wszystkie możliwości, a nie ograniczenia .
root„y wolno nic robić. Wciąż są rzeczy, rootktórych nie można zrobić, ponieważ sam system nie może ich wykonać ani nadać im sensu. Więc rootnie można zabić procesu, który jest w nieprzerwanym śnie , ani uczynić skały zbyt ciężką, aby się poruszać, a następnie przenieść ją .
Wiele ważnych procesów systemowych, takich jak inituruchamianych jako rooti rootsłuży do wykonywania zadań administracyjnych.
Czy mogę się zalogować jako root?
Możliwe jest skonfigurowanie rootkonta, aby można było zalogować się przy użyciu hasła, ale domyślnie nie jest włączone w Ubuntu. Zamiast tego, można myśleć rootjako jak www-data, lp, nobodyi innych kont niż ludzkie. (Uruchom cat /etc/passwdlub, getent passwdaby zobaczyć je wszystkie.)
Ludzcy użytkownicy logują się przy użyciu własnych kont użytkowników, a następnie, jeśli jakieś zadanie ma zostać wykonane przy użyciu innego konta użytkownika, powodują, że zadanie wykonuje się z tą tożsamością , bez faktycznego zalogowania się jako ten użytkownik.
Możliwe jest skonfigurowanie innych użytkowników innych niż ludzie, na przykład www-data, aby można było się również zalogować. Jest to jednak dość rzadkie, podczas gdy w niektórych innych systemach uniksowych często loguje się jak root w terminalu . Ryzyko związane z prowadzeniem cały interfejs graficzny w rootpołączeniu z ilu graficzny programy nie są przeznaczone do pracy jak rooti może nie działać poprawnie, oznacza to, że nigdy nie należy próbować uzyskać root-owned sesji pulpitu .
Należy pamiętać, że podczas logowania, jak rootjest domyślnie wyłączona w Ubuntu, istnieją sposoby, aby uzyskać rootpowłokę bez uwierzytelniania jako root, które wytwarzają podobny efekt: najczęściej są sudo -salbo-i , tryb odzyskiwania i podobne techniki . (Nie martw się, jeśli nie wiesz, co to takiego.) To nie jest logowanie: w trybie odzyskiwania możesz się rootzalogować, zanim nastąpi logowanie; z sudometodami opartymi na systemie , po prostu uruchamiasz powłokę jako root.
Administratorzy
W Ubuntu administratorzy to użytkownicy, którzy mogą robić, co chcą root, kiedy tylko zechcą .

Ustawienia systemowe> Konta użytkowników. „Eliah Kagan” jest administratorem, więc może robić rzeczy jako root, ale nie jestroot .
Jestem administratorem mojego systemu Ubuntu. Kiedy uruchamiam programy, zwykle działają one jako ek(„Eliah Kagan” to pełna nazwa odpowiadająca nazwie ekużytkownika).
Kiedy uruchamiam AbiWord lub LibreOffice, działa jako ek. Kiedy uruchamiam Firefox, Chromium, Empathy lub Pidgin, działa jako ek. Programy działające w celu zapewnienia interfejsu pulpitu działają jako ek.
Jestem jednak administratorem, więc jeśli muszę wykonać zadanie administracyjne, mogę to zrobić.
sudo
W wierszu poleceń zwykle używałbym sudopolecenia do uruchomienia jako root:
sudo command...
Będzie to skłonić mnie do mojego hasła. (To nie rootjest hasło; rootnie ma.)
- Ponieważ jestem administratorem, mogę wykonywać akcje jako
root. W domyślnej konfiguracji muszę wprowadzić moje hasło, aby to zrobić.
- Użytkownicy, którzy nie są administratorami, nie mogą wykonywać akcji
root, nawet po wprowadzeniu hasła. sudopolecenia zakończą się niepowodzeniem, jeśli uruchamiający je użytkownik nie jest administratorem.
Ponieważ administratorzy są całkowicie zwykłymi użytkownikami, z wyjątkiem możliwości wykonywania akcji as root, uruchomienie polecenia wymagającego rootuprawnień nadal nie powiedzie się, z wyjątkiem sytuacji, gdy polecenie zostanie uruchomione jakoroot .

Zrzut ekranu ilustrujący potrzebę sudowykonywania zadań administracyjnych. (Na podstawie "sandwich" przez Randall Munroe ).
sudo, graficznie
Programy graficzne mogą działać jako rootpośrednictwem interfejsów graficznych dlasudo takich jak gksu/gksudo a kdesudo. Na przykład, aby uruchomić GParted tak, rootjakbym mógł uruchomić gksudo gparted. Następnie zostaniesz poproszony graficznie o podanie hasła.

Ponieważ pojawia się monit graficzny, nie musi istnieć terminal. Jest to jeden ze sposobów uruchamiania narzędzi administracyjnych root.
Polkit
Polkit (niegdyś znany jako PolicyKit) to kolejny sposób dla administratorów na robienie takich rzeczy jak root. Program uzyskuje dostęp do usługi wykonującej akcję. Czasami akcja uruchamia cały program; czasami akcja jest bardziej ograniczona.
Obecnie wiele graficznych narzędzi do administrowania systemem jest skonfigurowanych tak, aby domyślnie korzystały z pakietu polkit, a nie z nich sudo.
Jednym z przykładów takiego narzędzia jest Centrum oprogramowania. W pełni wykorzystuje polkit, wymagając od użytkownika wprowadzenia hasła tylko wtedy, gdy chce zrobić coś , co wymaga rootuprawnień. (Jest to możliwe również przy sudouwierzytelnianiu opartym na danych, ale jest trudniejsze i trudniejsze do osiągnięcia).
W Centrum oprogramowania mogę znaleźć i przeczytać o aplikacji; wtedy jestem proszony o podanie hasła, kiedy chcę je zainstalować.

Czym różni się polkit
Dowolny program graficzny może być uruchamiany rootz gksudoinnymi sudointerfejsami graficznymi . (Program może nie działać zbyt dobrze, w zależności od tego, czy ma być używany jako root. Ale polecenie uruchomienia programu zostanie wykonane jako root.)
Podczas gdy polkit jest teraz bardziej powszechny niż sudonakładki GUI jako sposób, w jaki aplikacje na Ubuntu wykonują działania rootza kulisami, polki uruchomi aplikację graficzną tylko tak, root jakby istniał plik konfiguracyjny pozwalający na to i wskazujący, jakie akcje można wykonać .
Polkit, nie graficznie
pkexec to komenda używana do uruchamiania programu z polkit.
Podobnie sudo, pkexecmożna uruchamiać polecenia nie graficzne. (I nie wymaga pliku konfiguracyjnego określającego możliwości polecenia - po prostu uruchamia polecenie jako root.)
pkexec command...
pkexecmonituje o hasło w formie graficznej, nawet jeśli jest uruchamiane z terminala (jest to jeden ze sposobów, w których jego zachowanie jest bardziej podobne gksudoniż uruchamianie prosto sudo).
(Jeśli nie ma GUI - na przykład, jeśli jesteś zalogowany z wirtualnej konsoli lub sesji SSH w trybie tekstowym lub GUI nie działa poprawnie - wtedy pkexecz wdziękiem się pogorszy i poprosi o podanie hasła w wierszu poleceń .)

Po pomyślnym przeprowadzeniu uwierzytelnienia polecenie jest uruchamiane w terminalu.

Uruchamianie poleceń jak inni użytkownicy root
rootjest wyjątkowy, ponieważ robi wszystko, co można zrobić. Ale jest to konto użytkownika jak każde konto, a sposoby uruchamiania poleceń jak rootw sudo(bezpośrednio lub z graficznym interfejsem użytkownika) lub polkit można nieznacznie zmodyfikować, aby uruchomić polecenie jak każdy inny użytkownik:
sudo -u username command...
gksudo -u username command...
pkexec --user username command...
Co? Po prostu piszesz sudopierwszy? Jak to bezpieczeństwo ?!
Uruchamianie poleceń za pomocą sudoprzypomina przywoływanie papieskiej nieomylności .
Kiedy uruchomisz polecenie zsudo [wywołaj nieomylność papieża] , Ubuntu [lud katolicki] stara się upewnić, że naprawdę jesteś [naprawdę papieżem].
Tak, wiem, że nieomylność papieża (nawet gdy jest normatywna) jest deklaratywna; równoległość nie jest idealna.
Próba zrobienia czegoś takiego jak rootprzy pomocy sudo(lub polkit) to wielka sprawa - Ubuntu nie tylko pozwoli, aby przesuwało się to tak samo, jak przy innych uruchomieniach programu.
Zostaniesz poproszony o podanie hasła. (To, co zrobiłeś, zostaje zapamiętane na krótki czas, więc nie musisz ciągle wprowadzać hasła podczas administrowania systemem.)
Oprócz przypomnienia o ostrożności należy zabezpieczyć się przed dwoma scenariuszami:
- Ktoś korzysta z twojego komputera (lub urządzenia mobilnego), być może pod pozorem sprawdzenia swojej poczty e-mail lub w podobnym nieszkodliwym celu. Tutaj nadal mogą wyrządzić krzywdę - na przykład mogą zmodyfikować lub usunąć twoje dokumenty. Nie mogą jednak administrować systemem, ponieważ nie mogą podać hasła.
- Programy, które nie powinny administrować systemem, nie mogą tego zrobić, chyba że podasz hasło. Na przykład jeśli twoja przeglądarka jest narażona na błąd bezpieczeństwa i uruchamia złośliwy kod, nadal nie może wykonywać zadań administracyjnych. Nie może tworzyć i usuwać użytkowników, modyfikować programów zainstalowanych jako
root(co obejmuje wszystko instalowane przez menedżera pakietów, takich jak LibreOffice), ani zmieniać systemu na głębokim poziomie.
Słyszałem o su. Co to jest? Czy mogę tego użyć?
suuwierzytelnia się jako inny użytkownik i uruchamia polecenie (lub uruchamia interaktywną powłokę). Można ograniczyć, kto może używać su, ale suuwierzytelnia się przy użyciu hasła do konta docelowego , a nie hasła uruchomionego użytkownika.
Na przykład działa jako nazwa użytkownika , podobnie jak .su username -c 'command...'command...sudo -u username command...
Ale kiedy uruchomisz polecenie tak jak w usernameprzypadku sudo, wprowadź hasło . Kiedy uruchomisz polecenie jak w usernameprzypadku su, wprowadź usernamehasło .
Ponieważ suwykonuje uwierzytelnianie dla użytkownika docelowego , sumożesz uruchamiać polecenia tylko jako użytkownicy, których konta są włączone .
rootKonto (jak www-datai nobody) jest domyślnie wyłączona. Nie ma hasła, które będzie działać, aby zalogować się jako root. Dlatego nie można używać sudo uruchamiania poleceń jako root.
Państwo może używać sudo wykonywania poleceń jako inny użytkownik, który może zalogować się (który zazwyczaj zawiera wszystkie konta użytkowników w systemie, które reprezentują ludzi).
Po zalogowaniu jako gość nie możesz w ogóle korzystać su.
Łączenie suisudo
Ktoś, kto nie jest administratorem, może nawet suuruchomić sudojako administrator. (Jest to OK, ponieważ potrzebują hasła administratora, aby uruchamiać polecenia jako administrator.) Oznacza to, że ograniczony użytkownik może użyć supolecenia, sudoaby uruchomić polecenie jako root. Może to wyglądać następująco:
su username -c 'sudo command...'
(Uruchamianie programów graficznych w ten sposób wymaga specjalnej uwagi ).
Czy nie subyłoby bezpieczniejszym sposobem uruchamiania poleceń jako root?
Prawdopodobnie nie.
Co jeśli użytkownik nie powinien mieć możliwości działania root?
Ustaw je jako ograniczonego użytkownika zamiast administratora.
Co zrobić, jeśli program pracuje jako administrator stara się sudodo root?
Jeśli nie zostanie ponownie skonfigurowany w sudocelu umożliwienia powodzenia bez hasła, zakończy się niepowodzeniem.
Czy program, który nie powinien być uruchamiany jako rootpiggyback dla ostatniego sudopolecenia, nie wymaga hasła?
To bardzo mało prawdopodobne, aby się udało. Obecnie większość systemów operacyjnych (w tym Ubuntu) sudoskonfigurowała się domyślnie, tak aby znaczniki czasu były stosowane tylko w określonym kontekście.
Na przykład, jeśli uruchomię sudo ...na jednej karcie Terminala i pomyślnie się uwierzytelnię, sudona innej karcie (lub uruchamiany przez niepowiązany program GUI lub uruchamiany z konsoli wirtualnej lub sesji SSH) nadal będzie monitowany o hasło. Nawet jeśli jest uruchamiany natychmiast potem.
Czy program działający jako użytkownik X nie ma dostępu do hasła użytkownika X?
Nie.
Jeśli złośliwy program może działać jako administrator, czy nie może „wsłuchiwać się” w to, co jest wpisywane, gdy administrator uwierzytelnia się za pomocą sudolub uruchamia polkit?
Potencjalnie tak. Ale wtedy może „podsłuchiwać” wpisane hasło su.
Jeśli powiem komuś moje hasło -
Nie podawaj ludziom swojego hasła.
Co jeśli ktoś musi znać moje hasło, aby zrobić coś w moim imieniu, ale nie chcę pozwolić mu na administrowanie systemem?
Idealnie powinny mieć osobne konto użytkownika, które pozwala im robić to, co trzeba. Na przykład może udostępniać pliki między kontami, umożliwiając wielu użytkownikom pisanie na nich, jednocześnie odmawiając dostępu innym użytkownikom.
Jednak w sytuacji, gdy mniej zaufana osoba może uzyskać zezwolenie na udostępnienie konta, powinno to być konto użytkownika z ograniczonym dostępem. Możesz w tym celu utworzyć osobne konto (co ma sens - jeśli jest to konto dla ciebie i kogoś, kogo chcesz mieć inne możliwości, powinno to być inne konto).
Tak, to najbardziej bezpieczne rzeczą jest, aby nie pozwolić zarówno sudoa sui ludzie zalogować się jako rootręcznie?
Nie, ponieważ istnieją poważne wady związane z umożliwieniem użytkownikom zalogowania się w rootogóle. O ile to możliwe, należy podjąć jak najmniejszą liczbę działań root. Nawet większość czynności związanych bezpośrednio z administrowaniem systemem (np. Przeglądanie konfiguracji użytkowników i odczytywanie dzienników) zwykle nie wymaga rootuprawnień.
Ponadto, podobnie jak potencjalnie złośliwy program może obserwować, co ktoś wpisuje podczas uruchamiania sudolub su, lub utworzyć fałszywe hasło sudo/ sumonit, potencjalnie złośliwy program może również stworzyć fałszywy ekran logowania.
Co sprawia, że użytkownik jest administratorem?
Członkostwo w grupie.
W systemie Ubuntu 12.04 i nowszych administratorzy są członkami grupy o nazwie sudo.
W systemie Ubuntu 11.10 i wcześniejszych administratorzy są członkami grupy o nazwie admin.
Gdy system Ubuntu przed 12.04 zostanie zaktualizowany do wersji 12.04 lub nowszej, admingrupa jest zachowywana w celu zachowania kompatybilności wstecznej (i nadal zapewnia użytkownikom uprawnienia administracyjne), ale sudogrupa jest również używana.
Konta z ograniczoną liczbą użytkowników
Czy mogę korzystać z konta użytkownika z ograniczonym dostępem zamiast konta administratora?
Jeśli chcesz, na pewno. Utwórz konto użytkownika z ograniczeniami w Ustawieniach systemu > Konta użytkowników i zaloguj się jako ten użytkownik.
Czy mogę ustawić moje konto administratora jako ograniczone konto użytkownika?
Tak, po prostu usuń go z grup sudoi admin(patrz wyżej).
Należy jednak upewnić się, że istnieje co najmniej jedno inne konto administratora, aby można było administrować systemem. Jeśli nie, musisz uruchomić komputer w trybie odzyskiwania lub na dysku CD i ponownie ustawić administratora jako administratora . (Jest to podobne do resetowania utraconego hasła administratora ).
Graficzne narzędzia do administrowania użytkownikami i grupami zwykle powstrzymują cię przed tworzeniem systemu bez administratorów lub przynajmniej ostrzegają. Narzędzia wiersza poleceń zwykle tego nie robią (ufając, że wiesz, co robisz).