Tomcat이 설치된 Centos 7이 있습니다.수코양이사용자
ls -l /var/lib/tomcat
total 0
drwxrwxrwx. 5 root tomcat 84 Jul 3 13:18 webapps
SELinux가 시행되고 있으며 /tmp/ 폴더의 공유 객체 파일 .so에서 JNI(Java Native Library)를 로드하려고 시도하는 Java 웹 애플리케이션이 작동하지 않습니다.
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를 허용하도록 구성하려면 어떻게 해야 합니까?수코양이사용자가 이 파일을 로드합니다./tmp/응용 프로그램/폴더?
이 명령을 사용하고 Tomcat을 다시 시작해 보았지만 여전히 동일한 오류가 발생합니다.
sudo semanage fcontext -a -t tomcat_tmp_t '/tmp/app_*/(.*)?'
답변1
restorecon
fcontext를 정의한 후 실행하는 것을 잊은 것 같습니다.
$ semanage fcontext -a -t tomcat_tmp_t "/tmp/app_*(/.*)?"
$ restorecon -rv /tmp
인용하다
답변2
나는 audit2allow 도구를 사용하여 tomcat이 이 /tmp/app 폴더에 대해 여러 권한(읽기, 실행)을 갖도록 허용합니다.
cat /var/log/audit/audit.log | audit2allow -a