Benutzer-Werkzeuge

Webseiten-Werkzeuge


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

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
anwenderwiki:classroom_management:skmini-install-server [2017/01/12 00:20]
martin.res [Quellcode zu Mini-Sk und MAus2]
anwenderwiki:classroom_management:skmini-install-server [2017/09/30 18:06] (aktuell)
martin.res [Script: install-server.sh]
Zeile 1: Zeile 1:
 +{{tag> minisk}}
 +
 +====== 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"​
 +
 +
 +<​code>​
 +#! /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
 +
 +
 +</​code>​
 +
 +
 +
 +====== Script: install-ubuntu-client.sh ======
 +
 +
 +<​code>​
 +#! /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
 +</​code>​
 +
 +
 +====== 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:​schukodaemon.028.zip|}}
 +  * {{:​anwenderwiki:​classroom_management:​mausdaemon.026.zip|}}
 +  * {{:​anwenderwiki:​classroom_management:​mausdienst.060.zip|}}
 +  * {{:​anwenderwiki:​classroom_management:​maus2.060.zip|}}
 +  * {{:​anwenderwiki:​classroom_management:​minisk.042.zip|}}
  
 [[anwenderwiki:classroom_management:skmini-install-server]] anwenderwiki/classroom_management/skmini-install-server.txt · Zuletzt geändert: 2017/09/30 18:06 von martin.res