summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlexander Bokovoy <abokovoy@redhat.com>2015-07-16 14:11:26 +0300
committerTomas Babej <tbabej@redhat.com>2015-07-16 13:41:08 +0200
commitc6a1bd591e81cd82c0715c01bcc82f2947adf3bb (patch)
tree9f2cc74c873ce45e535ff4210722bb51c145b2e7
parent706c00361544a8255c4c05b253e5e9969187a68c (diff)
downloadfreeipa-c6a1bd591e81cd82c0715c01bcc82f2947adf3bb.tar.gz
freeipa-c6a1bd591e81cd82c0715c01bcc82f2947adf3bb.tar.xz
freeipa-c6a1bd591e81cd82c0715c01bcc82f2947adf3bb.zip
oddjob: avoid chown keytab to sssd if sssd user does not exist
If sssd user does not exist, it means SSSD does not run as sssd user. Currently SSSD has too tight check for keytab permissions and ownership. It assumes the keytab has to be owned by the same user it runs under and has to have 0600 permissions. ipa-getkeytab creates the file with right permissions and 'root:root' ownership. Jakub Hrozek promised to enhance SSSD keytab permissions check so that both sssd:sssd and root:root ownership is possible and then when SSSD switches to 'sssd' user, the former becomes the default. Since right now SSSD 1.13 is capable to run as 'sssd' user but doesn't create 'sssd' user in Fedora 22 / RHEL 7 environments, we can use its presence as a version trigger. https://fedorahosted.org/freeipa/ticket/5136 Reviewed-By: Tomas Babej <tbabej@redhat.com>
-rwxr-xr-xinstall/oddjob/com.redhat.idm.trust-fetch-domains9
1 files changed, 7 insertions, 2 deletions
diff --git a/install/oddjob/com.redhat.idm.trust-fetch-domains b/install/oddjob/com.redhat.idm.trust-fetch-domains
index 85e3cc993..e50c81e50 100755
--- a/install/oddjob/com.redhat.idm.trust-fetch-domains
+++ b/install/oddjob/com.redhat.idm.trust-fetch-domains
@@ -45,8 +45,13 @@ def retrieve_keytab(api, ccache_name, oneway_keytab_name, oneway_principal):
env={'KRB5CCNAME': ccache_name, 'LANG': 'C'},
raiseonerr=False)
# Make sure SSSD is able to read the keytab
- sssd = pwd.getpwnam('sssd')
- os.chown(oneway_keytab_name, sssd[2], sssd[3])
+ try:
+ sssd = pwd.getpwnam('sssd')
+ os.chown(oneway_keytab_name, sssd[2], sssd[3])
+ except KeyError as e:
+ # If user 'sssd' does not exist, we don't need to chown from root to sssd
+ # because it means SSSD does not run as sssd user
+ pass
def parse_options():