在 Linux 中锁定和解锁用户的三种方法

系统 Linux
今天我们来介绍 3 种在Linux命令行中锁定用户的方法,同时也包含如何解锁用户。

在多用户操作的服务器中锁定(禁用)用户可能有多种原因,比如某个用户的登录密码被泄露,或者某个用户离职,但是该用户下还有部分文档未完成转移,而因为归档的目的暂时不删除该用户,而只是锁定等等。

今天我们来介绍 3 种在Linux命令行中锁定用户的方法,同时也包含如何解锁用户。

注意,要执行锁定用户的操作,需要有管理员权限,可以是 root 用户,或者是具有 sudo 权限的用户。

方法1:使用 passwd 命令锁定和解锁用户

关于 passwd 命令,我们在之前的文章(使用 passwd 命令在 Linux 中处理用户密码)中介绍过,它主要用于处理账户的密码,也可以用于锁定用户。现在我们再来回顾一下。

在先前那篇文章中我们提到过,passwd 命令主要适用于 /etc/passwd 文件,这个文件可以手动修改,但我们一般不这样做,而且也不建议手动修改。

要使用 passwd 命令锁定用户,可以使用 -l 或 -lock 选项:

passwd -l <username>

锁定(或解锁)后,可以使用 passwd 命令的 -S 或 -status 选项来检查用户的当前状态:

passwd -S <username>

其输出及说明,我们在《使用 passwd 命令在 Linux 中处理用户密码》一文中介绍过,大家可参阅一下,本文就不在赘述了。

解锁用户,使用 -u 或 –unlock 选项:

passwd -u <username>

通过这种方式锁定用户存在一个问题,由于它是作用于 /etc/passwd 文件,因此,被锁定的用户仍然可以通过 SSH 密钥登录(如果设置了通过 SSH 密码登录)。关于这个问题,我们在下面一节来介绍下如何处理。

方法2:使用 usermod 命令锁定和解锁用户

usermod 命令主要用于修改 Linux 中的用户账户,也可以用来锁定或解锁用户。

锁定用户,可以使用 usermod 命令的 -L 选项:

usermod -L <username>

解锁用户,使用 -U 选项:

usermod -U <username>

锁定或解锁后,如何验证操作是否成功了呢?usermod 命令也适用于 /etc/passwd 文件,因此也可以使用 passwd -S <username> 命令来检查用户的状态。

既然 usermod 用户也作用于 /etc/passwd 文件,那么这也意味着被锁定的用户仍然可以通过 SSH 密钥登录,如何解决这个问题呢?

有一种办法,是可以将用户的 shell 更改为 nologin,这样将不允许用户登录 shell。至于如何修改 shell,我们将在以后单独介绍,感兴趣的朋友可以先行查阅相关资料。

另外一种办法,是为用户设置一个过去的日期作为过期日期,意思是在过去的那个日期禁用账户,这样也可以锁定它。

过去的这个日期,需要确保是在 1970-01-02 和当前日期之间。

usermod -L --expiredate 1970-01-02 <username>

通过上述方法锁定的用户,解锁的时候,可以使用如下方法:

usermod -U --expiredate '' <username>

方法3:使用 chage 命令锁定和解锁用户

chage 命令用于更改用户密码到期信息。它可以用于在非活动的特定天数后自动锁定非活动用户。

基本上,通过上面方法 2 所做的工作,也可以通过如下所示的 chage 命令来实现:

chage -E 1 <username>

使用上述命令,就可以将过期日期设置为 1970-01-02,可以通过如下方式查看详细信息:

$ sudo chage -l standard
Last password change: Nov 07, 2019
Password expires: never
Password inactive: never
Account expires: Jan 02, 1970
Minimum number of days between password change: 0
Maximum number of days between password change: 99999
Number of days of warning before password expires: 7

要解锁用户,可以通过如下方式删除到期日期:

chage -E -1 username

在 Linux 命令行中,要完成某个任务,一般来说都会有多种方法。我们在本文中介绍了三种锁定/解锁用户的方法,大家如有其他更好的方法,欢迎讨论。

责任编辑:庞桂玉 来源: TIAP
相关推荐

2021-04-04 22:56:47

Linux循环用户

2022-08-19 11:17:09

Linux

2022-05-31 16:00:46

Go 编程语言复制文件Go 标准库

2022-10-28 11:07:03

2010-09-08 13:29:48

CSS

2021-12-20 07:11:26

Java List排序 Java 基础

2009-07-08 12:56:32

编写Servlet

2021-02-09 00:14:24

Windows 10Windows微软

2009-06-23 10:45:18

Hibernate支持

2011-06-10 10:43:12

Ubuntu应用安装

2015-12-11 09:24:38

加密数据Linux

2011-08-01 17:41:09

Oraclesqlplus

2009-12-11 18:49:39

预算编制博科资讯

2011-04-18 15:32:45

游戏测试测试方法软件测试

2010-09-14 15:10:49

CSS注释

2022-07-13 16:06:16

Python参数代码

2016-10-12 13:53:38

JavaByteBufferRandomAcces

2020-06-17 10:52:00

DDoS攻击网络攻击网络安全

2010-11-16 16:11:28

Oracle身份验证

2022-03-26 09:18:06

Linux命令行工具删除文件
点赞
收藏

51CTO技术栈公众号