带有"#"字符的 catalina.policy 文件权限



我正在tomcat 8.5中部署一个名为foo#bar.war的war文件(部署后会创建一个上下文路径/foo/bar(,我需要在war内部的jar中设置权限。部署后,将在webapps下创建以下文件夹:foo#bar,我正在尝试在catalina.policy中设置权限,如下所示

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

然而它不起作用,我在调试时看到的是它正在编码#字符,并且无法在文件系统中找到文件夹。我试图逃离#,但没有成功。

也尝试不打开战争和设置权限

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

但#也出现了同样的问题

有没有办法摆脱#字符?

file:是一个URL。因此CCD_ 2可以被编码为CCD_。

此外,我会使用简单的"/"而不是${/}

例如,使用当前的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. 在启用安全管理器(catalina start -security(的情况下启动Apache Tomcat

  4. 访问http://localhost:8080/a/manager/html

最新更新