Linux 用户修改

LinuxLinuxBeginner
立即练习

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

简介

用户管理是 Linux 系统管理的一个基本方面。无论你是在设置个人计算机、管理服务器,还是在多用户环境中工作,了解如何创建、修改和管理用户账户都是至关重要的。

在这个实验中,你将学习如何使用 usermod 命令来修改用户属性,如用户名、主目录和用户组隶属关系。你将通过实践掌握 Linux 中用于用户管理的关键命令,从而获得在任何 Linux 环境中高效管理用户账户所需的技能。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL linux(("Linux")) -.-> linux/BasicFileOperationsGroup(["Basic File Operations"]) linux(("Linux")) -.-> linux/UserandGroupManagementGroup(["User and Group Management"]) linux/BasicFileOperationsGroup -.-> linux/cat("File Concatenating") linux/UserandGroupManagementGroup -.-> linux/useradd("User Adding") linux/UserandGroupManagementGroup -.-> linux/usermod("User Modifying") linux/UserandGroupManagementGroup -.-> linux/groups("Group Displaying") linux/UserandGroupManagementGroup -.-> linux/id("User/Group ID Displaying") subgraph Lab Skills linux/cat -.-> lab-271427{{"Linux 用户修改"}} linux/useradd -.-> lab-271427{{"Linux 用户修改"}} linux/usermod -.-> lab-271427{{"Linux 用户修改"}} linux/groups -.-> lab-271427{{"Linux 用户修改"}} linux/id -.-> lab-271427{{"Linux 用户修改"}} end

创建和重命名用户

在这一步中,你将创建一个新用户并学习如何对其进行重命名。当用户角色发生变化,或者你需要在系统中统一用户名时,这是一项常见的任务。

首先,打开你的终端。你应该已经位于 ~/project 目录中。让我们先创建一个名为 temporaryuser 的新用户:

sudo useradd temporaryuser

此命令会在系统中创建一个新的用户账户。默认情况下,useradd 不会创建主目录或设置密码。

现在,让我们检查用户是否创建成功:

grep temporaryuser /etc/passwd

你应该会在输出中看到 temporaryuser 的条目,这表明用户已创建成功。

接下来,我们将使用 usermod 命令将该用户从 temporaryuser 重命名为 permanentuser

sudo usermod -l permanentuser temporaryuser

-l 选项表示我们要更改登录名。执行此命令后,之前名为 temporaryuser 的用户现在将被称为 permanentuser

让我们验证用户名是否已更改:

grep permanentuser /etc/passwd

你应该会看到新名称为 permanentuser 的用户条目。

现在,让我们为该用户创建并分配一个主目录:

sudo usermod -d /home/permanentuser -m permanentuser

在这个命令中:

  • -d 指定新的主目录路径
  • -m 将旧主目录中的任何现有内容移动到新主目录(在这种情况下,由于我们的用户之前没有主目录,它将创建主目录)

让我们验证主目录是否已创建:

ls -ld /home/permanentuser

你应该会看到为 permanentuser 新创建的主目录。

将用户添加到用户组

在 Linux 中,用户组用于组织用户和管理权限。将用户添加到特定的用户组是授予他们访问某些资源或功能的重要方式。

首先,让我们检查我们的用户当前属于哪些用户组:

groups permanentuser

默认情况下,当你使用 useradd 创建用户时,该用户会被分配到一个与用户名同名的主用户组。

现在,让我们检查你的系统上是否存在 sudo 用户组:

grep sudo /etc/group

你应该会看到 sudo 用户组的条目。这个特殊的用户组允许其成员使用 sudo 命令以超级用户权限执行命令。

让我们将我们的用户添加到 sudo 用户组:

sudo usermod -aG sudo permanentuser

在这个命令中:

  • -a 表示“追加”,这确保我们在将用户添加到该用户组时不会将其从其他用户组中移除
  • -G 指定要将用户添加到的用户组
  • sudo 是用户组的名称
  • permanentuser 是我们要修改的用户

让我们验证用户是否已被添加到 sudo 用户组:

groups permanentuser

输出现在应该在用户组列表中包含 sudo

你还可以通过查看 /etc/group 文件来检查用户组隶属关系:

grep sudo /etc/group

输出应该在 sudo 用户组的成员列表中包含 permanentuser

更改用户的 shell

在 Linux 中,每个用户都有一个默认的 shell,它决定了用户登录时使用的命令行界面。在这一步中,你将学习如何更改用户的登录 shell。

首先,让我们检查分配给我们用户的当前 shell:

grep permanentuser /etc/passwd

查看输出的最后一个字段。它应该显示当前的 shell,对于使用 useradd 且未使用额外选项创建的用户,通常是 /bin/sh

现在,让我们将 shell 更改为 Bash,这是一个功能更丰富的 shell:

sudo usermod -s /bin/bash permanentuser

-s 选项指定用户的新登录 shell。

让我们验证 shell 是否已更改:

grep permanentuser /etc/passwd

行尾现在应该显示 /bin/bash 作为 permanentuser 的 shell。

不同的 shell 提供不同的功能和用户体验。Bash 是最受欢迎的 shell 之一,因为它提供了以下高级功能:

  • 命令补全
  • 命令历史导航
  • 可定制的提示符
  • 具有函数和控制结构的脚本编写能力

Linux 中其他常见的 shell 包括:

  • /bin/sh - Bourne Shell,一个基本的 shell
  • /bin/zsh - Z Shell,具有比 Bash 更多的功能
  • /bin/dash - Debian Almquist Shell,一个轻量级的 shell

用户可以在会话期间使用 chsh 命令在已安装的 shell 之间切换,或者管理员可以像我们刚才那样使用 usermod 更改他们的默认 shell。

设置账户过期时间并查看用户信息

系统管理员通常需要创建临时账户,或者确保对账户进行定期审查。在这一步中,你将学习如何为账户设置过期日期,以及查看全面的用户信息。

设置账户过期时间

让我们为 permanentuser 账户设置一个过期日期。这对于临时用户或仅在特定时间段内需要访问权限的承包商来说非常有用。

sudo usermod -e 2023-12-31 permanentuser

-e 选项以 YYYY-MM-DD 格式设置过期日期。在此日期之后,账户将自动禁用。

要验证过期日期是否已设置:

sudo chage -l permanentuser

chage -l 命令显示账户有效期信息。输出将包含一行 “Account expires”,显示你刚刚设置的日期。

查看详细的用户信息

在 Linux 中有几个命令可用于查看用户信息。让我们来了解一下:

  1. 检查用户 ID、组 ID 和用户组成员身份:
id permanentuser

此命令显示数字用户 ID(UID)、主组 ID(GID)以及用户所属的所有组。

  1. 查看密码状态和有效期信息:
sudo passwd -S permanentuser

此命令显示密码状态(锁定、过期等)以及上次更改的时间。

  1. 查看系统中的所有可登录用户:
cat /etc/passwd | grep -v nologin | grep -v false

此命令过滤密码文件,仅显示可以登录的用户(不包括系统用户)。

  1. 查看系统上的所有组:
cat /etc/group

这将显示系统上定义的所有组,包括系统组和用户组。

了解如何高效地检索用户信息对于系统管理和解决用户访问问题至关重要。

总结

在这个实验中,你学习了 Linux 中重要的用户管理任务:

  1. 使用 usermod -l 命令创建用户并对其进行重命名
  2. 使用 usermod -d -m 为用户设置主目录
  3. 使用 usermod -aG 将用户添加到附属组
  4. 使用 usermod -s 更改用户的登录 shell
  5. 使用 usermod -e 设置账户过期日期
  6. 使用 idchage 等命令以及查看系统文件来查看用户信息

这些用户管理技能对于任何 Linux 管理员来说都是基础。usermod 命令提供了一套通用的工具集,可用于修改用户属性,而无需删除和重新创建用户账户。

通过掌握这些命令,你可以在任何 Linux 环境中高效地管理用户账户,无论是单用户工作站、多用户服务器,还是有许多用户需要不同访问级别的企业环境。