如何阻止用户帐户上的 shell 访问但显示自定义消息(在 Linux 上)?

Kal*_*exx 3 linux shell

由于各种原因,我需要启用 telnet 访问(通过专用网络),并且当有人尝试使用特定用户帐户登录时(可以说CheckStatus),它不是给用户一个 shell,而是运行一些非常非常快的代码/ script/whatever 并返回两个非常具体的字符串之一。该帐户可以有密码。

我本质上是在尝试复制当您尝试通过 SSH 连接到 Github 的服务器时发生的情况,它们告诉您未授予 shell 访问权限。

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

#! /bin/bash

echo "HI!!!"
Run Code Online (Sandbox Code Playgroud)

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

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
Run Code Online (Sandbox Code Playgroud)

关于最好的方法有什么想法吗?

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

use*_*517 5

执行此操作的最佳方法是使用 ssh 并使用公钥中嵌入的“command=...”限制将密钥绑定到特定命令。

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

chsh(1)的文档在这里提供帮助

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

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