From a26fbdd37cf08b1de984319565646e04f140f046 Mon Sep 17 00:00:00 2001 From: Marc Fiuczynski Date: Fri, 17 Jul 2009 04:05:35 +0000 Subject: [PATCH] use a temp file to write the keys --- plugins/specialaccounts.py | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/plugins/specialaccounts.py b/plugins/specialaccounts.py index ad4c2cf..a6c07b0 100644 --- a/plugins/specialaccounts.py +++ b/plugins/specialaccounts.py @@ -38,16 +38,21 @@ def GetSlivers(plc, data, conf): if not os.access(dot_ssh, os.F_OK): os.mkdir(dot_ssh) auth_keys = dot_ssh + '/authorized_keys' logger.log("new keys = %s" % auth_keys) - auth_file = file(auth_keys,"w") + + fd, fname = tempfile.mkstemp('','authorized_keys',dot_ssh) for key in new_keys: - auth_file.write(key) - auth_file.write("\n") - auth_file.close() + os.write(fd,key) + os.write(fd,'\n') + + os.close(fd) + if os.path.exists(auth_keys): + os.unlink(auth_keys) + os.rename(fname,auth_keys) # set permissions properly os.chmod(dot_ssh, 0700) - os.chmod(auth_keys, 0600) os.chown(dot_ssh, uid,gid) + os.chmod(auth_keys, 0600) os.chown(auth_keys, uid,gid) logger.log('specialacounts: installed ssh keys for %s' % name) -- 2.43.0