java.lang.UnsatisfiedLinkError: ... libocijdbc12.so: libclntsh.so.12.1: cannot enable executable stack as shared object requires: Permission denied

java.lang.UnsatisfiedLinkError: ... libocijdbc12.so: libclntsh.so.12.1: cannot enable executable stack as shared object requires: Permission denied

在服务器上更新Tomcat后

Updated     tomcat-7.0.69-11.el7_3.noarch                              @rhel-7-server-rpms
Update             7.0.76-3.el7_4.noarch                               @rhel-7-server-rpms
Updated     tomcat-admin-webapps-7.0.69-11.el7_3.noarch                @rhel-7-server-rpms
Update                           7.0.76-3.el7_4.noarch                 @rhel-7-server-rpms
Updated     tomcat-el-2.2-api-7.0.69-11.el7_3.noarch                   @rhel-7-server-rpms
Update                        7.0.76-3.el7_4.noarch                    @rhel-7-server-rpms
Updated     tomcat-jsp-2.2-api-7.0.69-11.el7_3.noarch                  @rhel-7-server-rpms
Update                         7.0.76-3.el7_4.noarch                   @rhel-7-server-rpms
Updated     tomcat-lib-7.0.69-11.el7_3.noarch                          @rhel-7-server-rpms
Update                 7.0.76-3.el7_4.noarch                           @rhel-7-server-rpms
Updated     tomcat-servlet-3.0-api-7.0.69-11.el7_3.noarch              @rhel-7-server-rpms
Update                             7.0.76-3.el7_4.noarch               @rhel-7-server-rpms

我收到错误:java.lang.UnsatisfiedLinkError: /usr/lib/oracle/12.1/client64/lib/libocijdbc12.so: libclntsh.so.12.1: cannot enable executable stack as共享对象要求:权限被拒绝

/usr/lib/oracle/12.1/client64/lib/中的文件是可读的(不需要执行权限)。

服务器在此更新之前没有任何问题(LD_LIBRARY_PATH, TNS_ADMIN、ORACLE_HOME已设置)。

一个独立的 java 应用程序使用相同的 Oracle 客户端工作正常,所以问题应该在 Tomcat 但我不知道要检查什么。

有没有人对要查找的内容有一些提示?

[edit:] 禁用 Selinux 一切正常。我必须在 Selinux 中设置什么设置才能解决此问题?

提前致谢。

我猜。打开 'httpd_execmem' 和 'httpd_can_network_connect_db' 但你必须检查其他条目的用途 httpd*.

看来我的问题是 Oracle Instant client 12.1。 重新安装 12.1 并没有解决问题,但卸载 12.1 客户端并安装 Instant 客户端 12.2 确实解决了我的问题,而无需更改 SELinux 中的任何内容。

希望这对其他人有所帮助。

此致!