Files
jitty-scripts/mkuser.sh
T
molluskandClaude Opus 5.5 6064b6842d mkuser.sh: validate input and wire up user removal
Check username format and existence before adding or deleting, fix the
Arch default group list, remove the debug pause, and make menu option 2
call Remove_user.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-29 14:22:37 -04:00

103 lines
1.9 KiB
Bash
Executable File

#!/bin/bash
Create_user(){
echo
echo -n "Username: "
read -r uname
if [[ ! "${uname}" =~ ^[a-z_][a-z0-9_-]*[$]?$ ]]; then
echo "Error: Invalid username format (use lowercase letters, numbers, hyphens, underscores)"
return 1
fi
if id "${uname}" >/dev/null 2>&1; then
echo "Error: User '${uname}' already exists"
return 1
fi
echo "Additional Groups: "
echo
echo "[1] - Arch Linux Defaults"
echo "[2] - Void Linux Defaults"
echo "[3] - Custom"
read -r dgroups
if [ "${dgroups}" = "1" ];then
addgroups="power,wheel,optical,network,video,audio,storage"
elif [ "${dgroups}" = "2" ];then
addgroups="disk,wheel,storage,audio,video,optical,lp,network,dbus,xbuilder"
elif [ "${dgroups}" = "3" ];then
echo -n "Enter desired groups (comma separated): "
read -r custgroups
addgroups="${custgroups}"
else
addgroups=""
fi
useradd -m -g users -G "${addgroups}" -s /bin/bash "${uname}"
passwd "${uname}"
echo
if [ -d /home/"${uname}" ];then
echo "User ${uname} created"
else
echo "User creation failed"
fi
}
Remove_user(){
echo
echo -n "Username to delete: "
read -r duser
if [[ ! "${duser}" =~ ^[a-z_][a-z0-9_-]*[$]?$ ]]; then
echo "Error: Invalid username format"
return 1
fi
if ! id "${duser}" >/dev/null 2>&1; then
echo "Error: User '${duser}' does not exist"
return 1
fi
userdel "${duser}"
if [ ! -d /home/"${duser}" ];then
echo "User ${duser} deleted"
else
rm -R /home/"${duser}"
echo "User ${duser} deleted"
fi
}
main(){
while true;do
clear
echo
echo "[1] - Add User"
echo "[2] - Remove User"
echo
echo -n "Choose: "
read -r choice
if [ "${choice}" = "1" ];then
Create_user
elif [ "${choice}" = "2" ];then
Remove_user
else
echo "Invalid option"
fi
read -r -n 1 -p "Press any key to continue..."
done
}
case "$1" in
add ) Create_user;;
remove ) Remove_user;;
* ) echo "Usage: mkusr [add | remove]";;
esac