海外です。 Kazuki Omo wrote:
皆様、始めまして
面と申します。
SELinuxやAppArmor, TOMOYOとかと同じセキュアOSモジュールの一つである LIDSの開発者になっています。
LKMLデビューを楽しみにしています。
LIDSをカーネル本体に載せようと思ってSubmitする予定ですが、 他の実装(AppArmorとかTOMOYOとか)をよく見れていないんですけれど、 SELinuxをDisabled(/etc/selinux/config)の状態で入れてるんでしょうか?
何が言いたいかというと、素のカーネルですとSELinuxがデフォルトで 組み込まれるようにチェックが入っています。
で、そのチェックボックスを外して、AppArmor/TOMOYOを選択するという 方式なのか(LIDSは現在はこの形)、そのチェックボックスは入れたままで AppArmor/TOMOYOもmenuconfig等で選択してカーネルを構築し、 /etc/selinux/configの記述をDisabledにしているのかを知りたいです。
ちなみに、昨日ちょっと作ってみたのですが、SELinuxのチェックボックスを つけたままですと、LIDSでregister_security()を予備に行った時に 「既にregisterされている」エラーが返って来ます。どうやら、SELinuxが 先にregisterしているようです。ですので、他の実装ではどうやって いるのかが気になります。
SELinux を disable にするには3つの方法があります。 1. /etc/selinux/config で SELINUX=disabled と記述する 2. カーネル起動オプションに selinux=0 と記述する 3. カーネルコンフィグで SELinux のチェックボックスを外す しかし厳密には、(1)と(2)及び(3)には違いがあり、SELinux以外のセキュリティモジ ュールを利用するには (2) か (3) の方法を使う必要があります。 (2)と(3)の場合は、LSMへのモジュール登録関数である register_security() 関数を コールしません。したがって、誰もLSMを専有していないために、後でセキュリティ モジュールを登録する事が可能です。 しかし、(1)の場合は事情が異なります。 まず、カーネル初期化プロセスでは SELinux が自らを LSM モジュールに登録し、 Permissive mode相当の状態になります。次に、最初のプロセスである /sbin/init が /etc/selinux/config を読み出し、SELINUX=disable の記述があれば SELinux を無効 化します。しかし、SELinuxはLSMモジュールから自らをアンロードしません。 したがって、SELinuxがLSMを専有したままになるため、他のセキュリティモジュールを 登録する事はできません。 この理由は、カーネル初期化プロセスの段階では /etc/selinux/config の内容を読出す 事ができないためです。(ファイルシステムはこの時点ではマウントされていません) SuSEの場合は、カーネル自体に SELinux は入っているものの、AppArmorをロードする ためにカーネル起動オプションに selinux=0 を付けていたと記憶しています。 参考になったでしょうか? 以上です -- OSS Platform Development Division, NEC KaiGai Kohei <kaigai@ak.jp.nec.com>