O SELinux bloqueia o aplicativo da Web tomcat para carregar a biblioteca nativa Java (JNI) da pasta / tmp

0

Eu tenho um Centos 7 com o Tomcat instalado e um usuário tomcat

ls -l /var/lib/tomcat
total 0
drwxrwxrwx. 5 root tomcat 84 Jul  3 13:18 webapps

O SELinux está impondo e um aplicativo da Web Java que tenta carregar a biblioteca nativa Java (JNI) a partir de arquivos de objetos compartilhados .so na pasta / tmp / não funciona.

 java.lang.UnsatisfiedLinkError: /tmp/app/gdal_java/2018.07.03.14.52.59/libosrjni.so: 
/tmp/app/gdal_java/2018.07.03.14.52.59/libosrjni.so: failed to map segment from shared object: Permission denied

Se eu desabilitar o SELinux, não há problema em carregar esses arquivos no aplicativo da Web Java. A permissão deste arquivo é:

ls -lZ /tmp/app/gdal_java/2018.07.03.14.52.59/libosrjni.so
-rwxrwxrwx. tomcat tomcat system_u:object_r:tomcat_tmp_t:s0 /tmp/app/gdal_java/2018.07.03.14.52.59/libosrjni.so

Como posso configurar o SELinux para permitir que o usuário tomcat carregue esses arquivos da pasta / tmp / app / ?

Eu tentei com esse comando e reiniciei o tomcat, mas ele ainda tem o mesmo erro

sudo semanage fcontext -a -t tomcat_tmp_t '/tmp/app_*/(.*)?'
    
por Bằng Rikimaru 03.07.2018 / 17:08

2 respostas

1

Acho que você esqueceu de executar restorecon depois de definir o fcontext:

$ semanage fcontext -a -t tomcat_tmp_t "/tmp/app_*(/.*)?"
$ restorecon -rv /tmp

Referências

por 03.07.2018 / 17:22
-1

Eu uso a ferramenta audit2allow para permitir que o tomcat possa ter várias permissões (leitura, execução) nesta pasta / tmp / app.

link

cat /var/log/audit/audit.log  | audit2allow -a
    
por 04.07.2018 / 09:34