【发布时间】:2014-06-30 03:57:48
【问题描述】:
我正在运行一个 python CGI 脚本,它必须在目录位置创建一个视频。
平台:Ubuntu 14.04 64-bit
Python 版本:2.7.6
脚本正在由用户运行:www-data
我有一个目录mydir。
mydir 的权限是 777(递归)。此目录归用户所有:www-data 和组www-data。
Python 脚本在mydir 的子目录中创建了一个新目录,但是引发了一个异常:
IOError: [Errno 13] Permission denied: 'path/to/file.ext'
我观察到创建的新目录令人惊讶地具有以下状态:
drwxrwxr-x 3 me me 4096 <Timestamp> newdir
当我早些时候检查时,该进程由www-data 运行,但现在该文件夹归我登录的当前用户所有。 (此处由'me' 表示)。
此外,所有权限都已设置,除了检查其他权限r-x。没有写权限。这证明引发的异常是合理的。
我尝试了os.umask(0000) 和os.chmod('mydir',0777)。第一个没有任何影响。第二个,我不知何故没有权限。有人可以帮忙吗?这个问题真的很烦人。我在这里错过了什么?
注意:python文件的触发方式如下:cronjob调用PHP文件,该文件经过处理后向Python脚本发送post请求。
编辑:请让我知道@MattDMo 的解决方案是否有效(我不会对其进行测试,因为我已经改变了我的方法)。如果有人发现它有效,我会将其标记为已接受。
【问题讨论】:
-
我已经搜索过了。但没有找到解决办法
-
cron作业是否由www-data运行? -
你是在cron作业中使用curl还是php,这可以改变运行整个作业集的用户。
-
@MattDMo 否,
cron作业不是由www-data运行的。我观察到,如果我从当前登录的用户设置cron作业,则文件夹归该用户所有。我还使用root运行cron作业,然后文件夹归root所有。 -
@thebwt 我正在使用
php调用cron作业中的文件。我看到所有者发生了变化,因为当我编写日志文件时,它归www-data所有,但新文件夹归创建 cron 作业me或root的用户所有。
标签: python cgi permission-denied