如何在 Ubuntu 中添加、删除和授予用户 Sudo 权限

本教程解释了如何添加、删除和授予 须藤 Ubuntu Linux 操作系统中用户的权限。 下面提供的步骤在 Ubuntu 20.04 LTS 版本中进行了测试。 但是,其他基于 DEB 的发行版的步骤相同。 在进入主题之前,让我们看看是什么 sudo 及其好处。

1. 什么是 sudo?

在 Linux 和 Unix 操作系统中,有一个特殊的用户名为 . root 用户可以在类 Unix 系统中做任何事情。 在日常活动中使用 root 用户可能很危险,不推荐使用。 一个错误的命令可以毁掉整个系统! 这就是 “sudo” 进来帮忙。 它允许授权用户以 root 级权限执行任务,即使他们不知道 root 用户密码。 这就是为什么创建一个普通用户并将他添加到 sudo 用户组在必要时执行管理任务。 因此,该用户在运行以 sudo.

2. 存在的好处 sudo

  • root 密码不需要与其他用户共享。
  • 用户无需知道 root 用户密码即可执行管理任务。
  • 执行管理任务时,将提示用户输入 sudo 在系统发生任何更改之前输入密码。 它应该让用户思考他们所做的事情的后果。
  • 这 admin 可以轻松地授予用户权限,并在不再需要时随时撤销。
  • 一些 Linux 发行版,用于 example Ubuntu,默认禁用 root 用户。 所以没有办法对root用户发起暴力攻击。 即使有人尝试,也毫无意义。 因为没有root密码可以破解。
  • 更重要的是, sudo 会话将在短时间内超时。 以防万一您在以 root 用户身份运行命令后让终端保持打开状态 sudo 权限,认证自动过期。 因此,其他用户无法执行任何进一步的管理任务。 默认情况下,密码在当前会话中存储 15 分钟。 之后,您需要再次输入密码。
  • 监控 sudo 用户的命令行活动。 sudo 在 /var/log/auth.log 文件中添加用户运行的命令的日志条目。 如果有任何问题,您可以查看这些命令并尝试找出问题所在。

这些是成为 sudo 用户。 现在,让我们继续看看如何在 Linux 中为用户添加、删除和授予 Sudo 权限

3. 在 Ubuntu 中添加、删除和授予用户 Sudo 权限

首先,我们将创建一个普通用户。

3.1。 在 Linux 中添加新用户

首先,创建一个普通用户,对于 example “Ubuntu服务器”. 为此,请运行:

$ 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
在 Ubuntu Linux 中创建新用户

已创建一个名为“ubuntuserver”的新用户。

3.2. 在 Linux 中向用户授予 Sudo 权限

在某些 Linux 系统中,对于 example Arch Linux,需要安装 “sudo” 在创建新文件之前打包 sudo 用户。

# pacman -S sudo

在 Debian 上:

# apt install sudo

在 Ubuntu 服务器和桌面上,”sudo”默认安装。

现在将新创建的用户添加到 sudo 使用以下命令进行分组:

$ sudo adduser ubuntuserver sudo

样本输出:

Adding user `ubuntuserver' to group `sudo' ...
Adding user ubuntuserver to group sudo
Done.
在 Linux 中向用户授予 Sudo 权限

名为“ubuntuserver”的用户已被授予 sudo 权限。

也可以通过以下命令添加用户 sudo 团体。

$ sudo usermod -aG sudo ubuntuserver

验证用户是否在 sudo 组,运行:

$ sudo -l -U ubuntuserver

样本输出:

Matching Defaults entries for ubuntuserver on ostechnix:
    env_reset, mail_badpass,
    secure_path=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin

User ubuntuserver may run the following commands on ostechnix:
    (ALL : ALL) ALL
检查用户 sudo Linux中的组验证用户是否在 sudo 团体

在这里, “(全部:全部)全部” line 表示用户拥有无限权限,可以在系统上运行任何命令。 在这种情况下,“ubuntuserver”用户位于 sudo 用户组,他现在可以执行各种管理任务。

如果打开内容 sudoers 文件;

$ sudo cat /etc/sudoers

您会看到如下所示的一些行。

[...]
# User privilege specification
root    ALL=(ALL:ALL) ALL

# Members of the admin group may 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 group 可以执行任何命令。

  • 第一个 ALL 是允许的用户。
  • 第二个 ALL 是主机。 如果您将相同的“sudoers”文件分发给许多主机,用户可以在所有主机上执行管理命令。
  • 第三个是运行命令时的用户。
  • 最后一个是允许的命令。

3.3. 验证 Sudo 用户

要验证用户是否能够执行管理任务,请注销并以新用户身份重新登录。

或者,您可以立即以其他用户身份登录 sudo 特权,而不必从当前会话中注销,如下所示。

$ sudo -i -u <username>

例子:

$ sudo -i -u ubuntuserver

现在,运行任何带有前缀“sudo“如下所示。

$ sudo apt update
运行命令 sudo 权限运行命令 sudo 权限

3.4. 删除 Sudo 用户

你可以删除 sudo 用户的权限,而不必完全删除他/她。 在 Ubuntu 系统中执行此操作时必须小心。 不要从“sudo”组。应该至少有一个 sudo 系统中的用户。

撤销 sudo 来自用户的权限,命令将是:

$ sudo deluser ubuntuserver sudo

上述命令将从“sudo“ 团体。

样本输出:

Removing user `ubuntuserver' from group `sudo' ...
Done.

请注意,此命令只会从 sudo 组,但它不会从系统中永久删除用户。

或者,运行以下命令撤销 sudo 来自用户的许可:

$ sudo gpasswd -d ubuntuserver sudo

现在,该用户成为普通用户,无法执行任何管理任务 sudo 允许。

验证用户是否真的从“sudo” 组,运行:

$ sudo -l -U ubuntuserver

样本输出:

User ubuntuserver is not allowed to run sudo on ostechnix.

这 sudo 已从用户那里删除权限。

3.5. 永久删除用户

在上述步骤中,我们只从“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

本指南也适用于 Alpine Linux、Arch Linux 和 CentOS 系统。 检查以下指南以添加、删除和授予 sudo Arch Linux 和 CentOS Linux 发行版中用户的权限。

  • 在 Alpine Linux 中为用户添加、删除和授予 Sudo 权限
  • 在 Arch Linux 中添加、删除和授予用户 Sudo 权限
  • 在 CentOS 中添加、删除和授予用户 Sudo 权限

希望这可以帮助。

相关阅读:

  • 如何在 Linux 中更改 Sudo 密码超时
  • 如何在 Linux 中更改默认 Sudo 日志文件
  • 如何恢复用户的 Sudo 权限
  • 如何在你的 Linux 系统中查找所有 Sudo 用户
  • 如何在 Linux 中运行没有 Sudo 密码的特定命令

特色图片由 穆罕默德·哈桑关注.