如何为Ubuntu中的用户添加,删除和授予sudo权限

时间:2020-03-21 11:48:56  来源:igfitidea点击:

本教程介绍如何在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