diff --git a/lib/backend.py b/lib/backend.py
index 3f793da862d48d97305f0de2db08779ec8c344e8..859f94ce99173046b871357c7293e2cab9511fcb 100644
--- a/lib/backend.py
+++ b/lib/backend.py
@@ -2662,7 +2662,10 @@ def JobQueueRename(old, new):
   _EnsureJobQueueFile(old)
   _EnsureJobQueueFile(new)
 
-  utils.RenameFile(old, new, mkdir=True)
+  getents = runtime.GetEnts()
+
+  utils.RenameFile(old, new, mkdir=True, mkdir_mode=0700,
+                   dir_uid=getents.masterd_uid, dir_gid=getents.masterd_gid)
 
 
 def BlockdevClose(instance_name, disks):
diff --git a/lib/utils/io.py b/lib/utils/io.py
index c64c125d1de97f65dbaf168b9116c7d8133bb69f..c12ad0a8d7f12d57219310138e8b80633f1f4c78 100644
--- a/lib/utils/io.py
+++ b/lib/utils/io.py
@@ -295,7 +295,8 @@ def RemoveDir(dirname):
       raise
 
 
-def RenameFile(old, new, mkdir=False, mkdir_mode=0750):
+def RenameFile(old, new, mkdir=False, mkdir_mode=0750, dir_uid=None,
+               dir_gid=None):
   """Renames a file.
 
   @type old: string
@@ -306,6 +307,10 @@ def RenameFile(old, new, mkdir=False, mkdir_mode=0750):
   @param mkdir: Whether to create target directory if it doesn't exist
   @type mkdir_mode: int
   @param mkdir_mode: Mode for newly created directories
+  @type dir_uid: int
+  @param dir_uid: The uid for the (if fresh created) dir
+  @type dir_gid: int
+  @param dir_gid: The gid for the (if fresh created) dir
 
   """
   try:
@@ -316,7 +321,10 @@ def RenameFile(old, new, mkdir=False, mkdir_mode=0750):
     # as efficient.
     if mkdir and err.errno == errno.ENOENT:
       # Create directory and try again
-      Makedirs(os.path.dirname(new), mode=mkdir_mode)
+      dir_path = os.path.dirname(new)
+      Makedirs(dir_path, mode=mkdir_mode)
+      if not (dir_uid is None or dir_gid is None):
+        os.chown(dir_path, dir_uid, dir_gid)
 
       return os.rename(old, new)