Kategorien
Anwendungen

Virtualisierung unter Debian

Wird auf Windows-Clients oft VirtualBox als Desktop-Virtualisierungslösung eigesetzt, stellt man nach dem Wechsel auf Debian fest, daß VirtualBox seit Buster nicht mehr in den Paketquellen enthalten ist.

Das Debian-Wiki empfieht als Ersatzlösung das auf QEMU/KVM basierende Paket virt-manager, welches in den „normalen“ Paketquellen enthalten ist und somit einfach installiert werden kann:

$ sudo apt install virt-manager

Nach dem ersten Aufruf poppt erst einmal ein Fenster „System policy prevents management of local virtualized systems“ zur Eingabe des Kennwortes hoch. Wer dies vermeiden möchte, kann seinen Benutzer der Gruppe „libvirt“ hinzufügen:

$ sudo usermod -aG libvirt $(whoami)

Anschließend kann nun eine virtuelle Maschine aufgesetzt (und verwendet) werden.

Netzwerkbrücke

Je nach Anwendungsszenario stellt man sehr schnell fest, daß zwar die virtuelle Maschine ohne Probleme überall ins Netz kommunizieren kann, eine Kommunikation vom Host zur virtuellen Maschine hingegen nicht möglich ist.

Um dies zu ermöglichen, muß eine virtuelle Netzwerkbrücke eingerichtet werden. Hierzu schlagen die meisten per Suchmaschinen auffindbaren Lösungsmöglichkeiten vor, den Netzwork-Manager zu deaktivieren und die Konfiguration der Netzwerkinterfaces komplett von Hand zu übernehmen, aber es funktioniert auch mittels Network-Manager, und das sogar recht einfach und elegant.

Zuerst einmal gilt es, die aktuelle Netzwerkverbindung sowie das verwendete Interface auszulesen

$ sudo nmcli connection show
NAME                         UUID                                  TYPE      DEVICE 
Kabelgebundene Verbindung 1  4e405dd1-dc75-3990-bfd1-fdb013e95f18  ethernet  ens192

in diesem Fall sind es „Kabelgebundene Verbindung 1“ und „ens192“.

Nun wird dem System die Netzwerkbrücke hinzugefügt

$ sudo nmcli connection add type bridge ifname br0 stp no
Verbindung »bridge-br0« (e7a07a8f-beac-4ffe-adcf-47d406a82177) erfolgreich hinzugefügt.

$ sudo nmcli connection show
NAME                         UUID                                  TYPE      DEVICE 
Kabelgebundene Verbindung 1  4e405dd1-dc75-3990-bfd1-fdb013e95f18  ethernet  ens192 
bridge-br0                   e7a07a8f-beac-4ffe-adcf-47d406a82177  bridge    br0

und die Netzwerkschnittstelle als Slave der Brücke zugewiesen

$ sudo nmcli connection add type bridge-slave ifname ens192 master br0
Verbindung »bridge-slave-ens192« (e4a63a0d-4e1b-4a82-b1af-bdc9aecaf593) erfolgreich hinzugefügt.

$ sudo nmcli connection show
NAME                         UUID                                  TYPE      DEVICE 
Kabelgebundene Verbindung 1  4e405dd1-dc75-3990-bfd1-fdb013e95f18  ethernet  ens192 
bridge-br0                   e7a07a8f-beac-4ffe-adcf-47d406a82177  bridge    br0    
bridge-slave-ens192          e4a63a0d-4e1b-4a82-b1af-bdc9aecaf593  ethernet  -- 

Als letzter Schritt wird dann die Brücke aktiviert

$ sudo nmcli connection up bridge-br0
Verbindung wurde erfolgreich aktiviert (master waiting for slaves) (Aktiver D-Bus-Pfad: /org/freedesktop/NetworkManager/ActiveConnection/3)

sowie die bisher verwendete Verbindung deaktiviert

$ sudo nmcli connection down "Kabelgebundene Verbindung 1"
Verbindung »Kabelgebundene Verbindung 1« wurde erfolgreich deaktiviert (aktiver D-Bus-Pfad: /org/freedesktop/NetworkManager/ActiveConnection/1)

Ein Blick in die Verbindungseinstellungen zeigt, daß der Wechsel erfolgreich war:

$ sudo nmcli connection show
NAME                         UUID                                  TYPE      DEVICE 
bridge-br0                   e7a07a8f-beac-4ffe-adcf-47d406a82177  bridge    br0    
bridge-slave-ens192          e4a63a0d-4e1b-4a82-b1af-bdc9aecaf593  ethernet  ens192 
Kabelgebundene Verbindung 1  4e405dd1-dc75-3990-bfd1-fdb013e95f18  ethernet  --    

Die so erzeugte Brücke kann dann in virt-manager für die Netzwerkverbindungen der virtuellen Maschinen verwendet werden.

Kategorien
Anwendungen

Adobe Photoshop CS5 unter Debian Buster

Auch wenn GIMP inzwischen zu einem brauchbaren Werkzeug geworden ist, ist Adobe Photoshop in vielen Disziplinen noch immer ungeschlagen. Leider ist keine native Linux-Version erhältlich und die Installation mittels Wine gestaltet sich mitunter zickig.

Der hier seit vielen Jahren im Einsatz befindliche Adobe Photoshop CS5 ließ sich aber – mit einigen Einschränkungen – trotzdem zu einer Installation überreden.

Kategorien
Anwendungen

.desktop-Datei mit Wine-Prefix

Sofern ein Windowsprogramm mit Wine installiert wird, legt der Installer i.d.R. auch eine Verknüpfung im Startmenü an. Ohne Installationsprozess muß die Datei von Hand erzeugt werden. Sofern noch ein WINEPREFIX verwendet werden soll, muß auch dieser im Starter angegeben werden.

Der dafür zuständige Ordner ist „.local/share/applications/wine/Programs/“, in diesem wird eine Textdatei mit der Endung „.desktop“ angelegt. Das Beispiel richtet die Verknüpfung für die Windows-Variante von „Lemmings“ ein, welche normalerweise direkt von CD startet, aber auch in jeden beliebigen Ordner kopiert werden kann.

[Desktop Entry]
Encoding=UTF-8
Name=Lemmings
Comment=Lemmings for Windows
Type=Application
StartupNotify=true
Exec=env WINEPREFIX=/home/Benutzername/.winlemm wine "/home/Benutzername/.winlemm/drive_c/WINLEMM/LEMMINGS.EXE"
Icon=/home/Benutzername/.winlemm/drive_c/WINLEMM/LEMMING.ICO
Path=/home/Benutzername/.winlemm/drive_c/WINLEMM/
StartupWMClass=LEMMINGS.EXE

Während in der Exec-Zeile die Groß- bzw. Kleinschreibung nach „wine“ egal ist (Windows trifft hier keine Unterscheidung), ist in den Angaben für „Icon“ und „Path“ auf eine korrekte Groß- bzw. Kleinschreibung zu achten.

Weiterführende Informationen finden sich im Artikel „.desktop-Dateien“ des Ubuntuusers-Wikis.

Kategorien
Anwendungen

Datensicherung mit BorgBackup

Datensicherung wird meist als lästiges Übel empfunden, weshalb viele ihre Daten nicht regelmäßig vor Verlust schützen – bis es irgendwann zu spät ist. Um Daten zu sichern gibt es viele Wege und Möglichkeiten: vom manuellen Kopieren einiger (gefühlt) wichtiger Dateien hin bis zu regelmäßigen automatisierten Snapshots des kompletten Systems.

Ziel der hier vorgestellten Lösung ist es, beim Herunterfahren des Rechners automatisiert eine Sicherung aller Benutzerdaten auf einem zweiten Datenträger zu erstellen. Auf zusätzliche Möglichkeiten wie z.B. dem Erstellen einer verschlüsselten Sicherung oder physikalische Trennung des Sicherungsmediums wurde bewusst verzichtet, der Datenträger bleibt permanent eingesteckt, wird allerdings nur für die Dauer der Datensicherung eingebunden.

Es gibt unzählige Programme, mit deren Hilfe sich Daten sichern und die Sicherung automatisieren lässt, eines hiervon ist BorgBackup, das u.a. durch den Einsatz von Deduplizierung eine effiziente Möglichkeit zur Datensicherung bietet.

BorgBackup

BorgBackup findet sich in den Repositories der meisten Linux-Distributionen und ist schnell installiert:

$ sudo apt install borgbackup

Anschließend wird ein Verzeichnis „/mnt/backup/“ erzeugt, in welches der Sicherungsdatenträger eingehängt wird. Dort wird ein Verzeichnis „borgrepo“ angelegt, in dem das Repository für die Sicherung erzeugt wird:

$ sudo borg init --encryption none /mnt/backup/borgrepo/

Nach dem Ausführen von „borg init …“ steht das Repository bereit und kann direkt verwendet werden.

Damit die einzelnen Parameter nicht jedesmal von Hand eingegeben werden müssen, wird unter „/root“ ein Skript namens „backup.sh“ angelegt, mit dessen Hilfe die Datensicherung durchgeführt wird.

#!/usr/bin/bash

# ensure the path is set
PATH=/usr/local/bin:/usr/bin:/bin

# STICK
STICK=/dev/sdb1
# MOUNTPOINT
MOUNTPOINT=/mnt/backup/

# USERNAME
USERNAME=benutzername

mount ${STICK} ${MOUNTPOINT}

if mountpoint -q ${MOUNTPOINT}; then

	borg create --progress --stats --compression zstd,1 --exclude /home/${USERNAME}/.cache --exclude /home/${USERNAME}/.local/share/Trash ${MOUNTPOINT}borgrepo::'backup_{now:%Y-%m-%d_%H-%M-%S}' /home/${USERNAME}

	borg prune --verbose --list ${MOUNTPOINT}borgrepo --prefix 'backup_' --keep-within=1d --keep-daily=7 --keep-weekly=4 --keep-monthly=12

	sync
	umount ${MOUNTPOINT}

fi

Nach dem Einhängen des Datenträgers wird überprüft, ob der Vorgang erfolgreich war und falls ja, die Datensicherung gestartet.

Die Zeile „borg create …“ sichert das komplette „home“-Directory des Benutzers „benutzername“, lässt hierbei allerdings den Inhalt der Ordner „.cache“ sowie „.local/share/Trash“ (Papierkorb) aus. Als Archivname wird „backup_JJJJ-MM-TT_SS-MM-SS“ verwendet.

Nach dem Anlegen der Sicherung wird mit „borg prune …“ ein Aufräumvorgang gestartet, welcher alle Sicherungen des letzten Tages sowie die jeweils aktuellste Sicherung der letzten 7 Tage, 4 Wochen und 12 Monate aufhebt und alle anderen Sicherungen entfernt.

Als letztes wird sichergestellt, daß alle zwischengespeicherten Schreibvorgänge synchronisiert werden, bevor der Ordner wieder ausgehängt wird.

Automatisierung

Idealerweise sollte eine Datensicherung regelmäßig stattfinden und damit die Konsistenz der Daten auf Anwendungsebene gesichert ist am besten dann, wenn kein Benutzer angemeldet ist.

Eine pragmatische Lösung ist das Anstoßen der Sicherung beim Herunterfahren des Rechners, zu einem Zeitpunkt, an dem alle vom Benutzer verwendeten Dokumente und Anwendungen geschlossen sind.

Hierzu wird ein systemd-Service mit Hilfe der Datei „/etc/systemd/system/borgbackup.service“ erstellt, welcher die Aufgabe übernimmt:

[Unit]
Description=Run borg backup
RequiresMountsFor=/root /home

[Service]
ExecStart=/bin/true
ExecStop=/root/backup.sh
Type=oneshot
RemainAfterExit=yes
TimeoutStopSec=300

[Install]
WantedBy=multi-user.target

Der Aufbau des Services ist recht einfach, wichtig ist die Definition von „RequiresMountsFor=„, welche dafür sorgt, daß der Service dann ausgeführt wird, wenn die entsprechenden Dateisysteme (noch) einhängt sind. Beim Start des Dienstes wird mit „/bin/true“ erfolgreich nichts getan, beim Beenden des Dienstes dann das Skript zur Datensicherung angestoßen. Die Angabe von „Type=oneshot“ und „RemainAfterExit=yes“ sorgt dafür, daß der Dienst weiterhin als aktiv angesehen wird, auch nachdem „/bin/true“ beendet wurde.

Da vor allem die initiale Sicherung je nach Menge der zu sichernden Daten länger als 90 Sekunden dauern kann, kann mit Hilfe des Parameters „TimeoutStopSec=“ die maximal mögliche Laufzeit der „ExecStop„-Aufgabe auf z.B. 5 Minuten verlängert werden.

Um den Service ins System einzubinden, muß ein

$ sudo systemctl enable borgbackup

erfolgen, gegebenenfalls gefolgt von einem

$ sudo systemctl start borgbackup

da „enable“ den Dienst zwar einbindet, aber nicht direkt startet.

Einen ersten manuellen Test kann man nach erfolgreichem Start mittels

$ sudo systemctl stop borgbackup

anstoßen, so daß der Dienst beendet und das Skript ausgeführt wird.

Versionshistorie:

2020-05-18: Parameter „TimeoutStopSec=…“ in Service-Definition hinzugefügt.

Kategorien
Anwendungen

Zoom unter Linux

Die Videochat-Software von Zoom ist aktuell in vielen Schlagzeilen zu finden und das leider nicht nur im positiven Sinn: von „Unter Beobachtung“ bis „Videokonferenz-Software: Ist Zoom ein Sicherheitsalptraum?“ – spätestens beim Gedanken daran, die Software auf das eigene System loszulassen, beschleicht den Systemadministrator mehr als nur ein ungutes Gefühl.

Wer Zoom trotzdem installieren will / muss und sich dabei halbwegs sicher fühlen will, kann die Software in einer Sandkiste wie z.B. Firejail einsperren.

Zoom

Den Client bezieht man am einfachsten über die Website des Herstellers, wo es den „Zoom-Client für Linux“ fertig gepackt für verschiedene Distributionen gibt.

Nach Herunterladen der gewünschten Version wird diese mittels

$ sudo apt install ./zoom_amd64.deb

inklusive der eventuell noch benötigten Abhängigkeiten installiert und noch vor dem ersten Start abgesichert.

Alternativ kann auch die Version für ein „Anderes Linux-Betriebssystem“ gewählt werden. Der Download ist dann ein gepacktes tar-Archiv, welches ohne Installation in einen beliebigen Ordner entpackt werden kann. Um Abhängigkeiten und Icon muss man sich dann allerdings selbst kümmern.

Firejail

Sofern nicht bereits installiert, kann Firejail in den meisten Fällen direkt aus dem Repository der verwendeten Distribution bezogen werden.

$ sudo apt install firejail

Ein Profil für Zoom wird mitgeliefert und findet sich nach der Installation unter „/etc/firejail/zoom.profile“

Damit beim Aufruf über das Icon in GNOME der Start auch tatsächlich mit Firejail erfolgt, ist der Aufruf von

$ firecfg --fix

Fixing desktop files in /home/benutzername/.local/share/applications
   ...
   Zoom.desktop created
   ...

notwendig, welcher die Links für alle „.desktop“-Dateien aus „/usr/share/applications“ auf absolute Dateipfade überprüft und im Bedarfsfall angepasste Kopien unter „/home/benutzername/.local/share/applications“ anlegt.

Ist Zoom dann gestartet, kann mit

$ firejail --list
3339:benutzername::/usr/bin/firejail /usr/bin/zoom

überprüft werden, daß Firejail auch tatsächlich verwendet wird.