Linux 서버에 대한 관리자 로그인을 위해 Samba 4 AD에 대해 LDAP 인증을 구현하고 있습니다.
libpam-ldapd
PAM을 성공적으로 구성 했으며 libnss_ldapd
사용자의 홈 디렉터리가 자동으로 생성되었습니다. 지금 직면한 문제는 사용자가 gidNumber
로컬에 전혀 존재하지 않는 기본 그룹으로 매핑된 삼바를 가지고 있다는 것입니다. 현재 상황은 /home
디렉터리가 다음과 같습니다(사용자의 기본 그룹 참고).
drwxr-xr-x 2 user 1005 4096 Okt 13 16:01 user/
문제는 sssd
도메인이 Samba 4 AD에 가입되어야 한다는 것입니다. 이는 현재도 아니며 앞으로도 없을 것입니다. 수백 개의 Ganeti VM이 있으므로 대부분은 매우 중요합니다!
관리자(특정 AD 그룹의 구성원)와 서명된 SSH 공개 키를 가진 관리자가 이러한 컴퓨터에 로그인할 수 있도록 허용합니다.
나에게 필요한 것은 사용자를 기반으로 그룹 이름을 바꾸고 이러한 그룹을 로컬에서 자동으로 생성하는 것입니다. wbinfo
and 를 사용하여 이름을 바꿀 수 있어야 한다는 내용을 어디선가 읽었습니다 rip map
. 하지만 어떻게 해야할지 모르겠습니다. 관리자 그룹을 만들고 모두 추가할 것이므로 로컬에서 그룹을 만드는 것은 부차적인 작업입니다.
주요 질문은 다음과 같습니다.
사용자의 기본 그룹 이름을 gidNumber
에서 어떻게 바꾸나요 uid
?
감사합니다.
답변1
답변을 찾았지만 게시할 시간이 없었습니다. Samba 4 AD에 대한 사용자 비밀번호 인증을 구현하는 완전한 방법은 다음과 같습니다.
- libnss-ldapd 설치
- Samba 4 AD에 대한 인증서를 받아 CA에 추가하세요.
- CA 인증서 업데이트
- ldapsearch를 사용하여 연결 확인
- pam-auth-update 및 LDAP를 사용해야 하는 서비스 선택
- 필요한 경우 로그인 시 홈페이지 만들기를 이용하세요.
열고
/etc/nslcd.conf
다음과 같이 수정합니다.# /etc/nslcd.conf # nslcd configuration file. See nslcd.conf(5) # for details. # The user and group nslcd should run as. uid nslcd gid nslcd # The location at which the LDAP server(s) should be reachable. uri ldaps://dc.example.com:636/ # The search base that will be used for all queries. base DC=example,DC=com # The LDAP protocol version to use. #ldap_version 3 # The DN to bind with for normal lookups. #binddn nslcd binddn CN=binduser,CN=Users,DC=example,DC=com bindpw yourpassword # The DN used for password modifications by root. #rootpwmoddn cn=admin,dc=example,dc=com # SSL options #ssl start_tls #tls_reqcert never ssl on tls_cacertfile /etc/ssl/certs/ca.pem #tls_cacertfile /etc/ssl/certs/ca-certificates.crt # The search scope. scope sub filter passwd (&(objectClass=user)(!(objectClass=computer))(uidNumber=*)(unixHomeDirectory=*)) map passwd uid sAMAccountName map passwd homeDirectory unixHomeDirectory map passwd gecos displayName filter passwd (&(objectClass=user)(!(objectClass=computer))(uidNumber=*)(unixHomeDirectory=*)) map shadow uid sAMAccountName map shadow shadowLastChange pwdLastSet filter passwd (&(objectClass=user)(!(objectClass=computer))(uidNumber=*)(unixHomeDirectory=*)) map group cn sAMAccountName map group gidNumber uidNumber map group memberUid sAMAccountName
로그인을 테스트하면 다음이 표시됩니다.
user@test [Home]:~$ ll /home/ drwxr-xr-x 3 user user 4096 May 20 01:41 user/ user@test [Home]:~$ user@test [Home]:~$ user@test [Home]:~$ ll /home/user/ total 28 drwxr-xr-x 3 user user 4096 May 20 01:41 ./ drwxr-xr-x 4 root root 4096 May 19 23:35 ../ -rw-r--r-- 1 user user 220 May 19 23:35 .bash_logout -rw-r--r-- 1 user user 3771 May 19 23:35 .bashrc drwx------ 2 user user 4096 May 19 23:35 .cache/ -rw-r--r-- 1 user user 655 May 19 23:35 .profile -rw------- 1 user user 568 May 20 01:41 .viminfo
공개 키 인증의 경우 모든 사용자의 공개 키를 모든 서버와 모든 신규 사용자에게 복사합니다. 이는 구현하기 어렵고 오류가 발생하기 쉽습니다. 아니면 모든 사용자의 SSH 공개 키와 모든 호스트의 공개 키에 서명하면 됩니다. 이것도 어려운 것 같습니다. . 사용자 CA와 호스트 CA를 생성하고 이를 모든 서버에 배포하고 꼭두각시를 사용하여 모든 호스트 공개 키에 서명했습니다. 사용자는 키 서명을 담당해야 하며 사용자 CA를 웹 애플리케이션에 넣고 컬을 사용할 수도 있습니다.