修复uwsgi下python进程创建文件夹的权限为777的问题

总是发现服务器 django 进程生成的图片文件夹的权限不正常,所有文件夹都是777,查看 uwsgi 进程的 umask 终于找出了原因,umask=0, My God. 关于 umask 的解释请看这里 http://man7.org/linux/man-pages/man2/umask.2.html

解决方法

啥也不说了,在 uwsgi.ini 里加上一句:

umask = 022

问题瞬间解决。

顺便说一下查看进程 umask 的方法,需要先安装 gdb.

ps aux | grep uwsgi  # 找到 uwsgi 进程的 pid, 比如2333
gdb --pid=2333  # gdb 调试进程,下面的命令在 gdb 内运行
(gdb) call umask(0)  # 这句将进程的当前 umask 设置为0并返回原 umask, 即我们需要找到的结果
(gdb) call umask(18)  # 将当前 umask 设置为022,022是八进制,转换为十进制就是18