Bug 785877
Summary: | on reconnect we need to detect that a ipa/ds server has been reinitialized | ||
---|---|---|---|
Product: | Red Hat Enterprise Linux 7 | Reporter: | Stephen Gallagher <sgallagh> |
Component: | sssd | Assignee: | Jakub Hrozek <jhrozek> |
Status: | CLOSED CURRENTRELEASE | QA Contact: | Kaushik Banerjee <kbanerje> |
Severity: | unspecified | Docs Contact: | |
Priority: | medium | ||
Version: | 7.0 | CC: | grajaiya, jgalipea, jzeleny, ksiddiqu, nkarandi, pbrezina, prc |
Target Milestone: | rc | ||
Target Release: | --- | ||
Hardware: | Unspecified | ||
OS: | Unspecified | ||
Whiteboard: | |||
Fixed In Version: | sssd-1.10.0-1.el7.alpha1 | Doc Type: | Bug Fix |
Doc Text: |
Cause: when reconnecting to an LDAP server going online, SSSD didn't check if it was re-initialized during the downtime
Consequence: if during the downtime server was reinitialized and filled with completely different data, SSSD wouldn't update its database, This was problematic in combination with enumeration - user could get some information from SSSD which would not be valid.
Fix: LDAP provider is now checking for max USN if the server supports it. If USN is lower than ti was before server went down, the entire database is refreshed.
Result: in LDAP server supports USN, its reinitialization is detected at least when possible and the possibility of having cached invalid data is reduced
Result:
Workaround: stop the SSSD before reconnecting to re-initialized server; clear the SSSD caches manually before reconnecting; start the SSSD
|
Story Points: | --- |
Clone Of: | Environment: | ||
Last Closed: | 2014-06-13 11:02:47 UTC | Type: | --- |
Regression: | --- | Mount Type: | --- |
Documentation: | --- | CRM: | |
Verified Versions: | Category: | --- | |
oVirt Team: | --- | RHEL 7.3 requirements from Atomic Host: | |
Cloudforms Team: | --- | Target Upstream Version: | |
Embargoed: |
Description
Stephen Gallagher
2012-01-30 20:15:24 UTC
Please provide steps to reproduce/verify this issue. Thanks. 1. Set up a 389 DS server 2. Populate it with some data. 3. Set up a client with enumeration = True 4. Verify the data on the client. 5. Uninstall and reinstall the 389 DS server 6. Populate it with different data 7. Verify the data on the client. Technical note added. If any revisions are required, please edit the "Technical Notes" field accordingly. All revisions will be proofread by the Engineering Content Services team. New Contents: Cause: when reconnecting to an LDAP server going online, SSSD didn't check if it was re-initialized during the downtime Consequence: if during the downtime server was reinitialized and filled with completely different data, SSSD wouldn't update its database, This was problematic in combination with enumeration - user could get some information from SSSD which would not be valid. Fix: LDAP provider is now checking for max USN if the server supports it. If USN is lower than ti was before server went down, the entire database is refreshed. Result: in LDAP server supports USN, its reinitialization is detected at least when possible and the possibility of having cached invalid data is reduced Result: Do not think this is a RHEL 6.3 blocker moving to RHEL 6.4. Fixed upstream. Temporarily moving bugs to MODIFIED to work around errata tool bug Tested with sssd-1.11.2-42.el7.x86_64 1. Add sssduser1/2 in 389 DS. Configured sssd and checked whether users authentication works ok. 2. # getent passwd sssduser1 sssduser1:*:10011:10011:example sssduser1:/home/sssduser1:/bin/bash # getent passwd sssduser2 sssduser2:*:10012:10012:example sssduser2:/home/sssduser2:/bin/bash 3. On 389 DS remove and add DS instance again. 4. Add sssduser3/4 on newly installed DS. # getent passwd sssduser3 sssduser3:*:10013:10013:example sssduser3:/home/sssduser3:/bin/bash # getent passwd sssduser4 sssduser4:*:10014:10014:example sssduser4:/home/sssduser4:/bin/bash Tested with sssd-1.11.2-42.el7.x86_64 Setting enumerate = True. 1. # getent passwd | grep sssd sssduser1:*:10011:10011:example sssduser1:/home/sssduser1:/bin/bash sssduser2:*:10012:10012:example sssduser2:/home/sssduser2:/bin/bash 2. On 389 DS remove and add DS instance again. 3. Add sssduser3/4 on newly installed DS. 4. Restart sssd to trigger enumration. # getent passwd | grep sssd sssduser1:*:10011:10011:example sssduser1:/home/sssduser1:/bin/bash sssduser2:*:10012:10012:example sssduser2:/home/sssduser2:/bin/bash sssduser3:*:10013:10013:example sssduser3:/home/sssduser3:/bin/bash sssduser4:*:10014:10014:example sssduser4:/home/sssduser4:/bin/bash This request was resolved in Red Hat Enterprise Linux 7.0. Contact your manager or support representative in case you have further questions about the request. |