대체 openLDAP UID를 사용하여 Active Directory에 인증

대체 openLDAP UID를 사용하여 Active Directory에 인증

저는 Winbind를 사용하여 Active Directory에 사용자를 인증하고 있습니다. 사용자 이름이 일치하면 모든 것이 잘 작동합니다. 문제는 많은 사용자가 Windows와 Linux에서 서로 다른 사용자 이름을 가지고 있다는 것입니다(할아버지 계정과 엔지니어는 변경에 대해 완고합니다). 대부분의 경우 동일한 DN에 대해 openLDAP 2 고유 UID를 제공하여 이 문제를 해결할 수 있습니다.

예를 들어:

[bob.smith@myhost ~]$ ldapsearch -xLLL uid=bob
dn: uid=bob.smith,dc=example,dc=com
uid: bob.smith
uid: bob
objectClass: inetOrgPerson
objectClass: posixAccount
objectClass: shadowAccount
loginShell: /bin/bash
uidNumber: 4563
cn: Bob Smith
homeDirectory: /home/bob
shadowMin: 0
shadowMax: 999999
shadowWarning: 7
shadowInactive: 0
shadowExpire: 24837
sn: Smith
mail: [email protected]
gidNumber: 555
shadowLastChange: 17044

이제 openLDAP 비밀번호로 로그인하고 실행하십시오.whoami

[bob.smith@myhost bob]$ su - bob
Password: 
Last login: Wed Sep 21 10:09:22 PDT 2016 on pts/3
[bob.smith@myhost ~]$ whoami
bob.smith

사용자 확인id

[bob.smith@myhost ~]$ id bob
uid=4563(bob.smith) gid=555(AGROUP) groups=555(AGROUP),988(x2gouser),19775215(domain users)

모든 것이 좋아 보이는데요, 그렇죠? bob.smith의 Windows 이름 대신 bob으로 로그인하고 AD 비밀번호를 사용하려고 시도할 때까지(bob.smith는 정상적으로 로그인됩니다):

[bob.smith@myhost ~]$ su - bob
Password: 
su: Authentication failure

내가 아는 한, PAM은 올바르게 구성되었으며 앞서 보여드린 것처럼 bob으로 로그인하더라도 시스템은 사용자를 bob.smith로 인식합니다. 그러나 인증에서는 bob을 유효한 사용자로 간주하지 않습니다.

[bob.smith@myhost ~]$ cat password-auth 
#%PAM-1.0
# This file is auto-generated.
# User changes will be destroyed the next time authconfig is run.
auth        required      pam_env.so
auth        sufficient    pam_unix.so nullok try_first_pass
auth        requisite     pam_succeed_if.so uid >= 1000 quiet_success
auth        sufficient    pam_krb5.so use_first_pass
auth        sufficient    pam_ldap.so use_first_pass
auth        sufficient    pam_winbind.so krb5_auth krb5_ccache_type=KEYRING use_first_pass
auth        required      pam_deny.so

account     required      pam_unix.so broken_shadow
account     sufficient    pam_localuser.so
account     sufficient    pam_succeed_if.so uid < 1000 quiet
account     [default=bad success=ok user_unknown=ignore] pam_ldap.so
account     [default=bad success=ok user_unknown=ignore] pam_krb5.so
account     [default=bad success=ok user_unknown=ignore] pam_winbind.so krb5_auth krb5_ccache_type=KEYRING
account     required      pam_permit.so

password    requisite     pam_pwquality.so try_first_pass local_users_only retry=3 authtok_type=
password    sufficient    pam_unix.so sha512 shadow nullok try_first_pass use_authtok
password    sufficient    pam_krb5.so use_authtok
password    sufficient    pam_ldap.so use_authtok
password    sufficient    pam_winbind.so krb5_auth krb5_ccache_type=KEYRING use_authtok
password    required      pam_deny.so

session     optional      pam_keyinit.so revoke
session     required      pam_limits.so
-session     optional      pam_systemd.so
session     [success=1 default=ignore] pam_succeed_if.so service in crond quiet use_uid
session     required      pam_unix.so
session     optional      pam_krb5.so
session     optional      pam_ldap.so
session     optional      pam_winbind.so krb5_auth krb5_ccache_type=KEYRING

내 smb.conf 파일은 다음과 같습니다(중요한 경우).

[bob.smith@myhost ~]$ testparm
Load smb config files from /etc/samba/smb.conf
rlimit_max: increasing rlimit_max (1024) to minimum Windows limit (16384)
Processing section "[homes]"
Processing section "[printers]"
Loaded services file OK.
Server role: ROLE_DOMAIN_MEMBER

Press enter to see a dump of your service definitions

# Global parameters
[global]
        workgroup = EXAMPLE-USA
        realm = EXAMPLE.COM
        server string = Samba Server Version %v
        security = ADS
        kerberos method = secrets and keytab
        log file = /var/log/samba/log.%m
        max log size = 50
        winbind use default domain = Yes
        idmap config * : range = 16777216-33554431
        idmap config * : backend = tdb
        cups options = raw


[homes]
        comment = Home Directories
        read only = No
        browseable = No


[printers]
        comment = All Printers
        path = /var/spool/samba
        printable = Yes
        print ok = Yes
        browseable = No

나는 Windows 도메인 관리자가 아니기 때문에 Linux 측에 수정 사항이 있으면 좋을 것입니다. 그러나 Windows 측 솔루션을 갖고 있는 사람이 있다면 기꺼이 그 옵션을 살펴보겠습니다. 작동하는 솔루션이 없으면 openLDAP 비밀번호를 AD 비밀번호와 동기화하는 것을 고려할 것입니다. 기본적으로 최종 결과와 동일합니다.

관련 정보