En essayant de déboguer un serveur de messagerie, j'ai tapé:
chmod -R 777 /
au lieu de:
chmod -R 777 .
et la cerise sur le gâteau, parce que j'ai oublié d'avoir changé le script que j'utilise pour me connecter afin de réparer quelque chose, j'ai fait tout cela en tant que root. Je n'ai pas de sauvegarde de la plupart des systèmes (mauvais choix, je le sais).
Contrairement aux questions "Récupération de chmod -R -777 /" et "Que faire après 'chmod -R 777 /'?" Je suis toujours connecté en tant qu'utilisateur root, et l'ensemble du système n'a pas été modifié. J'ai donc un certain contrôle sur le système. J'ai également quitté le commandement en une seconde pour minimiser les dégâts. Depuis lors, j'ai physiquement déconnecté le serveur d'Internet.
Je crois qu'un script pourrait résoudre ce problème s'il restaurait les autorisations du système de fichiers en fonction des données du gestionnaire de paquets, mais je ne sais pas comment procéder. Si ce n'est pas possible, comment puis-je enregistrer les données du serveur pour réinstaller le système d'exploitation?
Je suis conscient des risques potentiels de manquer un fichier, mais préférerais que la récupération réinstalle malgré eux.
voici la sortie actuelle de ls -la /
:
drwxrwxrwx 22 root root 4096 Sep 7 2016 .
drwxrwxrwx 22 root root 4096 Sep 7 2016 ..
drwxr-xr-x 2 root root 4096 May 18 07:55 bin
drwxr-xr-x 3 root root 4096 Sep 21 07:53 boot
drwxr-xr-x 19 root root 3180 Sep 11 20:54 dev
drwxrwxrwx 92 root root 4096 Aug 23 07:50 etc
drwxr-xr-x 4 root root 4096 May 23 2016 home
lrwxrwxrwx 1 root root 31 Feb 24 2016 initrd.img -> /boot/initrd.img-3.16.0-4-AMD64
drwxrwxrwx 18 root root 4096 Feb 24 2016 lib
drwxr-xr-x 2 root root 4096 Jun 20 07:00 lib64
drwx------ 2 root root 16384 May 19 2016 lost+found
drwxrwxrwx 2 root root 4096 May 5 2015 media
drwxr-xr-x 2 root root 4096 May 5 2015 mnt
drwxr-xr-x 3 root root 4096 May 28 2016 opt
dr-xr-xr-x 148 root root 0 Sep 3 21:55 proc
drwxrwxrwx 10 root root 4096 Aug 19 17:58 root
drwxr-xr-x 22 root root 800 Sep 21 17:09 run
drwxrwxrwx 3 root root 4096 Jun 20 07:00 sbin
drwxr-xr-x 4 root root 4096 Sep 20 23:18 sftp
dr-xr-xr-x 13 root root 0 Sep 3 21:55 sys
drwxrwxrwx 8 root root 4096 Sep 21 17:17 tmp
drwxrwxrwx 11 root root 4096 Feb 24 2016 usr
drwxr-xr-x 14 root root 4096 Jun 25 06:21 var
lrwxrwxrwx 1 root root 27 Feb 24 2016 vmlinuz -> boot/vmlinuz-3.16.0-4-AMD64
je viens de remarquer que, pris de panique, j’ai cliqué sur le forum Ubuntu et non sur Debian, je ne suis pas conscient que ce n’est pas comment on règle un serveur de messagerie. c'était un correctif bâclé hacky pour voir ce qui a éclaté
iv republié cela dans le bon forum maintenant
Comment restaurer les droits du répertoire racine par défaut?
Règle n ° 1: si vous n'êtes pas à l'aise avec les lignes de commande, n'exécutez aucune commande en tant que root.
Lancer chmod -R 777 /
en tant que root cassera votre système.
Exécuter rm -rf /
en tant que root entraînera un sinistre! .
Si vous avez exécuté chmod -R 777 /
en tant que root, procédez comme suit pour le restaurer:
Copiez le script suivant, collez-le sur votre console pour générer le script fixpermission
echo '
chmod -R 755 /bin /boot /dev /etc/ /home /lib /lib64 \
/media /mnt /opt /run /sbin /srv /usr /var
chmod -R 777 /initrd.img /vmlinuz
chmod -R 1777 /tmp
chmod -R 555 /sys
chmod -R 555 /proc
chmod -R 700 /root
' > fixpermission
chmod +x fixpermission
./fixpermission
Ce qui précède créera un script nommé fixpermission et l'exécutera par ./fixpermission
s'il n'est pas déjà appelé.
Exécutez stat -c '%A %a %n' /*
pour afficher votre répertoire approprié et leur autorisation restaurée.
Exemple: la structure de permission de votre répertoire devrait ressembler à la suivante:
root@plab:~# stat -c '%A %a %n' /*
drwxr-xr-x 755 /bin
drwxr-xr-x 755 /boot
drwxr-xr-x 755 /dev
drwxr-xr-x 755 /etc
drwxr-xr-x 755 /home
lrwxrwxrwx 777 /initrd.img
lrwxrwxrwx 777 /initrd.img.old
drwxr-xr-x 755 /lib
drwxr-xr-x 755 /lib64
drwx------ 700 /lost+found
drwxr-xr-x 755 /media
drwxr-xr-x 755 /mnt
drwxr-xr-x 755 /opt
dr-xr-xr-x 555 /proc
drwx------ 700 /root
drwxr-xr-x 755 /run
drwxr-xr-x 755 /sbin
drwxr-xr-x 755 /srv
dr-xr-xr-x 555 /sys
drwxrwxrwt 1777 /tmp
drwxr-xr-x 755 /usr
drwxr-xr-x 755 /var
lrwxrwxrwx 777 /vmlinuz
lrwxrwxrwx 777 /vmlinuz.old
Redémarrez votre système!
J'espère que cela vous aidera.