使用 hidepid 选项挂载 proc 不会按预期隐藏 proc,为什么?

使用 hidepid 选项挂载 proc 不会按预期隐藏 proc,为什么?

默认情况下,我在 /proc 处安装了一个常规 proc fs。

(我是以下所有命令的 root)

我在不同的位置再次安装相同的文件,并设置了 hidepid 选项,如下所示:

mount -t proc -o hidepid=2 proc /some/dir/proc

安装工作正常,我可以从ls /procAnd看到相同的输出ls /some/dir/proc

然后我运行:

setpriv —-reuid 1002 ls /proc

并且输出仍然相同。 uid 1002 是非 root 用户,没有隐藏任何进程。

我检查了 setpriv 是否正在工作,如果是,setpriv -—reuid 1002 ls /root/我会按预期获得许可被拒绝。

看来 hidepid 选项没有效果。我缺少什么?

答案1

除了 之外hidepid,还有一个gid选项:

gid=gid(自 Linux 3.3 起)
指定一个组的 ID,该组的成员被授权了解进程信息,否则禁止 hidepid

它没有明确说明这一点,但在我的系统上,如果未给出,它似乎默认为零。 (不过,我没有检查来源。)因此,尝试使用以下内容:

setpriv --regid 1002 --clear-groups --reuid 1002 ls /proc/ 

proc此外,还有一个错误会导致安装时设置的安装选项被忽略。将它们设置为-oremount随后的作品。这在 Linux 5.7 中已修复,请参阅:为什么 procfs 挂载选项仅适用于重新挂载?

相关内容