diff --git a/lib/utils/nodesetup.py b/lib/utils/nodesetup.py
index 0931ee32053b687c031d8cbd33045ee044c215e0..5dfc62187ae631549de222872cde05d47bb30b92 100644
--- a/lib/utils/nodesetup.py
+++ b/lib/utils/nodesetup.py
@@ -62,7 +62,8 @@ def SetEtcHostsEntry(file_name, ip, hostname, aliases):
       out.write(line)
   _write_entry(written)
 
-  io.WriteFile(file_name, data=out.getvalue(), mode=0644)
+  io.WriteFile(file_name, data=out.getvalue(), uid=0, gid=0, mode=0644,
+               keep_perms=io.KP_IF_EXISTS)
 
 
 def AddHostToEtcHosts(hostname, ip):
@@ -104,7 +105,8 @@ def RemoveEtcHostsEntry(file_name, hostname):
 
     out.write(line)
 
-  io.WriteFile(file_name, data=out.getvalue(), mode=0644)
+  io.WriteFile(file_name, data=out.getvalue(), uid=0, gid=0, mode=0644,
+               keep_perms=io.KP_IF_EXISTS)
 
 
 def RemoveHostFromEtcHosts(hostname):
diff --git a/test/ganeti.utils.nodesetup_unittest.py b/test/ganeti.utils.nodesetup_unittest.py
index c3480c2e082eea7430a62241c689042bb9c5a93a..2c6148921f940645b4dbe747172db990e633e373 100755
--- a/test/ganeti.utils.nodesetup_unittest.py
+++ b/test/ganeti.utils.nodesetup_unittest.py
@@ -44,6 +44,7 @@ class TestEtcHosts(testutils.GanetiTestCase):
       handle.write("192.0.2.1 router gw\n")
     finally:
       handle.close()
+    os.chmod(self.tmpname, 0644)
 
   def testSettingNewIp(self):
     utils.SetEtcHostsEntry(self.tmpname, "198.51.100.4", "myhost.example.com",