L43.linux命令每日一练 -- 第七章 Linux用户管理及用户信息查询命令 -- chage和chpasswd

7.7 chage:修改用户密码有效期

7.7.1 命令详解

【命令星级】 ★★★☆☆

【功能说明】

​ chage命令用于查看或修改用户密码的有效期,有些参数的功能与passwd相同。

【语法格式】

chage [options] [login]
chage [选项] [用户名]

​ **说明:**在chage命令以及后面的选项和用户名里,每个元素直接都至少要有一个空格。

【选项说明】

​ 表7-9针对该命令的参数选项进行了说明。

​ 表7-9 chage命令的参数选项及说明

在这里插入图片描述

7.7.2 使用范例

​ **范例7-16:**创建新用户range,要求该用户在7天之内不能更改密码,60天以后必须修改密码,过期前10天通知用户,过期30天之后禁止用户登录。

​ 这个案例的前面已经用passwd实现过了,本范例再使用chage实现同样的功能,命令如下:

[root@centos7 ~]# useradd range	#添加新用户range。
[root@centos7 ~]# chage -m7 -M60 -W10 -I30 range	#使用change按题意要求进行授权。
[root@centos7 ~]# chage -l range
Last password change					: Oct 18, 2020	#最后一次密码变化时间为2020-10-18,-d选项可控制该行。
Password expires					: Dec 17, 2020	#密码过期时间为60天,即从2020-10-18到2020-12-17,该行受-M参数影响。
Password inactive					: Jan 16, 2021	#密码停权时间,即密码过期30天后停权,-I选项可控制该行。
Account expires						: never	#账户过期时间,-E选项可控制该行。
Minimum number of days between password change		: 7		#-m选项可控制该行。
Maximum number of days between password change		: 60	#-M选项可控制该行。
Number of days of warning before password expires	: 10	#-W选项可控制该行。

​ 下面就来测试-E参数的使用,代码如下:

[root@centos7 ~]# chage -E 2020-12-31 range	#测试-E参数的使用。
[root@centos7 ~]# chage -l range |grep "Account expires"
Account expires						: Dec 31, 2020
#用户有效期变成了设定的日期。
[root@centos7 ~]# usermod -e "2021/12/31" range	#usermod也可以更改用户有效期。
[root@centos7 ~]# chage -l range |grep "Account expires"
Account expires						: Dec 31, 2021

7.8 chpasswd:批量更新用户密码

7.8.1 命令详解

【命令星级】 ★★★★☆

【功能说明】

​ chpasswd命令可从标准输入中读取一定格式的用户名、密码来批量更新用户的密码。这个格式为“用户名:密码”,注意,用户名必须事先真实存在,否则,该命令无法为一个不存在的用户设置密码。

【语法格式】

chpasswd [options] 
chpasswd [选项] 

​ **说明:**在chpasswd命令以及后面的选项和用户名里,每个元素直接都至少要有一个空格。

【选项说明】

​ 表7-10针对该命令的参数选项进行了说明。

​ 表7-10 chpasswd命令的参数选项及说明

在这里插入图片描述

7.8.2 使用范例

7.8.2.1 基础范例

​ **范例7-17:**命令行批量修改密码。

[root@centos7 ~]# id neteagle
uid=1000(neteagle) gid=1000(neteagle) groups=1000(neteagle)
[root@centos7 ~]# chpasswd	#在命令行输入chpasswd回车。
root:123456		#格式 用户名:密码,用户必须存在才行。
neteagle:123456		#一行一个。
[root@centos7 ~]# 		#在新的空行输入Ctrl+d结束输入。

7.8.2.2 生产案例

​ 范例7-18:批量创建10个用户stu01-stu10,并且设置8位随机密码,要求不能使用Shell的循环(例如:for、while等),只能用Linux命令及管道实现,此题前面也用passwd的方法实现过,本例将采用chpasswd方法来实现。

​ 1)添加10个用户:

[root@centos7 ~]# echo stu{01..10} |xargs -n 1 useradd		#添加10个用户。
[root@centos7 ~]# tail /etc/passwd
stu01:x:2000:2000::/home/stu01:/bin/bash
stu02:x:2001:2001::/home/stu02:/bin/bash
stu03:x:2002:2002::/home/stu03:/bin/bash
stu04:x:2003:2003::/home/stu04:/bin/bash
stu05:x:2004:2004::/home/stu05:/bin/bash
stu06:x:2005:2005::/home/stu06:/bin/bash
stu07:x:2006:2006::/home/stu07:/bin/bash
stu08:x:2007:2007::/home/stu08:/bin/bash
stu09:x:2008:2008::/home/stu09:/bin/bash
stu10:x:2009:2009::/home/stu10:/bin/bash

​ 2)以“用户名:密码”的格式将新添加的用户写入pass.txt文件:

[root@centos7 ~]# echo stu{01..10}:$((RANDOM+10000000)) |tr " " "\n" >pass.txt
[root@centos7 ~]# cat pass.txt 
stu01:10028876
stu02:10001001
stu03:10020618
stu04:10005553
stu05:10008663
stu06:10017520
stu07:10010008
stu08:10015959
stu09:10018951
stu10:10011872

​ 3)chpasswd将从文件pass.txt中读取相关的数据,为对应的用户设置冒号后面的密码:

[root@centos7 ~]# chpasswd <pass.txt 

​ 测试所设置密码的有效性:

[root@centos7 ~]# su - stu08	#从root切到stu08,不要密码。
[stu08@centos7 ~]# su - stu10	#从stu08切到stu10,提示输入密码。
Password: 	#输入密码10006364
[stu10@centos7 ~]# whoami
stu10		#成功切换,证明密码是正确的。

猜你喜欢

转载自blog.csdn.net/qq_25599925/article/details/125686788