lunedì 6 dicembre 2010

Ripristinare la password perduta

A molti sarà capitato di perdere una password prima o poi e in un sistema multiutente come Linux, senza la password di accesso non si può accedere affatto al proprio computer.
Tuttavia se si dispone di un accesso fisico alla macchina e abbiamo la possibilità di riavviarla e scegliere la modalità di ripristino all’avvio, l’operazione di cambio della password è molto semplice.

Ripristino mediante recovery mode
Ubuntu sin dall’installazione crea almeno due voci nel boot manager (GRUB), la prima è quella che utilizziamo abitualmente e avvia il sistema in modalità normale, la seconda è la modalità di ripristino (recovery mode).
All’avvio del PC appare un messaggio che ci avverte di premere ESC per accedere al menu di GRUB, il boot manager predefinito di Ubuntu.
Premendo ESC sarà presentato l’elenco delle possibilità di scelta di GRUB, generalmente due per ogni versione di kernel installato, la prima per un avvio normale e grafico e la seconda chiamata recovery mode per un ripristino del sistema da console. Per reimpostare la password sceglieremo il recovery mode e premiamo Invio. Al termine del caricamento sarà presentato un prompt
root@nomecomputer:~# dal quale potremo eseguire qualsiasi comando amministrativo senza necessità di immettere la password o usare sudo. Per cambiare la password del nostro utente scriveremo:
passwd nomeutente

Sarà richiesta due volte la password da assegnare, inserirla, confermarla e al termine scrivere exit per procedere col normale avvio del sistema.

Ripristino mediante cambio init
Se la modalità di ripristino non è disponibile oppure non funziona o si blocca in malo modo è possibile avviare il kernel normale, passando delle opzioni per interrompere il caricamento ed accedere ad una riga dei comandi da cui cambiare la password.
Per fare ciò modificheremo temporaneamente il programma di avvio init, indicando al kernel di cambiarlo con una shell bash, anziché con quello predefinito che avvia tutti i servizi normali.




All’avvio interrompere il caricamento con ESC per accedere al menu di GRUB, spostarsi sul primo e premere il tasto e (edit). Spostarsi quindi sulla riga kernel (la seconda) e premere nuovamente e per modificarla.

Cancellare ro quiet splash locale=it_IT e sostituirlo con rw init=/bin/bash e confermare con Invio.
Ritornati alla videata precedente è possibile eliminare la riga quiet che nasconde eventuali messaggi che potrebbero esserci utili. Per farlo ci sposteremo sulla riga quiet e premeremo il tasto d (delete). Questo passaggio non è obbligatorio in alcun modo.

Avviamo quindi il sistema premendo il tasto b (boot). Dopo il caricamento iniziale del sistema ci sarà proposto un prompt di utente root@(none):/# dal quale potremo eseguire il cambio di password con:
passwd nomeutente

Inserire e confermare la password da assegnare all’utente. Uscire da questo ambiente però può essere un attimo problematico, poichè init è il primo programma avviato che tiene in vita tutto il sistema, se lo chiudessimo con exit il sistema crederebbe che è andato in errore tutto il sistema, ma altresì Ubuntu non consente il riavvio dal sistema init rispondendo con un Connection refused se tentiamo il riavvio o lo spegnimento.
Per evitare possibili perdite di dati smontiamo e rimontiamo il file system in sola lettura e assicuriamoci che tutti i dati siano stati scritti su disco prima di dare il fatale exit. In ordine quindi digitiamo:

mount -o ro,remount /
sync
exit


Ci sarà quasi sicuramente risposto un minaccioso: Kernel panic – not syncing: Attempted to kill init! e il sistema si bloccherà. Fatto ciò potremo riavviare senza paura di perdere dati, avendo il sistema in sola lettura e con tutte le scritture già effettuate dato il sync precedente e naturalmente la password cambiata.
Ripristino mediante chroot da CD
Se non è possibile utilizzare nessuno dei due sistemi precedenti, ad esempio perché GRUB è bloccato o protetto da una password, possiamo inserire qualsiasi CD con Linux che ci dia la possibilità di scrivere comandi su una shell, va bene anche il CD di installazione di Ubuntu. In questo ultimo caso la shell la avvieremo manualmente dal menu Applications, Accessories, Terminal.
Sulla riga dei comandi verifichiamo se siamo root scrivendo
whoami
Se non ci sarà risposto root, passiamo a root con sudo -s -H oppure su se la distribuzione non utilizza sudo. Per continuare è necessario essere root.
Se non conosciamo la partizione di avvio di Linux possiamo vedere la tabella delle partizioni con fdisk -l /dev/sda oppure fdisk -l /dev/hda. Dipende da come vengono rilevati i dischi.
Per esempio una tabella delle partizioni tipica riporta:

Disk /dev/sda: 85.8 GB, 85899345920 bytes
255 heads, 63 sectors/track, 10443 cylinders
Units = cilynders of 16065 * 512 = 8225280 bytes
Disk identifier: 0x000c48f1

   Device Boot      Start         End      Blocks          Id         System
/dev/sda1   *           1        5078       40789003+   7      HPFS/NTFS
/dev/sda2            5079     10217      41279017+  83     Linux
/dev/sda3           10218    10443      1815345       5       Extended
/dev/sda5           10218    10443     1815313+    82    Linux swap / Solaris

Osservare le colonne Device e System. La partizione di tipo Linux è una sola, si tratta di sda2, è certamente quella. In un sistema con più partizioni ci si può orientare anche con le dimensioni o con l’ordine.
Montiamo quindi quella partizione e cambiamo l’ambiente attivo con:
mount /dev/sda2 /mnt
chroot /mnt /bin/bash
Fatto ciò ci troveremo una shell bash aperta nell’ambiente di quella partizione, quasi come se avessimo avviato da quella partizione, tutte le operazioni sono reali su quel disco e non come se avessimo avviato da CD.
Cambiare la password è molto semplice da qui:
passwd nomeutente
Inserire e confermare la password. Quindi uscire dall’ambiente chroot, smontare la partizione e riavviare:
exit
umount /mnt
reboot
Esistono anche altre maniere ma dovrebbero bastare queste tre principali. Ciò dovrebbe insegnarci a non fidarci troppo della protezione mediante password, chiunque abbia accesso fisico alla macchina può reimpostare la password o addirittura toglierla temporaneamente e rimetterla esattamente come prima anche senza conoscerla.

Nessun commento:

Posta un commento