引言
因为之前误操作使用sudo chmod -R 777 /usr命令修改了usr文件的所有者,导致在普通用户sudo时报错/usr/bin/sudo must be owned by uid 0 and have the setuid bit set
网上的解决方式是需要在root用户下,执行以下几条语句
chown root:root /usr/bin/sudo
chmod 4755 /usr/bin/sudo
但由于无法登录root,报错 su: Authentication failure,查到的解决方式是需要 sudo passwd root,但现在遇到的问题就是没法使用 sudo
解决方式是需要通过recovery mode进入root,然后再reboot
而 wsl 下的方式与linux有所不同,按下面的解决方法就能够进入到root用户
解决方式
运行bash
并记下您的Linux用户名(此名称不必与Windows用户名匹配),请参阅如何查找我的用户名?
如截图所示,“@” 前面的就是用户名 hxc2101
user_name@machine_name:~$
如果它正在运行,请在Ubuntu上关闭Bash(否则下一个命令将失败)。
在Windows中运行cmd,将默认用户更改为root:
如果您在WSL的版本是“Ubuntu”,则命令如下:
ubuntu config --default-user root
如果您在WSL中使用Ubuntu 18.04,则命令应更改为ubuntu1804:
ubuntu1804 config --default-user root
现在Windows上的Ubuntu上的Bash无需密码即可以root用户身份登录:
使用passwd
Bash中的命令来更改用户密码(您要重置其密码的用户):
passwd your_username
在Windows命令提示符下将默认用户更改回您的普通用户
ubuntu config --default-user your_username
如果您在WSL中使用Ubuntu 18.04,则命令已更改为ubuntu1804
,因此
ubuntu1804 config --default-user your_username
参考:
在Windows中的Ubuntu / Linux Bash中重置密码
解决普通用户sudo时出现/usr/bin/sudo must be owned by uid 0 and have the setuid bit set