내가 아는 한, 권한이 있으면 일반 파일 내용을 읽을 수 있어야 합니다.
다음은 출력입니다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
.