Песочница Java java.io.FilePermission ошибка - PullRequest
0 голосов
/ 18 марта 2011

Я пытаюсь запустить 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";
};

Теперь, если я выполняю file.isDirectory из аргумента командной строки args [], и если этот каталог в методе 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 - это файл выше.

Что я делаю не так?

Спасибо

[Edit] Обошел его, заменив код на accesscontrollers и прекрасно работает в песочнице. Тем не менее, все еще любопытно, почему это не работает.

[Edit2] Просто чтобы прояснить, да, это два =, использовать только разрешения внутри файла.

...