是否可以/usr/bin/top
使用 AppArmor 在 Linux 上进行限制,使其仅显示当前用户的进程?除此之外,/bin/ls /proc
不得显示任何属于其他用户的 PID。
答案1
简短回答
不,这不是您能用 AppArmor 轻松完成的事情。修改 top 和 ls 来实现这一点并不难,但绕过这些更改却很容易(自己动手制作 ls 和 top)。修改对 /proc 文件系统的访问可能会破坏许多应用程序。
长答案
据我所知,Linux 没有内置此功能。您必须修改内核以确保没有系统调用可以泄露有关其他用户正在运行的进程的信息,但这是一个大项目。问题仍然存在...为什么?如果用户在您的服务器上拥有 shell 访问权限,那么该用户可以做很多肮脏的事情。如果您想限制用户以使其无法与服务器的其余部分交互,您应该将他放入某种容器中。虚拟机非常适合此目的。
答案2
唯一的办法就是安装内核补丁。我建议安全。这将只显示 ps 中的用户进程,并且还应通过 top 进行限制。如果没有,那么最好的办法是
chmod 700 /usr/bin/top
因此只有 root 可以运行它。大多数 shell 用户甚至不需要 top
答案3
这个答案实现了 OP 想要的结果,但不是按照他们想要的方式。Linux 内核(自 3.3 起)支持对其他用户隐藏进程。要做到这一点,您需要使用 hidepid 选项挂载 /proc,要在启动时自动执行此操作,您需要在文件中添加如下/etc/fstab
一行
proc /proc proc defaults,nosuid,nodev,noexec,relatime,hidepid=2 0 0
运行man proc
以获取更多信息并理解隐藏的数字