在同事的计算机上,每次我使用 sudo 命令时,都会出现此错误:
sudo: must be setuid root
我尝试了互联网上提到的各种方法,比如从 live cd 将权限更改为 4755,但即使是来自 live-cd 的这个命令
sudo chmod 4755 /media/device/usr/bin/sudo
给出了同样的错误。
编辑:同事告诉我他执行了这个命令,天知道为什么 :/
sudo chmod -R 777 /
或者sudo chmod -R 777
他不太确定。
答案1
重新启动计算机,选择恢复控制台并输入以下命令
chown root:root /usr/bin/sudo
chmod 4755 /usr/bin/sudo
重新启动机器。
另请查看此关联用于修复损坏的 sudo。
答案2
执行后,sudo chmod -R 777 /
我建议紧急从头重新安装整个系统。该命令打开了太多安全漏洞,因为系统上的所有文件都变得可读(并且可写!)由任何用户 - 包括/etc/shadow
、、/etc/hosts
甚至/usr/bin/sudo
和/bin/ls
自己!您的系统可能看起来像一个漏勺 - 使用它的每一分钟都意味着灾难性的风险和损失,尤其是在连接到互联网时。而固定的权限根本sudo
不起作用。
还请考虑这个问题。
答案3
将文件系统的所有权限恢复到出厂安装状态要麻烦得多,但重新格式化分区并重新安装系统比尝试撤消
sudo chmod -R 777 /
命令。具有 777 (rwxrwxrwx) 权限的系统完全崩溃了。任何攻击允许通过浏览器执行任意代码的安全漏洞的恶意软件都可以修改 root 拥有的脚本和可执行文件,而如果检查可执行文件的权限,则像 sudo 这样的 setuid 将无法工作……
换句话说,在具有 777 个全局可写权限的系统上,浏览器缓存的处理方式与内核映像相同。简直是胡说八道。
事实上,sudo 正在检查自己的权限,其权限应该是 4755 (rwsr-xr-x),但你的朋友已将权限重置为 0777 (rwxrwxrwx),这会阻止 sudo 运行,因为它在启动你指定的命令之前会运行一些安全检查。
但是,无论如何,sudo 是没有意义的,因为您已经授予计算机上任何程序可执行的权限,包括浏览器缓存中可能的恶意软件!
格式化并重新安装是最安全的方法,因为您的整个驱动器都应该被隔离。
答案4
修复权限后sudo
,使用sudo
相同方法递归修复权限(最初用于破坏整个系统的参数相同,-R
仅在 AND 命令上)chown
。chmod
这/etc
至少可以/boot
减轻安全问题,使系统可用。/sbin
/bin
/dev
/proc
/sys
/usr
再说了,如果攻击者获得了对您系统的控制权(如果在修复这些权限时您连接到互联网,他们就会这样做),那么完全重新安装会更容易,因为否则很难收回控制权。