2f1ee20cad6a5b62d999d46452a39c9a9b32dff3
[debian/amanda] / packaging / deb / amanda-backup-server.postinst
1 #!/bin/sh
2 # Debian recommends this.  Script exits on simple command failure.
3 # set -e
4 LOGDIR="/var/log/amanda/"
5 SYSCONFDIR="/etc"
6 LOCALSTATEDIR="/var"
7 AMANDAHOMEDIR="${LOCALSTATEDIR}/lib/amanda"
8 AMTMP="/tmp/amanda"
9 amanda_user=amandabackup
10 amanda_group=disk
11 xinetd_reload="restart"
12
13 if [ -d /etc/xinetd.d ] ; then
14         if [ ! -f /etc/xinetd.d/amandaserver ] ; then
15                 cp ${AMANDAHOMEDIR}/example/xinetd.amandaserver /etc/xinetd.d/amandaserver || exit 1
16                 chmod 0644 /etc/xinetd.d/amandaserver || exit 1
17                 if [ -f /etc/xinetd.d/amandaclient ] ; then
18                         rm /etc/xinetd.d/amandaclient || exit 1
19                 fi
20                 echo -n "`date +'%b %e %Y %T'`: Reloading xinetd configuration..." 
21                 if [ "${xinetd_reload}" = "reload" ] ; then
22                         /usr/sbin/invoke-rc.d xinetd ${xinetd_reload} # don't exit yet!
23                         if [ $? -ne 0 ] ; then
24                                 echo -n "reload failed.  Attempting restart..." 
25                                 /usr/sbin/invoke-rc.d xinetd restart || exit 1
26                         fi
27                 else
28                         /usr/sbin/invoke-rc.d xinetd ${xinetd_reload} || exit 1
29                 fi
30         fi
31 fi
32
33 echo "`date +'%b %e %Y %T'`: Installing '${LOCALSTATEDIR}/amanda/amandates'." 
34 if [ ! -f ${LOCALSTATEDIR}/amanda/amandates ] ; then
35         touch ${LOCALSTATEDIR}/amanda/amandates || exit 1
36 fi
37 echo "`date +'%b %e %Y %T'`: Ensuring correct permissions for '${LOCALSTATEDIR}/amanda/amandates'." 
38 chown ${amanda_user}:${amanda_group} ${LOCALSTATEDIR}/amanda/amandates || exit 1
39 chmod 0640 ${LOCALSTATEDIR}/amanda/amandates || exit 1
40 if [ -x /sbin/restorecon ] ; then
41       /sbin/restorecon ${LOCALSTATEDIR}/amanda/amandates  || exit 1
42 fi
43
44 # Check for existence of and permissions on ${AMTMP}
45 if [ ! -d ${AMTMP} ]; then
46        mkdir ${AMTMP} || exit 1
47 fi
48 echo "`date +'%b %e %Y %T'`: Ensuring correct permissions for '${AMTMP}'." 
49 chown ${amanda_user}:${amanda_group} ${AMTMP} || exit 1
50 chmod 0640 ${AMTMP} || exit 1
51
52 # install am_passphrase file to server
53 echo "`date +'%b %e %Y %T'`: Checking '${AMANDAHOMEDIR}/.am_passphrase' file." 
54 if [ ! -f ${AMANDAHOMEDIR}/.am_passphrase ] ; then
55         echo "`date +'%b %e %Y %T'`: Create '${AMANDAHOMEDIR}/.am_passphrase' file." 
56         touch ${AMANDAHOMEDIR}/.am_passphrase || exit 1
57         phrase=`echo $RANDOM | md5sum | awk '{print $1}'`
58         echo ${phrase} >>${AMANDAHOMEDIR}/.am_passphrase
59
60         chown ${amanda_user}:${amanda_group} ${AMANDAHOMEDIR}/.am_passphrase
61         chmod 0600 ${AMANDAHOMEDIR}/.am_passphrase 
62 fi
63
64 # Install .gnupg directory
65 echo "`date +'%b %e %Y %T'`: Installing '${AMANDAHOMEDIR}/.gnupg'." 
66 if [ ! -d ${AMANDAHOMEDIR}/.gnupg ] ; then
67         echo "`date +'%b %e %Y %T'`: '${AMANDAHOMEDIR}/.gnupg' will be created." 
68         mkdir ${AMANDAHOMEDIR}/.gnupg || exit 1
69 fi
70 echo "`date +'%b %e %Y %T'`: Ensuring correct permissions for '${AMANDAHOMEDIR}/.gnupg'." 
71 chown ${amanda_user}:${amanda_group} ${AMANDAHOMEDIR}/.gnupg || exit 1
72 chmod 700 ${AMANDAHOMEDIR}/.gnupg || exit 1
73
74 # Install .amandahosts to server
75 echo "`date +'%b %e %Y %T'`: Checking '${AMANDAHOMEDIR}/.amandahosts' file." 
76 if [ ! -f ${AMANDAHOMEDIR}/.amandahosts ] ; then
77         touch ${AMANDAHOMEDIR}/.amandahosts || exit 1
78 fi
79 for host in localhost localhost.localdomain ; do
80         if [ -z "`grep \"^${host}[[:blank:]]\+root[[:blank:]]\+amindexd[[:blank:]]\+amidxtaped\" ${AMANDAHOMEDIR}/.amandahosts`" ] ; then
81                 echo "${host}   root amindexd amidxtaped" >>${AMANDAHOMEDIR}/.amandahosts || exit 1
82         fi
83         if [ -z "`grep \"^${host}[[:blank:]]\+${amanda_user}[[:blank:]]\+amdump\" ${AMANDAHOMEDIR}/.amandahosts`" ] ; then
84                 echo "${host} ${amanda_user} amdump" >>${AMANDAHOMEDIR}/.amandahosts || exit 1
85         fi
86 done
87 chown ${amanda_user}:${amanda_group} ${AMANDAHOMEDIR}/.amandahosts || exit 1
88 chmod 0600 ${AMANDAHOMEDIR}/.amandahosts || exit 1
89
90 # SSH RSA key generation for amdump
91 KEYDIR="${AMANDAHOMEDIR}/.ssh"
92 KEYFILE="id_rsa_amdump"
93 COMMENT="${amanda_user}@server"
94 if [ ! -d ${KEYDIR} ] ; then
95         if [ -f ${KEYDIR} ] ; then
96                 echo "`date +'%b %e %Y %T'`: Directory '${KEYDIR}' exists as a file.  Renaming to '${KEYDIR}.save'." 
97                 mv ${KEYDIR} ${KEYDIR}.save || exit 1
98         fi
99         echo "`date +'%b %e %Y %T'`: Creating directory '${KEYDIR}'." 
100         mkdir ${KEYDIR} || exit 1
101 fi
102 if [ ! -f ${KEYDIR}/${KEYFILE} ] ; then
103         echo "`date +'%b %e %Y %T'`: Creating ssh RSA key in '${KEYDIR}/${KEYFILE}'" 
104         ssh-keygen -q -C $COMMENT -t rsa -f ${KEYDIR}/${KEYFILE} -N '' || exit 1
105 fi
106 echo "`date +'%b %e %Y %T'`: Setting ownership and permissions for '${KEYDIR}' and '${KEYDIR}/${KEYFILE}*'" 
107 chown ${amanda_user}:${amanda_group} ${KEYDIR} ${KEYDIR}/${KEYFILE}* || exit 1
108 chmod 0750 ${KEYDIR} || exit 1
109 chmod 0600 ${KEYDIR}/${KEYFILE}* || exit 1
110
111 # SSH RSA key generation on client for amrecover
112 KEYDIR="${AMANDAHOMEDIR}/.ssh"
113 KEYFILE="id_rsa_amrecover"
114 COMMENT="root@client"
115 if [ ! -d ${KEYDIR} ] ; then
116         if [ -f ${KEYDIR} ] ; then
117                 echo "`date +'%b %e %Y %T'`: Directory '${KEYDIR}' exists as a file.  Renaming to '${KEYDIR}.save'." 
118                 mv ${KEYDIR} ${KEYDIR}.save || exit 1
119         fi
120         echo "`date +'%b %e %Y %T'`: Creating directory '${KEYDIR}'." 
121         mkdir ${KEYDIR} || exit 1
122 fi
123 if [ ! -f ${KEYDIR}/${KEYFILE} ] ; then
124         echo "`date +'%b %e %Y %T'`: Creating ssh RSA key in '${KEYDIR}/${KEYFILE}'" 
125         ssh-keygen -q -C $COMMENT -t rsa -f ${KEYDIR}/${KEYFILE} -N '' || exit 1
126 fi
127 echo "`date +'%b %e %Y %T'`: Setting permissions for '${KEYDIR}'" 
128 chown ${amanda_user}:${amanda_group} ${KEYDIR} || exit 1
129 chmod 0750 ${KEYDIR} || exit 1
130 chmod 0600 ${KEYDIR}/${KEYFILE}* || exit 1
131
132 # environment variables (~amandabackup/.profile)
133 echo "`date +'%b %e %Y %T'`: Checking for '${AMANDAHOMEDIR}/.profile' and ensuring correct environment." 
134 if [ ! -f ${AMANDAHOMEDIR}/.profile ] ; then
135         touch ${AMANDAHOMEDIR}/.profile || exit 1
136 fi
137 if [ -z "`grep PATH ${AMANDAHOMEDIR}/.profile | grep '/usr/sbin'`" ] ; then
138         echo "export PATH=\"\$PATH:/usr/sbin/\"" >> "${AMANDAHOMEDIR}/.profile" || exit 1
139 fi
140 echo "`date +'%b %e %Y %T'`: Setting ownership and permissions for '${AMANDAHOMEDIR}/.profile'" 
141 chown ${amanda_user}:${amanda_group} ${AMANDAHOMEDIR}/.profile || exit 1
142 chmod 0640 ${AMANDAHOMEDIR}/.profile || exit 1
143
144 echo "`date +'%b %e %Y %T'`: === Amanda backup server installation complete. ==="