/usr/sbin/globus-gridftp-server-setup-chroot is in globus-gridftp-server-progs 9.4-2.
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 | #!/bin/sh
set -e
CERT_DIR=/etc/grid-security/certificates
USAGE_ONELINE="Usage: $(basename $0) [-c CERT-DIR] -r NEW-CHROOT"
USAGE_OPTIONS="
Options:
-c CERT-DIR Copy certificates from CERT-DIR to the chroot
[$CERT_DIR]
-r NEW-CHROOT New chroot directory to set up.
"
COPYFILES="/etc/passwd
/etc/group
/etc/hosts
/etc/nsswitch.conf"
while getopts "c:r:h" opt; do
case $opt in
c ) CERT_DIR="$OPTARG";;
r ) ROOT_DIR="$OPTARG";;
h ) echo "$USAGE_ONELINE" "$USAGE_OPTIONS"; exit 0;;
* ) echo "$USAGE_ONELINE"; exit 1;;
esac
done
if [ $(id -ru) -ne 0 ]; then
echo "This command must be run as 'root'."
exit 1
fi
if [ -z "$ROOT_DIR" ]; then
echo "ERROR: Missing required argument -r NEW-CHROOT"
echo "$USAGE_ONELINE"
exit 1
fi
if [ "$ROOT_DIR" -ef "/" ]; then
echo "ERROR: Invalid root path: '$ROOT_DIR'."
echo "$USAGE_ONELINE"
exit 1
fi
mkdir -p -m 755 "$ROOT_DIR"
if [ ! -d "$ROOT_DIR" ]; then
exit 1;
fi
chown root:$(id -g root) "$ROOT_DIR"
mkdir -p -m 1777 "$ROOT_DIR/tmp"
mkdir -p -m 755 "$ROOT_DIR/dev"
devs="zero null random urandom"
case $(uname) in
Linux|Darwin|SunOS|GNU|GNU/kFreeBSD)
(cd /dev; tar chf - $devs) | (cd "$ROOT_DIR/dev"; tar xf -)
;;
esac
if [ ! -c "$ROOT_DIR/dev/null" ]; then
echo "Could not create /dev devices."
exit 1
fi
mkdir -p "$ROOT_DIR/etc/grid-security/certificates"
gotacert=0
for file in "$CERT_DIR/"*; do
if [ -e "$file" ]; then
cp -LpR "$file" "$ROOT_DIR/etc/grid-security/certificates/"
gotacert=1
fi
done
if [ "$gotacert" = 0 ]; then
echo "ERROR: No trusted certificates copied into"
echo " $ROOT_DIR/etc/grid-security/certificates"
echo "Use the -c option to choose an alternate source for trusted"
echo "certificates."
exit 1
fi
for file in $COPYFILES; do
if [ -e "$file" ]; then
dirn="$(dirname "$file")"
mkdir -p "$ROOT_DIR/$dirn"
cp -Lp "$file" "$ROOT_DIR/$dirn"
fi
done
echo ""
echo "Finished setting up a chroot dir at $ROOT_DIR."
echo ""
echo "You may wish to create data directories"
if [ `uname` = Linux ]; then
echo "or use mount --bind datadir $ROOT_DIR/datadir"
echo "to link in external directories."
fi
echo ""
|