それでは、TOMOYO Linuxのアクセス制御を体験してみましょう。まずはrootユーザでログインして、以下のコマンドを実行してください。
setprofile -r 1 '<kernel> /sbin/mingetty /bin/login /bin/bash'
行頭が「1 <kernel>」ではじまるいくつかの行が出力されればOKです。このコマンドは、「ログインシェルであるbashにプロファイル1(学習)を割り当てる」という意味を持っています。このコマンドを実行することで、bashはポリシーが学習される状態になっています。ここでいくつかコマンドを実行してみましょう。
head /etc/passwd
bash
tail /etc/mtab
exit
一見通常のLinuxとまったく同じように動作しますが、裏ではTOMOYO Linuxが自動的にポリシーを学習しています。ここで学習を終了して、以下のコマンドでプロファイルを切り替えましょう。
setprofile -r 3 '<kernel> /sbin/mingetty /bin/login /bin/bash'
このコマンドが実行されると、bashにプロファイル3(強制)が割り当てられ、先ほど学習させた操作以外は拒否されるようになります。試しにいくつかコマンドを実行してみてください。
head /etc/passwd → OK
head /etc/shadow → NG
ls → NG
shutdown -h now → NG
先ほど学習させたhead /etc/passwd以外は拒否されることがわかります。また、学習させた操作の1つである下記のコマンドも、実はこの状態では拒否されます。
tail /etc/mtab → NG
これは、学習時のシェルの深さに理由があります。
学習の際には、tailコマンドの実行の前にもう1段階bashを実行しました。ドメインという言葉の説明の際に「プロセスの実行履歴」という言葉を用いましたが、TOMOYO Linuxはどのようなプロセスから起動されたのかによって権限を分割しています。
そのため、tailコマンドの実行は、ログインシェルのbashではなく、さらに起動されたbashに学習されていたのです。そのため、以下のように1段階bashを起動してからのtailコマンドは許可されます。
bash → OK
tail /etc/mtab → OK
このままでは何もできませんから、ログインシェルに戻って無効プロファイルに戻しておきましょう。
exit
setprofile -r 0 '<kernel> /sbin/mingetty /bin/login /bin/bash'
|