openpkg/etc.usrgrp.sh

Thu, 04 Oct 2012 20:30:05 +0200

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Thu, 04 Oct 2012 20:30:05 +0200
changeset 715
c10fb90893b9
permissions
-rw-r--r--

Correct out of date build configuration, porting to Solaris 11 network
link infrastructure and new libpcap logic. This additionally allows for
device drivers in subdirectories of /dev. Correct packaged nmap
personalities and signatures to work out of the box. Finally, hack
arpd logic to properly close sockets and quit on TERM by repeating
signaling in the run command script. Sadly, all this fails to correct
the run time behaviour of honeyd which fails to bind to the IP layer.

     1 #!/bin/sh
     2 ##
     3 ##  etc.usrgrp.sh -- user/group name/id determination
     4 ##  Copyright (c) 2000-2012 OpenPKG GmbH <http://openpkg.com/>
     5 ##
     6 ##  This software is property of the OpenPKG GmbH, DE MUC HRB 160208.
     7 ##  All rights reserved. Licenses which grant limited permission to use,
     8 ##  copy, modify and distribute this software are available from the
     9 ##  OpenPKG GmbH.
    10 ##
    11 ##  THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESSED OR IMPLIED
    12 ##  WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
    13 ##  MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
    14 ##  IN NO EVENT SHALL THE AUTHORS AND COPYRIGHT HOLDERS AND THEIR
    15 ##  CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
    16 ##  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
    17 ##  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
    18 ##  USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
    19 ##  ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
    20 ##  OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
    21 ##  OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    22 ##  SUCH DAMAGE.
    23 ##
    25 #   command line parameters (defaults)
    26 help=0
    27 usr='';  grp=''
    28 susr=''; sgrp=''
    29 musr=''; mgrp=''
    30 rusr=''; rgrp=''
    31 nusr=''; ngrp=''
    32 suid=''; sgid=''
    33 muid=''; mgid=''
    34 ruid=''; rgid=''
    35 nuid=''; ngid=''
    37 #   parse command line options
    38 for opt
    39 do
    40     case $opt in
    41         -*=*) arg=`echo "$opt" | sed 's/^[-_a-zA-Z0-9]*=//'` ;;
    42            *) arg='' ;;
    43     esac
    44     case $opt in
    45         -h | --help          ) help=1      ;;
    46         --usr=* | --user=*   ) usr=$arg    ;;
    47         --grp=* | --group=*  ) grp=$arg    ;;
    48         --susr=*             ) susr=$arg   ;;
    49         --sgrp=*             ) sgrp=$arg   ;;
    50         --musr=*             ) musr=$arg   ;;
    51         --mgrp=*             ) mgrp=$arg   ;;
    52         --rusr=*             ) rusr=$arg   ;;
    53         --rgrp=*             ) rgrp=$arg   ;;
    54         --nusr=*             ) nusr=$arg   ;;
    55         --ngrp=*             ) ngrp=$arg   ;;
    56         --suid=*             ) suid=$arg   ;;
    57         --sgid=*             ) sgid=$arg   ;;
    58         --muid=*             ) muid=$arg   ;;
    59         --mgid=*             ) mgid=$arg   ;;
    60         --ruid=*             ) ruid=$arg   ;;
    61         --rgid=*             ) rgid=$arg   ;;
    62         --nuid=*             ) nuid=$arg   ;;
    63         --ngid=*             ) ngid=$arg   ;;
    64         *                    ) help=1      ;;
    65     esac
    66 done
    67 if [ ".$help" = .1 ]; then
    68     echo "Usage: sh $0 [-h|--help]" 2>&1
    69     echo "             [--[smrn]?usr=<usr>] [--[smrn]?grp=<usr>]" 2>&1
    70     echo "             [--[smrn]uid=<uid>] [--[smrn]gid=<gid>]" 2>&1
    71     exit 1
    72 fi
    74 #   determine cusr/cgrp
    75 cusr=`(id -un) 2>/dev/null ||\
    76       (id | sed -e 's;^[^(]*(\([^)]*\)).*;\1;') 2>/dev/null ||\
    77       (whoami) 2>/dev/null ||\
    78       (who am i | cut "-d " -f1) 2>/dev/null ||\
    79       echo $LOGNAME`
    80 cgid=`(id -g $cusr) 2>/dev/null ||\
    81       ((getent passwd "${cusr}"; grep "^${cusr}:" /etc/passwd; ypmatch "${cusr}" passwd; nismatch "${cusr}" passwd; nidump passwd . | grep "^${cusr}:") 2>/dev/null |\
    82        sed -n -e '1p' | awk -F: '{ print $4; }')`
    83 cgrp=`(id -gn $cusr) 2>/dev/null ||\
    84       ((getent group; cat /etc/group; ypcat group; niscat group; nidump group .) 2>/dev/null | grep "^[^:]*:[^:]*:${cgid}:" |\
    85        sed -n -e '1p' | awk -F: '{ print $1; }')`
    86 [ ".$cgrp" = . ] && cgrp="$cusr"
    88 #   determine OpenPKG susr/sgrp
    89 if [ ".$susr" = . ]; then
    90     if [ ".$usr" = . ]; then
    91         susr="$cusr"
    92     else
    93         susr="root"
    94     fi
    95 fi
    96 if [ ".$sgrp" = . ]; then
    97     sgrp=`(id -gn $susr) 2>/dev/null`
    98     if [ ".$sgrp" = . ]; then
    99         tgid=`(getent passwd "${susr}"; grep "^${susr}:" /etc/passwd; ypmatch "${susr}" passwd; nismatch "${susr}" passwd; nidump passwd . | grep "^${susr}:") 2>/dev/null |\
   100               sed -n -e '1p' | awk -F: '{ print $4; }'`
   101         if [ ".$tgid" != . ]; then
   102             sgid="${tgid}"
   103             sgrp=`(getent group; cat /etc/group; ypcat group; niscat group; nidump group .) 2>/dev/null |\
   104                   grep "^[^:]*:[^:]*:${sgid}:" | sed -n -e '1p' | awk -F: '{ print $1; }'`
   105         fi
   106         if [ ".$sgrp" = . ]; then
   107             sgrp="wheel"
   108         fi
   109     fi
   110 fi
   112 #   determine OpenPKG musr/mgrp
   113 if [ ".$musr" = . ]; then
   114     musr="$usr"
   115 fi
   116 if [ ".$musr" = . ]; then
   117     musr="$cusr"
   118 fi
   119 if [ ".$mgrp" = . ]; then
   120     mgrp=`(id -gn $musr) 2>/dev/null`
   121     if [ ".$mgrp" = . ]; then
   122         tgid=`(getent passwd "${musr}"; grep "^${musr}:" /etc/passwd; ypmatch "${musr}" passwd; nismatch "${musr}" passwd; nidump passwd . | grep "^${musr}:") 2>/dev/null |\
   123               sed -n -e '1p' | awk -F: '{ print $4; }'`
   124         if [ ".$tgid" != . ]; then
   125             mgid="${tgid}"
   126             mgrp=`(getent group; cat /etc/group; ypcat group; niscat group; nidump group .) 2>/dev/null |\
   127                   grep "^[^:]*:[^:]*:${mgid}:" | sed -n -e '1p' | awk -F: '{ print $1; }'`
   128         fi
   129         if [ ".$mgrp" = . ]; then
   130             mgrp="$grp"
   131         fi
   132         if [ ".$mgrp" = . ]; then
   133             mgrp="$cgrp"
   134         fi
   135     fi
   136 fi
   138 #   determine OpenPKG rusr/rgrp
   139 if [ ".$rusr" = . ]; then
   140     rusr="${usr}-r"
   141 fi
   142 if [ ".$rusr" = ".-r" ]; then
   143     rusr="$cusr"
   144 fi
   145 if [ ".$rgrp" = . ]; then
   146     rgrp=`(id -gn $rusr) 2>/dev/null`
   147     if [ ".$rgrp" = . ]; then
   148         tgid=`(getent passwd "${rusr}"; grep "^${rusr}:" /etc/passwd; ypmatch "${rusr}" passwd; nismatch "${rusr}" passwd; nidump passwd . | grep "^${rusr}:") 2>/dev/null |\
   149               sed -n -e '1p' | awk -F: '{ print $4; }'`
   150         if [ ".$tgid" != . ]; then
   151             rgid="${tgid}"
   152             rgrp=`(getent group; cat /etc/group; ypcat group; nismatch group; nidump group .) 2>/dev/null |\
   153                   grep "^[^:]*:[^:]*:${rgid}:" | sed -n -e '1p' | awk -F: '{ print $1; }'`
   154         fi
   155         if [ ".$rgrp" = . ]; then
   156             rgrp="${grp}-r"
   157         fi
   158         if [ ".$rgrp" = ".-r" ]; then
   159             rgrp="$cgrp"
   160         fi
   161     fi
   162 fi
   164 #   determine OpenPKG nusr/ngrp
   165 if [ ".$nusr" = . ]; then
   166     nusr="${usr}-n"
   167 fi
   168 if [ ".$nusr" = ".-n" ]; then
   169     nusr="$cusr"
   170 fi
   171 if [ ".$ngrp" = . ]; then
   172     ngrp=`(id -gn $nusr) 2>/dev/null`
   173     if [ ".$ngrp" = . ]; then
   174         tgid=`(getent passwd "${nusr}"; grep "^${nusr}:" /etc/passwd; ypmatch "${nusr}" passwd; nismatch "${nusr}" passwd; nidump passwd . | grep "^${nusr}:") 2>/dev/null |\
   175               sed -n -e '1p' | awk -F: '{ print $4; }'`
   176         if [ ".$tgid" != . ]; then
   177             ngid="${tgid}"
   178             ngrp=`(getent group; cat /etc/group; ypcat group; niscat group; nidump group .) 2>/dev/null |\
   179                   grep "^[^:]*:[^:]*:${ngid}:" | sed -n -e '1p' | awk -F: '{ print $1; }'`
   180         fi
   181         if [ ".$ngrp" = . ]; then
   182             ngrp="${grp}-n"
   183         fi
   184         if [ ".$ngrp" = ".-n" ]; then
   185             ngrp="$cgrp"
   186         fi
   187     fi
   188 fi
   190 #   determine OpenPKG suid/sgid
   191 #   (currently not necessary)
   193 #   determine OpenPKG muid/mgid
   194 #   (currently not necessary)
   196 #   determine OpenPKG ruid/rgid
   197 #   (currently not necessary)
   199 #   determine OpenPKG nuid/ngid
   200 #   (currently not necessary)
   202 #   print results
   203 output=""
   204 for var in \
   205     susr sgrp \
   206     musr mgrp \
   207     rusr rgrp \
   208     nusr ngrp \
   209     suid sgid \
   210     muid mgid \
   211     ruid rgid \
   212     nuid ngid; do
   213     eval "val=\"\$$var\""
   214     if [ ".$output" = . ]; then
   215         output="$var=\"$val\""
   216     else
   217         output="$output; $var=\"$val\""
   218     fi
   219 done
   220 echo $output

mercurial