Print this page
Kayak uses sudo with variable set (and sudoers set)
@@ -26,10 +26,20 @@
#
# We have to build as root to manipulate ZFS datasets
export ROOT_OK=yes
+if [[ "$UID" != 0 && ! -z $KAYAK_SUDO_BUILD ]]; then
+ # Run sudo BEFORE functions.sh eats the parameters.
+ # Installing OmniOS-on-demand should create an entry in /etc/sudoers.d/
+ # to cover running this script under sudo.
+ echo "Running again under sudo, currently UID = $UID, EUID = $EUID."
+ export OLDUSER=`whoami`
+ export KAYAK_SUDO_BUILD
+ exec sudo -n ./build.sh $@
+fi
+
# Load support functions
. ../../lib/functions.sh
if [[ "$UID" != "0" ]]; then
logerr "--- This script needs to be run as root."
@@ -101,10 +111,16 @@
prep_build
logmsg "Now building $PKG"
build_server
make_package kayak.mog
clean_up
+# Do extra cleaning up if we got run under sudo from ourselves.
+if [[ -z `echo $RPATH | grep http://` ]]; then
+ OLDUSER=`ls -ltd $RPATH | awk '{print $3}'`
+ logmsg "--- Re-chowning $RPATH to user $OLDUSER"
+ chown -R $OLDUSER $RPATH
+fi
PKG=system/install/kayak-kernel
SUMMARY="Kayak - network installer (kernel, miniroot and pxegrub)"
PKGE=$(url_encode $PKG)
PKGD=${PKGE//%/_}
@@ -113,8 +129,14 @@
logmsg "Now building $PKG"
build_miniroot
make_package
clean_up
+# Do extra cleaning up if we got run under sudo from ourselves.
+if [[ -z `echo $RPATH | grep http://` ]]; then
+ OLDUSER=`ls -ltd $RPATH | awk '{print $3}'`
+ logmsg "--- Re-chowning $RPATH to user $OLDUSER"
+ chown -R $OLDUSER $RPATH
+fi
# Vim hints
# vim:ts=4:sw=4:et: