ユーザーがソケットを介してコマンドに接続するとコマンドを実行し、受信したすべてのものを実行されたプログラムにリダイレクトするサービスがあります。
これはbashのようなシェルで問題なく動作し、ユーザーにリモートシェルを提供します。
Bashやshをフォークする代わりに、/bin/login
のようにユーザーとパスワードを要求するものを実行したいと思います。
それは実行する正しいコマンドですか?非ルートサービスが同じことをするために使用できるものはありませんか? getty
が/bin/login
を呼び出すと思いますが、ユーザーとして実行できますか?
Telnetdをインストールしてtelnet localhost
にリダイレクトできると思いますが、telnetサーバーを実行したくありません。
パスワードを要求する方法は?
print $Prompt
read $response
ユーザーを認証する方法を知りたい場合は、理想的には、すべてのInterwebのpam開発者ガイドの1つに従って、pam対応としてプログラムを作成します。一例は http://www.linux-pam.org/Linux-PAM-html/Linux-PAM_ADG.html です。この目的で使用できるunix_chkpwdなどのヘルパープログラムがシステム上にある場合もあります。これは、子プロセスを生成してターゲットユーザーに切り替えた後に使用できます。しかし、pamアプリケーション開発者インターフェースは非常に簡単なので、自分で認証を行うことはおそらく十分に理にかなっています。