getgroups Linux 시스템 호출은 어디서 데이터를 가져 옵니까


1

로그인 할 때 오류가 발생하는 문제를 디버깅 중 cannot find name for group ID 387입니다. 이 그룹이 무엇인지, 왜 내 사용자가 그 그룹과 연결되어 있는지 파악하려고합니다.

사용하여 strace그 발견 getgroups나는 떠들썩한 파티를 시작하고 반환 할 때 호출되는

getgroups(6, [20, 106, 387, 513, 2385, 2447]) = 6

내가 보았을 때 나는 /etc/group그룹 387을 찾지 못했습니다. 그러나 내 질문은 왜 getgroups그 숫자를 처음에 반환했을 것입니다.

Ubuntu 12.04를 사용하고 있지만 LDAP로 로그인합니다. 같은 계정으로 다른 컴퓨터에 로그인하면 다른 번호 목록 ( getgroups(7, [106, 513, 515, 516, 519, 520, 2503]) = 7)이 표시됩니다.

그래서 getgroups쿼리 하는 정보의 출처가 무엇인지 궁금 합니다. 내 문제는 로컬 그룹과 LDAP 그룹 사이에 약간의 불일치가 있다고 생각하지만이 모든 것이 어떻게 작동하는지 잘 모르겠습니다.

답변:


1

다른 정보 소스와 우선 순위는 /etc/nssswitch.conf구성 파일에 정의되어 있습니다. 같은 기능을하는 경우 NSS 모듈을 사용해야이 구성 파일 목록 getgroups()또는 getpwent()다른 사람이 사용된다.

귀하의 게시물은 시스템이 LDAP 디렉토리를 사용자 및 그룹의 소스로 사용하므로 사용자 가보고있는 그룹이 libnss_ldap모듈 에서 비롯된 것 같습니다 . 의 구성에 따라 /etc/nsswitch.conf로컬로 정의 된 그룹이 LDAP NSS 모듈이 반환하는 내용을 무시할 수 있습니다. LDAP NSS 모듈은 두 호스트간에 다르게 구성 될 수도 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.