Tiens, au cas où, un petit script que j’ai développé pour restaurer les permissions sur les paquets installés :
[code]#!/bin/bash
#############################################
/!\ A n’utiliser qu’en ultime recours /!\
#############################################
Ce script telecharge dans un repertoire temporaire les
packages deja installes (trouves dans /var/lib/dpkg/info)
les decompresse et recupere l’utilisateur, le groupe et les
permissions sur chaque fichier de chaque paquet.
Il stocke ces informations dans le script ‘RestorePerms.sh’
Il suffit alors de le rendre executable et de le lancer pour
restaurer toutes les permissions du systeme.
A executer en tant que Root afin que le systeme puisse
correctement decompresser le paquetage ‘deb’ et lui attribuer
les bons utilisateurs, groupes et permissions.
#############################################
/!\ A n’utiliser qu’en ultime recours /!\
#############################################
if [ id -u
-gt 0 ]; then
echo ""
echo "Vous devez être root !!!"
echo ""
exit 0
fi
On definit ici le repertoire temporaire
BASE="/tmp/perms"
DOWN="$BASE/Downloads"
SCRP="$HOME/RestorePerms.sh"
Un peu de nettoyage
rm -f $SCRP
rm -Rf $BASE
On cree le repertoire temporaire et on se place dedans
mkdir -p $DOWN
cd $DOWN
Recupere la liste des packages installes
LISTS=ls /var/lib/dpkg/info/*.list
#LISTS=dpkg --get-selections | cut -f1
Pour chaque package
for LIST in $LISTS; do
On extrait le nom reel du paquet
PACKAGE=basename $LIST .list
On cree un repertoire au nom du paquet pour travailler
et on se place dedans
mkdir $DOWN/$PACKAGE
cd $DOWN/$PACKAGE
On telecharge le paquet, l’extrait puis on supprrime le fichier
de paquetage
echo "Telechargement de $PACKAGE"
apt-get download $PACKAGE
dpkg -x *.deb .
rm *.deb
On liste les fichiers et on recupere les utilisateurs, groupes et
permissions pour chacun d’entre eux
cat <> $SCRP
Package : $PACKAGE
EOF
Recupere les permissions et cree les commandes dans
le script de restauration.
find . -printf “chown %u:%g “%p”\nchmod %m “%p”\n” >> $SCRP
On se replace dans le repertoire temporaire
cd $DOWN
Et on supprime le repertoire du ‘paquet’.
rm -Rf $DOWN/$PACKAGE
done
[/code]
Édit : Modification du code pour prendre en compte la commande de fran.b.