Ho fatto lo stesso errore aggiungendo il mio account a un gruppo (ho dimenticato -a
). Avevo installato il mio sistema con il login di root bloccato e il mio account era l'unico sulla macchina.
La risposta accettata non mi ha aiutato. Durante l'avvio in modalità di ripristino, tutto ciò che ho ricevuto è stato un messaggio inutile
Impossibile aprire l'accesso alla console, l'account di root è bloccato. Vedi la pagina man sulogin (8) per maggiori dettagli
Premi ENTER per continuare
Dopo aver premuto INVIO, il sistema si è avviato normalmente: nessuna fortuna ottenere l'accesso come root per risolvere il problema. Lascio questa risposta nel caso in cui qualcuno finisca nelle mie scarpe a questo punto. Utilizzare quanto segue solo se non è possibile accedere alla modalità di ripristino tramite il menu di Grub .
Una procedura dettagliata per ottenere la shell di root:
- Avvia nel menu di Grub ed evidenzia (ma non premere Enter!) L'opzione di avvio normale (predefinita, non di ripristino!).
- Press
e
. Grub mostrerà un editor da riga di comando con più righe, ognuna delle quali può sembrare non familiare se non intimidatoria. Non preoccuparti, eventuali modifiche apportate non vengono salvate in modo permanente.
- Trova la riga che legge
linux ... ro ...
. Questa è la riga di comando del kernel. Sostituire il ro
token con rw
, per rendere il filesystem di root in lettura / scrittura, e aggiungere un altro parametro di riga di comando del kernel, init=/bin/sh
. Questo indica al kernel di eseguire sh
invece di /sbin/init
. Alla fine, la linea dovrebbe apparire come linux ... rw init=/bin/sh ...
. Nota: puoi cavartela anche con il semplice grub>
prompt. Sarò felice di spiegare come, passo dopo passo, se tutto il resto fallisce per te; lascia un commento a questa risposta.
- Dopo la modifica, premere F10per utilizzare i comandi dell'editor per avviare il sistema (o leggere le istruzioni su come avviare proprio sotto la finestra dell'editor, se Grub è compilato in modo diverso). Otterrai il prompt della shell di root, poiché il processo di init viene eseguito come PID 1 con l'identità di root.
- Apporta la modifica che desideri apportare, ad esempio
usermod -a -Gadm,sudo YOURUSERID
. Conferma id -a YOURUSERID
che hai ottenuto la tua iscrizione sudo. Nel caso in cui venga visualizzato un errore "comando non trovato", utilizzare /sbin/usermod
e /bin/id
.
A questo punto non è possibile arrestare o riavviare il sistema in modo pulito. reboot
, halt
o poweroff
non funzionerà, e exit
dalla shell provocherà un panico nel kernel, poiché il processo PID 1 non dovrebbe terminare. Quindi i prossimi due comandi che devi emettere sono:
sync
exec /sbin/init
sync
nel caso in cui qualcosa vada storto, salvare tutte le modifiche su disco e exec
sostituire la shell con il reale init
(che può essere systemd, upstart o System V init, ma viene sempre chiamato /sbin/init
). Molto probabilmente il sistema continuerà ad avviarsi normalmente (nessuna modalità di ripristino).
- Accedi e riavvia il sistema una volta, ad es.
sudo reboot
- avresti dovuto riavere il tuo privilegio sudo. Si consiglia un riavvio, poiché (anche se molto raramente) init
possono essere passati parametri aggiuntivi durante un avvio normale e ciò non è stato fatto. In caso di exec
guasto, è sufficiente ripristinare la macchina e lasciarlo avviare normalmente. Tutti i moderni filesystem di journaling come ext4, xfs e btrfs si ripristinano rapidamente (pochi secondi per un controllo del journal al massimo, se sync
editi prima del reset), e sarai pronto.
Un po 'di sfondo
C'è stata una discussione sulla segnalazione di bug di Debian proprio su questo problema e, per quanto ho capito, è stata decisa una caratteristica e non un errore, che ritengo sia stato piuttosto un errore. Essendo stato in questo settore per 25 anni, non posso fare a meno di essere completamente in disaccordo con l'argomento di Michael Biebl nel messaggio n. 31 in quel thread:
Considera questo: hai un laptop con un account root bloccato. Per impostazione predefinita, il boot loader grub genera una voce di avvio per la modalità di salvataggio. Quindi, anche se si blocca il bios per non consentire l'avvio da CD-Rom o USB e si protegge la password con grub, qualcuno potrebbe ottenere facilmente l'accesso root se si lascia il computer incustodito per un momento.
L'obiezione corretta, IMO, se non abbastanza generale, è stata fatta nel messaggio # 70 da Felipe Sateler:
Per molti (la maggior parte?) Computer, l'accesso fisico significa perdita di sicurezza in termini di gioco, poiché puoi semplicemente smontare la scatola e ottenere il disco rigido.
Questo è vero soprattutto per il laptop, menzionato nell'argomento di Michael: se lo lasci incustodito per un momento, e qualcuno sta cercando i tuoi dati, il laptop semplicemente non sarà più visto. E per qualsiasi macchina, non "molti" o "la maggior parte", anche quelli imbullonati in 8 punti in un rack, non appena l'attaccante ottiene l'accesso fisico alla macchina, il gioco è davvero finito.