Jay*_*ine 5 rhel permissions centos proc
在 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
Run Code Online (Sandbox Code Playgroud)
nginx 用户具有读取文件的权限:
# ls -lAh /proc/5693/io
-r-------- 1 nginx nginx 0 Jul 20 11:30 /proc/5693/io
Run Code Online (Sandbox Code Playgroud)
...但实际上无法阅读它:
# sudo -u nginx /bin/sh -c 'cat /proc/5693/io'
cat: /proc/5693/io: Permission denied
Run Code Online (Sandbox Code Playgroud)
...即使 selinux 被禁用:
# sestatus
SELinux status: disabled
Run Code Online (Sandbox Code Playgroud)
root 可以读取 /proc/5693/io 就好了,nginx 用户可以读取 /proc/5693 中的其他文件。似乎必须有其他一些安全机制来阻止访问,但我不知道它可能是什么。
根据 的内容
proc(5),/proc/[pid]/io_“访问此文件的权限由 ptrace 访问模式 TRACE_MODE_READ_FSCREDS 检查控制;请参阅 ptrace(2)。”_手册页的Ptrace 访问模式检查部分ptrace(2)包含以下内容的列表检查以授予或拒绝权限,包括进程是否标记为可转储、是否与目标进程具有相同的 fsuid 等,可能值得一看。
该文档是最近添加的,请检查上游。
我怀疑除了 UID 之外,您还需要更改正在运行的进程的 GID。
| 归档时间: |
|
| 查看次数: |
2892 次 |
| 最近记录: |