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 中的密码机制并采用最佳密码实践,您可以确保系统的安全。