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 vipwil 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 vipwil 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 chshcomando (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/passwdsolito)
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.
vipwe 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 sue sudoche 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/passwdper riparare la shell. Salva, smonta e il gioco è fatto.
/etc/passwdnon è 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/bashpotrebbe fare il trucco in quel caso?
Aggiungi init=/bin/bashalla tua riga di comando del kernel (se fai il boot con grub, premi eper 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/passwdverificare.