setuid 프로그램의 경우 루트 권한이 없으면 ptrace가 제대로 작동하지 않는다는 것을 알고 있습니다. 그렇다면 gdb는 setuid 비트가 활성화되고 루트가 아닌 권한이 있는 실행 파일과 어떻게 작동합니까?
탐색하기 위해 간단한 exec("/bin/id","id",NULL) 실행 파일을 사용하여 테스트했습니다.
루트가 아닌 권한으로 gdb에서 실행 파일을 실행할 때 실행은 성공하지만 euid는 루트(=0)로 변경되지 않습니다. 따라서 setuid 비트가 설정되면 gdb 내부에서 실행 가능한 바이너리가 실행 전에 임시 파일로 복사되는 것으로 의심됩니다. 실행 파일에 대한 "읽기" 권한이 제거되면 루트가 아닌 사용자가 gdb를 사용하여 실행 파일을 실행할 때 gdb가 "Permission Denied"를 인쇄하기 때문에 이는 올바른 것 같습니다.
gdb에 익숙한 사람이 이 아이디어를 확인하거나 수정할 수 있습니까?
당신의 도움을 주셔서 감사합니다!
ps 그리고 저는 gdb(Debian 8.3.1-1) 8.3.1을 사용했습니다.