hito
hitoh****@gmail*****
2010年 8月 8日 (日) 15:28:37 JST
# /procの話をしている時にとっとと出すべきだったんですが……。 btrfsがUbuntu 10.10で「それなりに」使える状態になりそうです。 Alpha3の段階で、Ubiquity(GUIインストーラ)からbtrfsを準備した環境を 作れるようになってしまいました。これで11.04ではきっと使われてまた 大惨事が。……まあそれそのものは良くて。 このbtrfsにはpathname based MACを使う上で、少々悩ましい snapshot機能があります。 ざっとまとめると、 1) btrfsにはsnapshotを生成する機能がある。 2) snapshotは、当然「ある時点のファイルシステムに含まれていたデータ」 が含まれている。 3) snapshot は、/tmp/snapshot20100808 なんぞというディレクトリ として生成することが可能。 4) /tmp 以下だけは比較的自由に強制アクセス制御している環境を仮定する。 5) /tmp 以下に btrfs snapshot 作られるとパス名制御が崩壊する予感。 具体的にはこんな操作です。Ubuntu 10.10 Alpha3, /boot: ext3, /: btrfs な 環境を作るとすぐに試せます。(Desktop CDでインストールする時に、 パーティションを手動で構成してください) sudo btrfs subvolume snapshot / /tmp/test こうすると、/tmp/test/ 以下に / の内容が丸ごとできあがります。/tmp 以下にはMACによる制限も及ばないので、任意の読み取りが可能です。 逆パターンとして、「/usr/bin への書き込みは禁止し、/usr/bin/以下の 全ファイルの実行は許可する」という環境でもなんかイヤな気配がします。 # 書けないと安全か? ……で、 課題1) これを防げるように構成できるべき気がしますが、そもそもの話、 pathname based MACではどう防ぐべきでしょう? AppArmor方面では https://bugs.launchpad.net/ubuntu/+source/apparmor/+bug/484786 どうせioctlしてるだけだよね? という話になるかもしれません。 たしかにBTRFS_IOC_SNAP_CREATEを投げてるだけなので、TOMOYOでは allow_ioctlでBTRFS_IOC_SNAP_CREATEを拒否ればいいよね、という 考え方はありますが……。 そうすると、たとえば /home/hito 用にsubvol を切っている環境で、 ユーザーが自分で能動的にsnapshotを切れなくなって微妙な気がします。 UbuntuでのAppArmorの使い方は「明確に黒い動作だけは拒否する」 なので、特定の(権限を落とした)ユーザーならBTRFS_IOC_SNAP_CREATE 他、btrfsコマンドの実行は認めない、というプロファイルでも良さそう なのですが、MACとして考えると痛いです。 課題2) http://tomoyo.sourceforge.jp/wiki-e/?WhatIs#v64787b4 や、それにあたるpathname操作関連のドキュメントを更新する必要が たぶんありそうです。