【发布时间】:2015-09-23 07:13:42
【问题描述】:
当我运行我的程序并尝试创建文件时,我收到以下错误:
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 和create 文件夹中的create 文件。
我看对了吗?
感谢您的帮助。
注意
上面的文件夹有以下permissions:
drwxr-xr-x 10 giri26 giri26 4096 Jun 27 22:52 ../
这可能需要改变吗?
更新
如下所示,我使用curl 运行strace,但output 不包含EACESS 的任何实例。 output 文件中有 400 多行,所以不能在这里全部发布。还有什么我需要注意的吗? ATM,我真的不知道什么是相关的。
这些行出现很多:
762 access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory)
762 open("/lib/x86_64-linux-gnu/libdl.so.2", O_RDONLY) = 3
762 read(3, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\340\r\0\0\0\0\0\0"..., 832) = 832
762 fstat(3, {st_mode=S_IFREG|0644, st_size=14768, ...}) = 0
762 mmap(NULL, 2109696, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7fa0d731f000
762 mprotect(0x7fa0d7321000, 2097152, PROT_NONE) = 0
762 mmap(0x7fa0d7521000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x2000) = 0x7fa0d7521000
762 close(3)
这也出现在输出的末尾:
recvfrom(3, "HTTP/1.1 500 INTERNAL SERVER ERR"..., 16384, 0, NULL, NULL) = 10510
【问题讨论】:
-
您在更改组后是否重新启动了主管?他们之前不会申请。
-
@KlausD。是的,我已经尝试过了,但仍然遇到同样的问题。
-
文件是否已经存在?如果有,它的权限是什么?
-
@AndrewHenle 该文件不存在。出错时即将创建。
-
@Giri - 你的操作系统是什么?如果是 Linux,请尝试在
strace -f -o /your/output/file/name your command下运行该进程并查找返回EACCESS的系统调用。这将告诉您失败的确切系统调用,这比您现在拥有的数据更多。
标签: python unix file-permissions supervisord