From bc02a0d8dd0c8636cfeac6ae444534db3b461855 Mon Sep 17 00:00:00 2001 From: "Trent W. Buck" Date: Thu, 4 Mar 2010 13:36:28 +0100 Subject: Adding helper to prevent upstart from being run during chroot phase (Closes: #571056). --- helpers/binary | 2 ++ helpers/binary_rootfs | 6 ++++ helpers/chroot | 2 ++ helpers/chroot_upstart | 86 ++++++++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 96 insertions(+) create mode 100755 helpers/chroot_upstart diff --git a/helpers/binary b/helpers/binary index 234d8985f..0a6991860 100755 --- a/helpers/binary +++ b/helpers/binary @@ -40,6 +40,7 @@ then lh chroot_resolv install ${*} lh chroot_hostname install ${*} lh chroot_sysv-rc install ${*} + lh chroot_upstart install ${*} lh chroot_apt install-binary ${*} lh chroot_sources install ${*} fi @@ -93,6 +94,7 @@ fi lh chroot_apt remove ${*} lh chroot_sysv-rc remove ${*} lh chroot_sysfs remove ${*} +lh chroot_upstart remove ${*} lh chroot_selinuxfs remove ${*} lh chroot_proc remove ${*} lh chroot_devpts remove ${*} diff --git a/helpers/binary_rootfs b/helpers/binary_rootfs index a862895fe..c33585f67 100755 --- a/helpers/binary_rootfs +++ b/helpers/binary_rootfs @@ -154,6 +154,7 @@ case "${LH_CHROOT_FILESYSTEM}" in lh chroot_resolv remove ${*} lh chroot_hosts remove ${*} lh chroot_sysv-rc remove ${*} + lh chroot_upstart remove ${*} lh chroot_dpkg remove ${*} lh chroot_debianchroot remove ${*} lh chroot_sysfs remove ${*} @@ -171,6 +172,7 @@ case "${LH_CHROOT_FILESYSTEM}" in lh chroot_debianchroot install ${*} lh chroot_dpkg install ${*} lh chroot_sysv-rc install ${*} + lh chroot_upstart install ${*} lh chroot_hosts install ${*} lh chroot_resolv install ${*} lh chroot_hostname install ${*} @@ -236,6 +238,7 @@ case "${LH_CHROOT_FILESYSTEM}" in lh chroot_resolv remove ${*} lh chroot_hosts remove ${*} lh chroot_sysv-rc remove ${*} + lh chroot_upstart remove ${*} lh chroot_dpkg remove ${*} lh chroot_debianchroot remove ${*} lh chroot_sysfs remove ${*} @@ -253,6 +256,7 @@ case "${LH_CHROOT_FILESYSTEM}" in lh chroot_debianchroot install ${*} lh chroot_dpkg install ${*} lh chroot_sysv-rc install ${*} + lh chroot_upstart install ${*} lh chroot_hosts install ${*} lh chroot_resolv install ${*} lh chroot_hostname install ${*} @@ -351,6 +355,7 @@ case "${LH_CHROOT_FILESYSTEM}" in lh chroot_resolv remove ${*} lh chroot_hosts remove ${*} lh chroot_sysv-rc remove ${*} + lh chroot_upstart remove ${*} lh chroot_dpkg remove ${*} lh chroot_debianchroot remove ${*} lh chroot_sysfs remove ${*} @@ -368,6 +373,7 @@ case "${LH_CHROOT_FILESYSTEM}" in lh chroot_debianchroot install ${*} lh chroot_dpkg install ${*} lh chroot_sysv-rc install ${*} + lh chroot_upstart install ${*} lh chroot_hosts install ${*} lh chroot_resolv install ${*} lh chroot_hostname install ${*} diff --git a/helpers/chroot b/helpers/chroot index 65c5e659f..02a4c049d 100755 --- a/helpers/chroot +++ b/helpers/chroot @@ -35,6 +35,7 @@ lh chroot_sysfs install ${*} lh chroot_debianchroot install ${*} lh chroot_dpkg install ${*} lh chroot_sysv-rc install ${*} +lh chroot_upstart install ${*} lh chroot_hosts install ${*} lh chroot_resolv install ${*} lh chroot_hostname install ${*} @@ -69,6 +70,7 @@ lh chroot_hostname remove ${*} lh chroot_resolv remove ${*} lh chroot_hosts remove ${*} lh chroot_sysv-rc remove ${*} +lh chroot_upstart remove ${*} lh chroot_dpkg remove ${*} lh chroot_debianchroot remove ${*} lh chroot_sysfs remove ${*} diff --git a/helpers/chroot_upstart b/helpers/chroot_upstart new file mode 100755 index 000000000..a96304417 --- /dev/null +++ b/helpers/chroot_upstart @@ -0,0 +1,86 @@ +#!/bin/sh + +# lh_chroot_upstart(1) - manage /usr/sbin/initctl +# Copyright (C) 2006-2009 Daniel Baumann +# +# live-helper comes with ABSOLUTELY NO WARRANTY; for details see COPYING. +# This is free software, and you are welcome to redistribute it +# under certain conditions; see COPYING for details. + +set -e + +# Including common functions +. "${LH_BASE:-/usr/share/live-helper}"/live-helper.sh + +# Setting static variables +DESCRIPTION="$(Echo 'manage /usr/sbin/initctl')" +HELP="" +USAGE="${PROGRAM} {install|remove} [--force]" + +Arguments "${@}" + +# Reading configuration files +Read_conffiles config/all config/common config/bootstrap config/chroot config/binary config/source +Set_defaults + +# Requiring stage file +Require_stagefile .stage/config .stage/bootstrap + +case "${1}" in + install) + Echo_message "Configuring file /usr/sbin/initctl" + + # Checking stage file + Check_stagefile .stage/chroot_upstart + + # Checking lock file + Check_lockfile .lock + + # Creating lock file + Create_lockfile .lock + + if [ -f chroot/usr/sbin/initctl ] + then + # Save initctl file + mv chroot/usr/sbin/initctl chroot/usr/sbin/initctl.orig + fi + + # Create initctl file +cat > chroot/usr/sbin/initctl << EOF +#!/bin/sh +echo "All runlevel operations denied by policy" >&2 +exit 101 +EOF + + chmod 0755 chroot/usr/sbin/initctl + + # Creating stage file + Create_stagefile .stage/chroot_upstart + ;; + + remove) + Echo_message "Deconfiguring file /usr/sbin/initctl" + + # Checking lock file + Check_lockfile .lock + + # Creating lock file + Create_lockfile .lock + + if [ -f chroot/usr/sbin/initctl.orig ] + then + # Restore initctl file + mv chroot/usr/sbin/initctl.orig chroot/usr/sbin/initctl + else + # Remove initctl file + rm -f chroot/usr/sbin/initctl + fi + + # Removing stage file + rm -f .stage/chroot_upstart + ;; + + *) + Usage + ;; +esac -- cgit v1.2.3