sudo 必须由 uid 0 拥有并设置了 setuid 位

sudo 必须由 uid 0 拥有并设置了 setuid 位

我已经通过恢复模式更改了我的Ubuntu超级密码;之后,我无法在普通用户中运行 sudo 命令。

我尝试在恢复模式下破解之前的密码; 我点击此链接破解了我的密码

$sudo ---在全局模式下抛出以下错误:

sudo:/usr/local/bin/sudo 必须由 uid 0 拥有并设置了 setuid 位

$ ls -l sudo给出:

-r-sr-xr-x 1 root root 136808 May 29  2017 sudo

/usr/local/bin$ ./sudo ---> 我需要这/usr/local/bin ./sudo不起作用 --- 它会抛出以下错误:

sudo: ./sudo 必须由 uid 0 拥有并设置了 setuid 位

/usr/bin$ ./sudo --> 工作正常

usage: sudo -h | -K | -k | -V

我需要从任何地方从终端访问我的 sudo 命令。

答案1

你不应该有一个/usr/local/bin/sudo,这就是破坏事物的原因(而不是密码更改)。将其移开:

/usr/bin/sudo mv /usr/local/bin/sudo{,2}

然后告诉你的 shell:

hash -r

这将恢复sudo您习惯的功能。

答案2

我最近遇到了这个问题,因为我运行了以下命令

sudo chmod -R 777 /usr/*

不幸的是 /usr/bin/sudo 不属于 root,因此会损坏。

为了解决这个问题,我启动到恢复模式,该模式提供了一个向下滚动菜单,其中包含一个下拉到根 shell 的选项。

我从 root shell 运行了以下命令:

# remount disks in read write mode
mount -o remount,rw /
mount --all

# return ownership
chown root:root /usr/bin/sudo

# fix permissions
chmod 4755 /usr/bin/sudo

reboot

当我以用户身份重新登录后,这解决了我的问题。

相关内容