如何在etc目录中还原chmod?


9

我不小心在etc目录上执行了以下命令:

sudo chmod -R 700 /etc

我知道我做错了什么。我的终端现在打印:

I have no name!@ubuntu: /$

如何将我的etc目录恢复到先前的状态?

我尝试更改权限,但现在失败了。另外,如果有人可以解释我在etc等上执行该命令时实际出了什么问题,那将非常有帮助。这仅是文件权限。那么,为什么整个系统似乎完全崩溃了?为什么现在没有登录密码有效?我知道etc目录中有一个与用户有关的文件。但是更改权限是如何危害一切的呢?关于此的一些技术细节将非常有帮助。


3
您需要ls -laR另一个正在运行的系统的目录列表()。您的是哪个版本?您可以将目录更改为755,将文件更改为644,但是某些目录必须具有不同的模式(例如/ etc / shadow)。
ott--

4
当您键入内容时,sudo您应该重新读一下它,因为“我在没有安全网的情况下授予了我对系统最大的权力,我确定我知道自己在做什么吗?我确定我键入了我的意思吗?” 在按回车键之前。
msw

1
在工作系统上,您可以使用find /etc -type d ! -perm 755 -exec ls -ld {} \;find etc -type f ! -perm -644 -exec ls -l {} \;查找非标准模式的目录和文件。在Debian中,它只有2个目录和39个文件
ott--

“但是,更改权限如何危及一切?” -现在需要读取这些文件的某些内容没有读取这些文件的权限。
user253751

Answers:


15

一件事出错了:在sudo该命令中使用with。该-R开关告诉chmod递归权限设置到该目录,也就是,在任何情况下,非推荐的动作(我们应该叫它:异端),如果你不知道你在做什么(这一次发生在我身上,我没有发出命令,但是有一个错误的GUI发出了命令,并且我的系统连线了)。

这只是文件权限。那么,为什么整个系统似乎完全崩溃了?

GNU / Linux 在考虑到稳定性和安全性的基础上对文件权限非常敏感。这同样适用于在GNU / Linux中运行的大多数程序(即,apache2放弃root特权并使用www-data或类似用户,并且您的700许可不允许它读取/写入自己的文件)。

为什么现在没有登录密码有效?

如您已经提到的,登录密码存储在的文件中/etc/passwd,只有root用户(我假设您没有更改)可以读取它,但是登录提示(或GUI登录)使用非特权帐户,因此它无法读取文件。

但是更改权限是如何危害一切的呢?

如上所述,Linux对文件权限非常敏感。某些程序甚至会检查其配置文件的权限,如果不期望它们根本不会运行。

如何将我的etc目录恢复到先前的状态?

如果您使用基于RPM的发行版,则可以使用rpm --setperms命令来完成,这将很痛苦地一步一步地还原软件包,在类似Debian的系统上apt-get --reinstall install是您的朋友。其他解决方案可能可用,但需要一个工作系统。


5

让我们看看,您所做的就是将整个/ etc dir中的权限设置为仅对文件/ dir的所有者所允许的读/写/执行权限,而其他人则拒绝了。如果您对文件权限感到困惑,可以在Wikipedia:传统UNIX权限上阅读更多内容

炸毁系统的原因是因为许多进程无法再读取其设置,无法访问/ etc。将整个/ etc目录恢复到以前的状态并不容易。如何执行该操作将取决于您的发行版,但是从根本上讲,这意味着重新安装每个包含/ etc中任何文件的软件包。

为了能够快速使用该系统,以便对其进行正确修复(如上所述,在/ etc中重新安装包含内容的所有软件包),您可以执行以下操作:

    # sudo find /etc -type d -exec chmod 775 '{}' \;
    # sudo find /etc -type f -exec chmod 664 '{}' \;

通过这两行,您将在所有/ etc目录中设置自由权限,所有者和组均允许读/写,而其他人则允许读。两个chmod的原因是仅在dirs上设置执行位。某些进程甚至会抱怨或失败,包括/ etc中的任何可执行文件,但是您应该能够重新安装我上面概述的内容。

请注意,在恢复原始权限之前,您的系统至少将处于不安全状态。


2
此外,某些程序将无法运行。例如,SSH需要对某些文件的限制性权限。/etc/sudoers是另一个。
梅·博伊斯

1
但是其中的某些文件/etc永远都不能使世界可读!从备份还原,这就是您拥有备份的原因(或者,这就是为什么人们一直在敦促您进行备份的原因)。
Tripleee

0

700有很多团体和世界各地的用户文件的删除访问(例如文件现在有rwx------权限)。例如,所有用户都必须能够阅读/etc/passwd。通过您的设置,现在只有root可以读取/etc/passwd。如果您/etc/以无法预测的方式破坏文件的权限,那么很多事情都会破坏。

您可以尝试根据正在运行的服务器重建权限(假设您仍然可以切换到root用户),但这容易出错。

/etc/如果有备份,我建议从备份中还原(确保还原将权限放回原位,或者,如果备份解决方案支持,则仅还原权限)。

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.