我必须将apache中htdocs
目录的权限更改为某个组并具有某些读/写/执行权。
目录需要拥有775个权限,文件需要有664个。
如果我对htdocs
执行递归664,那么所有文件和目录都将更改为664。
我不想手动更改目录。
有没有办法只更改文件或目录?
答案 0 :(得分:41)
chmod
实际上可以自己做到这一点; X
符号权限意味着“执行,如果有意义”,这通常意味着在目录而不是文件。所以,你可以使用:
chmod -R u=rwX,go=rX /path/to/htdocs
唯一可能的问题是,如果任何普通文件已经有执行集,chmod
认为它是有意的并保留它。
答案 1 :(得分:21)
使用find的-type
选项限制对文件和目录的操作。使用-o
选项为不同类型指定备用操作,因此您只需运行一次find
,而不是为每种类型单独运行。
find htdocs -type f -exec chmod 664 {} + -o -type d -exec chmod 775 {} +
答案 2 :(得分:4)
使用find
搜索目录并对其应用chmod:
find -type d | xargs chmod 775
对文件使用类型f
:
find -type f | xargs chmod 775
答案 3 :(得分:2)
使用
find -type d exec chmod 775 {} +
或
find -type d exec chmod 755 {} +
更安全。
答案 4 :(得分:1)
尝试:
find htdocs -type d -exec chmod 775 {} +
答案 5 :(得分:1)
我使用类似于戈登提供的解决方案:
chmod -R ug=rw,o=r,a+X /path/to/folder/
它应始终为文件夹设置775,为文件设置664,即使为某些文件预先设置了执行权限
答案 6 :(得分:0)
用于目录或文件
chmod 755 $(find /path/to/base/dir -type d)
chmod 644 $(find /path/to/base/dir -type f)