web-dev-qa-db-ja.com

なぜprocfsマウントオプションが再マウントでのみ機能するのですか?

システムを独自に初期化プロセス(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_で一度にマウントできなかった理由を誰かが親切に説明してくれますか?

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)。

4
Disconnect3d