如果我运行:
sudo chown -R user:user /
我可以将其恢复到运行之前的状态吗?
答案1
简而言之:不。
您需要从备份中恢复。 (某些备份工具可能具有仅恢复权限的选项,其他工具可以列出备份文件及其权限,您可以使用它来修复系统。)
如果您没有备份,则需要手动修复所有问题。
答案2
如果您的发行版基于 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-restauar-permisos-de-un-paquete.html
答案3
仅当您知道目录下每个文件和目录的用户和组所有权时/
。
即使如此,您也已经破坏了需要由 root 拥有的关键系统文件的所有权,包括该sudo
命令。您可能需要将硬盘驱动器安装到另一个系统上,并且要注意另一个系统可能不会具有与您刚刚破坏的系统相同的 UID 和 GID 映射。
如果可以的话,复制整个硬盘驱动器,然后重新安装操作系统。完成此操作后,您可以尝试将文件复制回新擦除的系统并恢复其所有权。您可能可以假设(尽管不是 100% 可靠)下面的所有内容/home/foo
都归 user 所有foo
,并且下面的每个邮件假脱机文件/var/mail
都归相应的用户所有(如果系统上有电子邮件)。您可能无需恢复大多数不在 下的文件即可逃脱/home
,具体取决于您对系统所做的操作。
然后开始养成仔细检查您运行的任何命令的习惯sudo
前你打了Enter。
答案4
如果发行版是基于 rpm 的:
rpm -a --setperms