【问题标题】:Permission Denied to Upload Django上传 Django 的权限被拒绝
【发布时间】:2019-04-25 21:10:04
【问题描述】:

我正在尝试使用 django(xlsx) 上传文件,这是我的代码:

myfile = request.FILES['document']
fs = FileSystemStorage()
filename = fs.save(myfile.name, myfile)

在我已设置要上传的文件夹“媒体”的模型上,出现此错误:

Permission denied: '/var/www/html/inventariosRG/media/my_file.xlsx'

我尝试用这个来修复这个错误:

  PATH = 'media/'
  myfile = request.FILES['document']
  try:
     import subprocess
     RUTA_ABSOLUTA = os.path.join(os.path.dirname(os.path.dirname(__file__)),PATH)
     subprocess.Popen('sudo chmod -R 777 '+RUTA_ABSOLUTA, shell=True)
  except Exception as e:
     raise Exception ("Error ",e)
 fs = FileSystemStorage()
 filename = fs.save(myfile.name, myfile)

此代码仅显示相同的错误“权限被拒绝...”请我尝试在 django 上通过命令设置权限,任何建议谢谢..!!

【问题讨论】:

    标签: django


    【解决方案1】:

    这些答案可能相关并且比 777-ing 更好: Django - Media upload [Errno 13] Permission denied

    来自互联网的文件归用户“www-data:www-data”所有,并且该用户具有严格限制的权限(因为来自互联网的文件可能不好。)您的 Django media/ 文件夹需要可访问并且可写给 www-data 用户,因此使该所有者成为用户是合适的。

    另外,我无论如何都不是系统管理员,我可能是从不被认可的无知中说出来的,但是在你的 Django 应用程序中使用sudo 对我来说似乎是一个很大的安全风险。

    我可以看到“配置”脚本的用途,它可以确保新部署正确展开,但要将该脚本和您的 Django 代码与来自 Internet 的文件很好地分开。您可以将您的脚本添加到/etc/sudoers 以赋予它所需的权限(但请记住使用visudo 编辑sudoers)如果有某种原因使其自动化。

    【讨论】:

      猜你喜欢
      • 2014-12-06
      • 1970-01-01
      • 2015-03-30
      • 2019-07-12
      • 1970-01-01
      • 2015-04-13
      • 2015-09-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多