Add sudoers configuration

This commit is contained in:
Jeremy Gardais 2018-05-28 17:52:23 +02:00
parent e21864990d
commit 4483ba3ecc
Signed by: jegardai
GPG Key ID: E759BAA22501AF32
1 changed files with 41 additions and 10 deletions

View File

@ -13,6 +13,8 @@ EUID=$(id -u)
BACKUP_USER_LOGIN="backup" BACKUP_USER_LOGIN="backup"
#BACKUP_USER_LOGIN="backuppc" #BACKUP_USER_LOGIN="backuppc"
SUDOERS_LINE_REGEXP="${BACKUP_USER_LOGIN}.*ALL.*=.*(ALL:ALL).*NOEXEC:NOPASSWD:.*/usr/bin/rsync" SUDOERS_LINE_REGEXP="${BACKUP_USER_LOGIN}.*ALL.*=.*(ALL:ALL).*NOEXEC:NOPASSWD:.*/usr/bin/rsync"
SUDOERS_LINE="${BACKUP_USER_LOGIN} ALL=(ALL:ALL) NOEXEC:NOPASSWD: /usr/bin/rsync"
SUDOERS_FILE="/etc/sudoers.d/backuppc_noexec"
# ]]] # ]]]
# Functions [[[ # Functions [[[
@ -21,10 +23,10 @@ is_user() ## [[[
user_to_check="${1}" user_to_check="${1}"
if [ "$(id -- "${user_to_check}" 2> /dev/null)" ] ; then if [ "$(id -- "${user_to_check}" 2> /dev/null)" ] ; then
[ "${DEBUG}" -eq "0" ] && printf '\e[1;35m%-6s\e[m\n' "DEBUG: Function ${user_to_check} user is available." [ "${DEBUG}" -eq "0" ] && printf '\e[1;35m%-6s\e[m\n' "DEBUG: Function is_user() ${user_to_check} user is available."
return "${SUCCESS}" return "${SUCCESS}"
else else
printf '\e[1;31m%-6s\e[m\n' "ERROR: Function ${user_to_check} user is unavailable." printf '\e[1;31m%-6s\e[m\n' "ERROR: Function is_user() ${user_to_check} user is unavailable."
exit "${ERROR}" exit "${ERROR}"
fi fi
} }
@ -35,14 +37,33 @@ is_sudoers_line() ## [[[
if grep -Rq -- "${line_to_check}" /etc/sudoers.d/ if grep -Rq -- "${line_to_check}" /etc/sudoers.d/
then then
[ "${DEBUG}" -eq "0" ] && printf '\e[1;35m%-6s\e[m\n' "DEBUG: Function ${line_to_check} line is available in sudo configuration." [ "${DEBUG}" -eq "0" ] && printf '\e[1;35m%-6s\e[m\n' "DEBUG: Function is_sudoers_line() ${line_to_check} line is available in sudo configuration."
return "${SUCCESS}" return "${SUCCESS}"
else else
[ "${DEBUG}" -eq "0" ] && printf '\e[1;35m%-6s\e[m\n' "DEBUG: Function ${line_to_check} was not found in sudo configuration." [ "${DEBUG}" -eq "0" ] && printf '\e[1;35m%-6s\e[m\n' "DEBUG: Function is_sudoers_line() ${line_to_check} was not found in sudo configuration."
return "${ERROR}" return "${ERROR}"
fi fi
} }
## ]]] ## ]]]
add_sudoers_conf() ## [[[
{
sudoers_conf="${1}"
sudoers_file="${2}"
## Empty sudoers file
true > "${sudoers_file}"
## Set sudoers configuration for BackupPC
cat << EOF >> "${sudoers_file}"
# This file was generated by fix_backuppc_linux_sudo.sh script.
# Permissions for BackupPC - Backup tool
${sudoers_conf}
EOF
[ "${DEBUG}" -eq "0" ] && printf '\e[1;35m%-6s\e[m\n' "DEBUG: Function add_sudoers_conf() — ${sudoers_file} was modified."
}
## ]]]
# ]]] # ]]]
# Test permissions [[[ # Test permissions [[[
@ -53,17 +74,27 @@ if [ "${EUID}" -ne "0" ]; then
fi fi
# ]]] # ]]]
# Ensure the backup user is available
is_user "${BACKUP_USER_LOGIN}" is_user "${BACKUP_USER_LOGIN}"
if is_sudoers_line "${SUDOERS_LINE_REGEXP}" # Test if sudoers conf is already set
if ! is_sudoers_line "${SUDOERS_LINE_REGEXP}"
then then
[ "${DEBUG}" -eq "0" ] && printf '\e[1;35m%-6s\e[m\n' "DEBUG: ${SUDOERS_LINE_REGEXP} is already set in sudo configuration."
printf '%b\n' "Your configuration is set up."
exit 0
else
[ "${DEBUG}" -eq "0" ] && printf '\e[1;35m%-6s\e[m\n' "DEBUG: First try — ${SUDOERS_LINE_REGEXP} was not found in sudo configuration." [ "${DEBUG}" -eq "0" ] && printf '\e[1;35m%-6s\e[m\n' "DEBUG: First try — ${SUDOERS_LINE_REGEXP} was not found in sudo configuration."
## Add sudoers configuration
add_sudoers_conf "${SUDOERS_LINE}" "${SUDOERS_FILE}"
## Test if sudoers conf was successfully modified
if ! is_sudoers_line "${SUDOERS_LINE_REGEXP}"
then
[ "${DEBUG}" -eq "0" ] && printf '\e[1;35m%-6s\e[m\n' "DEBUG: Second try — ${SUDOERS_LINE_REGEXP} was not found in sudo configuration."
printf '\e[1;31m%-6s\e[m\n' "ERROR: The sudo configuration was not successfully modified."
exit "${ERROR}"
fi
fi fi
[ "${DEBUG}" -eq "0" ] && printf '\e[1;35m%-6s\e[m\n' "DEBUG: End" [ "${DEBUG}" -eq "0" ] && printf '\e[1;35m%-6s\e[m\n' "DEBUG: End"
exit 0 printf '%b\n' "Your configuration is set up."
exit "${SUCCESS}"