makeuser/makeuser

53 lines
1.4 KiB
Bash
Executable File

#!/bin/sh
# ---------------------------------------------------------------------------
# makeuser - tilde.team new user creation
# Usage: makeuser [-h|--help] <username> <email> "<pubkey>"
# ---------------------------------------------------------------------------
PROGNAME=${0##*/}
VERSION="0.2"
error_exit() {
printf "%s: %s\n" "$PROGNAME" "${1:-"Unknown Error"}" >&2
exit 1
}
usage() {
printf "usage: %s %s [-h|--help] <username> <email> \"<pubkey>\"\n" "$PROGNAME" "$VERSION"
}
case $1 in
-h | --help)
usage; exit ;;
-* | --*)
usage; error_exit "unknown option $1" ;;
*)
if [ $# -ne 3 ]; then
error_exit "not enough args"
fi
if id "$1" > /dev/null 2>&1; then
exit 0
fi
printf "adding new user %s\n" "$1"
newpw=$(pwgen -1B 10)
sudo useradd -m -g 100 -s /bin/bash "$1" \
|| error_exit "couldn't add user"
printf "%s:%s\n" "$1" "$newpw" | sudo chpasswd
echo "Users password: $newpw"
printf "adding ssh pubkey\n"
sudo mkdir /home/$1/.ssh/
printf "%s\n" "$3" | sudo tee "/home/$1/.ssh/authorized_keys"
sudo chown -R $1 /home/$1
sudo ln -s /home/g1n/README.md /home/$1/README.md
sudo mkdir /repos/$1
sudo chown $1 /repos/$1
echo "fix sorting in /etc/passwd"
sudo pwck -s
;;
esac