SELinuxは、Tomcat Webアプリケーションが/ tmpフォルダからJNI(Java Native Library)をロードするのを防ぎます。

SELinuxは、Tomcat Webアプリケーションが/ tmpフォルダからJNI(Java Native Library)をロードするのを防ぎます。

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 Webアプリケーションは機能しません。

 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 Webアプリケーションからこれらのファイルをロードするのに問題はありません。このファイルの権限は次のとおりです。

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

restoreconfcontextを定義して実行するのを忘れたようです。

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

引用する

答え2

私は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

関連情報