3

我们的 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.

也许我特别需要一些权限?现在在谷歌周围挖掘......

4

2 回答 2

2

在 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
于 2015-05-25T11:03:58.747 回答
2

我认为问题是因为您试图在没有读取权限的情况下写入文件。

permission java.io.FilePermission "C:\\folder\\*", "read, write";
于 2020-05-01T19:11:29.990 回答