#!/bin/bash # 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)'