解決したいこと
・Djangoでアップロードしたファイルの読み込みを行い、何らかの操作を行うという処理をcronで回そうとした際、ファイルが読めないとパーミッションエラーが発生。
・ファイルアップロード時の権限は「600」
試したこと
前提としてchmodを行う際、管理者権限が必要な環境です。
os.py
import os
os.system('sudo shmod 644 path')
python os.py
-> 権限切り替わる。
cronで実行 -> 権限切り替わらず。
subprocess.py
import subprocess
subprocess.call('sudo shmod 644 path')
python subprocess.py
-> 権限切り替わる。
cronで実行 -> 権限切り替わらず。
解決策
settings.pyに「FILE_UPLOAD_PERMISSIONS = 0o644」と記載しておくことでアップロードしたファイルの権限が「644」になった。
セキュリティ考慮してデフォルト「600」にしているっぽいですが、時間かかった。。
cron回したときにsubprocessやos.systemで切り替わらなかった理由は分かってないです。