The use of the uppercase X in chmod
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:
- 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.
- 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.
December 5th, 2005 at 6:43 pm
It is not listed in any manual, because it is kind of unofficial. But it seems to work in every place I tried.
December 7th, 2005 at 11:24 am
I was not aware that it’s considered as an unofficial feature. At least, in Fedora it is clearly mentioned in the
chmodman page. However, the use offind ... | xargs chmod ...is very convenient sometimes.