我们的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周围挖掘......
答案 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"
?