Cover V05, I06
Article
Figure 1
Listing 1
Listing 2
Listing 3
Listing 4
Sidebar 1

jun96.tar


Listing 3: The client password update script

#!/bin/sh
#
# passwd-update -- update /etc/passwd from a copy of the master. Spends
#       most of it's time checking to see if it succeeded.
#
SAFEPLACE=/usr/local/etc/passwd # Place where the master puts it.
SAFEMINIMUM=25 # Smallest allowable /etc/passwd file size, in lines.

if ccopy $SAFEPLACE /etc/ptmp; then
: It was ok.
else
echo "$0: /etc/ptmp exists, therefor the /etc/passwd file"
echo "    is locked.  Try again later, please."
exit 0
fi

# Check size didn't fall, indicating out-of-space in root.
ptmpSize=`wc -l /etc/ptmp`
if [ $ptmpSize -ne `wc -l $SAFEPLACE` ]; then
echo "$0: copy from $SAFEPLACE to /etc/ptmp failed: size changed."
echo "    You may be out of space in the root partition."
rm /etc/ptmp
exit 3
fi

# Double-check that total size didn't decrease too much.
if [ `expr $ptmpSize + 1` -lt `wc -l /etc/passwd' ]; then
echo "$0: new version from $SAFEPLACE was more than one line"
echo "    smaller than /etc/passwd. Please check file sizes"
echo "    and free space in the root partition."
rm /etc/ptmp
exit 3
elif [ $ptmpSize -lt $SAFEMINIMUM ]; then
echo "$0: new version from $SAFEPLACE was less than $SAFEMINIMUM"
echo "    lines long. This is impossible: please check file sizes"
echo "    and free space in the root partition."
rm /etc/ptmp
exit 3
fi

mv /etc/ptmp /etc/passwd

# End of File