11#! /bin/bash
22
3+ # Ensure the script is run with root privileges
4+ if [[ $EUID -ne 0 ]]; then
5+ echo " This script must be run as root. Use sudo."
6+ exit 1
7+ fi
8+
39echo " Creating a new user account..."
410
511# Loop until a valid username is entered
6- echo " Enter a username (only letters, numbers, underscores, or dashes):"
712while true ; do
8- read -rp " Please Enter a new username: " newuser
13+ read -rp " Enter a username (letters, numbers, underscores, dashes) : " newuser
914
10- # Check username (allowing lowercase, uppercase, numbers, underscores, and dashes)
15+ # Validate username
1116 if [[ ! " $newuser " =~ ^[A-Za-z_][A-Za-z0-9_-]* $ ]]; then
1217 echo " Invalid username. Use only letters, numbers, underscores, or dashes."
1318 continue
@@ -19,7 +24,6 @@ while true; do
1924 continue
2025 fi
2126
22- # If both checks pass, break out of loop
2327 break
2428done
2529
@@ -33,28 +37,26 @@ while true; do
3337 if [[ " $password " == " $password2 " ]]; then
3438 break
3539 else
36- echo " Passwords do not match. Please try again."
40+ echo " Passwords do not match. Try again."
3741 fi
3842done
3943
40- # Create user first (without password)
41- sudo adduser --disabled-password --gecos " " \
42- --groups plugdev,dialout,video,audio,input \
43- " $newuser " & > /dev/null
44+ # Create the user with home directory and groups
45+ useradd -m -G plugdev,dialout,video,audio,input " $newuser "
4446
45- # Set the password
46- echo " $newuser :$password " | sudo chpasswd || {
47- echo " Failed to set password with chpasswd. Trying interactive passwd..."
48- sudo passwd " $newuser "
49- }
47+ # Set the password safely
48+ echo " $newuser :$password " | chpasswd
5049
51- # Set the entered password
52- echo " $newuser :$password " | sudo chpasswd
50+ # Verify password was set
51+ if [ $? -eq 0 ]; then
52+ echo " Password set successfully."
53+ else
54+ echo " Failed to set password! You may need to run 'sudo passwd $newuser '"
55+ fi
5356
5457# Completion messages
5558echo " User '$newuser ' has been created."
56- echo " Password has been set by the user."
5759echo " Home directory: /home/$newuser "
5860echo " You can now SSH using: ssh $newuser @clemsoncure.duckdns.org"
5961
60- exit
62+ exit 0
0 commit comments