【问题标题】:Django created folder can't be removed apache on Centos 7Django 创建的文件夹无法在 Centos 7 上删除 apache
【发布时间】:2017-12-26 07:18:45
【问题描述】:

我有一个 django 应用程序,它为一个包创建一个工作目录。这是通过以下方式完成的:

if not os.path.exists(dest):
            os.makedirs(dest)

文件夹的创建效果很好,但是当 django 应用程序稍后尝试删除同一个文件夹时,我得到“权限被拒绝”。

显然django创建的文件夹和文件的权限归root而不是apache所有。如果 apache 创建了它,为什么它不归 apache 所有?如何让 apache 和 django 将其创建为 apache?

【问题讨论】:

    标签: python django apache centos7


    【解决方案1】:

    也许这对你有帮助 Permission problems when creating a dir with os.makedirs (python)

    根据官方 python 文档,os.makedirs 函数的 mode 参数在某些系统上可能会被忽略,而在未被忽略的系统上,当前的 umask 值会被屏蔽掉。

    无论哪种方式,您都可以使用 os.chmod 函数将模式强制为 0777。

    【讨论】:

    • 谢谢,这当然是一个解决方案,尽管了解或更改它以始终以 apache 用户或组的身份创建文件会很有用
    【解决方案2】:

    看来最佳解决方案是设置 django 将在 wsgi.py 中使用的 uid。通过将当前 python 进程的用户显式设置为“apache”,创建的每个文件都属于用户“apache”。我在 Nicos Mouzourss 回答后发现了这一点。

    设置uid:

    import os, pwd
    os.setuid(pwd.getpwnam('apache').pw_uid)
    

    【讨论】:

      猜你喜欢
      • 2013-08-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-23
      • 2011-07-19
      • 1970-01-01
      • 1970-01-01
      • 2022-08-18
      相关资源
      最近更新 更多