Sudo può essere reinstallato dopo essere stato rimosso?


61

Questo sembra essere un problema di uova di gallina. L'attività più comune utilizzata sudoè l'installazione e la rimozione del software.

sudo apt-get purge <appname>

Ma sudostesso può essere rimosso.

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

Qui è dove arriva il divertimento

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

Sebbene sia ovvio che nessuna persona nella sua mente giusta eliminerà sudo(tranne me), qualcuno può essere ingannato per eseguire questo comando (non direttamente, nella sua modalità esadecimale, o come si chiama) o una persona potrebbe SSH mascherata da guru della tecnologia e fare il casino .

Quindi c'è un modo per reinstallare sudo?


3
bravo che non sapevo nemmeno che anche sudo potesse essere eliminato! Linux è così dannatamente personalizzabile!
user247696

Non vale davvero una risposta, poiché sarebbe troppo tardi se ciò accadesse, ma non c'è nulla che ti impedisca di impostare una password per l' rootutente. È quindi possibile utilizzare suo accedere direttamente come root se si dispone dell'accesso fisico alla macchina (generalmente ssh verrà configurato per rifiutare i tentativi di accesso come root).
IMSoP

Tutte le risposte dipendono da un modo di accedere al filesystem con privilegi. Per esempio (contatore): il mio Android Asus Memopad non ha sudoe non ha "avvio sicuro" o equivalente. L'unico modo che conosco è di andare al xda-devpacchetto di installazione completa precompilato. Sei fortunato, per così dire, che non hai questa limitazione.
Carl Witthoft,

@CarlWitthoft Android è un derivato di Linux, che in realtà è una distribuzione Linux. Anche Google ha apportato molte modifiche (che la maggior parte dei fan di Linux odia). Il rooting , che è ben noto su smartphone Android, non è altro che un tentativo di ottenere i poteri del vero Linux su Android.
Utente registrato

4
Non riesci ad accedere come root?
Konrad Höffner,

Risposte:


56

Posso installare applicazioni usando:

pkexec apt-get install <appname>

Da 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.

Quindi, suppongo che pkexec apt-get install sudodovrebbe funzionare anche.


Modifica : ora posso confermare: , sudopuò essere installato utilizzando pkexec apt-get install sudo:

reinstallare sudo

( clicca per ingrandire )


@RaduRadeanu Questo è interessante, lo proverò grazie ...
Premkumar,

@Premkumar Provalo con precauzione! L'ultimo comando dal germoglio schermo dovrebbe essere probabilmente solo in vostro caso: sudo apt-get install gksu ubuntu-minimal. Ma meglio, controlla quali pacchetti sono stati rimossi contemporaneamente sudo.
Radu Rădeanu,

5
@Thebluefish Il pacchetto è chiamato policykit-1(a partire dal 12.04). Può essere rimosso, ma a spese della rimozione di pacchetti che di solito si desidera su un sistema desktop come gnome-coree ubuntu-desktop(su un server, è più probabile che non sia richiesto da alcun pacchetto necessario). Tuttavia, Radu, cosa determina che il tuo account può utilizzare pkexec apt-get …? È qualcosa che hai configurato o succede automaticamente e, in tal caso, cosa determina che un account può farlo?
Gilles 'SO- smetti di essere malvagio' il

1
@Gilles Non ricordo di aver fatto alcune configurazioni in questo senso in passato. Quindi, suppongo che ciò avvenga automaticamente. Se sai cosa determina che un account può fare questo, ti preghiamo di condividere; questo è al di fuori della mia area di competenza.
Radu Rădeanu,

2
@Gilles Penso che i membri del sudogruppo possano usare pkexec. (La mia esperienza è che l'aggiunta di utenti a questo gruppo conferisce pkexecabilità e rimuovendole da esso rimuove le pkexecabilità; in questo modo, le pkexecabilità sembrano essere conferite come le sudoabilità nella sudoersconfigurazione predefinita , il che ha senso dal momento che essere in grado sudoe pkexeccome root sono principalmente ciò che rende un utente un amministratore di Ubuntu.) Non credo che la disinstallazione sudorimuoverà il sudogruppo. Ma io non del tutto sicuro mie supposizioni sono vere in tutte le circostanze ragionevoli.
Eliah Kagan,

29

Puoi sempre avviare la modalità di ripristino , rilasciarlo nella shell di root e installarlo senza sudo.


16
puoi aggiungere la parte essenziale e pertinente dal link qui?
Utente registrato

Se non è disponibile alcun ripristino nel menu di avvio di grub, premere <kbd> e </kbd> e aggiungere `single` alla linea di avvio. Quindi, una volta avviato, imposta una password di root usando passwd. Riavvia normalmente, sulla riga di comando inserisci suseguito dalla nuova password ed esegui apt-get install sudo(senza il sudoprefisso)
ExploWare

1
Come hai ottenuto la connessione Internet su shell root?
Avinash Raj,

22

Sì, la reinstallazione del sudopacchetto sarebbe possibile tramite il metodo chroot .

  • Primo avvio dal disco live di Ubuntu.

  • Montare la partizione Ubuntu precedentemente installata in qualsiasi directory desiderata. Nel mio caso, l'ho montata /media/ubuntu.

    sudo mkdir /media/ubuntu
    sudo mount /dev/sdaX /media/ubuntu   # /dev/sdaX - previously installed Ubuntu partition.
    
  • Per impostazione predefinita, non è stato possibile ottenere la connessione a Internet dopo il chrooting in una partizione, quindi eseguire il comando seguente per farlo funzionare.

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

Grazie a @Oli per questo meraviglioso pezzo di codice.

  • Ora chroot in quella directory montata,

    $ sudo chroot /media/ubuntu
    # apt-get update
    
  • Installa il sudopacchetto eseguendo,

    # apt-get install sudo
    
  • Ora esci dall'ambiente chroot.

    exit
    
  • Infine avvia il tuo sistema operativo Ubuntu. Ora prova il tuo sudocomando, funzionerà sicuramente.


4

Avviare con il parametro aggiuntivo init=/bin/shnella riga di comando del kernel. Questo ti metterà direttamente in una shell di root, da cui puoi semplicemente eseguire apt-get install sudoe riavviare. Potrebbe essere necessario eseguire /etc/init.d/networking startper ottenere prima una connessione di rete funzionante. Molto più semplice che scherzare con CD di ripristino o dischi live, se me lo chiedi.


1

Se hai già impostato o aggiornato la rootpassword dell'account utente con questo comando sudo passwd root, non ti preoccupare di eliminare. sudoBasta accedere al tuo rootaccount e quindi installare sudo,

su
apt-get install sudo

inserisci qui la descrizione dell'immagine

Clicca qui per ingrandire


funziona se l'account di root è abilitato e su Ubuntu di solito è disabilitato. susul mio pc dà "su:
Errore di

Sì, hai ragione, è quello che ho detto. Se hai già aggiornato la password dell'account utente root, non ti preoccupare di eliminare sudo. Ora prova questo, sudo passwd rootti permetterà di aggiornare la password dell'account utente root. Ora accedi nuovamente al tuo account root eseguendo sucommand.Una volta che sarai in grado di accedere, sarai libero di eliminare sudo.Ora elimina sudo da. sudo apt-get purge sudoAccedi al tuo account root per reinstallare il pacchetto sudo eseguendo sueapt-get install sudo
Avinash Raj

-1

sudo (e qualsiasi altro privilegio di root) si applica solo al sistema operativo in esecuzione. Se sei stato sciocco e rimosso sudo (o / usr / per quella materia) e non hai alternative come pkexec puoi semplicemente avviare da qualcos'altro, copiare il software mancante e riavviare di nuovo.

L'accesso fisico annulla qualsiasi protezione software del sistema.


Ti consiglio di espandere questo per spiegare cosa intendi con "copia il software esistente".
Eliah Kagan,

Tuttavia, non è un modo molto semplice per risolverlo.
Seth

@Seth senza intervento operativo Dubito seriamente che possa essere risolto senza scrivere un'altra risposta.
Braiam

Bene, il modo corretto di farlo sarebbe chroot, ma ci sono molti modi meno barbari. Ad esempio, accedendo come root (il modo NORMAL) o, se in qualche modo non si dispone della password di root, impostare init = / bin / bash come parametro del kernel e si passa all'intero sistema init inclusa l'autenticazione di login.
Orione,

-2

Questo problema sembra essere molto specifico per Ubuntu. Come utente non ubuntu all'inizio non ho nemmeno capito perché sudo sarebbe un caso speciale in alcun modo (molte distribuzioni non lo installano di default).

Non hai assolutamente bisogno di sudo. È solo una scorciatoia pigra che ti permette di eseguire un comando di root senza accedere come root. Tuttavia, se devi fare qualcosa di più di un singolo comando, è semplicemente terribile anteporre costantemente tutto con sudo. Per non parlare del fatto che l'utilizzo sudorende gli utenti ignoranti sul funzionamento delle autorizzazioni e dell'account root. Ha molto più senso semplicemente accedere come root, fare l'amministrazione del sistema e disconnettersi. Che cosa fare suse hai già effettuato l'accesso come utente normale. Oppure puoi accedere direttamente come root.

Ovviamente devi avere la rootpassword impostata, questa è la configurazione ragionevole, altrimenti hai un sistema simile a Windows in cui ci sono azioni che nessuno può eseguire e sei davvero bloccato se in qualche modo sudonon è disponibile (richiede lavoro /etc/, set $PATHe altro cose montate - che potresti non avere se qualcosa va storto all'inizio del boot).


Queste possono essere informazioni utili, ma non rispondono alla domanda.
Luís de Sousa,

Infatti. Questo non è poi così rilevante per un sistema in cui la password di root è disabilitata e sudo è installato di default. E se guardi le altre risposte, vedrai che anche l'ultimo paragrafo non è vero.
Oli

Un utente che intende rimuovere sudoda Ubuntu dovrebbe anche considerare di impostare la password di root (altre domande hanno sottolineato come farlo). Un utente a cui non importa di queste cose, può continuare a usare sudo.
Orione,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.