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 に答える