Habilita a execução do FFMPEG sob o Apache + Django + WSGI no CentOS 7 (SELinux)

0

Eu tenho um site rodando em Django e Apache (httpd) e dentro de uma visão eu preciso chamar o FFMPEG para converter uma imagem em vídeo. Ele funcionou no Ubuntu 12 por anos, mas agora temos que migrá-lo para CentOS 7 e as coisas se tornaram complicadas. O código é assim:

ffcmd = '/usr/local/bin/ffmpeg -y -loop 1 -i %s -t %d -vf "fade=in:0:5,fade=out:%d:5" -pix_fmt yuv420p -r "30" -c:v libx264 %s %s.mp4 %s' % (##PARAMS##)
import subprocess                                
p = subprocess.Popen(ffcmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE, stdin=subprocess.PIPE)
out, err = p.communicate()

Mas recebo um erro na saída err :

Exception: /bin/sh: /usr/local/bin/ffmpeg: Permission denied

Após alguns testes, descobri que o SELinux está bloqueando e registrando. Quando desativei o SELinux, funcionou, mas tenho que mantê-lo ativado por causa das políticas internas do cliente.

Encontrei alguns comandos que devem ler as regras bloqueadas e desativá-las, usando "audit2allow":

grep httpd /var/log/audit/audit.log | audit2allow -m httpdlocal > httpdlocal.te

Acima para ver as regras no arquivo link . Abaixo para aplicá-las.

grep httpd /var/log/audit/audit.log | audit2allow -M httpdlocal
semodule -i httpdlocal.pp

Mesmo com isso, ainda registrando "Permissão negada" .

Estou no caminho certo ou existe uma maneira melhor de manter o SELinux no modo "enforcing" e desbloquear a execução do FFMPEG sob o Apache?

    
por digofreitas 18.10.2017 / 13:39

0 respostas