htop
3.2.2以普通用户身份运行仅显示 I/O 速率 ( IO_RATE
/ IO_READ_RATE
/ IO_WRITE_RATE
)一些流程,其他流程为“N/A”。
以 root 身份运行显示所有进程的 I/O。
如何配置 htop show I/O 速率全部以普通用户身份运行时的进程?
答案1
htop
尝试读取/proc/pid/io
每个进程的文件以获取 I/O 统计信息。
/proc/pid/io
接近该部分的结尾proc(5)
我们有:
访问此文件的权限由 ptrace 访问模式检查控制
PTRACE_MODE_READ_FSCREDS
;请参阅 ptrace(2)。
ptrace()
可以授予一般权限CAP_SYS_PTRACE
但我们还需要CAP_DAC_READ_SEARCH
绕过文件读取权限检查访问ptrace()
算法。
setcap(8)
可用于设置htop
可执行文件的两种功能:
sudo setcap 'cap_sys_ptrace=ep cap_dac_read_search=ep' /usr/bin/htop
上限位可以通过以下方式验证:
sudo getcap /usr/bin/htop
...或者一起重置:
sudo setcap '' /usr/bin/htop