如何还原chown命令?


17

如果我运行:

sudo chown -R user:user /

我可以将其还原为运行之前的状态吗?


1
就像对其他人的警告一样:sudo chown -R user:user ..如果您位于文件系统根目录的下一级,则以下命令可能具有与此处提到的命令相同的效果。不要尝试这样的事情。
passerby51

Answers:


22

简而言之:不。

您需要从备份中还原。(某些备份工具可能具有仅还原权限的选项,其他备份工具可以列出具有其权限的备份文件,您可以使用它来修复系统。)

如果没有备份,则需要手动修复所有问题。


之后sudo chown -R user:user /,很可能是系统连接异常严重,以致无法从备份中还原。
基思·汤普森

1
如果在这种情况下无法从备份中恢复用户数据的重要部分,那么“备份”实际上就不是一个备份。如果无法恢复整个操作系统,则仍然应该能够重新安装该基础数据库,然后从备份中还原。在这种情况下,很可能需要实时CD或网络启动,但是如果您的备份策略无法从中恢复,那还不够好。
2012年

我之前的评论可能不清楚。可以使用系统本身来恢复正常运行的系统。完成上述说明后chown,很可能您将无法从头开始安装整个系统,而无法做任何事情。该系统甚至没有root帐户,sudo因此无法正常工作。引导至单用户外壳程序可能值得,但不要指望它能工作。
基思·汤普森

1
根帐户没有消失(它仍然是UID 0);它只是不再拥有任何文件,而是root仍然绕过正常的权限检查。无论sudo甚至su会继续功能时,其所有相关文件都拥有的user是一个不同的问题(可能不是因为除其他事项外的exe文件的SUID位将会消失)。
jw013 2012年

6

仅当您知道目录下每个文件和目录的用户和组所有权时/

即使这样,您也已经破坏了需要由root拥有的关键系统文件的所有权,包括sudo命令。您可能需要将硬盘驱动器安装在另一个系统上,并且要注意,另一个系统可能不会像刚刚破坏的系统那样具有相同的UID和GID映射。

如果可以,请制作整个硬盘的副本,然后重新安装操作系统。完成此操作后,您可以尝试将文件复制回新擦除的系统并恢复其所有权。您可能可以假设(尽管不是100%可靠),下/home/foo的所有内容都由user拥有foo,并且下的每个邮件假脱机文件/var/mail均由适当的用户拥有(如果系统上有电子邮件)。/home根据您对系统所做的操作,可能无需恢复大多数不属于该目录的文件就可以摆脱困境。

然后开始培养的仔细检查你下运行任何命令的习惯sudo 之前你打Enter


6

如果您的发行版基于RPM,则只能还原rpm软件包安装的文件。

要还原所有程序包权限:

rpm --setperms -a

恢复所有程序包所有者(用户/组):

rpm --setugids -a

如果-a没有运行,则可以执行bash循环:

权限:

for x in $(rpm -qa); do rpm --setperms $x; done

对于所有者:

for x in $(rpm -qa); do rpm --setugids $x; done

摘自:http : //www.sysadmit.com/2016/10/linux-restaurar-permisos-de-un-paquete.html


1

您可以存储当前版本,然后使用-v选项将其解析出来以还原。

chown -R nobody:nobody -v /tmp/some_file > /tmp/chown.log
cat /tmp/chown.log

内容将是:

changed ownership of `/tmp/some_file' from me:users to nobody:nobody

使用您喜欢的脚本语言和正则表达式,您可以执行将它们还原的痛苦过程(如果需要)。

我强烈建议不要在/上执行递归chown,因为您将公开/ etc / shadow或任何其他重要文件。


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.