tomoyotitle.png

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

内容

ホットキー

ポリシーエディタは以下のように実行することができます:

# tomoyo-editpolicy

最初に表示される画面を選択するために a d p m s の何れかのオプションをコマンドラインに指定することができます。オプションが指定されなかった場合、デフォルトの画面として Domain Transition Editor 画面が表示されます。

ncurses インタフェースを利用していますが、以下のホットキーを利用することができます:

キー

スクロール動作

↑キー

1行上へスクロールします。

↓キー

1行下へスクロールします。

PageUp キー

1画面上へスクロールします。

PageDown キー

1画面下へスクロールします。

→ キー

1桁右へスクロールします。

← キー

1桁左へスクロールします。

Home キー

行の先頭へ移動します。

End キー

行の末尾へ移動します。

キー

検索動作

f または F キー

最初に一致するエントリを検索します。

n または N キー

次に一致するエントリを検索します。

p または P キー

前に一致するエントリを検索します。

キー

編集動作

a または A キー

エントリを追加します。

Enter キー

Domain Transition Editor 画面においてカーソルのある行のドメインのアクセス許可を編集します。

Space キー

カーソルのある行の選択状態を反転させます。

c または C キー

カーソルのある行の選択状態をそれ以降の全ての行にコピーします。

d または D キー

選択されたエントリを削除します。

s または S キー

Domain Transition Editor 画面では、選択されたドメインのプロファイル番号を設定します。
Profile Editor 画面では、選択されたプロファイルの値を設定します。
Memory Usage 画面では、選択されたエントリのクォータを設定します。

Insert キー

カーソルのある行のエントリをヒストリバッファにコピーします。

キー

その他の動作

q または Q キー

終了します。

r または R キー

最新の情報に更新します。

w または W キー

選択可能な画面の一覧を表示します。

共通の操作

利用可能な画面

w キーを押すと画面の一覧が表示されます。その画面からキーを押すと、対応する画面へと切り替わります:

window-list.png

Domain Transition Editor 画面

domain-list.png

1行目には現在表示されている画面の名前と定義されているドメインの数が表示されます。
2行目はメッセージ表示領域です。
3行目はカーソルのある行のドメイン名が表示されます。
4行目以降には定義されているドメインの一覧が表示されます。

Exception Policy Editor 画面

exception-policy.png

Domain Policy Editor 画面

補足:この画面へは Domain Transition Editor 画面で Enter キーを押すことでも表示することができます。

domain-policy.png

Profile Editor 画面

profile-list.png

Manager Policy Editor 画面

manager-list.png

Memory Usage 画面

stat-list.png

エントリを検索する

検索を開始するには、 f キーを押して、検索したい文字列を入力し、最後に Enter キーを押します:

find-first.png

前回入力した文字列で順方向(下方向)に検索を続行するには、 n キーを押します。
前回入力した文字列で逆方向(上方向)に検索を続行するには、 p キーを押します。

エントリを追加する

エントリを追加するには、 a キーを押して、追加したい内容を入力し、最後に Enter キーを押します。入力した内容はヒストリに残っており Insert キーでヒストリの内容を確認できます。ヒストリの内容を呼び出すには ↑ および ↓ キーを使います。ヒストリ機能は Memory Usage 画面を除く全ての画面で利用できます。

Domain Transition Editor 画面における操作例:

add-domain-list.png

エントリを選択する

選択したいエントリの行へとカーソルを移動させてから Space キーを押してください。選択することにより & マークが行頭に表示されます。複数の行を選択することができます。再度 Space キーを押すことにより、選択を解除することができます。

c キーを押すと、カーソルのある行の選択状態をそれ以降の全ての行へとコピーすることができます。

copy.png

これは、全てのエントリや特定の範囲のエントリを選択する際に便利です。特定の範囲のエントリを選択したい場合、その範囲の最初のエントリの行へとカーソルを移動させて(選択するために) Space キーを押し、続けて c キーを押します。そして、範囲の最後のエントリの次の行へとカーソルを移動させて(選択を解除するために) Space キーを押し、続けて c キーを押します。

エントリを削除する

エントリを削除するには、削除したいエントリの行へとカーソルを移動させて d キーを押します。削除したいエントリを全て選択してから行うこともできます。

delete.png

Domain Transition Editor 画面固有の操作

プロファイル番号を変更する

s キーを押して、プロファイル番号を入力し、 Enter キーを押してください:

profile.png

! マークが表示されているドメインについて

initialize_domain または keep_domain ディレクティブが指定されていることにより、このドメインへ到達することができないことを示しています。
! マークが付いているドメインは、削除して大丈夫です。

unreachable.png

* マークが表示されているドメインについて

initialize_domain ディレクティブにより複数のドメインからこのドメインへと遷移する可能性があることを示しています。
このドメインに * マークが表示されていない場合は、このドメインの親ドメインからのみこのドメインへと遷移します。

initialize_domain-dest.png

# マークが表示されているドメインについて

keep_domain ディレクティブにより、複数のプログラムがこのドメインで動作する可能性があることを示しています。

keep_domain.png

( -> n ) という表示があるドメインについて

このドメインは実際のドメインではありません。 initialize_domain ディレクティブの指定により、 n 番目のドメインへと遷移することを示しています。

initialize_domain-src.png

( -> Not Found ) という表示があるドメインについて

このドメインは実際のドメインではありません。 initialize_domain ディレクティブに指定されているものの、遷移先のドメインが定義されていないことを示しています。

initialize_domain-nodest.png

ドメイン名が ( ) で囲まれたドメインについて

このドメインが定義されていないことを示しています。この行はツリーのインデントを崩さないようにするために表示されます。

deleted-domain.png

initialize_domain ディレクティブおよび no_initialize_domain ディレクティブ

initialize_domain ディレクティブは Exception Policy Editor および Domain Transition Editor 画面に関連します。まず、 Exception Policy Editor 画面に切り替えて、 a キーを押してエントリを追加します:

adding-initialize_domain.png

Domain Transition Editor 画面に切り替えてください。ディレクティブで指定されたプログラムのためのドメインが定義されていないので、ディレクティブで指定されたプログラムを実行しているドメインに ( -> Not Found ) という表示がされている筈です。 また、ディレクティブにより到達不可能になったドメインには ! マークが表示されます:

after-initialize_domain.png

これを修正するために、 a キーを押してからドメイン名を入力することにより、ドメインを作成します:

adding-initialize_domain-target.png

すると、 ( -> Not Found ) という部分が ( -> n )" に変化しました:

after-initialize_domain-target.png

これが、上のエントリに対応するドメインです:

added-initialize_domain-target.png

/usr/sbin/sendmail が新しいドメインで動作するようになりました。しかし、上記の例ではデーモンとして動作させるための初期化スクリプトから新しいドメインへと遷移することを示しています。デーモンとして実行しない場合には、新しいドメインへと遷移させたくないと思うかもしれません。その場合、 no_initialize_domain ディレクティブを使用することができます。 Exception Policy Editor 画面に切り替えて、 no_initialize_domain /usr/sbin/sendmail from /bin/mail のようなエントリを追加してください。すると、 /bin/mail ドメインから /usr/sbin/sendmail が実行された場合には新しいドメインへと遷移しないようになります:

after-no_initialize_domain.png

keep_domain ディレクティブおよび no_keep_domain ディレクティブ

keep_domain ディレクティブは Exception Policy Editor および Domain Transition Editor 画面に関連します。まず、 Exception Policy Editor 画面に切り替えて、 a キーを押して keep_domain <kernel> /sbin/mingetty /bin/login /bin/bash のようなエントリを追加します。 Domain Transition Editor 画面に戻ると、ディレクティブで指定したドメインに # マークが、ディレクティブで指定したドメインの子孫ドメインには ! マークが表示されます:

after-keep_domain-1.png

指定されたドメインではプログラムを実行してもドメイン遷移が行われないようになりました。特定のアプリケーションが実行された場合にドメイン遷移を再開させるには、 no_keep_domain ディレクティブを指定することができます。 Exception Policy Editor 画面に切り替えて、 no_keep_domain /usr/bin/man from /bin/bash のようなエントリを追加してください。 Domain Transition Editor 画面に戻ると、 <kernel> /sbin/mingetty /bin/login /bin/bash /usr/bin/man ドメイン以下から ! マークが消えたことを確認できます:

after-no_keep_domain.png

Exception Policy Editor 画面で keep_domain /usr/bin/man のように指定することにより、 /usr/bin/man から先のドメイン遷移を行わないようにすることもできます。 Domain Transition Editor 画面で確認してください:

after-no_keep_domain.png

冗長なエントリを削除する

冗長なエントリはパターン化することにより除去することができます( Chapter 6: ポリシーはどのように作成しますか?を参照してください)。 Domain Policy Editor 画面で allow_read /home/kumaneko/SVN/\{\*\}\/\* のようなエントリを追加してください:

optimize-2.png

手作業で追加されたこのエントリは既に定義されている多くのエントリに一致します。カーソルをパターン化されたこのエントリに合わせて、 o キーを押してください。すると、カーソルのある行に包含されるエントリが全て選択されます:

optimize-3.png

d キーを押すことにより、選択されたエントリを削除することができます。追加したパターン化されたエントリ全てに対してこの操作を繰り返すことができます。