천재태지의 세상 돌려보기

seoz.egloos.com

- About Me... - Enlightenment, EFL - 타이젠 Tizen



[우분투] 실행중인 프로세스에 gdb 붙이기 ├ 리눅스

시점이 정확히 기억은 안나지만 우분투 12.xx 버전부터 실행중인 프로세스에 gdb를 붙이려고 하면 ptrace 설정을 확인하라는 에러 메시지가 발생했다.
ptrace가 디버깅을 위한 용도이므로 일반 사용자는 이 기능이 필요 없으니 ptrace가 기본적으로는 동작하지 않도록 한 모양이다. 악의적인 용도로 사용되는 것을 방지하기 위한 것도 보안상 이유일 것이다. [1]

이 문제는 간단하게 해결 가능하다.

<gdb 실행 예>
$ gdb - 6032

여기서 6032는 실행중인 프로그램의 프로세스 번호(pid)를 나타내며 상황에 따라 다르다.

<에러 메시지>

Could not attach to process.  If your uid matches the uid of the target
process, check the setting of /proc/sys/kernel/yama/ptrace_scope, or try
again as the root user.  For more details, see /etc/sysctl.d/10-ptrace.conf
ptrace: Operation not permitted.

/home/seoz/6032: No such file or directory.

[그림 1. gdb 에러 메시지]

이 경우 아래 명령어를 입력하면 실행 중인 프로세스에 gdb를 문제 없이 붙일 수 있다.

$ sudo bash
# echo 0 > /proc/sys/kernel/yama/ptrace_scope

[그림 2. 문제 해결 방법]

시스템 재시작 이후에도 이 설정이 유효하려면 10-ptrace.conf 파일의 kernel.yama.ptrace_scope의 값을 1에서 0으로 변경해줘야 한다.

[그림 3. 10-ptrace.conf 파일 수정]

그럼 시스템 재시작 이후에도 아래와 같이 문제 없이 실행중인 프로세스에 gdb를 붙일 수 있다.
간단한 팁이니 알아두자.

[그림 4. 실행중인 프로세스에 gdb를 성공적으로 붙인 모습]


[1] https://wiki.ubuntu.com/SecurityTeam/Roadmap/KernelHardening#ptrace

공유하기 버튼

 

1 2 3 4 5 6 7 8 9 10 다음