적절한 권한이 있어도 /proc/pid/stack 파일을 읽을 수 없습니다

적절한 권한이 있어도 /proc/pid/stack 파일을 읽을 수 없습니다

내가 아는 한, 권한이 있으면 일반 파일 내용을 읽을 수 있어야 합니다.

다음은 출력입니다ls -l 스택~을 위한더미내 Linux 시스템에서 실행 중인 프로세스 중 하나에 대한 파일(/proc/pid/stack):

-r--r--r-- 1 Usr1 Usr1 0 9월 20일, 18:08 스택

권한을 살펴보면 파일을 읽을 수 있을 것입니다.

파일을 읽으려고 할 때마다(vi 스택) 처럼사용자 1, 빈 파일만 표시됩니다. 또한 파일을 다음과 같이 열려고 할 때뿌리사용자.

[] ptrace_stop+0x154/0x270 [] get_signal_to_deliver+0x3dc/0x610 [] do_signal+0x3f/0x8d0 .. .. ..

정확히 무슨 일이 일어나고 있는지 알 수 없습니까?

답변1

여기서 특이한 점은 open성공 /proc/pid/stack하지만 시도하면 read반환된다는 것입니다 EPERM.

/proc/pid/stack호출 내용을 표시하는 데 사용되는 fs/proc/base.c:proc_pid_stack()커널 소스 코드입니다 lock_trace(). 호출자에게 액세스 권한이 없으면 권한 오류가 반환됩니다.대상 프로세스.

많은 Linux 배포판에는 ptrace.야마, Ubuntu를 사용하면 이런 상황이 발생합니다. 사용 권한은 ptrace대상의 루트 프로세스 또는 상위(일반적으로 상위) 프로세스로 제한됩니다. 당신은 그것을 확인할 수 있습니다

root@ubuntu:~# cat /proc/sys/kernel/yama/ptrace_scope 
1

다음을 수행하여 비활성화할 수 있습니다.

root@ubuntu:~# echo 0 > /proc/sys/kernel/yama/ptrace_scope 

그 후에는 다음을 수행할 수 있습니다 cat /proc/pid/stack.

관련 정보