列出没有 procfs 的正在运行的进程

列出没有 procfs 的正在运行的进程

我想列出正在运行的进程(例如使用pstop),但没有安装 procfs。

未挂载的procfs是故意的,旨在防止恶意用户访问系统信息。

有没有办法我仍然可以列出正在运行的进程,或者这是不可能的?

我正在运行 Linux 3.16。

答案1

不安装 procfs 听起来像是一个错误。它并没有真正提高安全性,Linux 就是设计来/proc安装的。特别是,正如您所发现的,/proc这是查找有关进程的信息的方式(在 Linux 上,ps它只是在 下找到的信息的漂亮打印机/proc)。

如果您有充分的理由阻止某些应用程序访问/proc,请在容器或一个名称空间。请在根目录下挂载/proc,并将其保留在命名空间之外。

答案2

ps从挂载的 procfs 获取所有信息,因此没有 procfs 就没有获取该信息的来源。我看到的唯一选择是挂载 proc 来调用 ps/top,然后卸载它,这样可以最大限度地降低风险。

答案3

未挂载的procfs是故意的,旨在防止恶意用户访问系统信息。

不安装 procfs 并不是实现此目标的唯一可能方法。

您可以使用hidepid=2选项挂载 procfs,使非特权用户只能看到自己的进程,这隐藏了有关系统的大量信息。看proc(5)有关此功能的详细信息。

要进一步限制对 procfs 的访问(因为它不仅包含有关进程的信息,还包含诸如 等的文件cpuinfomodules并且hidepid不隐藏这些部分),您可以为安装点指定限制模式,例如 0711 甚至 0700。给定/proc所有者是 root,在后一种情况下只有 root 才被允许访问 procfs。这意味着您可以使用pstophtop进行检查,/proc/mdstat但仅当您以 root 身份登录时才可以,而其他用户则不能 - 他们在尝试访问 时将面临“权限被拒绝”错误/proc

另外,我不建议您的系统根本没有 procfs,因为很多程序都依赖于它的安装(不仅仅是ps)。

相关内容