我已经为我的系统编写了自己的初始化进程(pid 1),为了提高安全性,我决定在hidepid=2
安装位置时添加(默认情况下不安装)。procfs
/proc
procfs
安装后,procfs
我运行mount
命令来检查给定安装选项的所有安装是否正常,我注意到hidepid=2
选项中没有列出。一段时间后我发现hidepid=2
只能在之后添加到列表中remount
。
我也使用命令行确认了该行为,如下所示
- 最初
/proc
没有安装procfs
- 被处决
mount -t proc -o hidepid=2 proc /proc
- 执行
mount
, 表明proc on /proc type proc (rw,relatime)
- 被处决
mount -t proc -o remount,hidepid=2 proc /proc
- 执行
mount
, 表明proc on /proc type proc (rw,relatime,hidepid=2)
有人好心地解释一下为什么我无法一次性安装procfs
吗hidepid=2
?
答案1
Linux 内核中有一个提交(https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=69879c01a0c3f70e0887cfb4d9ff439814361e46) 说的是:
此外,消除了内核挂载不必要的复杂性,还修复了导致 proc 挂载选项被忽略的回归。现在 proc 的初始挂载来自用户空间,这些挂载选项再次受到尊重。这修复了 Android 对 proc hidepid 选项的使用。
所以看来这是 Linux 内核中的一个错误,目前(https://github.com/torvalds/linux/commit/69879c01a0c3f70e0887cfb4d9ff439814361e46),仅在 v5.7 版本的发布候选标签(v5.7-rc4、v5.7-rc3、v5.7-rc2 和 v5.7-rc1)中修复。