如何在 Linux 上更改帐户密码

Linux 系统中密码管理详解

密码作为账户安全的基础已经存在了六十年之久,甚至比 Unix 系统还要早近十年。本文将深入探讨在 Linux 系统中,如何通过命令行或 GNOME 桌面环境来有效管理您的密码。

如何设置高强度密码

计算机密码的概念起源于多用户分时计算机系统的出现。为了区分和保护不同用户的数据,密码应运而生,解决了这一关键问题。

时至今日,密码仍然是最普遍的账户验证方式。尽管双因素和多因素验证技术增强了密码的保护,而生物识别技术也提供了额外的验证选择,但传统的密码依然重要且应用广泛。因此,了解如何创建和使用强密码至关重要。一些过时的做法现在已经不再适用。

以下是一些基本的密码使用原则:

  • 使用密码短语,而非密码:选择三到四个不相关的单词,用标点符号、特殊符号或数字连接起来。这种方式比一连串无意义的字符或数字更难以破解。
  • 不要重复使用密码:在不同的系统或平台上都不要使用相同的密码。
  • 不要分享密码:密码是私密的,切勿与他人共享。
  • 不要使用个人信息作为密码:避免使用家庭成员姓名、喜爱的运动队、乐队或任何可能通过社交工程或社交媒体推断出的信息。
  • 不要使用模式密码:不要基于键盘上的模式或位置设置密码,如 “qwerty” 或 “1q2w3e”。

定期更改密码的策略已不再是最佳实践。如果使用安全且强大的密码短语,仅在怀疑密码泄露时才需要更改。频繁更改密码可能会导致用户选择弱密码,因为许多人会使用基础密码,然后在末尾添加日期或数字。

美国国家标准与技术研究院 (NIST) 发布了大量关于密码、用户识别和身份验证的文章,其指导意见可在特别出版物 800-63-3:数字身份指南中找到。

密码文件详解

在早期,类 Unix 操作系统将密码和其他账户信息存储在 “/etc/passwd” 文件中。 如今,”/etc/passwd” 文件仍保留账户信息,但加密后的密码存储在权限更高的 “/etc/shadow” 文件中。任何人都可以读取 “/etc/passwd” 文件,而 “/etc/shadow” 则需要更高的权限才能访问。

要查看 “/etc/passwd” 文件的内容,可以使用以下命令:

less /etc/passwd

文件内容将显示在终端中。 让我们详细看看名为 “mary” 的账户的信息:

每一行代表一个账户(或者说是一个拥有“用户”账户的程序)。 每行包含七个以冒号分隔的字段:

  • 用户名:账户的登录名称。
  • 密码:“x” 表示密码存储在 /etc/shadow 文件中。
  • 用户 ID:此账户的用户标识符
  • 组 ID:此账户的组标识符
  • GECOS:代表通用电气综合操作系统。现在,GECOS 字段 通常存储关于账户的逗号分隔信息,包括用户的全名、房间号、办公室和家庭电话号码等。
  • 主目录:账户主目录的路径。
  • Shell:用户登录系统时启动的 shell。

空字段用冒号表示。

此外,finger 命令从 GECOS 字段中提取其信息。

finger mary

/etc/shadow 文件详解

要查看 “/etc/shadow” 文件的内容,您必须使用 sudo 命令:

sudo less /etc/shadow

文件内容将显示在终端中。 对于 “/etc/passwd” 文件中的每个条目,”/etc/shadow” 文件中都应该有一个对应的条目。

每一行代表一个账户,并且有九个以冒号分隔的字段:

  • 用户名:账户的登录名。
  • 加密密码:账户的加密密码。
  • 上次更改:密码上次更改的日期。
  • 最短天数:密码更改之间所需的最短天数。用户必须等待这些天数后才能更改密码。如果此字段为零,则用户可以随时更改密码。
  • 最长天数:密码更改之间允许的最大天数。通常,此字段包含非常大的数字。例如,”mary” 的值设置为 99,999 天,相当于 27 年以上。
  • 提醒天数:在密码过期前显示提醒消息的天数。
  • 重置锁定:密码过期后,系统会等待这些天数(宽限期),然后禁用账户。
  • 账户过期日期:账户所有者将无法再登录的日期。如果此字段为空,则账户永不过期。
  • 保留字段:预留的空白字段,供未来使用。

空字段用冒号表示。

将“上次更改”字段转换为日期

Unix 时间戳起始于 1970 年 1 月 1 日。“上次更改”字段的值为 18,209,表示自 1970 年 1 月 1 日起的天数,即账户 “mary” 的密码被更改的日期。

使用以下命令将“上次更改”的值转换为日期:

date -d "1970-01-01 18209 days"

此命令会显示密码上次更改的日期,通常是午夜时间。 在这个例子中,日期是 2019 年 11 月 9 日。

passwd 命令

您可以使用 passwd 命令更改自己的密码,如果您拥有 sudo 权限,还可以更改其他用户的密码。

要更改您的密码,直接使用不带参数的 passwd 命令:

passwd

您需要输入当前密码,并两次输入新密码。

更改其他用户的密码

要更改其他账户的密码,您必须使用 sudo 权限,并提供账户的名称:

sudo passwd mary

您需要输入密码以验证您的超级用户权限。然后输入账户的新密码,并再次输入以确认。

强制密码更改

要强制用户在下次登录时更改密码,可以使用 -e (过期)选项:

sudo passwd -e mary

系统会告知您密码到期日期已更改。

当账户 “mary” 的所有者下次登录时,她将被强制更改密码:

锁定账户

要锁定账户,请使用带有 -l (锁定)选项的 passwd 命令:

sudo passwd -l mary

系统会告知您密码到期日期已更改。

该账户的所有者将无法再使用密码登录系统。要解锁账户,请使用 -u (解锁)选项:

sudo passwd -u mary

同样,系统会告知您密码到期日期已更改:

同样,该账户的所有者将无法再使用其密码登录系统。但是,她仍然可以使用不需要密码的验证方法(例如 SSH 密钥)登录。

如果确实要将某人完全锁定在系统之外,您需要使账户过期。

chage 命令

chage 命令用于设置整个账户的过期日期。它代表“change age(更改年龄)”。

让我们使用 -l(列表)选项查看账户 “mary” 的当前设置:

sudo chage -l mary

该账户的到期日期设置为 “从不”。

要更改到期日期,请使用 -E (过期)选项。如果将其设置为零,则会被解释为 “从 Unix 纪元开始的零天”,即 1970 年 1 月 1 日。

输入以下命令:

sudo chage -E0 mary

再次检查账户到期日期:

sudo chage -l mary

由于过期日期已过,该账户现在已被完全锁定,无论所有者可能使用何种验证方法。

要恢复账户,请使用相同的命令,并将参数设为 -1

sudo chage -E -1 mary

输入以下命令进行仔细检查:

sudo chage -l mary

账户到期日期已重置为 “从不”。

在 GNOME 中更改账户密码

Ubuntu 和许多其他 Linux 发行版使用 GNOME 作为默认桌面环境。 您可以使用“设置”对话框更改账户密码。

要执行此操作,请在系统菜单中单击设置图标。

在“设置”对话框中,单击左侧窗格中的“详细信息”,然后单击“用户”。

单击要更改密码的账户;在本例中,我们将选择 “Mary Quinn”。单击该账户,然后单击“解锁”。

系统会提示您输入密码。验证身份后,“玛丽”的详细信息将变为可编辑。单击“密码”字段。

在“更改密码”对话框中,单击“立即设置密码”单选按钮。

在“新密码”和“验证新密码”字段中输入新密码。

如果密码条目匹配,“更改”按钮变为绿色;单击它以保存新密码。

在其他桌面环境中,账户工具与 GNOME 中的类似。

保持安全,保持警惕

密码在过去六十年里一直是保护在线账户安全的关键部分,并且在可预见的未来仍将如此。

因此,明智地管理密码非常重要。通过了解 Linux 中的密码机制并采用最佳密码实践,您可以确保系统的安全。