153 lines
		
	
	
		
			3.5 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
			
		
		
	
	
			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
 |