Linux下java无法设置capabilities问题
/usr/bin/java被设置上能力后,普通用户执行会有问题,或是报错退出,或是hang在那里不动。
相关链接:
http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6919633
http://blog.tinola.com/?e=7
我下载了openjdk源码,但还没有来得及研究:
http://download.java.net/openjdk/jdk6/
当程序文件被设置了能力,并且能力起了作用时,内核代码会设置一个标志“AT_SECURE”,有了这个标志glibc的loader(加载器)的行为就会受限。这是第一个问题。
我以前读代码,现在印象里似乎是java会自己exec自己,它准备好参数和环境变量后就会exec自己,hang在那里实际上就是一遍一遍地执行自己,总认为没准备好。:-) 具体哪个文件哪行代码忘了。