From 5c33d2292520c73f8cba89efb91284dc71366137 Mon Sep 17 00:00:00 2001 From: Darko Poljak Date: Fri, 15 Apr 2016 10:50:51 +0200 Subject: [PATCH] Prefer su over sudo. --- cdist/conf/explorer/sucmd | 40 +++++++++++++++++++++++++++++---------- 1 file changed, 30 insertions(+), 10 deletions(-) diff --git a/cdist/conf/explorer/sucmd b/cdist/conf/explorer/sucmd index 1f16666d..bd4343d2 100644 --- a/cdist/conf/explorer/sucmd +++ b/cdist/conf/explorer/sucmd @@ -19,27 +19,47 @@ # # This explorer returns script code string for running a command with su # or sudo, whichever it founds. If searches the command in the order of -# first sudo and then su if sudo is not found. -# If no sudo nor su is found then it returns string script code to run +# first su and then sudo if su is not found. +# If no su nor sudo is found then it returns string script code to run # bare command. # It uses two arguments, first user and the second command to run. # If the result string is assigned to foo it is used as: # $ $foo user command # -# first check sudo -which sudo > /dev/null 2>&1 -if [ $? -eq 0 ] -then - func='f() { sudo -H -u $1 $2; }' -else - # if no sudo then check su +sudo_func() { + which sudo > /dev/null 2>&1 + if [ $? -eq 0 ] + then + func='f() { sudo -H -u $1 $2; }' + retval=0 + else + func='' + retval=1 + fi + return $retval +} +su_func() { which su > /dev/null 2>&1 if [ $? -eq 0 ] then func='f() { su -c "$2" $1 ; }' + retval=0 else - # if no sudo nor su then run bare command + func='' + retval=1 + fi + return $retval +} +# first check su +su_func +if [ $? -ne 0 ] +then + # if no su then check sudo + sudo_func + if [ $? -ne 0 ] + then + # if no su nor sudo then run bare command func='f() { $2 ; }' fi fi