由于各种原因,我需要启用 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 中添加合适的条目。