错误地设置了chmod / 777。


33

我试图运行,chmod -R 777 ./但最终在我的整个计算机上键入chmod -R 777 /并设置777。有什么问题吗?我该如何解决?



系统中可能出什么问题?它会停止工作吗?
Vinnycx 2011年

6
当然有问题。例如,SSH将失败。
2011年

2
如果主目录可被世界读取,则SSH退出。将所有内容设置为777就像以root用户身份进行所有操作。
2011年

Answers:


46

问题?是的,很多。可以解决吗?当然。比重新安装更快?可能不会。

我的建议是重新安装。保留现有系统的备份和恢复软件包列表和文件的内容/etc/var。对于/usr/local,您可能可以手动还原权限。对于/home/srv,您必须从备份中还原权限。

如果这是一个具有多个本地用户的系统,请注意,使某些文件成为全球可读取的文件揭示了一些应该保密的信息。

  • 您的密码列表现已受到威胁:本地用户可以访问哈希密码列表,并且可以尝试对其进行暴力破解。通知您的用户。
  • 所有私有用户数据(ssh密钥,存储的密码,电子邮件,以及其他用户可能认为机密的信息)都已公开给所有本地用户。通知您的用户。

如果您真的想尝试修复(更多的是学习练习,而不是实际的恢复途径),请首先还原几个文件的权限。请注意,尽管现在大多数文件都打开过,但仍有一些缺少必需的setuid位。以下是您应采取的其他步骤。请注意,这并不是一个详尽的清单,只是试图使系统几乎无法运行。

chmod -R go-w /
chmod 440 /etc/sudoers
chmod 640 /etc/shadow /etc/gshadow
chmod 600 /etc/ssh/*_key /etc/ssh*key   # whichever matches
chmod 710 /etc/ssl/private /etc/cups/ssl
chmod 1777 /tmp /var/tmp /var/lock
chmod 4755 /bin/su /usr/bin/passwd /usr/bin/sudo /usr/bin/sudoedit
chmod 2755 /var/mail /var/spool/mail

然后,您将需要在所有位置还原所有权限。对于下的文件/usr,您可以使用以下命令之一重新安装软件包,具体取决于您的分布:

  • 如果您使用的是Debian,Ubuntu或其他基于APT的发行版,则可以执行 apt-get --reinstall install
  • 如果您使用的是Arch Linux,则可以执行该操作pacman -S $(pacman -Qq --dbpath /newarch/var/lib/pacman) --root /newarch --dbpath /newarch/var/lib/pacman,前提是您已将其安装在Live CD中,并且Arch安装已安装在/newarch

对于/etc和下的文件/var,这些文件将不起作用,因为其中的许多文件将保留原样:您必须在有效的安装上复制权限。对于/srv和下的文件/home,无论如何都必须从备份中还原。如您所见,您最好重新安装。


6
同意,除非您是专家,否则如果不进行完全重新安装或从备份还原,几乎没有机会修复此情况。保持系统正常运行太危险了。
Arrowmaster 2011年

3
如果系统上有用户,我很可惜。
于尔根A.艾哈德

19

起初您可能没有注意到它,但是很多事情可能并且会出错。主要问题是整个系统的整个安全模型已损坏。就像一个没有皮肤的身体,所有器官都在空中。它注定会被感染,因为它的作用并非如此。即使它似乎工作了几分钟,也需要清理它。

最好的方法实际上是从头开始。这种方式将大大降低您的风险,并在更短的时间内为您提供更清洁的结果。如果您有适当的备份,那么就不应该尝试这种做法。

如果确实要清理它,那么主要方法是告诉发行版的程序包管理器在系统上重新安装一切,包括覆盖配置文件。然后,使用必须使用的任何验证系统来检查它们,并确保没有一个标记为具有权限异常的文件。接下来,遍历用户主目录之类的内容,并将所有内容重置为合理的权限,然后遍历一些应该具有特殊权限的事物(如ssh密钥文件)。最后,对标记为777的所有内容执行完整的系统查找,然后遍历该列表(如果您已完全完成其他步骤,则应该很小),并逐一检查以确保它们是正确的样子。


但是,除了安全性,应用程序还会出什么问题?他们会停止工作吗?还是安全是这里最大的担忧?
Vinnycx 2011年

安全是最大的问题,但是许多程序,尤其是在后台,诸如记录守护进程,cron等之类的程序,由于各种原因会失败,而不是使自己陷入危险的境地。
卡莱布

cron会因为777而停止工作吗?
Vinnycx

1
有几种不同的cron系统,但是当crontab文件可全局写入时,任何不尊重自我的cron都不应在root的cron中执行作业!同样,处理cron通知的邮件守护程序也应出于其他原因进行投诉。
卡莱布

10

解决方案:我在CENTOS中对此进行了测试

这个家伙救了我的工作!(您需要以某种方式访问​​)

http://www.adminlinux.org/2009/07/how-to-restore-default-system.html

1)重置文件和目录上的uid和gid:

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

2)对文件和目录的权限

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

然后手动更改这些文件的权限:

# ll /etc/ssh/
# chmod 600 /etc/ssh/ssh_host_rsa_key
# chmod 600 /etc/ssh/ssh_host_dsa_key
# service sshd restart

5

如果某些文件的权限太“松散”,则某些注重安全性的程序将无法启动。正如@ceving所说,这sshd是最典型的。

可能出错的主要问题是,现在任何用户都可以打开,读取和写入系统上的任何文件。造成这种情况严重的两个原因是:A)如果恶意用户通过漏洞利用或配置错误获得了对系统的控制,他/她现在就可以修改系统上的任何内容,并且B)即使有恶意,您也可以删除所需的任何内容您不是root用户,因此您已经取消了大多数不以root用户身份运行的保护措施。

如果您没有事先备份权限,则可能会遇到问题。您可能能够创建一个脚本,该脚本从新安装的系统中“获取”权限列表,然后将其“应用”到系统中的所有内容。不过,我没有这样的脚本。


但是,除了安全性,应用程序还会出什么问题?他们会停止工作吗?还是安全是这里最大的担忧?
Vinnycx 2011年

如果权限太松,只有两个拒绝启动的应用程序。安全是最大的问题。但这也是系统稳定性。如果您现在以rm -rf /普通用户身份执行操作,则将使系统陷入瘫痪。
LawrenceC

哪些应用程序可能会停止工作?
Vinnycx 2011年

除了SSH?还有什么可能失败?我现在需要一段时间才能离开系统。
Vinnycx 2011年

5
@Vinnycx:不,你不能。坏了 您应该将其优先解决。否则,您的服务将使您一个接一个地失败,并让黑客吃掉您的数据。不能选择/ * @ 777。
卡莱布
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.