带SELinux的Python MySQLdb
我在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: 无法从共享对象映射段:权限被拒绝带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以包含此内容而不必关闭整个程序的最佳方法是什么。错误如下所示: 配置不正确:
正如@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
我注意到几个许可问题:
$ 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
。出于兴趣,我怎么知道应该添加什么标签?