![如何阻止用户看到其他进程?](https://linux22.com/image/530885/%E5%A6%82%E4%BD%95%E9%98%BB%E6%AD%A2%E7%94%A8%E6%88%B7%E7%9C%8B%E5%88%B0%E5%85%B6%E4%BB%96%E8%BF%9B%E7%A8%8B%EF%BC%9F.png)
一般来说,它是(例如)grsecurity 的功能之一 - 用户只能看到他自己的进程,而看不到所有其他进程。
但是 - 我宁愿避免安装 grsecurity - 也许可以用更简单的方式完成这样的事情?
我正在使用 Linux Debian。
答案1
不需要容器,只需使用较新的操作系统 https://linux-audit.com/linux-system-hardening-adding-hidepid-to-proc/
https://www.linux-dev.org/2012/09/hide-process-information-for-other-users/
hidepid 是 procfs (/proc) 的一个新的挂载选项,使用它您可以向其他用户(如其他 shell 用户和 web 脚本)隐藏进程及其信息。
hidepid 接受三个不同的值:
hidepid=0(默认):这是默认设置,并为您提供默认行为。
hidepid=1:使用此选项,普通用户将看不到其他进程,但可以看到自己的 ps、top 等进程,但仍可以在 /proc 中看到进程 ID
hidepid=2:用户只能看到自己的进程(与 hidepid=1 类似),但 /proc 中的其他进程 ID 也是隐藏的!
此外,您还可以指定一个用户/组 ID,该 ID 仍可以使用 gid 选项查找进程。因此,如果您想对其他用户隐藏所有进程,除了 root (uid=0) 和此示例中的 gid=1001(此示例中的某个半管理用户),您的 /etc/fstab 必须如下所示:
proc /proc proc 默认值,hidepid=2,gid=1001 0 0
答案2
根据您要完成的任务,您可能需要研究 Linux 容器:
这是一种轻量级虚拟化机制,可让您在 Linux 系统上创建独立的资源组。Linux 容器 (LXC) 使用 Linux 内核中过去几年来一直存在的命名空间支持;此页面:
有讨论这项工作各个方面的文章链接。
这最终可能会成为比您所寻求的更大的解决方案,但它是一项非常有趣的技术。