{{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" #! /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: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|}}