安全功能,PrivateTmp

安全功能,PrivateTmp

我正在举办一个简单的wsgi 应用程序httpd超过CentOS 7使用mod_wsgi并尝试消除下面所示的隔离。

wsgi应用程序,

以下脚本是我的wsgi应用程序。

  • 它会创建一个名为/tmp/test-wsgi.txt
  • /tmp枚举作为简单 JSON 列表的内容

代码:

def application(environ, start_response):
    status = '200 OK'
    headers = [('Content-Type', 'application/json')]
    start_response(status, headers)

    with open('/tmp/test-wsgi.txt', 'w+') as w:
        w.write('hello world')

    files = os.listdir('/tmp')
    return json.dumps(files)

当我访问我的网络应用程序时,我收到以下响应

["test-wsgi.txt"]

到目前为止很棒!


然而,

与 root 连接到同一托管服务器,

我打开了一个 shell 并执行了cat /tmp/test-wsgi.txt

在此处输入图片描述

通过尝试,似乎我的 wsgi 脚本中的任何文件系统操作(枚举/创建/套接字访问)都是“环境孤立”(如 chroot jail)。奇怪的是,我没有配置任何此类隔离。


httpd 配置

/etc/httpd/conf.d/my-app.conf

<VirtualHost *:80>

DocumentRoot /opt/my-app/

WSGIScriptAlias / /opt/my-app/apache/wsgi.py

<Directory /opt/my-app/apache>
    Order allow,deny
    Allow from all
    Require all granted
</Directory>

</VirtualHost>

/etc/httpd/conf/httpd.conf

...

User apache
Group apache

...

答案1

安全功能,PrivateTmp

这是一项安全功能,称为PrivateTmp,默认配置有httpdsystemd 服务。

如何禁用它?

編輯/usr/lib/systemd/system/httpd.service消除以下行:

PrivateTmp=true

然后运行以下命令,

sudo systemctl daemon-reload
sudo service httpd restart

相关内容