有点脏,可能有更简洁的解决方案(可能使用 SELinux 或 grsec),但是您可以通过在/proc/<pid>
.
例如,这样的事情:
mount -o bind /empty/dir /proc/42
Run Code Online (Sandbox Code Playgroud)
将阻止普通用户看到进程 42。
然而,他们会看到某些东西被隐藏了,因为他们将能够看到挂载点。
如果您想为服务执行此操作,则必须在每次启动时使用其 init 脚本或其他方式执行此操作。
如果您只想对特定用户隐藏 pid,您可以使用命名空间(可能使用pam_namespace
)来让挂载绑定仅在目标用户的命名空间中完成。
为了扭转这种情况,只需运行:
umount /proc/42
Run Code Online (Sandbox Code Playgroud)