Installation von leoclient2

Software-Pakete installieren

Die leoclient2-Pakete liegen auf dem linuxmuster.net-Paketserver https://deb.linuxmuster.net/, der im Linuxclient eventuell schon zur Einrichtung der Anmeldung am Server (Domänenanmeldung) eingetragen wurde. Dann ist der Schlüssel schon als linuxmuster.net.gpg vorhanden.

# cd /etc/apt/trusted.gpg.d
# wget https://deb.linuxmuster.net/pub.gpg

In /etc/apt/sources.list Paketquellen eintragen:

deb https://deb.linuxmuster.net/ lmn71 main            (von Domänenanmeldung schon vorhanden)
deb https://deb.linuxmuster.net/ lmn71-testing main    (leoclient2 aus testing!!!)

Installation der Pakete auf dem Linuxclient mit folgenden Befehlen:

# sudo apt update
# sudo apt install leoclient2-leovirtstarter-client leoclient2-vm-printer

Virtualbox installieren/updaten

Es wird empfohlen unter Ubuntu 22.04 die aktuelle Version von Virtualbox zu installieren.

# sudo apt update
# sudo apt install virtualbox virtualbox-guest-additions-iso

Zugehöriges Erweiterungspaket von VirtualBox installieren. Dazu mit dpkg die Versionsnummer von VirtualBox ausfindig machen und den Downloadlink entsprechend anpassen.

# dpkg -l | grep virtualbox
ii  virtualbox                                    6.1.38-dfsg-3~ubuntu1.22.04.1         amd64        x86 virtualization solution - base binaries
# cd /tmp
# wget https://download.virtualbox.org/virtualbox/6.1.38/Oracle_VM_VirtualBox_Extension_Pack-6.1.38.vbox-extpack

als linuxadmin anmelden und virtualbox starten. Unter Datei -> Einstellungen -> Zusatzpakete: mit + hinzufügen und heruntergeladene Datei in /tmp auswählen und installieren.

Gruppenzugehörigkeiten anpassen

Lokale Benutzer

Lokale Benutzer am Linuxclient (z.B. linuxadmin) müssen der Gruppe vboxusers hinzugefügt werden. Für den lokalen Benutzer linuxadmin erfolgt das mit:

# sudo adduser linuxadmin vboxusers

Weitere lokale Benutzer können entsprechend hinzugefügt werden. Diese Änderung wird erst bei einer erneuten Anmeldung des Nutzers wirksam.

Domänenbenutzer

Anpassen der Datei /etc/group über ein Anmeldescript /etc/linuxmuster-linuxclient7/onLoginAsRoot.d/10_vboxusers-group.sh . Dabei wird den Gruppen vboxusers und lpadmin der sich anmeldende Benutzer $USER hinzugefügt. Der Eintrag in lpadmin berechtigt zur Anpassung der Druckerkonfiguration (z.B. Standarddrucker), die Mitgliedschaft in vboxusers ermöglicht die umfangreiche Nutzung von Virtualbox. Die Anpassungen in der Datei /etc/group zeigen sofort Wirkung und nicht erst nach einer erneuten Anmeldung.

#!/bin/bash
# mit diesem Script sollen zusätzliche Gruppenzugehörigkeiten
# eingerichtet werden, da dies über PAM aktuell nicht funktioniert

# Aktuellen Benutzer in Gruppe vboxusers und lpadmin in /etc/group eintragen
# vboxusers:x:136:linuxadmin ersetzen mit vboxusers:x:136:linuxadmin,$USER
# lpadmin:x:122:linuxadmin ersetzen mit lpadmin:x:122:linuxadmin,$USER
# wenn vboxusers vorhanden und $USER dort nicht enthalten

USER=`echo $USER | tr [:upper:] [:lower:]`

if [ 'grep vboxusers /etc/group' != "" ];
then
    if [ "`grep vboxusers /etc/group | grep $USER`" = "" ];
    then
        sed -i "s|vboxusers:x:136:linuxadmin|vboxusers:x:136:linuxadmin,$USER|g" /etc/group
    fi
fi

if [ 'grep lpadmin /etc/group' != "" ];
then
    if [ "`grep lpadmin /etc/group | grep $USER`" = "" ];
    then
        sed -i "s|lpadmin:x:122:linuxadmin|lpadmin:x:122:linuxadmin,$USER|g" /etc/group
    fi
fi

Benutzerrechte erweitern mit sudo

Einträge in /etc/sudoers.d/80-leoclient2 sind vorzunehmen, um die notwendigen Rechte für das leovirtstarter2-Skript zu erweitern. Die lokalen Benutzer (linuxadmin, localuser) und Domänenbenutzer (%schools) erhalten sudo-Rechte ohne Passwortabfrage. Änderungen über # sudoedit /etc/sudoers.d/80-leoclient2

# leoclient2 needs to make a VM of other users usable
# option --set-permissions allows to do this
# option --register-machine allows to do this
%schools ALL=NOPASSWD: /usr/bin/leovirtstarter2 --set-permissions, /usr/bin/leovirtstarter2 --register-machine *
linuxadmin ALL=NOPASSWD: /usr/bin/leovirtstarter2 --set-permissions, /usr/bin/leovirtstarter2 --register-machine *
localuser ALL=NOPASSWD: /usr/bin/leovirtstarter2 --set-permissions, /usr/bin/leovirtstarter2 --register-machine *

Weitere sudo-Rechte setzen mit sudoedit /etc/sudoers.d/60-mkdir, um notwendige Berechtigungen für das Snapshot-Verzeichnis /media/localdisk/cache zu erhalten (dazu später mehr).

# leoclient2 needs to make a directory /media/localdisk/cache
%schools ALL=NOPASSWD: /bin/mkdir
%schools ALL=NOPASSWD: /bin/chmod
linuxadmin ALL=NOPASSWD: /bin/mkdir
linuxadmin ALL=NOPASSWD: /bin/chmod
localuser ALL=NOPASSWD: /bin/mkdir
localuser ALL=NOPASSWD: /bin/chmod

Dateien unter /etc/sudoers.d müssen Rechte 440 haben:

# sudo chmod 440 /etc/sudoers.d/80-leoclient2
# sudo chmod 440 /etc/sudoers.d/60-mkdir

Startskripte

Damit alle Benutzer im Verzeichnis /media Schreibrechte erhalten, um verschiedene Links einrichten zu können, werden die Berechtigungen über das Skript /etc/linuxmuster-linuxclient7/onLoginAsRoot.d/03_media-rechte.sh angepasst.

#!/bin/bash

chmod 777 /media

Für den leovirtstarter2 sollen die Snapshots vom Server in einem lokalen Verzeichnis gecacht werden. Dieses kann eine separate Partition (Datenpartition) sein und ist erreichbar über /media/localdisk. Eine separate Partition ist hilfreich, denn dann wird der cache beim Synchronisieren des Betriebssystems nicht gelöscht.

# sudo mkdir /media/localdisk
bzw. passender Eintrag für ``/media/localdisk`` in ``/etc/fstab``.

Die notwendigen Schreibrechte werden in /etc/linuxmuster-linuxclient7/onLoginAsRoot.d/40_localdisk.sh eingerichtet.

#!/bin/bash
# Schreibrechte auf Datenpartition setzen
sudo chmod 777 /media/localdisk

Hat ein anderer Benutzer einen Snapshot vom Server im lokalen Verzeichnis /media/localdisk/cache/ gecacht, muss der Snapshot für andere Benutzer freigegeben werden. Dazu werden in /etc/linuxmuster-linuxclient7/onLoginAsRoot.d/50_leoclient2.sh die notwendigen Rechte gesetzt. Außerdem werden die virtuellen Maschinen, die unter /virtual/leoclient2-vm/ liegen, für alle Benutzer lesbar gemacht (Hintergrund: Bei der Nutzung einer VM durch einen Benutzer werden die Berechtigungen für andere entfernt.)

Es bietet sich an den Ort für die virtuellen Maschinen /virtual/leoclient2-vm in eine separate Partition unter /virtual zu legen, dann kann man die virtuellen Maschinen unabhängig vom Betriebsystem.

/etc/linuxmuster-linuxclient7/onLoginAsRoot.d/50_leoclient2.sh

#!/bin/bash
# Schreibrechte auf alle gecachten Snapshots
chmod -R 777 /media/localdisk/cache/*
# Zugriffsrechte auf alle VMs setzen beim Anmelden
chmod -R 755 /virtual/leoclient2-vm/*

Links von früheren Benutzeranmeldungen müssen entfernen werden. Dazu das Skript /etc/linuxmuster-linuxclient7/onLoginAsRoot.d/01_links-entfernen.sh erstellen.

#!/bin/bash

# Link von /home/$USER/media/ISO für Virtuelle Maschinen auf /virtual/server
# muss vorher als root gelöscht werden
rm /virtual/server

# Link von /media/Tausch_auf_Server auf /home/$USER/Tausch_auf_Server
# muss vorher als root gelöscht werden
rm /media/Tausch_auf_Server

# Link zu Schülerhomes Schueler_auf_Server in /media, wenn vorhanden (nur für Lehrkräfte)
# muss vorher als root gelöscht werden
rm /media/Schueler_auf_Server

Zum Säubern von Einträgen von anderen Benutzern /etc/linuxmuster-linuxclient7/onLoginAsRoot.d/02_leoclient2-log-heimat-entfernen.sh anlegen.

#!/bin/bash
# leovirtstarter2-log-Dateien entfernen
rm /tmp/leovirtstarter2*.log
# Eintrag des bisher angemeldeten Benutzers entfernen
rm /tmp/heimatverzeichnis

Scripte für Login im User-Kontext

Für den einfachen Zugriff auf die Servershares werden verschiedene Links angelegt mit /etc/linuxmuster-linuxclient7/onLogin.d/10_links.sh.

#!/bin/bash

USER=`echo $USER | tr [:upper:] [:lower:]`

# Link von Home_auf_Server in lokales Home, wenn noch nicht vorhanden
if [ ! -L /home/$USER/Home_auf_Server ] && [ ! -f /home/$USER/Home_auf_Server ]; then
    ln -s "/home/$USER/media/$USER (H:)" "/home/$USER/Home_auf_Server"
fi

# Link von Tauschverzeichnissen in lokales Home
# mit Unterverzeichnis "Tausch_auf_Server" für deutsche Bezeichnungen darunter
# Verzeichnis Tausch_auf_Server mit Inhalten, wenn noch nicht vorhanden
if [ ! -L /home/$USER/Tausch_auf_Server ] && [ ! -d /home/$USER/Tausch_auf_Server ]; then
    mkdir /home/$USER/Tausch_auf_Server
    ln -s "/home/$USER/media/Shares/projects" "/home/$USER/Tausch_auf_Server/Projekte"
    ln -s "/home/$USER/media/Shares/classes" "/home/$USER/Tausch_auf_Server/Klassen"
    ln -s "/home/$USER/media/Shares/school" "/home/$USER/Tausch_auf_Server/Schule"
    ln -s "/home/$USER/media/Shares/teachers" "/home/$USER/Tausch_auf_Server/Kollegium"
fi
# Link von /media/Tausch_auf_Server auf /home/$USER/Tausch_auf_Server
# muss vorher als root gelöscht werden /etc/linuxmuster-linuxclient7/onLoginAsRoot.d/03_link-media-tausch.sh
if [ -d /home/$USER/Tausch_auf_Server ]; then
    ln -s /home/$USER/Tausch_auf_Server /media/Tausch_auf_Server
fi

# Link zu Schülerhomes in lokales Home, wenn vorhanden (nur für Lehrkräfte)
if [ ! -L /home/$USER/Schueler_auf_Server ] && [ ! -d /home/$USER/Schueler_auf_Server ] && [ -d /home/$USER/media/Students-Home ]; then
    ln -s "/home/$USER/media/Students-Home" "/home/$USER/Schueler_auf_Server"
fi
# Link zu Schülerhomes Schueler_auf_Server in /media, wenn vorhanden (nur für Lehrkräftte)
# muss vorher als root gelöscht werden /etc/linuxmuster-linuxclient7/onLoginAsRoot.d/03_link-media-tausch.sh
if [ -L /home/$USER/Schueler_auf_Server ]; then
    ln -s /home/$USER/Schueler_auf_Server /media/Schueler_auf_Server
fi

# Link für Virtuelle Maschinen auf /virtual/server
# muss vorher als root gelöscht worden sein
ln -s "/home/$USER/media/ISO" "/virtual/server"

Skript /etc/linuxmuster-linuxclient7/onLogin.d/50_leoclient2-printer.sh zum Starten der Druckskripte. Damit werden pdf-Dateien, die in der VM erzeugt werden und unter Home_auf_Server abgelegt werden zum Standarddrucker übertragen. Somit kann man aus der VM heraus ohne direkte Netzverbindung auf Netzwerkdrucker ausdrucken.

#!/bin/bash

# Die Scripte run-vm-printer2-spooler und run-vm-printer2-splitter
# überprüfen ständig, ob der angemeldete Benutzer
# (Eintrag in /tmp/heimatverzeichnis) noch mit dem Benutzer
# übereinstimmt, der das Skript gestartet hat.
# Ist dies nicht der Fall, wird das Skript beendet.

USER=`echo $USER | tr [:upper:] [:lower:]`

# Anlegen der Datei /tmp/heimatverzeichnis mit dem lokalen USER-home

echo /home/$USER > /tmp/heimatverzeichnis
chmod 777 /tmp/heimatverzeichnis

# kurze Pause, damit eventuell noch laufende printer-Skripte
# durch anderes /tmp/heimatverzeichnis beendet werden können
sleep 5

# Starten der Skripte für das Ausdrucken aus der VM
run-vm-printer2-spooler &
run-vm-printer2-splitter &

Eintrag in /etc/leoclient2/leoclient-vm-printer2.conf anpassen in welcher Datei das Ausdruck aus der VM abgelegt wird -> $print_file_user="ausdruck-winxp.pdf";. Damit wird die Datei ausdruck-winxp.pdf unter Home_auf_Server auf dem Standarddrucker des Ubuntu-Rechners ausgedruckt.

Sicherungen der Skripte löschen (mit „~“ am Ende), die durch Änderungen entstehen. Diese würden sonst ebenso ausgeführt werden!!!

# sudo rm /etc/linuxmuster-linuxclient7/onLogin.d/*~
# sudo rm /etc/linuxmuster-linuxclient7/onLoginAsRoot.d/*~

Rechte der oben neu erstellten Dateien unter /etc/linuxmuster-linuxclient7/onLogin.d/ bzw. /etc/linuxmuster-linuxclient7/onLoginAsRoot.d/`` anpassen, die bei der Anmeldung ausgeführt werden sollen, damit diese ausgeführt werden können.

# chmod +x /etc/linuxmuster-linuxclient7/onLoginAsRoot.d/*
# chmod +x /etc/linuxmuster-linuxclient7/onLogin.d/*

Abschließend muss man die Standard-VM in /etc/leoclient2/servers.conf eintragen (hier: „win7“), außerdem den Pfad zu den Snapshots für die VMs auf dem Server. Die Snapshots mit der folgenden Einstellung liegen für die VM „win7“ auf dem Server im Verzeichnis /virtual/server/leoclient2-vm/win7. Lokal liegen die VMs unter /virtual/leoclient2-vm.

# common configuration for the machines
#
# which machine is the default
DEFAULT=win7-64
# where is/are the mounted server dir for snapshots
SERVERDIR=/virtual/server/leoclient2-vm

Fehleranalyse

Zur Fehlerbehebung werden Log-Dateien in /tmp/run-vm-printer2-spooler.log-USERNAME und /tmp/run-vm-printer2-splitter.log-USERNAME abgelegt. Dort sieht man nach welcher Datei der Drucker-Splitter sucht.

Die log-Datei für den leovirtstarter2 liegt ebenfalls unter /tmp.