Java策略设置不适用于FilePermission

时间:2012-06-27 15:08:02

标签: java java-5 javapolicy

我们的Java策略文件曾经是:

grant {
  permission java.security.AllPermission;
};

我正在努力使我们的应用程序更安全,而不仅仅是向所有人提供所有内容。除非我在处理文件许可方面遇到麻烦,否则我工作得很好。

我目前得到的错误是:

java.security.AccessControlException: access denied (java.io.FilePermission \\server.log write)

我尝试了很多组合,例如:

permission java.io.FilePermission "\\\\server.log", "write";
permission java.io.FilePermission "C:\\Temp\\logs\\server.log", "write";
permission java.io.FilePermission "\\server.log", "write";
permission java.io.FilePermission "${TEMP}${/}-", "write";
permission java.io.FilePermission "*", "read,write";

我唯一能让它发挥作用的是:

grant {
  permission java.security.AllPermission;
};

我在使用时收到错误“java.io.FileNotFoundException:\ server.log(文件名,目录名称或卷标语法不正确)”(即使文件确实存在):

permission java.io.FilePermission "<<ALL FILES>>", "write";

只是想知道是否有人有任何其他想法尝试。我真的不想让所有人只是为了获得正确的文件权限,显然我错过了一些东西。

修改

我刚刚意识到这可能是日志文件中的线索:

log4j:ERROR setFile(null,false) call failed.

也许我需要一些具体的权限?现在就在Google周围挖掘......

3 个答案:

答案 0 :(得分:1)

在Oracle文档中有一些例子: https://docs.oracle.com/javase/8/docs/technotes/guides/security/spec/security-spec.doc3.html

permission java.io.FilePermission "myfile", "read,write";
permission java.io.FilePermission "/home/gong/", "read";
permission java.io.FilePermission "/tmp/mytmp", "read,delete";
permission java.io.FilePermission "/bin/*", "execute";
permission java.io.FilePermission "*", "read";
permission java.io.FilePermission "/-", "read,execute";
permission java.io.FilePermission "-", "read,execute";
permission java.io.FilePermission "<<ALL FILES>>", "read";

permission java.io.FilePermission "c:\\temp\\foo", "read,write,delete")
\\this one works for me

答案 1 :(得分:1)

我认为问题是因为您试图在未经许可的情况下写入文件。

permission java.io.FilePermission "C:\\folder\\*", "read, write";

答案 2 :(得分:0)

您是否尝试过permission java.io.FilePermission "file:${/}server.log", "read,write"