面です。 酒井@富士通さん、海外さん ありがとうございます。 結論ですが、至極簡単なイージーミスでした。 bootパラメータで"selinux=0"を渡すやり方でやっていたのですが、
------------ SELinux: Disabled at boot. Capability LSM initialized ------------
ここまで見て、dmesgがなんかおかしいと気づきまして、.configを 見ましたら、 CONFIG_SECURITY_SELINUX_BOOTPARAM のオプションを選び忘れていました。orz CONFIG_SECURITY_SELINUX_BOOTPARAM=y にして、"selinux=0"にすると、LIDSのロードが出来ました。 有難う御座いました。 OMO On Wed, Nov 14, 2007 at 02:03:13PM +0900, KaiGai Kohei wrote:
面さん
海外です
補足させてください。
/etc/selinux/config に SELINUX=disabled と書いた場合の dmesg ------------ SELinux: Initializing. SELinux: Starting in permissive mode selinux_register_security: Registering secondary module capability Capability LSM initialized as secondary ------------
カーネル起動オプションで selinux=0 と書いた場合の dmesg ------------ SELinux: Disabled at boot. Capability LSM initialized ------------
このように、起動時のログからも相違点が分かります。 カーネル起動オプションの selinux=0 だけでは、POSIX Capability が LSM を 専有してしまいますので、capability.disable=1 も併せて指定する必要があり ますね。
カーネル起動オプションで selinux=0 capability.disable=1 と書いた場合 ------------ SELinux: Disabled at boot. Capabilities disabled at initialization ------------
以上です
KaiGai Kohei wrote:
海外です。
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>
_______________________________________________ JP-kernelnewbies mailing list http://jp.kernelnewbies.org/ http://lists.kernelnewbies.org/mailman/listinfo/jp-kernelnewbies
-- Kazuki Omo: omok@honto.info LIDS Japanese Information: Japanese: http://www.selinux.gr.jp/LIDS-JP/index.html English: http://www.selinux.gr.jp/LIDS-JP/LIDS_en/index.html Diary: http://omok.livejournal.com