侧边栏壁纸
Linux入门自学网博主等级

每日学一条Linux命令,终成Linux大神

  • 累计撰写 725 篇文章
  • 累计创建 143 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

Linux nologin命令教程:管理用户登录权限(附实例详解和注意事项)

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 的错误,请按照以上提到的安装方法进行安装。
0

评论区