0

我试图将 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 守护进程。谢谢。

4

2 回答 2

2

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

如果您确实尝试将 'user=root' 设置为 WSGIDaemonProcess 并且没有看到错误消息:

WSGI process blocked from running as root.

如果 Apache 没有启动,那么这只能意味着整个 Apache 父进程从一开始就没有以 root 身份启动,而不是因为 root 对执行代码的限制而对您有帮助。

相反,您的 Apache 实例是以用户 'bangtest' 身份启动的,这意味着 Apache 在任何时候都绝对没有权限将所有者更改为 root,即使您破解了 Apache 和 mod_wsgi 代码以明确删除限制它可以保护您免于为自己制造巨大的安全问题。

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

顺便说一句,忽略这种以 root 身份运行的不明智的愿望,您在使用 Python egg 缓存时遇到的实际问题在 mod_wsgi 文档中清楚地记录了。

于 2014-05-02T12:44:46.903 回答
0

我在 debian 服务器中遇到了同样的问题,所以我通过设置 user = www-data 和 group = www-data 来解决它

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

于 2016-07-24T09:16:27.283 回答