无法读取 /proc//smaps,尽管具有模式 444 权限

无法读取 /proc//smaps,尽管具有模式 444 权限

我正在尝试编写一个脚本来检查正在运行的进程的内存使用情况。为此,它需要读取 /proc/*/smaps 文件。

root 拥有的进程的权限设置为“-r--r--r--”,这应该每个人都可以读懂,对吧?

ls -l 的示例输出 [编辑:现在具有目录权限]

ls -l /proc/939/smaps
-r--r--r-- 1 root root 0 2012-07-11 12:11 /proc/939/smaps

ls -ld /proc/939/smaps
-r--r--r-- 1 root root 0 2012-07-11 12:11 /proc/939/smaps

尝试阅读:

cat /proc/939/smaps
cat: /proc/939/smaps: Permission denied

这里我遗漏了一些明显的东西吗?

EDIT2:经过进一步调查,其他文件(例如 /proc//cmdline)是可读的,所以它可能只是 smaps 文件的一个特例?

答案1

出于安全原因,读取/proc/PID/smaps需要该CAP_SYS_PTRACE能力。

您可以使用 向您的应用程序添加此功能sudo setcap cap_sys_ptrace+ep YOUR_APPLICATION

相关内容