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>
This commit is contained in:
@@ -8,6 +8,16 @@ Create_user(){
|
||||
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"
|
||||
@@ -16,18 +26,19 @@ Create_user(){
|
||||
read -r dgroups
|
||||
|
||||
if [ "${dgroups}" = "1" ];then
|
||||
addgroups="power, wheel, optical network, video, audio, storage"
|
||||
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
|
||||
echo "${addgroups}"
|
||||
read -r -n 1 -p "wait"
|
||||
|
||||
useradd -m -g users -G "${addgroups}" -s /bin/bash "${uname}"
|
||||
passwd "${uname}"
|
||||
passwd "${uname}"
|
||||
echo
|
||||
|
||||
if [ -d /home/"${uname}" ];then
|
||||
@@ -42,11 +53,22 @@ Remove_user(){
|
||||
echo -n "Username to delete: "
|
||||
read -r duser
|
||||
|
||||
userdel ${duser}
|
||||
if [ -d /home/${duser} ];then
|
||||
rm -R /home/${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
|
||||
echo "User deletion failed"
|
||||
rm -R /home/"${duser}"
|
||||
echo "User ${duser} deleted"
|
||||
fi
|
||||
}
|
||||
main(){
|
||||
@@ -64,10 +86,13 @@ main(){
|
||||
|
||||
if [ "${choice}" = "1" ];then
|
||||
Create_user
|
||||
elif [ "${choice}" = "2" ];then
|
||||
Remove_user
|
||||
else
|
||||
echo "no"
|
||||
echo "Invalid option"
|
||||
fi
|
||||
done
|
||||
read -r -n 1 -p "Press any key to continue..."
|
||||
done
|
||||
}
|
||||
|
||||
case "$1" in
|
||||
|
||||
Reference in New Issue
Block a user