【发布时间】:2019-10-29 07:13:09
【问题描述】:
在redhat-openjdk:1.8.0中,jvm java.policy和custom.policy文件的java.version对activeprocess生效
我已将 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 中的属性权限条目
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
(注意双等号)然后只使用指定的策略文件;安全属性文件中指示的所有内容都将被忽略。`
非常感谢任何帮助。
【问题讨论】:
-
您找到解决方案了吗?从 Oracle 迁移到 OpenJDK 后,我们遇到了同样的问题,并且策略文件在我们的系统中至关重要。
标签: java java-8 securitymanager java-security-manager redhat-openjdk