Update create-user.sh
This commit is contained in:
@@ -3,26 +3,21 @@
|
|||||||
echo "== Flexible User Creation Script =="
|
echo "== Flexible User Creation Script =="
|
||||||
echo
|
echo
|
||||||
|
|
||||||
# Prompt for username
|
|
||||||
read -p "Username to create (required): " USERNAME
|
read -p "Username to create (required): " USERNAME
|
||||||
if [[ -z "$USERNAME" ]]; then
|
if [[ -z "$USERNAME" ]]; then
|
||||||
echo "Error: Username is required."
|
echo "Error: Username is required."
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Prompt for public key
|
|
||||||
read -p "Paste the SSH public key: " PUBKEY
|
read -p "Paste the SSH public key: " PUBKEY
|
||||||
if [[ -z "$PUBKEY" ]]; then
|
if [[ -z "$PUBKEY" ]]; then
|
||||||
echo "Error: Public key is required."
|
echo "Error: Public key is required."
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Prompt for optional groups
|
|
||||||
read -p "Comma-separated groups to add (e.g. sudo,docker): " GROUPS
|
read -p "Comma-separated groups to add (e.g. sudo,docker): " GROUPS
|
||||||
GROUPS=$(echo "$GROUPS" | tr -d '[:space:]') # remove all whitespace
|
|
||||||
IFS=',' read -ra GROUP_ARRAY <<< "$GROUPS"
|
|
||||||
|
|
||||||
# Check if user exists
|
# Create the user if not exists
|
||||||
if id "$USERNAME" &>/dev/null; then
|
if id "$USERNAME" &>/dev/null; then
|
||||||
echo "[*] User '$USERNAME' already exists. Skipping creation."
|
echo "[*] User '$USERNAME' already exists. Skipping creation."
|
||||||
else
|
else
|
||||||
@@ -30,27 +25,22 @@ else
|
|||||||
useradd -m -s /bin/bash "$USERNAME"
|
useradd -m -s /bin/bash "$USERNAME"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Add user to groups
|
# Add user to groups if any were entered
|
||||||
for group in "${GROUP_ARRAY[@]}"; do
|
if [[ -n "$GROUPS" ]]; then
|
||||||
if [[ -n "$group" ]]; then
|
echo "[+] Adding $USERNAME to groups: $GROUPS"
|
||||||
if getent group "$group" > /dev/null; then
|
usermod -aG "$GROUPS" "$USERNAME"
|
||||||
echo "[+] Adding $USERNAME to group: $group"
|
fi
|
||||||
usermod -aG "$group" "$USERNAME"
|
|
||||||
else
|
|
||||||
echo "[!] Warning: Group '$group' does not exist. Skipping."
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
|
|
||||||
# Setup SSH access
|
# Setup SSH
|
||||||
AUTHORIZED_KEYS="/home/$USERNAME/.ssh/authorized_keys"
|
SSH_DIR="/home/$USERNAME/.ssh"
|
||||||
mkdir -p "$(dirname "$AUTHORIZED_KEYS")"
|
AUTHORIZED_KEYS="$SSH_DIR/authorized_keys"
|
||||||
|
mkdir -p "$SSH_DIR"
|
||||||
touch "$AUTHORIZED_KEYS"
|
touch "$AUTHORIZED_KEYS"
|
||||||
chmod 700 "$(dirname "$AUTHORIZED_KEYS")"
|
chmod 700 "$SSH_DIR"
|
||||||
chmod 600 "$AUTHORIZED_KEYS"
|
chmod 600 "$AUTHORIZED_KEYS"
|
||||||
chown -R "$USERNAME:$USERNAME" "/home/$USERNAME/.ssh"
|
chown -R "$USERNAME:$USERNAME" "$SSH_DIR"
|
||||||
|
|
||||||
# Add key if not already present
|
# Add SSH key if not present
|
||||||
if grep -Fxq "$PUBKEY" "$AUTHORIZED_KEYS"; then
|
if grep -Fxq "$PUBKEY" "$AUTHORIZED_KEYS"; then
|
||||||
echo "[*] Public key already present. Skipping."
|
echo "[*] Public key already present. Skipping."
|
||||||
else
|
else
|
||||||
@@ -58,8 +48,7 @@ else
|
|||||||
echo "[+] Public key added."
|
echo "[+] Public key added."
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Done
|
|
||||||
echo
|
echo
|
||||||
echo "[✓] User '$USERNAME' setup complete."
|
echo "[✓] User '$USERNAME' setup complete."
|
||||||
[[ ${#GROUP_ARRAY[@]} -gt 0 ]] && echo "[✓] Groups added: ${GROUP_ARRAY[*]}"
|
[[ -n "$GROUPS" ]] && echo "[✓] Groups added: $GROUPS"
|
||||||
echo "[✓] SSH access configured."
|
echo "[✓] SSH access configured."
|
||||||
|
|||||||
Reference in New Issue
Block a user