0

我试图找出 Java 安全管理器评估 grant { ... } 子句的顺序和程度。例如,如果我想授权一些下载的代码读取/写入用户主目录的特定子目录(.../X/Y/Z),而所有其他代码可以读取(但不能写入)最高 2 级(即子目录.../X和在用户的主目录下面)。

我该如何指定?像下面这样的顺序是正确的吗?

... 
grant codebase http://foo.bar.com/test.jar {
   permission java.io.FilePermission "${user.dir}/X/Y/Z/*", "read,write"; }; 
...
grant {
   permission java.io.FilePermission "${user.dir}/X/-", "read"; };
...

即作为test.jar文件的一部分下载的代码的安全评估是否会在第一个授权子句之后停止(因此授予对目录的读取访问权限.../X/Y)?

并且我可以确定通过上述设置,当前应用程序的任何代码都不会获得更高的访问权限,即进入用户的主目录本身(甚至更高......)?

4

2 回答 2

0

类被赋予一整套适用的权限。订单在这里并没有真正的意义。

于 2013-07-08T15:17:30.570 回答
0

您可以通过提供以下 JVM 参数打印出应用(有时是增强)策略的顺序:

-Djava.security.manager -Djava.security.debug=all

我会发布一个示例输出,但事实证明控制台输出非常非常长。

  • 要直接回答您关于评估顺序的问题,我会假设它是实现定义的,因为我从未能够找到有关系统细节的权威文档。

  • 至于保证不能访问用户主目录,不可能不看到所有加载的策略文件(包括与JRE安装捆绑的文件,如果存在则在user.home中的文件)。

祝你好运!

于 2013-09-24T02:07:57.630 回答