授予在Apache2 ubuntu上运行的Python Flask应用程序权限

授予在Apache2 ubuntu上运行的Python Flask应用程序权限,python,linux,apache,ubuntu,amazon-s3,Python,Linux,Apache,Ubuntu,Amazon S3,我正在Ubuntu的Apache2服务器上运行Flask应用程序。应用程序将从表单中获取输入并将其保存到文本文件中。该文件仅在上载到S3时存在。之后,它被删除 foodforthought = request.form['txtfield'] with open("filetos3.txt", "w") as file: file.write(foodforthought) f

我正在Ubuntu的Apache2服务器上运行Flask应用程序。应用程序将从表单中获取输入并将其保存到文本文件中。该文件仅在上载到S3时存在。之后,它被删除

            foodforthought = request.form['txtfield']
        with open("filetos3.txt", "w") as file:
            file.write(foodforthought)
        file.close()
        s3.Bucket("bucketname").upload_file(Filename = "filetos3.txt", Key = usr+"-"+str(datetime.now()))
        os.remove("filetos3.txt")
但应用程序没有创建文件的权限:

[Errno 13] Permission denied: 'filetos3.txt'
我已尝试通过以下方式授予应用所在文件夹的权限:

 sudo chmod -R 777 /var/www/webApp/webApp

但是它不起作用

我猜应用程序是从不同的位置运行的。您从中获得了什么输出:

导入操作系统
打印(os.getcwd())
您需要为该目录设置权限。最好使用绝对路径。由于文件是临时文件,请使用
tempfile
as

foodforthought=request.form['txtfield']
使用tempfile.NamedTemporaryFile()作为fd:
fd.write(foodforthought)
fd.flush()
#文件名位于.Name属性中。
s3.Bucket(“bucketname”).upload_文件(Filename=fd.name,Key=usr+“-”+str(datetime.now())
#文件在关闭时会自动删除,也就是当用户离开上下文管理器时。

最后一点注意事项:您不需要关闭文件,因为您使用的是上下文管理器。此外,避免递归设置777。最安全的方法是设置
+wX
,以便只在目录上设置
执行
位,在所有内容上设置
写入
位。或者更具体一点。

你检查过所有权了吗?尝试从根用户运行它。