[Samba] LDAP + SSSD + Winbind group membership updating
Christian Naumer
christian.naumer at greyfish.net
Sun May 18 08:31:42 UTC 2025
Hi there,
I seem to remember that Winbind only looks up the groups at login. If
this is true what you are trying to do will never work. See
"https://www.flofaber.com/log/group-membership-not-updating-in-winbind".
In AD with Kerberos the groups probably updated when the ticket is
renewed. That might explain why it works when you restart SMB.
Regards
Christian
Am 16.05.25 um 17:41 schrieb Alex Moz via samba:
> I broke my head trying to solve the LDAP group membership updating
> issue. I need help.
>
> ###### Description
> I've configured OpenLDAP + SSSD + Winbind + Samba 4.21.5 on Fedora 41.
>
> ## OpenLDAP:
> - There is a test user nomad with objectClass posixAccount,
> sambaSamAccount (uid, uidNumber, gibNumber, sambaSID, SambaNTPassword
> etc. configured via smbpasswd).
> - There are 2 test groups: admins, domadmins with objectClass
> posixGroup, sambaGroupMapping (containing necessary samba attr's and
> both memberUid and member with correct uid or dn).
> I use SSSD to enumerate users and groups against OpenLDAP. See configs
> below.
>
> There is test share "shared" and different ACLs for groups inside it:
> READ for 'admins', WRITE for 'domadmins'.
> Client (Windows) can connect the share via 'admins' group membership.
> Here work both memberUid (rfc2307) and member (rfc2307bis) membership -
> I tested them separately.
> ACLs are processed correctly right after connection. The test user can
> write if it's a member of group "domadmins" (during the connection). In
> another case, the test user can't write if it isn't a member of the group.
> I can enumerate users and groups via:
> - wbinfo -r (see fresh group membership for memberUid attr only)
> - net sam (see fresh group membership for memberUid attr only)
> - smbldap-userlist | smbldap-grouplist
> - id (doesn't see fresh group membership)
>
> ###### The issue
> While user is connected to share, its group membership is not refreshing
> at all. Neither in 1 minute nor in 1 day. E.g., If I add test user to
> the 'domadmin' group, it can't get the possibility to write. And on the
> contrary, if I remove one from the group, it's still able to remove or
> modify objects. It doesn't depend on the membership attribute.
>
> ###### What is my goal
> Make samba update remote group membership in a subminute interval, ideally.
>
> ###### What I've already tried
> Doesn't work:
> - reducing timeouts and cache times everywhere I knew
> - net cache flush
> - sss_cache -E
> - playing with idmap config backends, I tried ldap, rfc2307, and even ad
> (it also works against openldap with particular objectclasses). They all
> worked identically, referencing the issue, of course.
> - configure samba on ubuntu 25.04 instead of fedora
> - restart sssd winbind simultaneously
> - high verbosity log: I do not see samba/winbind add/remove
> supplementary groups for user token.
> - reload smb
> Do work:
> - restart smb
>
> In case of restarting smb daemon, fresh group membership is applying.
> But at the same time, transfering files, sessions are interrupting.
>
> ###### My questions
> 1. Is it generally possible to make samba/winbind update remote group
> memberships for connected sessions and respect ACLs?
> 2. Does it depend on backend type?
> 3. Does it depend on OS, building package flags (I saw info that someone
> makes it possible on OmniOS)?
> 4. Do 'idmap cache time', 'winbind cache time' or other directives
> affect membership updating?
> 5. Could somebody describe/provide a link to the steps of updating/
> enumerating group membership mechanism by samba/winbind?
>
> I really need make it possible, so I appreciate any help.
>
>
>
>
> ###################################################
> ###### Configs
>
> ## SSSD.conf:
> [sssd]
> domains = loc
> services = nss, pam, autofs
>
> [domain/loc]
> debug_level = 9
> id_provider = ldap
> auth_provider = ldap
> autofs_provider = ldap
> chpass_provider = ldap
> ldap_schema = rfc2307bis
> ldap_uri = ldaps://10.10.7.104:636
> ldap_search_base = dc=loc
> ldap_default_bind_dn = cn=admin,dc=loc
> ldap_default_authtok = *password*
> cache_credentials = False
> ldap_id_use_start_tls = True
> ldap_tls_cacertdir = /etc/openldap/certs
> ldap_tls_reqcert = allow
>
> ldap_user_object_class = posixAccount
> ldap_user_name = uid
> #ldap_user_fullname = cn
>
> #ldap_group_object_class = groupOfNames
> #ldap_group_name = cn
> #ldap_group_nesting_level = 4
>
> ldap_enumeration_refresh_timeout = 10
> entry_cache_timeout = 10
> entry_cache_user_timeout = 10
> entry_cache_group_timeout = 10
> enumerate = True
> memcache_timeout = 10
>
> ### SMB.conf:
> [global]
> workgroup = LOC
> netbiosname = LOC
> security = user
>
> passdb backend = ldapsam:ldap://localhost
> ldapsam:editposix = yes
> ldapsam:trusted = yes
> ldap admin dn = cn=admin,dc=loc
> ldap suffix = dc=loc
> # ldap group suffix = ou=groups
> # ldap machine suffix = ou=computers
> # ldap user suffix = ou=users
> ldap ssl = off
> idmap_ldb:use rfc2307 = yes // Tried w/o this
>
> idmap config LOC: backend = ad // I tried to use ldap, rfc2307
> backends also - doesn't make sense regarding the issue
> idmap config LOC: range = 10000-19999
> # idmap config LOC: backend = ldap
> # idmap config LOC: ldap_server = stand-alone
> # idmap config LOC: ldap_url = ldap://localhost/
> # idmap config LOC: ldap_base_dn = ou=idmap,dc=loc
> # idmap config LOC: ldap_user_dn = cn=admin,dc=loc
> idmap config *: backend = tdb
> idmap config *: range = 3000-7999
> ldap delete dn = yes
> ldap password sync = yes
>
> winbind enum users = yes
> winbind enum groups = yes
> winbind offline logon = no
> winbind cache time = 10
> winbind nss info = rfc2307
> winbind nested groups = yes
> winbind use default domain = yes
> winbind expand groups = 10
> winbind cache time = 5
> idmap cache time = 30
>
> store dos attributes = yes
> map read only = no
> map archive = no
> dos filetime resolution = yes
> fake directory create times = yes
> csc policy = disable
>
> log level = 9
>
> [shared]
> path = /path/to/shared
> public = no
> valid users = @Admins
> writable = yes
> vfs objects = acl_xattr
> nt acl support = yes
> map acl inherit = yes
> store dos attributes = yes
> inherit acls = yes
>
More information about the samba
mailing list