Set GID before UID
authorMarkus Lehtonen <markus.lehtonen@linux.intel.com>
Mon, 16 Feb 2015 13:11:32 +0000 (15:11 +0200)
committerMarkus Lehtonen <markus.lehtonen@linux.intel.com>
Mon, 16 Feb 2015 14:53:10 +0000 (16:53 +0200)
Trying to set GID after UID has changed is (probably) fails because of
missing privileges.

Change-Id: I89d90bf1d7e0433f0c98483f1c807e9de08e026c
Signed-off-by: Markus Lehtonen <markus.lehtonen@linux.intel.com>
obs_service_gbp_utils/__init__.py

index a25b61f8a729713499d74a472e104606fa186c6d..adab9f601cf877f1c4dc695b43970412cc836a1f 100644 (file)
@@ -55,12 +55,12 @@ def _demoted_child_call(uid, gid, ret_data_q, func):
     """Call a function/method with different uid/gid"""
     # Set UID and GID
     try:
+        if gid and gid > 0:
+            os.setresgid(gid, gid, gid)
         if uid and uid > 0:
             os.setresuid(uid, uid, uid)
             # Set environment
             os.environ['HOME'] = pwd.getpwuid(uid).pw_dir
-        if gid and gid > 0:
-            os.setresgid(gid, gid, gid)
     except OSError as err:
         ret_data_q.put(GbpServiceError("Setting UID/GID (%s:%s) failed: %s" %
                                        (uid, gid, err)))