Sono entrato per errore
chsh -s /usr/bin
invece di
chsh -s /bin/bash
e ora non riesco ad accedere a una shell root, come posso avviare manualmente una shell bash come root?
sudo vipw
il lavoro?
Sono entrato per errore
chsh -s /usr/bin
invece di
chsh -s /bin/bash
e ora non riesco ad accedere a una shell root, come posso avviare manualmente una shell bash come root?
sudo vipw
il lavoro?
Risposte:
Mentre root non ha accesso, un utente nel gruppo sudo può comunque eseguire comandi privilegiati - sembra che l'errore non sia in sudo, ma altrove nel sudo chsh
comando (es. Errore chsh).
Pertanto il tuo sudo sembra funzionare.
Il file passwd può essere modificato con:
sudo vipw
E la shell di root è cambiata manualmente.
(prima riga del /etc/passwd
solito)
root:x:0:0:root:/root:/bin/bash
Fom man vipw
I comandi vipw e vigr modificano i file / etc / passwd e / etc / group, rispettivamente. Con il flag -s, modificheranno rispettivamente le versioni shadow di quei file, / etc / shadow e / etc / gshadow. I programmi imposteranno i blocchi appropriati per prevenire il danneggiamento dei file.
vipw
e vigr
, grazie! Ho sempre usatosudo vim /etc/passwd
visudo
sudo.ws/man/1.8.15/visudo.man.html , @tac
sudo -e
, che esegue questa funzione di blocco-modifica per qualsiasi modifica.
Un'altra opzione, supponendo che tu abbia accesso a un altro account, è quella di sostituire manualmente la shell predefinita usando su --shell=/bin/bash
:
-s, --shell = SHELL
esegue SHELL se / etc / shells lo consente
Il vantaggio principale di questo è che richiede solo l'accesso a un altro account, non a un altro privilegiato .
Per motivi di sicurezza, gli accessi testuali o grafici e programmi di utilità simili su
e sudo
che consentono di eseguire comandi come utente diverso eseguono tutti questi comandi attraverso la shell dell'utente di destinazione. Se la shell dell'utente di destinazione non è funzionale, beh, hai visto i risultati :-(
A meno che non ti capiti di avere una shell root ancora funzionante in esecuzione da qualche parte o qualcosa come un binario setuid-root o qualcosa che ti permetta di aggirare questo, riavviare e correggere il problema utilizzando un sistema di salvataggio o un'immagine live è probabilmente la soluzione migliore.
Avvia il sistema di salvataggio, monta il filesystem di root del tuo sistema reale da qualche parte, diciamo /mnt/foo
, e modifica /mnt/foo/etc/passwd
per riparare la shell. Salva, smonta e il gioco è fatto.
/etc/passwd
non è un testo in chiaro? Non lo vedo da almeno un decennio. È ancora qualcosa su alcuni sistemi? Ad ogni modo, immagino che chroot /mnt/foo chsh -s /bin/bash
potrebbe fare il trucco in quel caso?
Aggiungi init=/bin/bash
alla tua riga di comando del kernel (se fai il boot con grub, premi e
per modificare la voce di avvio), e avrai una shell bash in esecuzione come root senza nemmeno dover fornire una password. Probabilmente il tuo filesystem di root verrà comunque montato in sola lettura, quindi dovrai rimontarlo prima, quindi puoi cambiare la shell con chsh
.
sudo usermod -s /bin/bash jdoe
cambierà il guscio di jdoe in bash
. È quindi possibile sudo egrep jdoe /etc/passwd
verificare.