diff options
author | Rob Crittenden <rcritten@redhat.com> | 2011-02-10 22:13:42 -0500 |
---|---|---|
committer | Rob Crittenden <rcritten@redhat.com> | 2011-02-11 09:51:44 -0500 |
commit | 95b0563817c20bd7d7d82719d8baf8eac2bc9098 (patch) | |
tree | 801e9437d000bdb36759d2a6cefcaafd4939e6f4 | |
parent | a880396de94af284e82223913dbcf9598c2bdb4c (diff) | |
download | freeipa-95b0563817c20bd7d7d82719d8baf8eac2bc9098.tar.gz freeipa-95b0563817c20bd7d7d82719d8baf8eac2bc9098.tar.xz freeipa-95b0563817c20bd7d7d82719d8baf8eac2bc9098.zip |
Ensure that file ownership doesn't change when config is updated.
Out of the blue update_file() and set_directive() changed file
ownership to root:root when it updated some files. This was causing
dogtag to break. So grab the owner before opening the file and reset
it after closing.
ticket 928
-rw-r--r-- | ipaserver/install/installutils.py | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/ipaserver/install/installutils.py b/ipaserver/install/installutils.py index 314c26c7f..99d1582eb 100644 --- a/ipaserver/install/installutils.py +++ b/ipaserver/install/installutils.py @@ -282,6 +282,7 @@ def read_password(user, confirm=True, validate=True): def update_file(filename, orig, subst): if os.path.exists(filename): + st = os.stat(filename) pattern = "%s" % re.escape(orig) p = re.compile(pattern) for line in fileinput.input(filename, inplace=1): @@ -290,6 +291,7 @@ def update_file(filename, orig, subst): else: sys.stdout.write(p.sub(subst, line)) fileinput.close() + os.chown(filename, st.st_uid, st.st_gid) # reset perms return 0 else: print "File %s doesn't exist." % filename @@ -301,6 +303,7 @@ def set_directive(filename, directive, value, quotes=True, separator=' '): This has only been tested with nss.conf """ valueset = False + st = os.stat(filename) fd = open(filename) newfile = [] for line in fd: @@ -322,6 +325,7 @@ def set_directive(filename, directive, value, quotes=True, separator=' '): fd = open(filename, "w") fd.write("".join(newfile)) fd.close() + os.chown(filename, st.st_uid, st.st_gid) # reset perms def get_directive(filename, directive, separator=' '): """ |