Linux系统下的用户密码的有效期

可以修改密码可以通过login.defs文件控制。设置密码过期期限(默认情况下,用户的密码永不过期。)

编辑 /etc/login.defs 文件,可以设置当前密码的有效期限,具体变量如下所示:

sudo vi /etc/login.defs
PASSMAXDAYS 150
PASSMINDAYS 0
PASSWARNAGE 7
# 这些设置要求用户每6个月改变他们的密码,并且会提前7天提醒用户密码快到期了。

说明:

Password aging controls:

PASS_MAX_DAYS Maximum number of days a password may be used.

(密码可以使用的最大天数。)

PASS_MIN_DAYS Minimum number of days allowed between password changes.

(密码更改之间允许的最小天数。一般不要设置)

PASS_MIN_LEN Minimum acceptable password length.

(可接受的最小密码长度。)

PASS_WARN_AGE Number of days warning given before a password expires.

(密码过期前发出警告的天数。)

# 默认值
PASS_MAX_DAYS 99999
PASS_MIN_DAYS 0
PASS_MIN_LEN 5
PASS_WARN_AGE 7 # 建议值
PASS_MAX_DAYS 90
PASS_MIN_DAYS 0
PASS_MIN_LEN 6
PASS_WARN_AGE 7

可以通过sed命令设置:

  • sed -r -i 's/(PASS_MAX_DAYS)\s+([0-9]+)/\1 90/' /etc/login.defs

    以上将 PASS_MAX_DAYS 99999 设置为 PASS_MAX_DAYS 90(密码有效期90天)

  • sed -r -i 's/(PASS_MIN_LEN)\s+([0-9]+)/\1 13/' /etc/login.defs

    以上将 PASS_MIN_LEN 5 设置为 PASS_MIN_LEN 13(密码字符长度13位)

Linux系统下的用户密码的复杂度规则

用户密码复杂度规则设定,需要通过/etc/pam.d/system-auth文件实施(针对的是普通用户状态下修改密码会生效,root用户状态下无效),centos6中默认是通过pam_cracklib.so模块控制,(在CentOS 7上实现密码复杂度策略设置,主要是使用PAM pwquality模块完成):

[root@localhost ~]# cat /etc/redhat-release
CentOS release 6.8 (Final) [root@localhost ~]# vim /etc/pam.d/system-auth
将文件中的下面两行:
password requisite pam_cracklib.so try_first_pass retry=3 type=
password sufficient pam_unix.so sha512 shadow nullok try_first_pass use_authtok
改为:
password requisite pam_cracklib.so try_first_pass retry=3 type= minlen=8 ucredit=-2 lcredit=-4 dcredit=-1 ocredit=-1
password sufficient pam_unix.so md5 shadow nullok try_first_pass use_authtok remember=5

上面文件中参数分别说明设置密码的时候要遵循下面的规则:

retry=3 定义登录/修改密码失败时,可以重试的次数;

type=xxx 当添加/修改密码时,系统给出的缺省提示符是什么,用来修改缺省的密码提示文本。默认是不修改的,如上例。

minlen=8 定义用户密码的最小长度为8位

ucredit=-2 定义用户密码中最少有2个大写字母 (数字为负数,表示至少有多少个大写字母;数字为正数,表示至多有多少个大写字母;下面同理)

lcredit=-4 定义用户密码中最少有4个小写字母

dcredit=-1 定义用户密码中最少有1个数字

ocredit=-1 定义用户密码中最少有1个特殊字符(除数字、字母之外)

remember=5 修改用户密码时最近5次用过的旧密码就不能重用了


除了上面的几个参数,还可以设定下面的参数规则

difok=N 此选项用来规定新密码中必需有N个字符与旧密码不同。如果新密码中有1/2以上的字符与旧密码不同时,该新密码就会被接受。

difignore=N 此选项用来设定在difok之前收到多少个字符时,difok设置会被忽略,缺省为23。

minclass=N 此选项用来规定新密码中的字符类别的最小数目,字符一般有四种类别:数字、大写字母、小写字母,以及特殊字符。


禁止使用旧密码

在 /etc/pam.d/system-auth 里找到同时有 “password” 和 “pam_unix.so” 字段并且附加有 “remember=5” 的那行,它表示禁止使用最近用过的5个密码(己使用过的密码会被保存在 /etc/security/opasswd 下面)。

sudo vi /etc/pam.d/system-auth
password sufficient pamunix.so sha512 shadow nullok tryfirstpass useauthtok remember=5
设置最短密码长度

找到同时有 “password” 和 “pam_cracklib.so” 字段并且附加有 “minlen=10” 的那行,它表示最小密码长度为(10 - 类型数量)。这里的 “类型数量” 表示不同的字符类型数量。PAM 提供4种类型符号作为密码(大写字母、小写字母、数字和标点符号)。如果你的密码同时用上了这4种类型的符号,并且你的 minlen 设为10,那么最短的密码长度允许是6个字符。

sudo vi /etc/pam.d/system-auth
password requisite pam_cracklib.so retry=3 difok=3 minlen=10
设置密码复杂度(常用)

找到同时有 “password” 和 “pam_cracklib.so” 字段并且附加有 “ucredit=-1 lcredit=-2 dcredit=-1 ocredit=-1” 的那行,它表示密码必须至少包含一个大写字母(ucredit),两个小写字母(lcredit),一个数字(dcredit)和一个标点符号(ocredit)。

sudo vi /etc/pam.d/system-auth
password requisite pam_cracklib.so retry=3 difok=3 minlen=10 ucredit=-1 lcredit=-2 dcredit=-1 ocredit=-1

CentOS 7通用规则设置示例:

# 以root用户登录系统
cp /etc/pam.d/system-auth /etc/pam.d/system-auth.bak
vim /etc/pam.d/system-auth password requisite pam_pwquality.so try_first_pass local_users_only retry=3 authtok_type= minlen=12 lcredit=-1 ucredit=-1 dcredit=-1 ocredit=-1 enforce_for_root password requisite pam_pwquality.so try_first_pass local_users_only retry=3 authtok_type= minlen=10 lcredit=-1 ucredit=-1 dcredit=-1 ocredit=-1 enforce_for_root
  • retry=3 定义登录/修改密码失败时,可以重试的次数;

  • minlen=12 密码最小长度为8个字符。

  • lcredit=-1 密码应包含的小写字母的至少一个

  • ucredit=-1 密码应包含的大写字母至少一个

  • dcredit=-1 将密码包含的数字至少为一个

  • ocredit=-1 设置其他符号的最小数量,例如@,#、! $%等,至少要有一个

  • enforce_for_root 确保即使是root用户设置密码,也应强制执行复杂性策略。

示例:password requisite pam_pwquality.so try_first_pass local_users_only retry=3 authtok_type= minlen=13 lcredit=-1 ucredit=-1 dcredit=-1 ocredit=-1 enforce_for_root


其他: windows系统 密码必须符合复杂性要求 >>

怎样修改windows server的密码复杂度 >>

【完】

Linux系统设置用户密码规则(复杂密码策略)方法的更多相关文章

  1. Linux强制用户首次登录修改密码

    一个执着于技术的公众号 地方 前言 Linux强制用户首次登陆修改密码,这应该是RHCE认证中用户管理部分, 属于很基础的内容了.可是我忘记了,所以就有了下面的记录~ 实验过程 1.创建用户并设置登录 ...

  2. Linux单用户模式(修改密码、运行级别)方法详解

    很多新手当面对"忘记 root 账户密码导致无法登陆系统"这个问题时,直接选择重新系统.其实大可不必,我只需要进入 emergency mode(单用户模式)更新 root 账户的 ...

  3. Linux 服务器用户间ssh免密码登录

    1.本脚本为服务器用户间密码互信登录脚本 2.依赖 需要安装expect工具 3.使用 sh CreateUserssh.sh hadoop hadoop /home/hadoop/.ssh 三个带入 ...

  4. Linux清除用户登录记录和命令历史方法(个人笔记)

    清除登陆系统成功的记录 [root@localhost root]# echo > /var/log/wtmp //此文件默认打开时乱码,可查到ip等信息 [root@localhost roo ...

  5. Centos7下关于系统用户密码规则-运维笔记

    针对Centos7下的系统用户的密码规则复杂度的设置,处于安全考虑,说明如下: 一.设置密码规则 1)密码长度.有效期 /etc/login.defs文件是当创建用户时的一些规划,比如创建用户时,是否 ...

  6. 自定义SAP用户密码规则

    一般实施SAP的公司因为安全性问题都会启用一定规则的用户密码强度,普遍的做法是让Basis在RZ10里面给系统参数做赋值,然后重启服务来实现对所有用户的密码规则的定义.但这样的话对所有用户有效,没办法 ...

  7. AD颗粒化密码规则策略

    我们在第一次设定密码规则的时候,通常会在根节点或者默认组策略中设置 如果,我们在后期运维过程中,有一些特殊用户需要设置额外的密码策略,我们要如何操作呢? 可能,有些同学会在这些特殊用户对应的OU下在创 ...

  8. Linux(CentOS)用户修改密码有效期(chage命令)

    Linux设置用户密码的有效期限 解决: 先查看密码过期时间,现在是90天 1 2 3 4 5 6 7 8 [root@01 ~]# chage -l testuser Last password c ...

  9. Linux 普通用户免密码切换到root用户

    Linux 普通用户免密码切换到root用户 # 添加用户 useradd user_name # 修改密码 echo "user_name@pwd" | passwd --std ...

  10. linux 查看用户上次修改密码的日期【转】

    1.找到以下文件: cat /etc/shadow 第三段字符就是最近一次密码修改的天数,此数字是距离1970年1月1日的天数.   2.用以下命令计算: date -u -d "1970- ...

随机推荐

  1. xtrabackup进行mysql数据库备份、还原

    xtrabackup简介 前面介绍mysqldump备份方式是采用逻辑备份,其最大的缺陷就是备份和恢复速度都慢,对于一个小于50G的数据库而言,这个速度还是能接受的,但如果数据库非常大,那再使用mys ...

  2. Gitlab运维操作

    部署 安装Postfix以发送通知邮件 yum install postfix 将postfix服务设置成开机自启动 systemctl enable postfix 启动postfix system ...

  3. 社区发布非官方龙架构 .NET 9 SDK 发行版

    随着.NET 9的发布,龙芯的Loongarch 架构的.NET 9 SDK的发布也提上了日程,在龙芯.NET 的官方支持之外,今年在社区有一个非官方龙架构 .NET SDK 发行版(https:// ...

  4. npm run build命令运行后报错 npm ERR! missing script: build

    打开vue项目中的package.json查看一下script的设置,是否如下图 如果是的话,那么运行打包命令的时候要运行 npm run build:prod --report

  5. Natasha v9.0 为 .NET 开发者提供 [热执行] 方案.

    项目简介 自 Natasha v9.0 发布起,我将基于 Natasha 的推出热执行方案,这项技术允许基于 控制台(Console) 和新版 Asp.net Core 架构的项目在运行中动态重编译, ...

  6. HTML5 拖拽接口

    1.首先,为了使元素可拖动,要先设置元素为可拖拽 方法:添加draggable属性,设置为 true 注意:链接和图像默认就支持拖拽,另外,如果一个元素中的文本被选中,那么这个元素和他的文本节点此时都 ...

  7. 一个大幅提高开发效率的工具库 WYBasisKit

    WYBasisKit (持续更新) WYBasisKit 是做什么的? WYBasisKit 不仅可以帮助开发者快速构建一个工程,还有基于常用网络框架和系统API而封装的各种实用方法.扩展,开发者只需 ...

  8. vue3 封装api接口

    新建axiosj.ts import axios from 'axios'; import { showMessage } from "./status"; // 引入状态码文件 ...

  9. sed 删除 替换 文件内容

      sed添加一行内容 使用sed命令添加一行内容有多种实现方法,下面是几种不同的实现方法: 方法一:使用sed命令在指定行前添加一行内容     sed '2i This is a new line ...

  10. java 随机生成字符串 RandomStringUtils

    使用RandomStringUtils,可以选择生成随机字符串,可以是全字母.全数字或自定义生成字符等等... 其最基础的方法如下: public static String random(int c ...