我需要在.policy文件中授予用户完全访问权限
keystore "file:myKeystore.keystore";
grant signedBy "myUser" {
permission java.util.PropertyPermission "*", "read,write";
permission java.io.FilePermission "<<ALL FILES>>", "read";
};
我得到这个错误:
Exception in thread "main" java.security.AccessControlException: access denied ("java.util.PropertyPermission" "user.name" "read")
执行是这样完成的:
$ keytool -genkey -keyalg RSA -alias myTestKey -keystore myKeystore.keystore -validity 360
$ jarsigner -keystore myKeystore.keystore -verbose security-test.jar myTestKey
$ java -Djava.security.manager -Djava.security.policy=./custom-policy.policy -jar security-test.jar testfile.txt
我试图给出完整的路径,但它也不起作用。我还试图删除该用户,看看.策略是否有效,是的,它是:
grant {
permission java.util.PropertyPermission "*", "read,write";
permission java.io.FilePermission "<<ALL FILES>>", "read";
};
您需要为您的定制policy.policy提供使用密钥库的密码。
策略文件的前两行必须如下所示。
keystore "file:PATH_TO_YOUR_KEYSTORE";
keystorePasswordURL "file:PATH_TO_YOUR_KEYSTORE_PASSWORD_FILE";
对于密码文件,你可以这样做:
echo "KEYSTORE_PASSWORD" > KEYSTORE_PASSWORD_FILE
请记住,这不适合生产环境,但也许它可以在您的使用环境中发挥作用。
此外,signedBy指令使用的别名此处必须是myTestKey,而不是myUser。