Tomcat 使用安全管理器启动 - CentOS
Tomcat startup with security manager - CentOS
我以前见过 this topic,给出的解决方案有效。
但是,它不符合我的需要,因为它授予对每个目录的读取权限,通过设置 catalina.policy:
grant {
permission java.security.AllPermission;
};
所以,我的问题是:有一些方法可以识别正在请求的文件或资源,但在我取消此授权时被拒绝了吗?
下面是可能有用的日志,当给定的授权被删除时会出现:
java.security.AccessControlException: access denied (java.security.SecurityPermission getProperty.package.definition)
at java.security.AccessControlContext.checkPermission(AccessControlContext.java:323)
at java.security.AccessController.checkPermission(AccessController.java:546)
at java.lang.SecurityManager.checkPermission(SecurityManager.java:532)
at java.security.Security.getProperty(Security.java:725)
at org.apache.catalina.security.SecurityConfig.setSecurityProperty(SecurityConfig.java:117)
at org.apache.catalina.security.SecurityConfig.setPackageDefinition(SecurityConfig.java:106)
at org.apache.catalina.startup.Embedded.setSecurityProtection(Embedded.java:990)
at org.apache.catalina.startup.Embedded.(Embedded.java:130)
at org.apache.catalina.startup.Embedded.(Embedded.java:115)
at org.apache.catalina.startup.Catalina.(Catalina.java:58)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
at java.lang.Class.newInstance0(Class.java:355)
at java.lang.Class.newInstance(Class.java:308)
at org.apache.catalina.startup.Bootstrap.init(Bootstrap.java:225)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:410)
提前致谢!
我发现 this,这是 Tomcat 文档的一部分,它允许我调试安全管理器的阻止结果。
启动 Catalina 时调用 "export CATALINA_OPTS=-Djava.security.debug=all" 选项时,打印出 Tomcat 执行的每一次访问尝试,以及此尝试的结果。
由于系统加载了一堆文件,并且这种日志方法会生成非常大的文件,我宁愿不记录它,而是手动启动我的虚拟机,在我的屏幕上打印输出。
我 运行 我的 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
我以前见过 this topic,给出的解决方案有效。
但是,它不符合我的需要,因为它授予对每个目录的读取权限,通过设置 catalina.policy:
grant {
permission java.security.AllPermission;
};
所以,我的问题是:有一些方法可以识别正在请求的文件或资源,但在我取消此授权时被拒绝了吗?
下面是可能有用的日志,当给定的授权被删除时会出现:
java.security.AccessControlException: access denied (java.security.SecurityPermission getProperty.package.definition) at java.security.AccessControlContext.checkPermission(AccessControlContext.java:323) at java.security.AccessController.checkPermission(AccessController.java:546) at java.lang.SecurityManager.checkPermission(SecurityManager.java:532) at java.security.Security.getProperty(Security.java:725) at org.apache.catalina.security.SecurityConfig.setSecurityProperty(SecurityConfig.java:117) at org.apache.catalina.security.SecurityConfig.setPackageDefinition(SecurityConfig.java:106) at org.apache.catalina.startup.Embedded.setSecurityProtection(Embedded.java:990) at org.apache.catalina.startup.Embedded.(Embedded.java:130) at org.apache.catalina.startup.Embedded.(Embedded.java:115) at org.apache.catalina.startup.Catalina.(Catalina.java:58) at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27) at java.lang.reflect.Constructor.newInstance(Constructor.java:513) at java.lang.Class.newInstance0(Class.java:355) at java.lang.Class.newInstance(Class.java:308) at org.apache.catalina.startup.Bootstrap.init(Bootstrap.java:225) at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:410)
提前致谢!
我发现 this,这是 Tomcat 文档的一部分,它允许我调试安全管理器的阻止结果。
启动 Catalina 时调用 "export CATALINA_OPTS=-Djava.security.debug=all" 选项时,打印出 Tomcat 执行的每一次访问尝试,以及此尝试的结果。
由于系统加载了一堆文件,并且这种日志方法会生成非常大的文件,我宁愿不记录它,而是手动启动我的虚拟机,在我的屏幕上打印输出。
我 运行 我的 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