web-dev-qa-db-fra.com

Comment restaurer les autorisations par défaut de chown sur un répertoire / fichier?

J'utilise Ubuntu 13.04 x86_64.

Je voulais posséder des trucs entiers dans mon répertoire personnel. J'ai donc exécuté ces deux commandes.

Sudo chown -RcH rootkea ~  
Sudo chown -RcL rootkea ~

Maintenant, à cause de ces liens symboliques liés à d'autres fichiers du système de fichiers, j'ai accidentellement possédé des fichiers qui se trouvaient en dehors de mon répertoire personnel.
Les conséquences immédiates que j'ai remarquées sont les suivantes:

  1. Sudo ne fonctionne pas

    $ Sudo  
    Sudo: effective uid is not 0, is Sudo installed setuid root?
    
  2. le système est devenu si lent. Il est simplement pendu lorsque je clique sur l’arrêt/le redémarrage. Chaque fois, je dois éteindre manuellement la machine.
  3. crée un fichier journal /var/log/cups/error_log de taille indéfinie qui consomme le dernier octet de mon disque dur (après un temps considérable). La dernière fois, c'était 17,8 Go!
    Le contenu du fichier ne comprenait que ces deux lignes répétées indénombrables:

    E [24/May/2013:02:27:52 +0530] File "/usr/lib/cups/notifier/dbus" has insecure permissions (0100755/uid=1000/gid=0).  
    W [24/May/2013:02:27:52 +0530] Notifier for subscription 531 (dbus://) went away, retrying!
    

Le programme cups est donc clairement vissé aussi.

Maintenant, je n'ai aucune idée du nombre d'autres programmes qui sont devenus inutilisables.

Est-il possible d’annuler les effets des deux commandes mentionnées ci-dessus?
Comment puis-je restaurer les paramètres d'autorisation par défaut sur un système de fichiers entier?

5
rootkea

Comme suggère gertvdijk (par rapport à cette question ), la réinstallation est presque toujours le moyen le plus simple et le plus simple de résoudre ce problème (et le seul moyen d'être sûr de le résoudre complètement.) ), surtout si vous ne savez pas exactement où l'autorisation a été modifiée ou en quoi elle a été modifiée.

Cette méthode , qui private a suggéré , pourrait fonctionner, et vous pouvez estimer que cela en vaut la peine. Cependant, il existe des variations d'une version à l'autre de l'emplacement où se trouvent les fichiers et les dossiers, ainsi que leurs droits de propriété et leurs autorisations. En outre, quelle que soit la solution proposée, à part la réinstallation, vous ne saurez jamais s'il existe des fichiers ou des dossiers dotés d'autorisations erronées, ce qui pourrait, à l'avenir, poser problème.

Vous pouvez généralement corriger - ou du moins faire progresser - le problème de Sudo ne fonctionne pas (c'est-à-dire, le problème 1, comme vous l'avez indiqué) en corrigeant sa propriété:

pkexec chown root:root /usr/bin/Sudo

Dans une situation comme la vôtre, c'est principalement utile comme mesure de commodité pour faciliter l'exécution de toutes les tâches administratives nécessaires avant la réinstallation. (Ou avant d'essayer d'appliquer une solution plus compliquée.) Une sauvegarde est définitivement nécessaire, si vos sauvegardes de fichiers importants (par exemple, des documents) ne sont pas complètement à jour.

Enfin, veuillez noter que c’est seulement propriété et non autorisations , que ont été modifiés. Vous pouvez donc essayer de modifier récursivement la propriété des répertoires en root. Cependant, cela ne résoudra pas le problème non plus, car:

  • il n'est pas clair si vous savez exactement quels répertoires ont été modifiés.
  • certains fichiers ne doivent pas appartenir à root car ils doivent être accessibles à des parties moins privilégiées du système; définir leur propriété ou leurs autorisations de manière trop restrictive pourrait endommager le système.
  • certains fichiers peuvent être à l'origine de vulnérabilités en matière de sécurité s'ils appartiennent à root. Un setuid exécutable est toujours exécuté comme l'utilisateur qui le possède. Votre système peut contenir des exécutables setuid destinés à toujours être exécutés en tant qu'utilisateur non - privilégié; les faire fonctionner en tant que root pourrait être mauvais. Ou quelqu'un peut avoir - intentionnellement ou non - créé un fichier setuid (sans avoir la permission de le faire appartenir à root). Si vous le faites appartenir à root, il s’exécutera en tant que root, quel que soit le propriétaire. Cela pourrait être très mauvais.

Donc, s’il s’agit d’un système de production, vous devez simplement le réinstaller.

3
Eliah Kagan