Назад | Перейти на главную страницу

Среда сценария wsgi изолирована и размещена на httpd, CentOS 7

Я провожу простой приложение wsgi на httpd над CentOS 7 с помощью mod_wsgi и пытается удалить изоляцию, показанную ниже.

В wsgi приложение,

Следующий сценарий - мой wsgi применение.

код:

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,

Я открыл оболочку и выполнил cat /tmp/test-wsgi.txt

Поиграв с ним, кажется, что любая операция файловой системы (перечисление / создание / доступ к сокету) внутри моего сценария wsgi является "экологически изолированный" (например, chroot jail). Странно то, что я не настроил ни один из этих типов изоляции.


httpd config

/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

...

Функция безопасности, PrivateTmp

Это функция безопасности, которая называется PrivateTmp, настроенный по умолчанию с httpd systemd сервис.

Как это отключить?

редактировать /usr/lib/systemd/system/httpd.service и удалять следующая строка:

PrivateTmp=true

Затем выполните следующие команды,

sudo systemctl daemon-reload
sudo service httpd restart