Centos
所有者無法讀取 /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 中的其他文件。似乎必須有其他一些安全機制來阻止訪問,但我不知道它可能是什麼。
根據必須
proc(5)
說的內容/proc/[pid]/io
,“訪問此文件的權限由 ptrace 訪問模式 TRACE_MODE_READ_FSCREDS 檢查管理;請參閱 ptrace(2)。” 手冊頁的Ptrace 訪問模式檢查部分ptrace(2)
包含以下內容的列表檢查以授予或拒絕權限,包括程序是否標記為可轉儲,您是否具有與目標程序相同的 fsuid 等,可能值得一看。該文件是最近添加的,請查看上游。
我懷疑除了 UID 之外,您還需要更改執行程序的 GID。