124
124
but disallow it from using file access to read any other files (unless
125
125
permissions for those files are explicitly granted).</p>
127
<p>Also, Tomcat always dynamically creates the following file permission:</p>
127
<p>Also, Tomcat always dynamically creates the following file permissions:</p>
129
129
permission java.io.FilePermission "** your application context**", "read";
131
<p>Where **your application context** equals the folder(or WAR file) under which
132
your application has been deployed. </p>
131
permission java.io.FilePermission
132
"** application working directory**", "read,write";
133
permission java.io.FilePermission
134
"** application working directory**/-", "read,write,delete";
136
<p>Where **your application context** equals the folder (or WAR file) under which
137
your application has been deployed and **application working directory** is the
138
temporary directory provided to your application as required by the
139
Servlet Specification.</p>
174
181
looks like this:</p>
176
183
// ============================================================================
177
// catalina.corepolicy - Security Policy Permissions for Tomcat 6
184
// catalina.policy - Security Policy Permissions for Tomcat 6
179
186
// This file contains a default set of security policies to be enforced (by the
180
187
// JVM) when Catalina is executed with the "-security" option. In addition
181
188
// to the permissions granted here, the following additional permissions are
182
189
// granted to the codebase specific to each web application:
184
// * Read access to the document root directory
191
// * Read access to its document root directory
192
// * Read, write and delete access to its working directory
186
194
// ============================================================================
222
230
// These permissions apply to the logging API
231
// Note: If tomcat-juli.jar is in ${catalina.base} and not in ${catalina.home},
232
// update this section accordingly.
233
// grant codeBase "file:${catalina.base}/bin/tomcat-juli.jar" {..}
223
234
grant codeBase "file:${catalina.home}/bin/tomcat-juli.jar" {
224
permission java.security.AllPermission;
235
permission java.io.FilePermission
236
"${java.home}${file.separator}lib${file.separator}logging.properties", "read";
238
permission java.io.FilePermission
239
"${catalina.base}${file.separator}conf${file.separator}logging.properties", "read";
240
permission java.io.FilePermission
241
"${catalina.base}${file.separator}logs", "read, write";
242
permission java.io.FilePermission
243
"${catalina.base}${file.separator}logs${file.separator}*", "read, write";
245
permission java.lang.RuntimePermission "shutdownHooks";
246
permission java.lang.RuntimePermission "getClassLoader";
247
permission java.lang.RuntimePermission "setContextClassLoader";
249
permission java.util.logging.LoggingPermission "control";
251
permission java.util.PropertyPermission "java.util.logging.config.class", "read";
252
permission java.util.PropertyPermission "java.util.logging.config.file", "read";
253
permission java.util.PropertyPermission "catalina.base", "read";
255
// Note: To enable per context logging configuration, permit read access to
256
// the appropriate file. Be sure that the logging configuration is
257
// secure before enabling such access.
258
// E.g. for the examples web application:
259
// permission java.io.FilePermission "${catalina.base}${file.separator}
260
// webapps${file.separator}examples${file.separator}WEB-INF
261
// ${file.separator}classes${file.separator}logging.properties", "read";
227
264
// These permissions apply to the server startup code
263
307
permission java.util.PropertyPermission "java.vendor", "read";
264
308
permission java.util.PropertyPermission "java.vendor.url", "read";
265
309
permission java.util.PropertyPermission "java.class.version", "read";
266
permission java.util.PropertyPermission "java.specification.version", "read";
267
permission java.util.PropertyPermission "java.specification.vendor", "read";
268
permission java.util.PropertyPermission "java.specification.name", "read";
310
permission java.util.PropertyPermission "java.specification.version", "read";
311
permission java.util.PropertyPermission "java.specification.vendor", "read";
312
permission java.util.PropertyPermission "java.specification.name", "read";
270
permission java.util.PropertyPermission "java.vm.specification.version", "read";
271
permission java.util.PropertyPermission "java.vm.specification.vendor", "read";
272
permission java.util.PropertyPermission "java.vm.specification.name", "read";
273
permission java.util.PropertyPermission "java.vm.version", "read";
274
permission java.util.PropertyPermission "java.vm.vendor", "read";
275
permission java.util.PropertyPermission "java.vm.name", "read";
314
permission java.util.PropertyPermission "java.vm.specification.version", "read";
315
permission java.util.PropertyPermission "java.vm.specification.vendor", "read";
316
permission java.util.PropertyPermission "java.vm.specification.name", "read";
317
permission java.util.PropertyPermission "java.vm.version", "read";
318
permission java.util.PropertyPermission "java.vm.vendor", "read";
319
permission java.util.PropertyPermission "java.vm.name", "read";
277
321
// Required for OpenJMX
278
322
permission java.lang.RuntimePermission "getAttribute";
280
// Allow read of JAXP compliant XML parser debug
281
permission java.util.PropertyPermission "jaxp.debug", "read";
324
// Allow read of JAXP compliant XML parser debug
325
permission java.util.PropertyPermission "jaxp.debug", "read";
283
// Precompiled JSPs need access to this package.
327
// Precompiled JSPs need access to these packages.
328
permission java.lang.RuntimePermission "accessClassInPackage.org.apache.jasper.el";
284
329
permission java.lang.RuntimePermission "accessClassInPackage.org.apache.jasper.runtime";
285
330
permission java.lang.RuntimePermission "accessClassInPackage.org.apache.jasper.runtime.*";
332
// Precompiled JSPs need access to these system properties.
333
permission java.util.PropertyPermission
334
"org.apache.jasper.runtime.BodyContentImpl.LIMIT_BUFFER", "read";
335
permission java.util.PropertyPermission "org.apache.el.parser.COERCE_TO_ZERO", "read";
339
// The Manager application needs access to the following packages to support the
340
// session display functionality
341
grant codeBase "file:${catalina.base}/webapps/manager/-" {
342
permission java.lang.RuntimePermission "accessClassInPackage.org.apache.catalina";
343
permission java.lang.RuntimePermission "accessClassInPackage.org.apache.catalina.manager";
344
permission java.lang.RuntimePermission "accessClassInPackage.org.apache.catalina.manager.util";
290
347
// You can assign additional permissions to particular web applications by
291
348
// adding additional "grant" entries here, based on the code base for that