Linux 그룹 관리 테이블

Linux 그룹 관리 테이블

Red Hat Enterprise Linux 7.9
Shell=sh 사용

내가 실행할 때... getent group <group-name>-- 명령 1

예를 들어.

>>> getent group grp1
    grp1:VAS:67458 usr3,usr2,usr1

>>> groups usr4
    usr4: unixuser grp1 

>>> getent group grp1
    grp1:VAS:67458 usr4,usr3,usr2,usr1  

결과가 최신이 아니며 일부 사용자가 응답에서 누락되었습니다.

내가 실행할 때... groups <user-name>-- 명령 2

사용자가 속한 올바른 그룹을 반환하고 이제 명령 1에는 getent이전에 누락된 명령 그룹 에 사용자가 포함됩니다.

무슨 일이 일어나고 있는지 그리고 특정 UNIX 그룹의 구성원을 나열하는 더 좋은 방법이 있는지 이해하도록 도와주세요.

/etc/nsswitch.conf

여기에 이미지 설명을 입력하세요.

답변1

Linux 관점에서 보면 사용 중인 명령에는 아무런 문제가 없습니다. 그러나 여기서 일어나는 일은 usr4find it을 사용하라는 메시지가 표시될 때까지 Linux가 자신의 그룹을 알지 못한다는 것입니다 groups usr4.

귀하의 시스템은 nisplus 를 사용하도록 구성되어 있습니다 nsswitch.conf. 이는 사용자와 그룹을 저장하는 다른 컴퓨터에 데이터베이스가 있음을 의미합니다. 이러한 유형의 브리지에는 실제로 전체 데이터베이스를 로컬 UNIX 시스템에 복사하는 작업이 포함되지 않습니다. 특히 일부 디렉터리 서버는 수천 명의 사용자를 호스팅할 수 있기 때문입니다.

따라서 groups usr4nisplus가 사용자를 검색 usr4하고 해당 그룹을 평가하도록 트리거됩니다. 이는 정보의 로컬 캐시를 업데이트하고 후속 정보를 업데이트합니다 getent group grp1.

그러나 getent group grp1nisplus는 디렉토리 서버에서 이 그룹의 가능한 모든 사용자를 검색하기 위해 트리거되지 않습니다. 이 작업은 비용이 매우 많이 들고 수천 명의 사용자를 유치할 수 있습니다.

안타깝게도 유일한 옵션은 원격 서버(AD 서버)에 문의하거나 시스템 관리자에게 사용자를 찾아달라고 요청하는 것입니다.

원격 디렉토리 서버에 대한 LDAP 액세스 권한이 있는 경우 LDAP 쿼리를 작성하고 openldap 또는 유사한 도구를 사용하여 쿼리를 실행할 수 있습니다.

관련 정보