首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SELinux块tomcat应用程序从/tmp文件夹加载Java本机库(JNI)

问SELinux块tomcat应用程序从/tmp文件夹加载Java本机库(JNI)
EN

Unix & Linux用户
提问于 2018-07-03 15:08:28
回答 1查看 2.8K关注 0票数 0

我有一个Centos 7安装了Tomcat和tomcat用户

代码语言:javascript
复制
ls -l /var/lib/tomcat
total 0
drwxrwxrwx. 5 root tomcat 84 Jul  3 13:18 webapps

SELinux正在强制执行,而一个Java应用程序试图从/tmp/文件夹中的共享对象文件.so加载Java原生库(JNI)无法工作。

代码语言:javascript
复制
 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应用程序中加载这些文件就没有问题。此文件的权限为:

代码语言:javascript
复制
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,但是它仍然有相同的错误。

代码语言:javascript
复制
sudo semanage fcontext -a -t tomcat_tmp_t '/tmp/app_*/(.*)?'
EN

回答 1

Unix & Linux用户

发布于 2018-07-04 07:34:23

我使用audit2allow工具允许tomcat对这个/tmp/app文件夹拥有多个权限(读取、执行)。

https://access.redhat.com/documentation/en-us/red_帽子_企业_linux/6/html/安全性-增强_linux/sect-安全性增强_linux修复_问题-允许_访问_audit2allow

代码语言:javascript
复制
cat /var/log/audit/audit.log  | audit2allow -a
票数 -1
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/453248

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档