File: vserver.suexec

package info (click to toggle)
util-vserver 0.30.216-pre3054-1
  • links: PTS, VCS
  • area: main
  • in suites: jessie, jessie-kfreebsd
  • size: 10,556 kB
  • ctags: 3,909
  • sloc: ansic: 23,121; sh: 16,905; xml: 1,972; makefile: 383; python: 301; perl: 85; awk: 4
file content (75 lines) | stat: -rw-r--r-- 2,687 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
# $Id$  --*- sh -*--

# Copyright (C) 2003 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
#  
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; version 2 of the License.
#  
# 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, write to the Free Software
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.

is_stopped=
isVserverRunning "$VSERVER_DIR" S_CONTEXT || is_stopped=1
test -z "$is_stopped" -o "$OPTION_INSECURE" || {
    echo $"'vserver ... suexec' is supported for running vservers only; aborting..." >&2
    exit 1
}
generateOptions  "$VSERVER_DIR"
addtoCPUSET      "$VSERVER_DIR"
attachToCgroup   "$VSERVER_DIR"
enterNetNS       "$VSERVER_DIR"

user=$1
shift

cd "$VSERVER_DIR"/vdir/

test -z "$OPTION_NONAMESPACE" || USE_VNAMESPACE=

if $_VSERVER_INFO - FEATURE migrate; then
    if test -z "$is_stopped"; then
	exec \
	"${IONICE_CMD[@]}" \
	"${NICE_CMD[@]}" \
	"${NETNS_CMD[@]}" \
	"${CHBIND_CMD[@]}" \
	$_EXEC_ULIMIT "$VSERVER_DIR/ulimits" \
	${USE_VNAMESPACE:+$_VNAMESPACE --enter "$S_CONTEXT" -- } \
	$_VSPACE --enter "$S_CONTEXT" "${OPTS_VSPACE[@]}" "${OPTS_VSPACE_SHARED[@]}" -- \
	$_VTAG --migrate "${OPTS_VTAG_ENTER[@]}" --silent -- \
	$_VCONTEXT $SILENT_OPT --migrate $OPT_VCONTEXT_CHROOT $OPT_VCONTEXT_CLOSE_FD \
	  --xid "$S_CONTEXT" --uid "$user" "${OPTS_VCONTEXT_ENTER[@]}" -- \
	"$@"
    else
	exec \
	"${IONICE_CMD[@]}" \
	"${NICE_CMD[@]}" \
	"${CHBIND_CMD[@]}" \
	$_EXEC_ULIMIT "$VSERVER_DIR/ulimits" \
	$_VTAG --create "${OPTS_VTAG_CREATE[@]}" --silent -- \
	$_VSPACE --new "${OPTS_VSPACE[@]}" ${USE_VNAMESPACE:+--mount --fs} -- \
        $_VCONTEXT --create "${OPTS_VCONTEXT_CREATE[@]}" -- \
	$_VSPACE --set "${OPTS_VSPACE[@]}" ${USE_VNAMESPACE:+--mount --fs} -- \
	$_VUNAME   --xid self --dir "$VSERVER_DIR"/uts --missingok -- \
	$_VUNAME   --xid self --set -t context="$VSERVER_DIR" -- \
	$_VCONTEXT --migrate-self --endsetup $OPT_VCONTEXT_CHROOT $SILENT_OPT -- \
	"$@"
    fi
else
    exec \
    "${IONICE_CMD[@]}" \
    "${NICE_CMD[@]}" \
    "${CHBIND_CMD[@]}" \
    "$_EXEC_ULIMIT"  "$VSERVER_DIR/ulimits" \
    ${USE_VNAMESPACE:+$_VNAMESPACE --enter "$S_CONTEXT" --} \
    $_CHCONTEXT_COMPAT "${CHCONTEXT_OPTS[@]}" -- \
    "$_CAPCHROOT"    "${CAPCHROOT_OPTS[@]}" --suid "$user" . \
    "$@"
fi