Python在uWSGI下创建的文件和目录权限不正确。

4

我是Python开发的新手。

我写了一个小型Python Web应用程序,用于创建一些文件和目录。当我在命令行中运行它时,一切正常。但是在uWSGI下,所有新文件的权限为-rw-rw-rw-,所有新目录的权限为drwxrwxrwx,而不是-rw-rw-r--和drwxrwxr-x。

Ubuntu上的uWSGI配置是默认配置,没有任何特殊设置。uWSGI应用程序ini文件如下:

[uwsgi]
plugins=python

nginx的配置文件如下:

server {

        listen 8080;

        access_log /path/to/logs/access.log;
        error_log /path/to/logs/error.log;

        location / {
                uwsgi_pass unix:/var/run/uwsgi/app/myapp/socket;
                include uwsgi_params;
                uwsgi_param UWSGI_PYHOME /path/to/myapp/.env/;
                uwsgi_param UWSGI_CHDIR /path/to/myapp/;
                uwsgi_param UWSGI_SCRIPT myapp;
        }

}

我猜问题出在uWSGI配置不足,但我不知道该怎么做。


你是如何启动uwsgi进程的?根据这个,你可以设置umask来指定创建文件/目录的权限。 - Thomas Fenzl
1
谢谢Thomas!问题很简单地通过在ini配置中指定选项umask=002来解决。但在官方文档中,选项umask被描述为“设置UNIX套接字umask”。http://uwsgi-docs.readthedocs.org/en/latest/Options.html#umask 奇怪... - mcrss
1个回答

4
这是由于uWSGI的默认umask为000,保留所有位 - 这意味着文件的默认值为666或目录的默认值为777。

您可以通过在uWSGI配置文件上设置umask选项来更改此设置,以删除应该删除的位。例如,要获得644/755,您需要使用022 umask清除组/其他的写入标志(777-022 = 755,666-022 = 644)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接