⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 installer.sh

📁 在网络安全中经常会遇到rootkit
💻 SH
📖 第 1 页 / 共 2 页
字号:
echo "Starting installation/update"echo ""case "${RKHINST_LAYOUT}" in		RPM)			;;		*) # Check PREFIXecho $N "Checking PREFIX $PREFIX: "if [ -e "${PREFIX}" ]; then	echo $N "exists, and is "	if [ ! -w "${PREFIX}" ]; then		echo "NOT writable: exiting."		exit 1	else		echo "writable. OK"		# That's enough for a "." install.		case "${PREFIX}" in			.)					chown -R ${RKHINST_OWNER} ./files 				find ./files -type d -name CVS | while read DIR; do					rm -rf "${DIR}"				done				find ./files -type f -name Entries -o -name Repository -o -name Root | while read FILE; do					rm -rf "${FILE}"				done				find ./files -type f | while read ITEM; do					case "${ITEM}" in						*.sh|*.pl|rkhunter)							chmod "${RKHINST_MODE_EX}" "${ITEM}"							;;						rkhunter.conf|*)							chmod "${RKHINST_MODE_RW}" "${ITEM}"							;;					esac				done				cd ./files				PREFIX="${PWD}"				echo "LOGFILE=${PREFIX}/rkhunter.log" >> rkhunter.conf 				echo "TMPDIR=$PREFIX" >> rkhunter.conf 				echo "DBDIR=$PREFIX" >> rkhunter.conf 				echo "SCRIPTDIR=$PREFIX" >> rkhunter.conf 				echo "INSTALLDIR=$PREFIX" >> rkhunter.conf				sed -e "s|-f /etc/rkhunter.conf|-f $PREFIX/rkhunter.conf|g" -e "s|CONFIGFILE=\"/etc|CONFIGFILE=\"$PREFIX|g" rkhunter > rkhunter.				mv -f rkhunter. rkhunter				chmod "${RKHINST_MODE_EX}" rkhunter				echo "Finished install in \"${PREFIX}\"."				exit 0			;;		esac	fielse	echo "does NOT exist, exiting."	exit 1fi;;esac # end Check PREFIXecho "Checking installation directories:"if [ "${RKHINST_LAYOUT}" = "oldschool" ]; then	RKHDIR_LIST="${RKHINST_DIRS}"else	RKHDIR_LIST="${RKHINST_DIRS} ${LIBDIR} ${VARDIR}/lib"fiumask 022for DIR in ${RKHDIR_LIST}; do	echo $N " Directory ${DIR}: "	if [ -d "${DIR}" ]; then		echo $N "exists, and is "		if [ ! -w "${PREFIX}" ]; then			echo "NOT writable: exiting."			exit 1		else			echo "writable. OK"		fi	else		echo $N "creating: "		mkdir -p ${DIR}; retValChk	fidoneumask 027for DIR in ${RKHINST_DIRS_EXCEP}; do	echo $N " Directory ${DIR}: "	if [ -d "${DIR}" ]; then		echo $N "exists, and is "		if [ ! -w "${PREFIX}" ]; then			echo "NOT writable: exiting."			exit 1		else			echo "writable. OK"		fi	else		echo $N "creating: "		mkdir -p "${DIR}"; retValChk	fi	case "${DIR}" in		*/${APPNAME}|*/${APPNAME}/*|*/${APPNAME}-${APPVERSION}) 			chmod "${RKHINST_MODE_EX}" "${DIR}"			;;	esacdone# Helper scripts, database and man pagefor FILE in ${RKHINST_SCRIPT_FILES} ${RKHINST_DB_FILES} ${RKHINST_MAN_FILES}; do	case "${FILE}" in		*.pl|*.sh)	echo $N " Installing ${FILE}: "				cp -f ./files/"${FILE}" "${RKHINST_SCRIPT_DIR}"; retValChk				chmod "${RKHINST_MODE_EX}" "${RKHINST_SCRIPT_DIR}/${FILE}"				;;		*.dat)		echo $N " Installing ${FILE}: "				cp -f ./files/"${FILE}" "${RKHINST_DB_DIR}"; retValChk				chmod "${RKHINST_MODE_RW}" "${RKHINST_DB_DIR}/${FILE}"				;;		*.8)		echo $N " Installing ${FILE}: "				cp -f ./files/"${FILE}" "${RKHINST_MAN_DIR}"; retValChk				chmod "${RKHINST_MODE_RWR}" "${RKHINST_MAN_DIR}/${FILE}"				;;		esacdone# Application documentsfor FILE in ${RKHINST_DOC_FILES}; do	echo $N " Installing ${FILE}: "	cp -f ./files/"${FILE}" "${RKHINST_DOC_DIR}"; retValChk	chmod "${RKHINST_MODE_RWR}" "${RKHINST_DOC_DIR}/${FILE}"done# Language support filesecho $N " Installing language support files: "find ./files/i18n -type f | while read FILE; do	cp "${FILE}" "${RKHINST_LANG_DIR}"done; retValChk# Applicationfor FILE in ${RKHINST_BIN_FILES}; do	echo $N " Installing ${FILE}: " 	case "${RKHINST_LAYOUT}" in		RPM)				cp -f ./files/"${FILE}" "${RKHINST_BIN_DIR}/${FILE}"; retValChk			;;		*)				sed -e "s|-f /etc/rkhunter.conf|-f $RKHINST_ETC_DIR/rkhunter.conf|g" -e "s|CONFIGFILE=\"/etc|CONFIGFILE=\"$RKHINST_ETC_DIR|g" ./files/"${FILE}" > "${RKHINST_BIN_DIR}/${FILE}"; retValChk			;;	esac	chmod "${RKHINST_MODE_EX}" "${RKHINST_BIN_DIR}/${FILE}"done# Configuration filefor FILE in ${RKHINST_ETC_FILE}; do	# We need people to make local changes themselves, so	# give opportunity and alert. Don't use Perl to get value.	if [ -n "$RANDOM" ]; then		RANDVAL=$RANDOM	else		RANDVAL=`date +%Y%m%d%H%M%S 2>/dev/null`	fi	if [ -f "${RKHINST_ETC_DIR}/${FILE}" ]; then		NEWFILE="${FILE}.${RANDVAL}"		echo $N " Installing ${FILE} in no-clobber mode: "		cp -f "./files/${FILE}" "${RKHINST_ETC_DIR}/${NEWFILE}"; retValChk		chmod "${RKHINST_MODE_RW}" "${RKHINST_ETC_DIR}/${NEWFILE}"		echo "" >> "${RKHINST_ETC_DIR}/${NEWFILE}"		echo "INSTALLDIR=${PREFIX}" >> "${RKHINST_ETC_DIR}/${NEWFILE}"		echo "DBDIR=${RKHINST_DB_DIR}" >> "${RKHINST_ETC_DIR}/${NEWFILE}"		echo "SCRIPTDIR=${RKHINST_SCRIPT_DIR}" >> "${RKHINST_ETC_DIR}/${NEWFILE}"		echo "TMPDIR=${RKHINST_TMP_DIR}" >> "${RKHINST_ETC_DIR}/${NEWFILE}"		if [ "${RKHINST_LAYOUT}" != "RPM" ]; then			echo " >>> "			echo " >>> PLEASE NOTE: inspect for update changes in "${RKHINST_ETC_DIR}/${NEWFILE}""			echo " >>> and apply to "${RKHINST_ETC_DIR}/${FILE}" before running Rootkit Hunter."			echo " >>> "		fi	else		echo $N " Installing ${FILE}: "		cp -f "./files/${FILE}" "${RKHINST_ETC_DIR}"; retValChk		chmod "${RKHINST_MODE_RW}" "${RKHINST_ETC_DIR}/${FILE}"		echo "" >> "${RKHINST_ETC_DIR}/${FILE}"		if [ -n "${RPM_BUILD_ROOT}" ]; then			echo "INSTALLDIR=${PREFIX}" | sed "s|${RPM_BUILD_ROOT}||g" >> "${RKHINST_ETC_DIR}/${FILE}"			echo "DBDIR=${RKHINST_DB_DIR}" | sed "s|${RPM_BUILD_ROOT}||g" >> "${RKHINST_ETC_DIR}/${FILE}"			echo "SCRIPTDIR=${RKHINST_SCRIPT_DIR}" | sed "s|${RPM_BUILD_ROOT}||g" >> "${RKHINST_ETC_DIR}/${FILE}"			echo "TMPDIR=${RKHINST_TMP_DIR}" | sed "s|${RPM_BUILD_ROOT}||g" >> "${RKHINST_ETC_DIR}/${FILE}"		else			echo "INSTALLDIR=${PREFIX}" >> "${RKHINST_ETC_DIR}/${FILE}"			echo "DBDIR=${RKHINST_DB_DIR}" >> "${RKHINST_ETC_DIR}/${FILE}"			echo "SCRIPTDIR=${RKHINST_SCRIPT_DIR}" >> "${RKHINST_ETC_DIR}/${FILE}"			echo "TMPDIR=${RKHINST_TMP_DIR}" >> "${RKHINST_ETC_DIR}/${FILE}"		fi	fidone# Strip root from fake root install.if [ -n "${STRIPROOT}" ]; then	find "${PREFIX}" -type f | while read f; do 		grep "${PREFIX}" "${f}" >/dev/null 2>&1 && { echo $N " Striproot ${f}: "; sed -i "s|${STRIPROOT}||g" "${f}"; retValChk; }	donefi# Finally copy the passwd/group files to the TMP directory# to avoid warnings when rkhunter is first run.case "${RKHINST_LAYOUT}" in	RPM)	# This is done by a %post section in the spec file.		;;	*)		cp -p /etc/passwd ${RKHINST_TMP_DIR} >/dev/null 2>&1		cp -p /etc/group ${RKHINST_TMP_DIR} >/dev/null 2>&1		;;esacecho "Installation finished."} # End doInstalldoRemove()  {RKHINST_DIRS="$RKHINST_ETC_DIR $RKHINST_BIN_DIR $RKHINST_SCRIPT_DIR $RKHINST_DOC_DIR $RKHINST_DB_DIR $RKHINST_TMP_DIR $RKHINST_LANG_DIR"RKHINST_DIRS_POST="$VARDIR $SHAREDIR $PREFIX"echo "Starting uninstallation"echo ""# Check PREFIXecho $N "Checking PREFIX $PREFIX: "if [ -e "${PREFIX}" ]; then	echo $N "exists, and is "	if [ ! -w "${PREFIX}" ]; then		echo "NOT writable: exiting."		exit 1	else		echo "writable. OK"	fielse	echo "does NOT exist, exiting."	#exit 1fi# Standalone removal involves just deleting the 'files' subdirectory.if [ "$PREFIX" = "." ]; then	rm -rf ./files 2>/dev/null	echo "Uninstallation complete."	returnfiecho "Removing installation files:"# Man pagefor FILE in ${RKHINST_MAN_FILES}; do	if [ -f "${RKHINST_MAN_DIR}/${FILE}" ]; then		echo $N " Removing ${FILE}: "		rm -f "${RKHINST_MAN_DIR}/${FILE}"; retValChk	fidone# Applicationfor FILE in ${RKHINST_BIN_FILES}; do	if [ -f "${RKHINST_BIN_DIR}/${FILE}" ]; then		echo $N " Removing ${RKHINST_BIN_DIR}/${FILE}: "		rm -f "${RKHINST_BIN_DIR}/${FILE}"; retValChk	fidone# Configuration filefor FILE in ${RKHINST_ETC_FILE}; do	if [ -f "${RKHINST_ETC_DIR}/${FILE}" ]; then		echo $N " Removing ${RKHINST_ETC_DIR}/${FILE}: "		rm -f "${RKHINST_ETC_DIR}/${FILE}"; retValChk	fi	echo ""	echo "Please remove any ${RKHINST_ETC_DIR}/${FILE}.* files manually."	echo ""done# Helper scripts: remove dir# Application documents: remove dir# Databases: remove dir# Language support: remove direcho "Removing installation directories:"for DIR in ${RKHINST_DIRS}; do	case "${DIR}" in 		*/${APPNAME}|*/${APPNAME}-${APPVERSION}) 			if [ -d "${DIR}" ]; then				echo $N " Removing ${DIR}: "				rm -rf "${DIR}"; retValChk			fi			;;		*/${APPNAME}/*)			DIR=`dirname "${DIR}"`			if [ -d "${DIR}" ]; then				echo $N " Removing ${DIR}: "				rm -rf "${DIR}"; retValChk			fi			;;	esacdone# Could use patch for removing custom $VARDIR $SHAREDIR $PREFIX here.if [ "${RKHINST_LAYOUT}" = "oldschool" ]; then	if [ -d "/usr/local/rkhunter" ]; then		echo ""		echo "Note: The directory '/usr/local/rkhunter' still exists."	fifi# Remove any old log files.rm -f /var/log/rkhunter.log /var/log/rkhunter.log.old >/dev/null 2>&1echo ""echo "Done removing files. Please double-check."} # end doRemoveif [ $# -eq 0 ]; then	showHelpfiwhile [ $# -ge 1 ]; do	case $1 in	h | -h | --help | --usage)		showHelp		;;	-e | --examples) showExamples		;;	-v | --version)		showVersion		;;	-l | --layout)		shift 1		case "$1" in			custom)				shift 1				if [ -n "$1" ]; then					RKHINST_LAYOUT="custom_$1"				else					echo "No custom layout given, exiting."					exit 1				fi				;;			default|oldschool|/usr|/usr/local|RPM)				RKHINST_LAYOUT="$1"				;;			*)				echo "Unknown layout given, exiting."				exit 1				;;		esac		;;	-s | --striproot)		shift 1		if [ -n "$1" ]; then			STRIPROOT="$1"		else			echo "Striproot requested but no directory name given, exiting."			exit 1		fi		;;	--show|--remove|--install)		if [ -z "${RKHINST_LAYOUT}" ]; then			echo "No layout given. The '--layout' option must be specified first."			exit 1		fi		action=`echo $ECHOOPT "$1"|sed "s/-//g"`		case "$action" in			show)	showTemplate $RKHINST_LAYOUT				;;			remove)	# Clean active window				clear				selectTemplate $RKHINST_LAYOUT				doRemove				;;			install) # Clean active window				 clear				 selectTemplate $RKHINST_LAYOUT				 doInstall				 ;;			"")	echo "No action given, exiting."				exit 1				;;			*)	echo "Unknown action given, exiting: $action"				exit 1				;;		esac		exit 0		;;	*)		echo "Unknown option \"${1}\" given."		echo ""		showHelp		;;	esac	shiftdoneexit 0

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -