Linux: Set permission only to directories

后端 未结 6 1834
盖世英雄少女心
盖世英雄少女心 2021-01-30 07:07

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

相关标签:
6条回答
  • 2021-01-30 07:41

    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.

    0 讨论(0)
  • 2021-01-30 07:43

    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
    
    0 讨论(0)
  • 2021-01-30 07:56

    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.

    0 讨论(0)
  • 2021-01-30 08:01

    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 {} +
    
    0 讨论(0)
  • 2021-01-30 08:01

    try:

    find htdocs -type d -exec chmod 775 {} +
    
    0 讨论(0)
  • 2021-01-30 08:03

    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

    0 讨论(0)
提交回复
热议问题