Python MySQLdb с SELinux

Я использую модуль mySQLdb в моем приложении django, которое связано с Apache через WSGI. Однако я получаю разрешение проблем (показано ниже). Это относится к SElinux, и если я установлю его на пассив, все будет в порядке.

Неправильно настроенный: Ошибка при загрузке модуля MySQLdb: /opt/django/virtenv/django15/lib/python2.7/site-packages/_mysql.so: не удалось сопоставить сегмент из общего объекта: в доступе отказано

Что является лучшим способом обновить SELinux, чтобы включить это, не отключая все это. Ошибка показана ниже:

Неправильно сконфигурировано: Ошибка загрузки модуля MySQLdb: /opt/django/virtenv/django1/lib/python2.7/site-packages/_mysql.so: не удалось сопоставить сегмент из общего объекта: разрешение отклонено

4 ответа

Как предполагает @Gohn67, измените контекст безопасности SELinux для рассматриваемого файла, чтобы процесс HTTPD мог его выполнить:

sudo chcon -R -h -t httpd_sys_script_exec_t /opt/django/virtenv/django15/lib/python2.7/site-packages/_mysql.so

Я не знаю почему, но это работает для меня

$ sudo chcon -t shlib_t /opt/django/virtenv/django15/lib/python2.7/site-packages/*.so

Чтобы сделать точнее, пожалуйста, выполните:

# ls -lZ /opt/django/virtenv/django1/lib/python2.7/site-packages
# ls -lZ /opt/django/virtenv/django1/lib/python2.7/site-packages/_mysql.so
# grep mysql /var/log/audit/audit.log | audit2allow -w -a -r -v
# grep mysql /var/log/audit/audit.log | audit2allow -a -r -R mysql

Несколько проблем с разрешением, которые я заметил:

  1. Убедитесь, что ваши учетные данные для mySQLdb имеют доступ к базе данных.
  2. Если вы используете IP и порт для подключения к базе данных, попробуйте использовать localhost.
  3. Убедитесь, что у пользователя (разрешения chmod) есть доступ к папке, где mySQL хранит вещи. Иногда при хранении мультимедиа и вещей требуется разрешение на фактическую папку.
  4. Наконец, я попытался бы сбросить сервер Apache (не всю машину).
Другие вопросы по тегам