catalina.policy 带'#'字符的文件权限
catalina.policy file permission with '#' character
我正在将一个名为 foo#bar.war 的 war 文件部署到 tomcat 8.5(它创建了一个上下文路径 /foo/bar 一旦部署),我需要在 war 内的 jar 中设置权限。部署后,将在 webapps 下创建以下文件夹:foo#bar 并且我正在尝试在 catalina.policy 中设置权限,如下所示
grant codeBase "file:${catalina.base}${/}webapps${/}foo#bar${/}WEB-INF${/}lib${/}myjar.jar" {
permission .......
};
但是它不起作用,我在调试时看到它正在编码 # 字符并且无法在文件系统中找到文件夹。我尝试转义 # 但没有成功。
也试过不解压war并设置权限
grant codeBase "file:${/}foo#bar.war!${/}WEB-INF${/}lib${/}myjar.jar" {
permission .......
};
但是 #
遇到了同样的问题
有没有办法转义 # 字符?
file:
是一个 URL。因此 #
可以编码为 %23
.
另外我会使用简单的'/'而不是${/}
。
例如,对于当前的 Tomcat 9.0.x 和 Java 11,我可以使用默认的管理器 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";
启动 Apache Tomcat 并启用安全管理器 (catalina start -security
)
访问http://localhost:8080/a/manager/html
我正在将一个名为 foo#bar.war 的 war 文件部署到 tomcat 8.5(它创建了一个上下文路径 /foo/bar 一旦部署),我需要在 war 内的 jar 中设置权限。部署后,将在 webapps 下创建以下文件夹:foo#bar 并且我正在尝试在 catalina.policy 中设置权限,如下所示
grant codeBase "file:${catalina.base}${/}webapps${/}foo#bar${/}WEB-INF${/}lib${/}myjar.jar" {
permission .......
};
但是它不起作用,我在调试时看到它正在编码 # 字符并且无法在文件系统中找到文件夹。我尝试转义 # 但没有成功。
也试过不解压war并设置权限
grant codeBase "file:${/}foo#bar.war!${/}WEB-INF${/}lib${/}myjar.jar" {
permission .......
};
但是 #
遇到了同样的问题有没有办法转义 # 字符?
file:
是一个 URL。因此 #
可以编码为 %23
.
另外我会使用简单的'/'而不是${/}
。
例如,对于当前的 Tomcat 9.0.x 和 Java 11,我可以使用默认的管理器 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";
启动 Apache Tomcat 并启用安全管理器 (
catalina start -security
)访问
http://localhost:8080/a/manager/html