[Freeipa-users] Question about ipa user accounts and the compat container

Alexander Bokovoy abokovoy at redhat.com
Sun Mar 12 18:58:46 UTC 2017


On su, 12 maalis 2017, Robert Johnson wrote:
>On Fri, Mar 10, 2017 at 1:16 AM, Alexander Bokovoy <abokovoy at redhat.com>
>wrote:
>
>> On to, 09 maalis 2017, Robert Johnson wrote:
>>
>>> On Thu, Mar 9, 2017 at 4:06 PM, Alexander Bokovoy <abokovoy at redhat.com>
>>> wrote:
>>>
>>> On to, 09 maalis 2017, Robert Johnson wrote:
>>>>
>>>> Hello,
>>>>>
>>>>> I am running into an odd issue haven't been able to find any information
>>>>> through searching on this issue online.
>>>>>
>>>>> Environment: We are currently have a IPA master running
>>>>> ipa-server-4.4.0-14.el7_3.4.x86_64 on a RHEL 7.3 server.  We have a mix
>>>>> of
>>>>> RHEL 6.8, RHEL 7.x and Solaris 10 clients. We also have a one way trust
>>>>> to
>>>>> a windows domain.  Compatibility mode is enabled.
>>>>>
>>>>> The issue I'm seeing is that when I delete an IPA domain user through
>>>>> the
>>>>> web gui, the user account doesn't appear to be removed completely from
>>>>> the
>>>>> system.  I verified via "ipa user-find" that the user is no longer in
>>>>> the
>>>>> system.  I also checked via "ldapsearch" that the user account doesn't
>>>>> exist in the "accounts" container.  However, when I look in the "users,
>>>>> compat" container, that user still exists.
>>>>>
>>>>> This is causing problems with my Solaris clients since they are pointing
>>>>> to
>>>>> the compat tree so that we can login with the windows accounts on those
>>>>> servers.  The Solaris client is still seeing the account as being valid
>>>>> and
>>>>> is asking the user for a password on login which fails because the
>>>>> account
>>>>> doesn't exist in the IPA domain anymore.
>>>>>
>>>>> Do I need to remove the account from the ldap compat container manually
>>>>> or
>>>>> is the IPA user delete command (through the gui and/or command line)
>>>>> suppose to take care of this ?  Or is there is some sort of clean up
>>>>> process that I have to wait for to occur before this account gets
>>>>> removed
>>>>> from that container ?  If so, what is the time frame ?
>>>>>
>>>>> Compat tree is automatically generated. It also tracks existing objects,
>>>> so any time the object is removed from the primary tree, it should be
>>>> cleared from the compat tree as well.
>>>>
>>>> If you can reliably demonstrate the problem using
>>>> http://www.freeipa.org/page/Demo (it has compat tree enabled), then feel
>>>> free to open a bug.
>>>>
>>>> --
>>>> / Alexander Bokovoy
>>>>
>>>>
>>> So after doing some more digging using ldapsearch, I discovered some "odd"
>>> entries.  It appears that all my IPA users appear to have duplicate
>>> entries
>>> under the compat tree. So on a hunch I deleted another IPA user and one of
>>> the two entries disappeared from the container.  I tried to use ldapdelete
>>> (and ldapmodify) to remove the "ghost" entry using the DN I found from the
>>> search and I get a "object not found" and then it says that it matched the
>>> base tree.  If I dump the whole compat tree out to a file, the ghost
>>> objects look to be exact duplicates of the original entries (minus the
>>> guid
>>> which is different).  I can't seem to find a way to remove them.
>>>
>>> Any ideas ?
>>>
>> Demonstrate your problem using the FreeIPA demo instance, please.
>>
>> Compat tree is not writable, thus you cannot delete anything from it
>> directly. You only can delete the original entry to cause removal of a
>> compat entry.
>>
>> Show how it is not removed with step by step ldapsearch/ipa CLI
>> operations against our demo instance, please.
>>
>> --
>> / Alexander Bokovoy
>>
>
>Ok, I believe I have been able to reproduce the problem.
>1) Before I created the new user, I verified by using the ldapsearch
>command on the compat tree that the user I was going to create didn't exist:
>ldapsearch -b "cn=compat,dc=demo1,dc=freeipa,dc=org" -h
>ipa.demo1.freeipa.org -s sub "(&(objectclass=*)(uid=123456))"
>Returns nothing
>ldapsearch -b "cn=accounts,dc=demo1,dc=freeipa,dc=org" -h
>ipa.demo1.freeipa.org -s sub "(&(objectclass=*)(uid=123456))"
>Returns nothing
>Note: I also tried just dumping all the user objects to a file and made
>sure it wasn't there.
>
>2) Next, I login to the webui and then create the new user.
>userlogin: 123456
>First Name: Test
>Last Name: User
>and then a password.
>
>3) Next I verified that the account was showing up in the compat tree:
>ldapsearch -b "cn=compat,dc=demo1,dc=freeipa,dc=org" -h
>ipa.demo1.freeipa.org -s sub "(&(objectclass=*)(uid=123456))"
>version: 1
>dn: uid=123456,cn=users,cn=compat,dc=demo1,dc=freeipa,dc=org
>objectClass: posixAccount
>objectClass: ipaOverrideTarget
>objectClass: top
>gecos: Test User
>cn: Test User
>uidNumber: 1120000053
>gidNumber: 1120000053
>loginShell: /bin/sh
>homeDirectory: /home/123456
>ipaAnchorUUID::
>OlNJRDpTLTEtNS0yMS0zNjIwNjU0ODcyLTY4NzE1NzE0Mi00MDUwMjk3OTIzL
> TEwNTM=
>uid: 123456
>
>4) I delete the same user account via the webgui (full delete).
>
>5) I then check the compat tree again and here is the result:
>ldapsearch -b "cn=compat,dc=demo1,dc=freeipa,dc=org" -h
>ipa.demo1.freeipa.org -s sub "(&(objectclass=*)(uid=123456))"
>version: 1
>dn: uid=123456,cn=users,cn=compat,dc=demo1,dc=freeipa,dc=org
>objectClass: posixAccount
>objectClass: ipaOverrideTarget
>objectClass: top
>gecos: Test User
>cn: Test User
>uidNumber: 1120000053
>gidNumber: 1120000053
>loginShell: /bin/sh
>homeDirectory: /home/123456
>ipaAnchorUUID::
>OlNJRDpTLTEtNS0yMS0zNjIwNjU0ODcyLTY4NzE1NzE0Mi00MDUwMjk3OTIzL
> TEwNTM=
>uid: 123456
>
>The user account is still there.
Thanks, this is helpful. 

>Now what is really weird is that if I recreate the user 123456 through the
>webgui and perform the ldapsearch, I see two entries.  If I delete the
>user, it removes one of the entries and leaves the shadow one above.  I can
>tell because the accounts look identical except for the ipaAnchorUUID
>attribute.
This is a bug then. Could you please file a ticket?

>- This is a problem for our Solaris systems, as the ldap client is pointing
>to the compat tree so when the accounts are still active in the ipa domain
>(ie they are in the accounts tree) I am seeing 2 entries when using the
>getent passwd command.  Needless to say the pam_ldap module doesn't like
>the two entries.
No, this is a wrong setup. Either you are using compat tree and have your
base DN in pam_ldap config set to cn=compat,$SUFFIX, or you are using
primary tree and then set base dn to cn=accounts,$SUFFIX. You shouldn't
mix them in your configuration.

Compat tree is just that: a tree that returns data in a format
compatible with RFC2307 to clients that do not understand RFC2307bis. A
second use for the compat tree is to provide unified virtual tree for
clients that do not use SSSD so that both users from IPA and from
trusted Active Directory forests are accessible by such 'legacy'
clients. This second use case requires that you are using RFC2307 schema
in your client setup and that AD users are always fully qualified
(user at ad.domain).

So if you have configured your client to look at $SUFFIX, it is actually
expected that the client would see both entries (original one and the
one from the virtual tree) because that's how they were designed. Thus,
use a proper, narrow, base DN, like cn=accounts,$SUFFIX for the primary
IPA tree and cn=compat,$SUFFIX for the compat tree but never $SUFFIX.

SSSD clients handle this automatically. For IPA provider, SSSD
automatically sets search base to cn=accounts,$SUFFIX and uses
IPA-specific LDAP extended operation to query IPA servers for
information about users from Active Directory forests IPA domain trusts.

-- 
/ Alexander Bokovoy




More information about the Freeipa-users mailing list