]> CyberLeo.Net >> Repos - CDN/shlib.git/blob - lib/sh/reexec.sh
sh/suexec: deprecate reexec and switch to suexec; that name fits better
[CDN/shlib.git] / lib / sh / reexec.sh
1 # reexec library script
2
3 if [ -z "${__reexec_sh_loaded}" ]
4 then
5   __reexec_sh_loaded=yes
6   echo "**** Deprecated: Use suexec instead ****" >&2
7
8   # exec a command via sudo/su
9   # Can be used to reexec this process, if run like this from the top-level:
10   #  reexec "${0}" "${@}"
11   # Specify target user name with -u as the first parameter
12   #  reexec -u user "${0}" "${@}"
13   reexec() {
14     user="root"
15     # Set name if user provided
16     if [ "${1}" = "-u" ]
17     then
18       user="${2}"
19       shift 2
20     fi
21     
22     # reexec if needed
23     if [ "$(id -un)" != "${user}" ]
24     then
25       # Find a su/sudo
26       cmd="sudo -u ${user}"
27       [ -x "$(which sudo 2>/dev/null)" ] || cmd="su ${user} -c"
28       exec ${cmd} "${@}"
29     fi
30   }
31 fi