From 425cb14b866202fdbe2011e1d255b458d38bd167 Mon Sep 17 00:00:00 2001 From: Marc Fiuczynski Date: Thu, 13 Aug 2009 16:16:31 +0000 Subject: [PATCH] clean up of the 'configure' method. Now provides more failure information --- accounts.py | 24 +++++++++++++++++------- 1 file changed, 17 insertions(+), 7 deletions(-) diff --git a/accounts.py b/accounts.py index 180a738..df33977 100644 --- a/accounts.py +++ b/accounts.py @@ -85,24 +85,34 @@ class Account: logger.verbose('%s: in accounts:configure'%self.name) new_keys = rec['keys'] if new_keys != self.keys: - self.keys = new_keys + # get the unix account info gid = grp.getgrnam("slices")[2] pw_info = pwd.getpwnam(self.name) uid = pw_info[2] pw_dir = pw_info[5] - dot_ssh = pw_dir + '/.ssh' - if not os.access(dot_ssh, os.F_OK): os.mkdir(dot_ssh) - - auth_keys = dot_ssh + '/authorized_keys' + # write out authorized_keys file and conditionally create + # the .ssh subdir if need be. + dot_ssh = os.path.join(pw_dir,'.ssh') + if not os.path.isdir(dot_ssh): + if not os.path.isdir(pw_dir): + logger.verbose('WARNING: homedir %s does not exist for %s!'%(pw_dir,self.name)) + os.mkdir(pw_dir) + os.chown(pw_dir, uid, gid) + os.mkdir(dot_ssh) + + auth_keys = os.path.join(dot_ssh,'authorized_keys') tools.write_file(auth_keys, lambda f: f.write(new_keys)) + # set access permissions and ownership 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) + # set self.keys to new_keys only when all of the above ops succeed + self.keys = new_keys + logger.log('%s: installed ssh keys' % self.name) def start(self, delay=0): pass -- 2.43.0