一、passwd命令
1.功能
功能一:修改用户的密码
功能二:修改用户的相关信息(/etc/shadow文件的内容)
2.命令格式
passwd [--stdin] [账号名称]
passwd [参数] 账号名
相关参数与选项
--stdin:可以通过来自前一个管道的数据作为密码输入,对shell脚本有帮助。但不是所有Linux发行版本都支持此参数
-l:Lock的意思,将/etc/shadow第二栏最前面加上感叹号(!),使使用者密码冻结,无法登陆
-u:与-l相反,Unlock的意思,将!号去除
-S:列出密码相关参数,即/etc/shadow文件内的大部分信息
-n:后面接天数,/etc/shadow第4栏的内容,多久不可修改密码
-x:后面接天数,/etc/shadow第5栏的内容,多久内必须重新修改密码
-w:后面接天数,/etc/shadow第6栏的内容,密码过期前的警告天数
-i:后面接日期,/etc/shadow第7栏的内容,密码失效日期
3.使用passwd命令修改密码的方式
passwd修改自己的密码时,后面自己的用户名可以加也可以不加
①root修改密码
修改自己的密码:passwd [root]
修改其他用户密码:passwd 其他用户名
注意事项
root修改自己/其他用户的密码时,如果新密码太短、不严格时,系统不会发出警告,依然可以顺利修改密码
②非root修改密码
修改自己的密码:passwd [自己的用户名]
注意事项
一般用户修改自己的密码时,如果新密码太短、设置的密码在字典里面可以找到等等,系统会发出警告,并且不让你修改。所以你需要设置严格的密码,系统才会让你修改通过
4.PAM模板(这里只是简介,后面文件有详细介绍)
/etc/pam.d/passwd文件密码管理机制:一般用户修改密码时,系统会有很多限制,这是为了安全性,也是为了管理。所以新的Linux发行版本使用较严格的PAM模板来管理密码,这个管理的机制就写在这个文件内
pam_cracklib.so:/etc/pam.d/passwd文件与密码有关的测试模板就是使用pam_cracklib.so,这个模板会检验密码相关的信息,并且替换/etc/login.defs的PASS_MIN_LEN的设置
5.演示案例
案例一:dongshao修改自己的的密码
这个案例中,我修改的新密都是纯数字密码安全性低,所以系统不让我修改,显示unchanged
案例二:root修改dongshao的密码
root管理员不论修改谁的密码,都不需要知道原密码,直接修改并且新密码不论安全性低还是高都可以通过
案例三:使用--stdin标准输出流进行修改密码
echo "123456" | passwd --stdin dongshao
注意事项
①不是所有的Linux系统都支持此--stdin参数,Ubuntu就不支持
②不建议使用这种方法修改,因为使用这种方法修改密码,此行命令会存在历史命令中,若系统被人攻击,他人可以在/用户名/.bash_history文件中找到这个密码
③这个操作通常仅通过shell脚本大量建立用户账号时使用
案例四:查看dongshao用户的/etc/shadow文件内的相关信息
第一部分:用户名
第二部分:当前用户的状态。(P/PS:有效用户,L/LK:被锁定了,不能使用)
第三部分:用户密码上一次修改的时间,/etc/shadow第3字段内容
第四部分:密码不可以被修改的限制天数,/etc/shadow第4字段内容
第五部分:用户下一次需要修改密码的时间,/etc/shadow第5字段内容
第七部分:密码过期前的警告天数,/etc/shadow第6字段内容
第八部分:账号是否会失效(-1永不失效),/etc/shadow第8字段内容
案例五:使用-l参数将一个账号锁定,使其失效
第一步:使用root身份,将锁定dongshao账号
第二步:查看-S参数查看用户的状态。第二栏显示L,代表被锁定了(Lock)
第三步:查看/etc/shadow文件中dongshao的信息。可以看到dongshao第二栏密码参数前多了一个感叹号!,表示密码失效了,不能使用了
第四步:使用root将dongshao解锁,/etc/shadow密码栏前面的!号消失了,状态也变为了P
二、chage命令
1.功能
大部分用于修改用户在/etc/shadow文件的内容
还可以设置让用户再登录系统时必须强制修改内容
2.命令格式
chage [选项] 账号名
相关参数与选项
-l(小写的L):列出该账号的详细密码参数,比passwd -S详细
-d:后面接日期,修改/etc/shadow第3栏位(最近一次修改密码的日期),格式【YYYY-MM-DD】
-E:后面接日期,修改/etc/shadow第8栏位(账号失效日),格式【YYYY-MM-DD】
-I(大写的i):后面接天数,修改/etc/shadow第7栏位(密码失效日期)
-m:后面接天数,修改/etc/shadow第4栏位(密码最短保留天数)
-M:后面接天数,修改/etc/shadow第5栏位(密码多久需要进行修改)
-W:后面接天数,修改/etc/shadow第6栏位(密码过期前的警告天数)
3.演示案例
案例一:查看dongshao用户的信息
查看的信息和passwd -S查看的信息差不多相同,但是passwd -S不分类,这种方法可以分类,看起来清晰
案例二:使用-d参数让用户登录系统时需要强制修改密码
下面这个案例的一个应用场景就是:在学校时,老师不想知道学生的密码,那么就让学生在初次上课时,先将学生的初始密码设为他们的学号,然后他们以学号作为登录时必须强制修改密码(此时他们自己设定),这样以后他们就可以使用自己的密码登录了
第一步:建立一个账号,名为dongshao。并用passwd为dongshao设置一个初始密码(当然,你也可以不建立新账号,也可以对已有的账号演示下面这个案例)
第二步:使用chage修改dongshao用户的上一次修改密码的时间为0,修改为0之后,代表该账号密码修改的时间为1970-01-01,所以系统会觉得此用户有问题,再次登录系统时会必须让你修改密码
第三步:查看dongshao用户的信息,后面显示密码必须被修改
第四步:当你以dongshao登录系统时,系统会强制让你重新修改密码。并且修改完密码之后,你会自动退出系统
第四步:退出系统之后,你再次登录系统时就可以使用新密码登陆了
三、usermod命令
1.功能
当你使用useradd新建完一个账号之后,想要修改账号的信息,则可以直接修改/etc/passwd或/etc/shadow的字段数据就可以了
还有一种修改账号数据的方法就是利用usermod命令,usermod命令与useradd命令有很多相似的功能
修改/etc/passwd、/etc/shadow文件的内容
2.命令格式
usermod [选项] 用户名
相关参数与选项
-c:后面接账号说明,修改/etc/passwd第5栏的内容
-d:后面接账号的家目录,修改/etc/passwd第6栏的内容
-e:后面接日期,修改/etc/shadow第8栏的内容,格式为【YYYY-MM-DD】
-f:后面接天数,修改/etc/shadow第7栏的内容
-g:后面接初始用户组GID,修改/etc/passwd第4栏的内容
-G:后面接次要用户组,修改/etc/group的内容
-a:与-G配合使用,可【增加次要用户组的支持】而非【设置】
-l:后面接账号名称,即修改账号的名称,修改/etc/passwd第1栏的内容
-s:更改用户使用的shell,后面接实际的shell文件,例如:/bin/bash或/bin/csh等
-u:修改用户UID,后面接数字,修改/etc/passwd第2栏的内容
-L:暂时将使用者的密码冻结,让它无法登陆,其实仅仅修改/etc/shadow密码栏,在密码栏前加个!号
-U:将/etc/shadow密码栏的感叹号(!)拿掉,解锁
3.演示案例
案例一:修改/etc/passwd文件中dongshao的第五部分说明信息
案例二:设置dongshao账号在2019-06-30失效
再将其设置回去,永远不失效