使用安全管理器啟動 Tomcat - CentOS
我以前看過這個主題,並且給出的解決方案有效。
但是,它不適合我的需要,因為它通過設置這個 catalina.policy 授予對每個目錄的讀取訪問權限:
grant { permission java.security.AllPermission; };
所以,我的問題是:有一些方法可以辨識正在請求的文件或資源,但當我取消此授權時被拒絕?
這是可能有幫助的日誌,當給定的 Grant 被刪除時會出現:
java.security.AccessControlException:在 java.security.AccessControlContext.checkPermission(AccessControlContext.java:323) 在 java.security.AccessController.checkPermission(AccessController.java:546) 的訪問被拒絕 (java.security.SecurityPermission getProperty.package.definition)在 java.lang.SecurityManager.checkPermission(SecurityManager.java:532) 在 java.security.Security.getProperty(Security.java:725) 在 org.apache.catalina.security.SecurityConfig.setSecurityProperty(SecurityConfig.java:117) 在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) 在 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) 在 sun。 reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27) 在 java.lang.reflect.Constructor.newInstance(Constructor.java:513) 在 java.lang.Class.newInstance0(Class.java:355) 在 java.lang.Class .newInstance(Class.java:308) 在 org.apache.catalina.startup.Bootstrap.init(Bootstrap.java:225) 在 org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:410)NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39) 在 sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27) 在 java.lang.reflect.Constructor.newInstance(Constructor.java:513) 在 java.lang.Class.newInstance0 (Class.java:355) 在 java.lang.Class.newInstance(Class.java:308) 在 org.apache.catalina.startup.Bootstrap.init(Bootstrap.java:225) 在 org.apache.catalina.startup。 Bootstrap.main(Bootstrap.java:410)NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39) 在 sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27) 在 java.lang.reflect.Constructor.newInstance(Constructor.java:513) 在 java.lang.Class.newInstance0 (Class.java:355) 在 java.lang.Class.newInstance(Class.java: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)308) 在 org.apache.catalina.startup.Bootstrap.init(Bootstrap.java:225) 在 org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:410)
先感謝您!
我找到了這個,這是 Tomcat 文件的一部分,它允許我調試安全管理器的阻止結果。
“export CATALINA_OPTS=-Djava.security.debug=all”選項,當在啟動 Catalina 時呼叫時,列印出 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