host=localhost.localdomain type=AVC msg=audit(1294116997.483:57): avc: denied { read } for pid=4029 comm="smartd" name="libm.so.6" dev=sda2 ino=1508034 scontext=system_u:system_r:fsdaemon_t:s0 tcontext=system_u:object_r:file_t:s0 tclass=lnk_file
メッセージ切り分け
意味としては、「/usr/sbin/smartdコマンド(セキュリティコンテキストsystem_u:system_r:fsdaemon_t:s0)がlibm.so.6ファイル(セキュリティコンテキストsystem_u:object_r:file_t:s0)を読み込もう(read)としてアクセス拒否(denied)となっている」となる。
意味通りなら環境設定に間違いがあることになる。
明らかにわかることとしては、libm.so.6ファイルはライブラリなので、通常、file_tでなくlib_tのはず。
調査切り分け
/usr/sbin/smartdがどこのlibm.so.6を読みにいくか確認
# ldd /usr/sbin/smartd
libselinux.so.1 => /lib64/libselinux.so.1 (0x00002ba449ca8000)
libstdc++.so.6 => /usr/lib64/libstdc++.so.6 (0x00002ba449ec0000)
libm.so.6 => /lib64/libm.so.6 (0x00002ba44a1c0000)
libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00002ba44a444000)
libc.so.6 => /lib64/libc.so.6 (0x00002ba44a652000)
libdl.so.2 => /lib64/libdl.so.2 (0x00002ba44a9a9000)
libsepol.so.1 => /lib64/libsepol.so.1 (0x00002ba44abae000)
/lib64/ld-linux-x86-64.so.2 (0x00002ba449a8b000)
/lib64/libm.so.6 であることを確認
/lib64/libm.so.6のセキュリティコンテキストを再確認
# ls -Zl /lib64/libm* -rwxr-xr-x 1 system_u:object_r:file_t root root 615136 10月 26 05:40 /lib64/libm-2.5.so lrwxrwxrwx 1 system_u:object_r:file_t root root 11 10月 27 17:46 /lib64/libm.so.6 -> libm-2.5.so
ちなみに他のライブラリファイルはどうなっているかというと、、
# ls -Zl /lib64/ ... lrwxrwxrwx 1 system_u:object_r:lib_t root root 16 10月 5 16:05 libwrap.so.0 -> libwrap.so.0.7.6 -rwxr-xr-x 1 system_u:object_r:lib_t root root 37368 9月 22 2009 libwrap.so.0.7.6 drwxr-xr-x 2 system_u:object_r:lib_t root root 4096 10月 27 17:46 rtkaio drwxr-xr-x 4 system_u:object_r:lib_t root root 4096 12月 18 04:02 security
他は、lib_tだ。
ファイルコンテキストの現状ルール(ユーザ追加ルール)を確認
# cat /etc/selinux/targeted/contexts/files/file_contexts.local # This file is auto-generated by libsemanage # Please use the semanage command to make changes /lib64/libm.so.6 system_u:object_r:file_t:s0 /lib64/libm-2.5.so system_u:object_r:file_t:s0
何か余計なものが登録されている。今回直接原因はこれであろう。
問題対処
セキュリティコンテキストルールを修正
# cat /etc/selinux/targeted/contexts/files/file_contexts.local # This file is auto-generated by libsemanage # Please use the semanage command to make changes /lib64/libm.so.6 system_u:object_r:file_t:s0 /lib64/libm-2.5.so system_u:object_r:file_t:s0 # semanage fcontext -d -t system_u:object_r:file_t:s0 '/lib64/libm.so.6' # semanage fcontext -d -t system_u:object_r:file_t:s0 '/lib64/libm-2.5.so' # cat /etc/selinux/targeted/contexts/files/file_contexts.local # This file is auto-generated by libsemanage # Please use the semanage command to make changes #
セキュリティコンテキストを修正
# ls -lZ /lib64/libm* -rwxr-xr-x root root system_u:object_r:file_t /lib64/libm-2.5.so lrwxrwxrwx root root system_u:object_r:file_t /lib64/libm.so.6 -> libm-2.5.so # fixfiles relabel Files in the /tmp directory may be labeled incorrectly, this command can remove all files in /tmp. If you choose to remove files from /tmp, a reboot will be required after completion. Do you wish to clean out the /tmp directory [N]? /sbin/setfiles: labeling files under / matchpathcon_filespec_eval: hash table stats: 151863 elements, 36525/65536 buckets used, longest chain length 23 /sbin/setfiles: labeling files under /boot matchpathcon_filespec_eval: hash table stats: 41 elements, 41/65536 buckets used, longest chain length 1 /sbin/setfiles: labeling files under /var/lib/libvirt/images matchpathcon_filespec_eval: hash table stats: 7 elements, 7/65536 buckets used, longest chain length 1 /sbin/setfiles: labeling files under /archives matchpathcon_filespec_eval: hash table stats: 3919 elements, 1971/65536 buckets used, longest chain length 9 /sbin/setfiles: Done. # ls -lZ /lib64/libm* -rwxr-xr-x root root system_u:object_r:lib_t /lib64/libm-2.5.so lrwxrwxrwx root root system_u:object_r:lib_t /lib64/libm.so.6 -> libm-2.5.so #
修正完了
根本原因
とりあえず、正常に戻ったはずだが、そもそも何故余計な定義が付いたのかが不明。いろいろ実験した際に定義を追加してしまったのか?暫く様子見とする。
(追伸) そういえば実験でこのファイルのセキュリティコンテキストをいじったことがある、、自分が原因だ。
以上
0 件のコメント:
コメントを投稿