Bash - 递归更改属于某个用户/组的目录的所有权

时间:2015-01-26 19:09:06

标签: linux bash

我有一个目录(我们将调用/files)与~1300个子目录,每个子目录包含更多子目录和文件。

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

我认为如果我在整个批次上做一个递归chown它将是非常极端的,所以我想知道是否有一种更有效的方法来递归地将root:root目录的所有权更改为{ {1}}。

如果apache:apache可以以相同的方式在这些目录上完成,则可获得奖励。

2 个答案:

答案 0 :(得分:0)

使用linux find命令可以帮助那里:

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

答案 1 :(得分:0)

您的递归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