> ## Documentation Index
> Fetch the complete documentation index at: https://docs.ahmadraza.in/llms.txt
> Use this file to discover all available pages before exploring further.

# Useradd

# Introduction

This Bash script automates the process of creating a new user on a Linux server, setting up SSH access for the user, and optionally creating a directory for web content. This guide explains each part of the script and provides instructions for its use.

## Script Overview

The script performs the following tasks:

1. Prompts for the new user's name and creates the user.
2. Sets up SSH access for the user by adding the provided SSH key.
3. Optionally creates a directory for the user in the web server's root directory.

## Script

```bash theme={null}
#!/bin/bash
## example uat user add script 

# Prompt for the new user's name
echo "Enter user's name"
read first_name

# Create the new user
sudo adduser $first_name
echo "User added: $first_name"

# Create the .ssh directory in the new user's home directory
mkdir -p /home/$first_name/.ssh/

# Prompt for the user's SSH public key
echo "Enter your SSH key"
read enter_ssh_key
echo

# Add the SSH key to the authorized_keys file
echo $enter_ssh_key >> /home/$first_name/.ssh/authorized_keys

# Set appropriate permissions for the .ssh directory and authorized_keys file
chmod -R 700 /home/$first_name/.ssh/
chmod -R 644 /home/$first_name/.ssh/authorized_keys

# Change ownership of the .ssh directory and its contents to the new user
chown -R $first_name:$first_name /home/$first_name/.ssh

# Optional: Create a directory for the user in the web server's root directory
mkdir -p /var/www/html/$first_name
chown -R $first_name:$first_name /var/www/html/$first_name
```

## Script Details

1. **Prompt for User Name**

   The script asks the user to input the name of the new user. This name will be used to create the user and set up the home directory.

   ```bash theme={null}
   echo "Enter user's name"
   read first_name
   ```

2. **Create the New User**

   The `adduser` command is used to create a new user with the provided name.

   ```bash theme={null}
   sudo adduser $first_name
   ```

3. **Create .ssh Directory**

   The script creates the `.ssh` directory in the new user's home directory if it does not already exist.

   ```bash theme={null}
   mkdir -p /home/$first_name/.ssh/
   ```

4. **Prompt for SSH Key**

   The script prompts the user to enter their SSH public key, which will be added to the `authorized_keys` file to enable SSH access.

   ```bash theme={null}
   echo "Enter your SSH key"
   read enter_ssh_key
   ```

5. **Add SSH Key to Authorized Keys**

   The entered SSH key is appended to the `authorized_keys` file in the `.ssh` directory.

   ```bash theme={null}
   echo $enter_ssh_key >> /home/$first_name/.ssh/authorized_keys
   ```

6. **Set Permissions**

   The script sets appropriate permissions for the `.ssh` directory and the `authorized_keys` file to ensure security:

   * `.ssh` directory: `700` (read, write, and execute for owner only)
   * `authorized_keys` file: `644` (read and write for owner, read-only for others)

   ```bash theme={null}
   chmod -R 700 /home/$first_name/.ssh/
   chmod -R 644 /home/$first_name/.ssh/authorized_keys
   ```

7. **Change Ownership**

   The ownership of the `.ssh` directory and its contents is changed to the new user.

   ```bash theme={null}
   chown -R $first_name:$first_name /home/$first_name/.ssh
   ```

8. **Optional: Create Web Directory**

   The script optionally creates a directory for the user in the web server's root directory and sets the appropriate ownership. This step is useful for web applications.

   ```bash theme={null}
   mkdir -p /var/www/html/$first_name
   chown -R $first_name:$first_name /var/www/html/$first_name
   ```

## Conclusion

This script streamlines the process of creating a new user, setting up SSH access, and preparing a web directory. Modify the script as needed to fit your specific requirements.

> This guide provides a clear explanation of each step in the Bash script, helping users understand and utilize it effectively.
