У меня Centos 7 с установленным Tomcat и tomcat пользователем
ls -l /var/lib/tomcat
total 0
drwxrwxrwx. 5 root tomcat 84 Jul 3 13:18 webapps
SELinux соблюдается и веб-приложение Java, которое пытается загрузить Java native library (JNI) из файлов общих объектов .so в папке /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_*/(.*)?'
Я использую инструмент audit2allow из комментария @jordanm, чтобы позволить tomcat иметь несколько разрешений (чтение, выполнение) в этой папке / tmp / app.
cat /var/log/audit/audit.log | audit2allow -a