Domanda

Io sono in esecuzione valgrind come segue:-

/usr/local/bin/valgrind "process_name"

Dopo excecution sua mi dà errore riportato di seguito

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

Il mio valgrind autorizzazione è come indicato di seguito :- -r-sr-xr-x /usr/local/bin/valgrind

Il mio processo di autorizzazione è come indicato di seguito:- -r-sr-xr-x "process_name"

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

Valgrind versione:valgrind-3.5.0

Qualsiasi aiuto sarà apprezzato

È stato utile?

Soluzione

Questo è un perenne problema per le persone che sviluppano FUSIBILE sistemi di file. Questo link può aiutare (è letteralmente troppo di consolidare in un'unica risposta).Il lavoro intorno comporta un just-in-time di sostituzione di fusermount, e (a seconda), alcune opzioni aggiuntive per valgrind per evitare che traccia i bambini.

Infatti, se si esegue il mio FS sotto valgrind, si ottiene un output come questo (sì, abbastanza gente ha avuto quel problema che ho rilevato valgrind in fase di start up e visualizzato il 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 ....

Il più facile cosa fare il debug in un usa e getta VM in esecuzione come root, dove si può solo abbandonare il bit setuid, e da fare con esso.Assicurarsi che il test il codice per non avere eventuali perdite o violazioni, la sua abbastanza facile di testare qualsiasi libreria collegata codice non si utilizza un fusibile.Mano la tua build off 'valgrind-clean' e nota che hai fatto nella documentazione.

Quindi, prendete un po ' di bit di valgrind/valgrind.h per rilevare e mostrare un breve messaggio per coloro che andare avanti ed eseguire lo stesso.Hack per risolvere che richiedono root cooperazione, e francamente, sono molto più facile fare in una sandbox altrettanto bene.

E ' anche abbastanza facile da rifiutare di eseguire sotto valgrind con il bit setuid mostrano un utile messaggio per le persone a girare off se si vuole veramente farlo.

Altri suggerimenti

Credo che risposta più semplice sarebbe quello di eliminare bit setuid / setgid durante il debug. Naturalmente, se il programma ha davvero bisogno di privilegi di root si dovrà correre probabilmente Valgrind come root o dal valgrind stessa sembra essere setuid solo chown a root: root. Se si esegue valgrind dopo che avrà i privilegi di root (e così sarà per i bambini - i processi di debug).

Si dovrebbe quindi essere in grado di eseguire Valgrind su tale domanda.

Basta essere attenti, perché vi sarà l'introduzione di un buco di sicurezza BIG nel vostro sistema. soluzione più sicura sarebbe quella di creare gruppo speciale solo per gli utenti che dovrebbero essere in grado di eseguire Valgrind (setuid) e passare da lì ...

Sto assumendo che provato a correre con --trace-children = no? Se si dispone di un accesso root, non sembra essere una soluzione alternativa qui .

Questo accade anche quando le cose sono stati eseguiti come utente root :) Il modo migliore è quello di cambiare le permanenti per rimuovere "s", ed eseguire

Eseguire il comando valgrind come root (o chi l'utente set-uid è), quindi il programma non dovrà fare uso di impostare l'uid.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top