glenn       01/02/03 08:41:32

  Added:       catalina/docs tomcat-security-unix.html
  Log:
  Implement SecurityManager
  
  Revision  Changes    Path
  1.1                  jakarta-tomcat-4.0/catalina/docs/tomcat-security-unix.html
  
  Index: tomcat-security-unix.html
  ===================================================================
  <!doctype html public "-//w3c//dtd html 4.0 transitional//en">
  <html>
  <head>
     <title>Tomcat SecurityManager setup with Unix</title>
     <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
     <meta name="GENERATOR" content="Mozilla/4.7 [en] (X11; I; SunOS 5.7 i86pc) 
[Netscape]">
  </head>
  <body text="#000000" bgcolor="#FFFFFF" link="#0000FF" vlink="#FF0000" 
alink="#000088">
  
  <h1>
  Tomcat SecurityManager setup with Unix</h1>
  <ul>
  <li>
  <a href="#config">Configuring Tomcat for use with a SecurityManager</a></li>
  
  <li>
  <a href="#start">Starting Tomcat with a SecurityManager</a></li>
  
  <li>
  <a href="#trouble">Trouble shooting catalina.policy configuration and Security
  Violations</a></li>
  </ul>
  
  <h3>
  <a NAME="config"></a>Configuring Tomcat for use with a SecurityManager</h3>
  <b>catalina.policy</b>
  <p>The security policies implemented by the Java SecurityManager are configured
  in the <code>catalina.policy</code> file located in the tomcat <code>conf</code> 
directory.&nbsp;
  The <code>catalina.policy</code> file replaces any system <code>java.policy</code> 
file.&nbsp; The
  <code>catalina.policy</code> file can be edited by hand or you can use the 
  <a 
href="http://java.sun.com/products/jdk/1.2/docs/tooldocs/solaris/policytool.html">policytool</a>
  </b>application
  that comes with Java 1.2.
  <p>Entries in the <code>catalina.policy</code> file use the standard 
<code>java.policy</code> file
  format as follows:
  <table BORDER=0 cellpadding=8 width="95%" bgcolor="#eeeeee">
  <tr>
  <td>
  <pre>// Example policy file entry
  
  grant [signedBy &lt;signer> [,codeBase &lt;code source>] {
  &nbsp;&nbsp;&nbsp; permission &lt;class> [&lt;name> [, &lt;action list>]];
  };</pre>
  </td>
  </tr>
  </table>
  The <b>signedBy</b> and <b>codeBase </b>entries are optional when granting
  permissions. Comment lines begin with <code>//</code> and end at a new line.
  <p>The codeBase is in the form of a URL and for a file URL can use the
  ${java.home} and ${catalina.home} properties which are expanded out to the
  directory paths defined for them.
  <p>Default catalina.policy file
  <table BORDER=0 cellpadding=8 width="95%" bgcolor="#eeeeee">
  <tr>
  <td>
  <pre>
  // ========== SYSTEM CODE PERMISSIONS =========================================
  
  
  // These permissions apply to javac
  grant codeBase "file:${java.home}/lib/-" {
    permission java.security.AllPermission;
  };
   
  // These permissions apply to all shared system extensions
  grant codeBase "file:${java.home}/jre/lib/ext/-" {   
    permission java.security.AllPermission;  
  };
   
  
  // ========== CATALINA CODE PERMISSIONS =======================================
  
  
  // These permissions apply to the server startup code, and the servlet API
  // classes that are shared across all class loaders  
  grant codeBase "file:${catalina.home}/bin/bootstrap.jar" {
    permission java.security.AllPermission;      
  };
   
  grant codeBase "file:${catalina.home}/bin/servlet.jar" {
    permission java.security.AllPermission;      
  };
   
  grant codeBase "file:${catalina.home}/bin/naming.jar" {
    permission java.security.AllPermission;      
  };
   
  // These permissions apply to the container's core code, plus any additional
  // libraries installed in the "server" directory     
  grant codeBase "file:${catalina.home}/server/-" {
    permission java.security.AllPermission; 
  };                                              
                                          
   
  // These permissions apply to all extension libraries (including Jasper,
  // if present) installed in the "lib" directory      
  grant codeBase "file:${catalina.home}/lib/-" {       
    permission java.security.AllPermission;
  };
  
  // ========== WEB APPLICATION PERMISSIONS =====================================
                                                 
                                                 
  // These permissions are granted by default to all web applications
  // In addition, a web application will be given a read FilePermission
  // for all files and directories in its document root.
  grant {                                              
    permission java.util.PropertyPermission "java.version", "read";
    permission java.util.PropertyPermission "java.vendor", "read";
    permission java.util.PropertyPermission "java.vendor.url", "read";
    permission java.util.PropertyPermission "java.class.version", "read";
    permission java.util.PropertyPermission "os.name", "read";
    permission java.util.PropertyPermission "os.version", "read";
    permission java.util.PropertyPermission "os.arch", "read";
    permission java.util.PropertyPermission "file.separator", "read";
    permission java.util.PropertyPermission "path.separator", "read";
    permission java.util.PropertyPermission "line.separator", "read";
                                                 
    permission java.util.PropertyPermission "java.specification.version", "read";
    permission java.util.PropertyPermission "java.specification.vendor", "read";
    permission java.util.PropertyPermission "java.specification.name", "read";
                                                 
    permission java.util.PropertyPermission "java.vm.specification.version", "read";
    permission java.util.PropertyPermission "java.vm.specification.vendor", "read";
    permission java.util.PropertyPermission "java.vm.specification.name", "read";
    permission java.util.PropertyPermission "java.vm.version", "read";
    permission java.util.PropertyPermission "java.vm.vendor", "read";
    permission java.util.PropertyPermission "java.vm.name", "read";
    permission java.io.FilePermission "jndi:/WEB-INF/-", "read";
  };                                                   
   
  // You can assign additional permissions to particular web applications by
  // adding additional "grant" entries here, based on the code base for that
  // application.  For instance, assume that the standard "examples" application
  // included a JDBC driver that needed to establish a network connection to the
  // corresponding database.  You might create a "grant" entry like this:
  //                                                   
  // grant codeBase "file:${catalina.home}/webapps/examples/WEB-INF/-" {
  //   permission java.net.SocketPermission "dbhost.mycompany.com:5432", "connect";
  // }
  </pre>
  </td>
  </tr>
  </table>
  
  <h3>
  <a NAME="start"></a>Starting Tomcat with a SecurityManager</h3>
  Once you have configured the catalina.policy file for use
  with a SecurityManager, Tomcat can be started with the SecurityManager
  in place by using the "-security" option to bin/startup.sh.
  <br>&nbsp;
  <h2>
  <a NAME="trouble"></a>Trouble shooting catalina.policy configuration and
  Security Violations</h2>
  You can turn on Java SecurityManager debug logging by settting the
  environmental variable <code>CATALINA_OPTS=-Djava.security.debug=all</code>.
  You will find the debug output in the log file <code>logs/catalina.out</code>.
  </body>
  </html>
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, email: [EMAIL PROTECTED]

Reply via email to