如何在Linux上禁止用户登录
Contents
1. 概述
在本教程中,我们将介绍在 Linux 上用于阻止用户登录的各种方法及其区别。
2. nologin命令
**我们可以使用nologin 命令来阻止用户登录。*它会打印一条消息并以非零状态码退出以指示失败。我们可以使用usermod 命令的-s*标志更改用户的登录 shell 。
例如,让我们用它来阻止名为blogdemo的用户登录:
$ sudo usermod blogdemo -s /sbin/nologin
$ sudo su - blogdemo
This account is currently not available.
现在,如果我们尝试使用su登录帐户,我们会看到一个错误,表明登录已被禁用。
我们也可以通过修改*/etc/nologin.txt*文件来修改错误信息:
$ echo "Hi, logins have been disabled for your account. Please contact your system administrator for more information" | sudo tee /etc/nologin.txt
$ su - blogdemo
Hi, logins have been disabled for your account. Please contact your system administrator for more information
3. false的命令
false 命令是一个简单的命令,我们用来返回一个非零状态码 来指示失败。让我们运行它并检查它的状态码:
$ false
$ echo $?
1
** false与true 命令相反,它总是返回零状态码,表示成功**:
$ true
$ echo $?
0
我们可以在 Bash while语句中使用它们来重复执行代码:
while false; do
echo "This code will never run!"
done
while true; do
echo "This code will run forever!"
done
第一个代码块永远不会执行,因为false总是表示失败,而true总是表示成功:
$ ./script
This code will run forever!
This code will run forever!
This code will run forever!
...
虽然它不是false命令的主要目的,但我们仍然可以使用它来防止用户登录,就像我们使用nologin命令一样。但是,false不会打印错误消息并立即退出 shell,这可能会导致混淆:
$ sudo usermod blogdemo -s /bin/false
$ sudo su - blogdemo
$ echo $?
1
这意味着我们不能像在上一节中对nologin所做的那样自定义错误消息。
4. passwd命令
我们可以使用passwd 命令的*-l*标志来锁定用户帐户,防止登录:
$ sudo passwd -l blogdemo
passwd: password expiry information changed.
$ su - blogdemo
Password:
su: Authentication failure
**现在,当我们尝试login时,su会将所有密码视为无效。我们可以使用sudo passwd -u blogdemo解锁帐户。**此方法类似于false命令,因为它不允许我们显示描述性消息。
5. usermod命令
与passwd命令类似,我们可以使用带有*-L或-U*标志的usermod 命令来锁定/解锁用户帐户:
$ sudo usermod -L blogdemo
$ su - blogdemo
Password:
su: Authentication failure
$ sudo usermod -U blogdemo
$ su - blogdemo
Password:
$ echo $? # Success
0