即使设置为777仍然拒绝写权限

0 投票
1 回答
580 浏览
提问于 2025-04-18 06:19

我正在运行一个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

撰写回答