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>
103 lines
1.9 KiB
Bash
Executable File
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
|