루트로 실행되지 않을 때 Linux에서 로그인 자격 증명을 확인하는 방법은 무엇입니까?
-
21-09-2019 - |
문제
브라우저에서 실행되는 C에서 CGI-BIN 응용 프로그램을 작성했으며 사용자가 대화식 쉘을 열고 Linux 시스템에서 파일을보고 및 편집 할 수 있습니다. 표준 Apache "www-data"사용자로 실행됩니다. 방금 사용자가 이름과 암호로 유형 (양식)을 입력하는 로그인 화면을 추가했지만 사용 사용 사용자를 인증 할 수 없습니다. getspnam 이 함수는 루트로 실행될 때만 작동하므로 작동합니다.
루트로 실행되지 않을 때 사용자의 로그인 자격 증명을 확인 해야하는 옵션은 무엇입니까?
PS : 대화식 쉘에서 "SU 루트"를 입력 한 다음 비밀번호를 입력하면 루트가 잘 높아져 상호 작용으로 수행 할 수 있습니다.
해결책
PS와 관련하여 : 글쎄, 당신이 할 때 su root
루트 사용자로 전환하고 있습니다. 그렇습니다. 물론 루트는 그림자 파일을 읽을 수 있습니다.
문제와 관련하여 : Apache 프로세스가 일시적으로 루트로 향상시킬 수는 없습니다 (전화로 setuid
또는 유사한) 인증을 수행하기 위해?
행운을 빕니다!
다른 팁
나는 당신이보고 싶다고 생각합니다 플러그 가능한 인증 모듈. Afaik, Pam은 당신을 위해 모든 지저분한 것들을 처리하며 Linux 호스트에서 사용자를 인증하기 위해 백엔드에 대해 사용자를 인증하기 위해 몇 가지 기능 호출을 수행하면 (그림자 암호, NIS, LDAP 등)
여기 짧은 것입니다 가이드 C 코드를 그들과 통합하는 것에 대해
제안한 바와 같이, 나는 Pam이 이것을하는 현대적인 방법이라고 생각합니다. 그러나 구식 학교에 가려면 인증을 수행하려면 세트 뿌리 프로그램 (대본이 아님)을 만들어야합니다.
Setuid-Root 프로그램이 많은 Gotchas가 있기 때문에 Pam이 더 나은 이유입니다.
여기 링크가 있습니다 세트 뿌리 프로그램을 안전하게 작성하는 좋은 논문에.