1#!/bin/sh
2#
3# $FreeBSD: src/etc/periodic/daily/200.backup-passwd,v 1.6.2.3 2001/11/17 22:42:46 cjc Exp $
4# $DragonFly: src/etc/periodic/daily/200.backup-passwd,v 1.2 2003/06/17 04:24:48 dillon Exp $
5#
6
7# If there is a global system configuration file, suck it in.
8#
9if [ -r /etc/defaults/periodic.conf ]
10then
11    . /etc/defaults/periodic.conf
12    source_periodic_confs
13fi
14
15case "$daily_backup_passwd_enable" in
16    [Yy][Ee][Ss])
17	if [ ! -f /etc/master.passwd ]
18	then
19	    echo '$daily_backup_passwd_enable" is set but /etc/master.passwd' \
20		"doesn't exist"
21	    rc=2
22	elif [ ! -f /etc/group ]
23	then
24	    echo '$daily_backup_passwd_enable" is set but /etc/group' \
25		"doesn't exist"
26	    rc=2
27	else
28	    bak=/var/backups
29	    rc=0
30
31	    echo ""
32	    echo "Backup passwd and group files:"
33
34	    if [ ! -f $bak/master.passwd.bak ]
35	    then
36		rc=1
37		echo "no $bak/master.passwd.bak"
38		cp -p /etc/master.passwd $bak/master.passwd.bak || rc=3
39	    fi
40
41	    if ! cmp -s $bak/master.passwd.bak /etc/master.passwd
42	    then
43		[ $rc -lt 1 ] && rc=1
44		echo "$host passwd diffs:"
45		diff -I '^#' $bak/master.passwd.bak /etc/master.passwd |\
46			sed 's/^\([<>] [^:]*\):[^:]*:/\1:(password):/'
47		mv $bak/master.passwd.bak $bak/master.passwd.bak2
48		cp -p /etc/master.passwd $bak/master.passwd.bak || rc=3
49	    fi
50
51	    if [ ! -f $bak/group.bak ]
52	    then
53		[ $rc -lt 1 ] && rc=1
54		echo "no $bak/group.bak"
55		cp -p /etc/group $bak/group.bak || rc=3
56	    fi
57
58	    if ! cmp -s $bak/group.bak /etc/group
59	    then
60		[ $rc -lt 1 ] && rc=1
61		echo "$host group diffs:"
62		diff $bak/group.bak /etc/group
63		mv $bak/group.bak $bak/group.bak2
64		cp -p /etc/group $bak/group.bak || rc=3
65	    fi
66
67	    if [ -f /etc/group ]
68	    then
69	        echo ""
70		echo "Verifying group file syntax:"
71	        chkgrp /etc/group || rc=3
72	    fi
73	fi;;
74
75    *)  rc=0;;
76esac
77
78exit $rc
79