Listing 1: badgrp Script
#!/bin/sh
#
# badgrp
#
# Find /etc/passwd entries missing group entries in /etc/group
#
# Copyright 1994, Lawrence S Reznick -- 94Oct19
PWFILE=/tmp/pw.$$
GRPFILE=/tmp/gp.$$
trap "rm -f $PWFILE $GRPFILE" 1 2 3 15
#
# If NIS is running, use its maps
#
if ypwhich >/dev/null 2>&1
then
ypcat passwd >$PWFILE
ypcat group >$GRPFILE
else
cat /etc/passwd >$PWFILE
cat /etc/group >$GRPFILE
fi
#
# Extract a unique list of active accounts' gids
#
for grp in `cut -d: -f4 $PWFILE | sort -nu`
do
grpfmt=`echo :"$grp":` # Avoid partial matches
match=`egrep $grpfmt $GRPFILE`
test -n "$match" ||
echo Group $grp not in group list, affecting users: \
`egrep $grpfmt $PWFILE | cut -d: -f1`
done
rm -f $PWFILE $GRPFILE
|