1

在 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

(注意双等号)然后只使用指定的策略文件;安全属性文件中指示的所有内容都将被忽略。`

根据 jdk 8 文档

任何帮助深表感谢。

4

1 回答 1

1

在我看来,该政策没有生效。如果您安装了多个 JDK 版本,您确定您已经修改了与您正在运行的同一版本的默认策略吗?我首先授予 AllPermissions 以确保策略生效,然后专注于权限行本身。

于 2019-11-05T19:06:56.063 回答