Linux:仅将权限设置为目录

时间:2013-06-13 15:40:42

标签: linux bash directory chmod

我必须将apache中htdocs目录的权限更改为某个组并具有某些读/写/执行权。

目录需要拥有775个权限,文件需要有664个。

如果我对htdocs执行递归664,那么所有文件和目录都将更改为664。

我不想手动更改目录。

有没有办法只更改文件或目录?

7 个答案:

答案 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)

戈登的上述答案是正确的,但是如果你试图锁定对目录树的访问权限,它会将所有可执行的脚本留给那些已被授予大写字母X的人。

使用

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)