Add sudoers configuration
This commit is contained in:
parent
e21864990d
commit
4483ba3ecc
|
@ -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}"
|
||||||
|
|
Loading…
Reference in New Issue