Jesteś administratorem, ale nie jesteś root
. root
Uż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-data
uż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, root
których nie można zrobić, ponieważ sam system nie może ich wykonać ani nadać im sensu. Więc root
nie 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 init
uruchamianych jako root
i root
służy do wykonywania zadań administracyjnych.
Czy mogę się zalogować jako root
?
Możliwe jest skonfigurowanie root
konta, 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ć root
jako jak www-data
, lp
, nobody
i innych kont niż ludzkie. (Uruchom cat /etc/passwd
lub, getent passwd
aby 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 root
połączeniu z ilu graficzny programy nie są przeznaczone do pracy jak root
i 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 root
jest domyślnie wyłączona w Ubuntu, istnieją sposoby, aby uzyskać root
powłokę bez uwierzytelniania jako root
, które wytwarzają podobny efekt: najczęściej są sudo -s
albo-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ę root
zalogować, zanim nastąpi logowanie; z sudo
metodami 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 ek
uż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 sudo
polecenia do uruchomienia jako root
:
sudo command...
Będzie to skłonić mnie do mojego hasła. (To nie root
jest hasło; root
nie 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. sudo
polecenia 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 root
uprawnień nadal nie powiedzie się, z wyjątkiem sytuacji, gdy polecenie zostanie uruchomione jakoroot
.
Zrzut ekranu ilustrujący potrzebę sudo
wykonywania zadań administracyjnych. (Na podstawie "sandwich" przez Randall Munroe ).
sudo, graficznie
Programy graficzne mogą działać jako root
pośrednictwem interfejsów graficznych dlasudo
takich jak gksu
/gksudo
a kdesudo
. Na przykład, aby uruchomić GParted tak, root
jakbym 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 root
uprawnień. (Jest to możliwe również przy sudo
uwierzytelnianiu 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 root
z gksudo
innymi sudo
interfejsami 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ż sudo
nakładki GUI jako sposób, w jaki aplikacje na Ubuntu wykonują działania root
za 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
, pkexec
moż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...
pkexec
monituje 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 gksudo
niż 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 pkexec
z 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
root
jest wyjątkowy, ponieważ robi wszystko, co można zrobić. Ale jest to konto użytkownika jak każde konto, a sposoby uruchamiania poleceń jak root
w 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 sudo
pierwszy? Jak to bezpieczeństwo ?!
Uruchamianie poleceń za pomocą sudo
przypomina 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 root
przy 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ć?
su
uwierzytelnia się jako inny użytkownik i uruchamia polecenie (lub uruchamia interaktywną powłokę). Można ograniczyć, kto może używać su
, ale su
uwierzytelnia 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 username
przypadku sudo
, wprowadź hasło . Kiedy uruchomisz polecenie jak w username
przypadku su
, wprowadź username
hasło .
Ponieważ su
wykonuje uwierzytelnianie dla użytkownika docelowego , su
możesz uruchamiać polecenia tylko jako użytkownicy, których konta są włączone .
root
Konto (jak www-data
i 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ć su
do uruchamiania poleceń jako root
.
Państwo może używać su
do 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 su
isudo
Ktoś, kto nie jest administratorem, może nawet su
uruchomić sudo
jako administrator. (Jest to OK, ponieważ potrzebują hasła administratora, aby uruchamiać polecenia jako administrator.) Oznacza to, że ograniczony użytkownik może użyć su
polecenia, sudo
aby 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 su
był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ę sudo
do root
?
Jeśli nie zostanie ponownie skonfigurowany w sudo
celu umożliwienia powodzenia bez hasła, zakończy się niepowodzeniem.
Czy program, który nie powinien być uruchamiany jako root
piggyback dla ostatniego sudo
polecenia, nie wymaga hasła?
To bardzo mało prawdopodobne, aby się udało. Obecnie większość systemów operacyjnych (w tym Ubuntu) sudo
skonfigurował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ę, sudo
na 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ą sudo
lub 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 sudo
a su
i ludzie zalogować się jako root
ręcznie?
Nie, ponieważ istnieją poważne wady związane z umożliwieniem użytkownikom zalogowania się w root
ogó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 root
uprawnień.
Ponadto, podobnie jak potencjalnie złośliwy program może obserwować, co ktoś wpisuje podczas uruchamiania sudo
lub su
, lub utworzyć fałszywe hasło sudo
/ su
monit, 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, admin
grupa jest zachowywana w celu zachowania kompatybilności wstecznej (i nadal zapewnia użytkownikom uprawnienia administracyjne), ale sudo
grupa 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 sudo
i 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).