1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/openpkg/aux.usrgrp.sh Tue Jan 06 23:40:39 2009 +0100 1.3 @@ -0,0 +1,222 @@ 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 +