diff --git a/documents/references.md b/documents/references.md index bc9c8816728390e3176c06024c9634fa37ea7ab7..a779f9af0651656b2f52213a14485857bf6cab3e 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 5dd16f74a063d67c83f3229cabf3dcd9a515e104..237d9b365f6766758ee7e754a246c977bb6b5d24 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 }