]> git.ipfire.org Git - thirdparty/dehydrated.git/commitdiff
Don't require sudo before we know we really need it
authorDaniel Molkentin <dmolkentin@suse.com>
Tue, 1 Sep 2020 22:00:15 +0000 (00:00 +0200)
committerLukas Schauer <lukas@schauer.so>
Sun, 27 Sep 2020 20:26:20 +0000 (22:26 +0200)
Fixes #665

dehydrated

index 7eef30a4593fde909c62ae96bcb7a3ba16da9c66..490412bbdb900e3ba3e466b0b19b95cd3fe95b38 100755 (executable)
@@ -395,16 +395,19 @@ load_config() {
   # Check for missing dependencies
   check_dependencies
 
+  has_sudo() {
+    command -v sudo > /dev/null 2>&1 || _exiterr "DEHYDRATED_USER set but sudo not available. Please install sudo."
+  }
+
   # Check if we are running & are allowed to run as root
   if [[ -n "$DEHYDRATED_USER" ]]; then
-    command -v sudo > /dev/null 2>&1 || _exiterr "DEHYDRATED_USER set but sudo not available. Please install sudo."
     command -v getent > /dev/null 2>&1 || _exiterr "DEHYDRATED_USER set but getent not available. Please install getent."
 
     TARGET_UID="$(getent passwd "${DEHYDRATED_USER}" | cut -d':' -f3)" || _exiterr "DEHYDRATED_USER ${DEHYDRATED_USER} is invalid"
     if [[ -z "${DEHYDRATED_GROUP}" ]]; then
       if [[ "${EUID}" != "${TARGET_UID}" ]]; then
         echo "# INFO: Running $0 as ${DEHYDRATED_USER}"
-        exec sudo -u "${DEHYDRATED_USER}" "${0}" ${ORIGARGS}
+        has_sudo && exec sudo -u "${DEHYDRATED_USER}" "${0}" ${ORIGARGS}
       fi
     else
       TARGET_GID="$(getent group "${DEHYDRATED_GROUP}" | cut -d':' -f3)" || _exiterr "DEHYDRATED_GROUP ${DEHYDRATED_GROUP} is invalid"
@@ -414,7 +417,7 @@ load_config() {
       fi
       if [[ "${EUID}" != "${TARGET_UID}" ]] || [[ "${EGID}" != "${TARGET_GID}" ]]; then
         echo "# INFO: Running $0 as ${DEHYDRATED_USER}/${DEHYDRATED_GROUP}"
-        exec sudo -u "${DEHYDRATED_USER}" -g "${DEHYDRATED_GROUP}" "${0}" ${ORIGARGS}
+        has_sudo && exec sudo -u "${DEHYDRATED_USER}" -g "${DEHYDRATED_GROUP}" "${0}" ${ORIGARGS}
       fi
     fi
   elif [[ -n "${DEHYDRATED_GROUP}" ]]; then