为什么chmod 777 -R /让系统无法使用?

我只是允许所有人做任何事情,但为什么系统只通过授予权限而崩溃? 我只修改了不更改文件的权限。

有几个原因。

首先,除了通常的读/写/执行权限之外,还有一些文件权限包含的其他位。 最值得注意的是setuidsetgid 。 当运行具有这些权限位之一的程序时,它将获得程序所有者的“有效UID”和/或“有效GID”,而不是运行它的用户。 这允许程序以比运行它们的用户更多的权限运行。 它被许多关键的系统工具使用,包括susudo 。 您的chmod命令清除这些位,使实用程序无法使用。

其次,一些程序(特别是ssh )对文件权限进行健全性检查,拒绝使用具有不安全权限的文件。 这降低了粗心管理员不小心留下安全漏洞的风险,但它使处理被删除的文件权限更加痛苦。

简短的回答。

Linux系统需要某些程序的特定权限,如sudo等。

当你运行chmod 777 -R /你擦除所有权限并用777替换它们。 除非您手动恢复所有权限,否则这将使系统无法使用。

在实践中,重新安装更快更容易。

问题是许多系统程序的设计方式是,如果他们“不喜欢”权限就不会启动。 这是出于安全原因。

我认为解释如何在实践中处理系统设计比解释为什么每个程序都无法使用错误的权限更为重要。

如果您确实希望所有用户在Ubuntu中拥有无限权限,则可以将所有用户添加到sudo组,而不是更改文件和目录权限。 这将产生同样的效果,但不会破坏系统。

另一种方式(非常糟糕)是激活root帐户并允许每个人以root用户身份登录。

chmod有微妙的细微差别。

chmod 0777行为与chmod u+rwx,g+rwx,o+rwx的不同之处在于setuidsetgid由第一个归零并由后者保留。

这就是系统无法使用的原因。 您从一些程序中删除了必要的setuid

这是我的Linux Fedora 23笔记本电脑上的setuid或setgid文件列表:

 [root@fedora23lnvr61]# find / -perm /g+s,u+s /var/log/journal /var/log/journal/75e870eb13c74fbf97556a32ecf80ea2 /opt/google/chrome/chrome-sandbox /usr/bin/rogue /usr/bin/gnuchess /usr/bin/locate /usr/bin/umount /usr/bin/lbrickbuster2 /usr/bin/gpasswd /usr/bin/crontab /usr/bin/fusermount /usr/bin/su /usr/bin/at /usr/bin/newuidmap /usr/bin/sudo /usr/bin/pkexec /usr/bin/mount /usr/bin/chsh /usr/bin/newgrp /usr/bin/passwd /usr/bin/chage /usr/bin/chfn /usr/bin/write /usr/bin/newgidmap /usr/sbin/mount.nfs /usr/sbin/lockdev /usr/sbin/netreport /usr/sbin/userhelper /usr/sbin/usernetctl /usr/sbin/unix_chkpwd /usr/sbin/pam_timestamp_check /usr/libexec/kde4/kdesud /usr/libexec/kde4/kpac_dhcp_helper /usr/libexec/dbus-1/dbus-daemon-launch-helper /usr/libexec/qemu-bridge-helper /usr/libexec/openssh/ssh-keysign /usr/libexec/spice-gtk-x86_64/spice-client-glib-usb-acl-helper /usr/libexec/utempter/utempter /usr/libexec/abrt-action-install-debuginfo-to-abrt-cache /usr/libexec/Xorg.wrap /usr/lib/polkit-1/polkit-agent-helper-1 /usr/lib64/vte-2.90/gnome-pty-helper /usr/lib64/virtualbox/VBoxSDL /usr/lib64/virtualbox/VirtualBox /usr/lib64/virtualbox/VBoxNetNAT /usr/lib64/virtualbox/VBoxHeadless /usr/lib64/virtualbox/VBoxNetDHCP /usr/lib64/virtualbox/VBoxNetAdpCtl /usr/lib64/virtualbox/VBoxVolInfo /usr/lib64/vte/gnome-pty-helper [root@fedora23lnvr61]# 

我删除了缓存和日志中的几十个噪音条目。

除了其他回复之外:您还从/tmp (通常具有权限1777)中删除了“粘滞位”,这可能会导致其他意外问题,因为程序可以写入或删除其他人的临时文件。

粘性位是一种特殊权限,允许任何人在/tmp创建文件,只允许创建它的人移动或删除它。