我正在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应用程序执行以下操作:
-
将
webapps/manager
重命名为webapps/a#manager
-
通过替换编辑
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";
-
在启用安全管理器(
catalina start -security
(的情况下启动Apache Tomcat -
访问
http://localhost:8080/a/manager/html