OpenBlockS266でSELinux その2
以前挑戦してあまりうまく行かなかったSELinux on OpenBlockS266 with Buildrootですが、原因は構築時にlibselinuxやlibsepolのライブラリの配置に失敗していたためでした。
で、BusyBoxのSELinuxアプレットを組み込んだのにもかかわらず、lddでBusyBoxが参照する共有ライブラリを見てみると、
# ldd /bin/busybox /bin/busybox: is setuid libc.so.0 => /lib/libc.so.0 (0x30016000) ld-uClibc.so.0 => /lib/ld-uClibc.so.0 (0x30000000) #
というように、libselinux.soなどを参照していなかったので、まともに動作していませんでした。
たとえばgetenforceを実行すると、
# getenforce getenforce: getenforce() failed #
と、libselinuxに含まれる関数の呼び出しに失敗しています。
Buildrootでlibselinux、libsepolの構築手順を見直して修正し、構築し直すと、
# ldd /bin/busybox /bin/busybox: is setuid libselinux.so.1 => /lib/libselinux.so.1 (0x30016000) libc.so.0 => /lib/libc.so.0 (0x3004a000) libdl.so.0 => /lib/libdl.so.0 (0x300a8000) libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x300bb000) ld-uClibc.so.0 => /lib/ld-uClibc.so.0 (0x30000000) # getenforce Disabled #
と、libselinux.soが含まれ、getenforceも無事に動作しています(まだポリシーを読み込んでいないので"Disabled")。
つづいて、ポリシーの読み込みとか。
前と同じように、id:himainuさんの記事を参考に続けていきました。
あ、ちなみに主なプログラムのバージョンは以下の通りです。
SEEditの構築は、記事のまんま。
そしてポリシーのロード。
# load_policy security: class memprotect not defined in policy SELinux: policy loaded with handle_unknown=deny audit(25.660:2): policy loaded auid=4294967295 #
いろいろとメッセージが出たけど大丈夫か?
で、次にタイプを付与。
# restorecon -R / /etc/selinux/seedit/contexts/files/file_contexts: line 30 is missing fields, skipping /etc/selinux/seedit/contexts/files/file_contexts: line 31 is missing fields, skipping /etc/selinux/seedit/contexts/files/file_contexts: line 32 is missing fields, skipping /etc/selinux/seedit/contexts/files/file_contexts: line 33 is missing fields, skipping /etc/selinux/seedit/contexts/files/file_contexts: line 34 is missing fields, skipping /etc/selinux/seedit/contexts/files/file_contexts: line 35 is missing fields, skipping ....
う〜ん、スキップされまくってる。
で、lsでタイプを確認してみると、
# ls -laZ / drwxr-xr-x 17 system_u:object_r:xattrfs_t 1024 Jan 1 09:00 . drwxr-xr-x 17 system_u:object_r:xattrfs_t 1024 Jan 1 09:00 .. drwxr-xr-x 2 system_u:object_r:xattrfs_t 1024 Mar 24 2009 bin drwxr-xr-x 5 system_u:object_r:xattrfs_t 2048 Mar 24 2009 dev drwxr-xr-x 7 system_u:object_r:xattrfs_t 1024 Jan 1 09:00 etc drwxr-xr-x 3 system_u:object_r:xattrfs_t 1024 Mar 24 2009 home drwxr-xr-x 3 system_u:object_r:xattrfs_t 1024 Mar 24 2009 lib drwxr-xr-x 2 system_u:object_r:xattrfs_t 1024 Mar 24 2009 mnt drwxr-xr-x 2 system_u:object_r:xattrfs_t 1024 Mar 24 2009 opt dr-xr-xr-x 28 system_u:object_r:proc_t 0 Jan 1 09:00 proc drwxr-xr-x 2 system_u:object_r:xattrfs_t 1024 Mar 24 2009 root drwxr-xr-x 2 system_u:object_r:xattrfs_t 1024 Mar 24 2009 sbin drwxr-xr-x 6 system_u:object_r:security_t 0 Jan 1 09:00 selinux drwxr-xr-x 10 system_u:object_r:sysfs_t 0 Jan 1 09:00 sys drwxrwxrwt 2 system_u:object_r:tmpfs_t 160 Jan 1 09:00 tmp drwxr-xr-x 6 system_u:object_r:xattrfs_t 1024 Mar 24 2009 usr drwxr-xr-x 4 system_u:object_r:xattrfs_t 1024 Mar 24 2009 var #
マウントしているproc、selinux、sys、tmp以外はすべてsystem_u:object_r:xattrfs_tで、目的のタイプに設定されていない…
今日は眠いのでここまで。