SELinuxで組み込み機器のセキュリティを高める(後編) ―― 組み込み機器にSELinuxを適用する
● libsepolのクロス・コンパイル
これは,BusyBoxのコンパイル専用です.ターゲット・ボードに転送する必要はありません.次のようにクロス・コンパイルします.
$ make CC=sh4-linux-gnu-gcc
そして,開発機のクロス・コンパイル環境にインストールします.こちらも,環境によってインストール先は異なります.
# cp src/libsepol.so /usr/sh4-linux-gnu/lib/ # ln -s /usr/sh4-linux-gnu/lib/libsepol.so /usr/sh4-linux-gnu/lib/libsepol.so.1
● BusyBoxのクロス・コンパイル
BusyBoxのクロス・コンパイル方法は通常のBusyBoxの場合と同じ手順です.今回は,SELinuxに関連したコマンドのみが入ったBusyBoxを作ります.まず,
$ make menuconfig
で,SELinuxに関連したコンパイル・オプションを設定します.表4のようなオプションを最低限有効にする必要があります.
クロス・コンパイルを行います.
$ make CROSS_COMPILE=sh4-linux-gnu-
生成されたbusyboxというファイルがBusyBoxの実行ファイルです.これを,ターゲット・ボードの/usr/local/bin/busyboxとしてコピーします.こうすれば,ターゲット・ボードに既に入っているBusyBox(/bin/busybox)と共存できます.
そして,SELinuxに関するコマンドを使う場合にだけ,新しく入れたBusyBoxを呼ぶようにします.SELinuxに関連するコマンドを,新しく入れたBusyBoxへのシンボリック・リンクとします.
# ln -s /usr/local/bin/busybox /sbin/load_policy # ln -s /usr/local/bin/busybox /sbin/restorecon # ln -s /usr/local/bin/busybox /sbin/setenforce # ln -s /usr/local/bin/busybox /sbin/getenforce # mv /bin/ls /bin/ls.orig; ln -s /usr/local/bin/busybox /bin/ls # mv /bin/ps /bin/ps.orig;ln -s /usr/local/bin/busybox /bin/ps # mv /usr/bin/id /usr/bin/id.orig; ln -s /usr/local/bin/busybox /usr/bin/id
こうすることで,例えば/sbin/load_policyとタイプすると,BusyBox(/usr/local/bin/busybox)からload_policyの処理が呼ばれます.