Skip to content
Series 4: Ep 6: Bash Scripting Essentials episode artwork

EPISODE · Oct 24, 2025 · 12 MIN

Series 4: Ep 6: Bash Scripting Essentials

from Learn As I Learn - Technology, Product and Cybersecurity · host Akanksha Pathak

Master automation in Linux with Bash scripts! Discover how to create and debug scripts for user setup, including creating new users, setting passwords, adding them to groups, configuring SSH key-based login, and setting password expiry. We’ll also cover testing and verification. Script: #!/bin/bash #Variables USERNAME="Jason" # User account name PASSWORD="P@ssw0rd" # User password GROUP="developers" # Custom group name SSH_DIR="/home/$USERNAME/.ssh" PUB_KEY="ssh-rsa AAAAB3...your-public-key... user@kali" # Replace with your actual public key #Step 1: Check if user already exists if id "$USERNAME" &>/dev/null; then echo "Error: User '$USERNAME' already exists!" exit 1 fi #Step 2: Create user and set password echo "Creating user '$USERNAME'..." useradd -m -s /bin/bash "$USERNAME" if [ $? -ne 0 ]; then echo "Error: Failed to create user '$USERNAME'" exit 1 fi echo "$USERNAME:$PASSWORD" | chpasswd echo "Password set for user '$USERNAME'." #Step 3: Add user to sudoers echo "Granting sudo access to '$USERNAME'..." usermod -aG sudo "$USERNAME" if [ $? -ne 0 ]; then echo "Error: Failed to add '$USERNAME' to sudoers" exit 1 fi #Step 4: Create custom group and add user echo "Creating group '$GROUP' and adding user..." groupadd "$GROUP" 2>/dev/null usermod -aG "$GROUP" "$USERNAME" if [ $? -ne 0 ]; then echo "Error: Failed to add '$USERNAME' to group '$GROUP'" exit 1 fi #Step 5: Setup SSH key-based authentication echo "Setting up SSH key-based authentication..." mkdir -p "$SSH_DIR" echo "$PUB_KEY" > "$SSH_DIR/authorized_keys" chmod 600 "$SSH_DIR/authorized_keys" chmod 700 "$SSH_DIR" chown -R "$USERNAME:$USERNAME" "$SSH_DIR" if [ $? -ne 0 ]; then echo "Error: Failed to set up SSH keys" exit 1 fi echo "SSH keys configured for '$USERNAME'." #Step 6: Set password expiry to 30 days echo "Setting password expiry policy for '$USERNAME'..." chage -M 30 "$USERNAME" if [ $? -ne 0 ]; then echo "Error: Failed to set password expiry" exit 1 fi #Step 7: Log activity to /var/log/user_setup.log LOG_FILE="/var/log/user_setup.log" echo "$(date) - User '$USERNAME' created and configured" >> "$LOG_FILE" if [ $? -ne 0 ]; then echo "Error: Failed to write log to $LOG_FILE" exit 1 fi #Step 8: Confirmation Message echo "User '$USERNAME' created and configured successfully!"

Episode metadata supplied by the publisher feed · Published Oct 24, 2025

Embed this episode

Ready to play

Series 4: Ep 6: Bash Scripting Essentials

0:00 12:26

No transcript for this episode yet

We transcribe on demand. Request one and we'll notify you when it's ready — usually under 10 minutes.

No similar episodes found.

Frequently Asked Questions

How long is this episode of Learn As I Learn - Technology, Product and Cybersecurity?

This episode is 12 minutes long.

When was this Learn As I Learn - Technology, Product and Cybersecurity episode published?

This episode was published on October 24, 2025.

Can I download this Learn As I Learn - Technology, Product and Cybersecurity episode?

Yes. Use the download control on the episode player to save the publisher-provided media file.
URL copied to clipboard!