SELinux блокирует веб-приложение Tomcat для загрузки собственной библиотеки Java (JNI) из папки / tmp

У меня есть Centos 7 с установленным Tomcat и пользователь tomcat

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

SELinux принудительно и веб-приложение Java, которое пытается загрузить собственную библиотеку Java (JNI) из файлов общих объектов. Поэтому в папке / tmp / работать не может.

 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

Если я отключу SELinux, не возникнет проблем с загрузкой этих файлов в веб-приложение Java. Разрешение этого файла:

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

Как мне настроить SELinux, чтобы разрешить пользователю tomcat загружать эти файлы из папки / tmp / app / ?

Я пробовал с эту команду и перезапустите tomcat, но по-прежнему с той же ошибкой

sudo semanage fcontext -a -t tomcat_tmp_t '/tmp/app_*/(.*)?'
0
03.07.2018, 18:08
2 ответа

Думаю, вы забыли запустить restoreconпосле определения fcontext:

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

Ссылки

1
28.01.2020, 04:19

Я использую инструмент audit2allow, чтобы позволить tomcat иметь несколько разрешений (на чтение, выполнение )в этой папке /tmp/app.

https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/6/html/security-enhanced_linux/sect-security-enhanced_linux-fixing_problems-allowing_access_audit2allow

cat /var/log/audit/audit.log  | audit2allow -a
-1
28.01.2020, 04:19

Теги

Похожие вопросы