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>
Tue, 17 Feb 2015 11:10:26 +0000 (13:10 +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>
(cherry picked from commit 203896bf0bff7fd5f20967cec9da254cc07e5b59)

obs_service_gbp_utils/__init__.py

index 532911d12fc0fb83c002eaf7f2e107b097a1d9b1..9e11608c0adc703f370d5342e03624790837524a 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)))