chown递归更改权限


34

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

chown -R user:user {.,}*

{.,}*用于与mvcp同时包括隐藏的和列出的文件。现在,该命令执行完毕,并更改了目录中的这两个文件,但是由于它继续执行,因此我不得不将其中断以使其停止。现在,由于它没有终止,因此它已经消失并更改了其他文件和文件夹的权限。


Answers:


46

通过使用{.,}*,您同时包含./../。与该-R选项一起,您的chown呼叫即将浏览整个文件系统(以及可能挂载的其他文件系统)../。使用其他命令,这个小错误可能非常致命,但是请相信我,您不是第一个,并且您也不会是最后一个...

由于此操作非常繁琐,因此您的chown呼叫被挂起了一段时间,因为它要处理的文件很多。我建议您返回进行呼叫的目录,然后逐步返回/以查看进行了哪些更改。您可能可以执行以下快速修复:

chown root:root /* # Set ownership to root for all directories in /.
chown you:yourgroup /home/you -R # Take your home back.

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

chown you:yourgroup /home -R

但是,即使它属于根目录,简单的chmod 755on也/home已足够。

快速浏览一下/(包括root权限本身ls -ld /)也是一个不错的起点。我建议您确保它/属于root用户,并设置了755权限。

如果您使用的chown设置非常具体的所有权(不是你或root用户,一组罕见的,...),您可能需要使用find查找chown-ed文件。

find / -user {username}
find / -group {groupname}

不幸的是,没有undo什么比你所做的要好。Linux自然不会跟踪这些“休闲”操作。

有关您要实现的目标的更多信息,请查看此SuperUser问题


我的根目录似乎很好。它是root拥有的。
nicoX 2014年

chown那时您必须按时杀了,但是请继续检查,从执行目录chown进入根目录。
约翰·史密斯

这是我使用-R标志的问题吗?以及如何在一个命令中更改隐藏文件和列出文件的所有者。
nicoX 2014年

2
请参阅我在答案末尾添加的链接。该-R是问题,因为你走递归通过..为好,这最终导致你从改变整个文件树/deep/directory/where/you/chowned/
约翰·史密斯
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.