sudo命令旨在允许用户以其它用户身份运行命令,默认情况下为root用户。使用sudo而不是以root用户身份登录会更安全,因为您可以为单个用户授予有限的管理权限,而无需让他们知道root用户密码。
本教程展示两种向用户授予sudo权限的方法。包括使用adduser命令创建用户,usermod命令添加用户到sudo组。使用visudo添加用户到/etc/sudoers文件,使用nano编辑器修改sudoer,无密码运行sudo运行命令,仅允许运行指定的命令。
添加用户到sudo组
向用户授予sudo权限的最快捷方法是将用户添加到sudo组。该组的成员可以通过sudo
以root用户执行任何命令,并在使用sudo
时提示使用密码进行身份验证。例如我们要将用户myfreax
添加sudo组。首先使用adduser命令添加用户myfreax
。
sudo adduser myfreax
输出将如下所示:
[sudo] password for 你的当前用户: Adding user `myfreax' ...
Adding new group `myfreax' (1001) ...
Adding new user `myfreax' (1001) with group `myfreax' ...
Creating home directory `/home/myfreax' ...
Copying files from `/etc/skel' ...
New password:
Retype new password:
passwd: password updated successfully
Changing the user information for myfreax
Enter the new value, or press ENTER for the default
Full Name []:
Room Number []:
Work Phone []:
Home Phone []:
Other []:
Is the information correct? [Y/n] y
adduser
命令默认会为用户创建家目录。该命令还会从/etc/skel
目录中复制文件到myfreax
用户的家目录中。
在创建用户myfreax
的过程还将提示你填写用户的密码,第一次提示密码是当前用户的密码,第二次是要创建用户myfreax
的密码。myfreax
用户的其它信息可以留为空,按回车enter
即可跳过。最后输入Y
确定创建用户。
为了不改变用户的主要组,我们将使用-aG
选项调用usermod命令将用户添加到sudo组中:
sudo usermod -aG sudo username
在大多数情况下,使用此方法授予sudo权限就已足够。要确认是否已将用户useranme添加到sudo组,请键入以下命令,id命令将打印用户username的所有组,并使用grep命令过滤标准输出:
sudo id username | grep sudo
你将会看到以下输出:
uid=1001(test1223) gid=1001(test1223) groups=1001(test1223),27(sudo)
sudo
字符将会被高亮。你也可以直接切换到新创建的用户使用su命令。首先从当前用户切换到用户username,你将执行以下命令:
sudo su - username
现在我们已经切换用户username,我们可以尝试在用户username使用sudo执行whoami
命令:
sudo whoami
系统会要求您输入用户username的密码:
[sudo] password for username:
如果用户具有sudo的权限,该命令将打印root
。否则,您将收到一条错误消息,提示用户不在sudoers文件中user is not in the sudoers file
。
添加用户到/etc/sudoers
在/etc/sudoers
文件中定义了用户和组的sudo权限的策略。此文件使您可以授予对命令的自定义访问权限并设置自定义安全策略。
您可以通过编辑/etc/sudoers
文件或在/etc/sudoers.d
目录中创建新的配置文件来配置用户sudo访问权限。/etc/sudoers.d
目录将使用includedir /etc/sudoers.d
指令包含到在sudoers文件中。includedir
指令默认是没有启用的,如需要启用,去掉注释即可。
你应始终使用visudo
命令来编辑/etc/sudoers
文件。保存文件时,此命令检查文件是否存在语法错误。如果有任何错误,则不会保存文件。如果使用常规文本编辑器编辑文件,则语法错误可能会导致失去sudo的访问权限。
visudo
使用EDITOR
环境变量指定的编辑器,默认情况下visudo
使用nano编辑器。如果要使用vim编辑文件,请运行以下命令更改EDITOR
环境变量:
EDITOR=vim sudo visudo
无密码运行sudo
在本教程中,我们将使用nano编辑器,假设您要允许用户运行sudo命令而无需输入密码。请运行以下visudo
命令打开文件/etc/sudoers
:
sudo visudo
以下是符合/etc/sudoers
文件定义的规则,它将允许用户在运行sudo命令时,无需输入密码即可运行。这在编写脚本时特别有用。如你需要,可将以下行添加到/etc/sudoers
文件的末尾:
保存文件,然后退出编辑器。不要忘记用将username
改为你使用的用户名。
仅允许运行指定的命令
另一个典型示例是仅允许用户使用sudo
运行指定的命令。例如,要仅用户使用sudo运行mkdir
命令创建目录和rmdir
命令删除目录。可以在/etc/sudoers
文件中定义以下规则:
除了编辑sudoers文件外,还可以在/etc/sudoers.d
目录中使用授权规则创建一个新文件来实现相同目的。添加到该目录下文件内容的规则与添加到/etc/sudoers
文件中的规则相同。
[sudo] password for 你的当前用户: Adding user `myfreax' ...
Adding new group `myfreax' (1001) ...
Adding new user `myfreax' (1001) with group `myfreax' ...
Creating home directory `/home/myfreax' ...
Copying files from `/etc/skel' ...
New password:
Retype new password:
passwd: password updated successfully
Changing the user information for myfreax
Enter the new value, or press ENTER for the default
Full Name []:
Room Number []:
Work Phone []:
Home Phone []:
Other []:
Is the information correct? [Y/n] y
2
最后记得开启includedir /etc/sudoers.d
指令包含/etc/sudoers.d
目录下的文件到在/etc/sudoers
文件中。这种方法使得对sudo权限管理更加可维护。文件名并不重要,但通常的做法是根据用户名命名文件。
结论
要向Debian中的用户授予sudo访问权限,只需将该用户添加到sudo组即可。如果您有任何疑问,请随时发表评论。
还没有评论,来说两句吧...