sudo 组中的用户不能使用 sudo 命令

Jay*_*ell 18 sudo 14.04

我有一个用户,supersecretuser,在sudo组中,但没有sudo访问权限。是否还需要执行其他操作才能授予此用户sudo访问权限?

$ ssh supersecretuser@myserver
supersecretuser@myserver:~$ groups
supersecretuser adm cdrom sudo dip plugdev lpadmin sambashare
supersecretuser@myserver:~$ sudo vim install.sh 
[sudo] password for supersecretuser: 
supersecretuser is not in the sudoers file.  This incident will be reported.
Run Code Online (Sandbox Code Playgroud)

supersecretuser 是我们在安装 Ubuntu 时设置的用户。

bfr*_*zju 9

由于您的错误消息说您的用户is not in the sudoers file,请您检查您的/etc/sudoers文件,看看是否有这样一行:

%sudo   ALL=(ALL:ALL) ALL
Run Code Online (Sandbox Code Playgroud)

如果缺少此行,则sudo组中的用户将不是 sudoers。使用visudo命令编辑文件(检查正确的 synthax 并锁定文件)。

您还可以尝试添加这样的自定义行:

root    ALL=(ALL:ALL) ALL
Run Code Online (Sandbox Code Playgroud)

替换root为您的用户名,重新启动,然后尝试是否有效。


Mit*_*tch 8

根据您在评论中与 @steeldriver 的对话,我猜测您的用户没有注销。

确保supersecretuser已注销的最简单方法是作为另一个用户在终端中输入who.

这样做时,我得到如下输出:

mitch@quartz:~$ who
mitch    :0           2014-09-08 09:49 (:0)
mitch    pts/0        2014-09-08 13:18 (:0.0)
Run Code Online (Sandbox Code Playgroud)

我只看到我自己。类似地,w在终端中输入会显示谁都已登录以及他们在做什么:

USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
mitch    :0       :0               09:49   ?xdm?  29:08   0.11s init --user
mitch    pts/0    :0.0             13:18    5.00s  0.06s  0.01s w
Run Code Online (Sandbox Code Playgroud)

您可以使用以下命令停止您的其他用户(我称之为 SSU):

pkill -STOP -u SSU
Run Code Online (Sandbox Code Playgroud)

但是,说实话,最简单的解决方案是在可能的情况下重新启动系统。