LDAP를 사용하여 사용자를 인증하고 해당 홈 디렉터리를 서버의 NFS 디렉터리에 유지하도록 서버를 구성하려고 합니다.
예: 내 서버의 디렉토리를 공유합니다.
/nfsexport 10.0.2.0/24(rw,async,no_subtree_check,fsid=0,crossmnt)\
*.em(rw,async,no_subtree_check,fsid=0,crossmnt)
/nfsexport/homes 10.0.2.0/24(rw,async,no_subtree_check)\
*.em(rw,async,no_subtree_check)
다음을 편집하여 클라이언트에 설치했습니다 /etc/fstab
.
server1:/homes /home/users nfs4 bg 0 0
파일 끝에 다음 줄을 추가 /etc/pam.d/login
합니다 /etc/pam.d/lightdm
.
session required pam_mkhomedir.so skel=/etc/skel umask=0022
이제 로그인 시 홈 디렉토리가 생성되어야 합니다 /home/users/ldapuser
. 그런데 로그인이 안되고, 서버에 홈디렉토리가 생성되지 않네요. 나는 다음을 시도했다:
- NFS가 아닌 로컬로 홈 디렉터리를 만듭니다. 작동하며 소유자와 그룹이 정확합니다. 하지만 중앙 집중화되어 있지는 않습니다.
/home/users
서버의 권한을 777로 변경합니다. NFS에서도 작동하지만 최선의 해결책은 아닙니다... 이후에 권한을 755로 변경하려고 시도했지만 소유자와 그룹이 "nobody" 및 "nogroup"으로 설정되어 있기 때문에 사용자가 자신의 홈 디렉터리에 쓸 수 없습니다.
/home/users
그렇다면 첫 번째 로그인 시 사용자 및 그룹 소유권을 기반으로 openLDAP가 자동으로 홈 디렉토리를 생성하도록 하려면 어떻게 해야 할까요 ? 아니면 적어도 권한이 777로 변경된 첫 번째 로그인 후에 변경하시겠습니까?
아니면: 중앙 집중식 홈 디렉토리와 사용자 인증을 달성할 수 있는 다른 방법이 있습니까?
답변1
이는 NFS 프로토콜의 사용자 식별 문제입니다. 작동 방식은 사용 중인 NFS 버전에 따라 다릅니다.
NFSv3에서는 사용자 이름과 비밀번호가 프로토콜의 일부가 아니며 대신 UID 및 GID 번호가 포함됩니다. UID=1000인 사용자가 시스템 A에서 호출되고 bart
동일한 uid를 가진 사용자가 시스템 B에서 호출 homer
되면 bart
시스템 B에서 사용자가 만든 파일을 읽을 수 있습니다 homer
. 이것이 NFS를 사용할 때 일반적으로 UID 동기화가 좋은 이유 중 하나입니다.
그러나 NFSv4는 이 모든 것을 변화시킵니다. NFSv4에서 사용자와 그룹은 단순한 UID 번호 그 이상입니다.이름유선으로 전송되었습니다. NFSv4 프로토콜은 제대로 작동하도록 하기 위해 몇 가지 사항을 크게 변경했습니다.
- 프로토콜을 사용하려면 모든 사용자 이름이 모든 컴퓨터에 있어야 합니다. 즉, 클라이언트에 사용자가 있는 경우
bart
서버는~ 해야 하다사용자도 있습니다bart
(UID는 다를 수 있음). 이들 중 해당 사용자가 누락된 경우 해당nobody
사용자nogroup
및 그룹으로 돌아가게 됩니다. - 이 프로토콜에는 "도메인"이라는 개념이 있습니다. 기본적으로 도메인 이름(즉, 실행 중인 컴퓨터의 FQDN에서 호스트 이름을 뺀 값)을 기반으로 하지만 임의의 문자열일 수 있습니다. 도메인은 서로 다른 사용자 그룹으로 컴퓨터를 구분하는 데 사용됩니다. 클라이언트의 도메인이 서버의 도메인과 일치하지 않으면 시스템은
bart
시스템 a의 사용자가 정확히 동일하다고 가정합니다.다른bart
b 기계에서.
자세한 내용은 rpc.idmapd(8)
ID 매핑 프로토콜의 Linux 구현을 설명하는 매뉴얼 페이지를 읽어보세요.
최근까지 대부분의 Linux 배포판은 명시적으로 요청하지 않는 한 NFSv3으로 기본 설정되었습니다. 그러나 수년에 걸쳐 기본값은 NFSv4로 변경되었습니다.
작업을 원활하게 진행하려면 다음 두 가지 옵션이 있습니다.
- NFSv3으로 되돌립니다.
nfsvers=3
설치 옵션을 통해 이 작업을 수행 할 수 있습니다 . rpc.idmapd
예상한 효과가 나타나지 않는 이유를 알아낸 다음 효과가 나타날 때까지 변경하세요.
당연히 저항이 가장 적은 경로는 1입니다. 그러나 NFSv3의 기능 세트와 비교할 때 NFSv4에는 포기하면 잃게 될 유용한 기능이 많이 있습니다.
답변2
LDAP 사용자로 로그인할 수 있습니까? #ldapsearch -x 및 #ldapsearch -d1을 사용하여 확인할 수 있습니다. "d"는 디버그를 의미하고 "1"은 레벨을 의미합니다.
응답을 받지 못하면 /etc/hosts 파일에 IP와 이름을 추가해야 할 수도 있습니다. 또한 /etc/openldap/ldap.conf 파일이 정확하고 올바른 인증서 디렉토리를 가리키는지 확인할 수 있습니다.
LDAP에 연결한 후 autofs 유틸리티를 사용하여 사용자의 홈 디렉토리를 자동으로 마운트할 수 있습니다.
/etc/auto.master 파일을 수정하고 /etc/auto.users를 생성해야 합니다.
여기서는 한 번에 한 단계씩 LDAP를 연결하고 인증한 다음 후속 단계를 수행하는 것이라고 생각합니다.