GNU/Linux >> Tutoriels Linux >  >> Linux

Impossible de tracer sudo ; signale que l'uid effectif est différent de zéro

Comment tracer sudo

$ sudo  strace -u <username>  sudo -k <command>
  1. sudo exécute strace en tant que root.
  2. strace exécute sudo comme <username> passé par le -u option.
  3. sudo supprime les informations d'identification mises en cache du précédent sudo avec -k option (pour redemander le mot de passe) et exécute <command> .

Le deuxième sudo est le suivi (le processus suivi).

Pour mettre automatiquement l'utilisateur courant à la place de <username> , utilisez $(id -u -n) .

Pourquoi sudo ne fonctionne pas avec strace

En plus de cette réponse de Charles, voici ce que execve() la page de manuel indique :

Si le bit set-user-ID est défini sur le fichier de programme référencé par pathname, l'ID utilisateur effectif du processus appelant est remplacé par celui du propriétaire du fichier de programme. De même, lorsque le bit set-group-ID du fichier programme est défini, l'ID de groupe effectif du processus appelant est défini sur le groupe du fichier programme.

Les transformations susmentionnées des ID effectifs ne sont pas effectuées (c'est-à-dire que les bits set-user-ID et set-group-ID sont ignorés) si l'une des conditions suivantes est vraie :

  • l'attribut no_new_privs est défini pour le thread appelant (voir prctl(2)) ;
  • le système de fichiers sous-jacent est monté nosuid (l'indicateur MS_NOSUID pour mount(2)) ; ou
  • le processus appelant est en cours de traçage.

Les capacités du fichier de programme (voir capacity(7)) sont également ignorées si l'une des conditions ci-dessus est vraie.

Les permissions pour tracer un processus, inspecter ou modifier sa mémoire, sont décrites dans la sous-section Vérification du mode d'accès Ptrace dans la section REMARQUES de la page de manuel de ptrace(2). J'ai commenté cela dans cette réponse.


Pour des raisons de sécurité, le bit setuid et ptrace (utilisé pour exécuter des binaires sous un débogueur) ne peuvent pas être honorés en même temps. Le non-respect de cette restriction dans le passé a conduit à CVE-2001-1384.

Par conséquent, tout système d'exploitation conçu dans un souci de sécurité cessera d'honorer ptrace lors de l'exécution d'un binaire setuid, ou ne respectera pas le bit setuid lorsque ptrace est utilisé.

Sous Linux, envisagez plutôt d'utiliser Sysdig -- qui, ne pouvant que visualiser mais pas modifier le comportement, ne court pas les mêmes risques.


Linux
  1. Créer un utilisateur Sudo sur Debian - Processus étape par étape ?

  2. Linux - Est-ce le processus qui a un terminal de contrôle, ou est-ce la session qui a un terminal de contrôle ?

  3. Comment suivre le processus enfant à l'aide de strace?

  4. Impossible de lancer Nvidia nsight

  5. ERREUR :ld.so :l'objet 'libgtk3-nocsd.so.0' de LD_PRELOAD ne peut pas être préchargé

XAMPP :Un autre démon de serveur Web est déjà en cours d'exécution ?

Impossible de démarrer php-fpm - impossible d'obtenir l'uid pour l'utilisateur 'apache'

ne peut pas installer node-sass donc ne peut pas installer gulp-sass

Impossible d'allouer de la mémoire alors qu'aucun processus ne semble utiliser de mémoire

Comment désactiver l'arrêt pour qu'un processus important ne puisse pas être interrompu ?

Comment tuer un processus qui ne meurt jamais ?