From 9eab7a7555dd7dc4f0f5aac3e449a2e8a9887afd Mon Sep 17 00:00:00 2001 From: Lance Edgar Date: Fri, 9 Jun 2023 18:19:49 -0500 Subject: [PATCH] Add password support for `make_normal_user()` --- rattail_fabric2/core.py | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) 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,