X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=accounts.py;h=fe0af53262954f97b85ad98b7af1a0a7c7bb8e86;hb=792d08a41a177761f077433cd5933550d196c4b0;hp=b330033fa91ef8d477fa7d1158786ee088e47b18;hpb=63582a1d9d1e686d468839274c91465d3be09140;p=nodemanager.git diff --git a/accounts.py b/accounts.py index b330033..fe0af53 100644 --- a/accounts.py +++ b/accounts.py @@ -44,9 +44,12 @@ def register_class(acct_class): name_worker_lock = threading.Lock() name_worker = {} +def allpwents(): + return [pw_ent for pw_ent in pwd.getpwall() if pw_ent[6] in shell_acct_class] + def all(): """Return the names of all accounts on the system with recognized shells.""" - return [pw_ent[0] for pw_ent in pwd.getpwall() if pw_ent[6] in shell_acct_class] + return [pw_ent[0] for pw_ent in allpwents()] def get(name): """Return the worker object for a particular username. If no such object exists, create it first.""" @@ -76,6 +79,7 @@ class Account: dot_ssh = '/home/%s/.ssh' % self.name def do_installation(): if not os.access(dot_ssh, os.F_OK): os.mkdir(dot_ssh) + os.chmod(dot_ssh, 0700) tools.write_file(dot_ssh + '/authorized_keys', lambda f: f.write(new_keys)) logger.log('%s: installing ssh keys' % self.name) tools.fork_as(self.name, do_installation)