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

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

在 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

Root 能够正常读取 /proc/5693/io,而 nginx 用户可以读取 /proc/5693 中的其他文件。似乎一定存在某种其他安全机制阻止访问,但我不知道可能是什么。

注意:不确定是否允许这样做,但我从 U&L 交叉发布了这个问题,因为它在那里没有引起注意,并且影响了我们的生产服务器。原始问题在这里:https://unix.stackexchange.com/questions/297190/owner-cant-read-proc-pid-io- 我只想迁移它但没有找到方法。

答案1

可能需要为 amplify 代理进程授予 PTRACE。这看起来有些不寻常,可能最好由 nginx 人员处理,但您可以尝试查看 man 8 setcap 以了解如何为 amplify 程序授予 PTRACE。

答案2

在这里回答:https://unix.stackexchange.com/questions/297190/owner-cant-read-proc-pid-io

问题似乎是除了 uid 之外还需要设置 GID。

相关内容