我将所有权从 root 更改/usr/local/bin
为/usr/bin
。
但是,现在我无法使用 sudo。尝试使用 sudo 时收到的消息是:
sudo: /usr/bin/sudo must be owned by uid 0 and have the setuid bit set
我已经在网上查找过并尝试过解决方案,chown
但没有任何效果。
当我输入此命令时:
ls -l /usr/bin/sudo
我得到输出:
-rwsr-xr-x 1 swirlydino root 136808 May 29 06:32 /usr/bin/sudo
当我输入此命令时:
ls -ld /usr /usr/bin
我得到这个输出:
drwxr-xr-x 10 root root 4096 Jun 14 10:15 /usr
drwxr-xr-x 2 datax root 36864 Aug 18 14:26 /usr/bin
那么,我怎样才能将所有权从 swirlydino 改回为 root?
答案1
Sudo 必须由 root 拥有,并且设置了 set uid 位。权限掩码的 set uid 位实际上使二进制文件以拥有它的用户身份运行,无论谁调用它。因此 sudo 可以更改它生成的任何进程的 uid。
通过更改 /usr/bin 的所有权,您几乎已经控制了您的安装。许多二进制文件都依赖于 suid,而让这些文件归用户所有,会让您遭受许多有趣的攻击。
https://en.wikipedia.org/wiki/Setuid对 suid 的工作原理进行了详细的解释。
此时最好的建议是重新安装 ubuntu...:)