Info: Version 1.3.1 is available.

# ポリシーエディタの使い方

Last modified: $Date: 2011-07-01 14:04:47 +0900 (Fri, 01 Jul 2011) $

TOMOYO Linux には、 CUI で動作するポリシーエディタが付属しています。
TOMOYO Linux のポリシーはテキストファイルなので、 vi や emacs 等の任意のエディタを使用することも可能ですが、
/proc/ccs インタフェースに書き込もうとすると「バックアップファイルを作成できない」等のエラーメッセージが 多数表示されて使いにくいので、
ポリシーエディタを使用することを推奨します。

プロンプトから editpolicy と入力すると、ポリシーエディタを実行することができます。

- rootでログイン
- idコマンドを実行
- /etc/passwdの「最初の3行」を表示
- /bin/shを起動
- dateコマンドを実行
- /etc/passwdの「最後の3行」を表示
- /bin/shを終了してからTOMOYO Linuxのポリシーエディタを起動

以下の画面は、CentOS 4.4 を学習モードで起動した後、上記の操作を行った場合のポリシーです。
この画面には、ドメイン遷移の一覧が表示されており、Linuxが起動時にどのような動作を行っているかを解析することができます。

＜ドメインポリシーの編集画面（１）＞

上の図からanacronを起動するスクリプトのに対して学習されたポリシーを確認してみましょう。
ポリシーエディタは「ドメイン遷移の表示」モードと「個別のドメインにおけるアクセス許可の表示」モードの2つのモードを持ちます。
起動直後は「ドメイン遷移の表示」モードとなっています。
アクセス許可の内容を知りたいドメインを選択して Enter を押すと、「個別のドメインにおけるアクセス許可の表示」モードになります。
矢印キーでカーソルを動かしてanacronの行を選択してから Enterキーを押すと、
次のような画面（anacronを起動するスクリプトに対するアクセス許可内容）が表示されます。

＜ドメインポリシーの編集画面（２）＞

行番号の右隣の数字は、Linuxのパーミッション(rwx)を8進数にしたものです。
つまり4はr--(読み込み)、6はrw-(読み書き)、1は--x(実行)を意味します。
anacronを起動するスクリプトの実行に必要なアクセス許可がポリシーとして学習されているのがおわかりいただけると思います。

一番下のuse_profileという行は、そのドメインに割り当てられているプロファイル番号です。 setprofile コマンドで変更することができる他、この画面からも a キーを押してから「use_profile プロファイル番号」と入力することで変更することが可能です。

Enterキーを押して、再びドメイン遷移の表示モードに戻り、/sbin/mingettyのドメインを探してみてください。

画面を見ると、ログインするとmingettyから/bin/loginというプログラム経由で/bin/bashというシェルを起動していること、
（後述する例外ポリシーで alias /bin/bash /bin/sh という指定がされていることから）/bin/bashへのシンボリックリンクである/bin/shが実行された場合は/bin/shとして扱われていることがわかります。
また、先ほど実行したheadコマンドやdateコマンドが記録されていることもわかります。
では、カーソルを動かしてheadコマンドのドメインを選択して Enter キーを押してみましょう。

/sbin/mingettyから起動された/bin/loginから起動された/bin/bashから起動された/usr/bin/headが
/etc/passwdに対して読み込みアクセス許可を与えられていることがわかります。
同じコマンドであっても起動されたアクセス履歴により独立なドメインとして扱われますし、
同じドメインであっても対象毎に細かくアクセスが定義できることがおわかりいただけると思います。
しかもそれらが自動的に行われるので、TOMOYO Linuxは標準的なスキルを持つシステム管理者であれば誰でも使うことができます。

また、 Tab キーを押すことで「ドメインポリシー」→「システムポリシー」→「例外ポリシー」→「ドメインポリシー」の順番で画面が切り替わります。

＜システムポリシーの編集画面＞

＜例外ポリシーの編集画面＞

上記で説明したポリシーエディタの editpolicy は TOMOYO Linux カーネルで動作中に、カーネル内のポリシーを直接編集するためのエディタです。 /etc/ccs/ ディレクトリに保存されているポリシーを編集する場合は editpolicy_offline を利用します。