如何从SELinux目标列表中免除MySQL?

我正在运行CentOS 5.5,尝试将MySQL放在一个非标准的端口上…… SELinux抱怨说。 MySQL在SELinuxclosures的情况下启动完全正常,并拒绝启动它。 SELinux目前正在运行一种“有针对性的”

不想完全禁用SELinux,我想豁免MySQL从目标守护进程列表。 谁能告诉我如何禁用SELinux这一个服务?

你根本不需要禁用SELinux。 你需要做的是标签你想要使用的端口。

在策略中检查MySQL的标记端口:

# semanage port -l | grep mysql mysqld_port_t tcp 1186, 3306, 63132-63163 mysqlmanagerd_port_t tcp 2273 

标签$自定义端口:

 # semanage port -a -t mysqld_port_t -p tcp $custom 

主要的参考是semanage(8)页。

如果使用mysqld_disable_trans布尔转换MySQL的域转换,则MySQL不再受SELinux保护。

更详细地说:设置这个布尔值将使得mysqld作为initrc_t运行,与unconfined_t差不多。 这意味着SELinux对MySQL可以使用和不能使用的端口的限制将被取消。

使用以下命令翻转布尔值:

 setsebool mysqld_disable_trans 1 

或直接与之永久

 setsebool -P mysqld_disable_trans 1 

更详细的说明:在启动时,init守护进程启动mysqld的时候,boolean禁止从initrc_t域到mysqld_t域的转换;如果启动后手动启动,则从unconfined_t转换到mysqld_t 。 所以mysqld根本不在SELinux之外运行,但是在一个比mysqld_t有更less限制的mysqld_t

本地RHEL5 / CentOS 5策略中存在的许多服务都有* _disable_trans布尔值来closures该服务的域转换。 在较新的发行版本和较新的策略中,比如在Fedora和RHEL6上,只需卸载mysqld的完整模块,以防止SELinux阻止您的应用程序执行任何操作。