나는 pamtester와 온라인에서 찾은 다른 pam 테스트 코드를 사용하여 예상대로 작동하는 간단한 사용자 정의 PAM 모듈을 구축했습니다.
또한 pinvoke를 사용하여 pam을 인증하는 간단한 dotnet 핵심 애플리케이션을 구축했습니다.
앞서 언급했듯이 사용자 정의 모듈은 pamtester와 함께 작동하고 사용자 정의 dotnet 애플리케이션은 기본 ubuntu 15.10 pam 설정(conv 콜백이 수신될 때까지)에 대해 작동합니다.
그러나 사용자 정의 애플리케이션을 사용자 정의 PAM 모듈에 연결하면 auth.log에 오류 메시지가 표시됩니다.
dotnet: PAM unable to dlopen(pam_permit_log_response.so):
/lib/security/pam_permit_log_response.so: cannot open shared object file: No
such file or directory
...그래서 dotnet에서 사용자 정의 모듈로 pam을 호출하면 /lib/x86_64-linux-gnu/security에서 모듈을 찾을 수 없습니다.
모듈의 전체 경로를 포함하도록 pam 구성 파일을 변경하면 오류가 발생합니다.
dotnet: PAM unable to dlopen(/lib/x86_64-linux-
gnu/security/pam_permit_log_response.so): /lib/x86_64-linux-
gnu/security/pam_permit_log_response.so: undefined symbol: pam_syslog
따라서 여전히 문제가 해결되지 않는 것 같습니다. 이번에는 사용자 정의 pam 모듈의 참조입니다.
누구든지 나에게 올바른 방향을 알려줄 수 있습니까?
- PAM이 내 사용자 정의 모듈을 찾을 수 없지만 기본 우분투 모듈은 찾을 수 있는 이유는 무엇입니까?
- dotnet에서 pam을 호출할 때만 이런 일이 발생하는 이유는 무엇입니까?
- 기존 시스템 모듈처럼 작동하도록 사용자 정의 pam 모듈을 구축 및/또는 구성하려면 어떻게 해야 합니까?
답변1
pamtester가 아닌 dotnet에서 사용자 정의 모듈을 호출하는 데 문제가 있는 이유를 아직도 모르겠습니다. 그러나 가장 중요한 질문인 "기존 모듈과 동일하게 작동하도록 사용자 정의 pam 모듈을 구축 및/또는 구성하려면 어떻게 해야 합니까?"에 대답합니다. 시스템 모듈?"
대답은 이전에 다음을 사용하여 모듈을 연결했다는 것입니다.
ld -x --shared -o pam_permit_log_response.so pam_permit_log_response.o
이 문제를 해결하려면 -lpam 플래그를 사용하여 이것이 pam 모듈임을 링커에 나타내야 합니다. 따라서 link 호출은 다음과 같습니다.
ld -x --shared -o pam_permit_log_response.so pam_permit_log_response.o -lpam