通过LDAP映射用户和组的所有权

我正在使用smbldap-tools在CentOS 6.2主机上安装smb 3.5。 我之前在RHEL4上使用smb 3.0安装了类似的configuration,但CentOS现在使用nss-pam-ldapd和nslcd而不是nss_ldap,因此configuration无法直接移动。

当我做一个共享目录列表,应该有由LDAP确定的用户和组所有权时,我得到的uidNumbers和gidNumbers,而不是UID和GID。

[root@edgar2 openldap]# ls -l /data/home | tail drwx------. 2 30634 30080 4096 Mar 18 2009 userdir1 drwx------. 33 30548 30075 4096 Jan 29 15:20 userdir2 drwx------. 3 30554 30075 4096 Jan 26 2009 userdir3 drwx------. 12 30467 30075 4096 Jun 21 2012 userdir4 drwx------. 4 30543 30075 4096 Oct 21 2008 userdir5 drwx------. 8 30555 30075 4096 Oct 31 10:36 userdir5 

其他细节:centos 6.2,samba 3.5,smbldap-tools 0.9.6,openldap 2.4.23

我使用/etc/nsswitch.conf,/etc/pam_ldap.conf,/etc/nslcd.conf,/etc/pam.d/system-auth和/ etc / sysconfig / authconfig。 而selinux已经closures了。

我知道机器已成功连接到LDAP。 一个ldapsearch可以在这台机器上运行,我甚至可以通过smbclient连接到一个ldaplogin的samba共享。

/ etc / nsswitch的相关部分:

 passwd: files ldap shadow: files ldap group: files ldap #hosts: db files nisplus nis dns hosts: files dns bootparams: nisplus [NOTFOUND=return] files ethers: files netmasks: files networks: files protocols: files ldap rpc: files services: files ldap netgroup: nisplus ldap #netgroup: ldap publickey: nisplus automount: files nisplus ldap #automount: files ldap aliases: files nisplus 

/etc/pam_ldap.conf的相关部分(其他所有内容都被注释掉了):

 host dir1.ourdomain.com base dc=.ourdomain,dc=com #uri ldaps://dir1.ourdomain.com uri ldap://dir1.ourdomain.com # basic auth config binddn cn=admin,dc=ourdomain,dc=com rootbinddn cn=admin,dc=ourdomain,dc=com # random stuff #timelimit 120 #bind_timelimit 120 #bind_policy hard # brought these times down wmodes Aug 11, 2008 timelimit 30 bind_timelimit 30 bind_policy soft idle_timelimit 3600 nss_initgroups_ignoreusers root,ldap # pam config #pam_password md5 pam_password md5 # config for nss nss_base_passwd ou=people,dc=ourdomain,dc=com?one nss_base_shadow ou=people,dc=ourdomain,dc=com?one nss_base_group ou=group,dc=ourdomain,dc=com?one # OpenLDAP SSL mechanism # start_tls mechanism uses the normal LDAP port, LDAPS typically 636 ssl no # OpenLDAP SSL options # Require and verify server certificate (yes/no) #tls_checkpeer yes # CA certificates for server certificate verification tls_cacertfile /etc/openldap/cacerts/cacert.pem tls_cacertdir /etc/openldap/cacerts # Client certificate and key tls_cert /etc/openldap/cacerts/servercert.pem tls_key /etc/openldap/cacerts/serverkey.pem 

/etc/pam.d/system-auth的相关部分:

 auth required pam_env.so auth sufficient pam_fprintd.so auth sufficient pam_unix.so nullok try_first_pass auth requisite pam_succeed_if.so uid >= 500 quiet auth sufficient pam_ldap.so use_first_pass auth required pam_deny.so account required pam_unix.so account sufficient pam_localuser.so account sufficient pam_succeed_if.so uid < 500 quiet account [default=bad success=ok user_unknown=ignore] pam_ldap.so account required pam_permit.so password requisite pam_cracklib.so try_first_pass retry=3 type= password sufficient pam_unix.so sha512 shadow nullok try_first_pass use_authtok password sufficient pam_ldap.so use_authtok password required pam_deny.so session optional pam_keyinit.so revoke session required pam_limits.so session [success=1 default=ignore] pam_succeed_if.so service in crond quiet use_uid session required pam_unix.so session optional pam_ldap.so session optional pam_mkhomedir.so skel=/etc/skel umask=077 

而我改变的/ etc / sysconfig / authconfig中的唯一一行是:

 USELDAP=yes 

有什么想法吗? 对于那些对nis和pam有经验的人来说,我相信这是一件不容易的事情,但是我可以肯定地使用那些知道如何解决这个问题的大脑。

我正在反思这一点。 不需要使用pam_ldap sssd。 根据sssd和CentOS列表,通常使用一个或另一个。

最后,我从我的虚拟机模板重新创build了一个系统,并使用authconfig编辑了相应的系统文件。

 authconfig --enableldap --enableldapauth --enablemkhomedir --ldapserver=ldap.mydomain.edu --ldapbasedn="dc=mydomain,dc=com" --update 

authconfig唯一的缺点是它不能干净地禁用你使用它来启用的选项。 因此,您可以轻松托pipe您的系统,因此实验起来并不安全。