getpwuid는 errno EAGAIN을 반환합니다.

getpwuid는 errno EAGAIN을 반환합니다.

제가 일하는 회사의 클라이언트에는 Active Directory Windows 서버와 Samba 4 클라이언트 역할을 하는 Linux 시스템이 있습니다. 소프트웨어는 getpwuid를 사용하여 현재 사용자가 실행할 수 있도록 하지만 해당 환경에서 함수는 NULL 포인터를 반환하고 errno는 값 11(EAGAIN, "다시 시도"로 변환됨)로 끝납니다. 가능한 원인을 알아내도록 도와줄 수 있는 사람이 있나요? 또한 내 컴퓨터에서 passwd -S user를 실행하면 사용자가 L(잠김)으로 반환되지만 문제 없이 해당 사용자로 로그인할 수 있으며 내 Linux 컴퓨터에서 로컬로 테스트할 때 로그인된 잠긴 사용자가 있습니다. , getpwuid를 실행해도 오류가 반환되지 않습니다.

답변1

그래서 getpwuid_r API 함수를 사용하여 간단한 C 소스 코드에서 strace를 실행했는데 일부 Samba, Kerberos, Winbind, PAM 32비트 라이브러리가 누락된 것을 발견했습니다. 64비트 버전의 소스 코드를 실행했는데 제대로 작동했습니다. 문제는 32비트 라이브러리가 누락되었다는 것입니다(:

관련 정보