Supervisor / Unix Permission拒绝写入目录

时间:2015-07-06 08:15:14

标签: python unix file-permissions supervisor

当我运行程序并尝试创建文件时,我收到以下错误:

IOError: [Errno 13] Permission denied: '/home/giri26/couponmonk_project/user_15_qr.png'

我使用supervisor运行我的程序,这是config文件:

[program:gunicorn-couponmonk]
directory = /home/giri26/couponmonk_project
command = /home/giri26/venv/py2.7/bin/python /home/giri26/venv/py2.7/bin/gunicorn --worker-class socketio.sgunicorn.GeventSocketIOWorker __init__:app 
stdout_logfile = /var/log/gunicorn/couponmonk-std.log
stderr_logfile = /var/log/gunicorn/couponmonk-err.log
user = newuser

我认为此error指的是permissions newuser,因此我将newuser添加到group giri26

运行groups newuser会导致:

newuser : giri26

ls -ld couponmonk_project/的结果是:

drwxrwxr-x 3 giri26 giri26 4096 Jun 27 22:34 couponmonk_project/

我认为由于newuser是小组giri26的一部分且group拥有rwx权限,因此我可以write和{ {1}}文件夹中的{1}}文件。

我正确地看着这个吗?

感谢您的帮助。

注意

上面的文件夹包含以下create

couponmonk_project

这可能需要改变吗?

更新

如下所述,我使用permissions运行drwxr-xr-x 10 giri26 giri26 4096 Jun 27 22:52 ../ ,但strace未包含curl的任何实例。 output文件中有400多行,因此无法在此处发布。还有什么我可能会注意的吗? ATM,我无法真正说出相关内容。

这些行显得很多:

EACESS

这也出现在输出结尾:

output

2 个答案:

答案 0 :(得分:0)

gunicorn配置文件中的行

user = newuser

似乎确实是核心问题。正如

所示
$ id
uid=1001(msw) gid=1001(msw) groups=1001(msw),4(adm),8(mail) …

用户有一个uid和一个gid。列出的所有其他组都是您所属的组,但不是您的gid。要更改gid,您必须明确要求将其切换为:

$ newgrp mail
$ id
uid=1001(msw) gid=8(mail) groups=1001(msw),4(adm),8(mail) …

确实将我的gid更改为我的其他组之一。不幸的是,newuser现在可能看起来像:

 $ id
 uid=22(newuser) gid=22(newuser) groups=22(newuser), 455(giri26) …

由于newuser可能永远不会登录到shell,甚至没有密码,因此没有好地方可以运行newgrp。

要修复它,你应该通过修改/etc/passwd

使giri26成为新用户的gid
newuser:x:22:22: …

变为:

newuser:x:22:455: …

这可能对newuser的其他文件和目录产生影响,要小心。

答案 1 :(得分:0)

您应该在更改文件权限后尝试重新启动实际计算机。

如果在远程服务器上运行此命令,请通过Web主机控制面板发出命令以重新启动实际计算机。

这应该有希望解决这个问题。