基于 Linux 的系统以其强大的安全措施而闻名,可隔离敏感数据以确保最大限度地减少未经授权的访问。其中一项数据就是用户密码。与某些人的想法相反,这些密码不再以纯文本形式存储,甚至不再存储在 /etc/passwd 文件中。相反,它们以加密方式驻留在 /etc/shadow 文件中。本文深入探讨与 /etc/shadow 文件相关的结构、用途和实用程序。
一、背景和目的
在 Unix 早期,用户密码以加密形式存储在 /etc/passwd 文件中。然而,由于该文件必须是世界可读的才能允许各种系统实用程序运行,因此它带来了安全风险。攻击者可以轻松复制此文件并运行离线密码破解尝试。
为了减轻这种风险,引入了 /etc/shadow 文件。该文件以世界无法读取的格式存储加密的用户密码,从而减少敏感信息的暴露。
2. 文件结构
/etc/shadow 文件由与每个用户帐户相对应的行组成。典型的线路看起来像这样:
username:$6$KOhWkFd$K8B7:18333:0:99999:7:::
请参阅下面的屏幕截图以更好地理解:
Understanding the /etc/shadow File /etc/shadow 文件中所有字段的基本概述如下:
用户名: 用户帐户的名称。
Encrypted password: The encrypted password for the user account. The encrypted password is stored using a one-way hashing function, so it is not possible to retrieve the original password from the encrypted version. The initial letters of the encrypted password tell about the encryption methods used to create the password.
$1$
: MD5
$2a$
:河豚
$2b$
:河豚
$2y$
:河豚
$5$
:SHA-256
$6$
:SHA-512
$y$
: 是的加密
上次密码更改(日期): 用户上次更改密码的日期,表示为自 1970 年 1 月 1 日以来的天数。
密码最短使用期限: 允许用户再次更改密码之前必须经过的最短天数。
密码最长使用期限: 用户密码在必须更改之前的最大有效天数。
密码警告期: 设置用户密码到期之前用户将收到警告的天数。
密码闲置期: 不活动的天数,超过该天数后用户的密码将过期并且帐户将被锁定。
帐户到期日期: 用户帐户将被禁用的日期,表示为自 1970 年 1 月 1 日以来的天数。
请注意,/etc/shadow 文件只有 root 用户可读,因此普通用户无法查看该文件的内容或检索其他用户的加密密码。
3. 实用程序和命令
在开始之前,需要注意的是,修改/etc/影子 应谨慎处理文件,因为任何错误都可能危及系统上用户帐户的安全。建议做好备份/etc/影子 进行任何更改之前的文件。
更改用户密码
我们可以使用`passwd` 允许我们更新密码并更新的命令/etc/影子 文件。例如,要更改您自己帐户的密码,只需键入:
passwd
要替换其他用户帐户的密码,我们可以使用以下命令:
sudo passwd USERNAME
设置密码时效
使用 passwd 命令设置密码时效是一个简单的过程。您需要做的就是打开终端窗口并输入以下命令:
## 句法
passwd -l USERNAME -u NUMBER_OF_DAYS -x NUMBER_OF_DAYS
将 USERNAME 替换为要为其密码设置时效的用户名。代替NUMBER_OF_DAYS 您希望用户密码保持有效的天数。例如,如果您希望用户的密码在 90 天后过期,您可以使用以下命令:
passwd -l USERNAME -u 90 -x 7
此命令会将密码最长生存期设置为 90 天,并将密码过期警告期设置为 7 天。
设置密码时效规则后,您可以使用以下命令检查用户密码的状态:
passwd -S USERNAME
此命令将为您提供有关用户密码的信息,包括密码到期时间和最长密码生命周期。
4. 安全考虑
文件权限 :默认情况下,/etc/影子 文件的权限设置为 0400 或-r--------
。这意味着只有 root 用户才能读取该文件,从而确保加密的密码不会被窥探。
加密,未散列 :虽然术语“加密”很常用,但密码/etc/影子 在技术上使用加密哈希算法进行哈希处理。这意味着它们无法反转回纯文本。哈希算法(例如SHA-512 )被设计为计算密集型以抵御暴力攻击。
账户锁定 : 如前所述,一个`!` or `*` 密码字段中的 表示帐户已被锁定。这对于创建不应通过密码登录访问的帐户非常有用。
结论
了解/etc/影子 文件对于任何想要有效管理或保护 Linux 系统的人来说都是必不可少的。该文件在维护用户身份验证机密方面发挥着关键作用,因此需要小心处理。通过遵循最佳实践并确保只有授权人员才具有 root 访问权限,可以维护 Linux 系统的完整性和安全性。