如何在 Linux 上强制用户更改密码

已发表: 2022-01-29
来自 sshd 的“密码失败”消息。
伊利亚·蒂切夫/Shutterstock

密码是帐户安全的基石。 我们将向您展示如何在 Linux 网络上重置密码、设置密码有效期以及强制更改密码。

密码已存在近 60 年

自 1960 年代中期首次引入密码以来,我们一直在向计算机证明我们就是我们所说的自己。 必要性是发明之母,麻省理工学院开发的兼容分时系统需要一种方法来识别系统中的不同人员。 它还需要防止人们看到彼此的文件。

Fernando J. Corbato 提出了一个方案,为每个人分配一个唯一的用户名。 为了证明某人是他们所说的人,他们必须使用私人密码才能访问他们的帐户。

密码的问题在于它们的操作就像一把钥匙。 任何有钥匙的人都可以使用它。 如果有人找到、猜测或计算出您的密码,该人就可以访问您的帐户。 在多因素身份验证普遍可用之前,密码是唯一能阻止未经授权的人(威胁行为者,在网络安全方面)进入您的系统的方法。

广告

可以将 Secure Shell (SSH) 建立的远程连接配置为使用 SSH 密钥而不是密码,这很棒。 但是,这只是一种连接方式,不包括本地登录。

显然,密码管理至关重要,使用这些密码的人的管理也是如此。

相关:如何从 Linux Shell 创建和安装 SSH 密钥

密码剖析

无论如何,是什么让密码变得更好? 那么,一个好的密码应该具有以下所有属性:

  • 这是不可能猜测或弄清楚的。
  • 你没有在其他任何地方使用过它。
  • 它没有涉及数据泄露。

Have I Been Pwned (HIBP) 网站包含超过 100 亿套被泄露的凭据。 数字如此之高,其他人很可能使用了与您相同的密码。 这意味着您的密码可能在数据库中,即使不是您的帐户被破坏。

如果您的密码在 HIBP 网站上,这意味着它在威胁参与者的蛮力和字典攻击工具在尝试破解帐户时使用的密码列表中。

一个真正随机的密码(如 4HW@HpJDBr%*Wt@#b~aP)实际上是无懈可击的,但是,当然,你永远不会记得它。 我们强烈建议您为在线帐户使用密码管理器。 它们为您的所有在线帐户生成复杂的随机密码,您不必记住它们——密码管理器会为您提供正确的密码。

对于本地帐户,每个人都必须生成自己的密码。 他们还需要知道什么是可接受的密码,什么不是。 他们必须被告知不要在其他帐户上重复使用密码,等等。

广告

此信息通常位于组织的密码策略中。 它指示人们使用最少数量的字符、混合大小写字母、包括符号和标点符号等等。

然而,根据卡内基梅隆大学一个团队的一篇全新论文,所有这些技巧对密码的稳健性几乎没有任何影响。 研究人员发现,密码稳健性的两个关键因素是它们至少有 12 个字符长且足够强大。 他们使用许多软件破解程序、统计技术和神经网络来测量密码强度。

一开始至少 12 个字符可能听起来令人生畏。 但是,不要考虑密码,而是用标点符号分隔的三四个不相关单词的密码短语。

例如,Experte Password Checker 表示破解“chicago99”需要 42 分钟,但破解“chimney.purple.bag”需要 4000 亿年。 它也很容易记住和输入,并且只包含 18 个字符。

相关:为什么你应该使用密码管理器,以及如何开始

查看当前设置

在您更改与某人的密码有关的任何内容之前,谨慎的做法是查看他们当前的设置。 使用passwd命令,您可以使用-S (状态)选项查看它们的当前设置。 请注意,如果您正在使用其他人的密码设置,您还必须将sudopasswd一起使用。

我们输入以下内容:

 sudo passwd -S 玛丽

一行信息打印到终端窗口,如下所示。

您在该简短的响应中看到以下信息(从左到右):

  • 人员的登录名。
  • 此处显示以下三个可能的指标之一:
    • P:表示该帐户具有有效的工作密码。
    • L:表示该帐户已被root帐户的所有者锁定。
    • NP:尚未设置密码。
  • 上次更改密码的日期。
  • 密码最短使用期限:帐户所有者执行密码重置之间必须经过的最短时间(以天为单位)。 但是,root 帐户的所有者始终可以更改任何人的密码。 如果此值为 0(零),则对密码更改的频率没有限制。
  • 密码最长使用期限:帐户所有者在达到此使用期限时会提示更改其密码。 该值以天为单位,因此值 99,999 表示密码永不过期。
  • 密码更改警告期:如果强制执行密码最长使用期限,帐户所有者将收到更改密码的提醒。 其中第一个将在重置日期之前发送此处显示的天数。
  • 密码不活动时间:如果有人在超过密码重置期限的时间内没有访问系统,则此人的密码不会被更改。 此值指示宽限期在密码到期日期之后的天数。 如果在密码过期后该帐户在此天数内仍处于非活动状态,则该帐户将被锁定。 值 -1 禁用宽限期。

设置最长密码期限

要设置密码重置期限,您可以使用带有天数的-x (最长天数)选项。 您不要在-x和数字之间留有空格,因此您可以按如下方式键入:

 sudo passwd -x45 玛丽

广告

我们被告知到期值已更改,如下所示。

使用-S (状态)选项检查该值现在是否为 45:

 sudo passwd -S 玛丽

现在,在 45 天内,必须为此帐户设置一个新密码。 提醒将在此之前 7 天开始。 如果未及时设置新密码,该帐户将立即被锁定。

强制立即更改密码

您还可以使用命令,以便您网络上的其他人在下次登录时必须更改密码。为此,您可以使用-e (过期)选项,如下所示:

 sudo passwd -e 玛丽

然后我们被告知密码到期信息已更改。

让我们检查一下-S选项,看看发生了什么:

 sudo passwd -S 玛丽

广告

上次更改密码的日期设置为 1970 年的第一天。下次此人尝试登录时,他或她将不得不更改密码。 他们还必须提供当前密码,然后才能键入新密码。

密码重置屏幕。

您应该强制更改密码吗?

强迫人们定期更改密码曾经是常识。 这是大多数安装的常规安全步骤之一,被认为是一种良好的商业实践。

现在的想法正好相反。 在英国,国家网络安全中心强烈建议不要强制执行定期密码更新,美国国家标准与技术研究院对此表示赞同。 两个组织都建议仅在您知道或怀疑其他人知道现有密码时才强制更改密码。

强迫人们更改密码变得单调并鼓励使用弱密码。 人们通常开始重复使用带有日期或其他数字标记的基本密码。 或者,他们会把它们写下来,因为他们必须经常更改它们,他们不记得它们。

我们上面提到的两个组织推荐以下密码安全指南:

  • 使用密码管理器:适用于在线帐户和本地帐户。
  • 打开双因素身份验证:无论这是一个选项,请使用它。
  • 使用强密码:对于那些不能使用密码管理器的帐户来说,这是一个很好的选择。 由标点或符号分隔的三个或更多单词是一个很好的模板。
  • 切勿重复使用密码:避免使用与其他帐户相同的密码,并且绝对不要使用“我已拥有”中列出的密码。
广告

上述提示将允许您建立一种安全的方式来访问您的帐户。 一旦你有了这些指导方针,就坚持下去。 如果密码既强大又安全,为什么还要更改密码? 如果它落入坏人之手——或者你怀疑它已经落入坏人之手——那么你可以改变它。

不过,有时,这个决定不在你的掌控之中。 如果强制执行密码的权力发生变化,您将别无选择。 你可以为你的案子辩护并表明你的立场,但除非你是老板,否则你必须遵守公司的政策。

相关:您应该定期更改密码吗?

chage 命令

您可以使用chage命令更改有关密码老化的设置。 该命令的名称来自“更改老化”。 这就像去掉了密码创建元素的passwd命令。

-l (列表)选项提供与passwd -S命令相同的信息,但以更友好的方式。

我们输入以下内容:

 sudo chage -l eric 

另一个巧妙的方法是您可以使用-E (到期)选项设置帐户到期日期。 我们将传递一个日期(采用年-月-日格式)以设置 2020 年 11 月 30 日的到期日期。在该日期,该帐户将被锁定。

我们输入以下内容:

 sudo chage eric -E 2020-11-30 

接下来,我们键入以下内容以确保已完成此更改:

 sudo chage -l eric 

我们看到帐户到期日期已从“从不”更改为 2020 年 11 月 30 日。

广告

要设置密码有效期,您可以使用-M (最长天数)选项以及密码在必须更改之前可以使用的最长天数。

我们输入以下内容:

 sudo chage -M 45 玛丽

我们使用-l (list) 选项键入以下内容,以查看命令的效果:

 sudo chage -l 玛丽

密码到期日期现在设置为自我们设置之日起 45 天,如图所示,即 2020 年 12 月 8 日。

为网络上的每个人更改密码

创建帐户时,密码使用一组默认值。 您可以定义最短、最长和警告日的默认值。 然后将它们保存在一个名为“/etc/login.defs”的文件中。

您可以键入以下内容以在gedit中打开此文件:

 须藤 gedit /etc/login.defs 

滚动到密码时效控件。

gedit 编辑器中的密码老化控制。

您可以编辑这些以满足您的要求,保存您的更改,然后关闭编辑器。 下次创建用户帐户时,将应用这些默认值。

广告

如果您想更改现有用户帐户的所有密码到期日期,您可以使用脚本轻松完成。 只需键入以下内容即可打开gedit编辑器并创建一个名为“password-date.sh”的文件:

 sudo gedit 密码-date.sh 

接下来,将以下文本复制到编辑器中,保存文件,然后关闭gedit

 #!/bin/bash

重置天数=28

$(ls /home) 中的用户名
做
  sudo chage $username -M $reset_days
  echo $username 密码过期更改为 $reset_days
完毕

这会将每个用户帐户的最大天数更改为 28,从而更改密码重置频率。 您可以调整reset_days变量的值以适合。

首先,我们键入以下内容以使我们的脚本可执行:

 chmod +x 密码日期.sh 

现在,我们可以输入以下内容来运行我们的脚本:

 sudo ./密码-日期.sh 

然后处理每个帐户,如下所示。

我们输入以下内容来检查“mary”的帐户:

 sudo 更改 -l 玛丽

广告

最大天数已设置为 28,我们被告知将在 2020 年 11 月 21 日。您还可以轻松修改脚本并添加更多chagepasswd命令。


密码管理是必须认真对待的事情。 现在,您拥有控制所需的工具。