跳到主要内容

为某个用户添加sudo权限

确保sudo已经安装

如果没有安装,可以先安装

apt install sudo

最简单的方法:加入sudo

Debian/Ubuntu 默认的/etc/sudoers里已经授予了sudo组完整的 sudo 权限(使用时需要输入密码),所以通常把用户加进这个组就够了:

usermod -aG sudo newuser

组变更需要重新登录才会生效。如果需要更细粒度的控制(比如免密码、只允许特定命令),再按下面的方法编辑/etc/sudoers

编辑/etc/sudoers文件

不要用普通的编辑器,要用visudo来编辑它。

visudo

在文件中找到类似这样的行:

root ALL=(ALL:ALL) ALL

在该行下面添加一行,授予新用户 sudo 权限:

newuser ALL=(ALL:ALL) NOPASSWD: ALL
  • 第一个ALL:这指的是该规则适用于所有的主机。在/etc/sudoers的上下文中,主机指的是系统,可以精细控制哪些命令可以在哪些主机上执行。在大多数情况下,这里使用ALL是因为/etc/sudoers主要控制的是本地权限。
  • 第一对括号中的ALL:ALL:这是一个运行时的用户和组的指定。第一个ALL指用户可以以任何用户身份执行命令,第二个ALL指用户可以以任何组身份执行命令。
    • 第一个ALL(括号中的第一部分):表示该用户可以模拟任何用户(即,作为任何用户运行命令)。
    • 第二个ALL(括号中的第二部分):表示该用户可以模拟任何组(即,作为任何组的成员运行命令)。
  • 最后一个ALL:这指的是用户可以执行任何命令。实质上,这给了用户在使用sudo时几乎不受限制的权限。
  • 如果你希望用户在执行这些命令时输入密码,可以省略 NOPASSWD:
备注

使用sudo命令时,可以通过-u选项指定以另一个用户的身份执行命令。默认情况下,sudo会以root用户的身份运行命令,但如果你想以不同的用户身份执行命令,可以这样做:

sudo -u username command
备注

假设你想允许用户jane只能执行/usr/bin/apt update/usr/bin/apt upgrade命令,且执行这些命令时不需要密码,你可以添加以下行:

jane ALL=(ALL) NOPASSWD: /usr/bin/apt update, /usr/bin/apt upgrade