sudo命令旨在允许用户以其它用户身份运行命令,默认是root用户。

使用sudo而不是直接以root用户运行命令会更安全,因为您可为单个用户授予有限的管理权限,而无需让他们知道root用户密码。

在本教程展示两种向用户授予sudo权限的方法。一种是添加用户到添加用户到sudo组。另一种是使用visudo添加用户到/etc/sudoers文件。

在开始本教程之前,你当前登录到系统的用户必须具有sudo权限或者以root登录。否则你遇到权限拒绝的错误。

将提示你用户在sudoers文件中myfreax is not in the sudoers file.  This incident will be reported。

如果你忘记root密码可以进入单用户模式进行重置密码。你可在Grub启动的选项选择Advanced Options > Recovery进入单用户模式。

添加用户到sudo组

默认情况下,在Debian系统,sudo组的成员被授予sudo访问权限。如果将用户添加到sudo组,那么用户就可以授予sudo的访问权限。

修改用户所属组的命令是usermod命令,我们不建议直接修改用户主要组。这可能导致某些权限问题。最好的方式将用户追加到wheel组。

因此你将使用usermod命令的-aG选项,添加用户到wheel组中,-a表示追加用户到指定组,-G选项表示不要将用户从其它组中移除。

至此。您已在Debian成功创建sudo用户。您现在可以使用此用户在服务器上执行管理任务。

usermod -aG sudo username

要验证新用户是否具有sudo权限,只需要运行命令sudo whoami即可。如果用户具有sudo访问权限,命令将会打印root。

首次在使用sudo时,系统会提示您输入用户密码,注意这是是你当前用户的密码,不是root密码。

sudo whoami
root

添加用户到/etc/sudoers

/etc/sudoers文件中定义了用户和组的sudo权限的策略。此文件使您可以授予命令的自定义访问权限并设置自定义安全策略。

你应始终使用visudo命令来编辑/etc/sudoers文件。在保存文件时,此命令检查文件是否存在语法错误。

如果有任何错误,则不会保存文件。如果使用常规文本编辑器编辑文件,则语法错误可能会导致你失去sudo的访问权限。

visudo可以使用EDITOR环境变量指定的编辑器,默认情况下visudo使用vim编辑器

如果要使用nano编辑文件,请运行命令EDITOR=nano sudo visudo这将会更改编辑/etc/sudoers文件的编辑器。

EDITOR=nano sudo visudo

无密码运行sudo

假设您要允许用户不输入密码运行sudo命令。运行命令sudo visudo打开文件/etc/sudoers

myfreax  ALL=(ALL) NOPASSWD:ALL规则它将允许用户在运行sudo命令时,不需要输入密码即可运行。

这在编写脚本时特别有用。如你需要,可以追加此规则到/etc/sudoers文件的末尾。保存文件,然后退出编辑器。不要忘记用将myfreax改为你使用的用户名。

sudo visudo
myfreax  ALL=(ALL) NOPASSWD:ALL
/etc/sudoers

仅允许运行指定的命令

另一个典型示例是仅允许用户使用sudo运行指定的命令。例如,要仅允许用户使用sudo运行mkdir命令创建目录rmdir命令删除目录

myfreax ALL=(ALL) NOPASSWD:/bin/mkdir,/bin/rmdir规则将允许用户在不输入密码,仅运行指定rmdir和mkdir命令。

sudo visudo
myfreax ALL=(ALL) NOPASSWD:/bin/mkdir,/bin/rmdir
/etc/sudoers

/etc/sudoers.d

除了编辑sudoers文件外,还可以在/etc/sudoers.d目录创建文件并添加授权规则来实现相同目的。

如果在/etc/sudoers.d目录中创建新的配置文件,必须在/etc/sudoers文件使用includedir /etc/sudoers.d指令包含/etc/sudoers.d目录文件。

includedir指令默认是没有启用的,如需要启用,去掉注释即可。

这种方法使得对sudo权限管理更加可维护。文件名并不重要,但通常的做法是根据用户名命名文件。

结论

要向Debian中的用户授予sudo访问权限,只需将该用户添加到sudo组即可。如果您有任何疑问,请随时发表评论。