❏ 站外平台:

Linux有问必答:怎样解决“XXX is not in the sudoers file”错误

译者:

| 2015-03-09 21:43   评论: 13 分享: 11    

问题:我想在我的Linux系统上使用sudo来运行一些特权命令,然而当我试图这么做时,我却得到了"[我的用户名] is not in the sudoers file. This incident will be reported."的错误信息。我该怎么处理这种sudo错误呢?

sudo是一个允许特定的用户组用另一个用户(典型的是root)的特权来运行一个命令。sudo有详细的日志功能,并且提供了对用户可通过sudo来运行哪些命令的细粒度控制。

Sudo vs. Su

su命令也提供了同样的特权提升功能,两者不同的是它们认证过程和特权变化的粒度。su允许你从你的登录会话切换到另一个用户的会话,然后你可以随心所欲地用该用户的特权来运行任何程序,但是你需要知道目标用户的密码才能切换这个用户。而另一方面,sudo能在单个命令的基础上工作,允许你用root的特权来运行单个命令。用sudo你不必一定要知道root的密码,但是在提示输入sudo密码的时候要输入你的密码。

在Sudoers列表里添加用户

作为一个新用户的你如果试图运行sudo命令,你会碰到以下错误。意思是你不在这个包含经过认证就可以使用sudo特权的这么一个用户组的sudoers列表里。

[my-user-id] is not in the sudoers file.  This incident will be reported.

有两个方法可以把你加入到sudoers列表中去。

方法一

第一个方法是把你添加到名为sudo的Linux用户组里。这个特殊的Linux用户组是预配置来使用sudo的。因此,一旦你在这个组里面,那你就可以运行sudo命令了。

以下命令会把你加入到Linux的sudo组里,你需要在root用户下运行该命令。

# adduser <用户名> sudo

现在来确认你的组员资格有没有更新,使用groups命令来看看你当前属于哪个组的列表里。这个列表必定是包含sudo组的。

$ groups 

alice adm cdrom sudo dip plugdev fuse lpadmin netdev sambashare davfs2 libvirtd docker promiscuous

组员资格变动(和sudo访问)会在你登出后重新登录后生效。

方法二

第二个能让你使用sudo的方法是直接把你自己添加到 /etc/sudoers 这个配置文件中去。

要修改 /etc/sudoers 文件,你可以使用一个名为visudo的特殊sudo编辑器命令。用root身份简单调用以下命令。

# visudo 

这条命令能打开并编辑 /etc/sudoers 文件,将以下这行文字添加至文件末尾,并按Ctrl+X。提示出现时,保存修改退出。

<username> ALL=(ALL) ALL

这个修改会立即生效,你就能马上使用sudo了。


via: http://ask.xmodulo.com/fix-is-not-in-the-sudoers-file.html

译者:ZTinoZ 校对:wxy

本文由 LCTT 原创翻译,Linux中国 荣誉推出



最新评论

高四考四级 2015-03-16 11:17 4 回复
第一种方法不好用啊 有成功的吗?
来自 - 山东 的 Safari/Windows 用户 2015-03-12 00:46 10 回复
用debian。从来都是自己添加的。。。
[1]
来自 - 四川成都 的 Firefox/Linux 用户 发表于 2015-03-09 22:14 的评论:
为什么不同发行版的su源码构成差异比较大?
[2]
linux 发表于 2015-03-09 22:40 的评论:
哦?居然有这样的事情?你做过代码比较分析么?
[3]
来自 - 四川成都 的 Firefox/Linux 用户 发表于 2015-03-10 14:19 的评论:
我开始以为这种基本核心的命令, 其代码应该不会有什么差别. 但通过 apt 和 yum 下载源码, 并进行比较 deb 系的 coreutils-8.13 和 rpm 系的 util-linux-2.25 的 su 源码, 可以看到代码构成存在较大的差异。
至于包里面其他命令是否也存在差异, 我没有比较.

之所以要看源码是因为,deb 系和 rpm 系发行版自带包中的 su, 在执行类似这样的命令时(su - USER -c 'man bash' | more), 没法输入密码, 按任意键, 直接结束密码验证。
我自己也尝试多种方法试图解决但是无效。最后抱着最后一丝希望,才从源码入手。结果 deb 系的直接编译的 su
linux 2015-03-10 21:05 4 回复
据我所知 su 这样的命令,大多来自 coreutils 包,这个是 GNU.ORG 进行维护的。不过各个发行版所采用的版本基本上远远落后于 GNU 的版本。所以我想可能是不同版本之间的差异或内核版本的差异带来的。

不过具体的答案,也要看源代码里面的说明和出处。
[1]
来自 - 福建福州 的 Chrome/Linux 用户 发表于 2015-03-10 10:16 的评论:
“以下命令会把你加入到Linux的sudo组里,来确保让你能作为root用户来运行命令。”
不应该是“你需要在root用户下运行命令”吗
linux 2015-03-10 13:37 4 回复
嗯,你的语句更明白一下,我去修改下。
Aquarius 2015-03-10 12:40 8 回复
第二个好,经常使用这种
微博评论 2015-03-09 23:33 4 回复
加入sudo用户组
微博评论 2015-03-09 22:33 5 回复
Mark
微博评论 2015-03-09 22:33 5 回复
suck it up'n do as ordered[喵喵]
微博评论 2015-03-09 22:03 4 回复
常遇到的问题

返回顶部

分享到微信

打开微信,点击顶部的“╋”,
使用“扫一扫”将网页分享至微信。