Linux
BASH
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

#!/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.

    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.

    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.

    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.

    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.

    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)
    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.

    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.

    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.


🧙 AI Wizard - Instant Page Insights

Click the button below to analyze this page.
Get an AI-generated summary and key insights in seconds.
Powered by Perplexity AI!