Make adduser script save SSH key

This commit is contained in:
Anthony Wang 2024-01-26 07:03:56 +00:00
parent d6df69b701
commit cab5728a63
Signed by: a
SSH key fingerprint: SHA256:B5ADfMCqd2M7d/jtXDoihAV/yfXOAbWWri9+GdCN4hQ

25
adduser
View file

@ -8,7 +8,7 @@ from subprocess import run, call, check_output
from sys import argv
def adduser(username, firstname, lastname, email, password):
def adduser(username, firstname, lastname, email, pubkey, password):
"""Add a new user"""
# Get UID
@ -53,33 +53,26 @@ cn: {username}
gidNumber: {uid}'''
# Write to file
filename = username + '.ldif'
with open(filename, 'w') as f:
with open('user.ldif', 'w') as f:
f.write(ldif)
# Add user
ret = call(['ldapadd', '-y', '/etc/ldappass', '-D', 'cn=Manager,dc=exozy,dc=me', '-f', filename])
ret = call(['ldapadd', '-y', '/etc/ldappass', '-D', 'cn=Manager,dc=exozy,dc=me', '-f', 'user.ldif'])
if ret != 0:
return
remove(filename)
remove('user.ldif')
# Configure and set up user
# Make home directory
run(['sudo', 'mkhomedir_helper', username, '077'])
run(['sudo', '-u', username, 'mkdir', '/home/' + username + '/.config'])
run(['mkhomedir_helper', username, '077'])
run(['sudo', '-u', username, 'mkdir', f'/home/{username}/.ssh'])
run(['sudo', '-u', username, 'tee', f'/home/{username}/.ssh/authorized_keys'], input=pubkey.encode('utf-8'))
run(['sudo', '-u', username, 'tee', f'/home/{username}/password'], input=password.encode('utf-8'))
# Set up Flatpak
# This is a workaround for the error "flatpak refusing to operate under sudo with --user"
run(['sudo', '-u', username, 'sh', '-c',
'flatpak remote-add flathub https://dl.flathub.org/repo/flathub.flatpakrepo --user'])
# Set default browser
# xdg-settings uses KDE_SESSION_VERSION to determine which KDE commands to use
# For instance, kwriteconfig5 instead of kwriteconfig from Plasma 4
run(['sudo', '-u', username, 'env', 'KDE_SESSION_VERSION=5', 'xdg-settings',
'set', 'default-web-browser', 'firefox.desktop'])
# Generate temporary password
password = token_urlsafe(6)
print('Temporary password:', password)
adduser(*argv[1:], password)
adduser(*argv[1:], token_urlsafe(6))