From 2ec910dba4b7f5d6b96904bc38bf0899a4b46eab Mon Sep 17 00:00:00 2001 From: Volker Lendecke Date: Mon, 5 Jan 2015 16:34:29 +0100 Subject: passdb: Cache output from pdb_[ug]id_to_sid A customer complained that after upgrading to Samba 4.0 fileserver its LDAP server was flooded with uid2sid and gid2sid request for id 0. With 4.0 we do a lot more user-space ACL checking which involves uid2sid/gid2sid. This caches the corresponding results. Signed-off-by: Volker Lendecke Reviewed-by: Jeremy Allison Autobuild-User(master): Volker Lendecke Autobuild-Date(master): Wed Jan 7 12:00:10 CET 2015 on sn-devel-104 --- source3/passdb/lookup_sid.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/source3/passdb/lookup_sid.c b/source3/passdb/lookup_sid.c index 494a8407c0..c5b28d83fc 100644 --- a/source3/passdb/lookup_sid.c +++ b/source3/passdb/lookup_sid.c @@ -1049,6 +1049,13 @@ static void legacy_uid_to_sid(struct dom_sid *psid, uid_t uid) uid_to_unix_users_sid(uid, psid); + { + struct unixid xid = { + .id = uid, .type = ID_TYPE_UID + }; + idmap_cache_set_sid2unixid(psid, &xid); + } + done: DEBUG(10,("LEGACY: uid %u -> sid %s\n", (unsigned int)uid, sid_string_dbg(psid))); @@ -1083,6 +1090,13 @@ static void legacy_gid_to_sid(struct dom_sid *psid, gid_t gid) gid_to_unix_groups_sid(gid, psid); + { + struct unixid xid = { + .id = gid, .type = ID_TYPE_GID + }; + idmap_cache_set_sid2unixid(psid, &xid); + } + done: DEBUG(10,("LEGACY: gid %u -> sid %s\n", (unsigned int)gid, sid_string_dbg(psid))); -- cgit