Linux nologin
命令用于拒绝用户登录系统。当尝试使用其账户登录时,用户会收到一条消息,通常是“该账户当前不可用。”这是一种安全措施,通常用于禁用临时账户或系统账户。
Linux nologin命令介绍
nologin
命令的全称为 "Do Not Log In." 它通常位于 /sbin/nologin
或 /usr/sbin/nologin
。管理员可以将用户的登录 shell 设置为 nologin
,以防止用户登录到系统。当用户尝试登录时,系统会显示 /etc/nologin.txt
文件中的内容(如果存在),否则显示默认信息。
Linux nologin命令适用的Linux版本
nologin
命令在大多数Linux发行版中都可用。对于不支持 nologin
的旧发行版,可以手动创建 nologin
文件或使用 /bin/false
作为用户的登录 shell。
在CentOS 7中,您可以使用 yum
来安装 nologin
:
[linux@bashcommandnotfound.cn ~]$ sudo yum install util-linux-user
而在CentOS 8及更高版本中,应该使用 dnf
:
[linux@bashcommandnotfound.cn ~]$ sudo dnf install util-linux-user
Linux nologin命令的基本语法
基本语法:
nologin
Linux nologin命令的常用选项或参数说明
nologin
命令非常简单,没有多余的参数或选项。其功能专一,就是防止登录。
Linux nologin命令的实例
实例1:查看nologin命令的默认信息
尝试使用设置为 nologin
的用户登录,您将看到如下信息:
[linux@bashcommandnotfound.cn ~]$ su - restricteduser
This account is currently not available.
实例2:自定义拒绝登录的提示信息
管理员可以创建 /etc/nologin.txt
来自定义拒绝登录时显示的信息。
[linux@bashcommandnotfound.cn ~]$ echo "Access Denied. Contact Admin." | sudo tee /etc/nologin.txt
现在,当用户尝试登录时,他们会看到自定义的消息。
实例3:设置用户的shell为nologin
将用户的登录 shell 设置为 nologin
来禁止用户登录:
[linux@bashcommandnotfound.cn ~]$ sudo usermod -s /usr/sbin/nologin username
实例4:检查用户是否设置为nologin
通过查看 /etc/passwd
文件,检查用户是否设置为 nologin
:
[linux@bashcommandnotfound.cn ~]$ grep username /etc/passwd
实例5:验证nologin作为shell的效果
创建一个新用户,并将其shell设置为nologin
,然后尝试以该用户登录:
[linux@bashcommandnotfound.cn ~]$ sudo useradd -s /usr/sbin/nologin testuser
[linux@bashcommandnotfound.cn ~]$ su - testuser
This account is currently not available.
实例6:在脚本中检查nologin
编写一个脚本,检查系统上所有用户是否被设置为nologin
:
[linux@bashcommandnotfound.cn ~]$ awk -F: '($7=="/usr/sbin/nologin" || $7=="/sbin/nologin") {print $1}' /etc/passwd
这将列出所有被设置为nologin
的用户。
实例7:移除nologin,允许用户登录
若要取消禁用用户登录,可以将用户的shell更改回标准shell,如/bin/bash
:
[linux@bashcommandnotfound.cn ~]$ sudo usermod -s /bin/bash testuser
实例8:批量设置nologin
为了提高安全性,您可能需要将多个用户的shell批量更改为nologin
。以下是一个简单的循环示例:
[linux@bashcommandnotfound.cn ~]$ for user in user1 user2 user3; do sudo usermod -s /usr/sbin/nologin $user; done
实例9:查找所有使用nologin的账户
如果你想要快速找到所有设置为nologin
的账户,可以使用以下命令:
[linux@bashcommandnotfound.cn ~]$ getent passwd | grep nologin
实例10:通过SSH尝试登录nologin账户
尝试使用SSH登录到设置为nologin
的用户账户将直接断开连接:
[linux@bashcommandnotfound.cn ~]$ ssh testuser@localhost
Connection to localhost closed by remote host.
Connection to localhost closed.
实例11:使用nologin来暂时禁用账户
当需要进行系统维护或调查安全事件时,你可能需要暂时禁用某些账户而不删除它们:
[linux@bashcommandnotfound.cn ~]$ sudo usermod -s /usr/sbin/nologin tempuser
实例12:通过脚本创建nologin消息
如果管理员需要为不同的维护事件提供不同的消息,他们可以创建一个脚本来管理/etc/nologin.txt
文件:
[linux@bashcommandnotfound.cn ~]$ echo "System under maintenance. Login is suspended until further notice." | sudo tee /etc/nologin.txt > /dev/null
实例13:查看nologin设置对FTP访问的影响
如果FTP服务器配置允许shell访问,nologin
设置也会阻止用户通过FTP登录:
[linux@bashcommandnotfound.cn ~]$ ftp testuser@localhost
ftp: connect: Connection refused
实例14:使用nologin保护没有主目录的系统账户
为没有主目录的系统账户设置nologin
,以增强安全性:
[linux@bashcommandnotfound.cn ~]$ sudo useradd -r -s /usr/sbin/nologin sysaccount
实例15:替换所有用户的shell为nologin
当需要将系统上所有用户的shell替换为nologin
时,可以使用以下命令:
[linux@bashcommandnotfound.cn ~]$ sudo awk -F: '($7!="/usr/sbin/nologin") {system("sudo usermod -s /usr/sbin/nologin " $1)}' /etc/passwd
请注意,这将影响所有用户,包括管理员,因此请谨慎使用。
Linux nologin命令的注意事项
- 在设置
nologin
作为用户的 shell 之前,请确保用户不需要通过ssh或其他方式登录系统。 - 如果用户试图执行某些自动化任务,
nologin
可能会导致这些任务失败。 - 如果你遇到
bash: nologin: command not found
的错误,请按照以上提到的安装方法进行安装。
评论区