세 개의 Linux 서버에서만 openLDAP 사용자에게 로그인 권한을 부여하는 방법

세 개의 Linux 서버에서만 openLDAP 사용자에게 로그인 권한을 부여하는 방법

나는 openldap( phpldapadmin) 모든 사용자를 Linux Debian 서버에 동기화했으며 LDAP 사용자를 Linux 사용자로 추가하려고 하면 사용자가 이미 존재합니다(유효하지 않음을 알고 있습니다)라는 오류가 발생합니다.

aabuhasna@qa:/$ who am i
aabuhasna pts/1        2016-06-16 03:38 (XXXXX)
aabuhasna@qa:/$ sudo adduser aabuhasna
[sudo] password for aabuhasna:
adduser: The user `aabuhasna' already exists.
aabuhasna@qa:/$ cat /etc/passwd |grep aabuhasna
aabuhasna@qa:/$

그렇지 않으면 openldap사용자가 어떤 서버에도 로그인할 수 없습니다. 내 문제는 사용자가 자신의 LDAP 정보를 사용하여 세 개의 서버에만 액세스할 수 있기를 원한다는 것입니다./bin/bashloginshell

내 질문:

  • 해결 방법으로 사용자를 추가하여 /etc/passwd로그인할 수 있도록 할 수 있습니까? 가능하다면 올바른 추가 방법을 제안해 주세요.
  • 옵션 1이 작동하지 않는 경우(에 사용자 추가 /etc/passwd) 이 사용에 대한 예외를 만들기 위해 변경할 수 있는 파일이 있습니까?

답변1

나는 당신이 달성하고 싶은 것을 달성하는 데 두 가지 방법이 있다는 것을 알고 있습니다. 첫 번째는 각 개별 서버의 모듈을 사용하여 pam_access사용자별로 액세스를 허용/거부하는 것입니다. 두 번째는 pam_check_host_attrin 지시문을 사용하여 /etc/pam_ldap.conf모든 서버에서 이 기능을 활성화한 다음 사용자가 로그인할 수 있어야 하는 각 서버에 대해 지정된 사용자 ID와 연결된 속성:값 쌍을 만드는 것입니다.

ben예를 들어, 호스트 이름 "gargoyle"에서 이 기능을 활성화한 후 사용자가 해당 호스트에 로그인할 수 있도록 하려면 속성/값 쌍 "host:gargoyle"을 benLDAP 항목에 추가해야 합니다.

답변2

John의 대답이 효과가 있을 것입니다.

또는 filter구성의 명령문을 사용하면 임의의 LDAP 필터로 사용자를 필터링할 수 있습니다.nss_ldapnslcd

filter passwd (|(uidNumber=1234)(gidNumber=1234))

이 예에서는 현재 컴퓨터에서 uid 또는 gid가 '1234'인 사용자만 정의합니다. 여기서는 유효한 LDAP 필터를 사용할 수 있습니다. John의 솔루션과의 차이점은 이렇게 하면 필터링된 사용자가 해당 서버에 존재하지 않는다는 것입니다(즉, getent passwd해당 사용자에 대해 아무것도 반환되지 않습니다).

관련 정보