jumble

アクセスカウンタ

zoom RSS SELinuxと格闘 その4

<<   作成日時 : 2012/03/18 22:38   >>

ブログ気持玉 0 / トラックバック 0 / コメント 0

SELinuxと格闘 その4


前の記事

2つ前の記事で、インストールが原因での不具合について記述した。
経緯を整理する。
まず、ひょんなことからselinux-policy-targeted.noarchをインストールしてしまった。

# yum -y install selinux-policy-targeted.noarch
・・・
依存性を更新しました:
checkpolicy.x86_64 0:2.1.6-2.fc16
policycoreutils.x86_64 0:2.1.4-13.fc16
policycoreutils-python.x86_64 0:2.1.4-13.fc16
policycoreutils-sandbox.x86_64 0:2.1.4-13.fc16
selinux-policy.noarch 0:3.10.0-75.fc16
完了しました!

selinux-policy-targeted.noarchは入っていたので、実際にはアップデートになったようだ。
その結果、上記のパッケージも一緒にアップデートされた。
で、バージョンの不整合を起こしているのが、checkmoduleとsemodule_packageの2つのコマンドだ。
それぞれパッケージを調べる。

$ rpm -qf $(which checkmodule)
checkpolicy-2.1.6-2.fc16.x86_64

$ rpm -qf $(which semodule_package)
policycoreutils-2.1.4-13.fc16.x86_64

checkpolicyとpolicycoreutilsは、両方とも先ほどのインストールでアップデートされている。
この状態で不整合が起きるのだ。
両方ともを最新にしている状態で不整合が起きるので、かなり絶望視していた。

不整合が起こったときの2つのコマンドの状況をもう一度よく見てみよう。

$ checkmodule -M -m -o xxxx.mod xxxx.te
checkmodule: loading policy configuration from xxxx.te
checkmodule: policy configuration loaded
checkmodule: writing binary representation (version 14) to xxxx.mod

$ semodule_package -o xxxx.pp -m xxxx.mod
libsepol.policydb_read: policydb module version 14 does not match my version range 4-13
semodule_package: Error while reading policy module from xxxx.mod

以前実行した時には気付かなかったが、ちゃんと失敗した原因となるパッケージが出ているようだ。
どうやら、libsepolというパッケージが絡んでいるらしい。
yum infoで調べると、インストールしているものより新しいものが出ている。
で、インストール(というよりアップデート)してみた。

# yum -y install libsepol

この後、semodule_packageを再度実行すれば、あっさり成功した。
うーむ。
policycoreutilsをアップデートしたときに、依存関係でlibsepolをアップデートしてくれないのかな。
それか、(恐らく)対となる出力パッケージであるcheckpolicyのアップデート時でもいいのだが。
パッケージの依存関係を調べてみた。
checkpolicyとlibsepolの間には、直接依存関係はなさそうだ。
policycoreutilsがcheckpolicyとlibsepolの両方を必要としているようだ。

$ rpm -qR policycoreutils | grep '\(libsepol\|checkpolicy\)'
checkpolicy
libsepol >= 2.1.0-1
libsepol.so.1()(64bit)

libsepolの方はバージョンがバッチリでてくるが、checkpolicyには出てこない。
次のようなこともやってみた。

$ rpm -e --test checkpolicy
    checkpolicy >= 2.1.6-2 は (...)policycoreutils-2.1.4-13.fc16.x86_64 に...

$ rpm -e --test libsepol
    libsepol >= 2.1.0-1 は (...)policycoreutils-2.1.4-13.fc16.x86_64 に...

こうやると両方ともバージョンが出てくるが、checkpolicyに出ているバージョンはいったい何?
単に現在インストールされているものが出ているだけかな?
policycoreutilsをアップデートした際、libsepolをアップデートしない理由は何だろう?
現状のバージョンでも適応できる場合は、アップデートしないのかな?
結論からするとそうなんだろう。
逆に、なぜcheckpolicyはアップデートされたんだ?
バージョン指定のないものは、常にバージョンアップするということなのか?
うむむ。
何はともあれ、厳しく言えばそれはpolicycoreutils作成側のバグなのでは?
この場合、checkpolicyとlibsepolのバージョンは常に互換性があるように、気を使うべきなのではないだろうか?

でもまあしょうがない。
原因が分かっただけかなりすっきりしたし、これからの対処方法もはっきりした。
libsepolはcheckpolicyと同時に必ずアップデートする、ということだろう。
ただ、この2つが連携しながら必ず同時にアップデートしてくれるのかという、一抹の不安は残る。

やっぱり、最低パッケージとしては統合してほしいところだ。
欲を言えば、2段階のコインパイルではなく、一回ですむようにしてほしい。
かつ、オプションによってはバイナリのポリシーパッケージを作らず、直接追加できるような仕組みにしてほしいな。
無料で提供してくれているのに、文句ばかりで申し訳ない気にもなるけど。
いや、これは文句ではなく、いちユーザーの要望として捉えてもらえればと思う。
それを、是非品質向上に役立ててほしい。
そうすることで使い勝手がよくなり、みんながSELinuxを使ってセキュリティが向上することにつながればね。

テーマ

関連テーマ 一覧


月別リンク

ブログ気持玉

クリックして気持ちを伝えよう!
ログインしてクリックすれば、自分のブログへのリンクが付きます。
→ログインへ

トラックバック(0件)

タイトル (本文) ブログ名/日時

トラックバック用URL help


自分のブログにトラックバック記事作成(会員用) help

タイトル
本 文

コメント(0件)

内 容 ニックネーム/日時

コメントする help

ニックネーム
本 文
SELinuxと格闘 その4 jumble/BIGLOBEウェブリブログ
文字サイズ:       閉じる