私は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パスワードと同期させることを検討します。基本的には最終結果と同じです。