如何为Ubuntu中的用户添加,删除和授予sudo权限
本教程介绍如何在Ubuntu Linux操作系统中添加,删除和授予sudo权限。
下面提供的步骤在Ubuntu 20.04 LTS版本中进行了测试。
但是,这些步骤在其他基于DEB的分布上也是如此。
在进入主题之前,让我们看看是什么sudo及其利益。
什么是sudo用户?
在Linux和UNIX操作系统中,有一个特殊的用户名为root。
root用户可以在UNIX系统中执行任何操作和所有内容。
使用root用户日常活动的日常活动可能是危险的,不推荐。
一个错误的命令可以摧毁整个系统!这是"sudo"的帮助。
它允许授权用户使用根级权限执行任务,即使它们不知道root用户密码。
这就是为什么创建常规用户很重要,并将他添加到sudo用户组,以便在必要时执行管理任务。
因此,当运行与sudo的运行命令时,该用户可以充当常规用户和管理用户。
sudo的好处
- 根密码不需要与其他用户共享。
- 用户不需要知道root用户密码以执行管理任务。
- 执行任务时,将在系统中发生任何更改之前提示用户在Sudo密码。它应该让用户思考他们正在做的事情的后果。
- 如果不再需要,可以轻松授予用户并随时撤销管理权限。
- 某些Linux发行版(例如Ubuntu)默认禁用root用户。因此,无法启动root用户的蛮力攻击。即使有人尝试,它也会毫无意义。因为没有root密码来破解。
- 更重要的是,Sudo会议将在短时间内超时。仅在运行命令用sudo权限运行命令后留下终端打开的情况下,身份验证会自动过期。因此,其他用户无法执行任何进一步的管理任务。默认情况下,密码在当前会话中存储15分钟。之后,我们需要再次输入密码。
- 监控Sudo用户的命令行活动。 sudo在/var/log/auth.log文件中添加了用户运行的命令的日志条目。如果有任何问题,可以查看这些命令并尝试弄清楚出错了。
这些是作为sudo用户的一些优点。
现在,让我们继续,看看如何在Linux中的用户添加,删除和授予sudo权限
将sudo权限添加,删除和授予ubuntu中的用户
首先,我们将创建一个常规用户。
1.在Linux中添加新用户
首先,创建常规用户,例如"Ubuntuserver"。
为此,运行:
$sudo adduser ubuntuserver
示例输出:
Adding user `ubuntuserver' ... Adding new group `ubuntuserver' (1001) ... Adding new user `ubuntuserver' (1001) with group `ubuntuserver' ... Creating home directory `/home/ubuntuserver' ... Copying files from `/etc/skel' ... New password: Retype new password: passwd: password updated successfully Changing the user information for ubuntuserver Enter the new value, or press ENTER for the default Full Name []: ubuntu 20.04 server Room Number []: Work Phone []: Home Phone []: Other []: Is the information correct? [Y/n] y
已创建名为"Ubuntuserver"的新用户。
2.将sudo权限授予Linux中的用户
在某些Linux系统中,例如Arch Linux,我们需要在创建新的sudo用户之前安装"sudo"包。
# pacman -S sudo
在Debian:
# apt install sudo
在Ubuntu Server和Desktops上,默认安装"sudo"。
现在使用以下命令将新创建的用户添加到sudo组:
$sudo adduser ubuntuserver sudo
示例输出:
Adding user `ubuntuserver' to group `sudo' ... Adding user ubuntuserver to group sudo Done.
称为"Ubuntuserver"的用户已被授予sudo权限。
我们还可以使用以下命令将用户添加到sudo组。
$sudo usermod -aG sudo ubuntuserver
要验证用户是否在sudo组中,请运行:
$sudo -l -U ubuntuserver
示例输出:
Matching Defaults entries for ubuntuserver on theitroad: env_reset, mail_badpass, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin\:/snap/bin User ubuntuserver Jan run the following commands on theitroad: (ALL : ALL) ALL
其中"(全部:全部)所有"行意味着用户具有无限制的权限,并且可以在系统上运行任何命令。
在这种情况下,"Ubuntuserver"用户位于sudo用户组中,现在他现在可以执行所有类型的管理任务。
如果打开sudoers文件的内容;
$sudo cat /etc/sudoers
你会看到一些如下所示。
[...] # User privilege specification root ALL=(ALL:ALL) ALL # Members of the admin group Jan 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
正如我们在上面的输出中看到的,Sudo组的所有成员都可以执行任何命令。
- 首先是用户允许的。
- 第二个是主持人。如果将相同的"sudoers"文件分发给许多主机,则用户可以在所有主机上执行管理命令。
- 第三个是我们运行命令时的用户。
- 最后一个是允许的命令。
2.1. 验证sudo用户
要验证,如果用户能够执行管理任务,请注销并以新用户身份登录。
或者,我们可以立即使用sudo权限作为其他用户登录,而无需从当前会话中退出,如下面。
$sudo -i -u <username>
例子:
$sudo -i -u ubuntuserver
现在,使用下面的前缀"sudo"的任何命令运行。
$sudo apt update
3.删除sudo用户
我们可以从用户删除sudo权限,而无需完全删除他/她。
在Ubuntu系统中这样做时,我们必须小心。
不要从"sudo"组中删除真实管理员。
系统中应该至少有一个sudo用户。
要从用户撤消sudo权限,命令是:
$sudo deluser ubuntuserver sudo
上面的命令将从"sudo"组中删除名为"ubuntuserver"的用户。
示例输出:
Removing user `ubuntuserver' from group `sudo' ... Done.
请注意,此命令只能从sudo组中删除用户的"ubuntuserver",但它不会从系统中永久删除用户。
或者,运行以下命令以撤消用户的sudo权限:
$sudo gpasswd -d ubuntuserver sudo
现在,用户成为常规用户,无法使用sudo权限进行任何管理任务。
要验证用户是否真的已从"sudo"组中删除,运行:
$sudo -l -U ubuntuserver
示例输出:
User ubuntuserver is not allowed to run sudo on theitroad.
sudo权限已从用户删除。
4.永久删除用户
在上面的步骤中,我们只删除了"sudo"组的用户。
但是用户仍然存在于系统中。
要完全从Linux系统中删除用户,请以root或者sudo用户身份登录并运行:
$sudo deluser <username>
例子:
$sudo deluser ubuntuserver
如果我们想与他们的主目录和邮件假脱机一起删除用户,请运行:
$sudo deluser --remove-home ubuntuserver
示例输出:
Looking for files to backup/remove ... Removing files ... Removing user `ubuntuserver' ... Warning: group `ubuntuserver' has no more members. Done.
有关更多详细信息,请检查人文页。
$man adduser
$man deluser
$man sudo