[Explained] 如何在 Ubuntu 中将用户添加到 Sudoers

在 Ubuntu 中为用户授予 sudo 权限:深入解析

在学习如何在 Ubuntu 系统中赋予用户 sudo 权限之前,我们需要理解此操作的必要性。例如,当您需要在 Ubuntu 上进行服务管理,或安装、更新软件时,您可能会遇到“权限被拒绝”的提示。

这种情况下,通常会要求您以 root 或超级用户身份执行命令。然而,出于安全考虑,我们不推荐直接使用 root 账户进行操作。 如果用户不慎修改了某些设置,以 root 身份运行命令可能会对系统造成无法预料的损害。

Ubuntu 作为最受欢迎的 Linux 发行版之一,引入了 sudo 功能,它允许用户在不直接以 root 身份登录的情况下,以提升的权限运行命令。

本文将详细解释 sudo/sudoers 的概念、为什么需要使用 sudo 权限,以及如何在 Ubuntu 操作系统中添加 sudo 用户。

深入了解 Sudo/Sudoers

为何不直接使用 su 命令切换到 root 用户呢? 使用 su 命令切换用户时,系统会要求您输入 root 密码,然后您就可以执行任何操作,包括添加新文件、安装软件或进行系统更改。 但问题在于,您可能忘记以 root 身份注销,一个简单的输入错误就可能删除重要的文件或整个硬盘驱动器。

Sudo 是 “superuser do” 的缩写,意为“以超级用户身份执行”。sudo 用户拥有更高的权限,他们可以安装软件、更新系统甚至更改系统设置。 Sudoer 指的是拥有这些权限的用户。 在 Ubuntu 上,sudo 用户在执行任何需要提升权限的命令时都必须使用 “sudo” 关键字。 但是,一旦命令执行完毕,您无需注销。

如果您的 Ubuntu 系统中有多个用户,并非所有用户都拥有 sudo 权限。 通常,在安装过程中创建的第一个用户会默认获得 sudo 权限。 只有在 sudoers 文件或 sudoers 组中的用户才能执行 sudo 命令。

  • Sudoers 文件:它是一个配置文件,用于定义哪些用户可以使用 sudo 以及如何使用。
  • Sudoers 组:这是一个特殊的用户组,其中的成员拥有 sudo 权限。

授予用户 sudo 权限的必要场景

在以下情况下,您可以考虑为用户授予 sudo 权限:

  • 您的团队需要执行需要 root 权限的任务,例如安装软件或更新系统。
  • 您希望限制用户对系统中某些文件或目录的访问,同时又不想授予他们完全的 root 权限。
  • 您有一个临时用户需要执行一次性需要 root 权限的任务,例如安装或配置软件。

赋予用户 sudo 权限的重要性

  • 提升系统安全性:无需允许用户直接以 root 用户身份登录,从而降低系统面临的潜在威胁和错误风险。sudo 权限仅赋予用户所需的最低权限。
  • 自定义权限:您可以指定 sudo 用户可以运行哪些命令,以及何时可以运行这些命令。 您还可以设置是否需要密码才能执行这些命令。
  • 方便用户监控:您可以检查 /var/log/auth.log 文件,查看 sudo 用户在系统上执行的所有命令,从而方便监控用户的操作。

将用户添加到 sudoers 文件的先决条件

  • 一个具有 sudo 权限的用户账户:您需要登录具有 sudo 权限的账户才能添加新的 sudo 用户。
  • 目标用户名:您必须知道要添加到 sudoers 文件或组中的用户名称。
  • 文本编辑器:Ubuntu 默认使用 Nano 作为编辑器,您也可以选择其他编辑器。

将用户添加到 sudoers 文件

将用户添加到 sudoers 文件有多种方法。 但在此之前,我们需要创建一个新的用户。

例如,我们创建一个名为 “titus” 的新用户,可以按照以下步骤操作:

  • 登录具有 sudo 权限的用户账户,然后运行以下命令:sudo adduser titus,您可以将 “titus” 替换为您要创建的用户名。

  • 输入您的密码。 命令行会提示您输入密码。
  • 设置新用户的密码,并确认。

  • 按照提示操作(您可以使用默认值),然后输入 “Y” 确认所有信息。

现在,您已经成功创建了一个新用户。

在 Ubuntu 中,我们有两种方法可以赋予用户 sudo 权限:

#1:将用户添加到 sudo 组

接下来,我们将刚刚创建的用户添加到 sudo 组。 以另一个 sudo 用户或 root 用户身份登录后,运行以下命令:

sudo usermod -aG sudo username

将 “username” 替换为您要赋予 sudo 权限的用户。 对于本例,命令为:

sudo usermod -aG sudo titus

这样,新用户就被成功添加到了 sudo 组中。

#2:将用户添加到 Sudoers 文件

我们知道,典型的 Linux 系统中有不同的用户,并且可以为他们分配不同的文件和目录权限。 例如,可以允许用户对文件进行“读取”、“写入”或“执行”操作。

我们可以通过在 sudoers 文件中进行定义,来指定哪些用户可以使用 sudo 以及如何使用。 sudoers 文件的路径是 /etc/sudoers。

假设您已经有一个没有 sudo 权限的用户,可以按照以下步骤操作:

  • 打开您的终端。
  • 使用以下命令打开 sudoers 文件:
sudo visudo

系统会提示您输入密码。

  • 编辑该文件。 运行该命令后,您将看到类似以下的内容:

假设我有一个名为 “kamunya” 的用户,我想授予他所有 sudo 权限。

找到如下所示的部分:

# User privilege specification
root    ALL=(ALL:ALL) ALL

现在,我们可以添加一行,允许 “kamunya” 拥有所有 sudo 权限,如下所示:

kamunya    ALL=(ALL:ALL) ALL
  • 保存并退出。 您可以使用快捷键:Ctrl+O 保存更改,Ctrl+X 退出。

通过编辑 sudoers 文件,我们成功添加了一个新的 sudo 用户。 如果我想为 “kamunya” 用户赋予特定的权限,例如允许他在无需密码的情况下更新软件,可以按照相同的步骤操作,但是添加以下这一行:

kamunya ALL=(ALL:ALL) NOPASSWD: /usr/bin/apt-get update, /usr/bin/apt-get upgrade

如何检查用户是否拥有 sudo 权限

完成上述操作后,您可能仍不确定用户是否拥有 sudo 权限。 可以使用以下方法来验证:

使用 sudo 命令

比如,我们检查名为 “titus” 的用户是否是 sudoer, 可以使用以下命令:

sudo -l -U titus

请将 “titus” 替换为要检查的用户名。

如果用户是 sudoer,您会看到类似以下的输出:

如果用户没有 sudo 权限,则会收到一个错误提示,指出不允许该用户在当前系统上运行 sudo 命令。

检查 sudo 组

当您创建 sudo 用户时,系统会自动将该用户添加到以用户名为名称的组中。 比如,我们有一个名为 “tk” 的 sudo 用户,可以用以下命令来检查他是否属于某个组:

groups tk

请将 “tk” 替换为要检查的用户名。

您会看到类似以下的输出:

如何删除 sudo 用户

在某些情况下,您可能需要删除 sudo 用户。 例如,您在配置时出现错误,或者用户执行完了一次性的任务。

您可以使用 GUI 或命令行从 Ubuntu 系统中删除用户。 这里介绍使用命令行删除用户的方法:

  • 使用命令 sudo deluser username, 将 “username” 替换为要删除的用户账户。 此方法会删除用户,但会保留用户的文件。

例如,我们删除了 “kamunya” 用户。

如果要删除用户的文件,请运行以下命令:

sudo deluser --remove-home username

在本例中,命令为:

sudo deluser --remove-home kamunya

在 sudoers 文件中管理用户的最佳实践

  • 使用 visudo 命令:如果选择通过编辑 sudoers 文件来添加 sudo 用户,请始终使用 visudo 命令。 完成后,检查是否有拼写错误,然后保存并退出编辑器。
  • 使用组:每次需要添加新用户时,最好将他们添加到组中,而不是直接将个人添加为 sudo 用户。您可以根据不同权限创建不同的组,例如“管理员”和“开发人员”。
  • 记录访问权限:记录所有被授予 sudo 权限的人员以及他们可以执行的操作。 这有助于新员工快速熟悉系统。
  • 监控访问:定期监控添加到 sudoers 组的不同用户的登录情况,并根据需要删除用户或更改权限。

结论

Ubuntu 是最受系统管理员和程序员欢迎的操作系统之一。 然而,您必须确保为正确的用户授予正确的权限。

通过本文,您现在应该了解了什么是 sudoer,以及如何在 Ubuntu 中添加 sudoer 的不同方法。 这样做可以避免用户直接以完全 root 权限登录系统,而是以有限的权限来完成他们的工作。

作为系统管理员,您还可以探索一些 Linux 性能命令。