在redhat openjdk:1.8.0中,jvm java.policy和custom.policy文件的java.version在活动进程上是有效的
我已经将java进程配置为使用java安全管理器,它使用Apache服务器来运行该进程。因此,Apache客户端在默认和/或自定义策略文件中查找"java.version"读取权限。
我已经包含了就绪属性权限,但我得到了奇怪的AccessControlException。
我看到的例外情况是:
java.lang.RuntimeException: java.util.concurrent.ExecutionException: java.lang.RuntimeException: java.security.AccessControlException: access denied ("java.util.PropertyPermission" "java.version" "read")
我在jvm/secruity/java.policy 中的Property权限条目中有正确的权限
permission java.util.PropertyPermission "java.version", "read";
在custom.policy(-Djava.security.manager-Djava.security.policy=custom.policy(中,文件路径完全限定,我只是为了更好地理解而缩短了(:
permission java.util.PropertyPermission "java.version", "read";
期望运行java进程时没有问题,但这并没有发生。
编辑1:
我还尝试使用以下行强制执行所有权限:
grant{
permission java.security.AllPermission;
};
但它似乎仍然不起作用。我还在设置策略文件时尝试使用"==",这意味着`如果您使用
java -Djava.security.manager -Djava.security.policy==someURL SomeApp
(注意双等于(则只使用指定的策略文件;安全属性文件中指示的所有内容都将被忽略
根据jdk 8文档
非常感谢您的帮助。
在我看来,该策略没有生效。如果你安装了多个JDK版本,你确定你已经修改了与你运行的同一版本的默认策略吗?我会首先授予AllPermissions,以确保策略有效,然后关注权限行本身。