Linux 用户切换

LinuxLinuxBeginner
立即练习

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

简介

Linux 是一个多用户操作系统,多个用户可以同时工作。了解如何在不同的用户账户之间切换,是系统管理员和 Linux 用户的一项基本技能。本实验将向你介绍如何使用 su(替代用户)命令在 Linux 中进行用户切换。

在本实验中,你将学习如何创建新用户、在不同用户之间进行切换、以不同用户的身份执行操作,以及返回你原来的用户账户。这些技能对于系统管理任务、安全实践以及理解 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

授予 sudo 权限

现在,让我们为 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 命令有两种常见的使用方式:

  1. su username - 切换到指定用户,但保留当前的环境变量
  2. 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 用户管理技能:

  1. 使用 adduser 命令创建新用户账户
  2. 使用 usermod 命令为用户授予 sudo 权限
  3. 使用 su 命令在不同用户之间切换
  4. 以不同用户身份创建文件
  5. 使用 whoami 等命令验证用户上下文并检查环境变量
  6. 使用 exit 命令切换回原用户

这些技能是 Linux 系统管理和多用户环境日常操作的基础。用户切换功能使管理员能够以不同的权限级别执行任务,并通过避免频繁使用 root 账户来保持良好的安全实践。

理解 Linux 中的用户管理有助于你:

  • 通过使用适当的用户权限维护系统安全
  • 排查与权限相关的问题
  • 从不同用户的角度测试应用程序和配置
  • 有效管理多用户系统

在你继续探索 Linux 的过程中,这些技能将为更高级的系统管理任务奠定基础。