Назад | Перейти на главную страницу

SELinux: разрешить Apache разговаривать с MySQL на CentOS

Итак, я привязал MySQL к / opt / chroot / mysql, и все работает нормально. Apache настроен нормально и тоже нормально работает.

Я создал небольшой скрипт PHP, который подключается к MySQL Daemon, и настроил PHP так, чтобы используемый по умолчанию сокет был chrooted. Когда SELinux отключен, скрипт может нормально подключаться. Однако, когда SELinux включен, скрипту не удается подключиться (с номером ошибки 13), и журнал аудита сообщает мне, что SELinux отклонил запрос.

В каждом найденном мной руководстве, посвященном этой проблеме, мне предлагается отключить SELinux. Я не хочу этого делать, поэтому, пожалуйста, не предлагайте этого! Мне нужно решение, которое работает, пока включен SELinux ... Я предполагаю, что оно должно существовать ...

Я предполагаю, что мне, вероятно, придется изменить контексты SELinux для файлов mysql, но я не уверен, на что их изменить, чтобы они работали.

ОБНОВЛЕНИЕ 2

type = AVC msg = audit (1318863312.959: 435): avc: denied {connectto} для pid = 12472 comm = "httpd" path = "/ opt / chroot / mysql / var / lib / mysql / mysql.sock" scontext = unlimited_u : system_r: httpd_t: s0 tcontext = неограниченный_u: неограниченный_r: неограниченный_t: s0-s0: c0.c1023 tclass = unix_stream_socket

Вы можете создать настраиваемый модуль политики SELinux, выполнив следующие действия:

# grep httpd_t audit.log | audit2allow -m httpd > httpd.te
# checkmodule -M -m -o httpd.mod httpd.te
# semodule_package -m httpd.mod -o httpd.pp 
# semodule -i httpd.pp

Ссылаться на этот тема для более подробной информации.


ОБНОВИТЬ

  1. Бегать semanage команда, чтобы добавить отображение контекста для /opt/chroot/mysql/var/lib/mysql/:

    # semanage fcontext -a -t mysqld_db_t "/opt/chroot/mysql/var/lib/mysql(/.*)?"
    
  2. И использовать restorecon команда для применения этого отображения контекста:

    # restorecon -Rv /opt/chroot/mysql/var/lib/mysql
    

Если вы подключаетесь через TCP / IP, попробуйте следующее:

# setsebool -P httpd_can_network_connect 1