如何 – Linux 禁用用户帐户命令
您需要使用 usermod 命令来锁定和禁用用户帐户。该选项通过将加密密码哈希放入/etc/shadow-L文件中来锁定用户密码。要禁用用户帐户,请将到期日期设置为 1 或 1970-01-01。!
教程详细信息 | |
---|---|
难度等级 | 简单的 |
Root 权限 | 是的 |
要求 | Linux 终端 |
类别 | 用户管理 |
操作系统兼容性 | Alma • Alpine • Arch • Debian • Fedora • Mint • openSUSE • Pop!_OS • RHEL • Rocky • Stream • SUSE • Ubuntu • WSL |
预计阅读时间 | 4 分钟 |
句法
语法如下:
其中,
sudo usermod -L -e 1 {user}
sudo usermod -L -e 1970-01-01 {user}
- -L:锁定{user}指定的本地用户账户。
- -e 1:用户帐户被禁用的日期。该值1将日期设置为“1970 年 1 月 2 日”。换句话说,用户无法回到过去并再次登录。
- {user}:您希望锁定的 Linux 用户名。
让我们看一些例子。
Linux 禁用用户帐户命令示例
在此示例中,禁用名为“raj”的用户的本地用户帐户,运行:
# usermod -L -e 1 raj
锁定 Linux 用户帐户时,建议终止或停止服务器上的所有用户进程,以便他们无法使用 ssh 多路复用或任何其他方法设置的现有连接登录。使用kill 命令或killall 命令如下:
当 raj 尝试登录时,他将在屏幕上看到以下消息
# killall -STOP -u raj #<-- STOP all processes owned by raj
# OR kill all process owned by the user named 'raj' #
# killall -KILL -u raj #<-- KILL ALL raj processes
Your account has expired; please contact your system administrator.
但是,较旧的 ssh 客户端不会显示任何消息:
$ ssh raj@server1.example.com
示例输出:
raj@server1.example.com's password: Permission denied, please try again. raj@server1.example.com's password: Permission denied, please try again. raj@server1.example.com's password: Permission denied (publickey,password).
使用 less/ cat /more 或 tail 命令和grep 命令,你将在/var/log/secure(RHEL/CentOS/Fedora)或/var/log/auth.log(Debian/Ubuntu 等)文件中看到以下日志条目。例如:示例会话:
# grep -w raj /var/log/auth.log
## OR ##
# tail -f /var/log/secure
Dec 2 02:01:02 wks01 sshd[32285]: Failed password for raj from 192.168.1.100 port 34171 ssh2 Dec 2 02:01:07 wks01 sshd[32285]: Failed password for raj from 192.168.1.100 port 34171 ssh2 Dec 2 02:01:10 wks01 sshd[32285]: Failed password for raj from 192.168.1.100 port 34171 ssh2
在现代 Linux 发行版中,您将获得正确的信息。例如:
# grep raj /var/log/auth.log
输出:
May 1 12:23:33 wks01 sshd[18422]: pam_unix(sshd:account): account raj has expired (account expired) May 1 12:23:33 wks01 sshd[18422]: fatal: Access denied for user raj by PAM account configuration [preauth]
查找已禁用的 Linux 用户帐户状态
使用 chage 命令查看用户帐户的当前状态。例如,让我们找出名为“raj”的用户的状态:
# chage -l raj
示例输出:
Last password change : Dec 01, 2012 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
看到账户到期设置为“1970 年 1 月 2 日”。换句话说,不仅账户被锁定,而且密码也过期,以设置用户账户锁定的最大期限。
如何解锁 Linux 用户帐户
传递-U(解锁)如下:
usermod -e -1 -U {user}
例如,解锁名为“raj”的用户帐户,运行:
将数字传递给选项将删除帐户到期日期。您还可以传递空字符串,如下所示以获得相同的效果:
现在用户 raj 可以再次登录。使用更改命令进行验证:示例会话:
# usermod -e -1 -U raj
-1-e
# usermod -e "" -U raj
# chage -l raj
Last password change : Dec 01, 2012 Password expires : never Password inactive : never Account expires : never 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
如果您使用killall 命令如前所述停止了用户的进程,并且在此期间没有重新启动 Linux 服务器,则请按如下方式恢复进程:
# killall -CONT -u raj
总结
我希望您学会了如何在 Linux 操作系统下禁用用户帐户。此外,我还解释了如何解锁同一帐户。有关更多信息,请使用 help 命令或 man 命令查看以下手册页:
$ man usermod
$ man chage
$ man passwd