Czy sudo można ponownie zainstalować po usunięciu?

61

To wydaje się być problemem z jajkiem kurzym. Najczęstszym zadaniem sudojest instalowanie i usuwanie oprogramowania.

sudo apt-get purge <appname>

Ale sudosamo można usunąć.

sudo apt-get purge sudo # Do not run this command on production computers!

Tu przychodzi zabawa

ubuntu@ubuntu:~$ sudo
bash: /usr/bin/sudo: No such file or directory

Chociaż jest oczywiste, że nikt przy zdrowych zmysłach nie oczyści się sudo(poza mną), można oszukać kogoś , kto uruchomi to polecenie (nie bezpośrednio, w trybie heksadecymalnym lub jakkolwiek to się nazywa), lub ktoś może SSH w przebraniu guru technologii i robić bałagan .

Czy jest więc sposób na ponowne zainstalowanie sudo?

zarejestrowany użytkownik
źródło
3
dobry, którego nigdy nie wiedziałem, że sudo też może się oczyścić! Linux jest tak cholernie konfigurowalny!
user247696,
Naprawdę nie warta odpowiedzi, ponieważ byłoby za późno, gdyby tak się stało, ale nic nie stoi na przeszkodzie, aby ustawić hasło dla rootużytkownika. Możesz wtedy użyć sulub zalogować się bezpośrednio jako root, jeśli masz fizyczny dostęp do komputera (ssh będzie na ogół skonfigurowany tak, aby odrzucał próby zalogowania się jako root).
IMSoP,
Wszystkie odpowiedzi zależą od sposobu uzyskania dostępu do systemu plików z uprawnieniami. Na przykład (licznik): mój Android Asus Memopad nie ma sudoi nie ma „bezpiecznego rozruchu” lub odpowiednika. Jedyny sposób, jaki znam, to przejście do xda-devpełnego pakietu instalacyjnego d / la. Masz szczęście, że tak powiem, że nie masz tego ograniczenia.
Carl Witthoft
@CllWitthoft Android jest pochodną Linuksa, a nie dystrybucją Linuksa. Również Google wprowadził w nim wiele zmian (których nienawidzi większość fanów Linuksa). Rootowanie , które jest dobrze znane na smartfonie z Androidem, to próba zdobycia mocy prawdziwego linuxa na Androidzie.
Zarejestrowany użytkownik
4
Nie możesz się zalogować jako root?
Konrad Höffner

Odpowiedzi:

56

Mogę instalować aplikacje za pomocą:

pkexec apt-get install <appname>

Od man pkexec:

  pkexec allows an authorized user to execute PROGRAM as another user. If
  username is not specified, then the program will be executed as the
  administrative super user, root.

Przypuszczam, że to też pkexec apt-get install sudopowinno działać.


Edycja : teraz mogę potwierdzić: tak , sudomożna zainstalować za pomocą pkexec apt-get install sudo:

zainstaluj ponownie sudo

( kliknij aby powiększyć )

Radu Rădeanu
źródło
@RaduRadeanu To ciekawe, zamierzam spróbować tego dzięki u ......
Premkumar
@Premkumar Przetestuj to ostrożnie! Ostatnie polecenie od pędu ekranu powinna być prawdopodobnie tylko w Twoim przypadku: sudo apt-get install gksu ubuntu-minimal. Ale lepiej sprawdź, które pakiety zostały usunięte w tym samym czasie sudo.
Radu Rădeanu,
5
@Thebluefish Pakiet nazywa się policykit-1(od 12.04). Można go usunąć, ale kosztem usunięcia pakietów, których zwykle potrzebujesz w systemie stacjonarnym, takim jak gnome-corei ubuntu-desktop(na serwerze, bardziej prawdopodobne jest, że nie będzie wymagany przez żaden niezbędny pakiet). Jednak, Radu, co decyduje o tym, że twoje konto może korzystać pkexec apt-get …? Czy jest to coś, co skonfigurowałeś, czy dzieje się to automatycznie, a jeśli tak, co decyduje o tym, że konto może to zrobić?
Gilles
1
@Gilles Nie pamiętam, aby w przeszłości tworzyłem pewne konfiguracje w tym sensie. Przypuszczam, że dzieje się to automatycznie. Jeśli wiesz, co decyduje o tym, że konto może to zrobić, udostępnij; to jest poza moim obszarem specjalizacji.
Radu Rădeanu
2
@Gilles Myślę, że członkowie sudogrupy mogą korzystać pkexec. (Z mojego doświadczenia wynika, że ​​dodawanie użytkowników do tej grupy nadaje pkexecumiejętności, a usuwanie ich z niej usuwa pkexecumiejętności; w ten sposób pkexecwydaje się, że umiejętności nadano tak samo, jak sudoumiejętności w domyślnej sudoerskonfiguracji, co ma sens, ponieważ możliwość sudoi pkexecjako root są głównie to, co czyni użytkownika administratorem Ubuntu.) Nie sądzę, że odinstalowanie sudousunie sudogrupę. Ale ja nie całkowicie pewny moje przypuszczenia są prawdziwe we wszystkich rozsądnych warunkach.
Eliah Kagan
29

Zawsze możesz uruchomić system w trybie odzyskiwania , upuścić do roota i zainstalować go bez sudo.

Vojtech Trefny
źródło
16
czy możesz tutaj dodać istotną i istotną część linku?
Zarejestrowany użytkownik
Jeśli w menu rozruchowym gruba nie ma możliwości odzyskania, naciśnij <kbd> e </kbd> i dodaj `single` do linii rozruchowej. Następnie po uruchomieniu ustaw hasło roota za pomocą passwd. Uruchom ponownie normalnie, w wierszu polecenia wpisz sunowe hasło i uruchom apt-get install sudo(bez sudo
prefiksu
1
Jak uzyskałeś połączenie internetowe z powłoką roota?
Avinash Raj
22

Tak, ponowna instalacja sudopakietu byłaby możliwa za pomocą metody chroot .

  • Pierwsze uruchomienie z dysku Live Ubuntu.

  • Zamontuj wcześniej zainstalowaną partycję Ubuntu w dowolnym katalogu, w którym chcesz. W moim przypadku zamontowałem ją /media/ubuntu.

    sudo mkdir /media/ubuntu
    sudo mount /dev/sdaX /media/ubuntu   # /dev/sdaX - previously installed Ubuntu partition.
    
  • Domyślnie nie można uzyskać połączenia z Internetem po chrootowaniu na partycję, dlatego uruchom poniższe polecenie, aby to działało.

    for d in dev sys run proc; do sudo mount --bind /$d /media/ubuntu/$d ; done
    

Dzięki @Oli za ten wspaniały fragment kodu.

  • Teraz chroot w tym zamontowanym katalogu,

    $ sudo chroot /media/ubuntu
    # apt-get update
    
  • Zainstaluj sudopakiet, uruchamiając,

    # apt-get install sudo
    
  • Teraz wyjdź z chrootowanego środowiska.

    exit
    
  • Wreszcie uruchom system Ubuntu, a teraz przetestuj swoje sudopolecenie, na pewno zadziała.

Avinash Raj
źródło
4

Uruchom z dodatkowym parametrem init=/bin/shw wierszu polecenia jądra. Spowoduje to przejście bezpośrednio do powłoki roota, z której można po prostu uruchomić, apt-get install sudoa następnie uruchomić ponownie. Może być konieczne uruchomienie, /etc/init.d/networking startaby najpierw uzyskać działające połączenie sieciowe. O wiele prostsze niż grzebanie w płytach CD z odzyskiwaniem lub na żywo, jeśli mnie o to poprosisz.

Jules
źródło
1

Jeśli już ustawiłeś lub zaktualizowałeś roothasło do konta użytkownika za pomocą tego polecenia sudo passwd root, nie musisz się martwić o usunięcie. Po sudoprostu zaloguj się na swoje rootkonto, a następnie zainstaluj sudo,

su
apt-get install sudo

wprowadź opis zdjęcia tutaj

Kliknij tutaj, aby powiększyć

Avinash Raj
źródło
działa to, jeśli konto root jest włączone, a na Ubuntu jest zwykle wyłączone. suna moim komputerze wyświetla „su:
Błąd
tak, masz rację, tak powiedziałem. Jeśli już zaktualizowałeś hasło do konta użytkownika root, to nie martwisz się usunięciem. sudoTeraz spróbuj, sudo passwd rootpozwoli to zaktualizować hasło do konta użytkownika root. Teraz ponownie zaloguj się do konta root uruchamiając supolecenie. Po zalogowaniu się będziesz mógł swobodnie wyczyścić sudo. sudo apt-get purge sudoTeraz oczyść sudo przez. Zaloguj się na swoje konto root, aby ponownie zainstalować pakiet sudo, uruchamiając suiapt-get install sudo
Avinash Raj
-1

sudo (i wszelkie inne uprawnienia roota) dotyczą tylko działającego systemu operacyjnego. Jeśli byłeś głupi i usunąłeś sudo (lub / usr / w tym przypadku) i nie masz alternatywnych jak pkexec, możesz po prostu uruchomić z czegoś innego, skopiować brakujące oprogramowanie i uruchomić ponownie.

Dostęp fizyczny niweczy wszelkie zabezpieczenia oprogramowania, jakie może mieć system.

Paweł
źródło
Zalecam rozwinięcie tego w celu wyjaśnienia, co masz na myśli przez „skopiowanie istniejącego oprogramowania”.
Eliah Kagan
Nie jest to jednak bardzo łatwy sposób, aby to naprawić.
Seth
@Seth bez interwencji op Poważnie wątpię, że można to naprawić bez napisania kolejnej odpowiedzi.
Braiam
Cóż, właściwym sposobem jest chroot, ale jest o wiele mniej barbarzyńskich sposobów. Na przykład, logując się jako root (NORMALNIE) lub, jeśli jakoś nie masz hasła roota, po prostu ustaw init = / bin / bash jako parametr jądra, a przejdziesz przez cały system init łącznie z uwierzytelnieniem logowania.
Orion
-2

Ten problem wydaje się być bardzo specyficzny dla Ubuntu. Jako użytkownik inny niż Ubuntu, nawet z początku nie rozumiałem, dlaczego sudo jest w jakiś sposób specjalnym przypadkiem (wiele dystrybucji domyślnie go nie instaluje).

W ogóle nie potrzebujesz sudo. To tylko leniwy skrót, który pozwala wykonać polecenie roota bez konieczności logowania się jako root. Jeśli jednak musisz zrobić coś więcej niż jedno polecenie, okropne jest ciągłe poprzedzanie wszystkiego sudo. Nie wspominając o tym, że używanie sudopowoduje, że użytkownicy ignorują sposób działania uprawnień i konta root. Znacznie bardziej sensowne jest po prostu logowanie się jako root, administrowanie systemem i wylogowywanie się. Zrobisz to, sujeśli jesteś już zalogowany jako zwykły użytkownik. Lub możesz zalogować się bezpośrednio jako root.

Oczywiście musisz rootustawić hasło, to rozsądna konfiguracja, w przeciwnym razie masz system podobny do systemu Windows, w którym są działania, których nikt nie może wykonać, i jesteś naprawdę zablokowany, jeśli jakoś sudonie jest dostępny (wymaga pracy /etc/, ustawienia $PATHi innych rzeczy zamontowane - których możesz nie mieć, jeśli coś pójdzie nie tak na początku rozruchu).

orion
źródło
To może być przydatna informacja, ale nie odpowiada na pytanie.
Luís de Sousa
W rzeczy samej. To naprawdę nie jest tak istotne dla systemu, w którym hasło roota jest wyłączone, a sudo jest domyślnie instalowane. A jeśli spojrzysz na inne odpowiedzi, zobaczysz, że ostatni akapit też nie jest prawdziwy.
Oli
Użytkownik, który rozważa usunięcie sudoz Ubuntu, powinien również rozważyć ustawienie hasła roota (inne pytania wskazywały, jak to zrobić). Użytkownik, który nie dba o to, może nadal używać sudo.
Orion