带有安全管理器的Tomcat启动-CentOS


0

我之前已经看过这个主题,并且给出的解决方案有效。

但是,它不符合我的需要,因为它通过设置以下catalina.policy来授予对每个目录的读取访问权限:

grant {
permission java.security.AllPermission;
};

因此,我的问题是:有一种方法可以识别正在请求的文件或资源,但是当我取消此授权时被拒绝?

以下日志可能会有所帮助,并在删除给定的Grant时显示:

java.security.AccessControlException:访问被拒绝(java.security.SecurityPermission getProperty.package.definition)在java.security.AccessControlContext.checkPermission(AccessControlContext.java:323)在java.security.AccessController.checkPermission(AccessController.java:546)在org.apache.catalina.security.SecurityConfig.setSecurityProperty(SecurityConfig.java:117)在java.security.Security.getProperty(Security.java:725)在java.lang.SecurityManager.checkPermission(SecurityManager.java:532)在位于org.apache.catalina.startup.Embedded.setSecurityProtection(Embedded.java:990)的org.apache.catalina.security.SecurityConfig.setPackageDefinition(SecurityConfig.java:106)在org.apache.catalina.startup.Embedded。(Embedded .java:130),位于org.apache.catalina.startup.Embedded(Embedded.java:115)在org.apache.catalina.startup.Catalina。(Catalina.java:58)在sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)在sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)在java.lang.Class.newInstance0(Class.java:355)在java.lang.reflect.Constructor.newInstance(Constructor.java:513)在java.lang.Class.newInstance0(Class.java:355)上reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27) org.apache.catalina.startup.Bootstrap.init(Bootstrap.java:225)的.newInstance(Class.java:308)org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:410)的.newInstance(Class.java:308)java.lang.Class.newInstance0上java.lang.reflect.Constructor.newInstance(Constructor.java:513)上的sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)上的NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39) (Class.java:355)在org.apache.catalina.startup.Bootstrap.init(Bootstrap.java:225)在java.lang.Class.newInstance(Class.java:308)在org.apache.catalina.startup。 Bootstrap.main(Bootstrap.java:410)java.lang.Class.newInstance0上java.lang.reflect.Constructor.newInstance(Constructor.java:513)上的sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)上的NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39) (Class.java:355)在org.apache.catalina.startup.Bootstrap.init(Bootstrap.java:225)在java.lang.Class.newInstance(Class.java:308)在org.apache.catalina.startup Bootstrap.main(Bootstrap.java:410)308),位于org.apache.catalina.startup.Bootstrap.init(Bootstrap.java:225),位于org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:410)308),位于org.apache.catalina.startup.Bootstrap.init(Bootstrap.java:225),位于org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:410)

先感谢您!

Answers:


0

我发现是Tomcat文档的一部分,它使我能够调试Security Manager的阻止结果。

在启动Catalina时调用“ export CATALINA_OPTS = -Djava.security.debug = all”选项时,打印出Tomcat执行的每一次访问尝试以及该尝试的结果。

由于系统加载了一堆文件,并且此日志方法生成非常大的文件,因此我不希望对其进行日志记录,而是手动启动我的VM,并在屏幕上打印输出。

我在命令行中这样运行JVM:

/usr/local/java/jdk6/bin/java -server 
-Duser.timezone=America/Sao_Paulo -XX:MaxPermSize=128m -Xms30m -Xmx1024m 
-Djava.endorsed.dirs=/var/tomcat/7.0/endorsed 
-classpath :/var/tomcat/7.0/bin/bootstrap.jar 
-Djava.security.manager 
-Djava.security.policy==/var/tomcat/7.0/conf/catalina.policy 
-Dcatalina.base=/var/tomcat/7.0 -Dcatalina.home=/var/tomcat/7.0 
-Djava.security.debug=all
-Djava.io.tmpdir=tmpdir org.apache.catalina.startup.Bootstrap 
-config dir/to/xml.conf start
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.