diff --git a/rattail_fabric2/core.py b/rattail_fabric2/core.py index 176ecc8..2086d23 100644 --- a/rattail_fabric2/core.py +++ b/rattail_fabric2/core.py @@ -128,17 +128,25 @@ def mkdir(c, paths, owner=None, mode=None, func('chmod {} {}'.format(mode, ' '.join(paths))) -def make_normal_user(c, name, full_name=None, disabled_login=True): +def make_normal_user(c, username, full_name=None, + # TODO: ugh why is this true by default..should change that + disabled_login=True, + password=None): """ Make a new "normal" user account. """ - if not c.run('getent passwd {}'.format(name), warn=True).failed: + if not c.run('getent passwd {}'.format(username), warn=True).failed: return + if password: + disabled_login = True disabled_login = '--disabled-login' if disabled_login else '' - c.sudo("adduser --gecos '{}' {} {}".format(full_name or name, + c.sudo("adduser --gecos '{}' {} {}".format(full_name or username, disabled_login, - name)) + username)) + if password: + c.sudo(f"bash -c 'echo {username}:{password} | chpasswd'", + echo=False) def make_system_user(c, name, home=None, uid=None, shell=None,