我有一个托管Drupal 7网站的CentOS盒子。我试图在其上运行一个名为Tika的Java应用程序,以使用Apache Solr搜索为文件编制索引。

仅在启用SELinux时,我一直遇到问题:

extract using tika: OpenJDK 64-Bit Server VM warning: INFO: os::commit_memory(0x00007f1ed9000000, 2555904, 1) failed; error='Permission denied' (errno=13)
#
# There is insufficient memory for the Java Runtime Environment to continue.
# Native memory allocation (malloc) failed to allocate 2555904 bytes for committing reserved memory.
# An error report file with more information is saved as:
# /tmp/jvm-2356/hs_error.log


如果禁用selinux,则不会发生这种情况。如果我从SSH运行命令,则可以正常工作-但不能在浏览器中运行。这是它正在运行的命令:

java '-Dfile.encoding=UTF8' -cp '/var/www/drupal/sites/all/modules/contrib/apachesolr_attachments/tika' -jar '/var/www/drupal/sites/all/modules/contrib/apachesolr_attachments/tika/tika-app-1.11.jar' -t '/var/www/drupal/sites/all/modules/contrib/apachesolr_attachments/tests/test-tika.pdf'


这是来自SELinux的日志,位于/var/log/audit/audit.log:

type=AVC msg=audit(1454636072.494:3351): avc:  denied  { execmem } for  pid=11285 comm="java" scontext=unconfined_u:system_r:httpd_t:s0 tcontext=unconfined_u:system_r:httpd_t:s0 tclass=process
type=SYSCALL msg=audit(1454636072.494:3351): arch=c000003e syscall=9 success=no exit=-13 a0=7fdfe5000000 a1=270000 a2=7 a3=32 items=0 ppid=2377 pid=11285 auid=506 uid=48 gid=48 euid=48 suid=48 fsuid=48 egid=48 sgid=48 fsgid=48 tty=(none) ses=1 comm="java" exe="/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.95.x86_64/jre/bin/java" subj=unconfined_u:system_r:httpd_t:s0 key=(null)


有启用SELinux的方法可以运行此方法吗?我不知道Tika的策略名称(或者我应该使用Java?),所以我不确定从这里去哪里...

最佳答案

这对我有用...
我在/var/apache-tika/tika-app-1.14.jar中有tika

setsebool -P httpd_execmem 1
chcon -t httpd_exec_t /var/apache-tika/tika-app-1.14.jar


使用sealert工具(https://wiki.centos.org/HowTos/SELinux)帮助跟踪正确的selinux类型。

关于java - SELinux的CentOS Java应用程序错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35211534/

10-13 09:43