运行命令时出现以下错误sudo -s将 /usr/bin/sudo 的权限更改为 777 后
sudo:/usr/bin/sudo 必须由 uid 0 拥有,并且设置了 setuid 位
我通过以下过程解决了这个问题:
在(恢复模式)中选择您的操作系统版本,然后按 Enter 键。
例如:Ubuntu 14.04(恢复模式)
它会带你进入另一个屏幕。现在选择“Drop to root shell prompt”并按 Enter。
它将在屏幕底部加载一个命令行。
现在运行以下每个命令。
安装-o重新安装,rw /
安装 –all
chown root:root /usr/bin/sudo
chmod 4755 /usr/bin/sudo
重新开始
现在,我只是想了解为什么它不能在 /usr/bin/sudo 上使用 777 权限
请解释一下,提前谢谢。
答案1
sudo
具有“setuid”位(4
中的chmod 4755
)。这意味着当您执行 时,您会自动获得所有者sudo
的权限,即 root。因此,任何 的执行都具有 root 权限,只是“官方”版本所做的第一件事是要求输入密码以确定它是否可以继续。sudo
sudo
如果sudo
是可写的,那么任何人都可以修补它以不检查密码或执行其他操作,从而获得 root 权限。因此sudo
必须对每个人都保持 R/O 状态,否则应视为已泄露。
答案2
我很确定这是一个简单的安全功能,如果 /usr/bin/sudo 的权限不同于 755,它将无法访问。我找不到文章来证实这一点,所以我只能说这是我的猜测。然而,你会发现很多人问同样的问题,而且总是每个人都告诉他们恢复到 755 权限