Ho eliminato il file "/ etc / passwd" e non riesco ad accedere


22

Stavo cercando di cambiare il mio nome utente e anche la mia home directory ( /home/username) e il mio sistema ha iniziato a bloccarsi. Ho eliminato il passwdfile ma avevo un backup chiamato passwd_bkp. Ho provato a rinominare questo passwd_bkpcome passwde non ha funzionato. Nessun comando veniva eseguito ... Ero in una finestra terminale.

Ho riavviato il mio sistema e ora non riesco ad accedere. GRUB offre due opzioni: Linux e modalità di recupero.

Ho provato ad aprire una sessione come root ma dice che il filesystem è corrotto. Non riesco ad accedere ai miei file.

Ho perso tutti i miei file?


1
Alla domanda di follow-up: sostituisci la password, usando la tecnica di recupero. Vedi: askubuntu.com/questions/24006/…
david6

1
@ david6 Quando un utente non è in grado di accedere perché non è presente alcun /etc/passwdfile , non è inoltre possibile ripristinare la password. Devi ripristinare (o ricreare) il passwdfile. E una volta fatto, generalmente non è necessario reimpostare la password.
Eliah Kagan,

@Eliah Kagan: Sono d'accordo, ma stavo rispondendo alla domanda di follow-up, dopo che / etc / passwd è stato (presumibilmente) ripristinato dalla copia di backup.
david6

Dovrai essere più specifico sull'errore.
psusi,

Risposte:


32

No, data la tua descrizione, non hai perso nessuno dei tuoi file (tranne /etc/passwd, che hai eliminato, ma di cui hai eseguito il backup).

Avviare un CD / DVD live di Ubuntu o un'unità flash USB live. Seleziona Try Ubuntu(no Install Ubuntu). Quando il desktop viene caricato, apri una finestra di Nautilus (browser di file). Puoi trovare la partizione per il tuo sistema Ubuntu sotto Devices. Cliccaci sopra per montarlo.

Ora puoi ripristinare il backup. Devi farlo come root, tuttavia. Ecco un modo abbastanza semplice per farlo.

  1. Apri una finestra Terminale ( Ctrl+ Alt+ T). Nel Terminale, digitare cde digitare il Spacetasto, ma non premere Enterancora.

  2. In Nautilus, trova la etcdirectory all'interno del sistema Ubuntu installato. (Questa non è la stessa etcdirectory del CD live. La etcdirectory all'interno del sistema Ubuntu installato si trova nella partizione appena montata.)

  3. Trascina questa etcdirectory nel Terminale, che incollerà il suo percorso completo nel Terminale, completando il cd ...comando.

  4. Premere Enterper eseguire il comando. Ora sei nella directory che conteneva il tuo passwdfile. Suppongo che anche il tuo file di backup passwd_bkpsi trovi qui.

  5. Esegui questo comando:

    sudo cp passwd_bkp passwd
    

Ciò ripristina il passwdfile dal backup, quindi ora dovresti essere in grado di riavviare, rimuovere il CD / DVD o l'unità flash USB e riavviare il sistema Ubuntu installato. Il sistema Ubuntu installato dovrebbe funzionare di nuovo.


Per il futuro, si deve essere consapevoli che non è consigliabile modificare manualmente /etc/passwd, /etc/group, /etc/shadow, o /etc/gshadow. Invece, dovresti usare le utility fornite come parte di Ubuntu per apportare le modifiche necessarie agli utenti e ai gruppi sul tuo sistema. Probabilmente sei consapevole che puoi modificarlo in Impostazioni di sistema o con users-admin. Ma ci sono anche utilissime utility da riga di comando per questo, che sono ancora molto più sicure e facili rispetto alla modifica manuale dei file di configurazione. Ecco la documentazione sulle utility più rilevanti in Ubuntu:

Puoi cambiare il tuo nome utente con alcune di queste utility. Questa risposta spiega un modo in dettaglio. Tuttavia, dovresti essere consapevole (come è attualmente accennato da un commento lì) che alcune applicazioni ritengono che il tuo nome utente rimanga lo stesso. Quindi la modifica del nome utente potrebbe causare alcuni problemi.


Grazie mille. Sono le quattro del mattino qui nel sud del Brasile ... Ero così preoccupato che non riuscivo a dormire. Ci proverò ...
joao rodrigo leao

2
Se non hai effettuato un backup, prova a utilizzare /etc/passwd-o /var/backups/passwd.bak. Assicurati di impostare le autorizzazioni corrette. Esempio:sudo install -m644 /etc/passwd- /etc/passwd
Lekensteyn,

4

In alternativa all'avvio di un livecd, è possibile premere enel menu di grub per modificare la voce della modalità di salvataggio e aggiungere init=/bin/shagli argomenti del kernel. Questo ti porterà direttamente a una shell di root dove puoi copiare il file di backup nell'originale dopo aver rimontato il file system read-write con mount -o remount,rw /.


1
Sei sicuro che funzionerà? Senza /etc/passwd, non esiste alcun utente chiamato root e nessun utente con uid = 0 . Le utility necessarie funzioneranno necessariamente in quelle condizioni insolite?
Eliah Kagan,

1
@EliahKagan, c'è sempre un utente con uid = 0 poiché questo è l'uid con cui il kernel avvia il primo processo. cpo mvnon è necessario / etc / passwd.
psusi,

questo mi ha salvato il culo stupido! modifica manuale su / etc / shadow per quanto riguarda roba crontab. Non sapevo che non si scherzasse con 'shadow' .... Pensavo di essere fottuto ma grazie a dio per @psusi .... Ho modificato il menu di grub per il recupero aggiunto / bin / sh come ha detto , ha seguito la sua cavalcatura e ha appena copiato lo shawdow da / var / backups su quello corrotto in / etc ... Buono come nuovo .. grazie
rowntreerob

2

Dovresti leggere prima la risposta di Eliah Kagan, prima di continuare a leggere questa risposta. Spiega come gestire la situazione e perché di solito non è necessario cambiare manualmente / etc / passwd.

Ad ogni modo se sai davvero cosa stai facendo e devi modificarlo /etc/passwdmanualmente , puoi farlo, ma comunque non dovresti semplicemente cambiare i file con il tuo editor preferito. Invece c'è lo strumento

vipw

Dalle pagine man:

The vipw and vigr commands edits the files /etc/passwd and /etc/group,
respectively. With the -s flag, they will edit the shadow versions of those
files, /etc/shadow and /etc/gshadow, respectively. The programs will set
the appropriate locks to prevent file corruption.

Ad esempio, se si desidera modificare l'UID di un utente, per quanto ne so, modificare i file manualmente, è l'unico modo. Inoltre, se vuoi cambiare la password di un utente e poi tornare alla sua precedente senza saperlo, non c'è modo di usermodfarlo. Ma se si salva la password con hash dal file shadow, quindi si modifica la password dell'utente, è possibile successivamente aggiungere nuovamente la password con hash modificando il file shadow vipw -s.


1

Dopo aver seguito la risposta di @ EliahKagan non ho potuto effettuare l'accesso lightdme il mio account non è stato elencato. Ho scoperto che l'autorizzazione del passwdfile non è stata impostata correttamente; l'utente lightdm non ha avuto accesso ad esso. Ecco come l'ho risolto:

Accedi su un tty Ctrl+ Alt+F1

passare alla /etcdirectory

cd /etc

Quindi modificare le autorizzazioni in 644

sudo chmod 644 passwd

Quindi fa ls -la

la stringa di autorizzazione dovrebbe apparire così

-rw-r--r--

-1

Se riesci ad accedere basta aprire il terminale e provare questo:

sudo cp /etc/passwd- /etc/passwd
sudo chmod 644 /etc/passwd

Altro

Avvia in modalità di ripristino o da Ubuntu live Cd. Quindi, monta la tua vecchia unità:

mkdir /olddrive
mount /dev/hda5 /olddrive
assuming that your old drive is on /dev/hda5.
then, cd to /olddrive/etc
type:
echo "root::0:0:Superuser:/:/bin/bash" > passwd

quindi riavviare. Ciò non imposterà alcun passwd per root.

Quindi, puoi accedere, creare nuovamente tutti i tuoi account, ecc.

Puoi anche usare il backup che si chiama (penso) /etc/passwd-

Modifica : (un altro metodo che non ho mai provato prima, ma penso che dovrebbe funzionare anche)

  • Avvia GRUB all'avvio (premi Escdurante l'avvio)
  • Press eover (modalità di recupero)
  • Premi esopra la riga che inizia con il kernel
  • Premi Spaceed entrainit=/bin/bash
  • stampa Enter
  • stampa b
  • Al prompt dei comandi digitare: cp /etc/passwd- /etc/passwd
  • Riavvia nuovamente su GRUB
  • Press eover (modalità di recupero)
  • Premi esopra la riga che inizia con il kernel
  • Premi Spaceed entrainit=/bin/bash
  • stampa Enter
  • stampa b
  • Al prompt dei comandi digitare mount -o remount,rw /
  • Digitare passwd YOURUSERNAMEHERE(se non si conosce il tipo di nome utente ls /home(ovvero L maiuscola e S minuscola) per un elenco di utenti)
  • Immettere la nuova password al prompt
  • Riavvia l'avvio normale.

fonte

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.