所有者无法读取 /proc/$pid/io

所有者无法读取 /proc/$pid/io

在 CentOS 7 上,我正在尝试调试 nginx amplify 代理无法读取 /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

root 能够正常读取 /proc/5693/io,并且 nginx 用户可以读取 /proc/5693 中的其他文件。似乎必须有其他一些安全机制来阻止访问,但我不知道它可能是什么。

答案1

根据proc(5)上的说法/proc/[pid]/io,_“访问此文件的权限由 ptrace 访问模式 TRACE_MODE_READ_FSCREDS 检查控制;请参阅 ptrace(2)。”_ptrace 访问模式检查手册页的部分ptrace(2)包含检查授予或拒绝权限的内容列表,包括进程是否标记为可转储、是否与目标进程具有相同的 fsuid 等,可能值得一看。

该文档是最近添加的,请检查上游。

我怀疑除了 UID 之外,您还需要更改正在运行的进程的 GID。

相关内容