Frage

Ich bin mit valgrind wie folgt: -

/ usr / local / bin / valgrind "process_name"

Nach Excecution its me geben Fehler folgende

==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

Meine valgrind Erlaubnis ist wie folgt: - -r-sr-xr-x / usr / local / bin / valgrind

Meine Prozess Erlaubnis ist wie folgt: - -r-sr-xr-x "process_name"

Plattform: Linux VMLINUX3 2.6.9-78.0.22.ELsmp (RHEL)

Valgrind Version: valgrind-3.5.0

Jede Hilfe zu diesem Thema sei darauf hingewiesen,

War es hilfreich?

Lösung

Dies ist ein ewiges Problem für Leute, die FUSE-Dateisysteme zu entwickeln. Dieser Link kann helfen (es ist ganz wörtlich zu viel in einer einzigen Antwort zu konsolidieren). Die Behelfslösung beinhaltet eine Just-in-time-Austausch von fusermount und (je), einige zusätzliche Optionen valgrind es von Tracing Kinder zu verhindern.

In der Tat, wenn Sie meine FS unter valgrind laufen, können Sie diese Ausgabe erhalten (ja, hatten genug Leute das Problem, dass ich valgrind auf tatsächlich erkannt starten und angezeigt, um den Link):

root@tower:~ # valgrind xsfs /xs
==9479== Memcheck, a memory error detector.
==9479== Copyright (C) 2002-2008, and GNU GPL'd, by Julian Seward et al.
==9479== Using LibVEX rev 1884, a library for dynamic binary translation.
==9479== Copyright (C) 2004-2008, and GNU GPL'd, by OpenWorks LLP.
==9479== Using valgrind-3.4.1, a dynamic binary instrumentation framework.
==9479== Copyright (C) 2000-2008, and GNU GPL'd, by Julian Seward et al.
==9479== For more details, rerun with: -v
==9479==
******** Valgrind has been detected by xsfs
******** If you have difficulties getting xsfs to work under Valgrind,
******** see the following thread:
******** http://www.nabble.com/valgrind-and-fuse-file-systems-td13112112.html
******** Sleeping for 5 seconds so this doesn't fly by ....

Das am einfachsten , was zu tun, alle Ihrer Debugging ist in einem Einweg-VM als root ausgeführt wird, wo man nur das setuid Bit Graben kann, und mit ihr geschehen. Stellen Sie sicher, dass Sie testen Ihre Code nicht irgendwelche Lecks oder Verletzungen, ist es einfach genug, um zu testen, jede verknüpfte Bibliothek Code nicht Sicherung verwenden. Hand Build off ‚valgrind-clean‘ und beachten Sie, dass Sie dies in der Dokumentation gemacht haben.

Dann greifen einige Bits aus valgrind/valgrind.h es zu erkennen und zeigt eine kurze Nachricht für diejenigen, die vorangehen und es trotzdem laufen. Hacks um ihn zu arbeiten Wurzel Zusammenarbeit erfordern, und ehrlich gesagt, ist viel einfacher in einer Sandbox genauso gut gemacht.

Es ist auch leicht genug, um zu verweigern, auf unter valgrind mit dem setuid Bit ausführen können, eine hilfreiche Nachricht zeigt für die Menschen, um sie off , wenn sie es wirklich tun wollen.

Andere Tipps

Ich nehme an einfachste Antwort setuid / setgid-Bit zu entfernen wäre während des Debuggens. Natürlich, wenn das Programm wirklich Root-Rechte benötigt werden Sie wahrscheinlich scheint laufen müssen valgrind als root oder da valgrind sich nur um es zu Wurzel chown setuid werden: root. Wenn Sie valgrind ausführen nach, dass es root-Rechte haben (und so wird es Kinder - ausgetestet Prozesse).

Sie sollten dann in der Lage sein valgrind auf dieser Anwendung auszuführen.

Nur vorsichtig sein, weil du ein großes Sicherheitsloch in Ihrem System eingeführt wird. Sicherere Lösung wäre spezielle Gruppe zu erstellen, die nur für die Nutzer in der Lage sein sollte (setuid) valgrind laufen und gehen von dort aus ...

Ich nehme an, Sie es mit --trace-Kinder versucht mit = nein? Wenn Sie Root-Zugriff haben, scheint es hier eine Abhilfe zu sein .

Dies geschieht auch, wenn die Dinge wurden als Root ausgeführt :) Der beste Weg ist es, die perms zu ändern „s“ zu entfernen und führen

Führen Sie den valgrind Befehl als root (oder wer auch immer die Set-uid Benutzer sind), dann wird das Programm nicht Gebrauch des Einstellens die uid machen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top