User Tools

Site Tools


operating_systems:linux:debian:chmod_rescue

CHMOD Rescue

Ainsi, vous avez tapé la commande interdite : chmod -R 777 /

Prérequis

Il est nécessaire d'avoir au moins un backup du système. Plus ce backup est proche de l'installation actuelle, plus la restauration des droits sera complète. Néanmoins, un backup proche de l'installation de base devrais suffire pour permettre un redémarrage du système.

Dans notre cas, le backup était une image complète de la carte flash (dd if=/dev/sdb of=~/backup.hdd).

Sauvetage

Récupération des droits du backup

Il nous faut tout d'abord récupérer les droits de notre image de backup, en montant l'image comme un disque et en lisant les permissions de chaques fichiers.

Création du point de montage :

root# mkdir /mnt/cf.bck

Comme notre backup est une image complète du disque (incluant le MRB), il faut chercher la position de la partition dans l'image. Pour cela, on peut utiliser l'utilitaire parted.

root# parted ~/backup.hdd

GNU Parted 2.3
Using ~/backup.hdd
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) unit B
(parted) print
Model: (file)
Disk ~/backup.hdd: 4000317440B
Sector size (logical/physical): 512B/512B
Partition Table: msdos

Number Start End Size Type File system Flags
1 31744B 3999236095B 3999204352B primary ext4

(parted) quit

L'information qui nous intéresse est la position Start de la partition (31744).

On peut alors monter notre partition :

root# mount -o loop,rw,offset=31744 ~/backup.hdd /mnt/cf.bck

Pour être sûr que les chemins soient correctes, on se chroot dans le backup :

root# chroot /mnt/cf.bck

On lit alors les droits de chaques fichiers de notre backup et l'on crée un script qui réinitialisera notre système :

root@chroot# find /mnt/cf.bck -exec stat –format “chmod %a /mnt/cf%n” {} \; > /restoreperms.sh

Comme l'on ne pourra probablement pas se chrooter dans le système, on rajoute un préfix au format de stat pour que tous nos chemins commence par /mnt/cf.

On peur alors sortir du chroot :

root@chroot# exit

Restauration des droits

Création du point de montage pour le système :

root# mkdir /mnt/cf

Montage du système :

root# mount /dev/sdb1 /mnt/cf

Application des droits :

root# bash /mnt/cf.bck/restoreperms.sh

On devrait pouvoir désormais démarrer sur le système.

Réparations des programmes

Liens

operating_systems/linux/debian/chmod_rescue.txt · Last modified: 2013/07/24 09:15 by jzaehrin