Hi,

I've been debugging this for a day now and I am on the edge of my
understanding and could use some help.

I have a smbd 3.5.6 running as a PDC (smb.conf below) with an openldap
backend. If I run `getent passwd` I get all the users (local and
Domain) and computer accounts that I've imported into the ldap tree.
If I run `getent group`, I only see local groups:

root:x:0:
daemon:x:1:
bin:x:2:
sys:x:3:
adm:x:4:
tty:x:5:
disk:x:6:
lp:x:7:
....
powerdev:x:115:
ntpd:x:116:
winbindd_priv:x:117: (don't know where winbind comes from. It's not in
/etc/passwd)

I can see the imported groups in the ldap tree via phpLDAPadmin.


I have cranked up the logging in slapd.conf and watched as I did both queries:
>getent passwd
Jun 22 13:17:27 rigel slapd[26541]: conn=59 fd=14 ACCEPT from
IP=127.0.0.1:39071 (IP=0.0.0.0:389)
Jun 22 13:17:27 rigel slapd[26541]: conn=59 op=0 BIND
dn="cn=admin,dc=example,dc=co,dc=uk" method=128
Jun 22 13:17:27 rigel slapd[26541]: conn=59 op=0 BIND
dn="cn=admin,dc=example,dc=co,dc=uk" mech=SIMPLE ssf=0
Jun 22 13:17:27 rigel slapd[26541]: conn=59 op=0 RESULT tag=97 err=0 text=
Jun 22 13:17:27 rigel slapd[26541]: conn=59 op=1 SRCH
base="dc=example,dc=co,dc=uk" scope=2 deref=0
filter="(objectClass=posixAccount)"
Jun 22 13:17:27 rigel slapd[26541]: conn=59 op=1 SRCH attr=uid
userPassword uidNumber gidNumber cn homeDirectory loginShell gecos
description objectClass
Jun 22 13:17:27 rigel slapd[26541]: conn=59 op=1 SEARCH RESULT tag=101
err=0 nentries=115 text=
Jun 22 13:17:27 rigel slapd[26541]: conn=59 fd=14 closed (connection lost)

nentries=115

>getent group
Jun 22 13:17:27 rigel slapd[26541]: conn=60 fd=14 ACCEPT from
IP=127.0.0.1:39072 (IP=0.0.0.0:389)
Jun 22 13:17:27 rigel slapd[26541]: conn=60 op=0 BIND
dn="cn=admin,dc=example,dc=co,dc=uk" method=128
Jun 22 13:17:27 rigel slapd[26541]: conn=60 op=0 BIND
dn="cn=admin,dc=example,dc=co,dc=uk" mech=SIMPLE ssf=0
Jun 22 13:17:27 rigel slapd[26541]: conn=60 op=0 RESULT tag=97 err=0 text=
Jun 22 13:17:27 rigel slapd[26541]: conn=60 op=1 SRCH
base="ou=group,dc=example,dc=co,dc=uk" scope=1 deref=0
filter="(&(objectClass=posixGroup))"
Jun 22 13:17:27 rigel slapd[26541]: conn=60 op=1 SRCH attr=cn
userPassword memberUid uniqueMember gidNumber
Jun 22 13:17:27 rigel slapd[26541]: conn=60 op=1 SEARCH RESULT tag=101
err=32 nentries=0 text=
Jun 22 13:17:27 rigel slapd[26541]: conn=60 fd=14 closed (connection lost)

nentries=0 and err=32

I tried to replicate the query using ldapsearch. I am not very
familiar with ldapsearch. This was the best I could muster:
>ldapsearch -x -b 'dc=example,dc=co,dc=uk'  '(ObjectClass=posixGroup)'

This returned the groups from the ldap tree correctly:
...
...
# Backup Operators, Groups, example.co.uk
dn: cn=Backup Operators,ou=Groups,dc=example,dc=co,dc=uk
objectClass: top
objectClass: posixGroup
objectClass: sambaGroupMapping
gidNumber: 551
cn: Backup Operators
description: Netbios Domain Members can bypass file security to back up files
sambaSID: S-1-5-32-551
sambaGroupType: 5
displayName: Backup Operators

# Replicators, Groups, example.co.uk
dn: cn=Replicators,ou=Groups,dc=example,dc=co,dc=uk
objectClass: top
objectClass: posixGroup
objectClass: sambaGroupMapping
gidNumber: 552
cn: Replicators
description: Netbios Domain Supports file replication in a sambaDomainName
sambaSID: S-1-5-32-552
sambaGroupType: 5
displayName: Replicators

# search result
search: 2
result: 0 Success

# numResponses: 10
# numEntries: 9



The difference as far as I can tell is between the two searches

SRCH base="ou=group,dc=example,dc=co,dc=uk" scope=1 deref=0
filter="(&(objectClass=posixGroup))   # Failed lookup

and

SRCH base="dc=example,dc=co,dc=uk" scope=2 deref=0
filter="(objectClass=posixGroup)" # Working lookup


The first one confines itself to the base 'group' ou, where as the
working search starts at the root and does not restrict themselves. If
I do (notice ou=groups)
>ldapsearch -x -b 'ou=groups,dc=example,dc=co,dc=uk'  '(ObjectClass=posixGroup)'

I see this:
Jun 22 13:32:47 rigel slapd[26541]: conn=102 fd=14 ACCEPT from
IP=127.0.0.1:51550 (IP=0.0.0.0:389)
Jun 22 13:32:47 rigel slapd[26541]: conn=102 op=0 BIND dn="" method=128
Jun 22 13:32:47 rigel slapd[26541]: conn=102 op=0 RESULT tag=97 err=0 text=
Jun 22 13:32:47 rigel slapd[26541]: conn=102 op=1 SRCH
base="ou=groups,dc=example,dc=co,dc=uk" scope=2 deref=0
filter="(objectClass=posixGroup)"
Jun 22 13:32:47 rigel slapd[26541]: conn=102 op=1 SEARCH RESULT
tag=101 err=0 nentries=9 text=
Jun 22 13:32:47 rigel slapd[26541]: conn=102 op=2 UNBIND
Jun 22 13:32:47 rigel slapd[26541]: conn=102 fd=14 closed

and get this by way of response:
# search result
search: 2
result: 0 Success

# numResponses: 10
# numEntries: 9 # CORRECT!

If I do the search as it looks like it's being sent to ldap, EG:
ou=group NOT ou=groups
>ldapsearch -x -b 'ou=group,dc=example,dc=co,dc=uk'  '(ObjectClass=posixGroup)'

I see:
Jun 22 13:36:07 rigel slapd[26541]: conn=110 fd=22 ACCEPT from
IP=127.0.0.1:42136 (IP=0.0.0.0:389)
Jun 22 13:36:07 rigel slapd[26541]: conn=110 op=0 BIND dn="" method=128
Jun 22 13:36:07 rigel slapd[26541]: conn=110 op=0 RESULT tag=97 err=0 text=
Jun 22 13:36:07 rigel slapd[26541]: conn=110 op=1 SRCH
base="ou=group,dc=sciencephoto,dc=co,dc=uk" scope=2 deref=0
filter="(objectClass=posixGroup)"
Jun 22 13:36:07 rigel slapd[26541]: conn=110 op=1 SEARCH RESULT
tag=101 err=32 nentries=0 text=
Jun 22 13:36:07 rigel slapd[26541]: conn=110 op=2 UNBIND
Jun 22 13:36:07 rigel slapd[26541]: conn=110 fd=22 closed

and get this response:

# search result
search: 2
result: 32 No such object
matchedDN: dc=example,dc=co,dc=uk


I have grepped everywhere but I can not see how to tweak the config so
that the search will be performed on ou=groups. I think I am very
close to working out what's wrong but I could use some advice.

Thanks in advance,
Dermot.

================ ldap.conf =========
base dc=example,dc=co,dc=uk
host localhost rigel.example.co.uk
binddn cn=admin,dc=example,dc=co,dc=uk
bindpw mysecret

bind_policy soft
pam_password exop
timelimit 15

nss_base_passwd dc=example,dc=co,dc=uk?one
nss_base_shadow dc=example,dc=co,dc=uk?one
nss_base_passwd ou=Computers,dc=example,dc=co,dc=uk?one
nss_base_shadow ou=Computers,dc=example,dc=co,dc=uk?one
nss_base_group ou=Groups,dc=example,dc=co,dc=uk?one
ssl off
======================================


================= smb.conf =============
[global]
        dos charset = UTF-8
        display charset = UTF-8
        workgroup = LDN
        server string = %h server
        map to guest = Bad User
        passdb backend = ldapsam:ldap://127.0.0.1/
        pam password change = Yes
        passwd program = /usr/sbin/smbldap-passwd -u %u
        passwd chat = *New*password* %n\n *Retype*new*password* %n\n
*all*authentication*tokens*updated*
        unix password sync = Yes
        log level = 1
        syslog = 0
        log file = /var/log/samba/log.%m
        max log size = 1000
        smb ports = 139 445
        name resolve order = wins hosts bcast
        time server = Yes
        socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192
        load printers = No
        add user script = /usr/sbin/smbldap-useradd -m %u
        delete user script = /usr/sbin/smbldap-userdel '%u'
        delete group script = /usr/sbin/smbldap-groupdel %g
        add user to group script = /usr/sbin/smbldap-groupmod -m %u %g
        delete user from group script = /usr/sbin/smbldap-groupmod -x %u %g
        set primary group script = /usr/sbin/smbldap-usermod -g %g %u
        add machine script = /usr/sbin/smbldap-useradd -w %u
        logon script = logon.bat
        logon path =
        logon drive = U:
        logon home =
        domain logons = Yes
        os level = 65
        preferred master = Auto
        domain master = Yes
        dns proxy = No
        ldap admin dn = cn=admin,dc=example,dc=co,dc=uk
        ldap delete dn = Yes
        ldap group suffix = ou=Groups
        ldap idmap suffix = ou=idmap
        ldap machine suffix = ou=Computers, ou=Users
        ldap passwd sync = yes
        ldap suffix = dc=example,dc=co,dc=uk
        ldap ssl = no
        ldap timeout = 20
        ldap user suffix = ou=Users
        panic action = /usr/share/samba/panic-action %d
        idmap backend = ldap:"ldap://127.0.0.1/";
        idmap uid = 15000-20000
        idmap gid = 15000-20000
        map acl inherit = Yes
        case sensitive = No
        hide unreadable = Yes

[print$]
        comment = Printer Drivers
        path = /var/lib/samba/printers

[netlogon]
        path = /var/lib/samba/netlogon
        browseable = No

[profiles]
        path = /var/lib/samba/profiles
        force user = %U
        read only = No
        create mask = 0600
        directory mask = 0700
        guest ok = Yes
        profile acls = Yes
        browseable = No
        csc policy = disable

[public]
        path = /tmp
        read only = No
        guest ok = Yes
-- 
To unsubscribe from this list go to the following URL and read the
instructions:  https://lists.samba.org/mailman/options/samba

Reply via email to