解决sudoers权限问题

前言

前面一篇文章说到,sudo 操作免密码验证等,最好先切换到 root 用户,再进行编辑,最后强制保存。如果不这么做,而使用 chmod 来更改权限,就会导致之后的 sudo 操作全部被拒绝。

问题与解决

问题是这样的,我需要编辑 /etc/sudoers 文件,想让当前用户使用 sudo 操作可以免密码验证,但是保存不了,一直提示文件是只读的,:wq! 强制保存也不行,提示文件不属于当前用户所拥有。

于是敲了一句 chmod:

$ sudo chmod a+w /etc/sudoers
修改了 /etc/sudoers 的权限,再用 sudo 命令的时候,必定会出现报错:

sudo: /etc/sudoers is owned by uid 501, should be 0
sudo: no valid sudoers sources found, quitting
501 是我当前登录的用户 bingo,而 0 应该是 root 用户。

网上的解决方案是进入 recovery mode,将 sudoers 的权限修改回来。但我不相信必须要这么做,想先尝试看能不能改得回来。

于是将 /etc/sudoers 的 owner 和组,修改为 admin:

$ chown root:admin /etc/sudoers

执行这一句命令时出现一个报错:

$ chown: /etc/sudoers: Operation not permitted

那这就很尴尬了,sudo 本来就已经不能用了,怎么办?

以管理员身份打开cmd或powershell:

  PS C:\> ubuntu config --default-user root
  PS C:\> wsl

此时拥有最高权限,任何操作都要慎重。

再次执行原来那句命令:

$ chown root:admin /etc/sudoers

就不会有 Operation not permitted 的报错了,然后 exit 退出 root 用户后,随便执行一句 sudo 操作命令,又出现另外一个报错:

sudo: /etc/sudoers is world writable
sudo: no valid sudoers sources found, quitting
sudo: unable to initialize policy plugin

这个好解决,应该还是 /etc/sudoers 的权限问题,继续 su 切换到 root 用户,然后改权限:

$ su
$ chmod 555 /etc/sudoers
$ exit

然后再随便敲一句 sudo,没有报错,问题已解决。

当wsl里的root密码忘了时,以管理员身份打开cmd或powershell:
  PS C:\> ubuntu config --default-user root
  PS C:\> wsl
  root@universe:/mnt/c# passwd
  Enter new UNIX password:
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值