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