Fedora 37下修复sudo报错「sudo: /usr/bin/sudo must be owned by uid 0 and have the setuid bit set」的正确方法
Fedora 37下修复sudo报错「sudo: /usr/bin/sudo must be owned by uid 0 and have the setuid bit set」的正确方法
兄弟,你这是把/usr/bin整个目录的权限递归改成755搞出的问题啦——sudo这个命令必须由root用户(uid 0)拥有,并且得开启setuid特殊权限位才能让普通用户以root身份执行命令,你改完权限把这些关键设置都冲没了。别慌,按下面的步骤一步步来修复:
第一步:获取root权限
现在sudo用不了,得先拿到root权限才能操作:- 如果你知道root密码:直接在终端输入
su -,然后输入root密码,回车后就切换成root用户了。 - 如果你不知道root密码:得进入单用户模式。重启电脑,在GRUB启动菜单里选中Fedora的条目,按
e进入编辑模式,找到开头是linux的那一行,把里面的ro改成rw,然后在这一行的末尾加上init=/bin/bash,按Ctrl+X启动,系统会直接进入root权限的命令行环境。
- 如果你知道root密码:直接在终端输入
第二步:修复sudo的关键权限
先把sudo本身的权限和属主改回正确状态,输入以下两个命令:chown root:root /usr/bin/sudo chmod 4755 /usr/bin/sudo解释下:
chown是把sudo的属主和属组设回root;chmod 4755里的4就是开启setuid位,确保普通用户执行sudo时能临时获得root权限。第三步:批量修复/usr/bin目录的系统默认权限
你递归修改了整个/usr/bin的权限,除了sudo,像su、passwd这些系统命令也可能因为权限错误出问题。Fedora可以用rpm工具批量恢复所有系统文件的默认权限和属主,输入这两个命令:rpm --setperms -a rpm --setugids -a--setperms -a会恢复所有rpm包安装文件的权限,--setugids -a则恢复它们的属主和属组。第四步:验证修复效果
如果是通过su -进入root的,输入exit回到普通用户,然后试试sudo ls这类命令,应该不会再报错了;如果是单用户模式进来的,输入exec /sbin/init重启系统,之后正常登录再测试sudo功能即可。
备注:内容来源于stack exchange,提问作者37buEr
相关产品推荐
相关产品推荐

