On Tue, Sep 19, 2017 at 4:08 PM, James Ralston <rals...@pobox.com> wrote:
> I could just issue individual getpwnam()/getgrnam() calls for every
> user/group object, and let sssd synthesize the entries. But this
> would require careful tuning of sssd's cache configuration options
> to avoid significant delays, and even then, this would pound our AD
> domain controllers with thousands and thousands of lookup requests
> every time we regenerate the synthesized passwd/group files (which
> will probably be hourly).

It just occurred to me that I can cheat.

For any given user or group, I know that sssd calculates the id from
the SID by hashing the non-RID component of the SID to yield a base
offset, and then adding the value of the RID. The hashing of the SID
component to yield the base offset is the tricky part, because there
are many configuration options that can influence how that happens.

But I can derive the base offset that sssd is using by issuing a
getgrnam() call for "Domain Users", taking the gid, and subtracting
the Domain Users's RID (which I can derive from the SID, but is always
513). And once I have the base offset that sssd is using, I don't need
to issue any more getpwnam()/getgrnam() calls, because I can calculate
the uid/gid for any object by adding the object's RID (which I can
extract from the SID) to the base offset.

Can anyone see any problems or drawbacks to this approach?
_______________________________________________
sssd-users mailing list -- sssd-users@lists.fedorahosted.org
To unsubscribe send an email to sssd-users-le...@lists.fedorahosted.org

Reply via email to