[jsosug:00073] PHP/SELinuxインターフェース

Back to archive index

KaiGai Kohei kaiga****@ak*****
2009年 3月 10日 (火) 17:42:53 JST


海外です。

PHPスクリプトからSELinuxの各種インターフェースを利用するための
モジュールなる物を作成してみました。

 * SELinux binding for PHP script language
   http://pecl.php.net/package/selinux
   http://cvs.php.net/viewvc.cgi/pecl/selinux/

 * php-pecl-selinux (Fedoraでのパッケージ名)
   http://koji.fedoraproject.org/koji/packageinfo?packageID=7917

 * 関数の一覧
   http://code.google.com/p/sepgsql/wiki/Memo_PHP_SELinux
   (すいません英語です…)

あと数日もすれば、yum install php-pecl-selinux で手元の Fedora 環境に
落ちてくるようになる(Fedora9〜)と思いますが、新しいもの好きの方は、
上記のURLよりダウンロードできます。

 インストール)
 # wget http://.../php-pecl-selinux-0.1.2-1.fc10.i386.rpm
 # rpm -Uvh php-pecl-selinux-0.1.2-1.fc10.i386.rpm
 $ php -r 'echo selinux_getcon()."\n";'
 unconfined_u:unconfined_r:unconfined_t:SystemLow-SystemMiddle

使い方の例としては、SELinuxのセキュリティポリシーが、どういった
アクセス制御のルールを持っているかを見るために selinux_compute_av()
関数を使ってみて…

 $ php -r '$scontext = "staff_u:staff_r:staff_t";
           $tcontext = "system_u:object_r:etc_t";
           $avd = selinux_compute_av($scontext, $tcontext, "file");
           var_dump($avd);'
 array(4) {
   ["allowed"]=>
   array(21) {
     ["ioctl"]=>
     bool(true)
     ["read"]=>
     bool(true)
     ["write"]=>
     bool(false)
     ["create"]=>
     bool(false)
     ["getattr"]=>
     bool(true)
     ["setattr"]=>
     bool(false)
     ["lock"]=>
     bool(true)
         :
      (以下略)

なんて事ができます。

そもそもの目的は、Apache上でPHPスクリプトを動かした際に、
SELinux関連の機能を利用してゴニョゴニョするためなのですが、
LL言語で簡単に SELinux の挙動を眺める事ができるという事で、
教育目的としても良いのではないかと踏んでいたりします。

では。
-- 
OSS Platform Development Division, NEC
KaiGai Kohei <kaiga****@ak*****>




Jsosug-users メーリングリストの案内
Back to archive index