sorry, it looks like the mailing list archive software added html tags to 
my text attachment.  let me just try including the script in my message so 
that a usable copy is in the list archive.

-al

[EMAIL PROTECTED]
Senior Systems Engineer
303.544.5283 (office)
303.419.3116 (cell)

#!/bin/sh

#####################################################################
#####################################################################
##
## mkchroot.sh - set up a chroot jail.
##
## This script is written to work for Red Hat 8/9 systems, but may work on
## other systems.  Or, it may not...  In fact, it may not work at all.  Use at
## your own risk.  :)
##
#
# modified 11/27/2006 to work for solaris 9 environment.  [EMAIL PROTECTED]
#

fail() {

        echo "`basename $0`: fatal error" >&2
        echo "$1" >&2
        exit $2
}

#####################################################################
#
# Initialize - handle command-line args, and set up variables and such.
# 
# $1 is the directory to make the root of the chroot jail (required)
# $2, if given, is the user who should own the jail (optional)
# $3, if given,  is the permissions on the directory (optional) 
#

# added for solaris to find whoami
PATH=$PATH:/usr/ucb
export PATH

if [ -z "$1" ]; then
        echo "`basename $0`: error parsing command line" >&2
        echo "  You must specify a directory to use as the chroot jail." >&2
        exit 1
fi

jail_dir="$1"

if [ -n "$2" ]; then
        owner="$2"
fi

if [ -n "$3" ]; then
        perms="$3"
fi


#####################################################################
#
# build the jail
#

# now make the directory

if [ ! -d "$jail_dir" ]; then
        echo "Creating root jail directory."
        mkdir -p "$jail_dir"

        if [ $? -ne 0 ]; then
                echo "  `basename $0`: error creating jail directory." >&2
                echo "Check permissions on parent directory." >&2
                exit 2
        fi
fi

if [ -n "$owner" -a `whoami` = "root" ]; then
        echo "Setting owner of jail."
        chown "$owner" "$jail_dir"
        if [ $? -ne 0 ]; then
                echo "  `basename $0`: error changing owner of jail directory." 
>&2
                exit 3
         fi
else
        echo  "NOT changing owner of root jail. \c"
        if [ `whoami` != "root" ]; then
                echo "You are not root."
        else
                echo
        fi
fi

if [ -n "$owner" -a `whoami` = "root" ]; then
        echo "Setting permissions of jail."
        chmod "$perms" "$jail_dir"
        if [ $? -ne 0 ]; then
                echo "  `basename $0`: error changing perms of jail directory." 
>&2
                exit 3
         fi
else
        echo "NOT changing perms of root jail. \c"
        if [ `whoami` != "root" ]; then
                echo "You are not root."
        else
                echo
        fi
fi

# copy SSH files

scp_path="/usr/bin/scp"
sftp_server_path="/usr/lib/ssh/sftp-server"
rssh_path="/usr/local/bin/rssh"
chroot_helper_path="/usr/local/libexec/rssh_chroot_helper"
# added for solaris in order for wordexp() to work
system_shell_path="/bin/ksh"

for jail_path in `dirname "$jail_dir$scp_path"` `dirname 
"$jail_dir$sftp_server_path"` `dirname "$jail_dir$chroot_helper_path"` `dirname 
"$jail_dir$rssh_path"` `dirname "$jail_dir$system_shell_path"`; do

        echo "setting up $jail_path"

        if [ ! -d "$jail_path" ]; then
                mkdir -p "$jail_path" || \
                        fail "Error creating $jail_path. Exiting." 4
        fi

done

cp "$scp_path" "$jail_dir$scp_path" || \
        fail "Error copying $scp_path. Exiting." 5
cp "$sftp_server_path" "$jail_dir$sftp_server_path" || \
        fail "Error copying $sftp_server_path. Exiting." 5
cp "$rssh_path" "$jail_dir$rssh_path" || \
        fail "Error copying $rssh_path. Exiting." 5
cp "$chroot_helper_path" "$jail_dir$chroot_helper_path" || \
        fail "Error copying $chroot_helper_path. Exiting." 5
cp "$system_shell_path" "$jail_dir$system_shell_path" || \
        fail "Error copying $system_shell_path. Exiting." 5


#####################################################################
#
# identify and copy libraries needed in the jail
#

for prog in $scp_path $sftp_server_path $rssh_path $chroot_helper_path 
$system_shell_path; do
        echo "Copying libraries for $prog."
        libs=`ldd $prog | tr -s ' ' | cut -d' ' -f3`
        for lib in $libs; do
                mkdir -p "$jail_dir`dirname $lib`"
                echo "  $lib"
                cp "$lib" "$jail_dir$lib"
        done
done

echo "copying name service resolution libraries..."
#tar -cf - /lib/libnss_files* /lib/libnss1_files* | ( cd $jaildir ; tar  -xvf - 
|sed 's/^/\t/' )
(cd / ; tar -cf - ./usr/lib/nss_files*)  | ( cd $jail_dir ; tar  -xpvf - |sed 
's/^/     /' )

#####################################################################
#
# copy config files for the dynamic linker, nsswitch.conf, and the passwd file
#

echo "Setting up /etc in the chroot jail"
mkdir -p "$jail_dir/etc"
cp /etc/nsswitch.conf "$jail_dir/etc/"
cp /etc/passwd "$jail_dir/etc/"
#cp /etc/ld.* "$jail_dir/etc/"
# added for solaris dynamic linker
cp -p /usr/lib/ld.so.1 $jail_dir/usr/lib

echo  "Chroot jail configuration completed."
#echo  "\nNOTE: if you are not using the passwd file for authentication,"
#echo  "you may need to copy some of the /lib/libnss_* files into the jail.\n"


#####################################################################
#
# set up /dev/log
#
#
#mkdir -p "$jail_dir/dev"
#
#echo  "NOTE: you must MANUALLY edit your syslog rc script to start syslogd"
#echo  "with appropriate options to log to $jail_dir/dev/log.  In most cases,"
#echo  "you will need to start syslog as:\n"
#echo  "   /sbin/syslogd -a $jail_dir/dev/log\n"
#
#echo  "NOTE: we make no guarantee that ANY of this will work for you... \c"
#echo  "if it\ndoesn't, you're on your own.  Sorry!\n"



-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys - and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________
rssh-discuss mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/rssh-discuss

Reply via email to