wsgi é isolado hospedado no httpd, o CentOS 7

1

Estou hospedando um aplicativo wsgi simples no link sobre o CentOS 7 usando mod_wsgi e tentando remover o isolamento ilustrado abaixo.

O aplicativo wsgi

O script a seguir é meu aplicativo wsgi .

  • cria um arquivo chamado /tmp/test-wsgi.txt
  • enumera o conteúdo de /tmp como uma lista json simples

código:

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)

Quando estou acessando meu aplicativo da Web, recebo a seguinte resposta

["test-wsgi.txt"]

Ótimo até agora!

No entanto,

Conectado ao mesmo servidor de hospedagem que o root,

Eu abri um shell e executei cat /tmp/test-wsgi.txt

Debrincarcomele,parecequequalqueroperaçãodosistemadearquivos(enumeração/criação/acessoaosoquete)dentrodomeuscriptwsgié"ambiente isolado" (como o chroot jail). O estranho é que eu não configurei nenhum desse tipo de isolamento.

link

/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

...
    
por Jossef Harush 08.11.2015 / 16:55

1 resposta

0

Recurso de segurança, PrivateTmp

É um recurso de segurança chamado PrivateTmp , configurado por padrão com httpd systemd service.

Como desativá-lo?

Edite /usr/lib/systemd/system/httpd.service e remova a seguinte linha:

PrivateTmp=true

Em seguida, execute os seguintes comandos,

sudo systemctl daemon-reload
sudo service httpd restart
    
por 10.11.2015 / 09:05