Jak uruchomić polecenie jako administrator systemu (root)

66

Muszę uruchomić polecenie z uprawnieniami administracyjnymi. Ktoś powiedział, że powinienem uruchomić polecenie jako root. Jak mam to zrobic?

Stefan
źródło
2
zobacz meta dyskusję na temat tego pytania
Stefan,

Odpowiedzi:

94

Główne dwie możliwości wiersza poleceń to:

  • suPo wyświetleniu monitu użyj i wprowadź hasło roota.
  • Umieść sudoprzed poleceniem i po wyświetleniu monitu wprowadź hasło.

Uruchamianie polecenia powłoki jako root

sudo (preferowane, gdy nie jest uruchomiony wyświetlacz graficzny)

Jest to preferowana metoda w większości systemów, w tym Ubuntu, Linux Mint, (prawdopodobnie) Debian i innych. Jeśli nie znasz osobnego hasła roota, skorzystaj z tej metody.

Sudo wymaga wpisania własnego hasła. (Celem jest ograniczenie szkód, jeśli pozostawisz klawiaturę bez nadzoru i odblokowania, a także upewnienie się, że naprawdę chcesz uruchomić to polecenie i nie było to np. Literówka.) Często konfiguruje się, aby nie pytać ponownie o kilka minut, aby można było uruchamiać kilka sudopoleceń kolejno.

Przykład:

sudo service apache restart

Jeśli chcesz uruchomić kilka poleceń jako root, przedrostek każdego z nich za pomocą sudo. Czasami wygodniej jest uruchomić interaktywną powłokę jako root. Możesz sudo -ido tego użyć :

$ sudo -i
# command 1
# command 2
...
# exit

Zamiast tego sudo -imożesz użyć sudo -s. Różnica polega na tym, że -iponownie mogę nitializes środowiska na rozsądnych domyślnych, podczas gdy -sużywa plików konfiguracyjnych na lepsze lub gorsze.

Aby uzyskać więcej informacji, zobacz witrynę sudo lub wpisz man sudow swoim systemie. Sudo jest bardzo konfigurowalny; na przykład można go skonfigurować tak, aby pewien użytkownik wykonywał tylko niektóre polecenia jako root. Przeczytaj sudoersstronę podręcznika, aby uzyskać więcej informacji; służy sudo visudodo edycji pliku sudoers.

su

suPolecenie istnieje w większości systemów Unix. Pozwala uruchomić polecenie jako inny użytkownik, pod warunkiem, że znasz hasło tego użytkownika. Po uruchomieniu bez określonego użytkownika, sudomyślnie będzie to konto root.

Przykład:

su -c 'service apache restart'

Polecenie do uruchomienia należy przekazać przy użyciu -copcji. Zauważ, że potrzebujesz cudzysłowów, aby polecenie nie zostało przeanalizowane przez powłokę, ale przekazane w stanie nienaruszonym do uruchomionej powłoki głównej su.

Aby uruchomić wiele poleceń jako root, wygodniej jest uruchomić interaktywną powłokę.

$ su
# command 1
# command 2
...
# exit

W niektórych systemach musisz być w grupie 0 (nazywany wheel), aby użyć su. (Chodzi o to, aby ograniczyć szkody, jeśli hasło roota zostanie przypadkowo wyciekłe do kogoś).

Logowanie jako root

Jeśli masz ustawione hasło roota i jesteś w jego posiadaniu, możesz po prostu wpisać rootpolecenie logowania i wprowadzić hasło roota. Bądź bardzo ostrożny i unikaj uruchamiania złożonych aplikacji jako root, ponieważ mogą robić coś, czego nie zamierzałeś. Logowanie bezpośrednio jako root jest przydatne przede wszystkim w sytuacjach awaryjnych, takich jak awarie dysku lub po zablokowaniu konta.

Tryb pojedynczego użytkownika

Tryb pojedynczego użytkownika lub poziom uruchamiania 1 daje również uprawnienia roota. Jest to przeznaczone przede wszystkim do sytuacji związanych z konserwacją awaryjną, w których nie jest możliwe uruchomienie z poziomu uruchamiania wielu użytkowników. Możesz uruchomić system w trybie pojedynczego użytkownika, przekazując singlelub emergencyw wierszu poleceń jądra. Pamiętaj, że uruchomienie w trybie pojedynczego użytkownika to nie to samo, co normalne uruchomienie systemu i zalogowanie się jako root. Zamiast tego system uruchomi tylko usługi zdefiniowane dla poziomu uruchamiania 1. Zazwyczaj jest to najmniejsza liczba usług wymaganych do posiadania użytecznego systemu.

Można również dostać się do trybu jednego użytkownika za pomocą polecenia telinit: telinit 1; jednak to polecenie wymaga, abyś już uzyskał uprawnienia root'a za pomocą innej metody w celu uruchomienia.

W wielu systemach uruchomienie w trybie pojedynczego użytkownika zapewni użytkownikowi dostęp do powłoki roota bez pytania o hasło. W szczególności systemdsystemy oparte na monitach o podanie hasła roota podczas uruchamiania w ten sposób.

Inne programy

Calife

Calife pozwala uruchamiać polecenia jako inny użytkownik, wpisując własne hasło, jeśli jest autoryzowane. Jest podobny do znacznie bardziej rozpowszechnionego sudo (patrz wyżej). Calife jest bardziej lekki niż sudo, ale także mniej konfigurowalny.

Op

Op pozwala uruchamiać polecenia jako inny użytkownik, w tym root. To nie jest pełnowartościowe narzędzie do uruchamiania dowolnych poleceń: wpisujesz, opa następnie mnemonik skonfigurowany przez administratora systemu, aby uruchamiał określone polecenie.

Wspaniały

Super pozwala uruchamiać polecenia jako inny użytkownik, w tym root. Polecenie musi zostać dozwolone przez administratora systemu.

Uruchamianie polecenia graficznego jako root

Zobacz także Wikipedię .

PolicyKit (preferowany przy korzystaniu z GNOME)

Po prostu poprzedź żądane polecenie poleceniem pkexec. Pamiętaj, że chociaż działa to w większości przypadków, nie działa uniwersalnie.

Zobacz man pkexecwięcej informacji.

KdeSu, KdeSudo (preferowane przy korzystaniu z KDE)

kdesui kdesudosą graficznymi nakładkami odpowiednio do sui sudo. Umożliwiają uruchamianie programów X Window jako root bez żadnych problemów. Są częścią KDE . Rodzaj

kdesu -c 'command --option argument'

i wprowadź hasło roota lub wpisz

kdesudo -c 'command --option argument'

i wprowadź hasło (jeśli masz uprawnienia do uruchamiania sudo). Jeśli zaznaczysz opcję „zachowaj hasło” w KdeSu, będziesz musiał wpisać hasło roota tylko raz na sesję logowania.

Inne programy

Ktsuss

Ktsuss („zachowaj su prosty, głupi”) to graficzna wersja su.

Beesu

Beesu to graficzny interfejs do polecenia su, który zastąpił Gksu w systemach operacyjnych opartych na Red Hat. Został opracowany głównie dla RHEL i Fedory.

Przestarzałe metody

gksu i gksudo

gksui gksudosą graficznymi nakładkami odpowiednio do sui sudo. Umożliwiają uruchamianie programów X Window jako root bez żadnych problemów. Są częścią Gnome . Rodzaj

gksu command --option argument

i wprowadź hasło roota lub wpisz

gksudo command --option argument

i wprowadź hasło (jeśli masz uprawnienia do uruchamiania sudo).

gksui gksudosą przestarzałe. Zostały one zastąpione przez PolicyKit w GNOME i wiele dystrybucji (takich jak Ubuntu) nie instaluje ich już domyślnie. Nie powinieneś polegać na tym, że są one dostępne lub działają poprawnie.

Ręcznie za pomocą jednej z metod opartych na powłoce

Użyj jednej z metod w „uruchamianiu polecenia powłoki jako sekcji głównej”. Musisz upewnić się, że ani DISPLAYzmienna środowiskowa, ani XAUTHORITYśrodowisko nie zostaną zresetowane podczas przejścia na root. Może to wymagać dodatkowej konfiguracji tych metod, które są poza zakresem tego pytania.

Ogólnie rzecz biorąc, jest to zły pomysł, głównie dlatego, że aplikacje graficzne odczytują i zapisują pliki konfiguracyjne jako root, a gdy spróbujesz ponownie użyć tych aplikacji jako zwykłego użytkownika, aplikacje te nie będą miały uprawnień do odczytu ich własnych konfiguracji.

Edycja pliku jako root

Zobacz Jak mogę edytować plik jako root?

Gilles
źródło
2
Należy zauważyć, że sudobędzie działać tylko wtedy, gdy (1) jest zainstalowany i (2), jeśli twoje użycie znajduje się w pliku sudoers i pozwala na wykonanie operacji.
n0pe
2
to musi zostać zaktualizowane. pkexecobecnie zastępuje gksu/ gksudow wielu dystrybucjach.
strugee,
1
@strugee - czy spróbujesz to zaktualizować? Treści w Redhat też nie są poprawne.
slm
8

Użyj su:

$ su -c command

lub

$ su
# command
# exit

W obu przypadkach zostaniesz poproszony o podanie roothasła. Aby uzyskać więcej informacji, zobacz stronę podręcznika .

Steven D.
źródło
3

Ponieważ pytanie nie było specyficzne dla Linuksa, oto jak osiągnąć ten sam cel w Solarisie 9+ (lub Trusted Solaris 8):

Solaris, od wersji 9, zawiera zestaw narzędzi pieszczotliwie nazywanych RBAC lub Role Based Access Control.

Istotą RBAC jest to, że poprzez przyznawanie autoryzacji i praw użytkownikom i / lub roli, lub przyznawanie ról użytkownikom, można tworzyć niewiarygodnie drobnoziarniste modele dla tego, kto może uruchamiać, z którymi uprawnieniami.

Zasadniczo identyfikujesz autoryzację w / etc / security / auth_attr, a następnie przyznajesz ją użytkownikom lub rolom w / etc / user_attr.

Definiujesz profile w / etc / security / prof_attr. Następnie kojarzysz polecenia z tymi profilami w / etc / security / exec_attr, a następnie przypisujesz te profile użytkownikom w pliku / etc / user_attr.

Po wykonaniu tych czynności faktycznie uruchomisz pfexec <command>polecenie z uprawnieniami lub autoryzacjami przyznanymi temu użytkownikowi dla tego polecenia.

Zaletą RBAC jest to, że nie przyznaje się żadnych dodatkowych uprawnień samej komendzie ani użytkownikowi, tylko kombinacji użytkownik + komenda. Jest to więc bezpieczniejsze niż tworzenie plików binarnych + lub używanie sudo, aby użytkownik mógł wykonać prawie wszystko. (Wiem, że możesz zablokować sudo, ale z mojego doświadczenia wynika, że ​​większość ludzi tego nie robi)

Kolejną zaletą RBAC jest to, że możesz ustawić root jako konto roli i przypisać tę rolę użytkownikom, którzy mogą stać się rootem za pomocą polecenia „su” i hasła roota. Użytkownik root będzie mógł także logować się w trybie pojedynczego użytkownika, co jest lepsze (moim zdaniem) niż model Linux, w którym można wyłączyć hasło roota passwd -d rootlub zablokować konto roota passwd -l root, co powoduje, że logowanie się jako root jest dość trudne, gdy coś pójdzie nie tak.

Ben Rockwood ma świetny post na blogu na temat RBAC, który można przeczytać na stronie Korzystanie z RBAC na (Otwartym) Solarisie .

Tim Kennedy
źródło
3

Lub możesz nadać niektórym poleceniom supermoce. Mówię o specjalnych uprawnieniach, w których polecenia są wykonywane za zgodą właściciela.

Uzyskaj ścieżkę polecenia #which <command>i ustaw SUID lub SGID dla tej ścieżki.

Bity PS - SUID i SGID należy podawać ostrożnie. Mogą sprawić, że twój system będzie niepewny.

Ayush Goyal
źródło