回答:
デバッガーがルートとして実行されている場合のみ、setuidまたはsetgidプログラムをデバッグできます。カーネルはptrace
、追加の特権で実行されているプログラムを呼び出すことを許可しません。もしそうなら、あなたはプログラムに何でも実行させることができるでしょう、それは事実上あなたが例えば上のデバッガーを呼び出すことによってルートシェルを実行できることを意味するでしょう/bin/su
。
Gdbをrootとして実行すると、プログラムを実行できますが、rootで実行した場合のみその動作を観察できます。
ルートによって起動されていないときにプログラムをデバッグする必要がある場合は、Gdbの外部でプログラムを起動し、問題のある部分に到達する前に何らかの方法で一時停止させ、attach
Gdb内のプロセス(at 1234
1234はプロセスID)にします。
gdbserver
、rootとして実行し、通常のユーザーとして接続できます。あなたのコメントから、あなたはそれを簡単な方法で管理していなかったようです(ルートとしてgdbを実行しています)が、私は何が間違っていたのか分かりませんので、私は助けることができません。