如何配置Java SecurityManager以允许从给定文件中读取所有属性

时间:2009-08-14 11:29:10

标签: java security tomcat securitymanager

我目前正在尝试为在Tomcat上运行的Nexus存储库管理器创建策略文件。

Nexus尝试读取文件WEB-INF/plexus.properties(我已经授予了权限),并且似乎尝试从那里读取所有属性,但由于缺少以下权限而失败:

java.security.PropertyPermission * read,write

如何配置SecurityManager以允许读取此特定文件中的所有属性?如果我将其添加到策略文件:

permission java.security.PropertyPermision "*", "read,write"

我将授予读取和更改所有属性的权限,甚至系统属性,不是吗?

3 个答案:

答案 0 :(得分:2)

  1. 没有java.security.PropertyPermission,您可能需要java.util.PropertyPermission
  2. 据我所知,java.util.PropertyPermission与从用户定义的.property文件中读取属性无关。仅检查系统属性(即System.getProperty()System.setProperty()
  3. 您认为哪些错误会让您认为除了读取文件权限之外还需要其他任何内容?

答案 1 :(得分:0)

java.security.PropertyPermission应该是有效的类名。 其限定名称在策​​略文件中用作perm_class_name,如jaas规范中所定义: http://docs.oracle.com/javase/1.4.2/docs/guide/security/PolicyFiles.html#FileSyntax

grant <signer(s) field>, <codeBase URL> 
  <Principal field(s)> {
    permission perm_class_name "target_name", "action";
    ....
    permission perm_class_name "target_name", "action";
  };

Joachim Sauer是对的 - &gt;仅检查系统属性。

我认为你应该使用java.io.FilePermission作为perm_class_name。 这个类的JavaDoc将解释它的参数(是的,这是一个java类!!)

BR

答案 2 :(得分:-1)

而不是“*”,指定属性文件的名称。