5 votes

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

Je suis en train d'utiliser Ubuntu 13.04 x86_64.

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

sudo chown -RcH rootkea ~
sudo chown -RcL rootkea ~

Maintenant, en raison des liens symboliques pointant vers d'autres fichiers dans le système de fichiers, j'ai accidentellement possédé des fichiers qui se trouvent en dehors de mon répertoire personnel.
Les conséquences immédiates que j'ai remarquées sont:

  1. sudo ne fonctionne pas

    $ sudo
    sudo: l'uid effectif n'est pas 0, le binaire sudo est-il installé setuid root?
  2. le système est devenu très lent. Il se fige lorsque je clique sur arrêter ou redémarrer. À 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 certain temps). La dernière fois, il faisait 17,8 Go!
    Le contenu du fichier ne comprenait que ces deux lignes répétées indéfiniment:

    E [24/May/2013:02:27:52 +0530] Le fichier "/usr/lib/cups/notifier/dbus" a des autorisations non sécurisées (0100755/uid=1000/gid=0).
    W [24/May/2013:02:27:52 +0530] Le notificateur pour l'abonnement 531 (dbus://) a disparu, nouvelle tentative!

Il est clairement évident que le programme cups est également affecté.

Je n'ai maintenant aucune idée du nombre d'autres programmes qui sont devenus inutilisables.

Y a-t-il un moyen d'annuler les effets des deux commandes mentionnées ci-dessus?
Comment puis-je restaurer les paramètres de permission par défaut de tout le système de fichiers?

4voto

Eliah Kagan Points 111731

Comme le suggère gertvdijk (en référence à cette question), la réinstallation est presque toujours la meilleure et la plus facile façon de résoudre ce problème (et la seule façon de vous assurer qu'il sera complètement résolu), surtout si vous ne savez pas exactement où les autorisations ont été changées ou ce qu'elles étaient avant.

Cette méthode, que private a suggérée, pourrait fonctionner, et vous pouvez envisager de l'essayer. Cependant, il y a des variations d'une version à l'autre quant à l'emplacement des fichiers et dossiers et à leurs propriétaires et autorisations. De plus, avec toute solution autre que la réinstallation, vous ne saurez jamais s'il y a des fichiers ou dossiers avec des autorisations incorrectes, ce qui pourrait causer des problèmes à l'avenir.

Vous pouvez généralement résoudre--ou du moins progresser--sur le problème de sudo qui ne fonctionne pas (c'est-à-dire, le problème 1, comme vous l'avez énuméré) en rétablissant sa propriété:

pkexec chown root:root /usr/bin/sudo

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

Enfin, veuillez noter que seule la propriété, et non les autorisations, ont été modifiées. Vous pouvez donc essayer de changer récursivement la propriété des répertoires en les ramenant à root. Cependant, cela n'est pas très probable de résoudre le problème non plus, car:

  • on ignore si vous savez exactement quels répertoires ont été modifiés.
  • certain fichiers ne devraient pas être la propriété de root car ils doivent être accessibles par des parties moins privilégiées du système; définir leur propriété ou autorisations de manière trop restrictive pourrait endommager le système.
  • certain fichiers pourraient créer des vulnérabilités de sécurité s'ils sont la propriété de root. Un exécutable setuid s'exécute toujours en tant que l'utilisateur qui le possède. Votre système peut contenir des exécutables setuid qui sont destinés à s'exécuter toujours en tant qu'un utilisateur peu privilégié; les faire s'exécuter en tant que root pourrait être nuisible. Ou quelqu'un a pu--intentionnellement ou involontairement--créer un fichier setuid (sans avoir les autorisations pour qu'il soit possédé par root). Si vous le faites devenir la propriété de root, il s'exécutera en tant que root, peu importe qui l'exécute. Cela pourrait être très dommageable.

Donc, si c'est un système de production, vous devriez simplement réinstaller.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X