ams*_*ams 11 linux security administration java setcap
我试图授予 java 可执行文件在 Linux 上打开 1024 以下端口的权利。这是设置
/home/test/java 包含 Oracle Server JRE 7.0.25 这是 getcap 返回的内容
[test@centos6 java]$ pwd
/home/test/java
[test@centos6 java]$ getcap bin/java
bin/java = cap_net_bind_service+ep
[test@centos6 java]$ getcap jre/bin/java
jre/bin/java = cap_net_bind_service+ep
Run Code Online (Sandbox Code Playgroud)
尝试执行 java 会出现以下错误。
[test@centos6 java]$ bin/java
bin/java: error while loading shared libraries: libjli.so: cannot open shared object file: No such file or directory
[test@centos6 java]$ jre/bin/java
jre/bin/java: error while loading shared libraries: libjli.so: cannot open shared object file: No such file or directory
Run Code Online (Sandbox Code Playgroud)
当二进制文件被 setcap 授予提升的权限时,是否可以运行 Java 7_u25,如果可以,如何运行?
JDK-6919633:运行时不支持 POSIX 文件功能(AKA Linux 功能) 说
Note: when using the setcap the libraries needed by the java launcher
should be present in /usr/lib or any other "trusted" location that the
runtime loader (rtld) uses to find shared libraries.
Run Code Online (Sandbox Code Playgroud)
如何使共享库受信任?
slm*_*slm 14
在你问这个问题之前,我什至从未听说过 Unix 中的这个功能(文件功能)。我发现这个链接看起来有关于如何让 ld.so 信任你的共享库的解决方案:
摘自那个帖子
当提高可执行文件的权限时,运行时加载程序 (rtld),更好地称为 ld.so 不会与不受信任路径中的库链接。这就是 ld.so(1) 的设计方式。如果需要运行这样的可执行文件,则必须将该路径添加到 ld.so 的受信任路径中,下面介绍如何执行此操作:
Run Code Online (Sandbox Code Playgroud)Fedora 11: % uname -a Linux localhost.localdomain 2.6.29.4-167.fc11.i686.PAE #1 SMP Wed May 27 17:28:22 EDT 2009 i686 i686 i386 GNU/Linux % sudo setcap cap_net_raw+epi ./jdk1.7.0_04/bin/java % ./jdk1.7.0_04/bin/java -version ./jdk1.7.0_04/bin/java: error while loading shared libraries: libjli.so: cannot open shared object file: No such file or directory它的 kaput,好吧,我们现在在同一页面上,要解决此问题,请创建一个文件,例如 > this,其中包含 libjli.so 的路径
Run Code Online (Sandbox Code Playgroud)% cat /etc/ld.so.conf.d/java.conf /home/someuser/jdk1.7.0_04/jre/lib/i386/jli这会将路径名添加到 ld.so 将使用的受信任用户路径,以构建其运行时缓存,通过执行此操作验证 ld.so 是否看到它,需要以 root 身份运行它,并且可能需要重新启动.
Run Code Online (Sandbox Code Playgroud)% ldconfig | grep libjli libjli.so -> libjli.so .......现在测试java:
Run Code Online (Sandbox Code Playgroud)% ./jdk1.7.0_04/bin/java -version java version "1.7.0_04-ea" Java(TM) SE Runtime Environment (build 1.7.0_04-ea-b18)你有它.....
| 归档时间: |
|
| 查看次数: |
15757 次 |
| 最近记录: |