Apache 如何允许读/写文件访问

Apache 如何允许读/写文件访问,apache,flask,openldap,Apache,Flask,Openldap,我使用Flask+Apache+Ubuntu20.04+Pytho3-ldap3和OpenLDAP作为后端 现在我需要提供一个页面,允许管理员更改文件(读取、插入或删除文件内容) 它不是上载/下载文件 示例:管理员访问https://flask/hosts 他可以插入或删除/etc/hosts文件的内容 我认为我必须以以下为例: @app.route('/hosts') def host(): with open ( '/etc/hosts' , 'w') as file: 在Apache中,

我使用Flask+Apache+Ubuntu20.04+Pytho3-ldap3和OpenLDAP作为后端

现在我需要提供一个页面,允许管理员更改文件(读取、插入或删除文件内容)

它不是上载/下载文件

示例:管理员访问https://flask/hosts 他可以插入或删除
/etc/hosts
文件的内容

我认为我必须以以下为例:

@app.route('/hosts')
def host():
with open ( '/etc/hosts' , 'w') as file:
在Apache中,我有:/etc/apache2/conf文件/hosts.conf

<File /etc/hosts>
        Require all granted 
</File>

要求所有授权

但是有很多东西不见了。。。8) 首先,这是非常危险的

你不应该让人们修改你服务器上的文件。这是一个很高的安全风险

看起来您没有应用程序服务器。Flask不是您的生产服务器。您应该使用与WSGI兼容的东西,如Gunicorn、uWSGI、Nginx单元

更安全的方法可能是处理每一个案例,例如:

@app.route("/add_entry", methods=["PUT"]):
def add_entry_to_host_file():
    entry = request.args.get("entry", type=str, default="")
    if check_entry(entry):
         add_entry_to_host_file(entry)
    return "something"
你会发现,这是非常长的,并不是真正适合。也许您应该使用不同的工具(配置管理工具)来实现这一点,比如Ansible、Salt、Chef。。。它们更安全,而且是为此而设计的。如果您想要一个用户友好的web界面,您可能可以在Github上找到其中一个的web界面


我知道我没有按照你期望的方式回答这个问题,但这确实是一个安全风险。

首先,这非常危险

你不应该让人们修改你服务器上的文件。这是一个很高的安全风险

看起来您没有应用程序服务器。Flask不是您的生产服务器。您应该使用与WSGI兼容的东西,如Gunicorn、uWSGI、Nginx单元

更安全的方法可能是处理每一个案例,例如:

@app.route("/add_entry", methods=["PUT"]):
def add_entry_to_host_file():
    entry = request.args.get("entry", type=str, default="")
    if check_entry(entry):
         add_entry_to_host_file(entry)
    return "something"
你会发现,这是非常长的,并不是真正适合。也许您应该使用不同的工具(配置管理工具)来实现这一点,比如Ansible、Salt、Chef。。。它们更安全,而且是为此而设计的。如果您想要一个用户友好的web界面,您可能可以在Github上找到其中一个的web界面


我知道我没有按照您期望的方式回答问题,但这确实存在安全风险。

谢谢Victor。我以/etc/hosts为例。我正在开发一个与squid文件交互的烧瓶。所有flask应用程序都符合防火墙规则。没有安全问题,只有管理员才能使用登录名/密码访问应用程序。我看到了很多上传和下载的例子,但几乎没有一个是关于修改文件内容的..8(谢谢Victor。我以/etc/hosts为例。我正在开发一个与squid文件交互的flask。所有flask应用程序都在防火墙规则内。没有安全问题,只有管理员可以使用登录名/密码访问应用程序。我看到了很多上载和下载的示例,但几乎没有一个使用flask修改文件内容的示例..8(