Как настроить Java SecurityManager, чтобы разрешить чтение всех свойств из данного файла

В настоящее время я пытаюсь создать файл политики для менеджера репозитория Nexus, работающего на Tomcat.

Nexus пытается прочитать файл WEB-INF/plexus.properties (для которого я уже дал разрешение) и, кажется, пытается прочитать все свойства оттуда, что не удается, потому что отсутствует следующее разрешение:

java.security.PropertyPermission * read,write

Как настроить SecurityManager, чтобы разрешить чтение всех свойств из этого конкретного файла? Если я добавлю это в файл политики:

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

Я даю разрешение на чтение и изменение всех свойств, даже свойств системы, не так ли?


person Community    schedule 14.08.2009    source источник


Ответы (3)


  1. java.security.PropertyPermission нет, вы наверное имели ввиду java.util.PropertyPermission
  2. Насколько я понимаю, java.util.PropertyPermission не имеет ничего общего с чтением свойств из пользовательских .property-файлов. Проверяется только системные свойства (т.е. System.getProperty() и System.setProperty().

Какие ошибки вы получаете, которые заставляют вас думать, что вам нужно что-то еще, кроме разрешения на чтение файла?

person Joachim Sauer    schedule 14.08.2009
comment
Класса нет, но в SecurityManager используется String java.security.PropertyPermission. - person Aaron Digulla; 14.08.2009
comment
@Aaron: это то, о чем я подумал в первую очередь, но я не нашел никакой документации, в которой упоминается java.security.PropertyPermission. Можете ли вы указать мне на такую ​​​​документацию? Желательно самим Солнцем. - person Joachim Sauer; 14.08.2009

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";
  };

Иоахим Зауэр прав -> Проверяется только системные свойства.

Я думаю, вы должны использовать java.io.FilePermission как perm_class_name. JavaDoc для этого класса объяснит вам его параметры (да, это класс Java!!)

BR

person kiki    schedule 25.11.2011

Вместо «*» укажите имя файлов свойств.

person Aaron Digulla    schedule 14.08.2009