CentOS 7에서 nginx 증폭 에이전트가 올바른 사용자가 소유한 /proc/$pid/io를 읽을 수 없는 문제를 디버깅하려고 합니다.
nginx 작업자 프로세스 중 하나의 현재 pid는 5693입니다.
# ps aux | grep 5693
nginx 5693 0.5 0.0 129000 14120 ? S Jul18 16:10 nginx: worker process
nginx 사용자에게는 파일을 읽을 수 있는 권한이 있습니다.
# ls -lAh /proc/5693/io
-r-------- 1 nginx nginx 0 Jul 20 11:30 /proc/5693/io
...하지만 실제로 읽을 수는 없습니다.
# sudo -u nginx /bin/sh -c 'cat /proc/5693/io'
cat: /proc/5693/io: Permission denied
...selinux가 비활성화된 경우에도 마찬가지입니다.
# sestatus
SELinux status: disabled
루트는 정상적으로 /proc/5693/io를 읽을 수 있고 nginx 사용자는 /proc/5693의 다른 파일을 읽을 수 있습니다. 액세스를 방지하는 다른 보안 메커니즘이 있는 것 같지만 그것이 무엇인지는 전혀 모릅니다.
답변1
proc(5)
"/proc/[pid]/io
이 파일에 대한 액세스는 ptrace 액세스 모드 TRACE_MODE_READ_FSCREDS 검사에 의해 제어됩니다. ptrace(2)를 참조하십시오. "ptrace 액세스 모드 확인프로세스가 덤프 가능한 것으로 표시되었는지, 대상 프로세스와 동일한 fsuid를 가지고 있는지 등을 포함하여 권한 부여 또는 거부를 확인할 사항 목록이 있는 매뉴얼 페이지 섹션을ptrace(2)
살펴볼 가치가 있습니다.
문서가 최근에 추가되었습니다. 업스트림을 확인하세요.
UID 외에도 실행 중인 프로세스의 GID도 변경해야 할 것 같습니다.