我必须将apache中htdocs目录的权限更改为某个组,并具有特定的读/写/执行权限。
目录需要拥有775个权限,文件需要拥有664个权限。
如果我对htdocs执行递归664,那么所有文件和目录都将更改为664。
我不想手动更改目录。
有没有办法只更改文件或目录?
发布于 2013-06-13 23:43:02
使用find的-type选项将操作限制为文件和目录。使用-o选项为不同的类型指定替代操作,因此您只需运行一次find,而不必为每种类型单独运行一次。
find htdocs -type f -exec chmod 664 {} + -o -type d -exec chmod 775 {} +发布于 2013-06-14 00:05:12
chmod实际上可以自己做到这一点;X符号权限意味着“执行,如果它有意义的话”,这通常指的是目录上,而不是文件上。因此,您可以使用:
chmod -R u=rwX,go=rX /path/to/htdocs唯一的潜在问题是,如果任何普通文件已经设置了execute集,chmod就会假定它是有意设置的,并保留它。如果这是一个潜在的问题,并且你有chmod的GNU版本(即你在Linux上),你可以像这样让它删除任何分散的执行权限:
chmod -R a-x,u=rwX,go=rX /path/to/htdocs不幸的是,这个技巧不适用于chmod的bsd (/macOS)版本(我不确定是否适用于其他版本)。这是因为bsd版本基于“原始(未修改)模式”应用X权限,即在a-x修改之前是否有任何执行位(参见the man page)。
发布于 2013-06-13 23:42:49
使用find搜索目录并对其应用chmod:
find -type d | xargs chmod 775对文件使用类型f:
find -type f | xargs chmod 775https://stackoverflow.com/questions/17091300
复制相似问题