Ubuntu 12.04服务器,AMD64,通过LDAPauthentication。 即使“getent group”显示分配给我的帐户的正确的一组组,也无法在login时将LDAP组映射到我的用户帐户。 更令人困惑的是,有时候它有效,而其他时间则不行。
例如,这是我目前的login名:
$ ssh zoyd $ id uid=522(cswingley) gid=513(Domain Users) groups=513(Domain Users), \ 4(adm),24(cdrom), 27(sudo),30(dip),46(plugdev),111(lpadmin), \ 112(sambashare)
但:
$ getent group | grep cswingley | sort -t : -n -k3 | \ awk 'BEGIN {FS=":"} {printf("%s(%s)\n", $3, $1);}' | \ xargs | sed 's/) /),/g' 4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),111(lpadmin), \ 112(sambashare),500(level2),502(gis),503(level3), \ 504(management_accounting),544(Administrators),606(abruser),\ 619(proposal),621(project_managers),700(unixadmin),\ 701(ntadmin),1000(cswingley)
这发生在我login的大约一半的时间。其他时间,我所有的组(本地和LDAP)映射成功。 getent group 总是显示正确的列表。
我相信这也发生在我的Samba用户身上,这经常会阻止他们进入限制某些Unix / Samba组的共享或目录。 它还阻止我将计算机join到我的域中,因为LDAP没有将该计算机分配给具有该权力的组( ntadmin )。
我在slapd日志(当前设置为loglevel 256 )中看到的唯一可疑的是这个,但我不确定它是否相关:
conn=8570 op=1 SRCH base="dc=abrinc,dc=com" scope=2 deref=0 \ filter="(&(objectClass=posixAccount)(uid=cswingley))" conn=8570 op=1 SEARCH RESULT tag=101 err=0 nentries=1 text= conn=8570 op=2 DISCONNECT tag=101 err=2 text=controls require LDAPv3 conn=8570 op=2 do_search: get_ctrls failed conn=8570 fd=57 closed (operations error)
以下是目前安装在服务器上的名称为“ldap”的软件包列表:
$ sudo dpkg --list '*ldap*' | grep '^i' | \ sed 's/^[^ ]* *\([^ ]* *[^ ]*\).*/\1/' ldap-auth-client 0.5.3 ldap-auth-config 0.5.3 ldap-utils 2.4.28-1.1ubuntu4 libldap-2.4-2 2.4.28-1.1ubuntu4 libnet-ldap-perl 1:0.4300-2ubuntu1 libnss-ldap 264-2.2ubuntu2 libpam-ldap 184-8.5ubuntu2 smbldap-tools 0.9.7-1ubuntu1 sudo-ldap 1.8.3p1-1ubuntu3.3
更新:我也尝试安装libnss-ldapd和libpam-ldapd包(replace上面的非* d版本),但是这也不能解决问题。
编辑:他们是Ubuntu的bug跟踪器上的这个问题的打开的错误: https : //bugs.launchpad.net/ubuntu/+source/openldap/+bug/1023025