Java Sandbox java.io.FilePermission错误

时间:2011-03-17 22:36:00

标签: java sandbox policy securitymanager

我正在尝试在沙箱中运行java应用程序(分布式文件系统),这是策略文件:

keystore "/home/me/.keystore", "jks";

grant signedBy "me1", codeBase "file:file.jar" { 


permission java.net.SocketPermission "*:1700-", "accept, connect, listen, resolve", signedBy "me1";



 permission java.io.FilePermission "/home/me/te/-", "read,write,delete,execute", signedBy "me1";
};

现在,如果我从命令行args []中的参数执行file.isDirectory,并且如果isDirectory()方法中的该目录是home / me / te,则会出现以下错误:

Exception in thread "main" java.security.AccessControlException: access denied (java.io.FilePermission /home/me/te read)
at java.security.AccessControlContext.checkPermission(AccessControlContext.java:342)
at java.security.AccessController.checkPermission(AccessController.java:553)
at java.lang.SecurityManager.checkPermission(SecurityManager.java:549)
at java.lang.SecurityManager.checkRead(SecurityManager.java:888)
at java.io.File.isDirectory(File.java:769)
at SecureBoxServer.Main.main(Main.java:31)

这是我正在运行的命令:

java -Djava.security.manager -Djava.security.policy==si.pol -jar file.jar 1700 /home/me/te

(1700只是连接的端口号)。 si.pol是上面的文件。

我做错了什么?

由于

[编辑]通过使用accesscontrollers替换代码来解决这个问题,并且在沙盒中正常工作。但仍然好奇为什么它不起作用。

[Edit2]只是为了说清楚,是的,它是两个=,只使用文件中的权限。

0 个答案:

没有答案