sabato 30 giugno 2012

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).

Accedere al menu di GRUB

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.

Scelta del kernel

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.
Modalità di ripristino 
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.

Password cambiata

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.

Accedere al menu di GRUB
Opzioni di avvio del kernel 

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.

Modifica delle opzioni del kernel

Cancellare ro quiet splash locale=it_IT e sostituirlo con rw init=/bin/bash e confermare con Invio.
Avvio del sistema 
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
Kernel panic 
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, in caso di dubbi consultare l’articolo sulle partizioni su Linux.

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

Et voilà il cambio è fatto. 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

Non sei daccordo? Dite la Vostra...