119 lines
3.3 KiB
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 "/home/$name/public"
|
|
echo "Copying site template..."
|
|
cp "$HOME/admin_stuff/user_site_template.html" "/home/$name/pubic/index.html"
|
|
echo "Making user owner of site directory..."
|
|
chmod "$name:$name" "/home/$name/public" -R
|
|
echo "Linking site to server..."
|
|
ln -s "/home/$name/public" "/srv/tildesite/~$name"
|
|
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)'
|
|
|
|
|
|
|