向定义了 /bin/bash shell 的用户显示 /etc/nologin 消息

向定义了 /bin/bash shell 的用户显示 /etc/nologin 消息

我已经将 /etc/nologin 设置为包含自定义消息,因此当使用 passwd 中定义的 /usr/sbin/nologin shell 的用户尝试登录时,此自定义消息会在将他们抛出之前出现在他们的终端上。

问题是 - 所有用户都会出现此错误,甚至 root 用户(定义了 /bin/bash...)

来自 nologin 手册页:

NAME nologin-防止非特权用户登录系统

描述 如果文件 /etc/nologin 存在且可读,login(1) 将只允许 root 访问。其他用户将看到此文件的内容,并且他们的登录将被拒绝。

文件 /etc/nologin

有想法吗?

Linux mybox02 3.13.0-32-generic #57-Ubuntu SMP Tue Jul 15 03:51:08 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux

答案1

一切按预期进行:

  • /usr/sbin/nologin 的源代码非常小且易于检查:/usr/sbin/nologin 不需要参数、不能定制且与 /etc/nologin 无关。

  • /etc/nologin 与 /bin/login 相关。因此登录时会显示 /etc/nologin 的内容,但仍允许 root 登录。因此 root 用户可以知道为什么没有人可以登录(可以有多个人成为 root,因此同事会被告知为什么其他同事这样做)。

供参考, 的主要“用户”/etc/nologin曾经是shutdown命令,当不与“now”参数一起使用时(例如:shutdown -r 23:10 "reboot for maintenance"),它会提前几分钟将 /etc/nologin 文件放入其中,以防止用户在即将关机之前登录。它现在将其放入 /run/nologin(也由 /bin/login 检查)中,以避免出现只读 /etc 的问题,
然后 root 仍然可以登录并运行shutdown -c以在需要时中止它。

唯一“误导”的部分是文档虽然不是错误的,但并没有说明 root 也会显示 nologin。

因此,您必须制作一个小型自定义程序并将其作为 shell,最好不要使用 shell 解释的程序,否则有人会找到绕过它的方法(使用 .profile 等)

相关内容