如何赋予Linux用户sudo权限?

60

我想要给一个用户sudo权限。我应该在终端中输入什么?


15
这个问题显然有很多人需要帮助,你应该考虑重新开放它。 - Adam Boostani
如果您想重新打开问题,您应该提供额外的细节,以符合帮助中心规定的有效条件。 - Roman C
3
这个问题应该被移动到正确的网站,而不是关闭。 - Matthew
3个回答

70

您需要运行visudo并在打开的编辑器中编写:

igor    ALL=(ALL) ALL

这行代码授予用户igor所有权限。

如果您想允许用户运行仅限于某些命令,您需要在此行中列出这些命令:

igor    ALL=(ALL) /bin/kill, /bin/ps

如果按照上述步骤操作后,用户(在本例中为igor)仍无法获得完全的sudo访问权限(即可以执行sudo ls但无法执行sudo mount -a),可能的原因是什么? - puk
@puk 这取决于您在 /etc/sudoers 中列出的命令;当您写入“ALL”时,用户可以运行所有命令。 - Igor Chubin

58

这个答案可以做到您所需的,尽管通常情况下您不会将特定的用户名添加到sudoers中。相反,您可以创建一个sudoers组,并在需要时将您的用户添加到该组中。这样,当给用户sudo权限时,您只需要使用visudo一次即可。

如果您使用的是Ubuntu,则该组很可能已经设置好并被称为admin

$ sudo cat /etc/sudoers
#
# This file MUST be edited with the 'visudo' command as root.
#

...

# Members of the admin group may gain root privileges
%admin ALL=(ALL) ALL

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

# See sudoers(5) for more information on "#include" directives:

#includedir /etc/sudoers.d

在其他发行版中,比如Arch和一些其他发行版中,它通常称为wheel,你可能需要进行设置:Arch Wiki

要让属于wheel组的用户在命令前加上"sudo"时拥有完全的root权限,请取消以下行的注释: %wheel ALL=(ALL) ALL

还要注意,在大多数系统中,visudo将读取EDITOR环境变量或默认使用vi。因此,您可以尝试使用vim作为编辑器,执行EDITOR=vim visudo

要将用户添加到组中,您应该以root身份运行:

# usermod -a -G groupname username

其中groupname是你的组名(例如adminwheel),而username是用户名(例如john)。


-3
编辑/etc/sudoers文件,可以手动编辑或使用visudo应用程序。 记住:系统从顶部到底部读取/etc/sudoers文件,因此您可以通过将下一个设置放在下面来覆盖特定设置。 为了安全起见,请在底部定义您的访问设置。

7
如果您手动编辑它,可能会损坏并破坏您的sudo访问权限。 没有理由不使用visudo - ripper234
同意上一条评论。另外,考虑添加命令作为示例。 - entpnerd
@ripper234 有多个原因,当编写基础设施即代码时,您无法运行cli实用程序来配置单个服务器...您被迫手动执行。 - Yosef SL

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接