openpkg/aux.usrgrp.sh

changeset 430
9b4bbbae3a98
parent 429
b363f8ef6dcb
child 431
127559aa0c5e
     1.1 --- a/openpkg/aux.usrgrp.sh	Tue Jul 31 12:27:54 2012 +0200
     1.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.3 @@ -1,222 +0,0 @@
     1.4 -#!/bin/sh
     1.5 -##
     1.6 -##  usrgrp.sh -- user/group name/id determination
     1.7 -##  Copyright (c) 2000-2007 OpenPKG Foundation e.V. <http://openpkg.net/>
     1.8 -##  Copyright (c) 2000-2007 Ralf S. Engelschall <http://engelschall.com/>
     1.9 -##
    1.10 -##  Permission to use, copy, modify, and distribute this software for
    1.11 -##  any purpose with or without fee is hereby granted, provided that
    1.12 -##  the above copyright notice and this permission notice appear in all
    1.13 -##  copies.
    1.14 -##
    1.15 -##  THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
    1.16 -##  WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
    1.17 -##  MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
    1.18 -##  IN NO EVENT SHALL THE AUTHORS AND COPYRIGHT HOLDERS AND THEIR
    1.19 -##  CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
    1.20 -##  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
    1.21 -##  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
    1.22 -##  USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
    1.23 -##  ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
    1.24 -##  OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
    1.25 -##  OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
    1.26 -##  SUCH DAMAGE.
    1.27 -##
    1.28 -
    1.29 -#   command line parameters (defaults)
    1.30 -help=0
    1.31 -usr='';  grp=''
    1.32 -susr=''; sgrp=''
    1.33 -musr=''; mgrp=''
    1.34 -rusr=''; rgrp=''
    1.35 -nusr=''; ngrp=''
    1.36 -suid=''; sgid=''
    1.37 -muid=''; mgid=''
    1.38 -ruid=''; rgid=''
    1.39 -nuid=''; ngid=''
    1.40 -
    1.41 -#   parse command line options
    1.42 -for opt
    1.43 -do
    1.44 -    case $opt in
    1.45 -        -*=*) arg=`echo "$opt" | sed 's/^[-_a-zA-Z0-9]*=//'` ;;
    1.46 -           *) arg='' ;;
    1.47 -    esac
    1.48 -    case $opt in
    1.49 -        -h | --help          ) help=1      ;;
    1.50 -        --usr=* | --user=*   ) usr=$arg    ;;
    1.51 -        --grp=* | --group=*  ) grp=$arg    ;;
    1.52 -        --susr=*             ) susr=$arg   ;;
    1.53 -        --sgrp=*             ) sgrp=$arg   ;;
    1.54 -        --musr=*             ) musr=$arg   ;;
    1.55 -        --mgrp=*             ) mgrp=$arg   ;;
    1.56 -        --rusr=*             ) rusr=$arg   ;;
    1.57 -        --rgrp=*             ) rgrp=$arg   ;;
    1.58 -        --nusr=*             ) nusr=$arg   ;;
    1.59 -        --ngrp=*             ) ngrp=$arg   ;;
    1.60 -        --suid=*             ) suid=$arg   ;;
    1.61 -        --sgid=*             ) sgid=$arg   ;;
    1.62 -        --muid=*             ) muid=$arg   ;;
    1.63 -        --mgid=*             ) mgid=$arg   ;;
    1.64 -        --ruid=*             ) ruid=$arg   ;;
    1.65 -        --rgid=*             ) rgid=$arg   ;;
    1.66 -        --nuid=*             ) nuid=$arg   ;;
    1.67 -        --ngid=*             ) ngid=$arg   ;;
    1.68 -        *                    ) help=1      ;;
    1.69 -    esac
    1.70 -done
    1.71 -if [ ".$help" = .1 ]; then
    1.72 -    echo "Usage: sh $0 [-h|--help]" 2>&1
    1.73 -    echo "             [--[smrn]?usr=<usr>] [--[smrn]?grp=<usr>]" 2>&1
    1.74 -    echo "             [--[smrn]uid=<uid>] [--[smrn]gid=<gid>]" 2>&1
    1.75 -    exit 1
    1.76 -fi
    1.77 -
    1.78 -#   determine cusr/cgrp
    1.79 -cusr=`(id -un) 2>/dev/null ||\
    1.80 -      (id | sed -e 's;^[^(]*(\([^)]*\)).*;\1;') 2>/dev/null ||\
    1.81 -      (whoami) 2>/dev/null ||\
    1.82 -      (who am i | cut "-d " -f1) 2>/dev/null ||\
    1.83 -      echo $LOGNAME`
    1.84 -cgid=`(id -g $cusr) 2>/dev/null ||\
    1.85 -      ((getent passwd "${cusr}"; grep "^${cusr}:" /etc/passwd; ypmatch "${cusr}" passwd; nismatch "${cusr}" passwd; nidump passwd . | grep "^${cusr}:") 2>/dev/null |\
    1.86 -       sed -n -e '1p' | awk -F: '{ print $4; }')`
    1.87 -cgrp=`(id -gn $cusr) 2>/dev/null ||\
    1.88 -      ((getent group; cat /etc/group; ypcat group; niscat group; nidump group .) 2>/dev/null | grep "^[^:]*:[^:]*:${cgid}:" |\
    1.89 -       sed -n -e '1p' | awk -F: '{ print $1; }')`
    1.90 -[ ".$cgrp" = . ] && cgrp="$cusr"
    1.91 -
    1.92 -#   determine OpenPKG susr/sgrp
    1.93 -if [ ".$susr" = . ]; then
    1.94 -    if [ ".$usr" = . ]; then
    1.95 -        susr="$cusr"
    1.96 -    else
    1.97 -        susr="root"
    1.98 -    fi
    1.99 -fi
   1.100 -if [ ".$sgrp" = . ]; then
   1.101 -    sgrp=`(id -gn $susr) 2>/dev/null`
   1.102 -    if [ ".$sgrp" = . ]; then
   1.103 -        tgid=`(getent passwd "${susr}"; grep "^${susr}:" /etc/passwd; ypmatch "${susr}" passwd; nismatch "${susr}" passwd; nidump passwd . | grep "^${susr}:") 2>/dev/null |\
   1.104 -              sed -n -e '1p' | awk -F: '{ print $4; }'`
   1.105 -        if [ ".$tgid" != . ]; then
   1.106 -            sgid="${tgid}"
   1.107 -            sgrp=`(getent group; cat /etc/group; ypcat group; niscat group; nidump group .) 2>/dev/null |\
   1.108 -                  grep "^[^:]*:[^:]*:${sgid}:" | sed -n -e '1p' | awk -F: '{ print $1; }'`
   1.109 -        fi
   1.110 -        if [ ".$sgrp" = . ]; then
   1.111 -            sgrp="wheel"
   1.112 -        fi
   1.113 -    fi
   1.114 -fi
   1.115 -
   1.116 -#   determine OpenPKG musr/mgrp
   1.117 -if [ ".$musr" = . ]; then
   1.118 -    musr="$usr"
   1.119 -fi
   1.120 -if [ ".$musr" = . ]; then
   1.121 -    musr="$cusr"
   1.122 -fi
   1.123 -if [ ".$mgrp" = . ]; then
   1.124 -    mgrp=`(id -gn $musr) 2>/dev/null`
   1.125 -    if [ ".$mgrp" = . ]; then
   1.126 -        tgid=`(getent passwd "${musr}"; grep "^${musr}:" /etc/passwd; ypmatch "${musr}" passwd; nismatch "${musr}" passwd; nidump passwd . | grep "^${musr}:") 2>/dev/null |\
   1.127 -              sed -n -e '1p' | awk -F: '{ print $4; }'`
   1.128 -        if [ ".$tgid" != . ]; then
   1.129 -            mgid="${tgid}"
   1.130 -            mgrp=`(getent group; cat /etc/group; ypcat group; niscat group; nidump group .) 2>/dev/null |\
   1.131 -                  grep "^[^:]*:[^:]*:${mgid}:" | sed -n -e '1p' | awk -F: '{ print $1; }'`
   1.132 -        fi
   1.133 -        if [ ".$mgrp" = . ]; then
   1.134 -            mgrp="$grp"
   1.135 -        fi
   1.136 -        if [ ".$mgrp" = . ]; then
   1.137 -            mgrp="$cgrp"
   1.138 -        fi
   1.139 -    fi
   1.140 -fi
   1.141 -
   1.142 -#   determine OpenPKG rusr/rgrp
   1.143 -if [ ".$rusr" = . ]; then
   1.144 -    rusr="${usr}-r"
   1.145 -fi
   1.146 -if [ ".$rusr" = ".-r" ]; then
   1.147 -    rusr="$cusr"
   1.148 -fi
   1.149 -if [ ".$rgrp" = . ]; then
   1.150 -    rgrp=`(id -gn $rusr) 2>/dev/null`
   1.151 -    if [ ".$rgrp" = . ]; then
   1.152 -        tgid=`(getent passwd "${rusr}"; grep "^${rusr}:" /etc/passwd; ypmatch "${rusr}" passwd; nismatch "${rusr}" passwd; nidump passwd . | grep "^${rusr}:") 2>/dev/null |\
   1.153 -              sed -n -e '1p' | awk -F: '{ print $4; }'`
   1.154 -        if [ ".$tgid" != . ]; then
   1.155 -            rgid="${tgid}"
   1.156 -            rgrp=`(getent group; cat /etc/group; ypcat group; nismatch group; nidump group .) 2>/dev/null |\
   1.157 -                  grep "^[^:]*:[^:]*:${rgid}:" | sed -n -e '1p' | awk -F: '{ print $1; }'`
   1.158 -        fi
   1.159 -        if [ ".$rgrp" = . ]; then
   1.160 -            rgrp="${grp}-r"
   1.161 -        fi
   1.162 -        if [ ".$rgrp" = ".-r" ]; then
   1.163 -            rgrp="$cgrp"
   1.164 -        fi
   1.165 -    fi
   1.166 -fi
   1.167 -
   1.168 -#   determine OpenPKG nusr/ngrp
   1.169 -if [ ".$nusr" = . ]; then
   1.170 -    nusr="${usr}-n"
   1.171 -fi
   1.172 -if [ ".$nusr" = ".-n" ]; then
   1.173 -    nusr="$cusr"
   1.174 -fi
   1.175 -if [ ".$ngrp" = . ]; then
   1.176 -    ngrp=`(id -gn $nusr) 2>/dev/null`
   1.177 -    if [ ".$ngrp" = . ]; then
   1.178 -        tgid=`(getent passwd "${nusr}"; grep "^${nusr}:" /etc/passwd; ypmatch "${nusr}" passwd; nismatch "${nusr}" passwd; nidump passwd . | grep "^${nusr}:") 2>/dev/null |\
   1.179 -              sed -n -e '1p' | awk -F: '{ print $4; }'`
   1.180 -        if [ ".$tgid" != . ]; then
   1.181 -            ngid="${tgid}"
   1.182 -            ngrp=`(getent group; cat /etc/group; ypcat group; niscat group; nidump group .) 2>/dev/null |\
   1.183 -                  grep "^[^:]*:[^:]*:${ngid}:" | sed -n -e '1p' | awk -F: '{ print $1; }'`
   1.184 -        fi
   1.185 -        if [ ".$ngrp" = . ]; then
   1.186 -            ngrp="${grp}-n"
   1.187 -        fi
   1.188 -        if [ ".$ngrp" = ".-n" ]; then
   1.189 -            ngrp="$cgrp"
   1.190 -        fi
   1.191 -    fi
   1.192 -fi
   1.193 -
   1.194 -#   determine OpenPKG suid/sgid
   1.195 -#   (currently not necessary)
   1.196 -
   1.197 -#   determine OpenPKG muid/mgid
   1.198 -#   (currently not necessary)
   1.199 -
   1.200 -#   determine OpenPKG ruid/rgid
   1.201 -#   (currently not necessary)
   1.202 -
   1.203 -#   determine OpenPKG nuid/ngid
   1.204 -#   (currently not necessary)
   1.205 -
   1.206 -#   print results
   1.207 -output=""
   1.208 -for var in \
   1.209 -    susr sgrp \
   1.210 -    musr mgrp \
   1.211 -    rusr rgrp \
   1.212 -    nusr ngrp \
   1.213 -    suid sgid \
   1.214 -    muid mgid \
   1.215 -    ruid rgid \
   1.216 -    nuid ngid; do
   1.217 -    eval "val=\"\$$var\""
   1.218 -    if [ ".$output" = . ]; then
   1.219 -        output="$var=\"$val\""
   1.220 -    else
   1.221 -        output="$output; $var=\"$val\""
   1.222 -    fi
   1.223 -done
   1.224 -echo $output
   1.225 -

mercurial