mirror of
https://gitlab.com/apparmor/apparmor.git
synced 2025-03-04 16:35:02 +01:00

"rcapparmor kill" results in a funny error message: /lib/apparmor/rc.apparmor.functions: line 441: return: -v: invalid option return: usage: return [n] SLE12 includes a patch that prevents this error message, but also prevents that $? is handed over correctly to rc_status. This means that "rcapparmor kill" will happily display "done" even with a compiled-in apparmor module that can't be unloaded. This patch is the improved version - it adds a small helper function to set $? (as handed over to aa_log_end_msg()) and then calls rc_status -v. This means that "rcapparmor kill" now shows "failed" because it's impossible to unload something that is compiled directly into the kernel. References: https://bugzilla.opensuse.org/show_bug.cgi?id=862170 (non-public) Acked-by: Seth Arnold <seth.arnold@canonical.com> for 2.9 and trunk
149 lines
2.9 KiB
Bash
149 lines
2.9 KiB
Bash
#!/bin/sh
|
|
# ----------------------------------------------------------------------
|
|
# Copyright (c) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007
|
|
# NOVELL (All rights reserved)
|
|
#
|
|
# This program is free software; you can redistribute it and/or
|
|
# modify it under the terms of version 2 of the GNU General Public
|
|
# License published by the Free Software Foundation.
|
|
#
|
|
# This program is distributed in the hope that it will be useful,
|
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
# GNU General Public License for more details.
|
|
#
|
|
# You should have received a copy of the GNU General Public License
|
|
# along with this program; if not, contact Novell, Inc.
|
|
# ----------------------------------------------------------------------
|
|
# rc.apparmor by Steve Beattie
|
|
#
|
|
# /etc/init.d/boot.apparmor
|
|
# and its symbolic link
|
|
# /sbin/rcapparmor
|
|
#
|
|
# chkconfig: 2345 01 99
|
|
# description: AppArmor rc file. This rc script inserts the apparmor \
|
|
# module and runs the parser on the /etc/apparmor.d/ \
|
|
# directory.
|
|
#
|
|
### BEGIN INIT INFO
|
|
# Provides: apparmor
|
|
# Required-Start: boot.cleanup
|
|
# Required-Stop: $null
|
|
# Should-Start: $local_fs
|
|
# Should-Stop: $null
|
|
# Default-Start: B
|
|
# Default-Stop:
|
|
# Short-Description: AppArmor initialization
|
|
# Description: AppArmor rc file. This rc script inserts the apparmor
|
|
# module and runs the parser on the /etc/apparmor.d/
|
|
# directory.
|
|
### END INIT INFO
|
|
APPARMOR_FUNCTIONS=/lib/apparmor/rc.apparmor.functions
|
|
|
|
# source function library
|
|
if [ -f /etc/init.d/functions ]; then
|
|
. /etc/init.d/functions
|
|
elif [ -f /etc/rc.d/init.d/functions ]; then
|
|
. /etc/rc.d/init.d/functions
|
|
elif [ -f /lib/lsb/init-functions ]; then
|
|
. /lib/lsb/init-functions
|
|
else
|
|
exit 0
|
|
fi
|
|
|
|
# Ugh, SUSE doesn't implement action
|
|
aa_action() { STRING=$1
|
|
shift
|
|
"$@"
|
|
rc=$?
|
|
if [ $rc -eq 0 ] ; then
|
|
log_success_msg $"$STRING "
|
|
else
|
|
log_failure_msg $"$STRING "
|
|
fi
|
|
return $rc
|
|
}
|
|
|
|
aa_log_success_msg() {
|
|
log_success_msg $*
|
|
}
|
|
|
|
aa_log_warning_msg() {
|
|
log_warning_msg $*
|
|
}
|
|
|
|
aa_log_failure_msg() {
|
|
log_failure_msg '\n'$*
|
|
}
|
|
|
|
aa_log_action_start() {
|
|
echo -n
|
|
}
|
|
|
|
aa_log_action_end() {
|
|
echo -n
|
|
}
|
|
|
|
aa_log_daemon_msg() {
|
|
echo -en "$@ "
|
|
}
|
|
|
|
aa_log_skipped_msg() {
|
|
echo -en "$@"
|
|
echo -e "$rc_skipped"
|
|
}
|
|
|
|
_set_status() {
|
|
return $1
|
|
}
|
|
|
|
aa_log_end_msg() {
|
|
_set_status $1
|
|
rc_status -v
|
|
}
|
|
|
|
usage() {
|
|
echo "Usage: $0 {start|stop|restart|try-restart|reload|force-reload|status|kill}"
|
|
}
|
|
|
|
# source apparmor function library
|
|
if [ -f "${APPARMOR_FUNCTIONS}" ]; then
|
|
. ${APPARMOR_FUNCTIONS}
|
|
else
|
|
aa_log_failure_msg "Unable to find AppArmor initscript functions"
|
|
exit 1
|
|
fi
|
|
|
|
case "$1" in
|
|
start)
|
|
apparmor_start
|
|
rc=$?
|
|
;;
|
|
stop)
|
|
apparmor_stop
|
|
rc=$?
|
|
;;
|
|
restart|reload|force-reload)
|
|
apparmor_restart
|
|
rc=$?
|
|
;;
|
|
try-restart)
|
|
apparmor_try_restart
|
|
rc=$?
|
|
;;
|
|
kill)
|
|
apparmor_kill
|
|
rc=$?
|
|
;;
|
|
status)
|
|
apparmor_status
|
|
rc=$?
|
|
;;
|
|
*)
|
|
usage
|
|
exit 1
|
|
;;
|
|
esac
|
|
exit $rc
|
|
|