用户账户管理

LinuxBeginner
立即练习

简介

本实验将带你完成 Linux 系统中的基本用户账户管理操作。你将学习如何创建、修改和删除用户账户,以及如何设置和修改密码。这些都是 Linux 系统管理的基础技能。即使你刚接触 Linux,也不用担心——实验会逐步说明每个操作!

创建新用户

首先,创建一个名为「joker」的新用户账户。

  1. 打开终端。在 Linux 中,终端是一个可以输入命令的文本界面。
  2. 输入以下命令,然后按 Enter 键:
sudo useradd joker

下面解释这条命令:

  • sudo 是一个命令,可以临时授予你超级用户(管理员)权限。创建新用户需要更高的权限,因此要使用它。
  • useradd 是用于创建新用户的命令。
  • joker 是要创建的用户名。

注意:如果不使用 sudo 运行这条命令,你会看到「permission denied」错误。这是因为普通用户不能创建新的用户账户,此操作只能由系统管理员执行。

这体现了超级用户与普通用户之间的区别。普通用户不能创建新的用户账户,但使用 sudo 后,可以临时提升权限来完成这项管理任务。

  1. 检查 /etc/passwd 文件,确认用户是否创建成功:
sudo grep -w 'joker' /etc/passwd

/etc/passwd 文件类似于用户账户电话簿。每一行代表一个用户账户,不同信息之间使用冒号(:)分隔。

你应该会看到类似以下内容的输出:

joker:x:5001:5001::/home/joker:/bin/sh

这一行表示:

  • 用户名:joker
  • 密码:x(实际密码安全地存储在其他位置)
  • 用户 ID:5001
  • 组 ID:5001
  • 主目录:/home/joker,但该目录尚未创建
  • 默认 Shell:/bin/sh

创建带主目录的用户

现在创建另一个名为「bob」的用户,并为其创建主目录。

  1. 运行以下命令:
sudo useradd -m bob

-m 选项会让系统为该用户创建主目录。主目录类似于用户的个人文件夹,用于存储文件和设置。

  1. 检查主目录是否创建成功:
sudo ls -ld /home/bob

你应该会看到类似以下内容的输出:

drwxr-x--- 2 bob bob 57 Jan 19 13:33 /home/bob

这段输出表示:

  • 开头的 d 表示这是一个目录
  • rwxr-x--- 表示哪些用户拥有读取、写入或执行该目录的权限
  • 两个 bob 表示该目录的用户所有者和组所有者都是 bob
  • 57 表示目录大小,单位为字节
  • Jan 19 13:33 表示目录的创建时间
  • /home/bob 表示目录的位置

设置用户密码

现在为新用户设置密码。先为「joker」设置密码。

  1. 运行以下命令:
sudo passwd joker
  1. 系统会要求你输入两次新密码。本实验中,请使用类似「password123」这样的简单密码。

重要:输入密码时,屏幕不会显示任何字符。这是 Linux 的安全功能,可以防止他人看到你输入的密码。如果误输入了错误的密码,可以重新尝试。 重要:请记住这个密码!稍后实验中还会用到它。

  1. 如果操作成功,你会看到「passwd: password updated successfully」消息。

注意:在实际环境中,始终使用强密码,并且不要在不同账户之间重复使用密码!

在后台,Linux 会将加密后的密码存储在 /etc/shadow 这一安全文件中。相比之下,如果将密码存储在任何人都可能查看的 /etc/passwd 文件中,安全性会更低。

修改用户属性

Linux 允许你在创建用户账户后修改其各种设置。下面以修改 joker 的主目录为例。

  1. 运行以下命令:
sudo usermod -d /home/wayne joker

这条命令的作用如下:

  • usermod 是用于修改用户账户设置的命令
  • -d /home/wayne 指定新的主目录
  • joker 是要修改的用户
  1. 检查修改结果:
sudo grep -w 'joker' /etc/passwd

-w 用于匹配完整单词,grep 用于在文件中搜索指定内容。你应该会看到输出中的 joker 主目录已更新。

修改用户 Shell

用户的默认 Shell 也是一项重要设置,可以进行修改。Shell 会解释并运行你在终端中输入的命令。

默认情况下,用户「joker」使用 /bin/sh 作为 Shell。sh(Bourne Shell)是一种基础 Shell,大多数类 Unix 系统都提供它;bash(Bourne Again Shell)则提供更多功能,通常也更易于使用。

将 joker 的 Shell 修改为 bash 有以下好处:

  • 命令行界面更直观
  • 脚本功能更强
  • 用户环境具有更多自定义选项

按照以下步骤修改:

  1. 将 joker 的默认 Shell 修改为 bash:
sudo usermod -s /bin/bash joker
  1. 检查修改结果:
sudo grep -w 'joker' /etc/passwd

你应该会在 joker 账户信息的末尾看到 /bin/bash。这表示 bash 已成为 joker 的默认 Shell。

完成修改后,joker 每次登录或打开新的终端会话时,都可以使用功能更丰富的 bash 环境。

将用户添加到组

在 Linux 中,可以使用组来组织用户并管理权限。sudo 组是一个重要的用户组,加入该组的用户可以获得管理员权限。下面以将 joker 添加到 sudo 组为例。

为什么要将用户添加到 sudo 组?

  1. 系统管理:sudo 组中的用户可以执行系统范围的管理任务。
  2. 软件安装:sudo 组成员可以安装和更新软件包。
  3. 修改配置:他们可以修改系统配置文件。
  4. 用户管理:他们可以创建、修改或删除其他用户账户。

你可能会问:「既然可以直接使用 sudo 命令,为什么还要将用户添加到 sudo 组?」原因如下:

  • 便利性:sudo 组中的用户不需要知道 root 密码,就可以使用 sudo。他们使用自己的密码即可。
  • 细粒度控制:系统管理员可以配置 sudo,只允许特定用户以超级用户权限运行指定命令。
  • 可追溯性:与共享 root 密码不同,sudo 会记录谁运行了什么命令,从而提高安全性和可追溯性。
  • 安全性:与让多个管理员共享 root 密码相比,使用具有明确账户名称并拥有 sudo 权限的账户通常更安全。

在实际环境中,通常会在以下情况下将用户添加到 sudo 组:

  • 用户是系统管理员或 IT 工作人员,需要定期执行维护任务。
  • 用户是开发人员,需要安装特定软件或为工作修改系统。
  • 用户是高级用户,需要在特定任务中提升权限,但不应获得 root 密码。

请记住,将用户添加到 sudo 组会赋予其对系统很大的控制权,因此必须谨慎操作,并且只在确有必要时执行。

现在,将 joker 添加到 sudo 组:

  1. 运行以下命令:
sudo usermod -aG sudo joker

这条命令的作用如下:

  • usermod 是用于修改用户账户的命令
  • -aG 表示「追加到组」(将用户添加到组,同时保留用户已有的其他组)
  • sudo 是要将用户添加到的组
  • joker 是要修改的用户
  1. 确认修改结果:
groups joker

你应该会在 joker 的用户组列表中看到 sudo

  1. 要查看修改的效果,需要切换到 joker 用户,并尝试运行一条需要 sudo 权限的命令:
su - joker

这条命令会将当前用户(labex)切换为 joker 用户。系统会要求你输入 joker 的密码。请使用之前设置的密码(password123)。输入密码时,屏幕不会显示任何字符,这是 Linux 的安全功能。

  1. 以 joker 用户登录后,尝试查看一个通常需要 root 权限才能访问的文件:
sudo cat /etc/shadow

系统提示时再次输入 joker 的密码。你应该可以看到 /etc/shadow 文件的内容。该文件通常只有 root 用户可以访问。这表明 joker 已经拥有 sudo 权限。

  1. 完成后,输入 exit,返回原来的用户账户(labex)。

注意:在生产环境中,必须非常谨慎地决定将哪些用户添加到 sudo 组。权限越大,责任也越大!

锁定和解锁用户账户

有时,你可能需要暂时禁用某个用户账户,但不想删除它。

  1. 锁定 joker 账户:
sudo passwd -l joker

-l 选项会锁定密码。

  1. 尝试切换到 joker 用户:
su - joker

系统会要求你输入密码。输入之前为 joker 设置的密码(如果按照本实验的建议操作,就是「password123」)。

你应该会看到「authentication failure」消息。这表示该账户已成功锁定。

  1. 现在解锁该账户:
sudo passwd -u joker

-u 选项会解锁密码。

  1. 再次尝试切换到 joker 用户:
su - joker

系统提示时输入密码。这一次,你应该可以成功切换到 joker 用户。

继续下一步之前,输入 exit 返回原来的用户账户。

删除用户

最后,学习如何删除用户。删除之前创建的「bob」用户。

  1. 删除 bob 及其主目录:
sudo userdel -r bob

userdel 命令用于删除用户账户。-r 选项会删除用户的主目录和邮件存储目录。

  1. 确认用户已删除:
sudo grep -w 'bob' /etc/passwd
sudo ls -ld /home/bob

两条命令都不应返回任何结果。这表示 bob 用户及其主目录都已成功删除。

总结

恭喜你!你已经完成了 Linux 用户账户管理实验。你学习了如何:

  1. 创建新的用户账户
  2. 设置用户密码
  3. 修改用户属性,例如主目录和默认 Shell
  4. 将用户添加到组
  5. 锁定和解锁用户账户
  6. 删除用户账户

你还接触了 /etc/passwd 文件、主目录、Shell 和用户组等重要 Linux 概念。这些都是 Linux 系统管理的基础技能。在实际环境中管理用户账户时,请始终遵守所在组织的安全策略。