我试图找出,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
的读访问权限)?< / p>
我可以确定上述设置,当前应用程序的没有代码片段将获得更高的访问权限,即进入用户的主目录本身(甚至是更高..)?
答案 0 :(得分:0)
为类提供适用权限的完整设置。订单在这里没有多大意义。
答案 1 :(得分:0)
您可以通过提供以下JVM参数来打印出应用策略的顺序(有时会增加):
-Djava.security.manager -Djava.security.debug = all
我会发布一个示例输出,但事实证明控制台输出非常非常长。
直接回答你关于评估顺序的问题,我认为它是实现定义的,因为我从未能找到有关系统细节的权威文档。
至于保证无法访问用户主目录,如果没有看到所有加载的策略文件(包括与JRE安装捆绑的策略文件,以及user.home中的那个),就不可能说如果他们存在)。