使用安全管理器加载log4j2需要哪些java权限?

时间:2017-03-20 15:21:52

标签: java security policy securitymanager

我有以下政策文件:

grant codeBase "file:./Cookie.jar",
Principal javax.security.auth.kerberos.KerberosPrincipal 
    "MyUsr@domain.com" 
Principal javax.security.auth.kerberos.KerberosPrincipal 
    "OtherUsr@domain.com" {
permission java.util.PropertyPermission "java.vm.*", "read,write";
permission java.util.PropertyPermission "java.home", "read";
permission java.util.PropertyPermission "user.home", "read";
permission java.io.FilePermission "foo.txt", "read";
};


grant {
    permission java.util.PropertyPermission "*","read,write";
    permission javax.security.auth.AuthPermission "createLoginContext.Cookie";
    permission java.security."*";

};

每当我执行:java -jar Cookie.jar时,我的程序按预期工作,我在加载log4j时没有问题。

但是,当我执行以下操作以启用安全管理器时(使用上述策略文件):

java -Djava.security.manager -Djava.security.policy==java.policy -jar Cookie.jar -Djava.security.auth.login.config=auth.conf

我最终得到了这个错误:

  

StatusLogger Log4j2找不到日志记录实现。请加上lo   g4j-core到类路径。使用SimpleLogger登录控制台...

如果我没有在类路径上使用log4j,那么我会得到同样的错误,但是,log4j在类路径上。

我确定该问题是由安全经理引起的。我只能假设我需要为我的策略文件添加一定的权限才能正确加载Log4j2库,但我无法弄清楚我需要添加哪些权限。

有人可以告诉我我在这里失踪了什么,并解释为什么会这样吗?谢谢!

编辑:Dang,我以某种方式解决了这个问题,但不记得究竟是怎么回事。如果我记得的话,我会在这里更新。

0 个答案:

没有答案