diff --git a/lib/backend.py b/lib/backend.py
index bdb4b0050ac13f4c3f83e49a3020b349eb66a2de..0c023c5f505f8acda7cc1ad570e99c0e2b870442 100644
--- a/lib/backend.py
+++ b/lib/backend.py
@@ -59,6 +59,7 @@ from ganeti import objects
 from ganeti import ssconf
 from ganeti import serializer
 from ganeti import netutils
+from ganeti import runtime
 
 
 _BOOT_ID_PATH = "/proc/sys/kernel/random/boot_id"
@@ -2403,9 +2404,11 @@ def JobQueueUpdate(file_name, content):
 
   """
   _EnsureJobQueueFile(file_name)
+  getents = runtime.GetEnts()
 
   # Write and replace the file atomically
-  utils.WriteFile(file_name, data=_Decompress(content))
+  utils.WriteFile(file_name, data=_Decompress(content), uid=getents.masterd_uid,
+                  gid=getents.masterd_gid)
 
 
 def JobQueueRename(old, new):
diff --git a/lib/jqueue.py b/lib/jqueue.py
index 198c7219993350e1eda41f662cccccd8662cd022..2375b4550d8634df468d31530820ae61b534718e 100644
--- a/lib/jqueue.py
+++ b/lib/jqueue.py
@@ -53,6 +53,7 @@ from ganeti import mcpu
 from ganeti import utils
 from ganeti import jstore
 from ganeti import rpc
+from ganeti import runtime
 from ganeti import netutils
 from ganeti import compat
 
@@ -1070,7 +1071,9 @@ class JobQueue(object):
     @param replicate: whether to spread the changes to the remote nodes
 
     """
-    utils.WriteFile(file_name, data=data)
+    getents = runtime.GetEnts()
+    utils.WriteFile(file_name, data=data, uid=getents.masterd_uid,
+                    gid=getents.masterd_gid)
 
     if replicate:
       names, addrs = self._GetNodeIp()
@@ -1314,8 +1317,11 @@ class JobQueue(object):
     @param drain_flag: Whether to set or unset the drain flag
 
     """
+    getents = runtime.GetEnts()
+
     if drain_flag:
-      utils.WriteFile(constants.JOB_QUEUE_DRAIN_FILE, data="", close=True)
+      utils.WriteFile(constants.JOB_QUEUE_DRAIN_FILE, data="", close=True,
+                      uid=getents.masterd_uid, gid=getents.masterd_gid)
     else:
       utils.RemoveFile(constants.JOB_QUEUE_DRAIN_FILE)
 
diff --git a/lib/jstore.py b/lib/jstore.py
index f61a79cebd8c8be0e584c1fae7e32762817f37fb..1570cb986581112c6c096a051a9e9c6e967edaaf 100644
--- a/lib/jstore.py
+++ b/lib/jstore.py
@@ -25,6 +25,7 @@ import errno
 
 from ganeti import constants
 from ganeti import errors
+from ganeti import runtime
 from ganeti import utils
 
 
@@ -73,8 +74,7 @@ def InitAndVerifyQueue(must_lock):
            locking mode.
 
   """
-  dirs = [(d, constants.JOB_QUEUE_DIRS_MODE) for d in constants.JOB_QUEUE_DIRS]
-  utils.EnsureDirs(dirs)
+  getents = runtime.GetEnts()
 
   # Lock queue
   queue_lock = utils.FileLock.Open(constants.JOB_QUEUE_LOCK_FILE)
@@ -99,6 +99,7 @@ def InitAndVerifyQueue(must_lock):
       if version is None:
         # Write new version file
         utils.WriteFile(constants.JOB_QUEUE_VERSION_FILE,
+                        uid=getents.masterd_uid, gid=getents.masterd_gid,
                         data="%s\n" % constants.JOB_QUEUE_VERSION)
 
         # Read again
@@ -112,6 +113,7 @@ def InitAndVerifyQueue(must_lock):
       if serial is None:
         # Write new serial file
         utils.WriteFile(constants.JOB_QUEUE_SERIAL_FILE,
+                        uid=getents.masterd_uid, gid=getents.masterd_gid,
                         data="%s\n" % 0)
 
         # Read again