tilde-admin-stuff/create_user.bash

119 lines
3.3 KiB
Bash

#!/bin/bash
if [ $(id -u) -ne 0 ]
then echo Please run this script as root or using sudo!
exit
fi
# 0 . 1 . 2 . 3 . 4 . 5 . 6 . 7 . 8
echo '| '
echo '| - ._ _ _._ - ._ _. _ '
echo '| I |n| | | \/ p) /\ S T i |n| |_| / \ ~ | '
echo 'L | | | |u| /x | \o _\ | | | | __g | \_/ '
echo
echo -e '\e[31muser adder...\e[m'
echo
echo '> If (parenthesis) are shown, that is the default value. Enter a new value or'
echo ' press enter for the (default).'
echo
while true; do
read -p "New user username?:" name
if ! [[ "$name" =~ '^[a-z0-9-_]{3,30}$' ]];then break;fi
echo Invalid username.
echo
echo Username must...
echo "- consist of only lowercase letters, lowercase numbers,"
echo " dashes, and underscores"
echo "- be a minimum of 3 characters long"
echo "- be a maximum of 30 characters long"
done
#Set User password
while true; do
read -p "The user's password?:" pass
if [[ "$pass" = '' ]];then break;fi
echo "Must set a password."
done
#Add users public key
while true; do
read -p "The path to the user's pubkey?:" key
if [[ "$key" = '' ]];then break;fi
echo "Must set a pubkey."
done
#Choose whether user will be an admin
while true; do
read -p "Will user be admin? (n):" admin
if ! [[ "$admin" =~ '^[yn]?$' ]];then break;fi
echo "Must be 'y', 'n' or empty."
done
#Choose whether the user will have a site page
while true; do
read -p "Will user have public site? (y):" site
if ! [[ "$site" =~ '^[yn]?$' ]];then break;fi
echo "Must be 'y', 'n' or empty."
done
#Choose whether to copy the readme
while true; do
read -p "Place readme in user's home? (y):" readme
if ! [[ "$readme" =~ '^[yn]?$' ]];then break;fi
echo "Must be 'y', 'n' or empty."
done
echo ''
dokey='y'
if [ "$admin" = '' ];then admin='n' ;fi
if [ "$site" = '' ];then site='y' ;fi
if [ "$readme" = '' ];then readme='y' ;fi
if [ "$key" = '' ];then dokey='n' ;fi
echo "Creating user..."
# vUsername vHome=/home/user vEnable usergroup
useradd "$name" -m -d "/home/$name" -s '/bin/bash' -U
# ^New user ^Make homedir ^Shell=bash
echo "Setting password..."
yes "$pass" | passwd "$name"
if [ "$admin" = 'y' ];then echo "Setting admin...";usermod -aG sudo;fi
if [ "$site" = 'y' ]; then
echo "Creating site directory..."
mkdir "/var/lib/caddy/tilde/~$name"
echo "Copying site template..."
cp "/root/tilde-admin/stuff/user_site_template.html" "/var/lib/caddy/tilde/~$name/index.html"
echo "Making user owner of site directory..."
chmod -R "$name:$name" "/var/lib/caddy/tilde/~$name"
echo "Linking site to server..."
ln -s "/var/lib/caddy/tilde/~$name" "/home/$name/public"
fi
if [ "$readme" = 'y' ]; then
echo "Copying readme..."
cp "$HOME/admin_stuff/user_readme.md" "/home/$name/README.md"
echo "Making user owner of readme..."
chmod "$name:$name" "/home/$name/README.md"
fi
if [ "$dokey" = 'y' ]; then
echo "Adding pubkey..."
install -dm700 "/home/$name/.ssh"
cat "$key" >> "/home/$name/.ssh/authorized_keys"
chmod 600 "/home/$name/.ssh/authorized_keys"
echo "Making user owner of authorized_keys..."
chown -R "$name:$name" "/home/$name"
fi
echo
echo
echo -e '\e[31mUSER CREATED!\e[m (hopefully)'