virtualenv Error al asignar segmento del object compartido: Permiso denegado

Cuando SELinx está en permissive la webapp de Django funciona bien sin alertas. El error de abajo aparece en el logging de errores de Apache, una vez que SELinux está configurado para hacer cumplir, pero no se registran alertas en 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 shanetworking object: Permission denied 

El sistema está ejecutando CentOS 7, Apache httpd 2.4 2.4.6 (rpm instalado), Python 3.4.2 (fuente instalada) y pip instalado: mod_wsgi 4.4.5, virtualenv 12.0.5, psycopg2 2.5.4 y Django 1.7. 2.

No hay nada registrado por Django.

El tipo de context de file actual del directory virtualenv es httpd_sys_content_t .

httpd_sys_script_exec_t parece ser el mejor tipo de context de file que se va a utilizar, y sólo debe aplicarse al file de object compartido implicado.

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

Como usuario root o superusuario:

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

El cambio de context se mantendrá durante el reinicio y el relabeldo del sistema de files.

Basado en esta pregunta de localización errónea sobre Desbordamiento de stack.