トップ «前の日記(2005-04-13) 最新 次の日記(2005-04-25)» 編集

3 日坊主日記


2005-04-22 [長年日記]

_ [Fedora][MySQL] selinux

Fedora Core3 SELinuxメモを読むと、 以前書いたやり方はだめだめだと分かります。

 [root@dev program]# pwd
 /etc/selinux/targeted/src/policy/file_contexts/program
 root@dev program]# cat mysqld.fc
 # mysql database server
 /usr/sbin/mysqld(-max)? --      system_u:object_r:mysqld_exec_t
 /usr/libexec/mysqld     --      system_u:object_r:mysqld_exec_t
 /var/run/mysqld(/.*)?           system_u:object_r:mysqld_var_run_t
 /var/log/mysql.*        --      system_u:object_r:mysqld_log_t
 /var/lib/mysql(/.*)?            system_u:object_r:mysqld_db_t
 /var/lib/mysql/mysql\.sock -s   system_u:object_r:mysqld_var_run_t
 /etc/my\.cnf            --      system_u:object_r:mysqld_etc_t
 /etc/mysql(/.*)?                system_u:object_r:mysqld_etc_t
 ifdef(`distro_debian', `
 /etc/mysql/debian-start --      system_u:object_r:bin_t
 ')

これと

 [root@dev policy]# ls -Z /var/lib/mysql
 -rw-rw----  mysql    root     root:object_r:var_lib_t          dev.moriq.com.err
 -rw-rw----  mysql    mysql    user_u:object_r:var_lib_t        dev.moriq.com.pid
 -rw-rw----  mysql    mysql    root:object_r:var_lib_t          ib_logfile0
 -rw-rw----  mysql    mysql    root:object_r:var_lib_t          ib_logfile1
 -rw-rw----  mysql    mysql    root:object_r:var_lib_t          ibdata1
 drwx--x--x  mysql    root     root:object_r:var_lib_t          mysql
 srwxrwxrwx  mysql    mysql    user_u:object_r:var_lib_t        mysql.sock
 drwx------  mysql    mysql    root:object_r:var_lib_t          refre
 drwx------  mysql    mysql    root:object_r:var_lib_t          refre_test
 drwxr-xr-x  mysql    root     root:object_r:var_lib_t          test

これを見比べると全然設定が合ってません。

 [root@dev policy]# 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]?
 [root@dev policy]# ls -Z /var/lib/mysql
 -rw-rw----  mysql    root     system_u:object_r:mysqld_db_t    dev.moriq.com.err
 -rw-rw----  mysql    mysql    system_u:object_r:mysqld_db_t    dev.moriq.com.pid
 -rw-rw----  mysql    mysql    system_u:object_r:mysqld_db_t    ib_logfile0
 -rw-rw----  mysql    mysql    system_u:object_r:mysqld_db_t    ib_logfile1
 -rw-rw----  mysql    mysql    system_u:object_r:mysqld_db_t    ibdata1
 drwx--x--x  mysql    root     system_u:object_r:mysqld_db_t    mysql
 srwxrwxrwx  mysql    mysql    system_u:object_r:mysqld_var_run_t mysql.sock
 drwx------  mysql    mysql    system_u:object_r:mysqld_db_t    refre
 drwx------  mysql    mysql    system_u:object_r:mysqld_db_t    refre_test
 drwxr-xr-x  mysql    root     system_u:object_r:mysqld_db_t    test

とすれば良いようです。

この後で

 # setenforce 0
 # cd /etc/selinux/targeted/src/policy/
 # make reload

... (いろいろ動かしてみる)

 # audit2allow -d -l -v

とすればヘンにゆるい policy を書かなくて済むはず。

ぐぐると update したときは *.te.rpmsave に残るって書いてるけど、実際にはそのままで rpmnew も作られない。

 [moriq@dev ~]$ sudo rpm -V selinux-policy-targeted-sources
 S.5....T. c /etc/selinux/targeted/src/policy/domains/program/apache.te
 S.5....T. c /etc/selinux/targeted/src/policy/domains/program/mysqld.te

なので /var/cache/yum/updates-released/packages/selinux-policy-targeted-* を rpm2cpio で開いて cpio -t, cpio -ivd しないと diff がとれない。

[]