tripwire-open-source/contrib/tripwire_uninstall

153 lines
3.5 KiB
Bash
Executable File

#!/bin/sh
set -e
unset NO_CONFIRM
unset NO_REMOVE
unset REMOVE_REPORTS
unset REMOVE_LOGS
unset REMOVE_DB
unset REMOVE_KEYS
unset RM
UNAME=`uname`
help() {
cat >&2 << 'HELP'
tripwire_uninstall [-y] [-N] [ [-R] [-L] [-D] [-K] | [-A] ]
-y no confirmation (unattended operation)
-N dont remove binaries, docs and man pages
-A remove everything (logs, reports, db and keys)
-R remove reports
-L remove logs
-D remove db
-K remove keys
-N with -Y is valid
HELP
}
while [ "$#" != 0 ]; do
case "$1" in
-y) NO_CONFIRM=1 ;;
-N) NO_REMOVE=1 ;;
-L) REMOVE_LOGS=1 ;;
-D) REMOVE_DB=1 ;;
-K) REMOVE_KEYS=1 ;;
-A) REMOVE_LOGS=1
REMOVE_KEYS=1
REMOVE_DB=1
;;
*) help ; exit 1
esac
shift
done
secure_rm() {
case $UNAME in
Darwin)
/usr/bin/srm -vf -- "$@"
;;
Linux)
/usr/bin/shred -vfu -- "$@"
;;
FreeBSD|*)
# 3x wipe
for FILE in "$@"; do
/bin/dd if=/dev/random of="$FILE" bs=1 count=$(/usr/bin/wc -c < "$FILE" | /usr/bin/sed "s/[^0-9]//g")
/bin/dd if=/dev/random of="$FILE" bs=1 count=$(/usr/bin/wc -c < "$FILE" | /usr/bin/sed "s/[^0-9]//g")
/bin/dd if=/dev/random of="$FILE" bs=1 count=$(/usr/bin/wc -c < "$FILE" | /usr/bin/sed "s/[^0-9]//g")
done
rm -vf "$@"
;;
esac
}
secure_rm_rf() {
case $UNAME in
Darwin)
/usr/bin/srm -vrf -- "$@"
;;
Linux)
/usr/bin/find "$@" -type f -exec /usr/bin/shred -vfu -- {} \;
rm -vrf "$@"
;;
FreeBSD|*)
# 3x wipe
/usr/bin/find "$@" -type f | xargs -I% sh -c '/bin/dd if=/dev/random of="%" bs=1 count=$(/usr/bin/wc -c < "%" | /usr/bin/sed "s/[^0-9]//g")'
/usr/bin/find "$@" -type f | xargs -I% sh -c '/bin/dd if=/dev/random of="%" bs=1 count=$(/usr/bin/wc -c < "%" | /usr/bin/sed "s/[^0-9]//g")'
/usr/bin/find "$@" -type f | xargs -I% sh -c '/bin/dd if=/dev/random of="%" bs=1 count=$(/usr/bin/wc -c < "%" | /usr/bin/sed "s/[^0-9]//g")'
rm -vrf "$@"
;;
esac
}
if [ -n "$NO_CONFIRM" ]; then
:; # noop
else
printf "Uninstall tripwire ? [Yn] "
unset PROMPT
read PROMPT
if [ "$PROMPT" = 'y' ] || [ "$PROMPT" = 'Y' ]; then
:; # noop
else
echo "user cancelled" >&2
exit 1
fi
fi
if [ -z "$NO_REMOVE" ]; then
echo "removing tripwire binaries, scripts, docs and man pages" >&2
# binaries
secure_rm "TRIPWIRE_ROOT/sbin/siggen"
secure_rm "TRIPWIRE_ROOT/sbin/tripwire"
secure_rm "TRIPWIRE_ROOT/sbin/twadmin"
secure_rm "TRIPWIRE_ROOT/sbin/twprint"
# scripts
secure_rm "TRIPWIRE_ROOT/sbin/tripwire_"*
# docs
secure_rm_rf "TRIPWIRE_ROOT/doc/tripwire"
# man pages
secure_rm "TRIPWIRE_ROOT/share/man/man4/twconfig.4"
secure_rm "TRIPWIRE_ROOT/share/man/man4/twpolicy.4"
secure_rm "TRIPWIRE_ROOT/share/man/man5/twfiles.5"
secure_rm "TRIPWIRE_ROOT/share/man/man8/siggen.8"
secure_rm "TRIPWIRE_ROOT/share/man/man8/tripwire.8"
secure_rm "TRIPWIRE_ROOT/share/man/man8/twadmin.8"
secure_rm "TRIPWIRE_ROOT/share/man/man8/twintro.8"
secure_rm "TRIPWIRE_ROOT/share/man/man8/twprint.8"
fi
if [ -n "$REMOVE_REPORTS" ]; then
echo "removing tripwire reports" >&2
secure_rm "TRIPWIRE_ROOT/lib/tripwire/report"/*.twr
fi
if [ -n "$REMOVE_LOGS" ]; then
echo "removing tripwire logs" >&2
secure_rm "TRIPWIRE_LOG_DIR/tripwire_periodic_"*.log
fi
if [ -n "$REMOVE_DB" ]; then
echo "removing tripwire db" >&2
secure_rm "TRIPWIRE_ROOT/lib/tripwire"/*.twd*
fi
if [ -n "$REMOVE_KEYS" ]; then
echo "removing tripwire keys" >&2
secure_rm "TRIPWIRE_ROOT/etc"/*.key
fi
echo "finished removing tripwire" >&2