From dfc1aab6764264963c2d9fb39a16d16a3b925c12 Mon Sep 17 00:00:00 2001 From: Brandon Rodriguez <brodriguez8774@gmail.com> Date: Sat, 10 Oct 2020 05:01:14 -0400 Subject: [PATCH] Finish check_user functions --- documents/references.md | 3 +++ utils.sh | 55 ++++++++++++++++++++++++++++++++--------- 2 files changed, 46 insertions(+), 12 deletions(-) diff --git a/documents/references.md b/documents/references.md index bc9c881..a779f9a 100644 --- a/documents/references.md +++ b/documents/references.md @@ -36,6 +36,9 @@ Various references used in project. ### Get User's name <https://stackoverflow.com/a/19306837> +### Check for Root User +<https://stackoverflow.com/a/18216122> + ### Text Manipulation #### Change Output Color <https://stackoverflow.com/a/5947802> diff --git a/utils.sh b/utils.sh index 5dd16f7..237d9b3 100755 --- a/utils.sh +++ b/utils.sh @@ -35,25 +35,41 @@ return_value="" ## function check_is_user () { - # Check number of passed function args. Continue. + # Check number of passed function args. if [[ $# == 1 ]] then - + # Expected number of args passed. Continue. local username=$USER local check_user=$1 - echo "user is ${username}." - echo "check_user is ${check_user}" + # Determine user to check for. + to_lower ${check_user} + if [[ "${return_value}" == "root" || "${return_value}" == "sudo" ]] + then + # Special logic for checking if "sudo"/"root" user. + if [[ "$EUID" != 0 ]] + then + echo -e "${text_red}Sudo permissions required. Please run as root.${text_reset}" + exit + fi + else + # Standard logic for all other user checks. + if [[ "${username}" != "${check_user}" ]] + then + echo -e "${text_red}User check (${check_user}) failed. Current user is ${username}.${text_reset}" + exit 1 + fi + fi # Handle for too many args. elif [[ $# > 1 ]] then - echo "Too many args passed. Expected one arg of username to check against." + echo -e "${text_red}Too many args passed. Expected one arg of username to check against.${text_reset}" exit 1 # Handle for too few args. else - echo "Too few args passed. Expected one arg of username to check against." + echo -e "${text_red}Too few args passed. Expected one arg of username to check against.${text_reset}" exit 1 fi } @@ -68,23 +84,38 @@ function check_is_not_user () { # Check number of passed function args. if [[ $# == 1 ]] then - - # Got the expected number of function args. Continue. + # Expected number of args passed. Continue. local username=$USER local check_user=$1 - echo "user is ${username}." - echo "check_user is ${check_user}" + # Determine user to check for. + to_lower ${check_user} + if [[ "${return_value}" == "root" || "${return_value}" == "sudo" ]] + then + # Special logic for checking if "sudo"/"root" user. + if [[ "$EUID" == 0 ]] + then + echo -e "${text_red}Standard permissions required. Please run as non-root user.${text_reset}" + exit + fi + else + # Standard logic for all other user checks. + if [[ "${username}" == "${check_user}" ]] + then + echo -e "${text_red}Not-user check (${check_user}) failed. Current user is ${username}.${text_reset}" + exit 1 + fi + fi # Handle for too many args. elif [[ $# > 1 ]] then - echo "Too many args passed. Expected one arg of username to check against." + echo -e "${text_red}Too many args passed. Expected one arg of username to check against.${text_reset}" exit 1 # Handle for too few args. else - echo "Too few args passed. Expected one arg of username to check against." + echo -e "${text_red}Too few args passed. Expected one arg of username to check against.${text_reset}" exit 1 fi } -- GitLab