zoukankan      html  css  js  c++  java
  • Linux更改密码报错:密码未通过字典检查

    Linux更改密码报错:密码未通过字典检查 - 过于简单化/系统化

    方案一:直接忽略

    很容易认为这儿是一个错误,其实可以直接忽略,重新输入密码

    [root@localhost ~]# passwd
    更改用户 root 的密码 。
    新的 密码:
    无效的密码: 密码少于 8 个字符
    重新输入新的 密码:
    passwd:所有的身份验证令牌已经成功更新。
    [root@localhost ~]# 
    

    方案二:对密码规则进行设置

    这一部分参考"Linux中国"的文章:如何设置 Linux 系统的密码策略

    在基于 DEB 的系统中设置密码长度

    默认情况下,所有的 Linux 操作系统要求用户密码长度最少 6 个字符。我强烈建议不要低于这个限制。并且不要使用你的真实名称、父母、配偶、孩子的名字,或者你的生日作为密码。即便是一个黑客新手,也可以很快地破解这类密码。一个好的密码必须是至少 6 个字符,并且包含数字、大写字母和特殊符号。

    通常地,在基于 DEB 的操作系统中,密码和身份认证相关的配置文件被存储在 /etc/pam.d/ 目录中。

    设置最小密码长度,编辑 /etc/pam.d/common-password 文件;

    $ sudo nano /etc/pam.d/common-password
    

    找到下面这行:

    password [success=2 default=ignore] pam_unix.so obscure sha512
    

    img

    在末尾添加额外的文字:minlen=8。在这里我设置的最小密码长度为 8

    password [success=2 default=ignore] pam_unix.so obscure sha512 minlen=8
    

    img

    保存并关闭该文件。这样一来,用户现在不能设置小于 8 个字符的密码。

    在基于 RPM 的系统中设置密码长度

    在 RHEL、CentOS、Scientific Linux 7.x 系统中, 以 root 身份执行下面的命令来设置密码长度。

    # authconfig --passminlen=8 --update
    

    查看最小密码长度,执行:

    # grep "^minlen" /etc/security/pwquality.conf
    

    输出样例:

    minlen = 8
    

    在 RHEL、CentOS、Scientific Linux 6.x 系统中,编辑 /etc/pam.d/system-auth 文件:

    # nano /etc/pam.d/system-auth
    

    找到下面这行并在该行末尾添加:

    password requisite pam_cracklib.so try_first_pass retry=3 type= minlen=8
    

    img

    如上设置中,最小密码长度是 8 个字符。

    在基于 DEB 的系统中设置密码复杂度

    此设置会强制要求密码中应该包含多少类型,比如大写字母、小写字母和其他字符。

    首先,用下面命令安装密码质量检测库:

    $ sudo apt-get install libpam-pwquality
    

    之后,编辑 /etc/pam.d/common-password 文件:

    $ sudo nano /etc/pam.d/common-password
    

    为了设置密码中至少有一个大写字母,则在下面这行的末尾添加文字 ucredit=-1

    password requisite pam_pwquality.so retry=3 ucredit=-1
    

    img

    设置密码中至少有一个小写字母,如下所示。

    password requisite pam_pwquality.so retry=3 dcredit=-1
    

    设置密码中至少含有其他字符,如下所示。

    password requisite pam_pwquality.so retry=3 ocredit=-1
    

    正如你在上面样例中看到的一样,我们设置了密码中至少含有一个大写字母、一个小写字母和一个特殊字符。你可以设置被最大允许的任意数量的大写字母、小写字母和特殊字符。

    你还可以设置密码中被允许的字符类的最大或最小数量。

    下面的例子展示了设置一个新密码中被要求的字符类的最小数量:

    password requisite pam_pwquality.so retry=3 minclass=2
    

    在基于 RPM 的系统中设置密码复杂度

    在 RHEL 7.x / CentOS 7.x / Scientific Linux 7.x 中:

    设置密码中至少有一个小写字母,执行:

    # authconfig --enablereqlower --update
    

    查看该设置,执行:

    # grep "^lcredit" /etc/security/pwquality.conf
    

    输出样例:

    lcredit = -1
    

    类似地,使用以下命令去设置密码中至少有一个大写字母:

    # authconfig --enablerequpper --update
    

    查看该设置:

    # grep "^ucredit" /etc/security/pwquality.conf
    

    输出样例:

    ucredit = -1
    

    设置密码中至少有一个数字,执行:

    # authconfig --enablereqdigit --update
    

    查看该设置,执行:

    # grep "^dcredit" /etc/security/pwquality.conf
    

    输出样例:

    dcredit = -1
    

    设置密码中至少含有一个其他字符,执行:

    # authconfig --enablereqother --update
    

    查看该设置,执行:

    # grep "^ocredit" /etc/security/pwquality.conf
    

    输出样例:

    ocredit = -1
    

    RHEL 6.x / CentOS 6.x / Scientific Linux 6.x systems 中,以 root 身份编辑 /etc/pam.d/system-auth 文件:

    # nano /etc/pam.d/system-auth
    

    找到下面这行并且在该行末尾添加:

    password requisite pam_cracklib.so try_first_pass retry=3 type= minlen=8 dcredit=-1 ucredit=-1 lcredit=-1 ocredit=-1
    

    如上设置中,密码必须要至少包含 8 个字符。另外,密码必须至少包含一个大写字母、一个小写字母、一个数字和一个其他字符。

    在基于 DEB 的系统中设置密码有效期

    现在,我们将要设置下面的策略。

    1. 密码被使用的最长天数。
    2. 密码更改允许的最小间隔天数。
    3. 密码到期之前发出警告的天数。

    设置这些策略,编辑:

    $ sudo nano /etc/login.defs
    

    在你的每个需求后设置值。

    PASS_MAX_DAYS 100
    PASS_MIN_DAYS 0
    PASS_WARN_AGE 7
    

    img

    正如你在上面样例中看到的一样,用户应该每 100 天修改一次密码,并且密码到期之前的 7 天开始出现警告信息。

    请注意,这些设置将会在新创建的用户中有效。

    为已存在的用户设置修改密码的最大间隔天数,你必须要运行下面的命令:

    $ sudo chage -M <days> <username>
    

    设置修改密码的最小间隔天数,执行:

    $ sudo chage -m <days> <username>
    

    设置密码到期之前的警告,执行:

    $ sudo chage -W <days> <username>
    

    显示已存在用户的密码,执行:

    $ sudo chage -l sk
    

    这里,sk 是我的用户名。

    输出样例:

    Last password change : Feb 24, 2017
    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
    

    正如你在上面看到的输出一样,该密码是无限期的。

    修改已存在用户的密码有效期,

    $ sudo chage -E 24/06/2018 -m 5 -M 90 -I 10 -W 10 sk
    

    上面的命令将会设置用户 sk 的密码期限是 24/06/2018。并且修改密码的最小间隔时间为 5 天,最大间隔时间为 90 天。用户账号将会在 10 天后被自动锁定,而且在到期之前的 10 天前显示警告信息。

    在基于 RPM 的系统中设置密码效期

    这点和基于 DEB 的系统是相同的。

    在基于 DEB 的系统中禁止使用近期使用过的密码

    你可以限制用户去设置一个已经使用过的密码。通俗的讲,就是说用户不能再次使用相同的密码。

    为设置这一点,编辑 /etc/pam.d/common-password 文件:

    $ sudo nano /etc/pam.d/common-password
    

    找到下面这行并且在末尾添加文字 remember=5

    password        [success=2 default=ignore]      pam_unix.so obscure use_authtok try_first_pass sha512 remember=5
    

    上面的策略将会阻止用户去使用最近使用过的 5 个密码。

    在基于 RPM 的系统中禁止使用近期使用过的密码

    这点对于 RHEL 6.x 和 RHEL 7.x 和它们的衍生系统 CentOS、Scientific Linux 是相同的。

    以 root 身份编辑 /etc/pam.d/system-auth 文件,

    # vi /etc/pam.d/system-auth
    

    找到下面这行,并且在末尾添加文字 remember=5

    password     sufficient     pam_unix.so sha512 shadow nullok try_first_pass use_authtok remember=5
    

    现在你了解了 Linux 中的密码策略,以及如何在基于 DEB 和 RPM 的系统中设置不同的密码策略。

    就这样,我很快会在这里发表另外一天有趣而且有用的文章。在此之前请保持关注。如果您觉得本教程对你有帮助,请在您的社交,专业网络上分享并支持我们。

  • 相关阅读:
    VOA 2009/11/02 DEVELOPMENT REPORT In Kenya, a Better Life Through Mobile Money
    2009.11.26教育报道在美留学生数量创历史新高
    Java中如何实现Tree的数据结构算法
    The Python Tutorial
    VOA HEALTH REPORT Debate Over New Guidelines for Breast Cancer Screening
    VOA ECONOMICS REPORT Nearly Half of US Jobs Now Held by Women
    VOA ECONOMICS REPORT Junior Achievement Marks 90 Years of Business Education
    VOA 2009/11/07 IN THE NEWS A Second Term for Karzai; US Jobless Rate at 10.2%
    Ant入门
    Python 与系统管理
  • 原文地址:https://www.cnblogs.com/Courage129/p/14068046.html
Copyright © 2011-2022 走看看