Debian-on schroot-ban netes kliensek

Script egy chroot környezet létrehozásának beautomatizálására. Az alábbiakat teszi nagy vonalakban:
- debootstrap és schroot telepítése
- chroot létrehozása
- schroot konfig beállítása
- rendszer frissítés
- adott csomagok telepítése a chroot-ba
- adott user beállítások átmásolása a chroot környezetbe
- megfelelő időzona beállítása
- suid és guid bitek eltávolítása az összes binárisról a chroot-ban

Ezeket a script-jeimet használom:
1) chroot_create.sh (csak egyszeri futtatásra a chroot létrehozásához)
2) chroot_run.sh (chroot-on belüli programok futtatására, pl: chroot_run.sh pidgin)
3) chroot_update.sh (chroot rendszer egyszerű frissítésére)

Remélem nincs nagyon sok sec hole benne ;)

Megj.: update-elni külön kell az schroot környezetet, azért ezt nem baj megjegyezni. Az 'schroot' parancs belép és ad egy shell-t, és ott már ugyanúgy.

Megj.2: idetettem még az update script-emet is. Egy fontos dolog elsőre kimaradt. A chroot-on belüli sources.list-be bele kell tenni a debian-os security repo-t hogy az is tudjon frissülni az update során. Vastaggal kiemeltem.


-------------------------------------------------------------
#!/bin/sh
# chroot_create.sh

if ! whoami | grep -q root; then echo Run it as root.; echo; exit 1; fi

CHROOTDIR="/chroot"
MYUSER="andras"
DEBIANVER="lenny"
ARCH="amd64"
CONF="/etc/schroot/schroot.conf"
PKGS="epiphany-browser pidgin pidgin-encryption pidgin-otr alsa-utils mozilla-mplayer swfdec-mozilla gtk2-engines-pixbuf gtk2-engines-xfce less wine-bin wine-utils"


if [ -x "$CHROOTDIR" ]
then
	echo Chroot directory already exists.
	echo
	exit 1
fi


apt-get clean
apt-get update
apt-get install schroot debootstrap


debootstrap --variant=minbase --arch $ARCH $DEBIANVER $CHROOTDIR http://ftp.at.debian.org/debian

echo "deb http://security.debian.org/ $DEBIANVER/updates main" >> "$CHROOTDIR"/etc/apt/sources.list

#nano /etc/schroot/copyfiles-defaults
#nano /etc/schroot/mount-defaults

sed -i.bak s/"^\/home"/"#\/home"/ /etc/schroot/mount-defaults
sed -i.tmp s/"^#proc"/"proc"/     /etc/schroot/mount-defaults
sed -i.tmp s/"^#tmpfs"/"tmpfs"/   /etc/schroot/mount-defaults


echo "" > "$CONF"
echo "[default]" >> "$CONF"
echo "description=Debian" >> "$CONF"
echo "type=directory" >> "$CONF"
echo "location=$CHROOTDIR" >> "$CONF"
echo "priority=3" >> "$CONF"
echo "users=$MYUSER" >> "$CONF"
echo "#groups=sbuild" >> "$CONF"
echo "root-groups=root" >> "$CONF"
echo "run-setup-scripts=true" >> "$CONF"
echo "run-exec-scripts=true" >> "$CONF"


echo 'SESSIONS_RECOVER="end"' > /etc/default/schroot


schroot -d ~ -- apt-get clean
schroot -d ~ -- apt-get update
schroot -d ~ -- apt-get -y upgrade
schroot -d ~ -- apt-get -y install $PKGS
schroot -d ~ -- apt-get clean
schroot -d ~ -- apt-get update
schroot -d ~ -- apt-get -y upgrade


sed -i.tmp s/"^\/home"/"#\/home"/ /etc/schroot/mount-defaults
sed -i.tmp s/"^proc"/"#proc"/     /etc/schroot/mount-defaults
sed -i.tmp s/"^tmpfs"/"#tmpfs"/   /etc/schroot/mount-defaults


# my own settings to copy
mkdir -p "$CHROOTDIR"/home/"$MYUSER"
mkdir -p "$CHROOTDIR"/home/"$MYUSER"/Desktop
mkdir -p "$CHROOTDIR"/home/"$MYUSER"/configs
mkdir -p "$CHROOTDIR"/home/"$MYUSER"/extras/downloads
mkdir -p "$CHROOTDIR"/home/"$MYUSER"/.config
mkdir -p "$CHROOTDIR"/home/"$MYUSER"/.gconf/apps
mkdir -p "$CHROOTDIR"/home/"$MYUSER"/.gnome2
chown -R "$MYUSER":"$MYUSER" "$CHROOTDIR"/home/"$MYUSER"
# epiphany settings
cp -a /home/"$MYUSER"/.gnome2/epiphany     "$CHROOTDIR"/home/"$MYUSER"/.gnome2/
cp -a /home/"$MYUSER"/.gconf/apps/epiphany     "$CHROOTDIR"/home/"$MYUSER"/.gconf/apps/
# pidgin settings
cp -a /home/"$MYUSER"/.purple              "$CHROOTDIR"/home/"$MYUSER"/
# pidgin plugin for msn live
cp -a /usr/lib/purple-2/libmsn-pecan.so    "$CHROOTDIR"/usr/lib/purple-2/


tzselect

echo
echo removing suid and guid bits from executables...
find /chroot/ -perm -4000 -user  root ! -type d | xargs chmod u-s
find /chroot/ -perm -2000 -group root ! -type d | xargs chmod g-s

echo
echo done.

exit 0

-------------------------------------------------------------

#!/bin/sh
# chroot_run.sh

xhost local:

schroot -d ~ -p -- "$@"

xhost -

exit 0

-------------------------------------------------------------

#!/bin/sh
# chroot_update.sh

if ! whoami | grep -q root; then echo Run it as root.; echo; exit 1; fi

CHROOTDIR="/chroot"

if ! [ -x "$CHROOTDIR" ]
then
	echo Chroot directory doesn"'"t exists.
	echo
	exit 1
fi


schroot -d ~ -- apt-get clean
schroot -d ~ -- apt-get update
schroot -d ~ -- apt-get -y upgrade

echo
echo done.

exit 0

Hozzászólások

Ez még jól is jöhet, kösz. :)

-----
"Egy jó kapcsolatban a társunkat az ő dolgában kell támogatni, nem a miénkben."

A "másik" topikban kértem, de itt köszönöm meg! :) Köszönöm! :)
--
\\-- blog --//

Egy dolog kimaradt. A chroot frissítéssel kapcsolatban feljebb beszúrtam megjegyzést.