如何使用命令行将新用户添加为sudoer?


820

使用添加用户后adduser,除非注销然后再次登录,否则无法通过“ 系统”>“管理”>“用户和组”看到它。那是正常的吗?

另外,我可以将新添加的用户设置为sudoer还是仅在添加后才需要更改它?如何通过外壳做到这一点?

最后,我可以删除最初安装Ubuntu时创建的原始用户,还是该用户某种程度上是“特殊”用户?

Answers:


1024

只需将用户添加到sudo组中即可

sudo adduser <username> sudo

该更改将在用户下次登录时生效。

之所以有效,/etc/sudoers是因为已预先配置为向该组的所有成员授予权限(您不必对此进行任何更改):

# Allow members of group sudo to execute any command
%sudo   ALL=(ALL:ALL) ALL

只要您可以访问与“原始”用户属于同一组的用户,就可以删除旧用户。


实际上,您的新用户还应该有其他组。如果您在“用户设置”中将用户的帐户类型设置为“管理员”,它将被放置在至少所有以下组中:

adm sudo lpadmin sambashare

由于您的系统配置可能会有所不同,因此建议查看一下输出groups <username>以查看通常使用的组。


1
@Dziamid我不确定该sudo小组的目的是什么。让我们找出答案。
ændrük

7
请注意,该admin组在12.04 LTS中不存在。
瑞安(Ryan)2012年

18
问题是关于现有的用户,但如果它是一个新的用户“命令的adduser <用户名>须藤”都必须由前面“命令的adduser <用户名>”。否则,将收到错误消息“用户<用户名>不存在”。
Peter Mortensen

9
这对我不起作用。仍然不能使用sudo。
chovy

10
必须再次登录才能正常工作。
PeterM 2015年

193

我做了

sudo usermod -a -G sudo <username>

按照这里的建议。


28
组sudo不存在
Aaron Esau

这里唯一可行的解​​决方案。Ubuntu 16
Makan Tayebi

5
对于现有用户,这是正确的解决方案。应该将其标记为答案。
Yokai

3
不要忘记-a标记,否则您将从所有组中删除用户sudo
RousseauAlexandre '18

@RousseauAlexandre绝对!最重要的是,特别是如果您尝试将自己添加到非sudo群组中,并且您是计算机上仅有的具有sudo特权的群组...without -a you just removed yourself from the sudo group!
Timothy LJ Stewart

79

打开sudoers文件:sudo visudo/etc/sudoers在中定义的编辑器中打开文件$EDITOR(可能是GNU nano-如果不是您想要的变量,请设置该变量,例如,export EDITOR="nano"然后重试sudo visudo)。

将以下行添加到文件末尾。

username ALL=(ALL) ALL   # Change the user name before you issue the commands

然后使用Ctrl+ 执行WriteOut O。编辑器将要求您输入要写入的文件名。默认值是一个临时文件,visudo供保存到实际sudoers文件之前检查语法错误。按Enter接受它。用Ctrl+ 退出nano编辑器X

做完了!


9
不建议将一个用户明确地添加到sudoers文件中,而不是简单地将该用户添加到适当的组中sudo
2014年

3
使用sudo visudo可以输出到/etc/sudoers.tmp,当离开编辑器时,它将自己覆盖/ etc / sudoers
爬升

1
和visudo会验证语法以确保没有错误
mchid 2015年

如果使用this则出现语法错误。
jheriko

2
其他解决方案非常适合带有内置sudo组的OS ,但是对于偶尔没有专用sudo组的系统,此解决方案也可以使用。我唯一的建议是您可能希望避免将sudo其置入过程中,因为可能尚未设置!容易解决,su -只需执行即可visudio。这适用于Gentoo。
tresf

30

我必须补充一件事,我确信很多人不了解:

一旦完成了adduser "username",您仍然可以返回并执行adduser "username" sudo,然后它将正确地将该用户添加到组中。

实际上,它不会像那样第一次起作用sudo adduser username sudo。这会给你一个错误。总之,这意味着您必须先创建用户帐户,然后才能将其添加到组中。


11

组的所有成员admin默认情况下在Ubuntu中允许使用sudo,因此最简单的方法是将用户帐户添加到admin组。

如果您不希望授予用户帐户完全的root访问权限,则需要使用visudo编辑/ etc / sudoer文件(以确保该文件中没有语法错误并完全失去sudo功能)。您指定该用户(或新组)可以以root用户身份执行的命令。

sudoer手册会给你更多这方面的信息。您可以指定特定用户/组允许哪些命令以root用户身份执行。


1
我以为那是该wheel小组的目的?
Marco Ceppi

@Marco我不熟悉。你能解释更多吗?
ændrük

@MarcoCeppi,在某些系统上使用wheel组来限制用户可以使用的内容su。Ubuntu使用sudo和admin组。
psusi 2011年


10

以下代码段授予root用户访问用户名的权限,而无需以root用户身份明确登录。

确保首先将用户添加到sudo组。在Ubuntu 16.04.1 LTS上测试。

sudo adduser username sudo
sudo sh -c "echo 'username ALL=NOPASSWD: ALL' >> /etc/sudoers"

在Ubuntu上能用吗?
jowan sebastian

1
是的已在Ubuntu 16.04上进行了检查
Sandeep

2
为什么不在一行中:useradd -m username --groups sudo
艾丹·梅伦
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.