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
我有一个包含约 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