comment puis-je utiliser valgrind à un processus qui a des super-utilisateur peu sur?
Je suis en cours d'exécution valgrind comme suit:-
/usr/local/bin/valgrind "nom_processus"
Après excecution sa me donne erreur suivant
==21731==
==21731== Warning: Can't execute setuid/setgid executable:
==21731== Possible workaround: remove --trace-children=yes, if in effect
==21731==
valgrind: "process name": Permission denied
Mon valgrind autorisation est comme suit :-
-r-sr-xr-x /usr/local/bin/valgrind
Mon processus d'autorisation est comme suit:-
-r-sr-xr-x "nom_processus"
Plate-forme : Linux VMLINUX3 2.6.9-78.0.22.ELsmp(RHEL)
Valgrind version: valgrind-3.5.0
Toute aide sera appréciée
OriginalL'auteur anish | 2009-11-09
Vous devez vous connecter pour publier un commentaire.
C'est un problème perpétuel pour les personnes qui développent un FUSIBLE de systèmes de fichiers. Ce lien peut aider (c'est littéralement trop de regrouper dans une seule réponse). Le travail implique un juste-à-temps de remplacement de fusermount, et (selon le cas), quelques options supplémentaires pour valgrind pour l'empêcher de rechercher les enfants.
En fait, si vous exécutez mon FS sous valgrind, vous obtenez cette sortie (oui, assez de gens a eu ce problème que j'ai réellement détecté valgrind sur démarrer et affiche le lien):
La plus facile chose à faire est de tous vos débogage dans un jetable VM en cours d'exécution en tant que root, où vous pouvez simplement abandonner le bit setuid, et être fait avec elle. Assurez-vous de tester votre code pour ne pas avoir des fuites ou des violations, son assez facile de tester tout lié code de bibliothèque n'utilisant pas de fusible. La main de votre build off "valgrind-propre" et note que vous avez fait dans la documentation.
Ensuite, prenez quelques morceaux de
valgrind/valgrind.h
pour le détecter et afficher un court message pour ceux qui vont de l'avant et de l'exécuter de toute façon. Hacks pour le contourner besoin de la racine de la coopération, et franchement, il est beaucoup plus facile à faire dans un bac à sable.Il est également assez facile de refuser d'exécuter sous valgrind avec le bit setuid sur, montrant un message utile pour les personnes à tourner hors si ils veulent vraiment le faire.
OriginalL'auteur Tim Post
Je suppose que la plupart de réponse simple serait de supprimer setuid/setgid bit pendant le débogage. Bien sûr, si le programme a vraiment besoin des privilèges root, vous devrez probablement run valgrind en tant que root ou depuis valgrind lui-même semble être setuid juste chown à root:root. Si vous exécutez valgrind après qu'il aura les privilèges de root (et donc ça va, les enfants de - de débogage processus).
Vous devriez alors être en mesure d'exécuter valgrind sur cette application.
Juste être prudent, parce que vous serez l'introduction d'un GROS trou de sécurité dans votre système. Solution plus sûre serait de créer le groupe spécial que pour les utilisateurs devraient être en mesure d'exécuter (setuid) valgrind et à partir de là...
Vrai, comme (presque) toujours il y a des exceptions, mais en général, cette approche devrait faire l'affaire.
OriginalL'auteur Stan
Je suis en supposant que vous avez essayé de courir avec --trace-enfants=pas? Si vous avez accès à la racine, il semble y avoir une solution de contournement ici.
OriginalL'auteur Stephen Newell
Ce qui se passe, même quand les choses étaient exécuter en tant qu'utilisateur root 🙂
Le meilleur moyen est de changer la permanentes pour enlever le "s", et d'exécuter
OriginalL'auteur Sundeep Borra
Exécuter le valgrind de commande en tant que root (ou celui qui la set-uid de l'utilisateur de l'est), alors le programme n'aura pas à faire usage de la définition de l'uid.
Cela se produit même lorsque les choses allaient exécuter en tant qu'utilisateur root 🙂 le Meilleur moyen est de changer la permanentes pour enlever le "s", et de l'exécuter
OriginalL'auteur Douglas Leeder