简介
在 Linux 系统中,管理用户权限和访问控制是系统管理和安全的基本方面。sudo
命令是“superuser do”的缩写,它允许授权用户以提升的权限执行命令,通常是超级用户或 root 账户的权限。
本实验将指导你在 Linux 环境中为用户授予和限制权限的过程。你将学习如何将用户添加到 sudo 组,使他们能够执行管理任务,以及如何将他们的权限限制在特定命令上。这些技能对于维护安全的系统至关重要,因为在这些系统中,需要仔细控制对敏感操作的访问。
在 Linux 系统中,管理用户权限和访问控制是系统管理和安全的基本方面。sudo
命令是“superuser do”的缩写,它允许授权用户以提升的权限执行命令,通常是超级用户或 root 账户的权限。
本实验将指导你在 Linux 环境中为用户授予和限制权限的过程。你将学习如何将用户添加到 sudo 组,使他们能够执行管理任务,以及如何将他们的权限限制在特定命令上。这些技能对于维护安全的系统至关重要,因为在这些系统中,需要仔细控制对敏感操作的访问。
在这一步中,你将了解 Linux 中的用户管理以及 sudo
命令的基础知识。你将创建一个新用户,并了解如何授予他们管理权限。
sudo
命令允许授权用户以其他用户(通常是超级用户 (root))的安全权限执行命令。这提供了一种在不登录为 root 用户的情况下执行管理任务的方法,这被认为是一种安全最佳实践。
让我们从创建一个新用户账户开始。打开你的终端并执行以下命令:
sudo adduser trusted_advisor
系统会提示你为新用户输入密码和一些可选信息。在本实验中,你可以设置一个简单的密码,如 password123
,并通过按回车键将其他字段留空。
输出应该类似于以下内容:
Adding user `trusted_advisor' ...
Adding new group `trusted_advisor' (1001) ...
Adding new user `trusted_advisor' (1001) with group `trusted_advisor' ...
Creating home directory `/home/trusted_advisor' ...
Copying files from `/etc/skel' ...
New password:
Retype new password:
passwd: password updated successfully
Changing the user information for trusted_advisor
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
要验证用户是否已成功创建,你可以查看 /etc/passwd
文件的内容:
grep trusted_advisor /etc/passwd
这应该会显示包含用户信息的一行。
要授予用户 sudo 权限,你需要将他们添加到 sudo 组。在 Ubuntu 中,sudo 组的成员可以使用 sudo 命令。执行以下命令:
sudo usermod -aG sudo trusted_advisor
此命令将用户 trusted_advisor
添加 (-a
) 到 sudo 组 (-G sudo
)。该用户现在将能够以管理权限执行命令。
要验证新用户是否具有 sudo 访问权限,你可以切换到该用户账户并尝试列出 /root
目录的内容,该目录通常只有 root 用户可以访问:
su - trusted_advisor
当系统提示时,输入你为该用户设置的密码。然后执行:
sudo ls /root
系统会再次提示你输入密码(首次使用 sudo)。输入密码后,你应该会看到 /root
目录的内容,这确认该用户具有 sudo 权限。
最后,退出 trusted_advisor
用户会话以返回到你原来的用户:
exit
在这一步中,你将学习如何使用 sudoers 文件将用户的 sudo 权限限制在特定命令上。这实现了最小权限原则,即用户应仅拥有执行其任务所需的最小权限。
/etc/sudoers
文件控制哪些用户可以使用 sudo 命令以及他们可以运行哪些命令。绝不能使用常规文本编辑器直接编辑此文件,因为语法错误可能会导致你无法访问系统。相反,始终使用 visudo
命令,该命令会在保存前检查语法错误。
要安全地编辑 sudoers 文件,请使用 visudo
命令:
sudo visudo
这将在默认编辑器(通常是 nano 或 vi)中打开 sudoers 文件。
sudoers 文件中 sudo 条目的基本语法如下:
user_or_group host=(run_as_user:run_as_group) NOPASSWD: commands
其中:
user_or_group
:此规则适用的用户或组host
:此规则适用的主机名(通常为 ALL)run_as_user
:命令将以其身份执行的用户(通常为 ALL,表示 root)run_as_group
:命令将以其身份执行的组(可以省略)NOPASSWD
:可选标签,允许在不输入密码的情况下运行命令commands
:可以使用 sudo 执行的特定命令滚动到文件末尾并添加以下行,以授予 trusted_advisor
仅运行 cp
和 mv
命令且无需密码的权限:
trusted_advisor ALL=(ALL) NOPASSWD: /bin/cp, /bin/mv
在 nano 中保存文件,按 Ctrl+O
,然后按 Enter
;要退出,按 Ctrl+X
。
现在让我们测试受限的 sudo 访问权限是否按预期工作。首先,在当前目录中创建一个测试文件:
echo "This is a test file" > important_file.txt
现在,切换到 trusted_advisor
用户:
su - trusted_advisor
当系统提示时输入密码。
尝试将文件复制到根目录,这应该是允许的:
sudo cp /home/labex/project/important_file.txt /root/
这应该会成功执行,并且不会要求输入密码。
现在,尝试运行不在允许列表中的命令,例如 cat
:
sudo cat /root/important_file.txt
你应该会收到权限被拒绝的错误,因为 cat
不在允许的命令列表中。
最后,验证文件是否已复制到根目录:
sudo ls /root/
你应该在输出中看到 important_file.txt
。
退出 trusted_advisor
用户会话:
exit
为了清理,删除测试文件:
sudo rm important_file.txt
在这一步中,你将了解 sudo 日志记录和安全最佳实践。监控 sudo 的使用情况对于安全和审计目的非常重要。
当用户使用 sudo 执行命令时,这些操作会被记录下来。这提供了一个审计跟踪,对于安全监控和故障排除很有用。
在 Ubuntu 上,sudo 日志通常存储在系统的认证日志 /var/log/auth.log
中。让我们查看最近的 sudo 活动:
sudo grep sudo /var/log/auth.log | tail -n 10
此命令显示最后 10 条与 sudo 相关的日志条目。输出应包括时间戳、用户名以及使用 sudo 执行的命令。
以下是管理 sudo 权限的一些最佳实践:
如果用户不再需要 sudo 权限,你可以将他们从 sudo 组中移除:
sudo deluser trusted_advisor sudo
验证该用户是否不再属于 sudo 组:
groups trusted_advisor
输出的组列表中应不再包含 "sudo"。
让我们验证该用户是否不再能使用 sudo 执行命令:
su - trusted_advisor
当系统提示时输入密码。
尝试使用 sudo 运行一个命令:
sudo ls /root
你现在应该会收到权限被拒绝的错误。
退出 trusted_advisor
用户会话:
exit
为了本实验的目的,让我们将该用户重新添加到 sudo 组:
sudo usermod -aG sudo trusted_advisor
验证该用户现在是否再次属于 sudo 组:
groups trusted_advisor
输出的组列表中现在应包含 "sudo"。
在本实验中,你学习了重要的 Linux 用户管理和权限控制技术。你通过实践掌握了以下概念和操作:
adduser
命令创建新的用户账户。这些技能是 Linux 系统管理和安全的基础。通过正确管理用户权限,你可以维护一个安全的系统,让用户在不损害系统完整性和安全性的前提下访问所需的资源。