passwd命令和用法
1.passwd root(用户名):可以修改用户密码
- passwd root(root用户即使密码不满8位再输一遍依然可以执行修改)
我们先看看有没有新用户 cat /etc/passwd
可以看到有新用户text001和text002如果大家没有新用户就去创建一个新用户
- useradd text003
- passwd text003
- 输入密码
我们passwd给普通用户修改密码试试
可以看到我们root用户可以修改普通用户的密码。那么普通用户可以修改root的密码?不同用户可以互相修改?
su命令用于切换用户 su text001就可以切换到text001
显然普通用户不能修改root和其他用户的密码。 那么普通用户可以修改自己的密码吗?
我们发现普通用户是可以更改密码的,但是相比root已经有了密码的复杂性问题了
2.passwd修改密码的过程 (很重要)
cat /etc/passwd命令看可以查看用户信息(我们可以看到里面有一个x 他是密码)
cat /etc/shadow命令看看密码的详细信息(下面就是text000的详细passwd信息)
我们粘贴出来分析一下text000:$6$YbzWXYQu$.aHhOzJHwKjQh7xiLXMclEbJOYFntwXDIDLvGR7rOaHqBf/pGVlbrtW.Kle7Jj/C1fXQHlE4Vwk1ZGc.9xh9l.:18454:0:99999:7:::(他们用:进行分割我们可以看到九部分)
1.用户名
2 加密后的密码
3最后一次密码修改日期距离1970 1.1的时间戳(天)
我们可以看到现在的时间戳为18454 现在我们把系统时间改掉 用命令date -s "19710101" 然后text000进行passwd就会发现时间戳已经改变
4.必须要保留的最小天数(也就是限制你修改密码的时间 0立刻可以修改 1 一天后可以修。。。)
我们把时间改成3然后修改text000的密码试试(可以看到已经不能在修改了)
然后我们把时间改到1971年1.5 看能不能修改
可以看到密码又能修改了
5.从此天过后必须修改密码从当前开始(就是密码的有效期)当前为99999天 我们将有效期改成10
然后把时间改掉
然后exit退出 ssh @text000ip(自己的ip)
发现已经登录不上去了
6.密码过期前多少天警告
7.密码过期后几天依然可以登陆,但是会提醒
8.禁用1970 1.1
9.预留
3.passwd参数命令
[root@localhost ~]# passwd -S test001 #看用户状态
[root@localhost ~]# passwd -d test002 #清理
[root@localhost ~]# passwd -e test001 #使过期
[root@localhost ~]# passwd -l test002 #锁定
[root@localhost ~]# passwd -u test002 #解锁
[root@localhost ~]# echo "123456" | passwd --stdin test001 #从输入修改密码
[root@localhost ~]# passwd -i 10 test002
[root@localhost ~]# passwd -w 10 test002
[root@localhost ~]# passwd -n 100 test002
[root@localhost ~]# passwd -x 100 test002
[root@localhost ~]# chage -M 400 test002 #修改过期时间
-k, --keep-tokens 保持身份验证令牌不过期
-d, --delete 删除已命名帐号的密码(只有根用户才能进行此操作)
-l, --lock 锁定指名帐户的密码(仅限 root 用户)
-u, --unlock 解锁指名账户的密码(仅限 root 用户)
-e, --expire 终止指名帐户的密码(仅限 root 用户)
-f, --force 强制执行操作
-x, --maximum=DAYS 密码的最长有效时限(只有根用户才能进行此操作)
-n, --minimum=DAYS 密码的最短有效时限(只有根用户才能进行此操作)
-w, --warning=DAYS 在密码过期前多少天开始提醒用户(只有根用户才能进行此操作)
-i, --inactive=DAYS 当密码过期后经过多少天该帐号会被禁用(只有根用户才能进行此操作)
-S, --status 报告已命名帐号的密码状态(只有根用户才能进行此操作)
--stdin 从标准输入读取令牌(只有根用户才能进行此操作)