나는 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/bash
loginshell
내 질문:
- 해결 방법으로 사용자를 추가하여
/etc/passwd
로그인할 수 있도록 할 수 있습니까? 가능하다면 올바른 추가 방법을 제안해 주세요. - 옵션 1이 작동하지 않는 경우(에 사용자 추가
/etc/passwd
) 이 사용에 대한 예외를 만들기 위해 변경할 수 있는 파일이 있습니까?
답변1
나는 당신이 달성하고 싶은 것을 달성하는 데 두 가지 방법이 있다는 것을 알고 있습니다. 첫 번째는 각 개별 서버의 모듈을 사용하여 pam_access
사용자별로 액세스를 허용/거부하는 것입니다. 두 번째는 pam_check_host_attr
in 지시문을 사용하여 /etc/pam_ldap.conf
모든 서버에서 이 기능을 활성화한 다음 사용자가 로그인할 수 있어야 하는 각 서버에 대해 지정된 사용자 ID와 연결된 속성:값 쌍을 만드는 것입니다.
ben
예를 들어, 호스트 이름 "gargoyle"에서 이 기능을 활성화한 후 사용자가 해당 호스트에 로그인할 수 있도록 하려면 속성/값 쌍 "host:gargoyle"을 ben
LDAP 항목에 추가해야 합니다.
답변2
John의 대답이 효과가 있을 것입니다.
또는 filter
구성의 명령문을 사용하면 임의의 LDAP 필터로 사용자를 필터링할 수 있습니다.nss_ldap
nslcd
filter passwd (|(uidNumber=1234)(gidNumber=1234))
이 예에서는 현재 컴퓨터에서 uid 또는 gid가 '1234'인 사용자만 정의합니다. 여기서는 유효한 LDAP 필터를 사용할 수 있습니다. John의 솔루션과의 차이점은 이렇게 하면 필터링된 사용자가 해당 서버에 존재하지 않는다는 것입니다(즉, getent passwd
해당 사용자에 대해 아무것도 반환되지 않습니다).