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