带SELinux的Python MySQLdb

带SELinux的Python MySQLdb,python,django,mysql-python,selinux,Python,Django,Mysql Python,Selinux,我在django应用程序中使用mySQLdb模块,该应用程序通过WSGI链接到Apache。 但是,我遇到了权限问题(如下所示)。这取决于SElinux,如果我将其设置为被动,一切都可以 配置不正确:加载MySQLdb模块时出错: /opt/django/virtenv/django15/lib/python2.7/site-packages//u mysql.so: 无法从共享对象映射段:权限被拒绝 更新SELinux以包含此内容而不必关闭整个程序的最佳方法是什么。错误如下所示: 配置不正确:

我在django应用程序中使用mySQLdb模块,该应用程序通过WSGI链接到Apache。 但是,我遇到了权限问题(如下所示)。这取决于SElinux,如果我将其设置为被动,一切都可以

配置不正确:加载MySQLdb模块时出错: /opt/django/virtenv/django15/lib/python2.7/site-packages//u mysql.so: 无法从共享对象映射段:权限被拒绝

更新SELinux以包含此内容而不必关闭整个程序的最佳方法是什么。错误如下所示:

配置不正确:加载MySQLdb模块时出错: /opt/django/virtenv/djang1/lib/python2.7/site-packages//u mysql.so: 无法从共享对象映射段:权限被拒绝


正如@Gohn67所建议的,更改相关文件的SELinux安全上下文,允许HTTPD进程执行它:

sudo chcon -R -h -t httpd_sys_script_exec_t /opt/django/virtenv/django15/lib/python2.7/site-packages/_mysql.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

我注意到几个许可问题:

  • 确保您的mySQLdb凭据可以访问数据库
  • 如果使用IP和端口连接到数据库,请尝试使用localhost
  • 确保用户(chmod权限)有权访问mySQL存储内容的文件夹。有时,在存储介质和内容时,它需要对实际文件夹的权限
  • 最后,我将尝试重置Apache服务器(而不是整个机器) 我不知道为什么,但对我有用

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

    您的数据库凭据设置是否正确,看起来您没有连接数据库的权限IP好像我关闭了Selznick it connects Fine可能是SELinux策略错误,因为httpd有很多限制。首先确保httpd读取的文件标有
    httpd\u sys\u content\u t
    。使用
    ls-lZ
    进行检查。对于
    \u mysql.so
    ,您可能需要执行权限。为此,您需要标签:
    httpd\u sys\u script\u exec\u t
    。类似问题的答案如下:您是否启用了
    httpd\u can\u network\u connect
    。出于兴趣,我怎么知道应该添加什么标签?