forked from Interanet/server-bootstrap
initial commit
This commit is contained in:
69
scripts/user.sh
Normal file
69
scripts/user.sh
Normal file
@@ -0,0 +1,69 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
set -e
|
||||
|
||||
echo "================================="
|
||||
echo " User Setup"
|
||||
echo "================================="
|
||||
|
||||
read -rp "Enter new username: " USERNAME
|
||||
|
||||
if id "$USERNAME" &>/dev/null; then
|
||||
echo "User already exists"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
useradd -m -s /bin/bash "$USERNAME"
|
||||
passwd "$USERNAME"
|
||||
|
||||
read -rp "Add user to sudo group? (y/n): " ADD_SUDO
|
||||
if [[ "$ADD_SUDO" == "y" ]]; then
|
||||
usermod -aG sudo "$USERNAME"
|
||||
fi
|
||||
|
||||
mkdir -p "/home/$USERNAME/.ssh"
|
||||
|
||||
echo
|
||||
echo "SSH Setup:"
|
||||
echo "1) Copy root authorized_keys"
|
||||
echo "2) Enter new public key"
|
||||
echo "3) Skip"
|
||||
|
||||
read -rp "Choose option: " SSH_OPTION
|
||||
|
||||
case "$SSH_OPTION" in
|
||||
1)
|
||||
if [[ -f /root/.ssh/authorized_keys ]]; then
|
||||
cp /root/.ssh/authorized_keys "/home/$USERNAME/.ssh/"
|
||||
fi
|
||||
;;
|
||||
2)
|
||||
read -rp "Paste public key: " PUBKEY
|
||||
echo "$PUBKEY" > "/home/$USERNAME/.ssh/authorized_keys"
|
||||
;;
|
||||
3)
|
||||
;;
|
||||
*)
|
||||
echo "Skipping SSH setup"
|
||||
;;
|
||||
esac
|
||||
|
||||
chown -R "$USERNAME:$USERNAME" "/home/$USERNAME/.ssh"
|
||||
chmod 700 "/home/$USERNAME/.ssh"
|
||||
|
||||
if [[ -f "/home/$USERNAME/.ssh/authorized_keys" ]]; then
|
||||
chmod 600 "/home/$USERNAME/.ssh/authorized_keys"
|
||||
fi
|
||||
|
||||
if command -v docker &>/dev/null; then
|
||||
echo
|
||||
read -rp "Docker is installed. Add $USERNAME to the docker group? (y/n): " ADD_DOCKER
|
||||
if [[ "$ADD_DOCKER" == "y" ]]; then
|
||||
usermod -aG docker "$USERNAME"
|
||||
echo "Added $USERNAME to the docker group."
|
||||
else
|
||||
echo "Skipped adding $USERNAME to docker group."
|
||||
fi
|
||||
fi
|
||||
|
||||
echo "User setup complete"
|
||||
Reference in New Issue
Block a user