问题描述
Linux系统sudo su无法切换成root超级用户权限
具体报错:
sudo:/usr/lib/sudo必须属于用户id 0的用户并设置setuid位
sudo:在加载插件“sudoers_policy”时在/etc/sudo.conf第0行出错
sudo:/usr/lib/sudo/sudoers.so必须只对其所有者可写
sudo:致命错误,无法加载插件
原因分析:
原因是给/usr赋予了全部权限
突然系统进不去root用户,网上查找原因发现是本人手贱不小心给/usr解开了所有权限,导致终端切换root权限不成功。在网上找了很多帖子不成功,一度以为要重装系统了。
解决方案:
从恢复模式将相关文件手动修复权限
- 重启系统,进入GRUB恢复模式(启动时按住Shift or Esc or Delete,不同操作系统按键不同),选择e进入编辑模式;
- 找到linux或者Linuxefi开头的那一行,删除ro quiet splash,在结尾输入rw init=/bin/bash,如果不成功,则改为输入systemd.unit=rescue.target,按Ctrl+X或者F10启动;
- 系统会直接进入root终端,在终端中输入:
chmod 755 /usr
chmod 4755 /usr/bin/sudo
或者
chmod 644 /usr/lib/sudo/sudoers.so
chown -R root /usr/lib/sudo
- Ctrl+Alt+Delete重启
- 如果开机后切换root权限报错一些lib依赖库不是root权限,重复以上操作,修改这些依赖文件的权限即可。