사용자가 소켓을 통해 명령에 연결할 때 명령을 실행하고 수신하는 모든 것을 실행 프로그램으로 리디렉션하는 서비스가 있습니다.
bash와 같은 쉘과 함께 사용하여 사용자에게 원격 쉘을 제공할 수 있습니다.
bash나 sh를 포크하고 싶지는 않지만 대신 사용자와 비밀번호가 필요한 작업을 실행하고 싶습니다./bin/login
이것이 실행하는 올바른 명령입니까? 루트가 아닌 서비스에서 동일한 작업을 수행하는 데 사용할 수 있는 것이 있습니까? getty
호출이 있는 것 같은데 /bin/login
사용자로 실행할 수 있나요?
telnetd를 설치하고 거기로 리디렉션할 수 있을 것 같지만 telnet localhost
텔넷 서버를 실행하고 싶지는 않습니다.
답변1
비밀번호를 어떻게 요청하나요?
print $prompt
read $response
사용자를 인증하는 방법을 알고 싶다면 pam을 지원하는 프로그램을 작성하고 인터넷에서 사용할 수 있는 pam 개발자 가이드 중 하나를 따르는 것이 가장 좋습니다. 예는 다음과 같습니다http://www.linux-pam.org/Linux-PAM-html/Linux-PAM_ADG.html. 또한 unix_chkpwd와 같이 이러한 목적으로 사용할 수 있는 도우미 프로그램이 시스템에 있을 수도 있습니다. 이 프로그램은 하위 프로세스를 생성하고 대상 사용자로 전환한 후 사용할 수 있습니다. 하지만 pam 애플리케이션 개발자 인터페이스는 매우 간단하므로 본인을 인증하는 것이 합리적일 수 있습니다.