3 # $NetBSD: usergroup-check,v 1.1 2006/05/21 23:50:15 jlam Exp $
5 # Copyright (c) 2006 The NetBSD Foundation, Inc.
8 # This code is derived from software contributed to The NetBSD Foundation
11 # Redistribution and use in source and binary forms, with or without
12 # modification, are permitted provided that the following conditions
14 # 1. Redistributions of source code must retain the above copyright
15 # notice, this list of conditions and the following disclaimer.
16 # 2. Redistributions in binary form must reproduce the above copyright
17 # notice, this list of conditions and the following disclaimer in the
18 # documentation and/or other materials provided with the distribution.
19 # 3. All advertising materials mentioning features or use of this software
20 # must display the following acknowledgement:
21 # This product includes software developed by the NetBSD
22 # Foundation, Inc. and its contributors.
23 # 4. Neither the name of The NetBSD Foundation nor the names of its
24 # contributors may be used to endorse or promote products derived
25 # from this software without specific prior written permission.
27 # THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
28 # ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
29 # TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
30 # PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
31 # BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
32 # CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
33 # SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
34 # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
35 # CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
36 # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
37 # POSSIBILITY OF SUCH DAMAGE.
40 ######################################################################
43 # usergroup-check -- verify that users/groups match numeric IDs
46 # usergroup-check -g [group_entry ...]
47 # usergroup-check -u [user_entry ...]
50 # usergroup-check checks for the existence of users and groups
51 # and verifies that they match the requested numeric IDs if
52 # given. The group_entry format matches that of /etc/group and
53 # the user_entry format matches that of /etc/passwd, though the
54 # field contents may be empty.
56 # usergroup-check exits 0 if the users and groups exist and match
57 # the numeric IDs, and >0 otherwise.
60 # The following command line arguments are supported.
62 # -g Indicates that the subsequent arguments are group entries.
64 # -u Indicates that the subsequent arguments are user entries.
66 ######################################################################
73 echo 1>&2 "usage: $self -g [group_entry ...]"
74 echo 1>&2 " $self -u [user_entry ...]"
77 if test $# -lt 1; then
94 while test $# -gt 0; do
96 ( SAVEIFS
="$IFS"; IFS
=":"
97 set -- $entry; group
="$1"; groupid
="$2"
99 gid
=`${PERL5} -le 'print scalar getgrnam shift' $group`
100 test -n "$gid" ||
exit 1
104 esac ) || missing_groups
="$missing_groups $i"
110 while test $# -gt 0; do
112 ( SAVEIFS
="$IFS"; IFS
=":"
113 set -- $entry; user
="$1"; userid
="$3"
115 gid
=`${PERL5} -le 'print scalar getpwnam shift' $user`
116 test -n "$gid" ||
exit 1
120 esac ) || missing_users
="$missing_users $i"
125 test -z "$missing_groups" -a -z "$missing_users" ||
exit 1