【问题标题】:Permission denied issue on uWSGIuWSGI 上的权限被拒绝问题
【发布时间】:2016-01-23 00:31:40
【问题描述】:

我在 Ubuntu 13.04 服务器上设置了一个基于 django 的项目。 我可以在 uWSGI 配置文件上使用“root”权限运行这个项目。 但是当我尝试使用标准的“www-data”用户运行它时,我得到了:

chdir(): Permission denied [uwsgi.c line 1851] 

我已将我的项目及其相应 virtualenv 文件夹的所有权更改为“www-data”,但再次出现此错误!

我的 uWSGI 配置文件是这样的:

[uwsgi]

# Django-related settings
# the base directory (full path)
chdir           = /root/my_project
# Django's wsgi file
module          = my_project.wsgi
# the virtualenv (full path)
home            = /root/.virtualenvs/my_project

# process-related settings
# master
master          = true
# maximum number of worker processes
processes       = 10
# the socket (use the full path to be safe
socket          = unix:///root/my_project/server.uwsgi.sock

chmod-socket    = 666
uid     = www-data
gid     = www-data


# clear environment on exit
vacuum          = true

怎么了?

【问题讨论】:

  • 该目录chown'd 是否由其他用户提供?
  • 不!亲爱的@AaronLelevier。我带来的 uWSGI 文件中提到的所有文件夹都是由用户 www-data 编辑的 chown'ed,该用户属于组 www-data

标签: django virtualenv uwsgi virtualenvwrapper


【解决方案1】:

您的chdirhomesocket 指令都使用/root/ 作为其基础,即root 用户的svhome 目录,因此其他用户无权访问该目录。也可能存在一些 SELinux 限制。

尝试为您的项目创建一个单独的文件夹,即在/home/ (/home/www-data) 中,确保您的www-data 用户有权访问它和权限,然后将您的项目和 venv 移动到那里,然后更改设置(包括socket),然后重试。

【讨论】:

  • 关于 /root/ 你是对的,但我已授予应用文件夹及其子内容的权限。
  • /root 本身开始?因为如果您授予了/root/my_project 的权限并忘记了/root 本身,它将无济于事。另外,正如我所说,有一件讨厌的事情 - SELinux 上下文等,所以我的建议保持不变 - 移动到限制较少的文件夹,之后您可能还想尝试禁用 SELinux 以查看它是否有帮助。
【解决方案2】:

这可以通过在用户名前添加 0 (0www-data) 轻松解决。
如果您不关心安全性,请导致它授予root权限。

【讨论】:

    猜你喜欢
    • 2020-02-08
    • 2011-03-09
    • 1970-01-01
    • 2017-07-23
    • 2015-01-28
    • 2015-05-24
    • 2021-08-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多