[Samba] LDAP + SSSD + Winbind group membership updating
a.moz at mailhaven.su
a.moz at mailhaven.su
Fri May 16 15:41:27 UTC 2025
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