如何将WSGIDaemonProcess用户设置为Django应用程序的root用户?

时间:2014-05-02 11:06:34

标签: python django mod-wsgi django-wsgi

我尝试将WSGIDaemonProcess用户设置为root。然后我收到错误日志,如下所示

[Fri May 02 04:48:47 2014] [error] [client 103.6.158.105]   [Errno 13] Permission denied: '/var/www'
[Fri May 02 04:48:47 2014] [error] [client 103.6.158.105] 
[Fri May 02 04:48:47 2014] [error] [client 103.6.158.105] The Python egg cache directory is currently set to:
[Fri May 02 04:48:47 2014] [error] [client 103.6.158.105] 
[Fri May 02 04:48:47 2014] [error] [client 103.6.158.105]   /var/www/.python-eggs
[Fri May 02 04:48:47 2014] [error] [client 103.6.158.105] 
[Fri May 02 04:48:47 2014] [error] [client 103.6.158.105] Perhaps your account does not have write access to this directory?  You can
[Fri May 02 04:48:47 2014] [error] [client 103.6.158.105] change the cache directory by setting the PYTHON_EGG_CACHE environment
[Fri May 02 04:48:47 2014] [error] [client 103.6.158.105] variable to point to an accessible directory.
[Fri May 02 04:48:47 2014] [error] [client 103.6.158.105] 

我的Django应用程序位于/ home / user / app /

任何人都可以帮助以root身份运行WSGI守护程序进程。 感谢。

2 个答案:

答案 0 :(得分:2)

您无法使Apache子工作进程或mod_wsgi守护程序进程以root身份运行。对代码有故意的内置保护,以防止你这样做,并且尝试这样做会导致错误,Apache将无法启动。

如果您真的想要设置' user = root'到WSGIDaemonProcess并且没有看到错误消息:

WSGI process blocked from running as root.
如果Apache没有启动,那么这只能意味着整个Apache父进程从未以root用户身份启动,而不是因为对代码执行的根限制而对它有所帮助。

相反,您的Apache实例正在以用户“bangtest”的形式启动,这意味着在任何时候Apache都无法将所有者更改为root权限,即使您攻击了Apache和mod_wsgi代码,以明确删除保护您自己不会产生巨大安全问题的限制。

简而言之,您确实不希望以root身份运行任何Web应用程序,因为这是一个等待发生的巨大安全问题。

BTW,忽略了以root身份运行的这种不明智的愿望,mod_wsgi文档中清楚地记录了你对Python egg缓存的实际问题。

答案 1 :(得分:0)

我在debian服务器上遇到了同样的问题所以我通过设置user = www-data和group = www-data

解决了这个问题

www-data user在/ root文件夹中没有权限