web-dev-qa-db-fra.com

Tout à coup, ne peut pas courir sudo

Je n'ai rien fait sur l'ordinateur à l'exception d'Internet pendant quelques jours et tout à coup, lorsque j'ai essayé de le faire:

$ Sudo apt-get update 

J'ai eu:

Sudo: effective uid is not 0, is /usr/bin/Sudo on a file system with the 'nosuid' option set
      or an NFS file system without root privileges?

Je n'ai aucune idée de ce qui s'est passé. La dernière fois que je me souviens d'avoir exécuté Sudo, c'est quand j'ai mis à jour.

4
InvisibleUn1corn

Sudo fonctionne avec un mécanisme appelé setuid ( Définir l'utilisateur ID , ou aussi appelé suid ). Si ce bit est défini sur un fichier exécutable (comme Sudo), l'application est exécutée sous les autorisations de l'utilisateur, propriétaire de ce fichier (dans le cas de Sudo, le propriétaire est l'utilisateur root).

Cela signifie que Sudo est exécuté sous la forme root. Jusqu'ici tout va bien. Mais maintenant, rien ne vous empêche d’insérer un lecteur USB contenant un shell sur lequel est défini le bit setuid. Vous avez un accès root complet! C'est pourquoi, normalement, les lecteurs USB sont montés avec l'option de montage noexec, afin d'empêcher l'exécution de scripts/binaires sur un tel périphérique. Une autre option de montage, si vous souhaitez toujours exécuter des fichiers, est celle mentionnée dans le message d'erreur de votre question: nosuid.

Voir cet extrait de la page de manuel de montage :

[...]
nosuid     Do not allow set-user-identifier or set-group-identifier bits to take effect.
[...]

Avec la commande mount, vous pouvez déterminer si votre système de fichiers racine est monté avec cette option. Il suffit de taper:

$ mount

Vous pouvez maintenant remonter le système de fichiers à la volée et modifier les options de montage:

$ mount -n -o remount,suid /

Cela définit l'option suid, qui est l'exact opposé de nosuid.

3
chaos