|
- <!--
- Licensed to the Apache Software Foundation (ASF) under one or more
- contributor license agreements. See the NOTICE file distributed with
- this work for additional information regarding copyright ownership.
- The ASF licenses this file to You under the Apache License, Version 2.0
- (the "License"); you may not use this file except in compliance with
- the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
- -->
- <html>
-
- <head>
- <meta http-equiv="Content-Language" content="en-us">
- <link rel="stylesheet" type="text/css" href="../stylesheets/style.css">
- <title>Chmod Task</title>
- </head>
-
- <body>
-
- <h2 id="chmod">Chmod</h2>
- <h3>Description</h3>
- <p>Changes the permissions of a file or all files inside specified
- directories. Right now it has effect only under Unix or NonStop Kernel (Tandem).
- The permissions are also UNIX style, like the argument for the chmod command.</p>
- <p>See the section on <a href="../dirtasks.html#directorybasedtasks">directory based
- tasks</a>, on how the inclusion/exclusion of files works, and how to
- write patterns.</p>
-
- <p>This task holds an implicit <a
- href="../Types/fileset.html">FileSet</a> and supports all of
- FileSet's attributes and nested elements directly. More sets can be
- specified using nested <code><fileset></code> or
- <code><dirset></code> (<em>since Apache Ant 1.6</em>) elements.</p>
-
- <p>Starting with Ant 1.6, this task also supports nested <a
- href="../Types/filelist.html">filelist</a>s.</p>
-
- <p>Starting with Ant 1.7, this task supports arbitrary <a
- href="../Types/resources.html#collection">Resource Collection</a>s
- as nested elements.</p>
-
- <p>By default this task will use a single invocation of the underlying
- chmod command. If you are working on a large number of files this may
- result in a command line that is too long for your operating system.
- If you encounter such problems, you should set the maxparallel
- attribute of this task to a non-zero value. The number to use highly
- depends on the length of your file names (the depth of your directory
- tree) and your operating system, so you'll have to experiment a
- little. POSIX recommends command line length limits of at least 4096
- characters, this may give you an approximation for the number you
- could use as initial value for these experiments.</p>
-
- <p>By default this task won't do anything unless it detects it is
- running on a Unix system. If you know for sure that you have a
- "chmod" executable on your PATH that is command line compatible with
- the Unix command, you can use the task's os attribute and set its
- value to your current os.</p>
-
- <p>See the <a href="setpermissions.html">setpermissions</a> task for a
- platform independent alternative.</p>
-
- <h3>Parameters</h3>
- <table>
- <tr>
- <td valign="top"><b>Attribute</b></td>
- <td valign="top"><b>Description</b></td>
- <td valign="top" align="center"><b>Required</b></td>
- </tr>
- <tr>
- <td valign="top">file</td>
- <td valign="top">the file or single directory of which the permissions
- must be changed.</td>
- <td valign="top" align="center" rowspan="2">exactly one of the two or nested <code><fileset/list></code> elements.</td>
- </tr>
- <tr>
- <td valign="top">dir</td>
- <td valign="top">the directory which holds the files whose permissions
- must be changed.<br/>
- <b>Note:</b> for backwards compatibility
- reasons <code><chmod dir="some-dir"/></code> will
- only change the permissions on "some-dir" but not recurse into
- it, unless you also specify any patterns.</td>
- </tr>
- <tr>
- <td valign="top">perm</td>
- <td valign="top">the new permissions.</td>
- <td valign="top" align="center">Yes</td>
- </tr>
- <tr>
- <td valign="top">includes</td>
- <td valign="top">comma- or space-separated list of patterns of files that must be
- included.</td>
- <td valign="top" align="center">No</td>
- </tr>
- <tr>
- <td valign="top">excludes</td>
- <td valign="top">comma- or space-separated list of patterns of files that must be
- excluded. No files (except default excludes) are excluded when omitted.</td>
- <td valign="top" align="center">No</td>
- </tr>
- <tr>
- <td valign="top">defaultexcludes</td>
- <td valign="top">indicates whether default excludes should be used or not
- ("yes"/"no"). Default excludes are used when omitted.</td>
- <td valign="top" align="center">No</td>
- </tr>
- <tr>
- <td valign="top">parallel</td>
- <td valign="top">process all specified files using a single
- <code>chmod</code> command. Defaults to true.</td>
- <td valign="top" align="center">No</td>
- </tr>
- <tr>
- <td valign="top">type</td>
- <td valign="top">One of <i>file</i>, <i>dir</i> or
- <i>both</i>. If set to <i>file</i>, only the permissions of
- plain files are going to be changed. If set to <i>dir</i>, only
- the directories are considered.<br>
- <strong>Note:</strong> The type attribute does not apply to
- nested <i>dirset</i>s - <i>dirset</i>s always implicitly
- assume type to be <i>dir</i>.</td>
- <td align="center" valign="top">No, default is <i>file</i></td>
- </tr>
- <tr>
- <td valign="top">maxparallel</td>
- <td valign="top">Limit the amount of parallelism by passing at
- most this many sourcefiles at once. Set it to <= 0 for
- unlimited. Defaults to unlimited. <em>Since Ant 1.6.</em></td>
- <td align="center" valign="top">No</td>
- </tr>
- <tr>
- <td valign="top">verbose</td>
- <td valign="top">Whether to print a summary after execution or not.
- Defaults to <code>false</code>. <em>Since Ant 1.6.</em></td>
- <td align="center" valign="top">No</td>
- </tr>
- <tr>
- <td valign="top">os</td>
- <td valign="top">list of Operating Systems on which the command may be
- executed.</td>
- <td align="center" valign="top">No</td>
- </tr>
- <tr>
- <td valign="top">osfamily</td>
- <td valign="top">OS family as used in
- the <a href="conditions.html#os"><os></a> condition.</td>
- <td align="center" valign="top">No - defaults to "unix"</td>
- </tr>
- </table>
- <h3>Examples</h3>
- <blockquote><pre>
- <chmod file="${dist}/start.sh" perm="ugo+rx"/>
- </pre></blockquote>
- <p>makes the "start.sh" file readable and executable for anyone on a
- UNIX system.</p>
- <blockquote><pre>
- <chmod file="${dist}/start.sh" perm="700"/>
- </pre></blockquote>
- <p>makes the "start.sh" file readable, writable and executable only for the owner on a
- UNIX system.</p>
- <blockquote>
- <pre>
- <chmod dir="${dist}/bin" perm="ugo+rx"
- includes="**/*.sh"/>
- </pre>
- </blockquote>
- <p>makes all ".sh" files below <code>${dist}/bin</code>
- readable and executable for anyone on a UNIX system.</p>
- <blockquote>
- <pre>
- <chmod perm="g+w">
- <fileset dir="shared/sources1">
- <exclude name="**/trial/**"/>
- </fileset>
- <fileset refid="other.shared.sources"/>
- </chmod>
- </pre>
- </blockquote>
- <p>makes all files below <code>shared/sources1</code> (except those
- below any directory named trial) writable for members of the same
- group on a UNIX system. In addition all files belonging to a FileSet
- with <code>id</code> <code>other.shared.sources</code> get the same
- permissions.</p>
-
- <blockquote>
- <pre>
- <chmod perm="go-rwx" type="file">
- <fileset dir="/web">
- <include name="**/*.cgi"/>
- <include name="**/*.old"/>
- </fileset>
- <dirset dir="/web">
- <include name="**/private_*"/>
- </dirset>
- </chmod>
- </pre>
- </blockquote>
-
- <p>keeps non-owners from touching cgi scripts, files with a <code>.old</code>
- extension or directories beginning with <code>private_</code>. A directory
- ending in <code>.old</code> or a file beginning with private_ would remain
- unaffected.</p>
-
-
- <h3>Note on maxparallel attribute</h3>
- <p>
- Some shells have a limit of the number of characters that
- a command line may contain.
- This maximum limit varies from shell to shell and from operating
- system to operating system.
- If one has a large number of files to change mode on, consider
- using the <em>maxparallel</em> attribute. For example
- when using AIX and the limit is reached, the system responds
- with a warning: "Warning:
- UNIXProcess.forkAndExec native error: The parameter or environment lists
- are too long". A value of about 300 seems to result in a
- command line that is acceptable.
- </p>
- </body>
- </html>
|