在多人操作的服务器中,锁定(禁用)用户的原因可能有很多,比如用户登录密码泄露,或者用户离开,但是仍然有用户下的一些文件没有被转移,并且因为归档的目的,暂时没有删除用户,只是锁定等等。今天我们将介绍三种在Linux命令行中锁定用户的方法,以及如何解锁用户。注意,执行锁定用户的操作,需要有管理员权限,可以是root用户,也可以是有sudo权限的用户。方法一:使用passwd命令对用户进行加锁和解锁关于passwd命令,我们在上一篇文章(Linux中使用passwd命令处理用户密码)中介绍过,主要用于处理账号密码,也可以用于锁定用户。现在让我们再回顾一下。我们在上一篇文章中提到过,passwd命令主要适用于/etc/passwd文件。这个文件是可以手动修改的,但是我们一般不会这么做,也不建议手动修改。要使用passwd命令锁定用户,请使用-l或-lock选项:passwd-l一旦锁定(或解锁),您可以使用passwd命令的-S或-status选项来检查当前状态用户的:passwd-S的输出和描述我们在《使用 passwd 命令在 Linux 中处理用户密码》一文中介绍过,大家可以参考,本文不再赘述。解锁用户,使用-u或--unlock选项:passwd-u这样锁定用户是有问题的,因为它作用于/etc/passwd文件,所以被锁定的用户仍然可以通过SSH密钥登录(如果设置了通过SSH的密码登录)。关于这个问题,我们将在下一节介绍如何处理。方法二:使用usermod命令对用户进行锁定和解锁usermod命令在Linux中主要用于修改用户帐号,也可以用来对用户进行锁定或解锁。锁定一个用户,可以使用usermod命令的-L选项:usermod-L解锁用户,使用-U选项:usermod-U锁定或解锁后,如何验证是否手术成功了吗?usermod命令也适用于/etc/passwd文件,因此passwd-S命令也可用于检查用户的状态。由于usermod用户也作用于/etc/passwd文件,也意味着被锁定的用户仍然可以通过SSH密钥登录,如何解决这个问题呢?一种方法是将用户的shell更改为nologin,这将不允许用户登录到shell。至于如何修改shell,我们以后会单独介绍,有兴趣的朋友可以先查阅相关资料。另一种方法是为用户设置一个过去的日期作为到期日期,这意味着该帐户在过去的那个日期被禁用,这也将其锁定。这个日期是过去的,需要保证它在1970-01-02和当前日期之间。usermod-L--expiredate1970-01-02上面方法锁定的用户可以通过以下方法解锁:usermod-U--expiredate''方法三:使用chage命令加锁unlockuserchage命令用于更改用户密码过期信息。它可用于在闲置一定天数后自动锁定闲置用户。基本上,上面方法2完成的工作也可以通过如下所示的chage命令来实现:chage-E1使用上面的命令,过期日期可以设置为1970-01-02,可以passed检查详细信息如下:$sudochage-lstandardLastpasswordchange:Nov07,2019Passwordexpires:neverPasswordinactive:neverAccountexpires:Jan02,1970Passwordchangeminimumnumberofdaysbetweenpasswordchange:0Maximumnumberofdaysbetweenpasswordchange99days9ofNumber9warningbeforepasswordexpires:7要解锁用户,可以通过以下方式删除过期日期:chage-E-1username在Linux命令行中,完成一个任务一般有很多种方式。我们在本文中介绍了三种锁定/解锁用户的方法。如果大家有其他更好的方法,欢迎讨论。