新的iSCSI磁盘上的Selinux / MySQL权限问题:不允许default_t上下文

我已经安装并运行了MySQL的服务器,并连接了一个iSCSI磁盘(带有多path)并运行正常。 iSCSI磁盘使用/ emc作为安装点。 我的问题是,当我将MySQL的datadir移动到iSCSI磁盘上的一个新目录时,也就是/ emc / lib / mysql

迁移是好的,因为如果我停止selinux(setenforce 0)一切正常, 但是,当我重新启动selinux(setenforce 1)时,MySQL无法访问其数据库。

我已经安装并运行了setroubleshootd,它给了我有关错误的信息:/ emc有一个默认上下文default_t,所以ander / emc文件,包括我的新/ emc / lib / mysql,都有这个上下文,允许。

使用-p和-Z选项将文件从/ var / lib / mysql复制到/ emc / lib / mysql不起作用。

从sealert读取报告后,我将系统设置为重新生成标签:

touch /.autorelabel reboot 

但是这不起作用。 我认为它可能失败了,因为新磁盘是iSCSI,并且在networking运行时会自动挂载,而selinux可能在networking启动和运行之前试图自动标记新磁盘,所以selinux“看不到”新磁盘。 fstab行是:

 /dev/mapper/DATAp1 /emc ext3 _netdev 0 0 

我试图挂载iSCSI磁盘添加上下文到fstab:

 /dev/mapper/DATAp1 /emc ext3 _netdev,context=system_u:object_r:var_t:s0 0 0 

但是这不起作用。

我已经尝试了各种命令来恢复和重新生成上下文,但没有成功:

 restorecon -R -v /emc fixfiles restore 

我怎样才能设置新的磁盘标签/默认上下文? 或者,我可以在复制MySQL datadir时保留上下文吗?

非常感谢你们!

你是否在运行restorecon之前添加策略? 如果没有,restorecon可能会恢复您的上下文更改。 尝试:

 semanage fcontext -a -t mysql_db_t "/emc/lib/mysql(/.*)?" restorecon -Rv /emc/lib/mysql 

运行setsebool -P mysqld_disable_trans 1的解决scheme可以有效地禁用针对mysql的selinux。

我想我已经find了意味着SElinux布尔的解决scheme。 只是设置(激活)两个布尔人做的诀窍:

 # setsebool –P mysqld_disable_trans 1 # setsebool –P httpd_can_network_connect_db 1 

之后,只需重新启动这两个服务,所有工作。

-P选项将其永久设置。 你可以看到一个布尔值列表及其状态:

 # getsebool -a 

也许这可以帮助其他类似的问题。

编辑:你认为这是一个好的和安全的解决scheme? 有没有其他方法可以做到这一点? 我会保持这个问题没有答案,所以可以标记,以防有人知道另一个更好的解决scheme