我有一個腳本,用於檢查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