从系统范围的 chown 中恢复?

从系统范围的 chown 中恢复?

我有一台 Linux 网络服务器,其中有多个网站托管在 CPanel 上。我在访问某个网站时遇到了麻烦,因此我运行了以下命令: chown -R root:root /home/evalreal/.在等待命令时,我开始看到一堆错误。错误内容如下/home/evalreal/public_html/../virtfs/home/*Other website folders* Could not be accessed

因此,我弄乱了我的命令并将这些所有者应用于我的大量/?

我的网站一直瘫痪,直到我从备份中重置了它们的权限。我的 /tmp 目录和 /var/lib/mysql 目录目前都运行 777。我需要对妨碍 Exim 的任何事情采取类似措施。我不知道发生了什么变化,但由于我在运行命令时是 root 用户,所以我怀疑变化很大。

最终我需要从备份中恢复整个系统,对吗?如果我一天左右都无法恢复怎么办?

答案1

首先,往好的方面想:至少你备份。
许多遇到您这种情况的人都没有备份,当我们告诉他们最好的办法是从(不存在的)备份中恢复时,他们会非常烦躁...


Ultimately I need to have the entire system restored from backups right?
这可能是最便捷的解决方案(如果您可以恢复权限,这可能是更好的选择,因为您不会冒丢失任何工作成果的风险)。

您的另一个选择是确定哪些文件受到了影响,然后手动重置它们的所有权。不过,这里的容错空间更大一些:目录树是递归遍历的,因此您可以使用find -user root高于chown根目录的一级来帮助您解决损坏问题。
(这仅适用于您停止的情况chown——如果它遍历整个系统,那么您就真的完蛋了,备份是您的最佳选择。)


What if I can't do that for a day or so?
然后您将会瘫痪(或至少会受到影响)一天左右。
系统管理中没有捷径(好吧,有,但在这种情况下没有。您需要以某种方式撤消所做的所有权更改,无论是手动还是通过备份恢复。)

答案2

除了 voretaq7 提供的有关从备份恢复的很好的建议之外...您没有提到您正在使用的发行版;如果它是基于 rpm 的,您可能能够以 root 身份执行此操作:

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

这至少会使包提供的文件/目录的一切恢复正常。

相关内容