由于各种原因,我需要启用telnet访问(通过专用networking),当有人试图用特定的用户帐户login(可以说是CheckStatus ),而不是给用户一个shell,而是运行一些非常快速的代码/ script / whatever并返回两个非常特定的string之一。 这个帐户可以有一个密码。
我本质上是试图复制当你尝试SSH到Github的服务器,他们告诉你的shell访问不被授予的情况下会发生什么。
我认为这个解决scheme将取代用户的shell,所以我创build了脚本:
#! /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。
最好的方法是使用ssh,并使用公钥中embedded的“command = …”限制将密钥与特定命令绑定。
chsh:/home/test/test.sh是无效的shell
文档帮助chsh(1)
注意对loginshell的唯一限制是命令名必须列在/ etc / shells中,除非调用者是超级用户,并且可以添加任何值。
您需要使用合适的权限运行chsh,或者在/ etc / shells中添加合适的条目。