以递归方式更改特定用户拥有的所有文件

以递归方式更改特定用户拥有的所有文件

是否可以找到并更改特定用户拥有的所有文件的所有权?我以错误的用户身份做了很多事情,需要将文件的所有权授予正确的用户。

是否有一种递归和条件的方法可以改变一堆文件和目录?

答案1

您可以将此便携式查找命令与类似这样的命令一起使用。

find . -user old-user -exec chown new-user:new-group {} \;

您可以扩展它来使用 -iname 选项查找特定文件(非 POSIX,但在 OSX 上可用)

find . -iname '*.html' -user www-data -exec chown www-data:www-data {} \;

. 代表当前文件夹及以下文件夹,因此您可以使用特定路径作为基础。

find /var/www/ -iname '*.html' -user www-data -exec chown www-data:www-data {} \;

答案2

您可以使用

chown --from=CURRENT_OWNER:CURRENT_GROUP -R new_owner:new_group  *

来自手册chown --help

  --from=CURRENT_OWNER:CURRENT_GROUP
                     change the owner and/or group of each file only if
                     its current owner and/or group match those specified
                     here.  Either may be omitted, in which case a match
                     is not required for the omitted attribute.

编辑:当然,这只适用于Linux的和大多数 UNIces。对于 OSX(基于 BSD),请参阅 @StephenTrapped 的解决方案。

答案3

chown选项-h会改变符号链接文件本身的权限,而不仅仅是目标的权限。

当对使用符号链接在版本之间切换的软件二进制文件夹执行此操作时,这可能至关重要。

find . -user old-user -exec chown -h new-user:new-group {} \;

答案4

Linux 答案...明确回答这个问题:

仅有的改变用户所有者这个的文件夹一切尽在其中拥有特定用户

sudo chown --from=ownerOld -Rc ownerNew  /this_is_my_path/

一些变化有助于理解语法,从而帮助您避免灾难:

仅有的改变用户所有者一切事物文件夹(不是文件夹本身)由特定用户

sudo chown --from=ownerOld -Rc ownerNew  /this_is_my_path/*

仅有的改变用户所有者这个的文件夹一切尽在其中拥有特定用户和群组

sudo chown --from=ownerOld:groupOld -Rc ownerNew  /this_is_my_path/

改变用户和群组所有者一切事物文件夹(不是文件夹本身)由特定用户

sudo chown --from=ownerOld -Rc ownerNew:groupNew  /this_is_my_path/*

仅有的改变群主这个的文件夹一切尽在其中拥有特定群体

sudo chown --from=:groupOld -Rc :groupNew  /this_is_my_path/

仅有的改变群主一切事物文件夹(不是文件夹本身)由特定用户和群组

sudo chown --from=ownerOld:groupOld -Rc :groupNew  /this_is_my_path/*

如果您不希望更改组,请不要使用“:”或放置组名。此外,您需要成为所有者并具有写权限,因此可能需要 sudo。请记住,这是一个危险的命令,请勿在 root“/”上运行,如果您弄错了,您将陷入困境。执行前请仔细检查三遍。

开关 c 表示显示变化。开关 R 是递归的

/path/* 不会拾取隐藏文件。

相关内容