Bash

Create User With Sensible Defaults

admin by @admin ADMIN
Jun 17, 2026
May 31, 2026
Public
0 0 up · 0 down Sign in to vote
Provision a new user account with a home directory, default shell, and sudo membership. Idempotent — re-running on an existing user is a no-op.
Bash
Raw
add_user() {
    local user="$1"
    if id "$user" &>/dev/null; then
        echo "User $user already exists"
        return 0
    fi
    useradd -m -s /bin/bash "$user"
    passwd -e "$user"                      # force password change on first login
    usermod -aG sudo "$user"               # add to sudoers group
    mkdir -p "/home/$user/.ssh"
    chmod 700 "/home/$user/.ssh"
    chown -R "$user:$user" "/home/$user/.ssh"
    echo "User $user created"
}

# Provision SSH key for the new user
add_ssh_key() {
    local user="$1" key="$2"
    echo "$key" >> "/home/$user/.ssh/authorized_keys"
    chmod 600 "/home/$user/.ssh/authorized_keys"
    chown "$user:$user" "/home/$user/.ssh/authorized_keys"
}

add_user alice
add_ssh_key alice "ssh-ed25519 AAAAC3NzaC... alice@laptop"
Tags

Save your own code snippets

Create a free account and build your private vault. Share publicly whenever you want.