【问题标题】:java.lang.UnsatisfiedLinkError: ... libocijdbc12.so: libclntsh.so.12.1: cannot enable executable stack as shared object requires: Permission deniedjava.lang.UnsatisfiedLinkError: ... libocijdbc12.so: libclntsh.so.12.1: cannot enable executable stack as shared object requires: Permission denied
【发布时间】:2017-11-23 11:47:37
【问题描述】:

在服务器上更新 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 shared object requires: Permission拒绝

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

在此更新之前,服务器正常运行(LD_LIBRARY_PATH, TNS_ADMIN、ORACLE_HOME 已设置)。

一个独立的 Java 应用程序使用相同的 Oracle 客户端运行良好,所以问题应该出在 Tomcat 中,但我不知道要检查什么。

有人对寻找什么有一些提示吗?

[编辑:] 禁用 Selinux 一切正常。我必须在 Selinux 中设置哪些设置才能解决此问题?

提前致谢。

【问题讨论】:

  • 检查man execstack。以及为什么不需要执行权限?
  • 问题出在 SELinux 中。禁用 SELinux 后一切正常。
  • 启用 sellinux 并添加结果。 sestatus -b.
  • 结果如下:drive.google.com/open?id=16Pe9NUhBedMr5inWbDi2bCxE-7MhfgJf(作为评论传递太长)。 “当前模式:许可”正在工作,但我必须解决问题并将其设置回强制执行

标签: oracle tomcat unsatisfiedlinkerror


【解决方案1】:

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

【讨论】:

  • 打开“httpd_execmem”和“httpd_can_network_connect_db”没有帮助。
【解决方案2】:

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

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

问候!

【讨论】:

    猜你喜欢
    • 2018-01-02
    • 2018-05-22
    • 1970-01-01
    • 2021-05-16
    • 1970-01-01
    • 2011-04-09
    • 2020-04-03
    • 1970-01-01
    • 2011-08-30
    相关资源
    最近更新 更多