2010-06-22 4 views
1

현재 CGI 블로그 엔진을 C로 작성하고 있습니다. (재미있는 프로젝트 - 증오하지 마십시오! :) 로그인이 설정된 모든 사용자에 대해 게시를 사용하고 싶습니다. 웹 서버가 실행되고있는 컴퓨터.로컬 사용자 로그인 데이터 테스트

제공된 로그인과 암호가 시스템 로그인 데이터와 일치하는지 확인하는 올바른 방법은 무엇입니까?

호스트 시스템에 패스워드 "패스"가있는 쉘 로그인 "사용자"가있는 경우 명확히하기 위해 CGI에서 동일한 "사용자"와 "패스"로 자신을 인증 할 수 있기를 바랍니다 페이지.

면책 조항 :은 내가 CGI 사이트에 가능한 여러 라우터를 통해 암호화되지 않은 쉘 로그인 데이터를 전송하는 채워진 가스 탱크 내부에 불을 만들려고 노력하는만큼 안전하다는 것을 알고 있지만,이 ( 남아)입니다 지역화 된 재미 프로젝트 :)

답변

1

인증을 위해서는 libshadow가 필요합니다. 여기에 편리한 개요가 있습니다.

http://www.linux.org/docs/ldp/howto/Shadow-Password-HOWTO-8.html

+1

음, libshadow가 작동하려면 루트 액세스가 필요하다고 ... 내 CGI 스크립트가 루트가 될 것이라고 생각하지 않습니다./ – LukeN

+0

글쎄, CGI 스크립트에 매우 어리 석고 안전하지 않은 작업을 요청하고 있습니다. ../etc/passwd 및/etc/shadow에 액세스하고 암호를 해독하려면 상승 된 권한이 필요합니다. 유일한 다른 옵션은 다른 시스템이하는 일을하는 것이며, 이는 libshadow를 사용하는 프로세스를 대몬 화하고 CGI가 데몬을 통해 일반 사용자로 자격 증명을 실행하도록합니다. – sleepynate

+0

그 외에도 CGIpaf가 어떻게 동작하는지 살펴 보시기 바랍니다 : http://www.wagemakers.be/english/programs/cgipaf – sleepynate

0

당신은 C 라이브러리입니다 PAM를 사용할 수 있습니다. 다른 언어에 대한 바인딩도 있습니다.

+0

분명히 PAM이 인증 관련 응용 프로그램을 작성하는 가장 좋은 방법이지만, CGI 시나리오에서 PAM을 사용하는 방법이 궁금합니다. PAM 응용 프로그램은 단순히'pam_set_item (pamh, PAM_AUTHTOK, password)'를 호출 할 수 없으며, 응용 프로그램이 정의한 콜백을 통해 제공되어야합니다. 그러나 CGI 프로세스는 사용자 응답을 받기 전에 죽을 것이므로 양식 제출시 전체 PAM 컨텍스트를 복원 할 수있는 방법은 없습니다. 나는 어딘가에 {PAM question -> user answer} 매핑을 저장하는 것에 대해서만 생각할 수 있지만 이것은 거칠게 해킹 된 것처럼 보입니다. 내가 틀렸다면 나를 바로 잡아라. – rkhayrov

+0

나는 어쨌든 인증을 처리하기 위해 별도의 데몬을 수행 할 것이다. 오, SASL을 사용하지 않으시겠습니까? – unbeli