如何将用户添加到“sudo”组?

在/etc/sudoers中,我看到这个:
# Allow members of group sudo to execute any command after they have
# provided their password
# (Note that later entries override this, so you might need to move
# it further down)
%sudo ALL=(ALL) ALL

那么,我如何将用户添加到sudo组中呢?

这里还有其他人在尝试在Ubuntu 17上使用无密码sudo吗? - Adam Fowler
@AdamF 看这里。下次如果你想要更快的回复,请提一个新问题。**;-)** - Fabby
咖啡研磨机:你介意把你的接受答案改为最高赞的那个吗?那样做更好一些,完全不需要密码。 - Fabby
8个回答

sudo usermod -aG sudo <username>

a非常重要。没有它,他们将被从所有其他组中移除。为了使此生效,您需要重新启动您的shell/终端或注销并重新登录。

另请参阅:


我按照你的建议做了,但终端告诉我“bash: sudo: command not found”,为什么呢? - Teifi
@Teifi,这意味着你可能没有安装sudo,或者出现了一些奇怪的原因,它不在你的路径中。当你运行 which sudo时会发生什么? - n0pe
新的终端不够用。最后因为另外一个原因重新启动,现在它可以工作了。可能是登出/登录的问题。 - deed02392
我知道a是用来追加的,但我认为将追加作为默认行为会更有用。创建一个别名很容易,这样就可以使用groupadd group然后直接追加它。今天我忘记了-a参数,所以一次没有使用它执行命令。 - m3nda
虽然这是一个Ubuntu论坛,但对于CentOS,我不得不执行sudo usermod -aG sudo <username>命令。因为没有简单的方法让我找到这个信息。 - akki
在我重启计算机之前,这个信息对我来说真是太重要了。 - Code-Guru

你可以在用户管理图形界面中使用它(与创建用户的地方相同),或者在命令行中使用sudo adduser <username> sudo

3这也在Ubuntu文档中提到了,尽管他们所指的是管理员组而不是sudo组。 - icc97
10+1:这是一种最易于记忆、简单直观的方法,用来将用户添加到一个群组中! - Andrea Corbellini
1这给我一个错误,说用法:adduser [选项] 登录名\n adduser -D\n adduser -D [选项]\n - akki

你还可以使用图形界面。点击面板右上角的齿轮,然后选择“系统设置”,再选择“用户账户”。
你需要点击小锁按钮才能在此窗口中进行编辑。然后点击人物账户并选择“账户类型”的适当下拉菜单。

enter image description here


1我有Ubuntu 10.10,但我的图形界面在某种程度上被锁定了。它可以打开,但当按下按钮时没有任何反应。我猜想这与权限有关(我实际上是sudoer)。我该如何解决这个问题? - linello
你点击了“解锁”按钮吗? - daboross
不错的动画!我想做一个类似的gif动画来展示我的网络应用的新功能。我使用的是Lubuntu 16.04... - Stephane

如果你使用Unity作为你的桌面环境,这真的很简单。
如果你已经创建了一个用户,那么你只需将其从“标准”更改为“管理员”,否则请确保在创建新用户时选择了“管理员”。
在尝试更改之前,请不要忘记解锁。

enter image description here


2非常酷的GIF动画!+1 你是怎么做到的?把问题转移到这里:http://askubuntu.com/questions/234217/how-to-do-gif-animations-for-instructions-and-learning-purposes-over-gui/234219#234219。 - hhh
http://askubuntu.com/a/123515/25863 - Bruno Pereira

sudo gpasswd -a $USER sudo

这是我如何在基础镜像ubuntu:18.04上设置一个非root用户的步骤:
RUN \
    groupadd -g 999 foo && useradd -u 999 -g foo -G sudo -m -s /bin/bash foo && \
    sed -i /etc/sudoers -re 's/^%sudo.*/%sudo ALL=(ALL:ALL) NOPASSWD: ALL/g' && \
    sed -i /etc/sudoers -re 's/^root.*/root ALL=(ALL:ALL) NOPASSWD: ALL/g' && \
    sed -i /etc/sudoers -re 's/^#includedir.*/## **Removed the include directive** ##"/g' && \
    echo "foo ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers && \
    echo "Customized the sudoers file for passwordless access to the foo user!" && \
    echo "foo user:";  su - foo -c id

上述代码的作用如下:
- 创建了用户和组`foo`。 - 将用户`foo`添加到`foo`和`sudo`组中。 - 将`uid`和`gid`设置为`999`。 - 将主目录设置为`/home/foo`。 - 将shell设置为`/bin/bash`。 - `sed`命令对`/etc/sudoers`文件进行内联更新,以允许`foo`和`root`用户无需密码访问`sudo`组。 - `sed`命令禁用了`#includedir`指令,该指令允许子目录中的任何文件覆盖这些内联更新。

哦,天啊。你的地方就是我以前梦寐以求的那种地方,当时我的帽子还是深夜的颜色。你在哪里工作呢?算了,不用说了。我们俩都不需要知道。 - NerdyDeeds

我晚了一步,但这个答案可能会帮助那些在Docker容器中使用Ubuntu的人。
最近我创建了一个基于Ubuntu 16.04.1的Docker容器。
默认情况下,Docker Ubuntu镜像是一个精简版的Ubuntu,其中不包含绝大多数常用工具,包括sudo。
此外,默认情况下,用户以root身份登录到Docker容器中。
因此,我使用docker run命令启动容器,并安装了'sudo'软件包:
root@default:/# apt-get install sudo

运行命令adduser myuser sudo报错:adduser:用户'myuser'不存在。在阅读了这个answer之后,我首先运行了创建用户的命令:
root@default:/# adduser myuser

然后运行以下命令:
root@default:/# adduser myuser sudo
Adding user `myuser' to group `sudo' ...
Adding user myuser to group sudo
Done.

用户myuser已成功添加到sudo组。

使用usermod命令。使用以下命令添加sudo权限:
usermod -aG sudo <your username>

请注意,您将需要使用根帐户来执行此操作,或者使用具有sudo权限的其他帐户。如果由于某种原因您无法访问另一个帐户,并且您不知道根密码,则需要使用Ubuntu(或其他Linux发行版)Live CD,然后您需要chroot到您的Ubuntu文件系统中,并从chroot内部运行上述命令。