ユーザーの名前空間内ですでにマウントされているファイルシステムを再マウントできないのはなぜですか?

ユーザーの名前空間内ですでにマウントされているファイルシステムを再マウントできないのはなぜですか?

https://github.com/systemd/systemd/issues/9914#issuecomment-416387637

$ uname -r
4.17.18-200.fc28.x86_64

$ unshare -U -r -m
# mkdir TMP
# mount -t tmpfs tmpfs TMP/
# mount -o remount,ro TMP/
mount: ./TMP: permission denied.

# grep TMP /proc/self/mountinfo
834 831 0:74 / /home/alan/TMP rw,relatime - tmpfs tmpfs rw,seclabel,uid=1001,gid=1001
# strace -f mount -o remount TMP/
...
mount("tmpfs", "/home/alan/TMP", 0x557c3cec9600, MS_REMOUNT|MS_RELATIME, "seclabel,uid=1001,gid=1001") = -1 EPERM (Operation not permitted)
...

バインドの再インストールが正しく機能します。

 # strace -f mount -o remount,bind,ro TMP/
 mount("tmpfs", "/home/alan/TMP", 0x5615b7ebc130, MS_RDONLY|MS_REMOUNT|MS_BIND|MS_RELATIME, "seclabel,uid=1001,gid=1001") = 0

ベストアンサー1

実装されていません。しかし、次のバージョンにはあるでしょう!

v4.18には次のコミットが含まれています。以前にサポートされていなかった具体的な理由は提供されません。

https://github.com/torvalds/linux/commit/bc6155d13260

fs: スーパーブロックの所有者が do_remount_sb() にアクセスできるようにします。

マウント解除時にルートマウントを読み取り専用パスに変更するのと同様に、スーパーブロックレベルの再マウントは現在グローバルCAP_SYS_ADMINに制限されています。元のファイルシステムをマウントしたユーザーに対する権限を持つすべての名前空間でCAP_SYS_ADMINを使用できるように、これら2つの権限チェックを軽減してください。

おすすめ記事