我试图运行chmod -R 777 ./
,但最终在我的整个机器上打字chmod -R 777 /
和设置。777
会出现什么问题?我该如何修复它?
答案1
问题?是的,很多。可以修复吗?当然。比重装更快?可能不会。
我的建议是重新安装。保留现有系统的备份,并恢复包列表以及/etc
和中的文件内容/var
。对于/usr/local
,您可能可以手动恢复权限。对于/home
和/srv
,您必须从备份中恢复权限。
如果这是一个具有多个本地用户的系统,请注意,使某些文件可供所有人阅读会泄露一些本应保密的内容。
- 您的密码列表现已受到威胁:本地用户可以访问散列密码列表,并可以尝试暴力破解它们。将此情况通知您的用户。
- 所有私人用户数据(ssh 密钥、存储的密码、电子邮件、用户可能认为机密的其他任何内容)都已暴露给所有本地用户。将此情况通知您的用户。
如果您确实想尝试修复(更多的是学习练习,而不是实际的恢复途径),请首先恢复一些文件的权限。请注意,虽然大多数文件现在都过于开放,但仍有一些文件丢失了必要的文件设定值位。以下是您在执行其他操作之前应采取的步骤。请注意,这并不是一个详尽的列表,只是试图让系统几乎无法运行。
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
,您无论如何都必须从备份中恢复。如您所见,您最好重新安装。
答案2
一开始你可能没有注意到这一点,但很多事情都可能而且将会出错。主要问题是整个系统的整个安全模型被破坏。这就像身体没有皮肤,器官全部暴露在空气中一样。它肯定会被感染,因为它本来就不是这样运作的。即使它看起来只能工作几分钟,你也需要清理它。
最好的方法实际上是从头开始。这种方式将大大降低您的风险,并在更短的时间内为您提供更清晰的结果。如果您有适当的备份,这应该不会是一次太尝试的体验。
如果您确实尝试清理它,主要方法是告诉发行版的软件包管理器重新安装系统上的所有内容,包括覆盖配置文件。然后使用它必须的任何验证系统来查看它们,并确保它们都没有被标记为具有异常权限的文件。接下来,处理诸如用户主目录之类的事情,并将所有内容全部重置为合理的权限,然后处理一些应该具有特殊权限的事情(例如 ssh 密钥文件)。最后,对标记为 777 的所有内容进行完整的系统查找,并浏览列表(如果您彻底完成了其他步骤,它应该很小),并逐一完成它们,确保它们应该是这样的。
答案3
解决方案:我在 CentOS 中测试了这个
这家伙救了我的工作! (您需要以某种方式访问)
http://www.adminlinux.org/2009/07/how-to-restore-default-system.html
1) 重置文件和目录的 uids 和 gids :
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
答案4
如果某些文件的权限过于“宽松”,一些具有安全意识的程序将无法启动。正如@ceving所说,sshd
这是最典型的。
主要可能出错的是现在任何用户可以打开、读取和写入任何文件在您的系统上。这不好的两个原因是:A)如果恶意用户通过漏洞利用或错误配置获得了对您系统的控制,他/她现在可以修改您系统上的任何内容,B)您可以删除您想要的任何内容,即使你不是 root,所以你只是否定了大部分不以 root 身份运行的保护。
如果您没有事先备份权限,那么您就会陷入困境。您也许可以创建一个脚本,从新安装的系统中“获取”权限列表,然后将这些权限“应用”到系统上的所有内容。不过,我手头没有这样的脚本。