问题描述:
由于误操作更改了/usr/bin/目录下所有文件的权限为777,导致sudo命令无法使用。su root命令验证失败。提示错误如下:
sudo:/usr/bin/sudo 必须属于用户 ID 0(的用户)并且设置 setuid 位
解决方法:
因为su root也无法使用,而修改sudo为原始权限需要使用root账户,导致进入死循环。查阅多篇博客并总结解决方法如下:【Recovery 模式下直接免密进入root用户执行命令以修改】
1- 首先保证本机上有如下两个命令:chown 、chmod 如果没有需要安装。
我遇到的情况:chmod存在,chown没有,但是使用apt install chown需要使用sudo命令。然而sudo命令使用不了,再次陷入死循环。
解决方法:本机上有dpkg命令,可以离线安装软件包deb文件,然后通过命令dpkg -i xxx.deb进行安装。离线软线包下载地址:
Ubuntu – Ubuntu Packages Searchhttps://packages.ubuntu.com/
示意图如下:输入关键词查找相应deb文件,同时如果提示有依赖包,也需要下载所依赖的deb文件。
例如下载chown依赖nodejs,所以下载了两个deb文件。分别是node-pegjs_0.10.0-1_all.deb、node-chownr_1.1.3-3_all.deb
下载完成保存在ubuntu机器上
2-进入recovery模式,安装chwod并且修改权限。
step1:启动或者重启ubuntu,在开机时按ESC键,出现如下界面:
step2:按下箭头键,选中Advanced options项,并且回车。将出现带有recovery的选项。下键选中并且回车。进入recovery 界面,如下:
step3:下箭头选中 root Drop to root shell prompt 然后回车,页面底部会出现:
回车后将进入root用户。
step4:root用户下一次执行命令:
1)dpkg -i node-pegjs_0.10.0-1_all.deb
2)dpkg -i node-chownr_1.1.3-3_all.deb //可以验证chown命令是否有效
3)chown root:root /usr/bin/sudo //修改所有权用户为root
4) chmod 4755 /usr/bin/sudo
5) chmod 4755 /usr/lib/sudo/sudoers.so
6) reboot //重启
-----------------------------------------------完成--------------------------------------------------------------------
仍存在的问题:
虽然sudo命令可以使用,密码仍为原密码。但是su root还是不行,而且通过sudo passwd root命令修改root密码成功并且重启电脑后,仍然验证失败。但是sudo可以用了,反正也不影响啥,先用着