«
»

The use of the uppercase X in chmod

November 8th, 2005 by George Notaras

I am aware that there are numerous guides about file permissions in linux out there. This post is not intended to be another tutorial. I just wanted to emphasize the use of uppercase X when modifying regular file or directory permissions. This info seems to be missing from most of those guides.

I am sure you have already tried, at least once, to set permissions recursively on a directory and all of its contents. I am also sure you have wondered how you could recursively set the executable attribute on the subdirectories, which in this case means "enter", but not on regular files. Well, this is what uppercase X does.

For example, we issue the following chmod command on a directory:

# chmod -R u=rwX,g=rX,o=rX testdir/

Using the uppercase X, the above command sets the executable attribute according to the following two rules:

  1. If the file is a directory, then it sets the executable attribute for the owner, group and world, which means that they can enter this directory.
  2. If the file is a regular file, then it does not add the executable attribute to its permissions, unless it already has it enabled, in which case it retains it.

Using the lowercase x it would be impossible to achieve this result with one command only.

The The use of the uppercase X in chmod by George Notaras, unless otherwise expressly stated, is licensed under a Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License.

Tags: , ,

2 Responses to “The use of the uppercase X in chmod”

  1. prism Says :

    It is not listed in any manual, because it is kind of unofficial. But it seems to work in every place I tried.

  2. Gnot Says :

    I was not aware that it’s considered as an unofficial feature. At least, in Fedora it is clearly mentioned in the chmod man page. However, the use of find ... | xargs chmod ... is very convenient sometimes.

Leave a Reply

XHTML: You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre>