我想列出正在运行的进程(例如使用ps
或top
),但没有安装 procfs。
未挂载的procfs是故意的,旨在防止恶意用户访问系统信息。
有没有办法我仍然可以列出正在运行的进程,或者这是不可能的?
我正在运行 Linux 3.16。
答案1
答案2
ps
从挂载的 procfs 获取所有信息,因此没有 procfs 就没有获取该信息的来源。我看到的唯一选择是挂载 proc 来调用 ps/top,然后卸载它,这样可以最大限度地降低风险。
答案3
未挂载的procfs是故意的,旨在防止恶意用户访问系统信息。
不安装 procfs 并不是实现此目标的唯一可能方法。
您可以使用hidepid=2
选项挂载 procfs,使非特权用户只能看到自己的进程,这隐藏了有关系统的大量信息。看proc(5)
有关此功能的详细信息。
要进一步限制对 procfs 的访问(因为它不仅包含有关进程的信息,还包含诸如 等的文件cpuinfo
,modules
并且hidepid
不隐藏这些部分),您可以为安装点指定限制模式,例如 0711 甚至 0700。给定/proc
所有者是 root,在后一种情况下只有 root 才被允许访问 procfs。这意味着您可以使用ps
、top
等htop
进行检查,/proc/mdstat
但仅当您以 root 身份登录时才可以,而其他用户则不能 - 他们在尝试访问 时将面临“权限被拒绝”错误/proc
。
另外,我不建议您的系统根本没有 procfs,因为很多程序都依赖于它的安装(不仅仅是ps
)。