[Samba] Winbind deadlock with AD and nss

Ed Plese eplese at gmail.com
Sun Aug 26 17:00:31 GMT 2007


Hi,

I'm testing out Samba 3.0.25c with Active Directory using the rid
idmap backend.  In certain cases there seems to be a repeatable
deadlock in winbind.

I have a local user "ed" created with uid 100 and no user exists with
uid 1001.  Here's the behavior I'm seeing with wbinfo:

# time wbinfo -U 100
S-1-22-1-100

real    0m0.047s
user    0m0.014s
sys     0m0.007s

# time wbinfo -U 1001
S-1-22-1-1001

real    5m35.097s
user    0m0.015s
sys     0m0.011s

The first command behaves as expected but the expected result of the
second command is "Could not convert uid 1001 to sid" with an
execution time of much less than 1 second as is seen with Samba 3.0.24
and lower.

This is running on Solaris 10 (x86) and compiled with Sun Studio 11
using the OpenLDAP and MIT Kerberos 5 libraries from Blastwave.  The
exact same configuration works fine with 3.0.24 with the only
difference being the idmap configuration changes between 3.0.24 and
3.0.25.

In /etc/nsswitch.conf I have:
passwd:     files winbind
group:      files winbind

During the query to winbindd, uid 1001 is not within the range used
for the MYAD rid backend which causes the lookup to then be attempted
by passdb.  passdb in turn calls getpwuid which ends up querying
winbind through nss_winbind which is what leads to the deadlock.

When I remove winbind from nsswitch.conf the 5 minute delay is gone
but wbinfo returns "S-1-22-1-1001" which is different from what
previous Samba versions returned.

Here's the contents smb.conf:
[global]
  workgroup = MYAD
  realm = MYAD.ORG
  security = ads
  encrypt passwords = yes
  smb passwd file = /etc/samba/private/smbpasswd
  winbind separator = +
  winbind use default domain = yes
  winbind nested groups = no
  obey pam restrictions = yes
  winbind enum users = yes
  winbind enum groups = yes
  allow trusted domains = no
  idmap uid = 10000-100000000
  idmap gid = 10000-100000000
  idmap domains = MYAD
  idmap config MYAD: default = yes
  idmap config MYAD: backend = rid
  idmap config MYAD: range = 10000-100000000
  idmap config MYAD: readonly = yes
  name resolve order = host
  dns proxy = no

In Samba versions prior to 3.0.25 the idmap options in smb.conf were:
   idmap uid = 10000-100000000
   idmap gid = 10000-100000000
   idmap backend = idmap_rid:MYAD=10000-100000000

Is there something wrong with my new idmap configuration or is this a
bug?  3.0.25 implicitly adds the passdb backend which I don't think
older versions did.  Disabling this might fix the problem but is there
any way to do that?  Any other ideas on things to try?

Thanks,

Ed Plese


More information about the samba mailing list