
Le simple fait :
- d’effacer des fichiers ;
- de formatter une partition ;
- de détruire la partition (avec GParted ou autre) ;
ne suffit aucunement à retirer les fichiers physiquement du disque : les données des fichiers sont toujours présentes sur le disque et il est (relativement) facilement facile de les récupérer (par exemple avec l’outil en ligne de commande foremost).
Pour les effacer de manière plus sécurisée, par exemple avant de revendre un PC ou de donner un disque dur, il est nécessaire de passer des commandes qui vont non pas se contenter d’effacer les fichiers du disque ou d’altérer la partition, mais qui vont écrire des données sur l’intégralité du disque.
Solution 1 - dd
Utiliser la commande dd pour copier des blocs nuls sur tout le disque.
dd if=/dev/zero of=/dev/sdg1 bs=1024 count=732572001
- of : le device de destination (un disque complet ou une partition) ;
- bs : le nombre d’octets à écrire à chaque fois ;
- count : le nombre de blocks à écrire.
Pour trouver le nombre de blocs il est possible de passer par fdisk :
ubuntu:/var/log> sudo fdisk /dev/sdg
Le nombre de cylindres pour ce disque est fixé à 91201.
Il n'y a rien d''incorrect avec cela, mais c'est plus grand que 1024,
et cela pourrait causer des problèmes pour certaines installations:
1) logiciels qui sont exécutés à l'amorçage (i.e., vieilles versions de LILO)
2) logiciels d'amorçage et de partitionnement pour d'autres OS
(i.e., DOS FDISK, OS/2 FDISK)
Commande (m pour l'aide): p
Disque /dev/sdg: 750.1 Go, 750156374016 octets
255 têtes, 63 secteurs/piste, 91201 cylindres
Unités = cylindres de 16065 * 512 = 8225280 octets
Identifiant de disque : 0x000077ba
Périphérique Amorce Début Fin Blocs Id Système
/dev/sdg1 1 91201 732572001 83 Linux
Le nombre de blocs est donné ici pour la partition sdg1 qui couvre tout le disque.
Solution 2 - shred
La solution avec dd se contente de remplir le disque avec des zéros. Les données ne sont plus accessibles directement mais une récupération brute sur le disque peut toujours ramener des fichiers. Pour aller plus loin il est possible de passer par un outil qui fera la même chose que dd, mais avec plusieurs passes, par exemple shred.
shred -vfz -n 64 /dev/sdg
Cette commande va écrite des zéros (option -z), en faisant 64 passes (-n 64), en mode verbose (-v) et en forçant au besoin les permissions (-f).
shred est par défaut installé sur la plupart des systèmes Linux (ex. Ubuntu), au besoin l’installer avec la commande d’installation habituelle, genre :
sudo apt-get install shred
A noter que cette opération est généralement très longue (environ 15h sur mon PC pour faire une seule passe sur un disque dur de 200GO Western Digital branché en SATA).
Remarques.
Il est théoriquement toujours possible de récupérer ensuite des données sur un disque effacé de la sorte, en passant par un laboratoire spécialisé. Ces manipulations, pour des données sensibles, peuvent donc ne pas être suffisantes.
Annexe - Retirer un flag GPT (GUID Partition Table).
Le nouveau format Intel de gestion des partitions est GPT (GUID Partition Table).
Ce format est par exemple utilisé pour les disques montés en RAID avec dmraid. Il fonctionne sans problèmes sous Linux. Toutefois, j’ai galéré cinq bonnes minutes pour trouver comment retirer proprement et facilement cette information d’un disque que l’on souhaite partitionner normalement.
Sans çà, un appel à cfdisk produit le warning suivant :
“Attention!! Identifiant GPT (GUID) de table de partitions non supporté détecté. Utilisez GNU Parted.”
La seule solution simple que j’ai trouvée est d’installer le petit outil gdisk (similaire à fdisk mais pour les partitions GPT) : http://sourceforge.net/projects/gptfdisk
Il suffit ensuite d’aller dans les options “Expert” puis “zap”.
ubuntu:/home/sergio/Bureau> sudo gdisk /dev/sdg
GPT fdisk (gdisk) version 0.6.0
Caution: invalid main GPT header, but valid backup; regenerating main header
from backup!
Warning! One or more CRCs don't match. You should repair the disk!
Partition table scan:
MBR: not present
BSD: not present
APM: not present
GPT: damaged
Found invalid MBR and corrupt GPT. What do you want to do? (Using the
GPT MAY permit recovery of GPT data.)
1 - GPT
2 - Create blank GPT
Your answer: 1
Command (? for help): ?
b back up GPT data to a file
c change a partition's name
d delete a partition
i show detailed information on a partition
l list known partition types
n add a new partition
o create a new empty GUID partition table (GPT)
p print the partition table
q quit without saving changes
r recovery and transformation options (experts only)
s sort partitions
t change a partition's type code
v verify disk
w write table to disk and exit
x extra functionality (experts only)
? print this menu
Command (? for help): i
No partitions
Command (? for help): x
Expert command (? for help): ?
a set attributes
c change partition GUID
d display the sector alignment value
e relocate backup data structures to the end of the disk
g change disk GUID
i show detailed information on a partition
l set the sector alignment value
m return to main menu
n create a new protective MBR
o print protective MBR data
p print the partition table
q quit without saving changes
r recovery and transformation options (experts only)
s resize partition table
v verify disk
w write table to disk and exit
z zap (destroy) GPT data structures and exit
? print this menu
Expert command (? for help): z
About to wipe out GPT on /dev/sdg. Proceed? (Y/N): Y
Blank out MBR? (Y/N): Y
GPT data structures destroyed! You may now partition the disk using fdisk or
other utilities. Program will now terminate.
ubuntu:/home/sergio/Bureau>