I have to change the permissions of the htdocs
directory in apache to a certain group and with certain read/write/execute.
The directories need to have 775
chmod
can actually do this itself; the X
symbolic permission means "execute, if it makes sense" which generally means on directories but not files. So, you can use:
chmod -R u=rwX,go=rX /path/to/htdocs
The only potential problem is that if any of the plain files already have execute set, chmod
assumes it's intentional and keeps it.
Use find
to search for directories and apply chmod on them:
find -type d | xargs chmod 775
Use type f
for file:
find -type f | xargs chmod 775
Gordon's answer above is correct, but if you're trying to lock down access to a directory tree, it leaves scripts that are executable to the owner also executable to whoever has been granted the capital X.
Using
find <path> -type d -exec chmod 775 {} +
or
find <path> -type d -exec chmod 755 {} +
is safer.
Use find's -type
option to limit actions to files and directories. Use the -o
option to specify alternate actions for different types, so you only have to run find
once, rather than separately for each type.
find htdocs -type f -exec chmod 664 {} + -o -type d -exec chmod 775 {} +
try:
find htdocs -type d -exec chmod 775 {} +
I use something similar to the solution provided by Gordon:
chmod -R ug=rw,o=r,a+X /path/to/folder/
It should always set 775 for folders and 664 for files, even if the execute permission was previosly set for some file