前言

首先Sudo命令主要是让非root用户以root身份执行命令,来完成一些我们这个帐号完成不了的任务。
然而在你新建一些用户之后,在使用sudo命令输入密码过后,会被提示"不在 sudoers文件中,此事将被报告"

思路

首先已知导致这个问题的主要原因是因为该用户的权限不够
且里面提到了sudoers文件,所以第一反应当然是去找/etc/sudoers文件
打开这个文件之后,看到了

root    ALL=(ALL)     ALL
%wheel    ALL=(ALL)    ALL

这两行内容,查看上面的注释,发现这两段的意思分别是

允许`root`用户在`任何地方`运行`任何命令`
允许`wheel`用户组在`任何地方`运行`任何命令`

看懂这个了之后的事情就很好办了~

解决方案

根据上面的思路,这个问题有两个解决办法。

1.通过添加用户的方案来给予权限

添加用户给予权限

这个办法可以说是十分简单了
首先我们切换到root用户
找到/etc/sudoers文件并打开,找到下面这一行

root    ALL=(ALL)     ALL

在它的下方紧跟着添加下面这一句。注意username要改为你那个显示不在 sudoers文件中的用户名

username    ALL=(ALL)     ALL

加好后保存退出,用刚才有问题的账户重新用sudo来执行命令即可发现问题已经解决!

2.通过添加用户组,并将没权限的用户添加至用户组来解决

添加用户组给予权限

这个方法略显麻烦,但是十分适合那些用户比较多,懒得一个个去通过添加用户名的方法来解决问题的朋友

①首先我们可以新建一个用户组,例如命名为navidrome

在新建之前我们首先查一下该组是否已仅存在

grep "navidrome" /etc/group

若没有返回内容,我们创建组即可

groupadd navidrome

创建好后,我们仍可用上一个命令来确认创建是否成功

grep "navidrome" /etc/group

②成功后,我们将没有权限的用户添加进去

usermod -G 组名 用户名

比如

usermod -G navidrome test

添加好后,我们还是可以用之前的命令来查看该用户组是否已有该用户

grep "navidrome" /etc/group

③完成后,将组添加至sudoers文件内

找到/etc/sudoers文件,在
%wheel ALL=(ALL) ALL
这一行的下方添加以下内容,注意用户组改为你创建的用户组名

%用户组 ALL=(ALL)    ALL

%navidrome ALL=(ALL)    ALL


保存后就完工了,现在你可以去测试一下是否修复了该问题!

顺便,如果你想让用户在使用sudo命令时不再每次输入密码,可以将

XXX    ALL=(ALL)    ALL

这一行中,最后的ALL改为NOPASSWD: ALL,例如

XXX    ALL=(ALL)    NOPASSWD: ALL

这样就省去了每次输密码的麻烦。
当然,做这一步时请你清楚你在做什么!不建议用!

以上~欢迎大佬来进行指点!

End

本文标题:“不在 sudoers文件中,此事将被报告”解决方案

本文链接:https://blog.mchsfc.com/61.html

除非另有说明,本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议

声明:转载请注明文章来源。

最后修改:2022 年 04 月 17 日
如果觉得我的文章对你有用,请随意赞赏