我已经通过恢复模式更改了我的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
当我以用户身份重新登录后,这解决了我的问题。