普通用户默认可通过/proc查看其他用户进程信息,存在泄露风险;应启用内核hidepid选项(Linux 3.3+支持),设hidepid=2并指定gid=proc组实现权限隔离。

普通用户默认能通过 /proc 查看其他用户的进程信息(如命令行参数、打开文件、内存映射等),存在敏感信息泄露风险。核心解决方式是启用内核的 hidepid 挂载选项,而非简单修改目录权限(chmod 对 /proc 无效)。
确认内核支持 hidepid
Linux 3.3+ 内核已支持该特性。运行以下命令验证:
grep CONFIG_PROC_FS /boot/config-$(uname -r) 2>/dev/null | grep -q "y" && echo "支持" || echo "不支持"
若输出“支持”,即可继续配置;否则需升级内核。
临时启用 hidepid(重启失效)
执行以下命令立即生效(无需卸载):
mount -o remount,hidepid=2,gid=proc /proc
说明:
-
hidepid=2:用户只能看到自己的进程,且无法查看进程的命令行(
/proc/PID/cmdline)、环境变量(/proc/PID/environ)等敏感字段; -
gid=proc:指定一个系统组(如
proc),该组成员可绕过限制,用于授权运维人员查看全部进程; - 若未创建
proc组,先运行groupadd proc,再将授权用户加入:usermod -aG proc username。
永久生效(写入 fstab)
编辑 /etc/fstab,找到 /proc 对应行(通常为 proc /proc proc defaults 0 0),改为:
proc /proc proc defaults,hidepid=2,gid=proc 0 0
保存后,下次启动自动应用。也可手动重载:mount -o remount /proc。
验证效果
切换至普通用户执行:
-
ls /proc:仅显示自身 PID 和系统级目录(如1、self),看不到其他用户 PID; -
cat /proc/1/cmdline:若返回 “Permission denied”,说明生效; - 属于
proc组的用户执行相同命令应可正常读取。
注意:部分监控工具(如 ps、top)可能因无法读取 /proc 而显示不全,建议将运行这些工具的用户加入 proc 组。

















