[Tomoyo-dev 519] Re: ディレクトリ構成の議論を再開しましょう

Back to archive index

from-****@i-lov***** from-****@i-lov*****
2007年 8月 9日 (木) 13:03:30 JST


 熊猫です。

(1) /proc/{ccs,tomoyo}/version から
    カーネルがサポートしているポリシーのバージョン番号を取得できるようにする。

(2) カーネルがサポートしているポリシーのバージョン番号が同じなのに
  サポートされている構文がカーネルコンフィグに依存しないようにするために、
  カーネルコンフィグで各機能(CONFIG_TOMOYO_MAC_FOR_FILE CONFIG_TOMOYO_MAC_FOR_ARGV0 等)の
  選択を行わせないようにする。

(3) サポートしているポリシーのバージョン番号は複数表示できるようにする。
  例えばポリシーのバージョン 1 と 2 と 3 が定義されており、
  バージョン 3 はバージョン 2 を完全に包含している
  (バージョン 2 のポリシーをバージョン 3 のカーネルで使える)場合は
  2 3 の両方を表示する。
  バージョン 3 がバージョン 2 を完全には包含していない
  (バージョン 2 のポリシーをバージョン 3 のカーネルで使えない)場合は
  3 だけを表示する。

(4) ポリシー構文チェッカの checkpolicy の引数にポリシーのバージョン番号を
  指定するようにして、定義されている全てのバージョンのポリシーをチェックできるようにする。

(5) ポリシーローダ( /sbin/{ccs,tomoyo}-init )の処理を以下のように変更する。

  変更前
   (1) ポリシーファイルを /proc/{ccs,tomoyo}/ インタフェースに流し込む。
     サポートされていない構文やエラーを含む行はカーネルにより読み捨てられる。

  変更後
   (1) /proc/{ccs,tomoyo}/version からサポートされているポリシーのバージョン番号を取得する。
      (2) /etc/{ccs,tomoyo}/ にあるポリシーファイルの内容をポリシー構文チェッカ
     checkpolicy に流し込み、問題が無いことを確認する。
   (3) ポリシーファイルを /proc/{ccs,tomoyo}/ インタフェースに流し込む。
     サポートされていない構文やエラーを含む行はカーネルにより読み捨てられるが、
     先に checkpolicy で確認してから流し込むので読み捨てられることは無い。

  ポリシーファイルの先頭行にバージョン番号を付与する方法は採用しない。その理由は、
  (1) ポリシーファイルの先頭行にあるバージョン番号が正しくても
    ポリシーの内容にエラーが含まれていないことを保証できない。
  (2) ポリシーファイルの先頭行にあるバージョン番号が正しくても
    ポリシーの内容にサポートされていない構文が含まれていないことを保証できない。
  (3) sort コマンドや sortpolicy コマンドで行単位(ドメイン用ポリシーはドメイン単位)の
    並べ替えが可能という利点が失われる。

課題としては

(1) checkpolicy はポリシーローダから呼ばれるので / パーティションに置かなければいけない。

(2) init= を用いてポリシーローダを実行しない( call_usermodehelper() に実行させる)場合、
  標準入出力が無いのでポリシーに問題があってもエラーメッセージを表示できない。
  そのため、問題があった場合、エラーメッセージを表示できないままポリシーローダの中で永遠にスリープするか
  ポリシーをロードできないままポリシーローダが終了することでカーネルパニックするかしか選択肢がない。




tomoyo-dev メーリングリストの案内
Back to archive index