前言:失手给了用户账号 /usr 目录的权限,结果 sudo 的时候报 sudo:must be setuid root....,里面东西都部署好了,不想重装系统啊。遂,跑到机房一番挣扎,成功恢复。在恢复的过程中,发现很多的教程都只说了一部分,照着执行有很多坑。所以,试图用这篇讲解全部过程,并指出需要注意的地方。
一、进入Ubuntu Recovery模式
其实就是在进入系统前,这个页面上选择 后面有 recovery mode项,进入恢复模式。
网上其他都说要按 Esc或者Shift,目的在于让开机过程停在这个页面,不然这个页面会一闪而过。
我实际操作 在bios之后,一直按住 Esc键。
进入后,会有图形页面,选择 root那一行即可。
之后还要敲一下 Enter键。
二、文件系统重新挂载为 RW ,默认只读,无法操作
mount -o remount rw /
执行下即可
三、恢复
chown root:root /usr/bin/sudo #所有者变为 root
chown -R root /usr
chmod 4755 usr/bin/sudo #赋权限
chmod 755 /usr/lib/sudo/sesh
chmod 644 /usr/lib/sudo/sudoers.so
chmod 644 /usr/lib/sudo/sudo_noexec.so
reboot #重启
四、问题排查方法
如果还不行,无非两个问题: 所有者不是root,没有setuid项(执行权限s)
ls -l /usr/bin/sudo
正常结果如下:
注意几点:
- 所有者 root root
- 有 s 权限 见 -rwsr