X-Git-Url: https://git.gag.com/?a=blobdiff_plain;f=packaging%2Frpm%2Famanda.spec.src;fp=packaging%2Frpm%2Famanda.spec.src;h=4e59570c45c09c27c76cb1206bdc6da7f93c1b86;hb=109540caa4e37a3663b3dcfb9a205b9609e3f561;hp=ec55de84d383481920f7f43830f4ac4577eb44eb;hpb=4c9eba1feb11adf189bceb4001c425e641f0b56a;p=debian%2Famanda diff --git a/packaging/rpm/amanda.spec.src b/packaging/rpm/amanda.spec.src index ec55de8..4e59570 100644 --- a/packaging/rpm/amanda.spec.src +++ b/packaging/rpm/amanda.spec.src @@ -1,5 +1,5 @@ # -# Copyright (C) 2005 Zmanda Incorporated. +# Copyright (C) 2005-2012 Zmanda Incorporated. # All Rights Reserved. # # This program is free software; you can redistribute it and/or modify it @@ -441,1098 +441,319 @@ fi # --- Pre/post (un)installation scripts --- -%pre -TMPFILE=`mktemp /tmp/rpm-amanda.XXXXXXXXXXX` -if [ $? -ne 0 ]; then - echo "Unable to mktemp!" 1>&2 - exit 1 -fi -LOGDIR="%{LOGDIR}" -INSTALL_LOG="${LOGDIR}/install.log" -INSTALL_ERR="${LOGDIR}/install.err" - -echo "`date +'%b %e %Y %T'`: Preparing to install: %{amanda_version_info}" >${TMPFILE} - -# Check for the 'amanda' user -echo "`date +'%b %e %Y %T'`: Checking for '%{amanda_user}' user..." >>${TMPFILE} -if [ "`id -u %{amanda_user} > /dev/null 2>&1 && echo 0 || echo 1`" != "0" ] ; then - useradd -c "Amanda" -M -g %{amanda_group} -d %{AMANDAHOMEDIR} -s /bin/bash %{amanda_user} - if [ %{dist} = "SuSE" ]; then - PASSWD_EXIT=$? - else - # Lock the amanda account until admin sets password - passwd -l %{amanda_user} >>/dev/null - PASSWD_EXIT=$? - fi - if [ ${PASSWD_EXIT} -eq 0 ] ; then - echo "`date +'%b %e %Y %T'`:" >>${TMPFILE} - echo "`date +'%b %e %Y %T'`: The '%{amanda_user}; user account has been successfully created." >>${TMPFILE} - echo "`date +'%b %e %Y %T'`: Furthermore, the account has been automatically locked for you" >>${TMPFILE} - echo "`date +'%b %e %Y %T'`: for security purposes. Once a password for the '%{amanda_user}'" >>${TMPFILE} - echo "`date +'%b %e %Y %T'`: account has been set, the user can be unlocked by issuing" >>${TMPFILE} - echo "`date +'%b %e %Y %T'`: the following command as root.:" >>${TMPFILE} - echo "`date +'%b %e %Y %T'`:" >>${TMPFILE} - echo "`date +'%b %e %Y %T'`: # passwd -u %{amanda_user}" >>${TMPFILE} - echo "`date +'%b %e %Y %T'`:" >>${TMPFILE} - echo "`date +'%b %e %Y %T'`: If this is not a new installation of Amanda and you have" >>${TMPFILE} - echo "`date +'%b %e %Y %T'`: pre-existing Amanda configurations in %{SYSCONFDIR}/amanda" >>${TMPFILE} - echo "`date +'%b %e %Y %T'`: you should ensure that 'dumpuser' is set to '%{amanda_user}'" >>${TMPFILE} - echo "`date +'%b %e %Y %T'`: in those configurations. Additionally, you should ensure" >>${TMPFILE} - echo "`date +'%b %e %Y %T'`: that %{AMANDAHOMEDIR}/.amandahosts on your client systems" >>${TMPFILE} - echo "`date +'%b %e %Y %T'`: is properly configured to allow connections for the user" >>${TMPFILE} - echo "`date +'%b %e %Y %T'`: '%{amanda_user}'." >>${TMPFILE} - echo "`date +'%b %e %Y %T'`:" >>${TMPFILE} - PASSWD_OK=0 - else - echo "`date +'%b %e %Y %T'`: !!! WARNING! WARNING! WARNING! WARNING! WARNING! WARNING! !!!" >>${TMPFILE} - echo "`date +'%b %e %Y %T'`: !!! !!!" >>${TMPFILE} - echo "`date +'%b %e %Y %T'`: !!! The '%{amanda_user}' user account for this system has been !!!" >>${TMPFILE} - echo "`date +'%b %e %Y %T'`: !!! created, however the user has no password set. For !!!" >>${TMPFILE} - echo "`date +'%b %e %Y %T'`: !!! security purposes this account is normally locked !!!" >>${TMPFILE} - echo "`date +'%b %e %Y %T'`: !!! after creation. Unfortunately, when locking this !!!" >>${TMPFILE} - echo "`date +'%b %e %Y %T'`: !!! account an error occurred. To ensure the security !!!" >>${TMPFILE} - echo "`date +'%b %e %Y %T'`: !!! of your system you should set a password for the !!!" >>${TMPFILE} - echo "`date +'%b %e %Y %T'`: !!! user account '%{amanda_user}' immediately! To set such a !!!" >>${TMPFILE} - echo "`date +'%b %e %Y %T'`: !!! password, please issue the following command.: !!!" >>${TMPFILE} - echo "`date +'%b %e %Y %T'`: !!! !!!" >>${TMPFILE} - echo "`date +'%b %e %Y %T'`: !!! # passwd %{amanda_user} !!!" >>${TMPFILE} - echo "`date +'%b %e %Y %T'`: !!! !!!" >>${TMPFILE} - echo "`date +'%b %e %Y %T'`: !!! WARNING! WARNING! WARNING! WARNING! WARNING! WARNING! !!!" >>${TMPFILE} - PASSWD_OK=1 - fi -else - # log information about 'amanda' user parameters - echo "`date +'%b %e %Y %T'`:" >>${TMPFILE} - echo "`date +'%b %e %Y %T'`: The Amanda backup software is configured to operate as the" >>${TMPFILE} - echo "`date +'%b %e %Y %T'`: user '%{amanda_user}'. This user exists on your system and has not" >>${TMPFILE} - echo "`date +'%b %e %Y %T'`: been modified. To ensure that Amanda functions properly," >>${TMPFILE} - echo "`date +'%b %e %Y %T'`: please see that the following parameters are set for that" >>${TMPFILE} - echo "`date +'%b %e %Y %T'`: user.:" >>${TMPFILE} - echo "`date +'%b %e %Y %T'`:" >>${TMPFILE} - echo "`date +'%b %e %Y %T'`: SHELL: /bin/bash" >>${TMPFILE} - echo "`date +'%b %e %Y %T'`: HOME: %{AMANDAHOMEDIR}" >>${TMPFILE} - echo "`date +'%b %e %Y %T'`: Default group: %{amanda_group}" >>${TMPFILE} - echo "`date +'%b %e %Y %T'`: Verifying %{amanda_user} parameters :" >>${TMPFILE} - - if [ "`id -gn %{amanda_user}`" != "disk" ] ; then - echo "`date +'%b %e %Y %T'`: !!! WARNING! WARNING! WARNING! WARNING! WARNING! WARNING! !!!" >>${TMPFILE} - echo "`date +'%b %e %Y %T'`: !!! user 'amandabackup' is not part of the disk group,Pl !!!" >>${TMPFILE} - echo "`date +'%b %e %Y %T'`: !!! make sure it is corrected before start using amanda !!!" >>${TMPFILE} - echo "`date +'%b %e %Y %T'`: !!! WARNING! WARNING! WARNING! WARNING! WARNING! WARNING! !!!" >>${TMPFILE} - else - echo "`date +'%b %e %Y %T'`: Verified group name of user 'amandabackup'" >>${TMPFILE} - fi - - if [ "`grep ^%{amanda_user} /etc/passwd|cut -d: -f7`" != "/bin/bash" ] ; then - echo "`date +'%b %e %Y %T'`: !!! WARNING! WARNING! WARNING! WARNING! WARNING! WARNING! !!!" >>${TMPFILE} - echo "`date +'%b %e %Y %T'`: !!! user 'amandabackup' default shell should be set to !!!" >>${TMPFILE} - echo "`date +'%b %e %Y %T'`: !!! /bin/bash, pl correct before start using Amanda !!!" >>${TMPFILE} - echo "`date +'%b %e %Y %T'`: !!! WARNING! WARNING! WARNING! WARNING! WARNING! WARNING! !!!" >>${TMPFILE} - else - echo "`date +'%b %e %Y %T'`: Verified Default shell for user 'amandabackup'" >>${TMPFILE} - fi - - if [ "`grep ^%{amanda_user} /etc/passwd|cut -d: -f6`" != "%{AMANDAHOMEDIR}" ] ; then - echo "`date +'%b %e %Y %T'`: !!! WARNING! WARNING! WARNING! WARNING! WARNING! WARNING! !!!" >>${TMPFILE} - echo "`date +'%b %e %Y %T'`: !!! user 'amandabackup' home directory should be set to !!!" >>${TMPFILE} - echo "`date +'%b %e %Y %T'`: !!! %{AMANDAHOMEDIR} Pl correct before using Amanda !!!" >>${TMPFILE} - echo "`date +'%b %e %Y %T'`: !!! WARNING! WARNING! WARNING! WARNING! WARNING! WARNING! !!!" >>${TMPFILE} - else - echo "`date +'%b %e %Y %T'`: Verified Default home directory for user amandabackup" >>${TMPFILE} - fi - echo "`date +'%b %e %Y %T'`:" >>${TMPFILE} - PASSWD_OK=0 -fi -if [ -d %{AMANDAHOMEDIR} ] ; then - echo -n "`date +'%b %e %Y %T'`: Checking ownership of '%{AMANDAHOMEDIR}'... " >>${TMPFILE} - if [ "`ls -dl %{AMANDAHOMEDIR} | awk '//{split($_,x); print x[3]}'`" = "%{amanda_user}" ] && \ - [ "`ls -dl %{AMANDAHOMEDIR} | awk '//{split($_,x); print x[4]}'`" = "%{amanda_group}" ] ; then - echo "correct." >>${TMPFILE} - VARLIB_OK=0 - else - echo "incorrect!" >>${TMPFILE} - echo "`date +'%b %e %Y %T'`: Please ensure that the directory '%{AMANDAHOMEDIR}' is owned by" >>${TMPFILE} - echo "`date +'%b %e %Y %T'`: the user '%{amanda_user}' and group '%{amanda_group}'." >>${TMPFILE} - VARLIB_OK=1 - fi -else - VARLIB_OK=0 -fi -echo "`date +'%b %e %Y %T'`:" >>${TMPFILE} -if [ ! -e ${LOGDIR} ] ; then - # create log directory - mkdir -m 0750 ${LOGDIR} >>${TMPFILE} 2>&1 - chown %{amanda_user}:%{amanda_group} ${LOGDIR} >>${TMPFILE} 2>&1 -elif [ ! -d ${LOGDIR} ] ; then - mv ${LOGDIR} ${LOGDIR}.rpmsave >>${TMPFILE} 2>&1 - mkdir -m 0750 ${LOGDIR} >>${TMPFILE} 2>&1 - chown %{amanda_user}:%{amanda_group} ${LOGDIR} >>${TMPFILE} 2>&1 - mv ${LOGDIR}.rpmsave ${LOGDIR}/ >>${TMPFILE} 2>&1 -fi - -if [ ${PASSWD_OK} -eq 1 ] || [ ${VARLIB_OK} -eq 1 ] ; then - cat ${TMPFILE} - cat ${TMPFILE} >>${INSTALL_ERR} - echo "Please review '${INSTALL_ERR}' to correct errors which have prevented the Amanda installaton." >&2 - echo "Amanda installation log can be found in '${INSTALL_LOG}' and errors (if any) in '${INSTALL_ERR}'." - exit 1 -else - cat ${TMPFILE} - cat ${TMPFILE} >>${INSTALL_LOG} -fi - -echo "`date +'%b %e %Y %T'`: === Amanda installation started. ===" >${TMPFILE} - -cat ${TMPFILE} -cat ${TMPFILE} >>${INSTALL_LOG} -if [ -f "${TMPFILE}" ]; then - rm -f "${TMPFILE}" -fi - -%post -TMPFILE=`mktemp /tmp/rpm-amanda.XXXXXXXXXXX -if [ $? -ne 0 ]; then - echo "Unable to mktemp!" 1>&2 - exit 1 -fi -LOGDIR="%{LOGDIR}" -INSTALL_LOG="${LOGDIR}/install.log" -INSTALL_ERR="${LOGDIR}/install.err" - -echo -n "`date +'%b %e %Y %T'`: Updating library cache..." >${TMPFILE} -/sbin/ldconfig >>${TMPFILE} 2>&1 -echo "done." >>${TMPFILE} -cat ${TMPFILE} -cat ${TMPFILE} >>${INSTALL_LOG} - -if [ -e /etc/xinetd.d ] && [ -d /etc/xinetd.d ] ; then - if [ ! -f /etc/xinetd.d/amandaserver ] ; then - cp %{AMANDAHOMEDIR}/example/xinetd.amandaserver /etc/xinetd.d/amandaserver - chmod 0644 /etc/xinetd.d/amandaserver >>${TMPFILE} 2>&1 - if [ -f /etc/xinetd.d/amandaclient ] ; then - rm /etc/xinetd.d/amandaclient - fi - echo -n "`date +'%b %e %Y %T'`: Reloading xinetd configuration..." >${TMPFILE} - if [ "%{xinetd_reload}" == "reload" ] ; then - /etc/init.d/xinetd %{xinetd_reload} >>${TMPFILE} 2>&1 - ret_val=$? - if [ ${ret_val} -ne 0 ] ; then - echo -n "reload failed. Attempting restart..." >>${TMPFILE} - /etc/init.d/xinetd restart >>${TMPFILE} 2>&1 - ret_val=$? - fi - else - /etc/init.d/xinetd %{xinetd_reload} >>${TMPFILE} 2>&1 - ret_val=$? - fi - if [ ${ret_val} -eq 0 ] ; then - echo "success." >>${TMPFILE} - cat ${TMPFILE} - cat ${TMPFILE} >>${INSTALL_LOG} - else - echo "failed. Please check your system logs." >>${TMPFILE} - cat ${TMPFILE} 1>&2 - cat ${TMPFILE} >>${INSTALL_ERR} - fi - fi -fi - -echo "`date +'%b %e %Y %T'`: Installing '%{AMANDATES}'." >${TMPFILE} -ret_val=0 -if [ ! -f %{AMANDATES} ] ; then - touch %{AMANDATES} >>${TMPFILE} 2>&1 - ret_val=$? - if [ ${ret_val} -eq 0 ]; then - echo "`date +'%b %e %Y %T'`: The file '%{AMANDATES}' has been created." >>${TMPFILE} - fi -fi -if [ ${ret_val} -eq 0 ]; then - echo "`date +'%b %e %Y %T'`: Ensuring correct permissions for '%{AMANDATES}'." >>${TMPFILE} - chown %{amanda_user}:%{amanda_group} %{AMANDATES} >>${TMPFILE} 2>&1 - chmod 0640 %{AMANDATES} >>${TMPFILE} 2>&1 - if [ -x /sbin/restorecon ] ; then - /sbin/restorecon %{AMANDATES} >>${TMPFILE} 2>&1 - fi -fi -if [ ${ret_val} -eq 0 ]; then - echo "`date +'%b %e %Y %T'`: '%{AMANDATES}' Installation successful." >>${TMPFILE} - cat ${TMPFILE} - cat ${TMPFILE} >>${INSTALL_LOG} -else - echo "`date +'%b %e %Y %T'`: '%{AMANDATES}' Installation failed." >>${TMPFILE} - cat ${TMPFILE} - cat ${TMPFILE} >>${INSTALL_ERR} -fi - - -# Install .gnupg directory -echo "`date +'%b %e %Y %T'`: Installing '%{AMANDAHOMEDIR}/.gnupg'." >${TMPFILE} -ret_val=0 -if [ ! -d %{AMANDAHOMEDIR}/.gnupg ] ; then - echo "`date +'%b %e %Y %T'`: '%{AMANDAHOMEDIR}/.gnupg' will be created." >>${TMPFILE} - mkdir %{AMANDAHOMEDIR}/.gnupg >>${TMPFILE} 2>&1 - ret_val=$? - if [ ${ret_val} -eq 0 ]; then - echo "`date +'%b %e %Y %T'`: The directory '%{AMANDAHOMEDIR}/.gnupg' created successfully." >>${TMPFILE} - else - echo "`date +'%b %e %Y %T'`: The directory '%{AMANDAHOMEDIR}/.gnupg' creation failed." >>${TMPFILE} - fi -fi -if [ ${ret_val} -eq 0 ]; then - echo "`date +'%b %e %Y %T'`: Ensuring correct permissions for '%{AMANDAHOMEDIR}/.gnupg'." >>${TMPFILE} - chown %{amanda_user}:%{amanda_group} %{AMANDAHOMEDIR}/.gnupg >>${TMPFILE} 2>&1 - ret_val=$? - if [ ${ret_val} -eq 0 ]; then - chmod 700 %{AMANDAHOMEDIR}/.gnupg >>${TMPFILE} 2>&1 - ret_val=$? - fi -fi -if [ ${ret_val} -eq 0 ]; then - echo "`date +'%b %e %Y %T'`: '%{AMANDAHOMEDIR}/.gnupg' Installation successful." >>${TMPFILE} - cat ${TMPFILE} - cat ${TMPFILE} >>${INSTALL_LOG} -else - echo "`date +'%b %e %Y %T'`: '%{AMANDAHOMEDIR}/.gnupg' Installation failed." >>${TMPFILE} - cat ${TMPFILE} - cat ${TMPFILE} >>${INSTALL_ERR} -fi - -# Install .amandahosts -echo "`date +'%b %e %Y %T'`: Checking '%{AMANDAHOMEDIR}/.amandahosts' file." >${TMPFILE} -if [ ! -f %{AMANDAHOMEDIR}/.amandahosts ] ; then - touch %{AMANDAHOMEDIR}/.amandahosts >>${TMPFILE} 2>&1 -fi -for host in localhost localhost.localdomain ; do - if [ -z "`grep \"^${host}[[:blank:]]\+root[[:blank:]]\+amindexd[[:blank:]]\+amidxtaped\" %{AMANDAHOMEDIR}/.amandahosts`" ] ; then - echo "${host} root amindexd amidxtaped" >>%{AMANDAHOMEDIR}/.amandahosts - fi - if [ -z "`grep \"^${host}[[:blank:]]\+%{amanda_user}[[:blank:]]\+amdump\" %{AMANDAHOMEDIR}/.amandahosts`" ] ; then - echo "${host} %{amanda_user} amdump" >>%{AMANDAHOMEDIR}/.amandahosts - fi -done -chown %{amanda_user}:%{amanda_group} %{AMANDAHOMEDIR}/.amandahosts >>${TMPFILE} 2>&1 -chmod 0600 %{AMANDAHOMEDIR}/.amandahosts >>${TMPFILE} 2>&1 -cat ${TMPFILE} -cat ${TMPFILE} >>${INSTALL_LOG} - -# SSH RSA key generation for amdump -KEYDIR="%{AMANDAHOMEDIR}/.ssh" -KEYFILE="id_rsa_amdump" -COMMENT="%{amanda_user}@server" -if [ ! -d ${KEYDIR} ] ; then - if [ -f ${KEYDIR} ] ; then - echo "`date +'%b %e %Y %T'`: Directory '${KEYDIR}' exists as a file. Renaming to '${KEYDIR}.rpmsave'." >${TMPFILE} - mv ${KEYDIR} ${KEYDIR}.rpmsave - cat ${TMPFILE} - cat ${TMPFILE} >>${INSTALL_LOG} - fi - echo "`date +'%b %e %Y %T'`: Creating directory '${KEYDIR}'." >${TMPFILE} - mkdir ${KEYDIR} >>${TMPFILE} 2>&1 - cat ${TMPFILE} - cat ${TMPFILE} >>${INSTALL_LOG} -fi -if [ ! -f ${KEYDIR}/${KEYFILE} ] ; then - echo "`date +'%b %e %Y %T'`: Creating ssh RSA key in '${KEYDIR}/${KEYFILE}'" >${TMPFILE} - cat ${TMPFILE} - cat ${TMPFILE} >>${INSTALL_LOG} - ssh-keygen -q -C $COMMENT -t rsa -f ${KEYDIR}/${KEYFILE} -N '' >>${TMPFILE} 2>&1 - cat ${TMPFILE} - cat ${TMPFILE} >>${INSTALL_LOG} -fi -echo "`date +'%b %e %Y %T'`: Setting ownership and permissions for '${KEYDIR}' and '${KEYDIR}/${KEYFILE}*'" >${TMPFILE} -chown %{amanda_user}:%{amanda_group} ${KEYDIR} ${KEYDIR}/${KEYFILE}* >>${TMPFILE} 2>&1 -chmod 0750 ${KEYDIR} >>${TMPFILE} 2>&1 -chmod 0600 ${KEYDIR}/${KEYFILE}* >>${TMPFILE} 2>&1 -cat ${TMPFILE} -cat ${TMPFILE} >>${INSTALL_LOG} - -# SSH RSA key generation on client for amrecover -KEYDIR="%{AMANDAHOMEDIR}/.ssh" -KEYFILE="id_rsa_amrecover" -COMMENT="root@client" -if [ ! -d ${KEYDIR} ] ; then - if [ -f ${KEYDIR} ] ; then - echo "`date +'%b %e %Y %T'`: Directory '${KEYDIR}' exists as a file. Renaming to '${KEYDIR}.rpmsave'." >${TMPFILE} - mv ${KEYDIR} ${KEYDIR}.rpmsave >>${TMPFILE} 2>&1 - cat ${TMPFILE} - cat ${TMPFILE} >>${INSTALL_LOG} - fi - echo "`date +'%b %e %Y %T'`: Creating directory '${KEYDIR}'." >${TMPFILE} - mkdir ${KEYDIR} >>${TMPFILE} 2>&1 - cat ${TMPFILE} - cat ${TMPFILE} >>${INSTALL_LOG} -fi -if [ ! -f ${KEYDIR}/${KEYFILE} ] ; then - echo "`date +'%b %e %Y %T'`: Creating ssh RSA key in '${KEYDIR}/${KEYFILE}'" >${TMPFILE} - ssh-keygen -q -C $COMMENT -t rsa -f ${KEYDIR}/${KEYFILE} -N '' >>${TMPFILE} 2>&1 - cat ${TMPFILE} - cat ${TMPFILE} >>${INSTALL_LOG} -fi -echo "`date +'%b %e %Y %T'`: Setting permissions for '${KEYDIR}'" >${TMPFILE} -chown %{amanda_user}:%{amanda_group} ${KEYDIR} >>${TMPFILE} 2>&1 -chmod 0750 ${KEYDIR} >>${TMPFILE} 2>&1 -chmod 0600 ${KEYDIR}/${KEYFILE}* >>${TMPFILE} 2>&1 -cat ${TMPFILE} -cat ${TMPFILE} >>${INSTALL_LOG} - -# environment variables (~amandabackup/.profile) -echo "`date +'%b %e %Y %T'`: Checking for '%{AMANDAHOMEDIR}/.profile' and ensuring correct environment." >${TMPFILE} -if [ ! -f %{AMANDAHOMEDIR}/.profile ] ; then - touch %{AMANDAHOMEDIR}/.profile >>${TMPFILE} 2>&1 -fi -if [ -z "`grep PATH %{AMANDAHOMEDIR}/.profile | grep '%{SBINDIR}'`" ] ; then - echo "export PATH=\"\$PATH:%{SBINDIR}\"" >>%{AMANDAHOMEDIR}/.profile 2>>${TMPFILE} -fi -echo "`date +'%b %e %Y %T'`: Setting ownership and permissions for '%{AMANDAHOMEDIR}/.profile'" >>${TMPFILE} -chown %{amanda_user}:%{amanda_group} %{AMANDAHOMEDIR}/.profile >>${TMPFILE} 2>&1 -chmod 0640 %{AMANDAHOMEDIR}/.profile >>${TMPFILE} 2>&1 -cat ${TMPFILE} -cat ${TMPFILE} >>${INSTALL_LOG} - -echo "`date +'%b %e %Y %T'`: Sending anonymous distribution and version information to Zmanda" >> ${INSTALL_LOG} -if [ -x /usr/bin/wget ]; then - /usr/bin/wget -q -o /dev/null -O - --timeout=5 http://www.zmanda.com/amanda-tips.php\?version=%{amanda_version}\&os=%{disttag}%{distver}\&type=server -fi - -echo "`date +'%b %e %Y %T'`: === Amanda installation complete. ===" >${TMPFILE} - -cat ${TMPFILE} -cat ${TMPFILE} >>${INSTALL_LOG} -if [ -f "${TMPFILE}" ]; then - rm -f "${TMPFILE}" -fi +# Define script variables +# Some versions of rpmbuild do not like multi-line macros in spec files. ugly. +%define script_vars amanda_user=%{amanda_user}; amanda_group=%{amanda_group}; AMANDAHOMEDIR=%{AMANDAHOMEDIR}; os=Linux; wanted_shell=/bin/bash; dist=%{dist}; LOGDIR=%{LOGDIR}; INSTALL_LOG=$LOGDIR/install.log; SYSCONFDIR=%{SYSCONFDIR}; SBINDIR=%{SBINDIR}; +# --- Pre/post (un)installation scripts --- -echo "Amanda installation log can be found in '${INSTALL_LOG}' and errors (if any) in '${INSTALL_ERR}'." -%postun -/sbin/ldconfig %pre backup_server -TMPFILE=`mktemp /tmp/rpm-amanda.XXXXXXXXXXX` +########################################## +LOGFILE=`mktemp /tmp/amanda_server-preinst.log.XXXXXXXXXXX` if [ $? -ne 0 ]; then - echo "Unable to mktemp!" 1>&2 + echo "Unable to create log file!" exit 1 fi +%{script_vars} -LOGDIR="%{LOGDIR}" -INSTALL_LOG="${LOGDIR}/install.log" -INSTALL_ERR="${LOGDIR}/install.err" - -echo "`date +'%b %e %Y %T'`: Preparing to install: %{amanda_version_info}" >${TMPFILE} - -# Check for the 'amanda' user -echo "`date +'%b %e %Y %T'`: Checking for '%{amanda_user}' user..." >>${TMPFILE} -if [ "`id -u %{amanda_user} > /dev/null 2>&1 && echo 0 || echo 1`" != "0" ] ; then - useradd -c "Amanda" -M -g %{amanda_group} -d %{AMANDAHOMEDIR} -s /bin/bash %{amanda_user} - if [ %{dist} = "SuSE" ]; then - PASSWD_EXIT=$? - else - # Lock the amanda account until admin sets password - passwd -l %{amanda_user} >>/dev/null - PASSWD_EXIT=$? - fi - if [ ${PASSWD_EXIT} -eq 0 ] ; then - echo "`date +'%b %e %Y %T'`:" >>${TMPFILE} - echo "`date +'%b %e %Y %T'`: The '%{amanda_user}; user account has been successfully created." >>${TMPFILE} - echo "`date +'%b %e %Y %T'`: Furthermore, the account has been automatically locked for you" >>${TMPFILE} - echo "`date +'%b %e %Y %T'`: for security purposes. Once a password for the '%{amanda_user}'" >>${TMPFILE} - echo "`date +'%b %e %Y %T'`: account has been set, the user can be unlocked by issuing" >>${TMPFILE} - echo "`date +'%b %e %Y %T'`: the following command as root.:" >>${TMPFILE} - echo "`date +'%b %e %Y %T'`:" >>${TMPFILE} - echo "`date +'%b %e %Y %T'`: # passwd -u %{amanda_user}" >>${TMPFILE} - echo "`date +'%b %e %Y %T'`:" >>${TMPFILE} - echo "`date +'%b %e %Y %T'`: If this is not a new installation of Amanda and you have" >>${TMPFILE} - echo "`date +'%b %e %Y %T'`: pre-existing Amanda configurations in %{SYSCONFDIR}/amanda" >>${TMPFILE} - echo "`date +'%b %e %Y %T'`: you should ensure that 'dumpuser' is set to '%{amanda_user}'" >>${TMPFILE} - echo "`date +'%b %e %Y %T'`: in those configurations. Additionally, you should ensure" >>${TMPFILE} - echo "`date +'%b %e %Y %T'`: that %{AMANDAHOMEDIR}/.amandahosts on your client systems" >>${TMPFILE} - echo "`date +'%b %e %Y %T'`: is properly configured to allow connections for the user" >>${TMPFILE} - echo "`date +'%b %e %Y %T'`: '%{amanda_user}'." >>${TMPFILE} - echo "`date +'%b %e %Y %T'`:" >>${TMPFILE} - PASSWD_OK=0 - else - echo "`date +'%b %e %Y %T'`: !!! WARNING! WARNING! WARNING! WARNING! WARNING! WARNING! !!!" >>${TMPFILE} - echo "`date +'%b %e %Y %T'`: !!! !!!" >>${TMPFILE} - echo "`date +'%b %e %Y %T'`: !!! The '%{amanda_user}' user account for this system has been !!!" >>${TMPFILE} - echo "`date +'%b %e %Y %T'`: !!! created, however the user has no password set. For !!!" >>${TMPFILE} - echo "`date +'%b %e %Y %T'`: !!! security purposes this account is normally locked !!!" >>${TMPFILE} - echo "`date +'%b %e %Y %T'`: !!! after creation. Unfortunately, when locking this !!!" >>${TMPFILE} - echo "`date +'%b %e %Y %T'`: !!! account an error occurred. To ensure the security !!!" >>${TMPFILE} - echo "`date +'%b %e %Y %T'`: !!! of your system you should set a password for the !!!" >>${TMPFILE} - echo "`date +'%b %e %Y %T'`: !!! user account '%{amanda_user}' immediately! To set such a !!!" >>${TMPFILE} - echo "`date +'%b %e %Y %T'`: !!! password, please issue the following command.: !!!" >>${TMPFILE} - echo "`date +'%b %e %Y %T'`: !!! !!!" >>${TMPFILE} - echo "`date +'%b %e %Y %T'`: !!! # passwd %{amanda_user} !!!" >>${TMPFILE} - echo "`date +'%b %e %Y %T'`: !!! !!!" >>${TMPFILE} - echo "`date +'%b %e %Y %T'`: !!! WARNING! WARNING! WARNING! WARNING! WARNING! WARNING! !!!" >>${TMPFILE} - PASSWD_OK=1 - fi -else - # log information about 'amanda' user parameters - echo "`date +'%b %e %Y %T'`:" >>${TMPFILE} - echo "`date +'%b %e %Y %T'`: The Amanda backup software is configured to operate as the" >>${TMPFILE} - echo "`date +'%b %e %Y %T'`: user '%{amanda_user}'. This user exists on your system and has not" >>${TMPFILE} - echo "`date +'%b %e %Y %T'`: been modified. To ensure that Amanda functions properly," >>${TMPFILE} - echo "`date +'%b %e %Y %T'`: please see that the following parameters are set for that" >>${TMPFILE} - echo "`date +'%b %e %Y %T'`: user.:" >>${TMPFILE} - echo "`date +'%b %e %Y %T'`:" >>${TMPFILE} - echo "`date +'%b %e %Y %T'`: SHELL: /bin/bash" >>${TMPFILE} - echo "`date +'%b %e %Y %T'`: HOME: %{AMANDAHOMEDIR}" >>${TMPFILE} - echo "`date +'%b %e %Y %T'`: Default group: %{amanda_group}" >>${TMPFILE} - echo "`date +'%b %e %Y %T'`: Verifying %{amanda_user} parameters :" >>${TMPFILE} - - if [ "`id -gn %{amanda_user}`" != "disk" ] ; then - echo "`date +'%b %e %Y %T'`: !!! WARNING! WARNING! WARNING! WARNING! WARNING! WARNING! !!!" >>${TMPFILE} - echo "`date +'%b %e %Y %T'`: !!! user 'amandabackup' is not part of the disk group,Pl !!!" >>${TMPFILE} - echo "`date +'%b %e %Y %T'`: !!! make sure it is corrected before start using Amanda !!!" >>${TMPFILE} - echo "`date +'%b %e %Y %T'`: !!! WARNING! WARNING! WARNING! WARNING! WARNING! WARNING! !!!" >>${TMPFILE} - else - echo "`date +'%b %e %Y %T'`: Verified group name of user 'amandabackup'" >>${TMPFILE} - fi - if [ "`grep ^%{amanda_user} /etc/passwd|cut -d: -f7`" != "/bin/bash" ] ; then - echo "`date +'%b %e %Y %T'`: !!! WARNING! WARNING! WARNING! WARNING! WARNING! WARNING! !!!" >>${TMPFILE} - echo "`date +'%b %e %Y %T'`: !!! user 'amandabackup' default shell should be set to !!!" >>${TMPFILE} - echo "`date +'%b %e %Y %T'`: !!! /bin/bash, pl correct before start using Amanda !!!" >>${TMPFILE} - echo "`date +'%b %e %Y %T'`: !!! WARNING! WARNING! WARNING! WARNING! WARNING! WARNING! !!!" >>${TMPFILE} - else - echo "`date +'%b %e %Y %T'`: Verified Default shell for user 'amandabackup'" >>${TMPFILE} - fi +# See packaging/common/ for shell function libraries. +# ---------- Common functions ------------ +%%COMMON_FUNCTIONS%% +%%PRE_INST_FUNCTIONS%% - if [ "`grep ^%{amanda_user} /etc/passwd|cut -d: -f6`" != "%{AMANDAHOMEDIR}" ] ; then - echo "`date +'%b %e %Y %T'`: !!! WARNING! WARNING! WARNING! WARNING! WARNING! WARNING! !!!" >>${TMPFILE} - echo "`date +'%b %e %Y %T'`: !!! user 'amandabackup' home directory should be set to !!!" >>${TMPFILE} - echo "`date +'%b %e %Y %T'`: !!! %{AMANDAHOMEDIR} Pl correct before using Amanda !!!" >>${TMPFILE} - echo "`date +'%b %e %Y %T'`: !!! WARNING! WARNING! WARNING! WARNING! WARNING! WARNING! !!!" >>${TMPFILE} - else - echo "`date +'%b %e %Y %T'`: Verified Default home directory for user amandabackup" >>${TMPFILE} - fi - echo "`date +'%b %e %Y %T'`:" >>${TMPFILE} - PASSWD_OK=0 -fi -if [ -d %{AMANDAHOMEDIR} ] ; then - echo -n "`date +'%b %e %Y %T'`: Checking ownership of '%{AMANDAHOMEDIR}'... " >>${TMPFILE} - if [ "`ls -dl %{AMANDAHOMEDIR} | awk '//{split($_,x); print x[3]}'`" = "%{amanda_user}" ] && \ - [ "`ls -dl %{AMANDAHOMEDIR} | awk '//{split($_,x); print x[4]}'`" = "%{amanda_group}" ] ; then - echo "correct." >>${TMPFILE} - VARLIB_OK=0 - else - echo "incorrect!" >>${TMPFILE} - echo "`date +'%b %e %Y %T'`: Please ensure that the directory '%{AMANDAHOMEDIR}' is owned by" >>${TMPFILE} - echo "`date +'%b %e %Y %T'`: the user '%{amanda_user}' and group '%{amanda_group}'." >>${TMPFILE} - VARLIB_OK=1 - fi -else - VARLIB_OK=0 -fi -echo "`date +'%b %e %Y %T'`:" >>${TMPFILE} - -if [ ! -e ${LOGDIR} ] ; then - # create log directory - mkdir -m 0750 ${LOGDIR} >>${TMPFILE} 2>&1 - chown %{amanda_user}:%{amanda_group} ${LOGDIR} >>${TMPFILE} 2>&1 -elif [ ! -d ${LOGDIR} ] ; then - mv ${LOGDIR} ${LOGDIR}.rpmsave >>${TMPFILE} 2>&1 - mkdir -m 0750 ${LOGDIR} >>${TMPFILE} 2>&1 - chown %{amanda_user}:%{amanda_group} ${LOGDIR} >>${TMPFILE} 2>&1 - mv ${LOGDIR}.rpmsave ${LOGDIR}/ >>${TMPFILE} 2>&1 -fi -if [ ${PASSWD_OK} -eq 1 ] || [ ${VARLIB_OK} -eq 1 ] ; then - cat ${TMPFILE} - cat ${TMPFILE} >>${INSTALL_ERR} - echo "Please review '${INSTALL_ERR}' to correct errors which have prevented the Amanda installaton." >&2 - echo "Amanda installation log can be found in '${INSTALL_LOG}' and errors (if any) in '${INSTALL_ERR}'." - exit 1 -else - cat ${TMPFILE} - cat ${TMPFILE} >>${INSTALL_LOG} -fi +# -------- End Common functions ---------- +logger "Preparing to install: Amanda Server %%VERSION%%" +create_user +check_user_group "${amanda_group}" || add_group "${amanda_group}" +check_user_supplemental_group "tape" || add_group "tape" +check_user_shell "${wanted_shell}" +check_user_homedir "${AMANDAHOMEDIR}" +check_homedir || create_homedir +create_logdir -echo "`date +'%b %e %Y %T'`: === Amanda backup server installation started. ===" >${TMPFILE} +logger "Preinstall done." +cat $LOGFILE > $INSTALL_LOG && rm $LOGFILE || \ + echo "Amanda preinstall logs can be found in '$LOGFILE'." -cat ${TMPFILE} -cat ${TMPFILE} >>${INSTALL_LOG} -if [ -f "${TMPFILE}" ]; then - rm -f "${TMPFILE}" -fi %post backup_server -TMPFILE=`mktemp /tmp/rpm-amanda.XXXXXXXXXXX` +########################################## +LOGFILE=`mktemp /tmp/amanda_server-postinst.log.XXXXXXXXXXX` if [ $? -ne 0 ]; then - echo "Unable to mktemp!" 1>&2 + echo "Unable to create log file!" exit 1 fi -LOGDIR="%{LOGDIR}" -INSTALL_LOG="${LOGDIR}/install.log" -INSTALL_ERR="${LOGDIR}/install.err" +%{script_vars} +AMANDATES=%{AMANDATES} -echo -n "`date +'%b %e %Y %T'`: Updating system library cache..." >${TMPFILE} -/sbin/ldconfig -echo "done." >>${TMPFILE} -cat ${TMPFILE} -cat ${TMPFILE} >>${INSTALL_LOG} - -if [ -e /etc/xinetd.d ] && [ -d /etc/xinetd.d ] ; then - if [ ! -f /etc/xinetd.d/amandaserver ] ; then - cp %{AMANDAHOMEDIR}/example/xinetd.amandaserver /etc/xinetd.d/amandaserver - chmod 0644 /etc/xinetd.d/amandaserver >>${TMPFILE} 2>&1 - if [ -f /etc/xinetd.d/amandaclient ] ; then - rm /etc/xinetd.d/amandaclient - fi - - echo -n "`date +'%b %e %Y %T'`: Reloading xinetd configuration..." >${TMPFILE} - if [ "%{xinetd_reload}" == "reload" ] ; then - /etc/init.d/xinetd %{xinetd_reload} >>${TMPFILE} 2>&1 - ret_val=$? - if [ ${ret_val} -ne 0 ] ; then - echo -n "reload failed. Attempting restart..." >>${TMPFILE} - /etc/init.d/xinetd restart >>${TMPFILE} 2>&1 - ret_val=$? - fi - else - /etc/init.d/xinetd %{xinetd_reload} >>${TMPFILE} 2>&1 - ret_val=$? - fi - if [ ${ret_val} -eq 0 ] ; then - echo "success." >>${TMPFILE} - cat ${TMPFILE} - cat ${TMPFILE} >>${INSTALL_LOG} - else - echo "failed. Please check your system logs." >>${TMPFILE} - cat ${TMPFILE} 1>&2 - cat ${TMPFILE} >>${INSTALL_ERR} - fi - fi -fi +# ---------- Common functions ------------ +%%COMMON_FUNCTIONS%% +%%POST_INST_FUNCTIONS%% -echo "`date +'%b %e %Y %T'`: Installing '%{AMANDATES}'." >${TMPFILE} -ret_val=0 -if [ ! -f %{AMANDATES} ] ; then - touch %{AMANDATES} >>${TMPFILE} 2>&1 - ret_val=$? - if [ ${ret_val} -eq 0 ]; then - echo "`date +'%b %e %Y %T'`: The file '%{AMANDATES}' has been created." >>${TMPFILE} - fi -fi -if [ ${ret_val} -eq 0 ]; then - echo "`date +'%b %e %Y %T'`: Ensuring correct permissions for '%{AMANDATES}'." >>${TMPFILE} - chown %{amanda_user}:%{amanda_group} %{AMANDATES} >>${TMPFILE} 2>&1 - chmod 0640 %{AMANDATES} >>${TMPFILE} 2>&1 -fi -if [ ${ret_val} -eq 0 ]; then - echo "`date +'%b %e %Y %T'`: '%{AMANDATES}' Installation successful." >>${TMPFILE} - cat ${TMPFILE} - cat ${TMPFILE} >>${INSTALL_LOG} -else - echo "`date +'%b %e %Y %T'`: '%{AMANDATES}' Installation failed." >>${TMPFILE} - cat ${TMPFILE} - cat ${TMPFILE} >>${INSTALL_ERR} -fi - -# Install .amandahosts to server -echo "`date +'%b %e %Y %T'`: Checking '%{AMANDAHOMEDIR}/.amandahosts' file." >${TMPFILE} -if [ ! -f %{AMANDAHOMEDIR}/.amandahosts ] ; then - touch %{AMANDAHOMEDIR}/.amandahosts >>${TMPFILE} 2>&1 -fi -for host in localhost localhost.localdomain ; do - if [ -z "`grep \"^${host}[[:blank:]]\+root[[:blank:]]\+amindexd[[:blank:]]\+amidxtaped\" %{AMANDAHOMEDIR}/.amandahosts`" ] ; then - echo "${host} root amindexd amidxtaped" >>%{AMANDAHOMEDIR}/.amandahosts - fi - if [ -z "`grep \"^${host}[[:blank:]]\+%{amanda_user}[[:blank:]]\+amdump\" %{AMANDAHOMEDIR}/.amandahosts`" ] ; then - echo "${host} %{amanda_user} amdump" >>%{AMANDAHOMEDIR}/.amandahosts - fi -done -chown %{amanda_user}:%{amanda_group} %{AMANDAHOMEDIR}/.amandahosts >>${TMPFILE} 2>&1 -chmod 0600 %{AMANDAHOMEDIR}/.amandahosts >>${TMPFILE} 2>&1 -cat ${TMPFILE} -cat ${TMPFILE} >>${INSTALL_LOG} - -# Install amanda client configuration file -echo "`date +'%b %e %Y %T'`: Checking '%{SYSCONFDIR}/amanda/amanda-client.conf' file." >${TMPFILE} -if [ ! -f %{SYSCONFDIR}/amanda/amanda-client.conf ] ; then - cp %{AMANDAHOMEDIR}/example/amanda-client.conf %{SYSCONFDIR}/amanda/amanda-client.conf >>${TMPFILE} 2>&1 -fi -chown %{amanda_user}:%{amanda_group} %{SYSCONFDIR}/amanda/amanda-client.conf >>${TMPFILE} 2>&1 -chmod 0600 %{SYSCONFDIR}/amanda/amanda-client.conf >>${TMPFILE} 2>&1 -cat ${TMPFILE} -cat ${TMPFILE} >>${INSTALL_LOG} - -# install am_passphrase file to server -echo "`date +'%b %e %Y %T'`: Checking '%{AMANDAHOMEDIR}/.am_passphrase' file." >${TMPFILE} -if [ ! -f %{AMANDAHOMEDIR}/.am_passphrase ] ; then - echo "`date +'%b %e %Y %T'`: Create '%{AMANDAHOMEDIR}/.am_passphrase' file." >${TMPFILE} - touch %{AMANDAHOMEDIR}/.am_passphrase >>${TMPFILE} 2>&1 - phrase=`echo $RANDOM | md5sum | awk '{print $1}'` - echo ${phrase} >>%{AMANDAHOMEDIR}/.am_passphrase - - chown %{amanda_user}:%{amanda_group} %{AMANDAHOMEDIR}/.am_passphrase >>${TMPFILE} 2>&1 - chmod 0700 %{AMANDAHOMEDIR}/.am_passphrase >>${TMPFILE} 2>&1 -fi -cat ${TMPFILE} -cat ${TMPFILE} >>${INSTALL_LOG} - -# Install .gnupg directory -echo "`date +'%b %e %Y %T'`: Installing '%{AMANDAHOMEDIR}/.gnupg'." >${TMPFILE} -ret_val=0 -if [ ! -d %{AMANDAHOMEDIR}/.gnupg ] ; then - echo "`date +'%b %e %Y %T'`: '%{AMANDAHOMEDIR}/.gnupg' will be created." >>${TMPFILE} - mkdir %{AMANDAHOMEDIR}/.gnupg >>${TMPFILE} 2>&1 - ret_val=$? - if [ ${ret_val} -eq 0 ]; then - echo "`date +'%b %e %Y %T'`: The directory '%{AMANDAHOMEDIR}/.gnupg' created successfully." >>${TMPFILE} - else - echo "`date +'%b %e %Y %T'`: The directory '%{AMANDAHOMEDIR}/.gnupg' creation failed." >>${TMPFILE} - fi -fi -if [ ${ret_val} -eq 0 ]; then - echo "`date +'%b %e %Y %T'`: Ensuring correct permissions for '%{AMANDAHOMEDIR}/.gnupg'." >>${TMPFILE} - chown %{amanda_user}:%{amanda_group} %{AMANDAHOMEDIR}/.gnupg >>${TMPFILE} 2>&1 - ret_val=$? - if [ ${ret_val} -eq 0 ]; then - chmod 700 %{AMANDAHOMEDIR}/.gnupg >>${TMPFILE} 2>&1 - ret_val=$? - fi -fi -if [ ${ret_val} -eq 0 ]; then - echo "`date +'%b %e %Y %T'`: '%{AMANDAHOMEDIR}/.gnupg' Installation successful." >>${TMPFILE} - cat ${TMPFILE} - cat ${TMPFILE} >>${INSTALL_LOG} -else - echo "`date +'%b %e %Y %T'`: '%{AMANDAHOMEDIR}/.gnupg' Installation failed." >>${TMPFILE} - cat ${TMPFILE} - cat ${TMPFILE} >>${INSTALL_ERR} -fi - -# SSH RSA key generation on server for amdump -KEYDIR="%{AMANDAHOMEDIR}/.ssh" -KEYFILE="id_rsa_amdump" -COMMENT="%{amanda_user}@server" -if [ ! -d ${KEYDIR} ] ; then - if [ -f ${KEYDIR} ] ; then - echo "`date +'%b %e %Y %T'`: Directory '${KEYDIR}' exists as a file. Renaming to '${KEYDIR}.rpmsave'." >${TMPFILE} - mv ${KEYDIR} ${KEYDIR}.rpmsave >>${TMPFILE} 2>&1 - cat ${TMPFILE} - cat ${TMPFILE} >>${INSTALL_LOG} - fi - echo "`date +'%b %e %Y %T'`: Creating directory '${KEYDIR}'." >${TMPFILE} - mkdir ${KEYDIR} >>${TMPFILE} 2>&1 - cat ${TMPFILE} - cat ${TMPFILE} >>${INSTALL_LOG} -fi -if [ ! -f ${KEYDIR}/${KEYFILE} ] ; then - echo "`date +'%b %e %Y %T'`: Creating ssh RSA key in '${KEYDIR}/${KEYFILE}'" >${TMPFILE} - ssh-keygen -q -C $COMMENT -t rsa -f ${KEYDIR}/${KEYFILE} -N '' >>${TMPFILE} 2>&1 - cat ${TMPFILE} - cat ${TMPFILE} >>${INSTALL_LOG} -fi -echo "`date +'%b %e %Y %T'`: Setting ownership and permissions for '${KEYDIR}' and '${KEYDIR}/${KEYFILE}*'" >${TMPFILE} -chown %{amanda_user}:%{amanda_group} ${KEYDIR} ${KEYDIR}/${KEYFILE}* >>${TMPFILE} 2>&1 -chmod 0750 ${KEYDIR} >>${TMPFILE} 2>&1 -chmod 0600 ${KEYDIR}/${KEYFILE}* >>${TMPFILE} 2>&1 -cat ${TMPFILE} -cat ${TMPFILE} >>${INSTALL_LOG} - -# SSH RSA key generation on client for amrecover -KEYDIR="%{AMANDAHOMEDIR}/.ssh" -KEYFILE="id_rsa_amrecover" -COMMENT="root@client" -if [ ! -d ${KEYDIR} ] ; then - if [ -f ${KEYDIR} ] ; then - echo "`date +'%b %e %Y %T'`: Directory '${KEYDIR}' exists as a file. Renaming to '${KEYDIR}.rpmsave'." >${TMPFILE} - mv ${KEYDIR} ${KEYDIR}.rpmsave >>${TMPFILE} 2>&1 - cat ${TMPFILE} - cat ${TMPFILE} >>${INSTALL_LOG} - fi - echo "`date +'%b %e %Y %T'`: Creating directory '${KEYDIR}'." >${TMPFILE} - mkdir ${KEYDIR} >>${TMPFILE} 2>&1 - cat ${TMPFILE} - cat ${TMPFILE} >>${INSTALL_LOG} -fi -if [ ! -f ${KEYDIR}/${KEYFILE} ] ; then - echo "`date +'%b %e %Y %T'`: Creating ssh RSA key in '${KEYDIR}/${KEYFILE}'" >${TMPFILE} - ssh-keygen -q -C $COMMENT -t rsa -f ${KEYDIR}/${KEYFILE} -N '' >>${TMPFILE} 2>&1 - cat ${TMPFILE} - cat ${TMPFILE} >>${INSTALL_LOG} -fi -echo "`date +'%b %e %Y %T'`: Setting ownership and permissions for '${KEYDIR}'" >${TMPFILE} -chown %{amanda_user}:%{amanda_group} ${KEYDIR} >>${TMPFILE} 2>&1 -chmod 0750 ${KEYDIR} >>${TMPFILE} 2>&1 -chmod 0600 ${KEYDIR}/${KEYFILE}* >>${TMPFILE} 2>&1 -cat ${TMPFILE} -cat ${TMPFILE} >>${INSTALL_LOG} - -# environment variables (~amandabackup/.profile) -echo "`date +'%b %e %Y %T'`: Checking for '%{AMANDAHOMEDIR}/.profile' and ensuring correct environment." >${TMPFILE} -if [ ! -f %{AMANDAHOMEDIR}/.profile ] ; then - touch %{AMANDAHOMEDIR}/.profile >>${TMPFILE} 2>&1 -fi -if [ -z "`grep PATH %{AMANDAHOMEDIR}/.profile | grep '%{SBINDIR}'`" ] ; then - echo "export PATH=\"\$PATH:%{SBINDIR}\"" >>%{AMANDAHOMEDIR}/.profile 2>>${TMPFILE} -fi -cat ${TMPFILE} -cat ${TMPFILE} >>${INSTALL_LOG} - -echo "`date +'%b %e %Y %T'`: Setting ownership and permissions for '%{AMANDAHOMEDIR}/.profile'" >${TMPFILE} -chown %{amanda_user}:%{amanda_group} %{AMANDAHOMEDIR}/.profile >>${TMPFILE} 2>&1 -chmod 0640 %{AMANDAHOMEDIR}/.profile >>${TMPFILE} 2>&1 -cat ${TMPFILE} -cat ${TMPFILE} >>${INSTALL_LOG} - -echo "`date +'%b %e %Y %T'`: Sending anonymous distribution and version information to Zmanda" >> ${INSTALL_LOG} -if [ -x /usr/bin/wget ]; then - /usr/bin/wget -q -o /dev/null -O - --timeout=5 http://www.zmanda.com/amanda-tips.php\?version=%{amanda_version}\&os=%{disttag}%{distver}\&type=server -fi - -echo "`date +'%b %e %Y %T'`: === Amanda backup server installation complete. ===" >${TMPFILE} +# -------- End Common functions ---------- +/sbin/ldconfig -cat ${TMPFILE} -cat ${TMPFILE} >>${INSTALL_LOG} +check_xinetd "amandaserver" +case $? in + 0) backup_xinetd "amandaserver" + install_xinetd "amandaserver" + ;; + 1) install_xinetd "amandaserver" ;; + 2) logger "Xinetd config not installed: either xinetd config is not present or xinetd.d is a file." ;; + *) logger "bad return from check_xinetd"; exit 1 ;; +esac + +# Amanda servers should not have the client xinetd installed. +check_xinetd "amandaclient" +case $? in + 0) backup_xinetd "amandaclient" ;; +esac + +reload_xinetd +create_amandates +check_amandates +create_gnupg +check_gnupg +create_amandahosts +check_amandahosts_entry root amindexd amidxtaped +check_amandahosts_entry ${amanda_user} amdump +check_amandahosts_perms +create_ssh_key server +create_ssh_key client +create_profile +check_profile +install_client_conf +create_ampassphrase + +logger "Amanda installation complete." +cat $LOGFILE >> $INSTALL_LOG && { + rm $LOGFILE; + echo "Amanda installation log can be found in '${INSTALL_LOG}'."; +} || \ + echo "Amanda postinstall logs can be found in '$LOGFILE'." -if [ -f "${TMPFILE}" ]; then - rm -f "${TMPFILE}" >>${TMPFILE} 2>&1 -fi - -echo "Amanda installation log can be found in '${INSTALL_LOG}' and errors (if any) in '${INSTALL_ERR}'." %postun backup_server -/sbin/ldconfig -%pre backup_client -TMPFILE=`mktemp /tmp/rpm-amanda.XXXXXXXXXXX` +########################################## +LOGFILE=`mktemp /tmp/amanda_server-remove.log.XXXXXXXXXXX` if [ $? -ne 0 ]; then - echo "Unable to mktemp!" 1>&2 + echo "Unable to create log file!" exit 1 fi -LOGDIR="%{LOGDIR}" -INSTALL_LOG="${LOGDIR}/install.log" -INSTALL_ERR="${LOGDIR}/install.err" - -echo "`date +'%b %e %Y %T'`: Preparing to install: %{amanda_version_info}" >${TMPFILE} - -# Check for the 'amanda' user -echo "`date +'%b %e %Y %T'`: Checking for '%{amanda_user}' user..." >>${TMPFILE} -if [ "`id -u %{amanda_user} > /dev/null 2>&1 && echo 0 || echo 1`" != "0" ] ; then - useradd -c "Amanda" -M -g %{amanda_group} -d %{AMANDAHOMEDIR} -s /bin/bash %{amanda_user} >>${TMPFILE} 2>&1 - if [ %{dist} = "SuSE" ]; then - PASSWD_EXIT=$? - else - # Lock the amanda account until admin sets password - passwd -l %{amanda_user} >>/dev/null - PASSWD_EXIT=$? - fi - if [ ${PASSWD_EXIT} -eq 0 ] ; then - echo "`date +'%b %e %Y %T'`:" >>${TMPFILE} - echo "`date +'%b %e %Y %T'`: The '%{amanda_user}; user account has been successfully created." >>${TMPFILE} - echo "`date +'%b %e %Y %T'`: Furthermore, the account has been automatically locked for you" >>${TMPFILE} - echo "`date +'%b %e %Y %T'`: for security purposes. Once a password for the '%{amanda_user}'" >>${TMPFILE} - echo "`date +'%b %e %Y %T'`: account has been set, the user can be unlocked by issuing" >>${TMPFILE} - echo "`date +'%b %e %Y %T'`: the following command as root.:" >>${TMPFILE} - echo "`date +'%b %e %Y %T'`:" >>${TMPFILE} - echo "`date +'%b %e %Y %T'`: # passwd -u %{amanda_user}" >>${TMPFILE} - echo "`date +'%b %e %Y %T'`:" >>${TMPFILE} - echo "`date +'%b %e %Y %T'`: If this is not a new installation of Amanda and you have" >>${TMPFILE} - echo "`date +'%b %e %Y %T'`: pre-existing Amanda configurations in %{SYSCONFDIR}/amanda" >>${TMPFILE} - echo "`date +'%b %e %Y %T'`: you should ensure that 'dumpuser' is set to '%{amanda_user}'" >>${TMPFILE} - echo "`date +'%b %e %Y %T'`: in those configurations. Additionally, you should ensure" >>${TMPFILE} - echo "`date +'%b %e %Y %T'`: that %{AMANDAHOMEDIR}/.amandahosts on your client systems" >>${TMPFILE} - echo "`date +'%b %e %Y %T'`: is properly configured to allow connections for the user" >>${TMPFILE} - echo "`date +'%b %e %Y %T'`: '%{amanda_user}'." >>${TMPFILE} - echo "`date +'%b %e %Y %T'`:" >>${TMPFILE} - PASSWD_OK=0 - else - echo "`date +'%b %e %Y %T'`: !!! WARNING! WARNING! WARNING! WARNING! WARNING! WARNING! !!!" >>${TMPFILE} - echo "`date +'%b %e %Y %T'`: !!! !!!" >>${TMPFILE} - echo "`date +'%b %e %Y %T'`: !!! The '%{amanda_user}' user account for this system has been !!!" >>${TMPFILE} - echo "`date +'%b %e %Y %T'`: !!! created, however the user has no password set. For !!!" >>${TMPFILE} - echo "`date +'%b %e %Y %T'`: !!! security purposes this account is normally locked !!!" >>${TMPFILE} - echo "`date +'%b %e %Y %T'`: !!! after creation. Unfortunately, when locking this !!!" >>${TMPFILE} - echo "`date +'%b %e %Y %T'`: !!! account an error occurred. To ensure the security !!!" >>${TMPFILE} - echo "`date +'%b %e %Y %T'`: !!! of your system you should set a password for the !!!" >>${TMPFILE} - echo "`date +'%b %e %Y %T'`: !!! user account '%{amanda_user}' immediately! To set such a !!!" >>${TMPFILE} - echo "`date +'%b %e %Y %T'`: !!! password, please issue the following command.: !!!" >>${TMPFILE} - echo "`date +'%b %e %Y %T'`: !!! !!!" >>${TMPFILE} - echo "`date +'%b %e %Y %T'`: !!! # passwd %{amanda_user} !!!" >>${TMPFILE} - echo "`date +'%b %e %Y %T'`: !!! !!!" >>${TMPFILE} - echo "`date +'%b %e %Y %T'`: !!! WARNING! WARNING! WARNING! WARNING! WARNING! WARNING! !!!" >>${TMPFILE} - PASSWD_OK=1 - fi -else - # log information about 'amanda' user parameters - echo "`date +'%b %e %Y %T'`:" >>${TMPFILE} - echo "`date +'%b %e %Y %T'`: The Amanda backup software is configured to operate as the" >>${TMPFILE} - echo "`date +'%b %e %Y %T'`: user '%{amanda_user}'. This user exists on your system and has not" >>${TMPFILE} - echo "`date +'%b %e %Y %T'`: been modified. To ensure that Amanda functions properly," >>${TMPFILE} - echo "`date +'%b %e %Y %T'`: please see that the following parameters are set for that" >>${TMPFILE} - echo "`date +'%b %e %Y %T'`: user.:" >>${TMPFILE} - echo "`date +'%b %e %Y %T'`:" >>${TMPFILE} - echo "`date +'%b %e %Y %T'`: SHELL: /bin/bash" >>${TMPFILE} - echo "`date +'%b %e %Y %T'`: HOME: %{AMANDAHOMEDIR}" >>${TMPFILE} - echo "`date +'%b %e %Y %T'`: Default group: %{amanda_group}" >>${TMPFILE} - echo "`date +'%b %e %Y %T'`: Verifying %{amanda_user} parameters :" >>${TMPFILE} - - if [ "`id -gn %{amanda_user}`" != "disk" ] ; then - echo "`date +'%b %e %Y %T'`: !!! WARNING! WARNING! WARNING! WARNING! WARNING! WARNING! !!!" >>${TMPFILE} - echo "`date +'%b %e %Y %T'`: !!! user 'amandabackup' is not part of the disk group,Pl !!!" >>${TMPFILE} - echo "`date +'%b %e %Y %T'`: !!! make sure it is corrected before start using Amanda !!!" >>${TMPFILE} - echo "`date +'%b %e %Y %T'`: !!! WARNING! WARNING! WARNING! WARNING! WARNING! WARNING! !!!" >>${TMPFILE} - else - echo "`date +'%b %e %Y %T'`: Verified group name of user 'amandabackup'" >>${TMPFILE} - fi +%{script_vars} - if [ "`grep ^%{amanda_user} /etc/passwd|cut -d: -f7`" != "/bin/bash" ] ; then - echo "`date +'%b %e %Y %T'`: !!! WARNING! WARNING! WARNING! WARNING! WARNING! WARNING! !!!" >>${TMPFILE} - echo "`date +'%b %e %Y %T'`: !!! user 'amandabackup' default shell should be set to !!!" >>${TMPFILE} - echo "`date +'%b %e %Y %T'`: !!! /bin/bash, pl correct before start using Amanda !!!" >>${TMPFILE} - echo "`date +'%b %e %Y %T'`: !!! WARNING! WARNING! WARNING! WARNING! WARNING! WARNING! !!!" >>${TMPFILE} - else - echo "`date +'%b %e %Y %T'`: Verified Default shell for user 'amandabackup'" >>${TMPFILE} - fi +# ---------- Common functions ------------ +%%COMMON_FUNCTIONS%% +%%POST_RM_FUNCTIONS%% - if [ "`grep ^%{amanda_user} /etc/passwd|cut -d: -f6`" != "%{AMANDAHOMEDIR}" ] ; then - echo "`date +'%b %e %Y %T'`: !!! WARNING! WARNING! WARNING! WARNING! WARNING! WARNING! !!!" >>${TMPFILE} - echo "`date +'%b %e %Y %T'`: !!! user 'amandabackup' home directory should be set to !!!" >>${TMPFILE} - echo "`date +'%b %e %Y %T'`: !!! %{AMANDAHOMEDIR} Pl correct before using Amanda !!!" >>${TMPFILE} - echo "`date +'%b %e %Y %T'`: !!! WARNING! WARNING! WARNING! WARNING! WARNING! WARNING! !!!" >>${TMPFILE} - else - echo "`date +'%b %e %Y %T'`: Verified Default home directory for user amandabackup" >>${TMPFILE} - fi - echo "`date +'%b %e %Y %T'`:" >>${TMPFILE} - PASSWD_OK=0 -fi -if [ -d %{AMANDAHOMEDIR} ] ; then - echo -n "`date +'%b %e %Y %T'`: Checking ownership of '%{AMANDAHOMEDIR}'... " >>${TMPFILE} - if [ "`ls -dl %{AMANDAHOMEDIR} | awk '//{split($_,x); print x[3]}'`" = "%{amanda_user}" ] && \ - [ "`ls -dl %{AMANDAHOMEDIR} | awk '//{split($_,x); print x[4]}'`" = "%{amanda_group}" ] ; then - echo "correct." >>${TMPFILE} - VARLIB_OK=0 - else - echo "incorrect!" >>${TMPFILE} - echo "`date +'%b %e %Y %T'`: Please ensure that the directory '%{AMANDAHOMEDIR}' is owned by" >>${TMPFILE} - echo "`date +'%b %e %Y %T'`: the user '%{amanda_user}' and group '%{amanda_group}'." >>${TMPFILE} - VARLIB_OK=1 - fi +# -------- End Common functions ---------- +/sbin/ldconfig +# Check for parameter to script (are we upgrading?) +if [ $1 -gt 0 ]; then + # We're upgrading + action="upgrade" else - VARLIB_OK=0 -fi -echo "`date +'%b %e %Y %T'`:" >>${TMPFILE} - -if [ ! -e ${LOGDIR} ] ; then - # create log directory - mkdir -m 0750 ${LOGDIR} >>${TMPFILE} 2>&1 - chown %{amanda_user}:%{amanda_group} ${LOGDIR} >>${TMPFILE} 2>&1 -elif [ ! -d ${LOGDIR} ] ; then - mv ${LOGDIR} ${LOGDIR}.rpmsave >>${TMPFILE} 2>&1 - mkdir -m 0750 ${LOGDIR} >>${TMPFILE} 2>&1 - chown %{amanda_user}:%{amanda_group} ${LOGDIR} >>${TMPFILE} 2>&1 - mv ${LOGDIR}.rpmsave ${LOGDIR}/ >>${TMPFILE} 2>&1 -fi -if [ ${PASSWD_OK} -eq 1 ] || [ ${VARLIB_OK} -eq 1 ] ; then - cat ${TMPFILE} - cat ${TMPFILE} >>${INSTALL_ERR} - echo "Please review '${INSTALL_ERR}' to correct errors which have prevented the Amanda installaton." >&2 - echo "Amanda installation log can be found in '${INSTALL_LOG}' and errors (if any) in '${INSTALL_ERR}'." + # We're uninstalling + action="uninstall" +fi + +# See http://fedoraproject.org/wiki/Packaging/ScriptletSnippets for the reason +# we only remove xinetd on uninstall. +if [ "$action" = "uninstall" ]; then + # Check for and remove existing xinetd configs + check_xinetd "amandaserver" + if [ $? -eq 0 ] ; then + rm_xinetd "amandaserver" + reload_xinetd + fi + check_inetd "amandaserver" + if [ $? -eq 0 ] ; then + rm_inetd "amandaserver" + reload_inetd + fi + if [ -d ${SYSCONFDIR}/amanda ]; then + logger "Removing ${SYSCONFDIR}/amanda if empty..." + rmdir ${SYSCONFDIR}/amanda 2> /dev/null || true + fi + if [ -d ${AMANDAHOMEDIR} ]; then + logger "Removing ${AMANDAHOMEDIR}..." + rm -rf ${AMANDAHOMEDIR} + fi + if [ -f ${SYSCONFDIR}/amandates ]; then + logger "Removing ${SYSCONFDIR}/amandates..." + rm -rf ${SYSCONFDIR}/amandates + fi + # Remove ${amanda_user} from sensitive groups. + if which deluser >/dev/null 2>&1 ; then + for group in tape; do + # only call deluser when amandabackup is in $group + if getent group "$group" | + awk -F: '{ print $4 }' | + awk -F, '{ for (i=1; i <= NF; i++ ) print $i }' | + grep "^${amanda_user}$" > /dev/null; then + deluser ${amanda_user} $group || true + fi + done + fi + +fi + +echo "Amanda removal log can be found in '$LOGFILE'." + +%pre backup_client +########################################## +LOGFILE=`mktemp /tmp/amanda_client-preinst.log.XXXXXXXXXXX` +if [ $? -ne 0 ]; then + echo "Unable to create log file!" exit 1 -else - cat ${TMPFILE} - cat ${TMPFILE} >>${INSTALL_LOG} fi +%{script_vars} -echo "`date +'%b %e %Y %T'`: === Amanda backup client installation started. ===" >${TMPFILE} +# ---------- Common functions ------------ +%%COMMON_FUNCTIONS%% +%%PRE_INST_FUNCTIONS%% -cat ${TMPFILE} -cat ${TMPFILE} >>${INSTALL_LOG} +# -------- End Common functions ---------- +logger "Preparing to install: %{amanda_version_info}" +create_user +check_user_group "${amanda_group}" || add_group "${amanda_group}" +check_user_shell "${wanted_shell}" +check_user_homedir "${AMANDAHOMEDIR}" +check_homedir || create_homedir +create_logdir -if [ -f "${TMPFILE}" ]; then - rm -f "${TMPFILE}" -fi +logger "Preinstall done." +cat $LOGFILE >> $INSTALL_LOG && rm $LOGFILE || \ + echo "Amanda preinstall logs can be found in '$LOGFILE'." %post backup_client -TMPFILE=`mktemp /tmp/rpm-amanda.XXXXXXXXXXX` +########################################## +LOGFILE=`mktemp /tmp/amanda_client-postinst.log.XXXXXXXXXXX` if [ $? -ne 0 ]; then - echo "Unable to mktemp!" 1>&2 + echo "Unable to create log file!" exit 1 fi -LOGDIR="%{LOGDIR}" -INSTALL_LOG="${LOGDIR}/install.log" -INSTALL_ERR="${LOGDIR}/install.err" +%{script_vars} +AMANDATES=%{AMANDATES} -echo -n "`date +'%b %e %Y %T'`: Updating system library cache..." >${TMPFILE} -/sbin/ldconfig -echo "done." >>${TMPFILE} -cat ${TMPFILE} -cat ${TMPFILE} >>${INSTALL_LOG} - -if [ -e /etc/xinetd.d ] && [ -d /etc/xinetd.d ] ; then - if [ ! -f /etc/xinetd.d/amandaclient ] ; then - cp %{AMANDAHOMEDIR}/example/xinetd.amandaclient /etc/xinetd.d/amandaclient - - echo -n "`date +'%b %e %Y %T'`: Reloading xinetd configuration..." >${TMPFILE} - if [ "%{xinetd_reload}" == "reload" ] ; then - /etc/init.d/xinetd %{xinetd_reload} >>${TMPFILE} 2>&1 - ret_val=$? - if [ ${ret_val} -ne 0 ] ; then - echo -n "reload failed. Attempting restart..." >>${TMPFILE} - /etc/init.d/xinetd restart >>${TMPFILE} 2>&1 - ret_val=$? - fi - else - /etc/init.d/xinetd %{xinetd_reload} >>${TMPFILE} 2>&1 - ret_val=$? - fi - if [ ${ret_val} -eq 0 ] ; then - echo "success." >>${TMPFILE} - cat ${TMPFILE} - cat ${TMPFILE} >>${INSTALL_LOG} - else - echo "failed. Please check your system logs." >>${TMPFILE} - cat ${TMPFILE} - cat ${TMPFILE} >>${INSTALL_LOG} - fi - fi -fi - -echo "`date +'%b %e %Y %T'`: Installing '%{AMANDATES}'." >${TMPFILE} -ret_val=0 -if [ ! -f %{AMANDATES} ] ; then - touch %{AMANDATES} >>${TMPFILE} 2>&1 - ret_val=$? - if [ ${ret_val} -eq 0 ]; then - echo "`date +'%b %e %Y %T'`: The file '%{AMANDATES}' has been created." >>${TMPFILE} - fi -fi -if [ ${ret_val} -eq 0 ]; then - echo "`date +'%b %e %Y %T'`: Ensuring correct permissions for '%{AMANDATES}'." >>${TMPFILE} - chown %{amanda_user}:%{amanda_group} %{AMANDATES} >>${TMPFILE} 2>&1 - chmod 0640 %{AMANDATES} >>${TMPFILE} 2>&1 -fi -if [ ${ret_val} -eq 0 ]; then - echo "`date +'%b %e %Y %T'`: '%{AMANDATES}' Installation successful." >>${TMPFILE} - cat ${TMPFILE} - cat ${TMPFILE} >>${INSTALL_LOG} -else - echo "`date +'%b %e %Y %T'`: '%{AMANDATES}' Installation failed." >>${TMPFILE} - cat ${TMPFILE} - cat ${TMPFILE} >>${INSTALL_ERR} -fi +# ---------- Common functions ------------ +%%COMMON_FUNCTIONS%% +%%POST_INST_FUNCTIONS%% -# Install .amandahosts to client -echo "`date +'%b %e %Y %T'`: Checking '%{AMANDAHOMEDIR}/.amandahosts' file." >${TMPFILE} -if [ ! -f %{AMANDAHOMEDIR}/.amandahosts ] ; then - touch %{AMANDAHOMEDIR}/.amandahosts >>${TMPFILE} 2>&1 -fi -for host in localhost localhost.localdomain ; do - if [ -z "`grep \"^${host}[[:blank:]]\+\" %{AMANDAHOMEDIR}/.amandahosts | grep \"[[:blank:]]\+%{amanda_user}[[:blank:]]\+amdump\"`" ] ; then - echo "${host} %{amanda_user} amdump" >>%{AMANDAHOMEDIR}/.amandahosts - fi -done -chown %{amanda_user}:%{amanda_group} %{AMANDAHOMEDIR}/.amandahosts >>${TMPFILE} 2>&1 -chmod 0600 %{AMANDAHOMEDIR}/.amandahosts >>${TMPFILE} 2>&1 -cat ${TMPFILE} -cat ${TMPFILE} >>${INSTALL_LOG} - -# Install amanda client configuration file -echo "`date +'%b %e %Y %T'`: Checking '%{SYSCONFDIR}/amanda/amanda-client.conf' file." >${TMPFILE} -if [ ! -f %{SYSCONFDIR}/amanda/amanda-client.conf ] ; then - cp %{AMANDAHOMEDIR}/example/amanda-client.conf %{SYSCONFDIR}/amanda/amanda-client.conf >>${TMPFILE} 2>&1 -fi -chown %{amanda_user}:%{amanda_group} %{SYSCONFDIR}/amanda/amanda-client.conf >>${TMPFILE} 2>&1 -chmod 0600 %{SYSCONFDIR}/amanda/amanda-client.conf >>${TMPFILE} 2>&1 -cat ${TMPFILE} -cat ${TMPFILE} >>${INSTALL_LOG} - -# Install .gnupg directory -echo "`date +'%b %e %Y %T'`: Installing '%{AMANDAHOMEDIR}/.gnupg'." >${TMPFILE} -ret_val=0 -if [ ! -d %{AMANDAHOMEDIR}/.gnupg ] ; then - echo "`date +'%b %e %Y %T'`: '%{AMANDAHOMEDIR}/.gnupg' will be created." >>${TMPFILE} - mkdir %{AMANDAHOMEDIR}/.gnupg >>${TMPFILE} 2>&1 - ret_val=$? - if [ ${ret_val} -eq 0 ]; then - echo "`date +'%b %e %Y %T'`: The directory '%{AMANDAHOMEDIR}/.gnupg' created successfully." >>${TMPFILE} - else - echo "`date +'%b %e %Y %T'`: The directory '%{AMANDAHOMEDIR}/.gnupg' creation failed." >>${TMPFILE} - fi -fi -if [ ${ret_val} -eq 0 ]; then - echo "`date +'%b %e %Y %T'`: Ensuring correct permissions for '%{AMANDAHOMEDIR}/.gnupg'." >>${TMPFILE} - chown %{amanda_user}:%{amanda_group} %{AMANDAHOMEDIR}/.gnupg >>${TMPFILE} 2>&1 - ret_val=$? - if [ ${ret_val} -eq 0 ]; then - chmod 700 %{AMANDAHOMEDIR}/.gnupg >>${TMPFILE} 2>&1 - ret_val=$? - fi -fi -if [ ${ret_val} -eq 0 ]; then - echo "`date +'%b %e %Y %T'`: '%{AMANDAHOMEDIR}/.gnupg' Installation successful." >>${TMPFILE} - cat ${TMPFILE} - cat ${TMPFILE} >>${INSTALL_LOG} -else - echo "`date +'%b %e %Y %T'`: '%{AMANDAHOMEDIR}/.gnupg' Installation failed." >>${TMPFILE} - cat ${TMPFILE} - cat ${TMPFILE} >>${INSTALL_ERR} -fi +# -------- End Common functions ---------- +/sbin/ldconfig -# SSH RSA key generation on client for amrecover -KEYDIR="%{AMANDAHOMEDIR}/.ssh" -KEYFILE="id_rsa_amrecover" -COMMENT="root@client" -if [ ! -d ${KEYDIR} ] ; then - if [ -f ${KEYDIR} ] ; then - echo "`date +'%b %e %Y %T'`: Directory '${KEYDIR}' exists as a file. Renaming to '${KEYDIR}.rpmsave'." >${TMPFILE} - mv ${KEYDIR} ${KEYDIR}.rpmsave >>${TMPFILE} 2>&1 - cat ${TMPFILE} - cat ${TMPFILE} >>${INSTALL_LOG} - fi - echo "`date +'%b %e %Y %T'`: Creating directory '${KEYDIR}'." >${TMPFILE} - mkdir ${KEYDIR} >>${TMPFILE} 2>&1 - cat ${TMPFILE} - cat ${TMPFILE} >>${INSTALL_LOG} -fi -if [ ! -f ${KEYDIR}/${KEYFILE} ] ; then - echo "`date +'%b %e %Y %T'`: Creating ssh RSA key in '${KEYDIR}/${KEYFILE}'" >${TMPFILE} - ssh-keygen -q -C $COMMENT -t rsa -f ${KEYDIR}/${KEYFILE} -N '' >>${TMPFILE} 2>&1 - cat ${TMPFILE} - cat ${TMPFILE} >>${INSTALL_LOG} -fi -echo "`date +'%b %e %Y %T'`: Setting permissions for '${KEYDIR}' and '${KEYDIR}/${KEYFILE}*'" >${TMPFILE} -chown %{amanda_user}:%{amanda_group} ${KEYDIR} >>${TMPFILE} 2>&1 -chmod 0750 ${KEYDIR} >>${TMPFILE} 2>&1 -chmod 0600 ${KEYDIR}/${KEYFILE}* >>${TMPFILE} 2>&1 -cat ${TMPFILE} -cat ${TMPFILE} >>${INSTALL_LOG} - -# environment variables (~amandabackup/.profile) -echo "`date +'%b %e %Y %T'`: Checking for '%{AMANDAHOMEDIR}/.profile' and ensuring correct environment." >${TMPFILE} -if [ ! -f %{AMANDAHOMEDIR}/.profile ] ; then - touch %{AMANDAHOMEDIR}/.profile >>${TMPFILE} 2>&1 -fi -if [ -z "`grep PATH %{AMANDAHOMEDIR}/.profile | grep '%{SBINDIR}'`" ] ; then - echo "export PATH=\"\$PATH:%{SBINDIR}\"" >>%{AMANDAHOMEDIR}/.profile 2>>${TMPFILE} -fi -cat ${TMPFILE} -cat ${TMPFILE} >>${INSTALL_LOG} -echo "`date +'%b %e %Y %T'`: Setting ownership and permissions for '%{AMANDAHOMEDIR}/.profile'" >${TMPFILE} -chown %{amanda_user}:%{amanda_group} %{AMANDAHOMEDIR}/.profile >>${TMPFILE} 2>&1 -chmod 0640 %{AMANDAHOMEDIR}/.profile >>${TMPFILE} 2>&1 -cat ${TMPFILE} -cat ${TMPFILE} >>${INSTALL_LOG} +check_xinetd "amandaclient" +case $? in + 0) backup_xinetd "amandaclient" + install_xinetd "amandaclient" + ;; + 1) install_xinetd "amandaclient" ;; + 2) logger "Xinetd config not installed: either xinetd config is not present or xinetd.d is a file." ;; + *) logger "bad return from check_xinetd"; exit 1 ;; +esac + +# Amanda clients should not have the server xinetd installed. +check_xinetd "amandaserver" +case $? in + 0) backup_xinetd "amandaserver" ;; +esac + +reload_xinetd +create_amandates +check_amandates +create_gnupg +check_gnupg +create_amandahosts +check_amandahosts_entry ${amanda_user} amdump +check_amandahosts_perms +create_ssh_key server +create_ssh_key client +create_profile +check_profile +install_client_conf + +logger "Amanda installation complete." +cat $LOGFILE >> $INSTALL_LOG && { + rm $LOGFILE; + echo "Amanda installation log can be found in '${INSTALL_LOG}'."; +} || \ + echo "Amanda postinstall logs can be found in '$LOGFILE'." echo "`date +'%b %e %Y %T'`: Sending anonymous distribution and version information to Zmanda" >> ${INSTALL_LOG} if [ -x /usr/bin/wget ]; then /usr/bin/wget -q -o /dev/null -O - --timeout=5 http://www.zmanda.com/amanda-tips.php\?version=%{amanda_version}\&os=%{disttag}%{distver}\&type=client fi -echo "`date +'%b %e %Y %T'`: === Amanda backup client installation complete. ===" >>${TMPFILE} -cat ${TMPFILE} -cat ${TMPFILE} >>${INSTALL_LOG} - -if [ -f "${TMPFILE}" ]; then - rm -f "${TMPFILE}" +%postun backup_client +########################################## +LOGFILE=`mktemp /tmp/amanda_client-remove.log.XXXXXXXXXXX` +if [ $? -ne 0 ]; then + echo "Unable to create log file!" + exit 1 fi +%{script_vars} -echo "Amanda installation log can be found in '${INSTALL_LOG}' and errors (if any) in '${INSTALL_ERR}'." -%postun backup_client +# ---------- Common functions ------------ +%%COMMON_FUNCTIONS%% +%%POST_RM_FUNCTIONS%% + +# -------- End Common functions ---------- /sbin/ldconfig +# Check for parameter to script (are we upgrading?) +if [ $1 -gt 0 ]; then + # We're upgrading + action="upgrade" +else + # We're uninstalling + action="uninstall" +fi + +# See http://fedoraproject.org/wiki/Packaging/ScriptletSnippets for the reason +# we only remove xinetd on uninstall. +if [ "$action" = "uninstall" ]; then + # Check for and remove existing xinetd configs + check_xinetd "amandaclient" + if [ $? -eq 0 ] ; then + rm_xinetd "amandaclient" + reload_xinetd + fi + check_inetd "amandaclient" + if [ $? -eq 0 ] ; then + rm_inetd "amandaclient" + reload_inetd + fi + if [ -d ${SYSCONFDIR}/amanda ]; then + logger "Removing ${SYSCONFDIR}/amanda if empty..." + rmdir ${SYSCONFDIR}/amanda 2> /dev/null || true + fi + if [ -d ${AMANDAHOMEDIR} ]; then + logger "Removing ${AMANDAHOMEDIR}..." + rm -rf ${AMANDAHOMEDIR} + fi + if [ -f ${SYSCONFDIR}/amandates ]; then + logger "Removing ${SYSCONFDIR}/amandates..." + rm -rf ${SYSCONFDIR}/amandates + fi + # Remove ${amanda_user} from sensitive groups. + if which deluser >/dev/null 2>&1 ; then + for group in tape; do + # only call deluser when amandabackup is in $group + if getent group "$group" | + awk -F: '{ print $4 }' | + awk -F, '{ for (i=1; i <= NF; i++ ) print $i }' | + grep "^${amanda_user}$" > /dev/null; then + deluser ${amanda_user} $group || true + fi + done + fi +fi + +echo "Amanda removal log can be found in '$LOGFILE'." + +%files backup_client # --- Files to install --- # Notes: Do not use wildcards on directories not wholly owned by amanda. An # uninstall of the software will attempt to delete whatever matches here. -%files backup_client %defattr(0755,%{amanda_user},%{amanda_group},0755) %{AMLIBEXECDIR} %{AMLIBDIR}