![向用户显示登录提示? /bin/登录?盖蒂?](https://linux22.com/image/4000/%E5%90%91%E7%94%A8%E6%88%B7%E6%98%BE%E7%A4%BA%E7%99%BB%E5%BD%95%E6%8F%90%E7%A4%BA%EF%BC%9F%20%2Fbin%2F%E7%99%BB%E5%BD%95%EF%BC%9F%E7%9B%96%E8%92%82%EF%BC%9F.png)
我有一个服务,当用户通过套接字连接到它时执行命令,并将其接收到的所有内容重定向到执行的程序。
它可以与 bash 等 shell 配合使用,为用户提供远程 shell。
我不想分叉 bash 或 sh,而是想运行一些要求用户和密码的东西,例如/bin/login
这是正确的运行命令吗?非 root 服务是否可以使用任何东西来执行相同的操作?我认为getty
调用/bin/login
,但我可以以用户身份运行它吗?
我想我可以安装 telnetd 并重定向到,telnet localhost
但我不想运行 telnet 服务器。
答案1
如何索取密码?
print $prompt
read $response
如果您想知道如何验证您的用户,最好将您的程序编写为支持 pam 的程序,并遵循 Interweb 上提供的所有 pam 开发人员指南之一。一个例子是http://www.linux-pam.org/Linux-PAM-html/Linux-PAM_ADG.html。您还可以在系统上有一个可用于此目的的帮助程序,例如 unix_chkpwd,您可以在生成子进程并切换到目标用户后使用它。但 pam 应用程序开发人员界面非常简单,因此您自己进行身份验证可能是合理的。