php-selinux

目下のところ、PHPにはSELinux関連のAPIを呼び出す方法がないので、libselinuxへのバインディングを自作した。

http://code.google.com/p/sepgsql/source/browse/misc/php-selinux/

使い方は以下の通り。

% svn checkout http://sepgsql.googlecode.com/svn/misc/php-selinux/
% cd ./php-selinux
% ./build-php-selinux.sh
% su
# rpm -Uvh /path/to/rpm/php-selinux-1.1611-beta.fc10.i386.rpm
これで、SELinux関連のPHPモジュールがインストールされる。ビルドにはphp-develが必要なので、これも併せてインストールしておく必要がある。

不勉強にしてPHP用の動的モジュールのビルド方法を知らなかったため、従前の実装ではPHP本体にパッチを当てるようにしていたが、php-develに含まれているphpizeスクリプトを利用すれば、動的ビルドに必要なMakefileやその他諸々を自動生成してくれる。これは便利。

phpizeを使うには、モジュールのディレクトリ内にconfig.m4ファイルが必要。
そして、モジュール本体はzend_module_entry型のエントリを持っている必要がある。このエントリにはzend_function_entry型の配列が含まれており、これがPHPから関数を呼び出す時のエントリーとなる。

地味な機能ではあるが、SE-PostgreSQLApache SELinux/plusと同じく、LAPP/SELinuxを実現するコンポーネントの一つ。遅々として進まないSE-PostgreSQLのレビューの合間に、php-internalの人に提案してみた

PHPの場合、こういう拡張がかなり沢山あり、それらはPECL(PHP Extension Community Library)という形でメンテナンスされているようだ。つーわけで、CVSのアカウントを申請。
PostgreSQLと違って、基本的に New Feature は Welcome という姿勢なのかな。PECLでの初版がリリースできたら、今度は Fedora と EPEL 向けにパッケージを申請する事にする。
まぁ、だれも不幸にならない拡張機能に対して反対される事はあるまい…。