我有一个脚本,用于检查json文件并将照片下载到文件夹中。如果django manage.py脚本搞砸了目录权限
该位检查目录是否存在,如果没有,创建它:
folder = media_root + 'photos/' + now.strftime('%Y') + '/' + now.strftime('%m') + '/' + now.strftime('%d')
if not os.path.isdir(folder):
os.makedirs(folder)
一切工作像它应该,但现在该文件夹无法通过Django管理界面来写,给人错误OSError:[Errno 13] Permission denied:media/photos/2014/08/31/OneOf.jpg
这种方法的唯一方法是如果我将权限设置为每个人都可写。 我检查和gunicorn运行与用户没有人,这从来没有造成过问题。
什么可能导致这个问题,我怎么阻止它在将来发生?
编辑:
我尝试了建议,波纹管,但在运行脚本无人只返回了一个错误:
File "./manage.py", line 8, in <module>
from django.core.management import execute_from_command_line
ImportError: No module named django.core.management
我还检查和其他文件夹,通过Django的管理员创建接口,也归根。
解决方案:
的os.makedirs命令改为由root拥有整个目录树,这就是为什么,即使有相同的权限其他文件夹的Django无法写入该目录。
为防止它再次发生,解决方案是在创建新文件夹后将所有权恢复到该目录树。
这个脚本,它运行的是什么用户? – 2014-08-31 19:40:53
@BurhanKhalid我以root身份登录到了Ubuntu服务器上。 – 2014-08-31 19:50:03
你是否以root身份运行脚本? ('manage.py'脚本)。 – 2014-08-31 19:53:45