128263Spst#!/bin/sh
228263Spst#
350472Speter# $FreeBSD: releng/11.0/etc/periodic/daily/200.backup-passwd 86344 2001-11-14 09:30:01Z cjc $
428263Spst#
528263Spst
661981Sbrian# If there is a global system configuration file, suck it in.
761981Sbrian#
861981Sbrianif [ -r /etc/defaults/periodic.conf ]
961981Sbrianthen
1061981Sbrian    . /etc/defaults/periodic.conf
1161981Sbrian    source_periodic_confs
1261981Sbrianfi
1328263Spst
1461981Sbriancase "$daily_backup_passwd_enable" in
1561981Sbrian    [Yy][Ee][Ss])
1665843Sbrian	if [ ! -f /etc/master.passwd ]
1761981Sbrian	then
1865843Sbrian	    echo '$daily_backup_passwd_enable" is set but /etc/master.passwd' \
1965843Sbrian		"doesn't exist"
2065843Sbrian	    rc=2
2165843Sbrian	elif [ ! -f /etc/group ]
2265843Sbrian	then
2365843Sbrian	    echo '$daily_backup_passwd_enable" is set but /etc/group' \
2465843Sbrian		"doesn't exist"
2565843Sbrian	    rc=2
2665843Sbrian	else
2761981Sbrian	    bak=/var/backups
2865843Sbrian	    rc=0
2928263Spst
3061981Sbrian	    echo ""
3161981Sbrian	    echo "Backup passwd and group files:"
3228263Spst
3361981Sbrian	    if [ ! -f $bak/master.passwd.bak ]
3461981Sbrian	    then
3565843Sbrian		rc=1
3661981Sbrian		echo "no $bak/master.passwd.bak"
3765843Sbrian		cp -p /etc/master.passwd $bak/master.passwd.bak || rc=3
3861981Sbrian	    fi
3928263Spst
4061981Sbrian	    if ! cmp -s $bak/master.passwd.bak /etc/master.passwd
4161981Sbrian	    then
4265843Sbrian		[ $rc -lt 1 ] && rc=1
4361981Sbrian		echo "$host passwd diffs:"
4486344Scjc		diff -I '^#' $bak/master.passwd.bak /etc/master.passwd |\
4586344Scjc			sed 's/^\([<>] [^:]*\):[^:]*:/\1:(password):/'
4661981Sbrian		mv $bak/master.passwd.bak $bak/master.passwd.bak2
4765843Sbrian		cp -p /etc/master.passwd $bak/master.passwd.bak || rc=3
4861981Sbrian	    fi
4936333Sdes
5061981Sbrian	    if [ ! -f $bak/group.bak ]
5161981Sbrian	    then
5265843Sbrian		[ $rc -lt 1 ] && rc=1
5361981Sbrian		echo "no $bak/group.bak"
5465843Sbrian		cp -p /etc/group $bak/group.bak || rc=3
5561981Sbrian	    fi
5661981Sbrian
5761981Sbrian	    if ! cmp -s $bak/group.bak /etc/group
5861981Sbrian	    then
5965843Sbrian		[ $rc -lt 1 ] && rc=1
6061981Sbrian		echo "$host group diffs:"
6161981Sbrian		diff $bak/group.bak /etc/group
6261981Sbrian		mv $bak/group.bak $bak/group.bak2
6365843Sbrian		cp -p /etc/group $bak/group.bak || rc=3
6461981Sbrian	    fi
6561981Sbrian
6661981Sbrian	    if [ -f /etc/group ]
6761981Sbrian	    then
6861981Sbrian	        echo ""
6961981Sbrian		echo "Verifying group file syntax:"
7065843Sbrian	        chkgrp /etc/group || rc=3
7161981Sbrian	    fi
7261981Sbrian	fi;;
7365843Sbrian
7465843Sbrian    *)  rc=0;;
7561981Sbrianesac
7665843Sbrian
7765843Sbrianexit $rc
78