Bug 1111364
Summary: | Updating winsync one-way sync does not affect the behaviour dynamically | ||
---|---|---|---|
Product: | Red Hat Enterprise Linux 7 | Reporter: | Scott Poore <spoore> |
Component: | 389-ds-base | Assignee: | Noriko Hosoi <nhosoi> |
Status: | CLOSED ERRATA | QA Contact: | Viktor Ashirov <vashirov> |
Severity: | unspecified | Docs Contact: | |
Priority: | medium | ||
Version: | 7.0 | CC: | ldelouw, nkinder, rmeggins, spoore, vashirov |
Target Milestone: | rc | ||
Target Release: | --- | ||
Hardware: | Unspecified | ||
OS: | Unspecified | ||
Whiteboard: | |||
Fixed In Version: | 389-ds-base-1.3.3.1-1.el7 | Doc Type: | Bug Fix |
Doc Text: | Story Points: | --- | |
Clone Of: | Environment: | ||
Last Closed: | 2015-03-05 09:35:33 UTC | Type: | Bug |
Regression: | --- | Mount Type: | --- |
Documentation: | --- | CRM: | |
Verified Versions: | Category: | --- | |
oVirt Team: | --- | RHEL 7.3 requirements from Atomic Host: | |
Cloudforms Team: | --- | Target Upstream Version: | |
Embargoed: |
Description
Scott Poore
2014-06-19 20:48:09 UTC
Note that only IPA syncs the account enable/disable - regular 389 does not sync this field. So it could be an IPA only problem. The way to verify this is to attempt to modify some field other than the account enable/disable field e.g. telephoneNumber and see if you can sync it both ways with oneWaySync: fromWindows set. Seems to sync back for homePhone too:
[root@master ~]# ldapmodify -x -D "cn=Directory Manager" -w Secret123 <<EOF> dn: cn=meTowinsync1.adws1.example.com,cn=replica,cn=dc\3Dipa1\2Cdc\3Dexample\2Cdc\3Dtest,cn=mapping tree,cn=config
> changetype: modify
> add: oneWaySync
> oneWaySync: fromWindows
> EOF
modifying entry "cn=meTowinsync1.adws1.example.com,cn=replica,cn=dc\3Dipa1\2Cdc\3Dexample\2Cdc\3Dtest,cn=mapping tree,cn=config"
[root@master ~]# ipa user-mod aduser2 --addattr="homePhone=8888"
-----------------------
Modified user "aduser2"
-----------------------
User login: aduser2
First name: ad
Last name: user2
Home directory: /home/aduser2
Login shell: /bin/sh
UID: 857200004
GID: 857200004
Telephone Number: 1-888-555-1212
Account disabled: False
Password: True
Kerberos keys available: True
Note Telephone Number above was a first attempt at using --phone option for user-mod but, that didn't seem to match homePhone as synced from Windows to IPA like I tested on aduser1 prior to this. So, I just used --addattr there. When I did that, I was able to see the number in AD as 8888.
(In reply to Scott Poore from comment #3) > Seems to sync back for homePhone too: > > [root@master ~]# ldapmodify -x -D "cn=Directory Manager" -w Secret123 <<EOF> > dn: > cn=meTowinsync1.adws1.example.com,cn=replica, > cn=dc\3Dipa1\2Cdc\3Dexample\2Cdc\3Dtest,cn=mapping tree,cn=config > > changetype: modify > > add: oneWaySync > > oneWaySync: fromWindows > > EOF > modifying entry > "cn=meTowinsync1.adws1.example.com,cn=replica, > cn=dc\3Dipa1\2Cdc\3Dexample\2Cdc\3Dtest,cn=mapping tree,cn=config" > > > [root@master ~]# ipa user-mod aduser2 --addattr="homePhone=8888" > ----------------------- > Modified user "aduser2" > ----------------------- > User login: aduser2 > First name: ad > Last name: user2 > Home directory: /home/aduser2 > Login shell: /bin/sh > UID: 857200004 > GID: 857200004 > Telephone Number: 1-888-555-1212 > Account disabled: False > Password: True > Kerberos keys available: True > > > Note Telephone Number above was a first attempt at using --phone option for > user-mod but, that didn't seem to match homePhone as synced from Windows to > IPA like I tested on aduser1 prior to this. So, I just used --addattr > there. When I did that, I was able to see the number in AD as 8888. Ok. So it's not just account enable/disable - oneWaySync is broken with IPA. The next step will be to determine if this affects only IPA, or if it affects plain 389 too. Scott, could you attach the WinSync agreement entry in the 389-ds-base config file to this bug? /etc/dirsrv/slapd-<ID>/dse.ldif dn: cn=<WinSync>,cn=replica,cn=dc\3Dexample\2Cdc\3Dcom,cn=mapping tree,cn=config objectClass: top objectClass: nsDSWindowsReplicationAgreement cn: <WinSync> ..... Thanks! This the one you're looking for? dn: cn=meTowinsync1.adws1.example.com,cn=replica,cn=dc\3Dipa1\2Cdc\3Dexample\2 Cdc\3Dtest,cn=mapping tree,cn=config nsds7WindowsReplicaSubtree: cn=Users,DC=ADWS1,DC=EXAMPLE,DC=COM nsds7DirectoryReplicaSubtree: cn=users,cn=accounts,dc=ipa1,dc=example,dc=test cn: meTowinsync1.adws1.example.com nsds7NewWinGroupSyncEnabled: false objectClass: nsDSWindowsReplicationAgreement objectClass: top nsDS5ReplicaTransportInfo: TLS description: me to winsync1.adws1.example.com nsDS5ReplicaRoot: dc=ipa1,dc=example,dc=test nsDS5ReplicaHost: winsync1.adws1.example.com nsds5replicaTimeout: 120 nsDS5ReplicaBindDN: cn=Administrator,cn=Users,dc=adws1,dc=example,dc=com nsds7NewWinUserSyncEnabled: true nsDS5ReplicaPort: 389 nsds7WindowsDomain: ipa1.example.test nsDS5ReplicatedAttributeList: (objectclass=*) $ EXCLUDE memberof idnssoaserial entryusn krblastsuccessfulauth krblastfailedauth krbloginfailedcount nsDS5ReplicaBindMethod: simple nsDS5ReplicaCredentials: {DES}e6rSi5rS3Mn22lsJWKbfIg== creatorsName: cn=directory manager modifiersName: cn=Multimaster Replication Plugin,cn=plugins,cn=config createTimestamp: 20140618222440Z modifyTimestamp: 20140620005521Z nsds7DirsyncCookie:: TVNEUwMAAACgZ6ZPIozPAQAAAAAAAAAAKAAAAMNgAAAAAAAAAAAAAAAAA ADDYAAAAAAAAIKih5qXcK1ErOqXcz33naYBAAAAAAAAAAEAAAAAAAAAgqKHmpdwrUSs6pdzPfedps NgAAAAAAAA oneWaySync: fromWindows (In reply to Scott Poore from comment #6) > This the one you're looking for? Yes, thanks!! I could not reproduce the problem using the master build as well as the rhel-7.0 branch build... I set oneWaySync in my WinSync agreement: oneWaySync: fromWindows Only the updates on windows are synced to the DS, and the updates on DS are not to the windows. (In reply to Noriko Hosoi from comment #8) > I could not reproduce the problem using the master build as well as the > rhel-7.0 branch build... > > I set oneWaySync in my WinSync agreement: > oneWaySync: fromWindows > > Only the updates on windows are synced to the DS, and the updates on DS are > not to the windows. So does that mean this problem is specific to IPA winsync? (In reply to Rich Megginson from comment #9) > (In reply to Noriko Hosoi from comment #8) > > I could not reproduce the problem using the master build as well as the > > rhel-7.0 branch build... > > > > I set oneWaySync in my WinSync agreement: > > oneWaySync: fromWindows > > > > Only the updates on windows are synced to the DS, and the updates on DS are > > not to the windows. > > So does that mean this problem is specific to IPA winsync? Not sure... I was hoping to reproduce the problem without IPA, but I could not. Could there be an IPA system with AD I could play with? I'd love to try the basic test I did on my system. I.e., first, I'd like to make sure the oneWaySync is broken via IPA, then run the DS-AD winsync only test... If the problem is reproduced without IPA operation, I'd like to go through with gdb. To do so, I need windows access via vnc or something... Noriko, I'll send login info for some servers you can take a look at. Thanks, Scott Scott, here's my observation. I think WinSync is working as expected including the one-way feature, but the search result is a bit out of state? 1. I added a user to DS using ldap command line (ldapmodify) as well as ipa user-add, but the entry was not added to the AD. <== OK 2. I added a user (cn=ad user10) to AD, which was synced to DS. 2-1. ad user10 on DS: Account disabled: True ad user10 on AD: right click menu shows "Enable account", i.e., disabled. 2-2. on DS # ipa user-enable aduser10 ------------------------------- Enabled user account "aduser10" ------------------------------- # ipa user-show aduser10 Account disabled: False on AD ad user10 on AD: right click menu shows "Enable account", i.e., disabled. <== OK on DS # ipa user-user-disable aduser10 ------------------------------- Disabled user account "aduser10" ------------------------------- # ipa user-show aduser10 Account disabled: True 2-3. on AD ad user10 on AD: select "Enable account" on DS # ipa user-show aduser10 Account disabled: True <== showing the status before the AD change was sync'ed. # ipa user-show aduser10 Account disabled: False <== repeat the command shows the sync'ed result. The first ipa user-show in 2-3 looks out-of-sync, but it's just temporarily... Do you think that's the problem? No, I don't think 2-3 not changing immediately is a problem there. Just a timing issue I think, right? And it's interesting but, I'm not seeing the sync'ing back from IPA to AD anymore either. Is it possible that something you changed on DS caused it to start working? Or maybe just a restart of DS was necessary after adding oneWaySync? (In reply to Scott Poore from comment #13) > No, I don't think 2-3 not changing immediately is a problem there. Just a > timing issue I think, right? Right. AD->DS is not sync'ed immediately while DS->AD is. Interestingly, it seems "ipa user-show" triggers the AD->DS sync (I guess it issues the sync request). > And it's interesting but, I'm not seeing the sync'ing back from IPA to AD > anymore either. Oh, you don't, either... > Is it possible that something you changed on DS caused it to start working? > Or maybe just a restart of DS was necessary after adding oneWaySync? Hmmm, I think it should be dynamically configured. (the oneWaySync value is retrieved in windows_parse_config_entry via agmtlist_modify_callback, which is called when the agreement is modified.) Hi Scott, Could there be anything we are supposed to do on this bug? --noriko I'm going to try to look at this again but, it may be a day or two until I get back to this. Marking needinfo for myself to indicate this. Ok, I had a little time to look at this again. I was pretty consistently seeing the "ipa user-show" have to be run twice to show me the update from windows when oneWaySync was set. I tried with a sleep 300 after change on Windows and no longer saw the non-update. So, just a timing/cached issue there. Not a problem here I don't think. Back to the issue at hand. I was able to reproduce on the same environment by deleting the oneWaySync and re-adding it. Then if I restarted IPA, I saw expected behavior where it was not syncing from IPA to Windows. To reproduce it, I did the following: 1. make sure aduser is enabled on both ad and ipa 2. ipactl restart 3. set oneWaySync to fromWindows 4. ipa user-disable aduser 5. check ad. I was able to do this a few times on my test env today so we should be able to reproduce it again. Now, when I restart ipa, it stopped syncing from IPA to AD when oneWaySync was set to fromWindows. Hi Scott, I could reproduce the problem on my test env. I'm updating the summary and opening a 389 ticket to fix for RHEL-7.1. Thanks! --noriko Upstream ticket: https://fedorahosted.org/389/ticket/47852 $ rpm -qa | grep 389 389-ds-base-debuginfo-1.3.3.1-11.el7.x86_64 389-ds-base-libs-1.3.3.1-11.el7.x86_64 389-ds-base-1.3.3.1-11.el7.x86_64 [1] oneWaySync is absent, sync is bi-directional: $ ldapsearch -o ldif-wrap=no -LLL -D "cn=Directory Manager" -w Secret123 -H ldap://localhost:1189 -b "cn=WinPassSync,cn=replica,cn=dc\\3Dexample\\2Cdc\\3Dcom,cn=mapping tree,cn=config" oneWaySync dn: cn=WinPassSync,cn=replica,cn=dc\3Dexample\2Cdc\3Dcom,cn=mapping tree,cn=config Add new entry: $ ldapmodify -D "cn=Directory Manager" -w Secret123 -H ldap://localhost:1189 -a << EOF dn: uid=usr01,ou=dswinsync,dc=example,dc=com objectClass: inetOrgPerson objectClass: ntUser ntUserDomainId: usr01 uid: usr01 givenName: usr01 sn: usr01 cn: usr01 userPassword: Secret123 ntUserCreateNewAccount: true EOF adding new entry "uid=usr01,ou=dswinsync,dc=example,dc=com" It was synchronized: $ ldapsearch -o ldif-wrap=no -LLL -D "cn=Administrator,cn=users,dc=adrelm,dc=com" -w Secret123 -H ldap://win2k8.adrelm.com -b dc=adrelm,dc=com cn=usr01 cn dn: CN=usr01,CN=Users,DC=adrelm,DC=com cn: usr01 [2] Set oneWaySync to fromWindows: $ ldapmodify -D "cn=Directory Manager" -w Secret123 -H ldap://localhost:1189 -a << EOF dn: cn=WinPassSync,cn=replica,cn=dc\3Dexample\2Cdc\3Dcom,cn=mapping tree,cn=config changetype: modify add: oneWaySync oneWaySync: fromWindows EOF modifying entry "cn=WinPassSync,cn=replica,cn=dc\3Dexample\2Cdc\3Dcom,cn=mapping tree,cn=config" Add new entry: $ ldapmodify -D "cn=Directory Manager" -w Secret123 -H ldap://localhost:1189 -a << EOF dn: uid=usr02,ou=dswinsync,dc=example,dc=com objectClass: inetOrgPerson objectClass: ntUser ntUserDomainId: usr02 uid: usr02 givenName: usr02 sn: usr02 cn: usr02 userPassword: Secret123 ntUserCreateNewAccount: true EOF adding new entry "uid=usr02,ou=dswinsync,dc=example,dc=com" It wasn't synchronized, ldapsearch returns empty result: $ ldapsearch -o ldif-wrap=no -LLL -D "cn=Administrator,cn=users,dc=adrelm,dc=com" -w Secret123 -H ldap://win2k8.adrelm.com -b dc=adrelm,dc=com cn=usr02 cn Marking as VERIFIED. Since the problem described in this bug report should be resolved in a recent advisory, it has been closed with a resolution of ERRATA. For information on the advisory, and where to find the updated files, follow the link below. If the solution does not work for you, open a new bug report. https://rhn.redhat.com/errata/RHSA-2015-0416.html |