virtualenv Falha ao mapear o segmento do objeto compartilhado: Permissão negada

1

Quando o SELinx está em permissive , o webapp do Django roda bem, sem alertas. O erro abaixo aparece no log de erros do Apache, uma vez que o SELinux está configurado para impor, mas nenhum alerta é registrado em audit.log .

[wsgi:error]     import psycopg2 as Database
[wsgi:error]   File "/mnt/data/venv/app/lib/python3.4/site-packages/psycopg2/__init__.py", line 50, in <module>
[wsgi:error]     from psycopg2._psycopg import BINARY, NUMBER, STRING, DATETIME, ROWID
[wsgi:error] ImportError: /venv/app/lib/python3.4/site-packages/psycopg2/_psycopg.cpython-34m.so: failed to map segment from shared object: Permission denied

O sistema está executando o CentOS 7, o Apache httpd 2.4 2.4.6 (rpm instalado), o Python 3.4.2 (fonte instalada) e o pip instalado: mod_wsgi 4.4.5, virtualenv 12.0.5, psycopg2 2.5.4 e Django 1.7.2.

Nada é registrado pelo Django.

O tipo de contexto atual do arquivo do diretório virtualenv é httpd_sys_content_t .

    
por Kevin 13.01.2015 / 17:39

1 resposta

1

httpd_sys_script_exec_t parece ser o melhor tipo de contexto de arquivo a ser usado e só precisa ser aplicado ao arquivo de objeto compartilhado envolvido.

<virtualenv/path/>lib/python3.4/site-packages/psycopg2/_psycopg.cpython-34m.so‌​.

Como root ou superusuário:

semanage fcontext -a -t httpd_sys_script_exec_t </full-path-to-file/_psycopg.cpython-34m.so‌>
restorecon -v </full-path-to-file/_psycopg.cpython-34m.so‌>

A mudança de contexto persistirá durante a reinicialização e a nova rotulação do sistema de arquivos.

Baseado em desta questão não localizada no Stack Overflow.

    
por 13.01.2015 / 17:39