chown 递归更改权限

nic*_*coX 38 chown

我在目录中运行了 chown 命令:

chown -R user:user {.,}*

{.,}*用于与mvcp同时包括隐藏的和列出的文件。现在这个命令通过并​​更改了我目录中的这两个文件,但是自从它继续以来我不得不中断它以停止。现在恐怕它已经消失并更改了其他文件和文件夹的权限,因为它没有终止。

Joh*_*ith 51

通过使用{.,}*,您同时包含了./../。除了-R选项之外,您的chown调用将浏览您的整个文件系统(以及其他可能已安装的文件系统),通过../. 对于其他命令,这个小错误可能会非常致命,但相信我,你不是第一个,也不会是最后一个......

由于此操作非常繁重,您的chown呼叫挂了一段时间,因为它有很多文件要处理。我建议您返回到您拨打电话的目录,然后逐步/返回查看进行了哪些更改。您也许可以应用快速修复:

chown root:root /* # Set ownership to root for all directories in /.
chown you:yourgroup /home/you -R # Take your home back.
Run Code Online (Sandbox Code Playgroud)

在 Ubuntu 上,该/home目录提供给在系统上注册的第一个 (admin/sudo) 用户。如果您是唯一的用户,您可能想要执行以下操作:

chown you:yourgroup /home -R
Run Code Online (Sandbox Code Playgroud)

但是,简单的chmod 755on/home就足够了,即使它属于 root。

直接快速查看/(包括 root 权限本身ls -ld /)也是一个不错的起点。我建议你确保它/属于 root,并设置了 755 权限。

如果您曾经chown设置过非常具体的所有权(除您或 root 之外的用户、稀有组、...),您可能希望使用-ed 文件find来查找chown

find / -user {username}
find / -group {groupname}
Run Code Online (Sandbox Code Playgroud)

不幸的是,没有undo你所做的事情。Linux 不会自然地跟踪这些“随意”操作。

有关您尝试实现的目标的更多信息,请查看此超级用户问题

  • 请参阅我在答案末尾添加的链接。`-R` 是问题所在,因为你也递归地遍历了 `..`,最终导致你将整个文件树从 `/deep/directory/where/you/chowned` 更改为 `/`。 (2认同)