我正在运行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阻止您的应用程序执行任何操作。