web-dev-qa-db-fra.com

/ usr / bin / Sudo doit appartenir à uid 0 et avoir le bit setuid défini

J'ai exécuté la commande suivante accidentellement

Sudo chown [username] -hR /

Maintenant, Sudo su obtient une erreur:

Sudo: /usr/bin/Sudo must be owned by uid 0 and have the setuid bit set

Comment résoudre ceci?

70
Pandya

Sauvegardez vos données et réinstallez-les.

Cela semble probablement extrême, mais ce n’est pas simplement Sudoname__. Vous avez détruit la structure des autorisations de votre système de fichiers entier. Certaines des autres réponses peuvent faire fonctionner Sudoname__, mais ignorer tout le problème consiste à inviter un sinistre ultérieur.

Vous pouvez essayer de mettre en miroir les propriétaires d’une autre installation, mais il existe des cas (/var/ par exemple) qui dépendent fortement de ce que vous avez réellement installé. Si vous voulez avoir une idée du problème, J'ai déjà essayé d'aider quelqu'un à résoudre ce genre de problème auparavant . Le correctif est manuel, long et pourrait facilement laisser votre système non sécurisé ou en panne.

Traverser ce gâchis prendra beaucoup plus de temps qu'une installation propre.


Quelques personnes qui ne comprennent pas la gravité de la situation ici se sont rendues au volant. Pour eux, cela ressemble à une grosse pile de travail inutile, le genre de chose qu'un plombier ou un mécanicien non autorisé dit de vous secouer pour un plus gros travail.

Si vous avez uniquement modifié les autorisations sur /usr/bin/Sudo, corrigez-le. Mais cette question concerne un changement total du système. Chaque fichier (sauf les fichiers d'exécution seulement) est maintenant la propriété de l'utilisateur. Tout ce que l’utilisateur exécute (par exemple, les navigateurs, les exploits de navigateur ) pourrait alors écraser les fichiers système, vous espionner, extraire des données. Ceci doit être corrigé. Par dessus, c'est difficile. Le moyen le plus simple est une réinstallation.

Alors s'il vous plaît, ne soyez pas paresseux à ce sujet. Les autorisations de système de fichiers vous aident à rester en sécurité, à les réparer.

25
Oli

Comme vous pourrez le lire sur cette réponse sur SO , ce problème est pas aussi difficile que les gens le font. La commande Sudo a de nouveau fonctionné sans réinstallation en procédant comme suit:

  1. Déconnectez-vous en tant qu'utilisateur actuel, puis reconnectez-vous en tant que root.
  2. Exécuter chown root:root /usr/bin/Sudo && chmod 4755 /usr/bin/Sudo
  3. Déconnectez-vous en tant que root, puis reconnectez-vous en tant qu'utilisateur actuel.

Cela fait l'affaire et est beaucoup plus rapide et moins douloureux que "l'option nucléaire" recommandée dans d'autres réponses.

Si votre mot de passe root n'est pas défini, vous pouvez démarrer en mode de récupération pour le définir.

133
user10962
  1. passer en mode de récupération en appuyant sur Esc lors du démarrage du système.

  2. sélectionnez l'option root dans la longue liste que vous pouvez voir après être entré en mode de récupération (il s'agit en fait de Shell)

  3. type command - mount -o remount / (ou en récupération, vous pouvez cliquer sur l’option grub. Cela m’a aidé à obtenir des autorisations de lecture-écriture sur le système de fichiers. Cela a fondamentalement mis à jour le mode lecture/écriture sur le système de fichiers car la commande ne fonctionnait pas initialement pour moi. )

    Il remontera votre système de fichiers en mode lecture et écriture.

  4. commande - chown -R root:root /usr cette commande va changer la propriété de "utilisateur" à root de manière récursive

  5. maintenant, j’avais toujours un problème avec la commande Sudo; j’ai donc suivi à nouveau les étapes 1, 2, 3 et exécuté chmod 4755 /usr/bin/Sudo

Maintenant, je pense vraiment que la réinstallation aurait été vraiment une "option nucléaire"

14
Hridaynath

Avait le même problème sur ma gouttelette sur Digital Ocean.

Sudo: /usr/bin/Sudo doit appartenir à uid 0 et avoir le bit setuid défini. Ci-dessous sont des commandes que ive exécuter et redémarrer après.

chown -R root:root /usr/bin/Sudo
chmod -R a=rx,u+ws /usr/bin/Sudo
chown -R root:root /usr/lib/Sudo/sudoer.so
chmod -R a=rx,u+ws /usr/lib/Sudo/sudoer.so

J'espère que ça aide.

Malheureusement, si vous ne disposez pas d'une sauvegarde complète, la meilleure chose à faire à ce stade est probablement de la réinstaller.

Considérez que vous avez changé la propriété de tous les fichiers pour le même utilisateur, dérangeant complètement le paradigme de la sécurité de votre système ....

Si vous recherchez sur ce site, il y a beaucoup de problèmes similaires avec chmod, comme par exemple Comment puis-je récupérer de chmod -R a-wrx/command?

3
Rmano

Les méthodes ci-dessus ne fonctionnaient pas pour moi car je ne pouvais pas me "reconnecter en tant que root" (mot de passe inconnu). Mais j'ai obtenu un shell root en le modifiant.

vi /etc/lightdm/lightdm.conf

autologin-user=root
greeter-show-manual-login=true

Après avoir redémarré, j'ai enfin pu courir

chown root:root /usr/bin/Sudo && chmod 4755 /usr/bin/Sudo
2
Anno2001

Je n'ai pas pu modifier le fichier lightdm.conf sous le système en cours d'exécution. J'ai corrigé des choses comme ceci:

  1. démarrer Ubuntu live usb
  2. montez la partition racine pour accéder à /etc/lightdm/lightdm.conf sur l'installation
  3. Sudo -H gedit /mnt/etc/lightdm/lightdm.conf et ajoutez les lignes suivantes de réponse d'Anno2001

    autologin-user=root
    greeter-show-manual-login=true
    
  4. redémarrer

  5. commande d'exécution:

    chown root:root /usr/bin/Sudo && chmod 4755 /usr/bin/Sudo
    
  6. Rétablissez l'utilisateur par défaut dans /etc/lightdm/lightdm.conf (vous ne voulez pas vous connecter automatiquement en tant que root, ce qui serait très dangereux et non sécurisé)

  7. redémarrez et mon système fonctionne à nouveau correctement.
1
DrackG