我怎样才能阻止用户帐户访问 shell 但显示自定义消息(在 Linux 上)?

我怎样才能阻止用户帐户访问 shell 但显示自定义消息(在 Linux 上)?

由于各种原因,我需要启用 telnet 访问(通过专用网络),当有人尝试使用特定用户帐户(假设CheckStatus)登录时,它不会向用户提供 shell,而是运行一些非常快速的代码/脚本/其他内容,并返回两个非常具体的字符串之一。此帐户可以设置密码。

我本质上是想复制当您尝试通过 SSH 进入 Github 服务器时发生的情况,他们会告诉您未授予 shell 访问权限。

我认为解决这个问题的方法是替换用户的 shell,因此我创建了脚本:

#! /bin/bash

echo "HI!!!"

然后尝试通过以下方式将其设置为用户的 shell:

test@development-1:~$ chmod +x test.sh
test@development-1:~$ chsh
Password:
Changing the login shell for test
Enter the new value, or press ENTER for the default
        Login Shell [/bin/bash]: /home/test/test.sh
chsh: /home/test/test.sh is an invalid shell

有关实现此目的的最佳方法有什么想法吗?

作为参考,我们的大多数系统都是 Ubuntu 14.04。

答案1

最好的方法是使用 ssh,并使用嵌入在公钥中的“command=...”限制将密钥与特定命令绑定。

chsh:/home/test/test.sh 是无效的 shell

文档有助于chsh(1)

注意:对登录 shell 的唯一限制是命令名必须列在 /etc/shells 中,除非调用者是超级用户,这样可以添加任何值。

您需要以适当的权限运行 chsh 或在 /etc/shells 中添加合适的条目。

相关内容