Linux 密码修改

LinuxLinuxBeginner
立即练习

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

简介

在 Linux 环境中,密码管理是维护系统安全的关键环节。系统管理员需要了解如何创建并执行安全的密码策略,以保护用户账户和敏感数据不被未经授权的访问。

在这个实验中,你将学习如何使用 passwd 命令来更改用户密码,并实施基本的密码策略。这些基础技能对于任何使用 Linux 系统的人来说都是必不可少的,尤其是那些涉及用户账户管理和系统安全的工作岗位。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL linux(("Linux")) -.-> linux/UserandGroupManagementGroup(["User and Group Management"]) linux(("Linux")) -.-> linux/VersionControlandTextEditorsGroup(["Version Control and Text Editors"]) linux(("Linux")) -.-> linux/BasicFileOperationsGroup(["Basic File Operations"]) linux(("Linux")) -.-> linux/FileandDirectoryManagementGroup(["File and Directory Management"]) linux(("Linux")) -.-> linux/TextProcessingGroup(["Text Processing"]) linux/BasicFileOperationsGroup -.-> linux/chmod("Permission Modifying") linux/FileandDirectoryManagementGroup -.-> linux/cd("Directory Changing") linux/TextProcessingGroup -.-> linux/grep("Pattern Searching") linux/UserandGroupManagementGroup -.-> linux/useradd("User Adding") linux/UserandGroupManagementGroup -.-> linux/passwd("Password Changing") linux/UserandGroupManagementGroup -.-> linux/id("User/Group ID Displaying") linux/VersionControlandTextEditorsGroup -.-> linux/nano("Simple Text Editing") subgraph Lab Skills linux/chmod -.-> lab-271347{{"Linux 密码修改"}} linux/cd -.-> lab-271347{{"Linux 密码修改"}} linux/grep -.-> lab-271347{{"Linux 密码修改"}} linux/useradd -.-> lab-271347{{"Linux 密码修改"}} linux/passwd -.-> lab-271347{{"Linux 密码修改"}} linux/id -.-> lab-271347{{"Linux 密码修改"}} linux/nano -.-> lab-271347{{"Linux 密码修改"}} end

理解 passwd 命令

在 Linux 系统中,passwd 命令用于更改用户密码。该命令允许用户更改自己的密码,而系统管理员可以更改系统上任何账户的密码。

创建新用户

让我们先创建一个新用户,用于练习密码管理。打开终端,并确保你处于默认工作目录:

cd ~/project

现在,使用 useradd 命令创建一个名为 cyberuser 的新用户:

sudo useradd cyberuser

此命令会创建一个新的用户账户,但不会为其设置密码。当你创建用户时未指定密码,该账户通常默认处于锁定状态。

你可以使用 id 命令验证用户是否已创建:

id cyberuser

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

uid=1001(cyberuser) gid=1001(cyberuser) groups=1001(cyberuser)

为新用户设置密码

既然我们已经创建了一个新用户,那就使用 passwd 命令为该账户设置密码:

sudo passwd cyberuser

运行此命令后,系统会提示你输入新密码并再次输入以进行确认:

New password:
Retype new password:
passwd: password updated successfully

提示输入密码时,输入你选择的密码。出于安全考虑,你输入的密码不会显示在屏幕上。

passwd 命令会更新指定用户账户的密码。使用 sudo 权限执行该命令时,你可以更改系统上任何用户的密码。

查看密码信息

要查看用户密码的相关信息,包括上次更改的时间,你可以使用 chage -l 命令,后跟用户名:

sudo chage -l cyberuser

此命令会显示用户密码的老化和过期策略信息。输出内容会类似于以下内容:

Last password change                                    : Jul 15, 2023
Password expires                                        : never
Password inactive                                       : never
Account expires                                         : never
Minimum number of days between password change          : 0
Maximum number of days between password change          : 99999
Number of days of warning before password expires       : 7

这些信息有助于你了解应用于用户账户的当前密码策略。

理解 Linux 中的密码文件

在 Linux 中,密码信息存储在几个重要的系统文件中。了解这些文件有助于管理员有效地管理用户账户。

探索与密码相关的文件

导航到你的项目目录:

cd ~/project

让我们来查看存储密码和用户账户信息的关键文件:

  1. 首先,查看 /etc/passwd 文件,它包含基本的用户账户信息:
grep cyberuser /etc/passwd

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

cyberuser:x:1001:1001::/home/cyberuser:/bin/sh

这一行包含几个由冒号分隔的字段:

  • 用户名:cyberuser
  • 密码占位符:x(实际密码存储在 /etc/shadow 中)
  • 用户 ID (UID):1001
  • 组 ID (GID):1001
  • 用户信息字段:(此例中为空)
  • 主目录:/home/cyberuser
  • 默认 shell:/bin/sh
  1. 现在,让我们查看包含加密密码信息的影子密码文件:
sudo grep cyberuser /etc/shadow

输出将显示加密的密码和相关信息:

cyberuser:$6$xxxxxxxxxxxxxxxxxxx:19189:0:99999:7:::

这一行中的字段包括:

  • 用户名
  • 加密的密码
  • 自 1970 年 1 月 1 日起密码最后一次更改的天数
  • 密码可更改前的天数
  • 密码必须更改的天数
  • 密码过期前提醒用户的天数
  • 密码过期后直到账户被禁用的天数
  • 自 1970 年 1 月 1 日起账户被禁用的天数
  • 保留字段

这些信息对于理解 Linux 系统中密码安全的实现方式至关重要。

实施密码策略

Linux 提供了多种工具来实施密码策略,这些策略通过确保用户选择强密码来帮助维护系统安全。在这一步中,你将学习如何实施基本的密码策略。

设置密码过期时间

chage 命令允许管理员设置密码过期策略。导航到你的项目目录:

cd ~/project

让我们将 cyberuser 账户的最大密码使用期限设置为 90 天:

sudo chage -M 90 cyberuser

此命令设置了用户在需要更改密码之前,密码保持有效的最大天数。

你还可以设置最小密码使用期限,以防止用户过于频繁地更改密码:

sudo chage -m 7 cyberuser

此命令要求用户在再次更改密码之前至少等待 7 天。

验证你所做的更改:

sudo chage -l cyberuser

你应该会看到更新后的密码策略信息:

Last password change                                    : Jul 15, 2023
Password expires                                        : Oct 13, 2023
Password inactive                                       : never
Account expires                                         : never
Minimum number of days between password change          : 7
Maximum number of days between password change          : 90
Number of days of warning before password expires       : 7

创建密码策略脚本

现在,让我们创建一个脚本来实施更高级的密码策略。创建一个名为 cyberpolicy.sh 的新文件:

nano ~/project/cyberpolicy.sh

将以下内容添加到文件中:

#!/bin/bash

## Enforce password complexity
echo "password requisite pam_pwquality.so retry=3 minlen=8 difok=3" | sudo tee -a /etc/pam.d/common-password

## Set password expiration policy for all new users
echo "PASS_MAX_DAYS   90" | sudo tee -a /etc/login.defs
echo "PASS_MIN_DAYS   7" | sudo tee -a /etc/login.defs
echo "PASS_WARN_AGE   7" | sudo tee -a /etc/login.defs

echo "Password policy has been updated successfully."

Ctrl+O 保存文件,然后按 Enter,再按 Ctrl+X 退出 nano。

使脚本可执行:

chmod +x ~/project/cyberpolicy.sh

此脚本设置了以下密码策略:

  • 密码复杂度:最少 8 个字符,至少与前一个密码有 3 个不同字符,允许重试 3 次
  • 密码过期时间:最大密码使用期限为 90 天
  • 密码更改限制:最小密码使用期限为 7 天
  • 密码提醒:密码过期前 7 天发出提醒

在生产环境中,你可以执行此脚本来应用这些策略。不过,在这个实验中,我们仅查看其内容,以了解如何实施密码策略。

总结

在这个实验中,你学习了 Linux 系统中密码管理的重要技能。你练习了:

  1. 使用 useradd 命令创建新的用户账户
  2. 使用 passwd 命令设置和更改密码
  3. /etc/passwd/etc/shadow 等系统文件中查看密码信息
  4. 使用 chage 命令设置密码过期策略
  5. 创建脚本来实施密码复杂度和过期策略

这些技能对于需要通过实施适当的密码管理实践来维护系统安全的系统管理员来说是基础。通过了解如何实施强密码策略,你可以显著增强 Linux 系统的安全性,并保护它们免受未经授权的访问。

在你继续学习的过程中,可以考虑探索更高级的主题,例如 PAM(可插拔认证模块)配置、实施多因素认证,以及在企业环境中自动化用户账户管理。