On Tue, Jan 10, 2017 at 10:12:37PM +0100, Fabiano Fidêncio wrote:
> On Mon, Jan 9, 2017 at 11:51 AM, Jakub Hrozek <jhro...@redhat.com> wrote:
> > On Sun, Jan 08, 2017 at 09:58:22PM +0100, Fabiano Fidêncio wrote:
> >> I've been working on rhbz#1401241
> >> (https://bugzilla.redhat.com/show_bug.cgi?id=1401241) and I'd like to
> >> clarify some doubts that showed up.
> >>
> >> So, let's consider that there's a group called "foo" and user "user"
> >> is part of this group. Group "foo" gets renamed to "bar'. Now. let me
> >> describe what I've found out considering "id_provider = ldap" and
> >> "id_provider = ad"
> >>
> >> - id_provider = ldap:
> >>   cache has "foo" entry
> >>   After renaming "foo" to "bar"
> >>     cache has entry "bar" added
> >>     both entries have the same gid
> >>
> >> - id_provider = ad
> >>   cache has "foo" entry
> >>   After renaming "foo" to "bar"
> >>     nothing is changed in the cache
> >>
> >> Any of these situation look exactly right for me (and here I'm
> >> probably wrong). My expectations are that we should, for both cases:
> >> - check for the gid in the cache
> >> - update the entry
> >
> > Unfortunately renaming users and groups is not so easy because of the
> > member and memberof links. The memberof link points from the user to the
> > group and contains the name of the entry they point to, therefore need to
> > be changed one way or another during the group rename.
> >
> > If the group was renamed using ldb_rename(), then the link change should
> > be done by the memberof ldb plugin, but it's not implemented there.
> >
> > Since the memberof plugin only implements add, del and modify
> > operations, we solve this by removing the group and re-adding it with
> > different name in sysdb_store_new_group().
> >
> >>
> >> So in the ldap case we would avoid having two entries with the same
> >> gid and in the ad case we would be able to properly the updated name
> >> of the group that the user is part of. Does it make sense?
> >
> > I wonder why we have two entries with a duplicate gid in the first
> > place. When saving the duplicate "bar", don't we hit
> > sysdb_store_new_group() -> sysdb_delete_group() ?
> 
> According to my tests this part is never triggered. May be because
> it's using rfc2307bis?
> 
> What I can see here is that I ended up in:
> - sdap_add_incomplete_groups(), which tries to search the group by its
> name and, obviously doesn't find it, so the missing group ends up
> being saved (again).
> 
> I've tried to search by the group id instead of searching by the group
> name, which works fine for this part, but then breaks when saving the
> user memberships (in case searching a user that is not cached), as the
> group with the new name is not found.
> 
> So, yeah, I guess what we are missing here is just deleting the old
> group and add the new one in this case, but I still have to figure out
> how to do that (and if I get stuck on it, don't worry, I'll bother
> some of the developers on IRC).
> 
> One thing that I'd like to be sure is that it does make sense to be
> done when using rfc3207bis.

(I haven't tested this at all, just replying based on my code knowledge)

I wouldn't expect the schema to matter, this is handled at the sysdb
level. So I think it's a bug -- if you have an environment that
reproduces it and would like me to take a look, feel free to ping me on
IRC (tomorrow, please :-P)
_______________________________________________
sssd-devel mailing list -- sssd-devel@lists.fedorahosted.org
To unsubscribe send an email to sssd-devel-le...@lists.fedorahosted.org

Reply via email to