#!/usr/bin/python3 import os # Get user details username = input('Enter username: ') firstname = input('Enter first name: ') lastname = input('Enter last name: ') email = input('Enter email: ') uid = input('Enter UID: ') # Construct LDIF ldif = '''dn: uid={username},ou=People,dc=exozy,dc=me objectClass: top objectClass: person objectClass: organizationalPerson objectClass: inetOrgPerson objectClass: posixAccount objectClass: shadowAccount uid: {username} cn: {firstname} {lastname} sn: {lastname} givenName: {firstname} userPassword: {{SSHA}}W1G/TLMU5n5t6n3HQiJ7fkgjrqKnVNqj mail: {email} loginShell: /bin/bash uidNumber: {uid} gidNumber: {uid} homeDirectory: /home/{username} dn: cn={username},ou=Group,dc=exozy,dc=me objectClass: top objectClass: posixGroup cn: {username} gidNumber: {uid}'''.format(username=username, firstname=firstname, lastname=lastname, email=email, uid=uid) # Write to file and get confirmation filename = username + '.ldif' with open(filename, 'w') as f: f.write(ldif) os.system('vim ' + filename) confirm = input('OK? (y/n) ') if confirm != 'y': os.system('gio trash ' + filename) exit(0) # Add user os.system('ldapadd -D "cn=Manager,dc=exozy,dc=me" -W -f ' + filename) # Configure user os.system('sudo mkhomedir_helper ' + username) os.system('sudo -u ' + username + ' mkdir /home/' + username + '/.config') os.system('sudo -u ' + username + ' flatpak remote-add --if-not-exists flathub https://dl.flathub.org/repo/flathub.flatpakrepo --user') os.system('sudo -u ' + username + ' xdg-settings set default-web-browser firefox.desktop') # Set up rootless Podman # https://wiki.archlinux.org/title/Podman#Set_subuid_and_subgid start = str((int(uid) - 999) * 100000) end = str(int(start) + 65535) # Allocate 65536 UIDs os.system('sudo usermod --add-subuids ' + start + '-' + end + ' --add-subgids ' + start + '-' + end + ' ' + username)