Réponses:
En bref: non.
Vous devrez restaurer à partir d'une sauvegarde. (Certains outils de sauvegarde peuvent avoir des options pour restaurer uniquement les autorisations, d'autres peuvent répertorier les fichiers sauvegardés avec leurs autorisations et vous pouvez les utiliser pour réparer votre système.)
Si vous n'avez pas de sauvegarde, vous devrez corriger tout cela manuellement.
sudo chown -R user:user /
, il est probable que le système soit si mal arrosé que vous ne pouvez pas restaurer à partir d'une sauvegarde.
chown
décrit, il est probable que vous ne pourrez rien faire avant d'installer le système entier à partir de zéro; le système n'a même pas de root
compte et sudo
ne fonctionnera pas. Cela vaut probablement la peine d'essayer de démarrer sur un shell mono-utilisateur, mais ne vous attendez pas à ce que cela fonctionne.
sudo
ou même su
continuera de fonctionner lorsque tous ses fichiers pertinents appartiennent à user
est une question différente (probablement pas parce que, entre autres choses, le bit SUID sur l'exe aura disparu).
Uniquement si vous connaissez l'utilisateur et le groupe appartenant à chaque fichier et répertoire de votre /
répertoire.
Même alors, vous avez déjà détrôné la propriété des fichiers système critiques qui doivent appartenir à root, y compris la sudo
commande. Vous auriez probablement besoin de monter le disque dur sur un autre système - et sachez que l'autre système n'aura probablement pas les mêmes mappages UID et GID que celui que vous venez de clobber.
Faites une copie de l'intégralité du disque dur si vous le pouvez, puis réinstallez votre système d'exploitation. Une fois que vous avez fait cela, vous pouvez essayer de copier des fichiers sur le système nouvellement effacé et de restaurer leurs propriétés. Vous pouvez probablement supposer (mais pas à 100% de manière fiable) que tout ce qui se trouve sous /home/foo
appartient à l'utilisateur foo
et que chaque fichier de spoule de messagerie sous /var/mail
appartient à l'utilisateur approprié (si vous avez du courrier électronique sur le système). Vous pouvez probablement vous en sortir sans restaurer la plupart des fichiers qui ne sont pas sous /home
, en fonction de ce que vous avez fait avec le système.
Et puis commencez à cultiver l'habitude de revérifier toute commande sous laquelle vous exécutez sudo
avant de frapper Enter.
Si votre distribution est basée sur RPM, vous pouvez restaurer SEULEMENT les fichiers installés par les packages rpm.
Pour restaurer toutes les autorisations de package:
rpm --setperms -a
Pour restaurer tous les propriétaires de packages (utilisateur / groupe):
rpm --setugids -a
Si -a ne s'exécute pas, vous pouvez exécuter une boucle bash:
Pour les autorisations:
for x in $(rpm -qa); do rpm --setperms $x; done
Pour le propriétaire:
for x in $(rpm -qa); do rpm --setugids $x; done
Extrait de: http://www.sysadmit.com/2016/10/linux-restaurar-permisos-de-un-paquete.html
Vous pouvez stocker les versions actuelles, puis les analyser pour revenir en arrière en utilisant l'option -v.
chown -R nobody:nobody -v /tmp/some_file > /tmp/chown.log
cat /tmp/chown.log
Le contenu serait:
changed ownership of `/tmp/some_file' from me:users to nobody:nobody
En utilisant votre langage de script préféré et des expressions régulières, vous pouvez exécuter le processus douloureux de les rétablir (si vous le devez).
Je vous recommande fortement de ne pas faire de chown récursif sur / car vous exposerez / etc / shadow ou tout autre fichier important.
sudo chown -R user:user ..
pourrait avoir le même effet que celle mentionnée ici si vous êtes un niveau en dessous de la racine du système de fichiers. N'essayez pas quelque chose comme ça.