默认情况下,我在 /proc 处安装了一个常规 proc fs。
(我是以下所有命令的 root)
我在不同的位置再次安装相同的文件,并设置了 hidepid 选项,如下所示:
mount -t proc -o hidepid=2 proc /some/dir/proc
安装工作正常,我可以从ls /proc
And看到相同的输出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 挂载选项仅适用于重新挂载?