如何恢复 chown 命令?

fro*_*hem 19 command-line permissions chown

如果我运行:

sudo chown -R user:user /
Run Code Online (Sandbox Code Playgroud)

我可以将它恢复到运行之前的状态吗?

Mat*_*Mat 25

简而言之:没有。

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

如果您没有备份,则需要手动修复所有这些。

  • 如果在这种情况下您无法从备份中恢复用户数据的重要部分,那么您的“备份”就真的不是一个。如果您无法恢复整个操作系统,您应该仍然能够重新安装基础,然后从备份中恢复。在这种情况下,很可能需要实时 CD 或网络引导,但如果您的备份策略无法从中恢复,则它真的不够好。 (2认同)
  • 我之前的评论可能不清楚。可以使用系统本身来恢复正常运行的系统。一旦完成了所描述的“chown”,在从头开始安装整个系统之前,您可能无法执行*任何操作*;系统甚至没有“root”帐户,“sudo”也不起作用。尝试启动到单用户 shell 可能是值得的,但不要指望它能起作用。 (2认同)
  • root 帐户没有消失(它仍然是 UID 0);它只是不再拥有任何文件,但 root 无论如何都会绕过正常的权限检查。当所有相关文件都归“用户”所有时,“sudo”甚至“su”是否会继续运行是另一回事(可能不是因为 exe 上的 SUID 位将消失)。 (2认同)

Kei*_*son 7

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

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

如果可以,请复制整个硬盘驱动器,然后重新安装操作系统。完成此操作后,您可以尝试将文件复制回新擦除的系统并恢复其所有权。您可能会假设(尽管不是 100% 可靠)下面的所有/home/foo内容都归 user 所有foo,并且下面的每个邮件假脱机文件/var/mail都归相应的用户所有(如果系统上有电子邮件)。您可能无需恢复不在 下的大多数文件就可以逃脱/home,这取决于您对系统所做的工作。

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


小智 6

如果您的发行版是基于 RPM 的,您只能恢复由 rpm 包安装的文件。

恢复所有包权限:

rpm --setperms -a
Run Code Online (Sandbox Code Playgroud)

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

rpm --setugids -a
Run Code Online (Sandbox Code Playgroud)

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

对于权限:

for x in $(rpm -qa); do rpm --setperms $x; done
Run Code Online (Sandbox Code Playgroud)

对于业主:

for x in $(rpm -qa); do rpm --setugids $x; done
Run Code Online (Sandbox Code Playgroud)

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