| |
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 ## |
| |
24 |
| |
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='' |
| |
36 |
| |
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 |
| |
73 |
| |
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" |
| |
87 |
| |
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 |
| |
111 |
| |
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 |
| |
137 |
| |
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 |
| |
163 |
| |
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 |
| |
189 |
| |
190 # determine OpenPKG suid/sgid |
| |
191 # (currently not necessary) |
| |
192 |
| |
193 # determine OpenPKG muid/mgid |
| |
194 # (currently not necessary) |
| |
195 |
| |
196 # determine OpenPKG ruid/rgid |
| |
197 # (currently not necessary) |
| |
198 |
| |
199 # determine OpenPKG nuid/ngid |
| |
200 # (currently not necessary) |
| |
201 |
| |
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 |
| |
221 |