Bash - 仅递归更改属于某个 user/group 的目录的所有权

Bash - Recursively change ownership of only the directories which belong to a certain user/group

我有一个包含约 1300 个子目录的目录(我们称之为 /files),每个子目录都包含更多的子目录和文件。

/files 中 90% 的顶级目录属于 apache:apache,其余属于 root:root。我需要属于 apache:apache.

的一切

我想如果我对整个地段进行递归 chown 会非常极端,所以我想知道是否有更有效的方法来递归地更改 root:root 目录的所有权至 apache:apache.

奖金如果 chmod 可以在这些目录上以相同的方式完成。

使用 linux 的查找命令会有所帮助:

find /files -user root -group root -type d \
   -exec chmod something {} \; -exec chown apache.apache {} \;

有关为什么有效的更多详细信息,请访问 http://www.explainshell.com/explain?cmd=find+%2Ffiles+-user+root+-group+root+-type+d+-exec+foo+\%3B

您的递归 chown 可能已经完成,但您可以改用它:

find . -type d \( ! -user apache -o ! -group apache \) -print0 | xargs -0 chown apache:apache 

更改权限错误的目录:

find . -type d ! -perm 755 -print0 | xargs -0 chmod 755