웹 애플리케이션을 사용하는 사용자를 인증하기 위해 PAM이 호스팅 시스템의 "passwd" 및 "shadow" 파일을 사용하도록 하려고 합니다.
저는 RedHat 6을 사용하고 있으며 Apache는 2.2, Apache 모듈 mod_authnz_pam입니다.
Apache( ) httpd.conf
의 PAM 구성은 다음과 같습니다.
<Location />
AuthType Basic
AuthName "basic_auth"
AuthBasicProvider PAM
AuthPAMService httpd
Require valid-user
</Location>
httpd
/etc/pam.d
다음 구성으로 in이라는 파일을 만들었습니다 .
auth required pam_unix.so
account required pam_unix.so
session required pam_unix.so
SELinux가 활성화되었습니다. getenforce
"시행"을 반환합니다. 나는 또한 다음을 실행했습니다.
setsebool -P allow_httpd_mod_auth_pam 1
따라서 해당 IP 주소에 액세스하려고 하면 사용자 자격 증명을 입력하라는 메시지가 표시됩니다. 하지만 시스템 자격 증명을 입력하면 다음 로그가 나타납니다.
unix_chkpwd[29856]: 확인이 통과되었습니다. 사용자를 알 수 없습니다.
unix_chkpwd[29856]: 사용자(사용자 이름) 비밀번호 확인에 실패했습니다.
localhost httpd: pam_unix(httpd:auth): 인증 실패 logname= uid=48 euid=48 tty= ruser= rhost=xxx.xx.xx.x user=username
내 사용자 이름은 확실히 passwd 및 Shadow 파일에 존재하지만 PAM에서는 그것이 존재하지 않는다고 말합니다.
내가 무엇을 놓치고 있나요?
답변1
/etc/pam.d/httpd
이와 같거나 비슷한 설정입니다.
#%PAM-1.0
auth include system-auth
account required pam_nologin.so
account include system-auth
password include system-auth
session optional pam_keyinit force revoke
session include system-auth
session required pam_loginuid.so
아이디어는 로그인을 인증하는 대신 pam 스택이 다른 파일을 보도록 하는 것입니다. 일반적으로 pam , pam 및 pam system-auth
과 같은 다른 많은 pam 서비스에서 호출됩니다 .login
su
sudo