Я запускаю CentOS 5.5 и пытаюсь разместить MySQL на нестандартном порту ... на который жалуется SELinux. MySQL отлично запускается с выключенным SELinux и отказывается запускаться с ним. SELinux в настоящее время использует тип "целевой"
Не желая полностью отключать SELinux, я хотел бы исключить MySQL из списка целевых демонов. Кто-нибудь может сказать мне, как отключить SELinux для этой службы?
Вам вообще не нужно отключать SELinux. Что вам нужно сделать, так это пометить порт, который вы хотите использовать.
Чтобы проверить наличие помеченных портов для MySQL в политике:
# semanage port -l | grep mysql
mysqld_port_t tcp 1186, 3306, 63132-63163
mysqlmanagerd_port_t tcp 2273
Чтобы пометить порт $ custom:
# semanage port -a -t mysqld_port_t -p tcp $custom
Основным ориентиром для этого является semanage(8)
справочная страница.
Если вы включите переход домена для MySQL с mysqld_disable_trans
boolean, MySQL больше не защищен SELinux.
Подробнее: установка этого логического значения заставит mysqld работать как initrc_t
, что более или менее похоже на unconfined_t
. Это означает, что ограничения SELinux на то, какой порт MySQL может и не может использовать, снимаются.
Переверните логическое значение, используя:
setsebool mysqld_disable_trans 1
или сделать его постоянным с помощью
setsebool -P mysqld_disable_trans 1
Еще более подробно: логическое значение отключает переход от initrc_t
домен в mysqld_t
домен в момент запуска mysqld демоном инициализации во время загрузки или при переходе с unconfined_t
к mysqld_t
если он запускается вручную после загрузки. Таким образом, mysqld вообще не работает вне SELinux, а в домене, который имеет гораздо меньше ограничений, чем mysqld_t
есть.
Многие службы, которые существуют в собственной политике RHEL5 / CentOS 5, имеют логические значения * _disable_trans, чтобы отключить переход домена для этой службы. В новых дистрибутивах и новых политиках, таких как Fedora и RHEL6, вы просто выгружаете полный модуль для mysqld, чтобы SELinux не блокировал действия вашего приложения.