#!/bin/sh # ---------------------------------------------------------------------- # Copyright (c) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007 # NOVELL (All rights reserved) # Copyright (c) 2008, 2009 Canonical, Ltd. # # 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. # ---------------------------------------------------------------------- # Authors: # Steve Beattie # Kees Cook # # /etc/init.d/apparmor # ### BEGIN INIT INFO # Provides: apparmor # Required-Start: $remote_fs # Required-Stop: umountfs # Default-Start: S # Default-Stop: # Short-Description: AppArmor initialization # Description: AppArmor init script. This script loads all AppArmor profiles. ### END INIT INFO source /lib/apparmor/functions source /lib/lsb/init-functions proc usage { echo "Usage: $0 {start|stop|restart|reload|force-reload|status|recache}" } test -x $(PARSER) || exit 0 # by debian policy # LSM is built-in, so it is either there or not enabled for this boot test -d /sys/module/apparmor || exit 0 proc securityfs { # Need securityfs for any mode if test ! -d $(AA_SFS) { if cut -d" " -f2,3 /proc/mounts | grep -q "^$(SECURITYFS) securityfs"'$' { log_action_msg "AppArmor not available as kernel LSM." log_end_msg 1 exit 1 } else { log_action_begin_msg "Mounting securityfs on $(SECURITYFS)" if ! mount -t securityfs none $(SECURITYFS) { log_action_end_msg 1 log_end_msg 1 exit 1 } } } if test ! -w "$AA_SFS"/.load { log_action_msg "Insufficient privileges to change profiles." log_end_msg 1 exit 1 } } # Allow "recache" even when running on the liveCD if test $1 = "recache" { log_daemon_msg "Recaching AppArmor profiles" recache_profiles global rc := $Status log_end_msg $rc exit $rc } # do not perform start/stop/reload actions when running from liveCD test -d /rofs/etc/apparmor.d && exit 0 global rc := '255' matchstr $1 { start { if test -x /bin/running-in-container && /bin/running-in-container { log_daemon_msg "Not starting AppArmor in container" log_end_msg 0 exit 0 } log_daemon_msg "Starting AppArmor profiles" securityfs load_configured_profiles global rc := $Status log_end_msg $rc } stop { log_daemon_msg "Clearing AppArmor profiles cache" clear_cache global rc := $Status log_end_msg $rc cat > !2