簡體   English   中英

帶有“#”字符的 catalina.policy 文件權限

[英]catalina.policy file permission with '#' character

我正在將一個名為foo#bar.war的戰爭文件部署到 tomcat 8.5(一旦部署就會創建一個上下文路徑 /foo/bar),我需要在戰爭中的 jar 中設置權限。 部署后,將在 webapps 下創建以下文件夾: foo#bar並且我嘗試在 catalina.policy 中設置權限,如下所示

grant codeBase "file:${catalina.base}${/}webapps${/}foo#bar${/}WEB-INF${/}lib${/}myjar.jar" {
         permission .......
};

但是它不起作用,我在調試時看到的是它正在編碼 # 字符並且無法在文件系統中找到文件夾。 我試過 escaping # 但沒有用。

也試過不解包戰爭並設置權限

grant codeBase "file:${/}foo#bar.war!${/}WEB-INF${/}lib${/}myjar.jar" {
         permission .......
};

但與 # 有同樣的問題

有沒有辦法逃脫 # 字符?

file:是 URL。 因此#可以編碼為%23

我也會使用簡單的 '/' 而不是${/}

例如,對於當前的 Tomcat 9.0.x 和 Java 11,我可以使用默認的 Manager web 應用程序執行以下操作:

  1. webapps/manager重命名為webapps/a#manager

  2. 通過替換編輯conf/catalina.policy

     grant codeBase "file:${catalina.base}/webapps/manager/-" {... permission org.apache.catalina.security.DeployXmlPermission "manager";

    grant codeBase "file:${catalina.base}/webapps/a%23manager/-" {... permission org.apache.catalina.security.DeployXmlPermission "a#manager";
  3. 啟動 Apache Tomcat 並啟用安全管理器( catalina start -security

  4. 訪問http://localhost:8080/a/manager/html

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM