Print this page
Kayak uses sudo with variable set (and sudoers set)

Split Close
Expand all
Collapse all
          --- old/build/kayak/build.sh
          +++ new/build/kayak/build.sh
↓ open down ↓ 20 lines elided ↑ open up ↑
  21   21  # CDDL HEADER END
  22   22  #
  23   23  #
  24   24  # Copyright 2011-2012 OmniTI Computer Consulting, Inc.  All rights reserved.
  25   25  # Use is subject to license terms.
  26   26  #
  27   27  
  28   28  # We have to build as root to manipulate ZFS datasets
  29   29  export ROOT_OK=yes
  30   30  
       31 +if [[ "$UID" != 0 && ! -z $KAYAK_SUDO_BUILD ]]; then
       32 +       # Run sudo BEFORE functions.sh eats the parameters.
       33 +       # Installing OmniOS-on-demand should create an entry in /etc/sudoers.d/
       34 +       # to cover running this script under sudo.
       35 +       echo "Running again under sudo, currently UID = $UID, EUID = $EUID."
       36 +       export OLDUSER=`whoami`
       37 +       export KAYAK_SUDO_BUILD
       38 +       exec sudo -n ./build.sh $@
       39 +fi
       40 +
  31   41  # Load support functions
  32   42  . ../../lib/functions.sh
  33   43  
  34   44  if [[ "$UID" != "0" ]]; then
  35   45      logerr "--- This script needs to be run as root."
  36   46  fi
  37   47  
  38   48  # We also need to be in the global zone to access the kernel binary
  39   49  if [[ `zonename` != "global" ]]; then
  40   50      logerr "--- This script must be run in the global zone."
↓ open down ↓ 55 lines elided ↑ open up ↑
  96  106      popd > /dev/null
  97  107  }
  98  108  
  99  109  init
 100  110  clone_source
 101  111  prep_build
 102  112  logmsg "Now building $PKG"
 103  113  build_server
 104  114  make_package kayak.mog
 105  115  clean_up
      116 +# Do extra cleaning up if we got run under sudo from ourselves.
      117 +if [[ -z `echo $RPATH | grep http://` ]]; then
      118 +       OLDUSER=`ls -ltd $RPATH | awk '{print $3}'`
      119 +       logmsg "--- Re-chowning $RPATH to user $OLDUSER"
      120 +       chown -R $OLDUSER $RPATH
      121 +fi
 106  122  
 107  123  PKG=system/install/kayak-kernel
 108  124  SUMMARY="Kayak - network installer (kernel, miniroot and pxegrub)"
 109  125  PKGE=$(url_encode $PKG)
 110  126  PKGD=${PKGE//%/_}
 111  127  DESTDIR=$DTMPDIR/${PKGD}_pkg
 112  128  DEPENDS_IPS=""
 113  129  
 114  130  logmsg "Now building $PKG"
 115  131  build_miniroot
 116  132  make_package
 117  133  clean_up
      134 +# Do extra cleaning up if we got run under sudo from ourselves.
      135 +if [[ -z `echo $RPATH | grep http://` ]]; then
      136 +       OLDUSER=`ls -ltd $RPATH | awk '{print $3}'`
      137 +       logmsg "--- Re-chowning $RPATH to user $OLDUSER"
      138 +       chown -R $OLDUSER $RPATH
      139 +fi
 118  140  
 119  141  # Vim hints
 120  142  # vim:ts=4:sw=4:et:
    
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX