From 91883d7577489870c1fedba077e6bb19a7f477a4 Mon Sep 17 00:00:00 2001 From: cynic Date: Wed, 2 Nov 2022 12:01:46 -0400 Subject: [PATCH] user creation tool --- tools/add_users.py | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 tools/add_users.py diff --git a/tools/add_users.py b/tools/add_users.py new file mode 100644 index 0000000..f48834b --- /dev/null +++ b/tools/add_users.py @@ -0,0 +1,40 @@ +import subprocess +import crypt +import json +import secrets + +def get_real_users(): + f = [i.split(":") for i in open("/etc/shadow").read().split("\n")] + return [i[0] for i in filter(lambda a: len(a) > 1, f) if not(i[1] in ["*", "!"])] + +def add_user(u, p): + p = crypt.crypt(p, crypt.mksalt()) + subprocess.run(["useradd", "-m", "-p", p, u]) + subprocess.run("setfacl", "--recursive", "--modify", f"user:{u}:r", f"/home/{user}/.web") + subprocess.run("setfacl", "--recursive", "--modify", f"default:user:{u}:r", f"/home/{user}/.web") + +""" +e.g. +[ + "jsmith@myorg.net", + "jdoe@myorg.net", + ... +] +""" +def generate_list_from_emails(infile): + cur = get_real_users() + key = [] + + f = open(infile).read() + f = json.loads(f) + + for addy in f: + usr = addy.split("@")[0] + if usr in cur: + continue + pwd = crypt.crypt(secrets.token_urlsafe(10), crypt.mksalt()) + key.append((usr, pwd)) + add_user(usr, pwd) + print(key) + +generate_list_from_emails("./testmails") \ No newline at end of file