即使设置为777仍然拒绝写权限
我正在运行一个Python CGI脚本,这个脚本需要在一个特定的文件夹里创建一个视频。
平台:Ubuntu 14.04 64位
Python版本:2.7.6
这个脚本是由用户:www-data
来运行的。
我有一个文件夹叫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
文件,经过一些处理后再发送一个POST请求给Python
脚本。
编辑:如果@MattDMo的解决方案有效,请告诉我(我不会测试它,因为我已经换了方法)。如果有人发现有效,我会标记为接受。
1 个回答
1
看起来你只需要编辑一下你的 crontab
文件,然后把 www-data
加入作为用户:
*/5 * * * * www-data php call_python.php
你也可以通过命令行来完成这个操作,只需运行 crontab
命令,并加上 -u
选项,这样就可以指定要更改的用户的名字:
sudo crontab -u www-data -e