Benutzer-Werkzeuge

Webseiten-Werkzeuge


 [[anwenderwiki:classroom_management:skmini-install-server]] 

Script: install-server.sh

  • Die Rechte an allen Dateien unter /home/samba/progs/ werden so gesetzt, dass nur ein Lehrer oder der pgmadmin Zugriff hat.
  • In dem Verzeichnis /home/samba/progs/minisk/ wird auch das Installationsscript abgelegt, das anschließend am Client ausgeführt werden muss.
  • In der Datei /etc/linuxmuster/allowed_ports wird der Port 9731 ergänzt. Danach wird die interne Firewall neu gestartet.
  • Es wird ein init-Script angelegt, das den schukodaemon beim Booten des Servers startet /etc/init.d/schukodaemon.sh.
  • Der Benutzer pgmadmin wird in die Gruppe „teachers“ aufgenommen und erhält als Shell die „bin/bash“
#! /bin/bash
#
# install script fuer mini-sk am Server
#
##################################################################

pfad="/home/samba/progs/minisk/"
pfad2="/home/samba/progs/mausdienst/"
pfad3="/home/samba/progs/maus2/"
etcpfad="/etc/linuxmuster/maus/"
sbinpfad="/usr/sbin/"
initpfad="/etc/init.d/"

##################################################################

if [ "$(id -u)" != "0" ]; then
   echo "###################################"
   echo "# This script must be run as root #"
   echo "###################################"
   exit 1
fi

apt-get -y install openssl apg

mkdir -p $pfad
mkdir -p $pfad2
mkdir -p $pfad3
mkdir -p $etcpfad

smbldap-usermod -G teachers pgmadmin
sophomorix-passwd -u pgmadmin --shell /bin/bash

if ! [ -s "$pfad2"md.pass ]; then
  rm "$pfad2"md.pass
fi

if [ -e "$pfad2"md.pass ]; then
   echo "#####################################################################"
   echo "# ACHTUNG!                                                          #"
   echo "# Das md-Passwort md.pass existiert schon, es wird beibehalten.     #"
   echo "# Ein neues Passwort liegt nun unter md.pass.neu. und md.md5.neu    #"
   echo "# Ggf. das bisherige Passwort und md5-Datei umbenennen und ersetzen.#"
   echo "#####################################################################"
   apg -n 1 -m 16 -M c | tr -d "\n" > "$pfad2"md.pass.neu
   md5sum "$pfad2"md.pass.neu | awk -F" " '{print $1}' > "$pfad2"md.md5.neu
else
   echo "md-Passwort wird erzeugt ..."
   apg -n 1 -m 16 -M c | tr -d "\n" > "$pfad2"md.pass
   md5sum "$pfad2"md.pass | awk -F" " '{print $1}' > "$pfad2"md.md5
fi

openssl genrsa -out "$pfad2"md.key 2048
openssl req -x509 -new -nodes -subj "/C=DE/ST=BW/L=Schule/O=Mausdienst/CN=Mausdienst" -extensions v3_ca -key "$pfad2"md.key -days 3650 -out "$pfad2"md.cert -sha512

echo "Dateien werden zum Server kopiert ..."

if [ -e "$pfad"mini_sk.cfg ]; then
   echo "#############################################################################"
   echo "# ACHTUNG!                                                                  #"
   echo "# Die Konfigurationsdatei mini_sk.cfg existiert schon, sie wird beibehalten.#"
   echo "# Eine neue Konfigurationsdatei liegt nun unter mini_sk.cfg.neu.            #"
   echo "# Ggf. die bisherige Konfigurationsdatei entsprechend anpassen.             #"
   echo "#############################################################################"
   cp mini_sk.cfg "$pfad"mini_sk.cfg.neu
else
   cp mini_sk.cfg $pfad
fi

cp mini_sk $pfad
cp mini_sk.exe $pfad
cp mini_sk.ico $pfad
cp mini_sk.desktop $pfad
cp install-u-c.xx "$pfad"install-ubuntu-client.sh
cp openssl.64/libeay32.dll $pfad
cp openssl.64/ssleay32.dll $pfad

cp mausdaemon $pfad2
cp mausdaemon.sh $pfad2
cp mausdaemon.cfg $pfad2
cp sperren.sh $pfad2
cp freigeben.sh $pfad2
cp nachricht.sh $pfad2
cp befehl.sh $pfad2
cp url.sh $pfad2
cp closed.xbm $pfad2

cp mausdienst.exe $pfad2
cp mausdienst.cfg $pfad2
cp openssl.32/libeay32.dll $pfad2
cp openssl.32/ssleay32.dll $pfad2
cp winKeyLockHook.dll $pfad2

common_bat="/home/samba/netlogon/common.bat"
if [ -e "$common_bat" ]; then
  if ! grep -q 'mausdienst.exe' "$common_bat" ; then
    echo "Login-Script common.bat wird für Windows angepasst ..."
    echo "" >> $common_bat
    echo "REM ### Mausdienst beim login starten ###" >> $common_bat
    echo "REM if exist \\\\%SERVER%\pgm\mausdienst\mausdienst.exe start \\\\%SERVER%\pgm\mausdienst\mausdienst.exe" >> $common_bat
    echo "" >> $common_bat
  fi
fi

cp startmaus $pfad3
cp maus.exe $pfad3
touch "$pfad2"x11vnc.text
if [ -e "$pfad3"maus.cfg ]; then
   echo "############################################################################"
   echo "# ACHTUNG!                                                                 #"
   echo "# Die Konfigurationsdatei maus.cfg existiert schon, sie wird beibehalten.  #"
   echo "# Eine neue Konfigurationsdatei liegt nun unter maus.cfg.neu.              #"
   echo "# Ggf. die bisherige Konfigurationsdatei entsprechend anpassen.            #"
   echo "############################################################################"
   cp maus.cfg "$pfad3"maus.cfg.neu
else
   cp maus.cfg $pfad3
fi

cp maus.ico $pfad3
cp maus.desktop $pfad3
cp wol.exe $pfad3
cp openssl.64/libeay32.dll $pfad3
cp openssl.64/ssleay32.dll $pfad3

echo "Zugriffsrechte werden gesetzt ..."

chown -R pgmadmin:teachers $pfad $pfad2 $pfad3
chmod -R 750 $pfad $pfad3
chmod 755 $pfad $pfad3
chmod -R 755 $pfad2
chmod 640 "$pfad"mini_sk.cfg "$pfad"mini_sk.ico
chmod 644 "$pfad2"mausdienst.cfg "$pfad2"mausdaemon.cfg "$pfad2"md.md5 "$pfad2"md.cert  "$pfad2"md.key
chmod 640 "$pfad2"x11vnc.text "$pfad3"maus.cfg "$pfad2"md.pass "$pfad3"maus.ico
if [ -e "$pfad2"x11vnc.pass ]; then
  chmod 640 "$pfad2"x11vnc.pass
fi
if [ -e "$pfad2"md.pass.neu ]; then
  chmod 640 "$pfad2"md.pass.neu
fi
if [ -e "$pfad2"md.md5.neu ]; then
  chmod 640 "$pfad2"md.md5.neu
fi
if [ -e "$pfad"mini_sk.cfg.neu ]; then
  chmod 640 "$pfad"mini_sk.cfg.neu
fi
if [ -e "$pfad3"maus.cfg.neu ]; then
  chmod 640 "$pfad3"maus.cfg.neu
fi

if [ -e "$etcpfad"schukodaemon.cfg ]; then
   echo "############################################################################"
   echo "# ACHTUNG!                                                                 #"
   echo "# Die Konfigurationsdatei schukodaemon.cfg ex. schon, sie wird beibehalten.#"
   echo "# Eine neue Konfigurationsdatei liegt nun unter schukodaemon.cfg.neu.      #"
   echo "# Ggf. die bisherige Konfigurationsdatei entsprechend anpassen.            #"
   echo "############################################################################"
   cp schukodaemon.cfg "$etcpfad"schukodaemon.cfg.neu
   chmod 640 "$etcpfad"schukodaemon.cfg.neu
else
   cp schukodaemon.cfg $etcpfad
   chmod 640 "$etcpfad"schukodaemon.cfg
fi

echo "Keypaar für die eine optionale ssl-Kommunikation mit server wird erstellt ..."
openssl genrsa -out "$etcpfad"sk.key 2048
openssl req -x509 -new -nodes -subj "/C=DE/ST=BW/L=Schule/O=schukodaemon/CN=schukodaemon" -extensions v3_ca -key "$etcpfad"sk.key -days 3650 -out "$etcpfad"sk.cert -sha512

echo "Prozesse schukodaemon stop ..."
killall -e -9 schukodaemon
sleep 2

echo "Firewall wird konfiguriert ..."

sed -i '/[^0-9]9731/ !s/^tcp .*/&,9731/' /etc/linuxmuster/allowed_ports
restart-fw --int

cp schukodaemon $sbinpfad
cp schukodaemon.sh $initpfad

chown root:root "$sbinpfad"schukodaemon "$initpfad"schukodaemon.sh
chmod 755 "$sbinpfad"schukodaemon "$initpfad"schukodaemon.sh

echo "Boot-Script wird aktiviert ..."

/usr/sbin/update-rc.d schukodaemon.sh defaults

"$initpfad"schukodaemon.sh start

echo "### Installation mini_sk, MAus und schukodaemon beendet ###"

exit 0

Script: install-ubuntu-client.sh

#! /bin/bash
#
# install script für maus und mausdaemon am Ubuntu-Linux-Client
#
##################################################################

pfad="/home/samba/progs/minisk/"
pfad2="/home/samba/progs/mausdienst/"
pfad3="/home/samba/progs/maus2/"
etcpfad="/etc/linuxmuster-client/maus/"
sbinpfad="/usr/sbin/"
initpfad="/etc/init.d/"

##################################################################

if [ "$(id -u)" != "0" ]; then
   echo "###################################"
   echo "# This script must be run as root #"
   echo "###################################"
   exit 1
fi

echo "### Installation maus und mausdaemon wird gestartet ###"

apt-get -y install suckless-tools wakeonlan xvnc4viewer screen

mkdir -p $etcpfad

echo "Dateien werden zum Client kopiert ..."

if [ -e "$etcpfad"mausdaemon.cfg ]; then
   echo "##################################################################################"
   echo "# ACHTUNG!                                                                       #"
   echo "# Die Konfigurationsdatei mausdaemon.cfg existiert schon, sie wird beibehalten.  #"
   echo "# Eine neue Konfigurationsdatei liegt nun unter mausdaemon.cfg.neu.              #"
   echo "# Ggf. die bisherige Konfigurationsdatei entsprechend anpassen.                  #"
   echo "##################################################################################"
   cp "$pfad2"mausdaemon.cfg "$etcpfad"mausdaemon.cfg.neu
else
   cp "$pfad2"mausdaemon.cfg $etcpfad
fi

cp "$pfad2"mausdaemon $sbinpfad
cp "$pfad2"mausdaemon.sh $initpfad
cp "$pfad2"sperren.sh $etcpfad
cp "$pfad2"freigeben.sh $etcpfad
cp "$pfad2"nachricht.sh $etcpfad
cp "$pfad2"befehl.sh $etcpfad
cp "$pfad2"closed.xbm $etcpfad
cp "$pfad2"md.md5 $etcpfad

cp "$pfad"mini_sk.ico /usr/share/icons/
chmod 644 /usr/share/icons/mini_sk.ico
cp "$pfad"mini_sk.desktop /usr/share/applications/
chmod 755 /usr/share/applications/mini_sk.desktop

cp "$pfad3"maus.ico /usr/share/icons/
chmod 644 /usr/share/icons/maus.ico
cp "$pfad3"maus.desktop /usr/share/applications/
chmod 755 /usr/share/applications/maus.desktop

echo "Zugriffsrechte werden gesetzt ..."

chown -R root:root $etcpfad
chmod -R 755 $etcpfad
chmod 640 "$pfad2"mausdaemon.cfg "$pfad2"md.md5

chown root:root "$sbinpfad"mausdaemon "$initpfad"mausdaemon.sh
chmod 755 "$sbinpfad"mausdaemon "$initpfad"mausdaemon.sh

echo "Boot-Script wird aktiviert ..."

/usr/sbin/update-rc.d mausdaemon.sh defaults

echo "### Installation mausdaemon beendet ###"

exit 0

Quellcode zu Mini-SK und MAus2

Der Quellcode wurde mit Lazarus 1.0.x compiliert:

  • Unter 64-Bit Ubuntu 16.04: MAus2, Mini-SK und MausDaemon
  • Unter 64-Bit Windows 7: MAus2, Mini-Sk
  • Unter 32-Bit Windows XP: MausDienst

Die 32-Bit Version von MausDienst war notwendig, da die dabei benutzte DLL „WinKeyLockHook.dll“ → https://sourceforge.net/projects/winkeylock/ nur in 32-Bit vorlag.

Programm „wol.exe“ von → http://www.gammadyne.com/cmdline.htm

Verwendete zusätzliche Komponenten von Lazarus:

  • LNet
  • RingWatch (für MausDienst)
  • TDaemon

Verwendete openSSL-DLL in 32-Bit und 64-Bit-Versionen → https://www.openssl.org/:

  • ssleay32.dll
  • libeay32.dll

Quellcodepakete:

 [[anwenderwiki:classroom_management:skmini-install-server]] anwenderwiki/classroom_management/skmini-install-server.txt · Zuletzt geändert: 2017/09/30 16:06 (Externe Bearbeitung)