Solo puede depurar un programa setuid o setgid si el depurador se ejecuta como root. El kernel no le permitirá llamar ptrace
a un programa que se ejecute con privilegios adicionales. Si lo hiciera, sería capaz de hacer que el programa ejecutara cualquier cosa, lo que significaría que podría, por ejemplo, ejecutar un shell de raíz llamando a un depurador /bin/su
.
Si ejecuta Gdb como root, podrá ejecutar su programa, pero solo observará su comportamiento cuando lo ejecute root.
Si necesita depurar el programa cuando no está iniciado por root, inicie el programa fuera de Gdb, haga una pausa de alguna manera antes de llegar a la parte problemática y attach
el proceso dentro de Gdb ( at 1234
donde 1234 es la ID del proceso).