Brij Raj Kishore Asked: 2016-07-18 12:48:30 +0800 CST2016-07-18 12:48:30 +0800 CST 2016-07-18 12:48:30 +0800 CST 为什么 chmod 777 -R / 使系统无法使用? 772 我只授予所有人做任何事情的权限,但是为什么只授予权限系统会崩溃?我只是在修改权限而不是更改文件。 chmod 4 个回答 Voted Best Answer Peter Green 2016-07-18T18:37:56+08:002016-07-18T18:37:56+08:00 有几个原因。 首先,除了通常的读/写/执行权限之外,文件权限还包含其他一些位。最值得注意的是setuid和setgid。当设置了这些权限位之一的程序运行时,它会获取程序所有者的“有效 UID”和/或“有效 GID”,而不是运行它的用户。这允许程序以比运行它们的用户更多的权限运行。许多重要的系统实用程序都使用它,包括su和sudo. 您的chmod命令会清除这些位,使实用程序无法使用。 其次,一些程序(特别是ssh)对文件权限进行完整性检查,并拒绝使用具有他们认为不安全的权限的文件。这降低了粗心的管理员意外留下安全漏洞的风险,但它使处理被清除的文件权限更加痛苦。 Pilot6 2016-07-18T12:54:37+08:002016-07-18T12:54:37+08:00 一个简短的回答。 Linux 系统需要特定程序的特定权限,例如sudo等。 当您运行时,chmod 777 -R /您会擦除所有权限并将其替换为777. 除非您手动恢复所有权限,否则这会使系统无法使用。 在实践中,重新安装更快、更容易。 问题是许多系统程序被设计成如果他们“不喜欢”权限就不会启动。这是出于安全原因。 我认为解释如何在实践中处理系统设计比解释为什么每个程序无法使用错误的权限更重要。 如果您真的希望所有用户在 Ubuntu 中拥有无限权限,您可以将所有用户添加到sudo组中,而不是更改文件和目录权限。这将产生相同的效果,但不会破坏系统。 另一种方法(一种非常糟糕的方法)是激活 root 帐户并允许每个人以 root 身份登录。 wallyk 2016-07-19T09:21:55+08:002016-07-19T09:21:55+08:00 chmod有细微的差别。 chmod 0777chmod u+rwx,g+rwx,o+rwx与setuid和setgid的行为不同,前者将其置零并由后者保留。 这就是系统无法使用的原因。您从一些程序中删除了必要的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]# 我删除了缓存和日志中的几十个噪音条目。 Ben XO 2016-07-20T05:01:47+08:002016-07-20T05:01:47+08:00 除了其他回复:您还删除了“粘性位” /tmp(通常具有权限 1777),这可能会导致其他意外问题,因为程序将能够写入或删除彼此的临时文件。 粘性位是一种特殊权限,它允许任何人在其中创建文件/tmp,但只允许创建它的人移动或删除它。
有几个原因。
首先,除了通常的读/写/执行权限之外,文件权限还包含其他一些位。最值得注意的是
setuid
和setgid
。当设置了这些权限位之一的程序运行时,它会获取程序所有者的“有效 UID”和/或“有效 GID”,而不是运行它的用户。这允许程序以比运行它们的用户更多的权限运行。许多重要的系统实用程序都使用它,包括su
和sudo
. 您的chmod
命令会清除这些位,使实用程序无法使用。其次,一些程序(特别是
ssh
)对文件权限进行完整性检查,并拒绝使用具有他们认为不安全的权限的文件。这降低了粗心的管理员意外留下安全漏洞的风险,但它使处理被清除的文件权限更加痛苦。一个简短的回答。
Linux 系统需要特定程序的特定权限,例如
sudo
等。当您运行时,
chmod 777 -R /
您会擦除所有权限并将其替换为777
. 除非您手动恢复所有权限,否则这会使系统无法使用。在实践中,重新安装更快、更容易。
问题是许多系统程序被设计成如果他们“不喜欢”权限就不会启动。这是出于安全原因。
我认为解释如何在实践中处理系统设计比解释为什么每个程序无法使用错误的权限更重要。
如果您真的希望所有用户在 Ubuntu 中拥有无限权限,您可以将所有用户添加到
sudo
组中,而不是更改文件和目录权限。这将产生相同的效果,但不会破坏系统。另一种方法(一种非常糟糕的方法)是激活 root 帐户并允许每个人以 root 身份登录。
chmod
有细微的差别。chmod 0777
chmod u+rwx,g+rwx,o+rwx
与setuid和setgid的行为不同,前者将其置零并由后者保留。这就是系统无法使用的原因。您从一些程序中删除了必要的setuid 。
这是我的 Linux Fedora 23 笔记本电脑上的 setuid 或 setgid 文件列表:
我删除了缓存和日志中的几十个噪音条目。
除了其他回复:您还删除了“粘性位”
/tmp
(通常具有权限 1777),这可能会导致其他意外问题,因为程序将能够写入或删除彼此的临时文件。粘性位是一种特殊权限,它允许任何人在其中创建文件
/tmp
,但只允许创建它的人移动或删除它。