web-dev-qa-db-fra.com

Comment réparer Sudo après "chmod -R 777 / usr / bin"?

J'ai entré chmod -R 777 /usr/bin et maintenant Sudo ne fonctionne pas.

Il dit Sudo must be setuid root.

Certains conseils en ligne ont dit d’exécuter chown root:root /usr/bin/Sudo chmod 4755 /usr/bin/Sudo.

Lorsque vous entrez chown root:root /usr/bin/Sudo, une erreur opened in readonly mode s'affiche.

15
Manojkumar

Nonobstant le statut accepté, je suis maintenant convaincu cette réponse est fausse. (J'espère l'améliorer bientôt, après avoir consulté l'OP sur l'acceptation.) Je pense me souvenir que d'autres ont dit que cela fonctionnait, mais je pense que leurs problèmes étaient au moins légèrement différents. La méthode décrite ici reste utile dans certaines situations où chmod -R 777 /usr/bin est interrompu par Ctrl+C ou sinon ne complète pas. Mais une fois que cela se produit, pkexec EST ÉGALEMENT DÉFINI ET IL NE FONCTIONNERA PAS MIEUX QUE Sudo, comme Damien Roche et Oli l'ont fait remarquer à juste titre.

PolicyKit est installé sur un système de bureau Ubuntu. Ainsi, pkexec peut être utilisé pour réparer un exécutable Sudo ou un fichier sudoers brisé. Vous n'avez pas besoin de démarrer en mode de récupération et vous n'avez pas besoin de démarrer à partir d'un CD live. Vous n'avez même pas besoin de redémarrer.

Dans ce cas, exécutez les commandes suivantes:

pkexec chown root:root /usr/bin/Sudo
pkexec chmod 4755 /usr/bin/Sudo

Voir cette question pour plus d'informations.

10
Eliah Kagan

Même lors de l'exécution à partir du live CD/Pendrive, vous devez préfixer votre commande chmod avec Sudo. Donc, vos étapes seront comme suit:

  1. démarrer à partir d'un live CD/Pendrive
  2. vérifiez si votre disque a déjà été monté automatiquement (et où aller). Sinon, montez-le (voir ci-dessous)
  3. utilisez Sudo chmod 0755 <path> pour ajuster les permissions

Comment déterminer où votre disque est monté: à partir d'une fenêtre de terminal, exécutez mount (sans argument). Cela listera tous les périphériques montés. Recherchez la liste type (vous pouvez ignorer tout ce qui n’est pas utilisé avec un "système de fichiers réel" (votre disque utilise probablement ext3 ou ext4 - vous pouvez certainement ignorer des choses comme proc, sysfs, etc.). Si quelque chose semble prometteur (ressemblant à /dev/sda1 on /media/sda1 type ext3), vérifiez son contenu à l'aide de ls /media/sda1 pour voir si c'est le cas.

S'il n'est pas monté, vous pouvez vérifier avec les entrées /dev où se trouve le disque (en utilisant ls /dev/ |grep '/dev/sd pour rechercher les périphériques disponibles; votre disque devrait ressembler à /dev/sdaX, /dev/sdbX ou similaire, X étant un nombre). Comparez cela avec la liste des périphériques montés. Si ce n'est pas le cas, essayez de le monter et vérifiez son contenu (comme indiqué ci-dessus). Pour le monter, créez d'abord un point de montage, par exemple. Sudo mkdir /mnt/mydisk, puis essayez de monter le périphérique à l'aide de mount /dev/sda1 /mnt/mydisk et vérifiez son contenu à l'aide de ls /mnt/mydisk.

Une fois que vous avez le bon disque, vous pouvez modifier les autorisations sur votre répertoire utilisateur: Sudo chmod 0755 /mnt/mydisk/usr.

Vous pouvez maintenant rencontrer des problèmes si vous avez initialement exécuté la commande chmod en utilisant le paramètre -R. Dans ce cas, vous pouvez soit essayer de corriger chaque entrée manuellement, soit vous pouvez tout de suite procéder à une nouvelle installation ...

4
Izzy

Je n'ai pas beaucoup de connaissances. Mais ces étapes ont résolu mon problème même sans redémarrer ma machine. Suivez ces étapes:

su root
<enter root password>
cd /usr
chmod -R 755 *
1
Manu Mohan T

Pour tenter de définir des autorisations pour mes scripts locaux, j'ai violé l'autorisation Sudo et changé de propriétaire par erreur. J'ai pu redéfinir la propriété de Sudo en root en procédant comme suit:

Étape 1: Basculez vers le mode de récupération d'ubuntu . Si vous ne connaissez pas le processus, vous pouvez indiquer une réponse ici: https://askubuntu.com/a/172346/223901

Étape 2: Une fois en mode de récupération, sélectionnez root - Abandonnez-le à l'invite du shell racine

Étape 3: Faites les commandes suivantes

mount -o remount,rw /
chown root:root /usr/bin/Sudo
chmod 4755 /usr/bin/Sudo
reboot

Attendez que votre système démarre normalement et vous verrez la propriété de Sudo revenir à la racine.

1
ramsudharsan

Je pense que Mat a raison, vous devez être root pour ajouter le bit à/usr/bin, mais bien sûr, Sudo est cassé. Si vous avez un mot de passe root, vous pouvez l'utiliser pour vous connecter en tant que root, puis corrigez les autorisations à l'aide de la commande ci-dessus. Si vous ne le faites pas cependant (et moi non plus), il serait probablement préférable de:

  • démarrer à partir d'un live CD Linux
  • devenir racine là-bas
  • montez la partition avec le système ci-dessus
  • redressez ensuite les autorisations sur ce système de fichiers à l'aide d'un terminal.

La racine étant toujours le numéro d'utilisateur 0, la racine de n'importe quel système peut apporter les modifications autorisées à la racine sur d'autres systèmes de fichiers.

1
John S Gruber