passwd的特殊的用法
passwd的用户锁定和解锁
- -l, --lock 锁定指名帐户的密码(仅限 root 用户)
- -u, --unlock 解锁指名账户的密码(仅限 root 用户)
a. 加锁测试
我们来锁定之后查看与上面有何异同
可以看到在密码前面多了两个感叹号,这就表示锁定了gaosh3d 密码
测试
方法1:使用 passwd 命令锁定和解锁用户
关于 passwd 命令,我们在之前的文章(使用 passwd 命令在 Linux 中处理用户密码)中介绍过,它主要用于处理账户的密码,也可以用于锁定用户。现在我们再来回顾一下。
在先前那篇文章中我们提到过,passwd 命令主要适用于 /etc/passwd 文件,这个文件可以手动修改,但我们一般不这样做,而且也不建议手动修改。要使用 passwd 命令锁定用户,可以使用 -l 或 -lock 选项:
锁定(或解锁)后,可以使用 passwd 命令的 -S 或 -status 选项来检查用户的当前状态:
其输出及说明,我们在《使用 passwd 命令在 Linux 中处理用户密码》一文中介绍过,大家可参阅一下,本文就不在赘述了。解锁用户,使用 -u 或 –unlock 选项:
通过这种方式锁定用户存在一个问题,由于它是作用于 /etc/passwd 文件,因此,被锁定的用户仍然可以通过 SSH 密钥登录(如果设置了通过 SSH 密码登录)。关于这个问题,我们在下面一节来介绍下如何处理。
方法2:使用 usermod 命令锁定和解锁用户
usermod 命令主要用于修改 Linux 中的用户账户,也可以用来锁定或解锁用户。锁定用户,可以使用 usermod 命令的 -L 选项:
解锁用户,使用 -U 选项:
锁定或解锁后,如何验证操作是否成功了呢?usermod 命令也适用于 /etc/passwd 文件,因此也可以使用 passwd -S 命令来检查用户的状态。
既然 usermod 用户也作用于 /etc/passwd 文件,那么这也意味着被锁定的用户仍然可以通过 SSH 密钥登录,如何解决这个问题呢?
有一种办法,是可以将用户的 shell 更改为 nologin,这样将不允许用户登录 shell。至于如何修改 shell,我们将在以后单独介绍,感兴趣的朋友可以先行查阅相关资料。
另外一种办法,是为用户设置一个过去的日期作为过期日期,意思是在过去的那个日期禁用账户,这样也可以锁定它。
过去的这个日期,需要确保是在 1970-01-02 和当前日期之间。
通过上述方法锁定的用户,解锁的时候,可以使用如下方法:
方法3:使用 chage 命令锁定和解锁用户
chage 命令用于更改用户密码到期信息。它可以用于在非活动的特定天数后自动锁定非活动用户。
基本上,通过上面方法 2 所做的工作,也可以通过如下所示的 chage 命令来实现:
使用上述命令,就可以将过期日期设置为 1970-01-02,可以通过如下方式查看详细信息:
要解锁用户,可以通过如下方式删除到期日期: