First commit
This commit is contained in:
commit
5bf66a6f87
3 changed files with 128 additions and 0 deletions
113
create_user.bash
Normal file
113
create_user.bash
Normal file
|
|
@ -0,0 +1,113 @@
|
||||||
|
#!/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)'
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
1
user_readme.md
Normal file
1
user_readme.md
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
This file to be placed in the home directory of new tilde users.
|
||||||
14
user_site_template.html
Normal file
14
user_site_template.html
Normal file
|
|
@ -0,0 +1,14 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
|
||||||
|
<!-- Template site for tilde.linuxposting.xyz -->
|
||||||
|
<!-- Site viewable at https://tilde.linuxposting.xyz/~yourname -->
|
||||||
|
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<title>My site</title>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<h1>Welcome to my site!<h1>
|
||||||
|
<p>Lorem ipsum dolor sit amet...</p>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
Loading…
Add table
Add a link
Reference in a new issue