This file is indexed.

/usr/sbin/ltsp-chroot is in ltsp-server 5.4.2-6+deb7u1.

This file is owned by root:root, with mode 0o755.

The actual contents of the file can be viewed below.

  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
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
#!/bin/sh

# copyright 2009 Vagrant Cascadian <vagrant@freegeek.org>,
# 2010 Alkis Georgopoulos <alkisg@gmail.com>,
# 2011 Wim Muskee <wimmuskee@gmail.com>, distributed under the
# terms of the GNU General Public License version 2 or any later version.

# generic functions

usage() {
cat <<EOF
$0 [OPTION] command
  -a, --arch                Architecture of the chroot.  Default is arch of the host.
  -b, --base                Base of ltsp chroot.  Default is /opt/ltsp if unspecified.
  -c, --mount-package-cache Mount package cache dir from server.
  -d, --mount-dev           Mount /dev from server.
  -h, --help                This message.
  -m, --mount-all           Mount all server dirs mentioned in this message.
  -p, --mount-proc          Mount /proc from server.
  -r, --copy-resolv-conf    Copy /etc/resolv.conf from server.
EOF
}

default_options() {
    if [ -n "$ROOT" ]; then
        # If $ROOT contains a terminating /, remove it
        ROOT=${ROOT%/}
        # Extract $BASE and $ARCH from $ROOT in case they're needed afterwards
        BASE=${ROOT%/*}
        ARCH=${ROOT##*/}
    else
        BASE=${BASE:-/opt/ltsp}
        # If $BASE contains a terminating /, remove it
        BASE=${BASE%/}
        if [ -z "$ARCH" ]; then
            # Prefer the chroot that corresponds to the server arch,
            # but if that doesn't exist, use the first one available.
            ARCH=$(detect_arch)

            if [ ! -d "$BASE/$ARCH" ]; then
                for ARCH in $(find "$BASE/" -mindepth 1 -maxdepth 1 -type d ! -name images -printf "%f\n"); do
                    test -x "$BASE/$ARCH/bin/true" && break
                done
            fi
        fi
        ROOT="$BASE/$ARCH"
    fi
}

pre_chroot() {
    test -d "$ROOT" || die "ERROR: ltsp chroot not found: $ROOT"

    if boolean_is_true "$MOUNT_ALL"; then
        MOUNT_PACKAGE_CACHE=true
        MOUNT_DEV=true
        MOUNT_PROC=true
    fi
    if boolean_is_true "$MOUNT_PACKAGE_CACHE"; then
        mount_package_cache
    fi
    if boolean_is_true "$MOUNT_DEV"; then
        mark_mount --bind "/dev" "$ROOT/dev"
        mark_mount -t devpts -o rw,noexec,nosuid,gid=5,mode=620 devpts "$ROOT/dev/pts"
    fi
    if boolean_is_true "$MOUNT_PROC"; then
        mark_mount -t proc proc "$ROOT/proc"
    fi
    if boolean_is_true "$COPY_RESOLV_CONF"; then
        cp /etc/resolv.conf "$ROOT/etc/"
    fi
}

post_chroot() {
    # Stop trapping
    trap - 0 HUP INT QUIT KILL SEGV PIPE TERM
    umount_marked
}

# distro specific functions
mount_package_cache() {
    echo "Mounting the package cache is not available for your distribution."
}

# This also sources vendor functions and .conf file settings
. /usr/share/ltsp/ltsp-server-functions

# The command line parameters override the configuration file settings
if ! args=$(getopt -n "$0" -o +a:b:cdhmpr -l \
    'arch:,base:,mount-package-cache,mount-dev,help,mount-all,mount-proc,copy-resolv-conf' -- "$@"); then
    exit 1
fi
eval "set -- $args"
while true; do
    case "$1" in
        -a|--arch) shift; ARCH=$1 ;;
        -b|--base) shift; BASE=$1 ;;
        -c|--mount-package-cache) MOUNT_PACKAGE_CACHE=true ;;
        -d|--mount-dev) MOUNT_DEV=true ;;
        -h|--help) usage; exit 0 ;;
        -m|--mount-all) MOUNT_ALL=true ;;
        -p|--mount-proc) MOUNT_PROC=true ;;
        -r|--copy-resolv-conf) COPY_RESOLV_CONF=true ;;
        --) shift; break ;;
        *) die "$0: Internal error!" ;;
    esac
    shift
done

# Finally, fall back to using default values for any unset options
default_options

require_root

trap "post_chroot" 0 HUP INT QUIT KILL SEGV PIPE TERM
pre_chroot
LTSP_HANDLE_DAEMONS=false chroot "$ROOT" "$@"