简介
Linux 是一个多用户操作系统,多个用户可以同时工作。了解如何在不同的用户账户之间切换,是系统管理员和 Linux 用户的一项基本技能。本实验将向你介绍如何使用 su
(替代用户)命令在 Linux 中进行用户切换。
在本实验中,你将学习如何创建新用户、在不同用户之间进行切换、以不同用户的身份执行操作,以及返回你原来的用户账户。这些技能对于系统管理任务、安全实践以及理解 Linux 环境中的用户权限至关重要。
Linux 是一个多用户操作系统,多个用户可以同时工作。了解如何在不同的用户账户之间切换,是系统管理员和 Linux 用户的一项基本技能。本实验将向你介绍如何使用 su
(替代用户)命令在 Linux 中进行用户切换。
在本实验中,你将学习如何创建新用户、在不同用户之间进行切换、以不同用户的身份执行操作,以及返回你原来的用户账户。这些技能对于系统管理任务、安全实践以及理解 Linux 环境中的用户权限至关重要。
在 Linux 中,每个用户都有自己的账户,该账户具有特定的权限和主目录。在我们进行用户切换之前,需要先创建第二个用户账户。
让我们使用 adduser
命令创建一个名为 apprentice
的新用户。此命令需要管理员权限,因此我们将使用 sudo
以提升的权限来执行它:
sudo adduser apprentice
当你运行此命令时,系统会提示你为新用户设置密码,并提供一些可选信息。在本实验中,我们将密码设置为 password123
,你可以按回车键跳过可选信息字段:
Adding user `apprentice' ...
Adding new group `apprentice' (1001) ...
Adding new user `apprentice' (1001) with group `apprentice' ...
Creating home directory `/home/apprentice' ...
Copying files from `/etc/skel' ...
New password: password123
Retype new password: password123
passwd: password updated successfully
Changing the user information for apprentice
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
现在,让我们为 apprentice
用户授予 sudo 权限,以便他们可以执行管理任务:
sudo usermod -aG sudo apprentice
此命令将用户 apprentice
添加到 sudo
组。如果命令执行成功,将不会有任何输出。
为了验证我们的新用户是否已成功创建,我们可以列出 /home
目录的内容:
ls -l /home
你应该会看到 apprentice
用户的目录:
total 8
drwxr-xr-x 5 apprentice apprentice 4096 Oct 15 12:34 apprentice
drwxr-xr-x 5 labex labex 4096 Oct 15 12:00 labex
我们还可以通过查看 /etc/passwd
文件来检查系统中的用户列表:
grep apprentice /etc/passwd
这应该会显示 apprentice
用户的信息:
apprentice:x:1001:1001:,,,:/home/apprentice:/bin/bash
su
命令切换用户既然我们已经创建了 apprentice
用户,接下来让我们学习如何使用 su
命令切换到该用户。
su
命令su
(替代用户)命令允许你在登录会话期间切换到另一个用户账户。su
命令有两种常见的使用方式:
su username
- 切换到指定用户,但保留当前的环境变量su - username
- 切换到指定用户,并加载该用户的环境通常建议使用带有连字符 (-
) 的第二种选项,因为它可以实现完整的环境切换,让你感觉就像以该用户身份实际登录一样。
apprentice
用户让我们通过完整的环境切换来切换到 apprentice
用户:
su - apprentice
系统会提示你输入 apprentice
用户的密码。输入你在创建用户时设置的密码 (password123
):
Password: password123
认证成功后,你的命令提示符会发生变化,表明你现在已以 apprentice
用户身份登录。提示符可能如下所示:
apprentice@ubuntu:~$
为了确认你现在是以 apprentice
用户身份进行操作,请运行 whoami
命令:
whoami
输出应该是:
apprentice
你还可以使用 pwd
命令检查当前工作目录:
pwd
输出应该显示你位于 apprentice
用户的主目录中:
/home/apprentice
apprentice
用户身份创建文件既然我们已经以 apprentice
用户身份登录,接下来让我们创建一些文件,以证明在此会话中执行的操作是使用 apprentice
用户的权限进行的。
首先,让我们在 apprentice
用户的主目录中创建一个项目目录:
mkdir -p ~/project
-p
标志确保如果目录已经存在,该命令不会产生错误。如果命令执行成功,将不会有任何输出。
现在,让我们在项目目录中创建一个文本文件:
echo "This is my first file as the apprentice user." > ~/project/apprentice-journal.txt
执行此命令时不会有任何输出,但它会创建一个包含指定内容的文件。
让我们检查刚刚创建的文件的内容:
cat ~/project/apprentice-journal.txt
输出应该是:
This is my first file as the apprentice user.
我们还可以验证该文件是否由 apprentice
用户拥有:
ls -l ~/project/apprentice-journal.txt
输出应该如下所示:
-rw-rw-r-- 1 apprentice apprentice 44 Oct 15 13:45 /home/apprentice/project/apprentice-journal.txt
注意,文件的用户和组所有者都设置为 apprentice
,这证实了该文件是使用 apprentice
用户的权限创建的。
以 apprentice
用户身份完成任务后,是时候切换回你原来的用户账户了。当你临时需要以其他用户身份执行操作,然后再回到主账户时,这是一种常见的做法。
apprentice
用户会话要回到你原来的用户会话,只需输入 exit
或按下 Ctrl+D
:
exit
你会看到命令提示符变回你原来的用户提示符,可能如下所示:
labex@ubuntu:~/project$
为了确认你已成功切换回原来的用户账户,请运行 whoami
命令:
whoami
输出应该是:
labex
即使你已经切换回原来的用户,如果你有相应的权限,仍然可以访问 apprentice
用户创建的文件:
cat /home/apprentice/project/apprentice-journal.txt
输出应该显示文件内容:
This is my first file as the apprentice user.
既然你已经体验了在不同用户之间切换,现在让我们通过检查主目录路径来展示用户上下文的差异:
echo "My home directory is: $HOME"
输出应该显示你原来用户的主目录:
My home directory is: /home/labex
如果你切换回 apprentice
用户并运行相同的命令,输出将会不同:
su - apprentice ## (现在不要执行此命令,仅用于说明)
echo "My home directory is: $HOME" ## 将会显示:My home directory is: /home/apprentice
这展示了带有 -
选项的 su
命令如何完全切换用户环境,包括像 $HOME
这样的环境变量。
在本次实验中,你学习了重要的 Linux 用户管理技能:
adduser
命令创建新用户账户usermod
命令为用户授予 sudo 权限su
命令在不同用户之间切换whoami
等命令验证用户上下文并检查环境变量exit
命令切换回原用户这些技能是 Linux 系统管理和多用户环境日常操作的基础。用户切换功能使管理员能够以不同的权限级别执行任务,并通过避免频繁使用 root 账户来保持良好的安全实践。
理解 Linux 中的用户管理有助于你:
在你继续探索 Linux 的过程中,这些技能将为更高级的系统管理任务奠定基础。