PAM 모듈을 로드할 수 없습니다. 진단 방법은 무엇입니까?

PAM 모듈을 로드할 수 없습니다. 진단 방법은 무엇입니까?

서비스 모듈을 작성 PAM하여 .lightdm/etc/pam.d/lightdm

그러나 lightdm불평합니다 ( /var/log/auth.logUbuntu 14.04에서):

Sep  9 14:16:48 Ubuntu-build lightdm: PAM unable to dlopen(pam_my.so): /lib/security/pam_my.so: cannot open shared object file: No such file or directory

무슨 일이 일어나는지 보면 strace()로그 메시지와는 반대로내 모듈을 찾아서 열고 PAM확인하기 시작했지만 포기하고 다른 디렉토리에서 계속 검색하여 결국 찾을 수 없다고 불평했습니다. 다음은 몇 가지 샘플 출력입니다.

12230 open("/lib/x86_64-linux-gnu/security/pam_my.so", O_RDONLY|O_CLOEXEC) = 4
12230 read(4, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0000\f\0\0\0\0\0\0"..., 832) = 832
12230 fstat(4, {st_mode=S_IFREG|0644, st_size=17728, ...}) = 0
12230 mmap(NULL, 2105544, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 4, 0) = 0x7fe087ebe000
12230 mprotect(0x7fe087ec0000, 2093056, PROT_NONE) = 0
12230 mmap(0x7fe0880bf000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 4, 0x1000) = 0x7fe0880bf000
12230 close(4)                          = 0

작업 상황(예: )에서는 다른 상황으로 계속 진행하기 pam_unix.so보다는 계속 진행합니다. 모든 로그를 살펴봤지만 무엇이 불만족스러운지 알려주는 정보를 더 이상 찾을 수 없습니다 . 무엇이 잘못되었는지 진단하기 위해 어떤 출처를 살펴볼 수 있는지조차 모르겠습니다. 모듈이 올바르게 빌드된 것 같습니다. 나는 읽었고close()mmap()/var/log/*PAMModule Writers Guide생각하다나는 올바른 규칙을 모두 따릅니다. 이 문제 진단을 진행하는 방법에 대한 단서가 있습니까?

터치도 시도했지만 /etc/pam_debug유용한 로그 메시지가 제공되지 않았습니다.

답변1

문제가 해결되었습니다. 참고로 제가 진단한 방법은 다음과 같습니다.

  1. 다음에서 Linux-PAM 소스 코드를 다운로드하세요.https://git.fedorahosted.org/cgit/linux-pam.git
  2. 내 소스 코드를 pam_permit.c(사용자 상호 작용 없이 항상 성공하는 매우 간단한 모듈)의 내용으로 대체했습니다.
  3. 차이점을 확인하려면 참조 소스의 빌드를 확인하세요.

--no-undefined링커 플래그를 추가하고 라이브러리 안팎으로 명시적으로 링크했을 때 정의되지 않은 기호(, 에만 존재함)가 있어 라이브러리가 로드되지 않는 것을 발견했습니다 .pamdlstrlcpyBSD Unix

관련 정보