#!/bin/bash -e
cd "`dirname "$0"`"
N="${N:-$1}"
N="${N:-0}"
D="d$N"
U="u$N"
P="${P:-$[222+$N]}"
if [ ! -e "$D" ]; then
	init=1
fi
mkdir -p "$D" "$U"
rm -rf "$U/tmp"
bind="dev sys bin sbin lib usr lib32 lib64 emul lang root opt"
union="etc var home/guest home/sam"
dirs="$bind $union proc tmp"
for X in $dirs; do
	mkdir -p "$U/$X"
done
for X in $bind; do
	mount --rbind "/$X" "$U/$X"
done
for user in guest sam; do
	mkdir -p "$D/home/$user"
	chown "$user:$user" "$D/home/$user" "$U/home/$user"
done
for X in $union; do
	mkdir -p "$D/$X"
	mount -t aufs -o dirs="$D/$X":"/$X"=ro none "$U/$X"
done
chmod a+rwxt "$U/tmp"
mount -t proc proc "$U/proc"
if [ "$init" = 1 ]; then
	awk -F: 'BEGIN{OFS=":"} $1=="guest" {$7="/bin/bash"} $3<1000||$3>60000||$1=="guest"||$1=="sam" {print}' </etc/passwd >"$U/etc/passwd"
	awk -F: '$3<1000||$3>60000||$1=="guest"||$1=="sam" {print}' </etc/group >"$U/etc/group"
	awk 'BEGIN{print "Port '$P'"} !/ListenAddress|Port/ {print}' </etc/ssh/sshd_config >"$U/etc/ssh/sshd_config"
fi

#for op in D I; do
#	q iptables -$op OUTPUT -m owner --uid-owner guest -j DROP || true
#	q iptables -$op OUTPUT -m owner --uid-owner guest -d 127.0.0.1 -j ACCEPT || true
#done

#chroot "$U" /usr/sbin/sshd #-d -D
