답변:
디버거가 루트로 실행중인 경우 setuid 또는 setgid 프로그램 만 디버그 할 수 있습니다. 커널은 ptrace
추가 권한으로 실행되는 프로그램 을 호출 할 수 없습니다 . 만약 그렇다면 프로그램이 무엇이든 실행하도록 만들 수있다. 이것은 사실상 디버거를 호출하여 루트 쉘을 실행할 수 있음을 의미한다 /bin/su
.
루트로 Gdb를 실행하면 프로그램을 실행할 수 있지만 루트로 실행할 때만 동작을 관찰하게됩니다.
루트로 시작하지 않았을 때 프로그램을 디버깅해야하는 경우 Gdb 외부에서 프로그램을 시작하고 문제가있는 부분에 도달하기 전에 어떤 방식 으로든 일시 중지하고 attach
Gdb 내부의 프로세스 ( at 1234
여기서 1234는 프로세스 ID)를 사용하십시오.
gdbserver
하고 루트로 실행 하고 일반 사용자로 연결할 수 있습니다. 귀하의 의견에 따르면 간단한 방법으로 (gdb를 루트로 실행) 관리하지 못했지만 무엇이 잘못되었는지 이해하지 못하므로 도움이되지 않습니다.