Powiedzmy, że poszedłem i zrobiłem głupie rzeczy, takie jak użycie „chsh” do zmiany powłoki użytkownika root na złą ścieżkę pliku. Przyszłe logowanie do konta root nagle się nie powiedzie, powołując się na / bin / cokolwiek, co nie zostanie znalezione, i uruchomi się ponownie na ekranie logowania. Wyłączając tryb odzyskiwania lub wkładając LiveCD do edycji / etc / passwd, jakie są moje opcje odzyskania systemu? Załóżmy również (dla zabawy?), Że nie ma innych użytkowników w kole. Myśli?
23
Odpowiedzi:
Podczas uruchamiania dołącz
init=/bin/bash
(lub ścieżkę do dowolnej innej powłoki funkcjonalnej) do opcji rozruchu - zostaniesz przeniesiony bezpośrednio do powłoki jednego użytkownika. Być może trzeba będzie to zrobićmount -o remount,rw /
przed zmodyfikowaniem/etc/passwd
wpisu w tym środowisku. Następnie po prostu uruchom ponownie lub zróbexec /sbin/init 3
. Wystarczy zrobić nie wpisaćexit
lub naciśnij Ctrl + D, jak byłoby to spowodować panikę jądra *.Jedna dodatkowa odmiana tej metody może być konieczna w niektórych systemach załadowanych w trybie dwustopniowym (z obrazem initrd). Jeśli zauważysz, że opcje rozruchu zawierają
init=
i, co najważniejszereal_init=
, to miejsce do umieszczenia/bin/bash
powinno być drugim parametrem (tjreal_init=/bin/bash
.).* Dzieje się tak, ponieważ w tym środowisku jądro postrzega powłokę jako program init - który jest jedynym procesem, który zna jądro - reprezentuje działający system pod okiem jądra. Nagłe zakończenie tego procesu, bez informowania jądra o zamknięciu systemu, musi spowodować panikę jądra. (Czy nie panikowałbyś, gdyby nagle wszystko wokół ciebie stało się czarne i milczące?)
źródło
exec
, ale chyba lepiej nie zepsuć wcześniej punktów montowania./etc/passwd
)./
) przed uruchomieniem init./bin/bash
jest uruchamiany dokładnie w punkcie, a następnie/sbin/init
będzie uruchamiany przy normalnym rozruchu. Dlatego w tym czasie system nie może wykonać żadnej możliwej akcji.Możesz użyć
su
i określić powłokę do wykonania (nie jestem pewien, czy próbujesz zasugerować, że nie jest to możliwe, gdy twoja notatka o braku innych użytkownikówwheel
):W przeciwnym razie możesz zrobić coś podobnego, jeśli demon ssh pozwala na logowanie do rootowania:
Możesz również ustawić powłokę jako init w bootloaderze, na przykład
init=/bin/ksh
lub podobnym.źródło
Jeśli twój program ładujący jest skonfigurowany tak, aby umożliwić edycję na żywo parametrów jądra, rozwiązaniem jest ponowne uruchomienie i użycie powłoki jako procesu inicjalizacji, np
init=/bin/bash
. Następnie zamontuj wszystko, co trzeba zamontować ręcznie, i edytuj/etc/passwd
.sync
i uruchom ponownie ze zwykłyminit
.źródło
Jeśli sedno twojego pytania polega na tym, że zablokowałeś wszystkie sposoby na rootowanie, z definicji nie możesz rootować.
Powszechnie dopuszcza się trzy sposoby rootowania w systemie uniksowym:
root
po zalogowaniu i wpisując hasło roota. To uruchamia powłokę roota.su
i wpisując hasło roota. W niektórych systemach wymaga to bycia w określonej grupie (często nazywanejwheel
); w innych systemach każdy, kto zna hasło roota, może zostać rootem. Systemy używające PAM do uwierzytelniania używająpam_wheel
do zarządzania grupą kół, jeśli ją mają. Jeśli podasz polecenie za pomocąsu -c
, zostanie ono wykonane za pomocą powłoki roota.sudo
i wpisując własne hasło. Konto użytkownika musi otrzymać uprawnienia sudo od administratora. O ile nie jest to ograniczone wsudoers
pliku, możesz uruchomić dowolne polecenie, niezależnie od powłoki roota.Tradycyjnym sposobem ochrony przed niedostępnością powłoki roota jest zdefiniowanie innego konta z UID 0 i inną powłoką (
toor
to tradycyjna nazwa). Na przykład, jeśli powłoka roota jest dynamicznie połączonym plikiem wykonywalnym (dobrym pomysłem, aby zaoszczędzić pamięć), a aktualizacja biblioteki pójdzie nie tak, powłoka roota może być bezużyteczna. Alternatywne konto root miałoby statycznie powiązany plik wykonywalny, prawdopodobnie z wbudowanymi typowymi narzędziami, takimi jak BusyBox .źródło
Powyższe odpowiedzi są świetne i nauczyłem się z ich czytania. Jeśli nie pamiętasz szczegółów tych podejść i nie masz nic przeciwko ponownemu uruchomieniu, zawsze możesz uruchomić system za pomocą dystrybucji CD na żywo, zamontować partycję /, a następnie edytować / etc / passwd i zrestartować komputer. Nie tak eleganckie jak powyższe rozwiązania, ale łatwiejsze do zapamiętania.
źródło
/etc/passwd
pliku. Poza tym, dobra uwaga - chciałem tylko dodać tę samą sugestię do mojej odpowiedzi.