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
仅允许运行指定的命令
另一个典型示例是仅允许用户使用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.d
除了编辑sudoers文件外,还可以在/etc/sudoers.d
目录创建文件并添加授权规则来实现相同目的。
如果在/etc/sudoers.d
目录中创建新的配置文件,必须在/etc/sudoers
文件使用includedir /etc/sudoers.d
指令包含/etc/sudoers.d
目录文件。
includedir
指令默认是没有启用的,如需要启用,去掉注释即可。
这种方法使得对sudo权限管理更加可维护。文件名并不重要,但通常的做法是根据用户名命名文件。
结论
要向Debian中的用户授予sudo访问权限,只需将该用户添加到sudo组即可。如果您有任何疑问,请随时发表评论。