Javaのセキュリティ関連の設定を上書きしたい
TL;DR
- Javaのセキュリティ関連の設定が
/etc/java-8-openjdk/security/java.policy
などに有る場合がある - 実行時に
-Djava.security.properties=<URL>
を渡すとマスターファイルから特定のプロパティを上書きできる
Javaのセキュリティ管理の設定ファイルで java.policy
というファイルがある。
特定の値を上書きしたいケースがある。
例えば networkaddress.cache.ttl
や networkaddress.cache.negative.ttl
のキャッシュの設定を上書きしたい
/etc/java-8-openjdk/
下の設定ファイルは debパッケージのインストールなどで上書きされるので、できるだけ /etc/java-8-openjdk/security/java.policy
は編集したくない。
調べたところ、 実行時に-Djava.security.properties=<URL>
で/etc/java-8-openjdk
下の設定ファイルの内容を特定のプロパティのみ上書きできる。
class Main { public static void main(String args[]){ System.out.println(java.security.Security.getProperty("networkaddress.cache.ttl")); System.out.println(java.security.Security.getProperty("networkaddress.cache.negative.ttl")); } }
java.securityはpropertiesファイル形式
networkaddress.cache.ttl = 1 networkaddress.cache.nagative.ttl = 1
javacでコンパイル後、次のように確認できる
$ java Main null 10
java -Djava.security.properties=./java.security Main 1 1