Archiv der Kategorie: Uncategorized

Systemd in der Praxis

In den meisten aktuellen Linux-Distributionen arbeitet Systemd als primärer Prozess mit der PID „1“ als Boss aller nachfolgenden Systemdienste. Dieser Heftschwerpunkt erläutert Werkzeuge und Techniken dieses Init-Prozesses mit umfassendem Anspruch.

Der Init-Daemon Systemd

Die Reichweite des Systemd-Konzepts und die damit einhergehenden Chancen einer Standardisierung von Linux-Systemen sind unbestritten. Systemd hat aber Vorgänger wie Sysvinit und Upstart als Init-Daemon insbesondere deshalb abgelöst, weil er durch Parallelisierung der frühen Startprozesse für schnellere Bootzeiten sorgt. Die Aufgabe des Init-Prozesses ist schnell erklärt: Beim Start der Hardware lädt der Bootloader den Linux-Kernel. Der Kernel startet dann den Init-Prozess aus dem Pfad /sbin/init, der die Prozess-ID „1“ erhält. Welches Init-System bei einer Linux-Distribution aktiv ist, erfahren Sie daher am einfachsten durch eine Frage nach Prozess „1“:

cat /proc/1/comm

Die Ausgabe wird in der Regel „systemd“ lauten. Dieser Init-Prozess lädt dann alle erforderlichen Systemdienste, Dateisysteme, Timer. Nachdem Systemd die volle Kontrolle und Übersicht hat, ist es die logische Konsequenz, dass es deren Verwaltung übernehmen muss. Und das macht Systemd umfassend und gründlich. Als wichtigste Benutzerschnittstelle dient das Tool Systemctl, um das es in diesem ersten Artikel ausschließlich gehen soll. Es öffnet nämlich den Zugang zum kompletten Systemd-Kosmos mit seinen diversen Unit-Klassen.

Systemctl und die Systemd-Units

Systemctl wird oft als „Dienste-Manager“ bezeichnet. Das ist zwar wahrscheinlich der häufigste Einsatzzweck, unterschlägt aber, dass Systemctl sämtliche Systemd-Units verwaltet. Dienste, also die Klasse „Service“, ist nur eine dieser Klassen (siehe Tabelle “ Systemd: Die Unit-Klassen“). Das Kommando

systemctl

ohne weitere Filter ist eine Abkürzung für

systemctl list-units

und zeigt alle aktuell aktiven Systemd-Units. In der Regel wird man die Liste zwecks besserer Übersicht auf eine bestimmte Unit-Klasse wie „service“ filtern. Ob hilfreich oder am Ende doch eher verwirrend, liefern alle folgenden Syntaxvarianten exakt dasselbe Resultat:

systemctl list-units --type=service
systemctl --type=service
systemctl -t service

Das Ergebnis ist die Prozessliste aller aktuell geladenen Systemdienste.

Eine anders geartete Abfrage richtet sich an die Systemd-Konfigurationsdateien. Der Befehl

systemctl list-unit-files -t service

liefert sämtliche Dienstekonfigurationen aus, die auf dem System vorliegen. Das ist vor allem relevant, um eine schnelle Übersicht über Änderungen aller Art zu ermitteln. Abgeschaltete oder ganz deaktivierte Units erscheinen hier nämlich mit roter Signalfarbe als „disabled“ oder „masked“. Wenn man will, kann man nach solchen Units mit

systemctl list-unit-files -t service –-state=disabled

oder „—state=masked“ noch zielgenauer fahnden.

Geänderte oder abgeschaltete Units (hier Dienste) sind mit „list-unit-files“ schnell zu finden.

Unit-„Properties“ anzeigen und steuern

Systemctl kann Units nicht nur anzeigen, starten und stoppen (siehe unten), sondern auch im Detail verändern und umkonfigurieren. Der Unterbefehl „show“ von systemctl (Beispiel)

systemctl show ssh.service

zeigt alle Eigenschaften der angesprochenen Unit – zumeist ziemlich viele, sodass sich oft eine Sortierung (sort) oder ein Grep-Filter empfiehlt:

systemctl show ssh.service | grep -i "cpu"

Der aktive Befehl (Beispiel)

systemctl set-property ssh.service CPUWeight=20

kann dann die Eigenschaften interaktiv und für die laufende Sitzung ändern. Ein weiteres Beispiel für Ressourcensteuerung ist unten im Abschnitt „Die Slice-Units“ skizziert. Neben der dort gezeigten CPU-Begrenzung mit „CPUQuota=20%“ gibt es weitere interessante Eigenschaften wie „MemoryMax=500M“ (Limitierung von Services oder Slices) oder „IOWeight=500“ (Standard ist „100“, Maximum ist „1000“ – relevant etwa für die Webserver-Optimierung).

„Property“-Änderungen dauerhaft speichern: Eingriffe mit systemctl set-property gelten sofort, allerdings nur bis zum nächsten Neustart des Dienstes oder des Systems (transient). Dauerhafte Einstellungen benötigen ein korrigierendes „Drop-In-File“. Diese Dateien haben den Vorteil, dass die Originale unter /usr/lib/systemd/system/ stets unverändert bleiben (wichtig bei Systemupdates). Erfreulicherweise muss man sich um den korrekten Namen und Speicherort solcher Dateien nicht kümmern, weil systemctl das nach (Beispiel)

sudo systemctl edit user.slice

selbst am besten weiß. Vorbereitend ist es aber immer zu empfehlen, vorher die gewünschte Änderung mit systemctl set-property interaktiv zu testen. Dabei werden nämlich falsch geschriebene Properties oder ungültige Werteangaben automatisch abgelehnt. Korrekte, interaktiv angeforderte Änderungen erscheinen hingegen am Ende der Datei, die man danach mit systemctl edit öffnet. Die Property-Angabe am Dateiende kann man aber nicht einfach (und naheliegend) durch Entfernen des Kommentarzeichens (#) aktiv schalten. Sie muss vielmehr nach oben in Zeile 3 oder 4 kopiert werden – vor die Zeile „Edits below […] will be discarded“.

Nach dem Speichern der Datei, die dann /etc/systemd/system/[name].d/override.conf lauten wird, kann die Aktion mit

sudo systemctl daemon-reload
sudo systemctl restart [Name].service

permanent gesetzt werden – dies zumindest für Service- oder Timer-Units. Für andere Units ist ein Neustart erforderlich.

Systemctl ändert Prozesseigenschaften: Das Erstellen der Änderungsdatei ist etwas fummelig, aber um Dateipfade und Abgleich mit der Originaldatei kümmert sich Systemd.

Die Unit-Klasse „Service“

An der Verwaltung mit Systemdiensten kommt kein Linux-Nutzer vorbei, der zumindest den einen oder anderen Netzwerkdienst wie SSH oder Apache laufen hat. Die wichtigsten Befehle lauten wie folgt (am Beispiel SSH):

systemctl status ssh.service
systemctl stop ssh.service
systemctl start ssh.service
systemctl restart ssh.service

Diese Kommandos funktionieren auch ohne explizite Unit-Bezeichnung:

systemctl stop ssh

„stop“ und „start,“ oder einfacher „restart“ sind alltägliche Aktionen, wenn ein Dienst wie Apache, SSH oder Samba eine manuelle Konfigurationsänderung neu einlesen soll. Zum dauerhaften Abschalten eines Dienstes gibt es die folgenden Kommandos:

systemctl disable ssh
systemctl mask ssh

„disable“ deaktiviert einen Dienst an sich dauerhaft, verhindert aber nicht, dass diesen ein anderer Systemdienst unter der Haube neu aktiviert. Erst der „mask“-Befehl macht auch dieses unmöglich und deaktiviert einen Dienst nachhaltig. Dies kann bei Bedarf nur der Systemadministrator (also Sie) mit

systemctl unmask ssh
systemctl start ssh

wieder rückgängig machen.

Ein Eingriff in Systemdienste, vor allem aber das Abschalten von Diensten ist stets heikel, aber systemctl kann das nicht nur erledigen, sondern bietet auch gute Kontrolle darüber, was auf dem System verändert wurde. Eine gut lesbare Übersicht mit farbigen Markierungen („disabled“ rot, „enabled“ grün) liefert der folgende Befehl, der nicht die Dienste, sondern die darunterliegenden Konfigurationsdateien abfragt:

systemctl list-unit-files -t service

Zusätzlich zur Farbmarkierung erscheint in der rechten Spalte die Distributionsvorgabe als „Preset“ oder „Vendor Preset“. Somit erkennt man die Vorgaben der Distribution und was am System manuell geändert wurde. Beachten Sie bei dieser Ausgabe der Unit-Dateien auch den Status-Eintrag „static“. Die damit ausgezeichneten Dienste sind systemrelevant und lassen sich nicht deaktivieren.

Die Statusabfrage einer Unit macht unter anderem sofort ersichtlich, ob deren Konfiguration geändert wurde („Drop-In“). 

Die Unit-Klasse „Target“

Systemd-Targets sind keine aktiven Prozesse, sondern definierte Sammlungen von Device-, Service-, Mount-, Path- und Timer-Units, die dann in der Summe einen bestimmten Systemzustand erzielen. Dieser Zustand kann maximal (graphical.target) oder minimal ausfallen (etwa rescue.target). Solche Unit-Kombinationen kann man mit einem einzigen Kommando neu definieren oder ab dem nächsten Systemstart als Standard vorgeben.

Um alle vordefinierten Targets aufzulisten, ist dieser Befehl geeignet:

systemctl -t target

Hier erscheinen dann unter anderem „basic“, „emergency“, „graphical“, „multi-user“, „rescue“ oder „shutdown“. Welche Unit-Sammlung ein Target konkret enthält, ist auf Dateiebene (/lib/systemd/system) schwer zu ermitteln, weil Target-Konfigurationsdateien nur die speziellen Units des Targets direkt auflisten und ansonsten auf integrierte Targets verweisen. Der Befehl

systemctl list-dependencies basic.target

macht das anschaulicher.

Der praktische Einsatz dieser Targets sieht so aus, dass man mit einem einzigen „isolate“-Befehl alles abschalten kann, was nicht in der Unit-Sammlung des angesprochenen Targets enthalten ist. Der am Desktop gestartete Befehl

sudo systemctl isolate rescue.target

führt sofort in die Wiederherstellungskonsole. Was immer am System läuft oder noch nicht gespeichert ist, wird weggeschossen. Zurück zur Anmeldung geht’s mit Strg-D (Abbruch der Konsole) oder mit diesem Befehl:

sudo systemctl isolate graphical.target

Die Aktion „isolate“ ist nicht für jedes Target erlaubt. Verantwortlich dafür ist die Eigenschaft „AllowIsolate“ der Target-Unit.

Dauerhaftes Umschalten: Was der Unterbefehl „isolate“ interaktiv ausführt, kann „set-default“ ab dem nächsten Systemstart dauerhaft als Standard setzen. Dafür kommen aber nur zwei Targets ernsthaft in Betracht – das umfangreichste „graphical.target“ und das Target „multi-user.target“ für Server ohne Desktop. Der Wechsel dieser beiden Targets ist vor allem für Platinenrechner interessant. Dort ist es typisch, dass der Desktop zwar zur ersten Einrichtung willkommen, danach aber überflüssig ist. Wer nur noch die Serverdienste braucht (Samba, SSH, Apache), kann mit

sudo systemctl set-default multi-user.target

die Oberfläche abschalten. Mit

sudo systemctl set-default graphical.target

ist der Desktop bei Bedarf wieder zu aktivieren.

Achtung: Anders als bei „isolate“ ist Systemd beim Setzen des Default-Targets indifferent. Wenn Sie mit

sudo systemctl set-default rescue.target

die Wiederherstellungskonsole zum Systemstandard machen, sehen Sie den Desktop erst mal nicht wieder, solange Sie auf der Notfallkonsole nicht wieder das „graphical.target“ als Standard setzen. Auch destruktive Aktionen sind nicht untersagt. Nach

sudo systemctl set-default basic.target

geht gar nichts mehr. Aber da das Grub-Menü über „Erweiterte Optionen“ und den „Recovery Mode“ das rescue.target einschalten kann, gibt es von hier über die root-Konsole und

systemctl set-default graphical.target

wieder einen Weg zurück.

Die Unit-Klasse „Slice“

Slices sind Sammlungen aktiver Prozesse, die zu einer Verwaltungseinheit gebündelt werden (auf der Basis von Linux-Control-Groups). Das klingt verkopft, eröffnet aber in der Praxis großes Optimierungspotential. Die Nachfrage mit

systemctl -t slice

wird eine Reihe von Slice-Units anzeigen, unter anderem je eine Slice („Scheibe“) für jedes Benutzerkonto. Die Eigenschaften sind dann wie auch sonst mit

systemctl show user-1000.slice

zu erfragen. Daher können Ressourcenlimits auf Slice-Ebene gesetzt werden, die alle darin enthaltenen Prozesse begrenzen:

sudo systemctl set-property user-1000.slice CPUQuota=20%

Der Befehl muss tatsächlich so lauten, obwohl die Eigenschaft eigentlich „CPUQuotaPerSecUSec“ heißt. Auf einem Serversystem mit bescheidener Hardware könnte man daher nicht nur einen einzelnen Benutzer, sondern die komplette User-Scheibe mit

sudo systemctl set-property user.slice CPUQuota=20%

deutlich limitieren, um die Systemdienste zu priorisieren.

Interaktiv, sofort und gravierend: Limitierende Eingriffe in die Ressourcenverteilung von Slice-Units sind unmittelbar spürbar (hier für Konto-UID 1001).

Die Unit-Klasse „Scope“

Die Klasse der Scopes („Erweiterungen“) ist technisch interessant, aber für die meisten Nutzer wahrscheinlich zu akademisch. Es geht darum, beliebige externe Programme (etwa Browser oder Bildbearbeitung) in die Systemd-Verwaltung zu integrieren. Das ist nur interaktiv und temporär während einer Sitzung möglich und benötigt den Befehl systemd-run. Der gehört eigentlich in den nachfolgenden Beitrag („Die Armee der Systemd-Tools“), ist aber hier notwendig, um die Scope-Klasse zu erklären. Nachdem eine temporäre Scope-Unit mit

systemd-run --scope --unit=ff.scope /usr/bin/firefox

erstellt ist, lassen sich

systemctl show ff.scope

die Eigenschaften wie bei Systemd-Prozessen abfragen und mit

systemctl set-property ff.scope MemoryLimit=400M

auch nach Bedarf steuern.

Weitere Units: Timer, Path & mehr

Systemd kennt eine Reihe weiterer Unit-Klassen wie Device, Mount, Path, Timer, Snapshot, Socket. Praxisrelevante Optionen dazu kommen im dritten Beitrag dieses Specials noch zu Wort. Dieser Artikel zeigt Beispiele, wie man eigene Dienste anlegt und wie die dafür nötigen Konfigurationsdateien strukturiert sind. Für Anwender kaum ergiebig sind die Klassen Device, Snapshot und Swap. Für Swap (Auslagerungsdatei) bleibt Systemctl auf die übliche „status“-Abfrage mit

systemctl status swapfile.swap

beschränkt, die Pfad und aktuelle/maximale Größe der Datei anzeigt, ferner kann mit

sudo systemctl stop swapfile.swap

das Swapping interaktiv abgeschaltet, mit „start“ wieder aktiviert werden. Weitere Zugriffe mit „enable“ und „disable“ (dauerhaft abschalten) funktionieren auf vielen Systemen nicht.

Die Unit-Klasse Snapshot fehlt bei der Mehrzahl der Distributionen. Es handelt sich um eine interne Systemd-Sicherungsfunktion (etwa sudo systemctl snapshot 2025_Juni), die den aktuellen Systemd-Zustand speichert und später mit „isolate“ restaurieren kann.

Systemd: Die Unit-Klassen
Automount (*.automount)dynamische Dateisystem-Mounts
Device (*.device)Vermittlungsschicht zwischen Hardware und Systemd
Mount (*.mount) statische Dateisystem-Mounts
Path (*.path)Ordnerüberwachung
Scope (*.scope)Anwendungsprogramme als Systemd-Prozesse
Service (*.service)Systemdienste (snapd, ssh, gdm, apache2 etc.) 
Snapshot (*.snapshot)Systemd-Sicherungsfunktion (fehlt meistens)
Slice (*.slice)Ressourcensteuerung für Prozessgruppen (user, system)
Socket (*.socket)Netzwerküberwachung und Service-Starts bei Ereignis
Swap (swapfile.swap)Kontrolle und Steuerung der Auslagerungsdatei
Target (*target)Unit-Sammlungen für definierte Systemzustände
Timer (*.timer)Zeitsteuerung für Dienste und Autostarts
Pfade der Unit-Scripts
/etc/systemd/system/benutzerdefinierte Units oder Anpassungen (priorisiert)
/lib/systemd/system/Systemstandards
/usr/lib/systemd/system/ Systemstandards

Systemctl: Wichtige Kommandos
Listen und Kontrolle Erklärung
systemctl [list-units]Liste aller geladenen Units
systemctl [list-units] -allListe aller geladenen Units (auch inaktive)
systemctl -t service Liste geladener Units einer bestimmten Klasse
systemctl -t service –allListe geladener Units einer bestimmten Klasse (auch inaktive)
systemctl list-dependencies ssh.servicealle Abhängigkeiten einer Unit anzeigen
systemctl list-unit-fileskeine Prozessliste: Liste der Systemd-Konfigurationsdateien
systemctl list-unit-files -t servicekeine Prozessliste: Konfigurationsdateien einer bestimmten Klasse
Unit-Steuerung (am Beispiel SSH)
systemctl status ssh.service Statusabfrage
systemctl start ssh.serviceDienst starten
systemctl stop ssh.serviceDienst anhalten
systemctl restart ssh.serviceDienst-Neustart nach Konfigurationsänderung 
systemctl disable ssh.serviceDienst deaktivieren
systemctl enable ssh.serviceDienst aktivieren
systemctl mask ssh.serviceDienst endgültig verbergen
systemctl unmask ssh.serviceverborgenen Dienst wieder aktivieren 
Unit-Änderungen (am Beispiel user.slice)
systemctl show user.sliceEigenschaften einer Unit auflisten
systemctl set-property user.slice CPUQuota=50%Eigenschaft einer Unit interaktiv (sofort) ändern
systemctl edit user.sliceEigenschaft einer Unit dauerhaft ändern
systemctl revert user.sliceÄnderungen an einer Unit wieder löschen
systemctl preset user.sliceUnit-Konfiguration auf Distributionsstandard setzen
systemctl preset-all (VORSICHT!)komplettes Zurücksetzen auf Distributionsstandard
Spezielle Befehle für Targets
systemctl -t targetListe aktiver Target-Units
systemctl get-defaultStandard-Target ermitteln
systemctl set-default graphical.targetStandard-Target setzen
systemctl isolate rescue (VORSICHT!)interaktiv (sofort) Target wechseln
Generelle Systemkommandos
systemctl daemon-reloadNeustart von systemd (nach Änderungen)
systemctl poweroff | reboot | suspendSystem-Targets zum Beenden
systemctl rescue | emergency | defaultSystem-Targets für (oder nach) Reparaturen

Die Armee der Systemd-Tools

Das im vorigen Artikel erklärte Systemctl ist das Fundament der Kommunikation mit Systemd. Das Init-System bringt aber inzwischen eine ganze Armee weiterer nutzwertiger Tools mit. Wenn Sie sich unter Debian/Ubuntu mit dem Befehl

dpkg-query -L systemd

über den Umfang von Systemd informieren oder mit

ls /usr/bin/systemd-*
ls /usr/bin/*ctl

direkt auf Dateiebene die einschlägigen Werkzeuge besichtigen, dann sehen Sie, dass es viel zu tun gibt (der zweite Befehl ist nicht ganz präzise und liefert auch einige Systemd-unabhängige Tools). Dieser Artikel erklärt die interessantesten Systemd-Tools. Die meisten fußen auf Systemd-eigenen Diensten, die wiederum mit

systemctl -t service | grep -i "systemd-"

abzufragen sind. So ist etwa das Tool Journalctl auf die Arbeit des Dienstes systemd-journald angewiesen.

Die „*CTL“-Verwaltungstools

Die Unterscheidung in Systemd-Verwaltungsprogramme mit „ctl“ am Ende des Namens und weiteren Hilfsprogrammen mit „systemd-“ am Beginn ist zumindest für die Verwaltungstools à la Systemctl konsistent (bei Systemd-*-Programmen nicht, weil auch einige Dienste so benannt sind). Wir beschreiben die CTL-Tools weder systematisch noch vollständig, sondern nach ihrem vermutlichen Nutzwert für Desktop-Nutzer.

Journalctl verwaltet auf Basis des Dienstes systemd-journald die Systemprotokolle. Das scheint langweilig, aber nur so lange Systeme problemlos laufen. Wenn nicht, dann sind die zahlreichen und präzisen Filteroptionen von Journalctl ein Segen. Die Befehle

journalctl --boot
journalctl –-since today

liefern nur die Meldungen seit dem letzten Systemstart oder des heutigen Tages. Ebenfalls systematisch ist die Eingrenzung nach einem Systemdatum

journalctl --since 2025-07-18

oder ganz kurzfristig für die letzten Minuten:

journalctl --since 15:00

Um harmlose Ereignislevel wegzufiltern, kann die Ausgabe auf ein bestimmtes Ereignislevel (emerg, alert, crit) reduziert werden:

journalctl –-priority crit –-since today

Priority-Level können durch ein Schlüsselwort oder durch eine Kennziffer übergeben werden: „emerg“ (0), „alert“ (1), „crit“ (2), „err“ (3), „warning“ (4), „notice“ (5), „info“ (6), „debug“ (7). Ein Level kumuliert immer alle Meldungen der niedrigeren Stufen, das heißt: „crit“ (2) präsentiert auch die noch ernsteren Levels 0 und 1.

Mit Schalter „“–dmesg“ filtert das Tool ausschließlich die Kernel-Meldungen und ersetzt somit das Tool dmesg:

journalctl --dmesg --since 19:00

Wer weiß, wo er ein Problem zu suchen hat, kann auch gleich nach dem betreffenden Dienst („unit“) eingrenzen. Die Protokollausgabe von

journalctl --unit apache2 --since today

zeigt alle Meldungen des Apache-Servers ab dem angegebenen Datum. Nicht zuletzt kann journalctl den Umfang der Protokollierung begrenzen. Wenn

journalctl --disk-usage

Gigabyte-Tonnen alter Protokolle meldet, dann können Sie mit

journalctl --vacuum-size 300M
journalctl --vacuum-time 10d

das Journal dauerhaft auf 300 MB reduzieren oder auf die Protokollmenge der letzten 10 Tage kürzen. Besonders auf Desktop-Systemen sind keine monatelangen Protokolle erforderlich.

Networkctl zeigt und steuert alle Eigenschaften der Netzwerkadapter und kann die meisten Leistungen externer Netzwerktools wie ip, ifconfig oder vnstat übernehmen. Die nachfolgenden Aufgaben erledigt das Tool weitgehend ohne den (oft inaktiven) Dienst systemd-networkd, aber eventuell mit notorischer Fehlermeldung. Wen diese stört, sollte diesen Basisdienst mit Systemctl starten. Der Befehl

networkctl [list]

zeigt die Schnittstellen. Für einen dort gemeldeten Ethernetadapter „enp2s0“ ermittelt dann

networkctl status enp2s0

alle Parameter von der IP- und MAC-Adresse bis zu MTU, Speed und Gateway-Adresse (Router). Noch ausführlicher ist diese Variante:

networkctl status enp2s0 --stats

Hier meldet der Befehl auch die am Adapter gesendeten und empfangenen Bytes („Rx Bytes“ und „Tx Bytes“). Mit den Unterbefehlen „up“ und „down“ schaltet das Tool einen Adapter ein oder aus.

Resolvectl ist das Verwaltungstool auf Basis des Dienstes systemd-resolved und zuständig für die Auflösung von Rechnernamen zu IP-Adressen. Das ältere Tool systemd-resolve ist aus Kompatibilitätsgründen oft ebenfalls noch vorhanden, sollte aber vermieden werden, wenn resolvectl vorliegt. Die beiden Varianten machen genau dasselbe, unterscheiden sich aber in der Handhabung. Resolvectl macht diverse Netzwerktools überflüssig:

resolvectl query 192.168.178.1
resolvectl query fritz.box
resolvectl query wikipedia.de

Diese Kommandos liefern den Domain- oder Hostnamen einer IP-Adresse oder umgekehrt die IP-Adresse eines Domain- oder Hostnamens.

Homectl ist vielversprechend und daher eine Erläuterung wert, obwohl es noch nirgends Standard ist. Aktuelle Distributionen haben nämlich den Basisdienst systemd-homed nicht vorinstalliert. Das gleichnamige Paket ist aber optional nachinstallierbar, wonach Homectl verschlüsselte und portable (kopierbare) Home-Verzeichnisse verwalten kann. Systemd-Homes liegen nicht als Verzeichnisse vor, sondern als Images unter /home (theoretisch auch anderswo) und werden bei der Anmeldung des passenden Kontos automatisch in das übliche /home/[user] gemountet. Die Daten kann auch root nicht einsehen. Zum Erstellen eines solchen „Homes“ genügt (Beispiel):

sudo homectl sepp

Das Konto darf noch nicht existieren: Systemd-Homes können also neben üblichen Homes existieren, aber nicht für ein und dasselbe Systemkonto. Wer ein Systemd-Home mit der Absicht anlegt, dieses später auf andere Systeme zu portieren, sollte dessen Größe mit (Beispiel)

sudo homectl resize sepp 200G

von vornherein sinnvoll dimensionieren, denn Homectl erstellt sonst je nach verfügbaren Plattenplatz ein riesiges (leeres) Home-Image, das unnötige Kopiergrößen fordert. Das Benutzerkonto eines solchen Homes wird in aktuellen Distributionen nicht am Anmeldebildschirm auftauchen, muss also dort manuell eingegeben werden. Die weitere Systemnutzung ist dann wie gewohnt.

Das komplette Home liegt als eine einzige Datei „/home/sepp.home“ (Beispiel) vor und kann kopiert und auf ein anderes System übertragen werden. Aus dem Systemd-Konto heraus funktioniert das allerdings nicht: Dieses muss abgemeldet sein, und das Konto, das die Kopie erledigt, muss root/sudo-Recht besitzen. Das Zielsystem wiederum muss natürlich systemd-homed installiert haben. Dann genügt dort die Kopie in das Verzeichnis /home und dieser Befehl:

homectl activate

Danach sollte dort die Anmeldung mit dem kopierten Systemd-Konto gelingen.

Hostnamectl ist funktionsarm und zeigt ohne Parameter

hostnamectl

nur den Hostnamen des Rechners sowie Basisinfos zu System, Kernel und Architektur. Praktisch ist aber dieser Befehl:

hostnamectl set-hostname maxx

Das vergibt umstandslos einen neuen Rechnernamen (hostname).

Loginctl liefert Informationen über die aktuellen Systemanmeldungen:

loginctl [list-sessions]

Mit der hier gelieferten Info der Session-Zahl kann man dann genauer nachfragen (Beispiel):

loginctl session-status 5

Zu den Systemanmeldungen gehört beim Desktopsystem in erster Linie die grafische Oberfläche, zu der es fundamentale Infos wie Anmeldezeit, Benutzerkonto, genutzter Desktop, Displaymanager und Fenstersystem gibt. Anmeldungen auf virtuellen Konsolen oder SSH erscheinen ebenfalls. Über die Befehle

loginctl lock-session [ID]
loginctl kill-session [ID]

kann eine Anmeldung gesperrt oder gewaltsam beendet werden.

Weitere CTL-Verwaltungstools nennen wir nur noch summarisch: Localectl und Timedatectl zeigen die aktuelle Systemsprache beziehungsweise Zeit und Zeitzone und können diese auch neu einstellen (Beispiel):

localectl set-locale de_DE.UTF-8

Das Werkzeug Bootctl ist nur aktiv, wenn statt Grub die Boot-Methode systemd-boot installiert und verwendet wird. Auf einem laufenden Multibootsystem ist von einer Umstellung dringend abzuraten. Systemd-boot ist zwar schneller, aber bislang kaum automatisiert, sodass eine vorherige Multiboot-Umgebung manuell umgestellt werden muss. Systemd-boot vorausgesetzt, zeigt bootctl (ohne Parameter) detailliert alle Infos zum Uefi-Boot, TPM-Chip, Secure Boot und die installierten Systeme inklusive EFI-Datei.

Busctl ist ein Tool für das Debugging von D-Bus-Kommunikation (Desktop-Bus) und nur für Anwendungsentwickler relevant. Ähnlich speziell ist Machinectl, das die Installation von systemd-container voraussetzt und dann virtuelle Maschinen (nur KVM) verwaltet.

Netzwerkabfragen mit networkctl: Hier wie in vielen anderen Belangen macht ein Systemd-Werkzeug traditionelle Tools weitgehend überflüssig.
Nicht intuitiv, aber spannend: Systemd-homed und sein Tool Homectl erstellen verschlüsselte Home-Container, die bei der Benutzeranmeldung (mit Systemd-Konto) geladen werden.

Die „Systemd-*“-Hilfsprogramme

Die nachfolgenden Tools haben nicht annähernd den Funktionsumfang der größeren CTL-Verwaltungsprogramme. Kennen sollte man sie trotzdem: Besonders die zuerst genannten sind auf jedem Linux-Desktop nützlich.

Systemd-analyze hat gewisse Popularität erreicht, da es Startprobleme und Verzögerungen des Systemstarts offenlegt. Da Systemd die Startzeiten des Systems selbst protokolliert, bietet das Tool die präziseste Kontrolle. Die simpelste Form

systemd-analyze

zeigt nur eine knappe Angabe zur Dauer des Systemstarts, differenziert aber bereits Bios/Firmware, Bootloader, Kernel und Benutzerkonto. Die Befehle

systemd-analyze blame
systemd-analyze plot > start.svg
systemd-analyze dump > dump.txt

bringen in unterschiedlicher Darstellung die millisekundengenaue Abfolge des Systemstarts, wobei die Option „blame“ für normale Anwender genügen sollte. Die Ausgabe als SVG-Diagramm kann mit jedem Browser gelesen werden.

Das Tool legt aber auch Fehler offen. Nach

systemd-analyze verify /etc/systemd/system/*.service

erscheinen abgeschaltete Dienste („masked“) sowie Konfigurationsfehler in „Override“-Anpassungen.

Anfang und Ende einer Startanalyse: Systemd-analyze entwickelt sich zum Standard, um Startverzögerungen von Linux-Systemen zu entlarven.

Systemd-run ist das Werkzeug, um temporär beliebige Programme zu laden, die dann innerhalb der Systemd-Verwaltung laufen und deren Steuerung gehorchen. Ein Beispiel, um ein grafisches Programm als Scope-Unit anzulegen, hat bereits der vorherige Beitrag gezeigt:

systemd-run --scope --unit=ff.scope /usr/bin/firefox

Danach ist der Prozess über die Optionen von systemctl steuerbar. Es geht aber auch direkter, sofern es sich um ein Script oder um ein Hintergrundprogramm handelt: Dann kann vorab einfach die gewünschte Eigenschaft definiert werden:

systemd-run --property=CPUQuota=5% /usr/bin/updatedb

Das bedeutet, dass die Indexaktualisierung für das Terminalsuchprogramm Locate nur minimale Systemlast (5 Prozent) erzeugen soll. Terminalprogramme mit sichtbarer Ausgabe benötigen ein Pseudo-Terminal („–pty“):

systemd-run --pty --property=MemoryMax=2M htop
Beispiel für systemd-run: Das ist vor allem für größere Terminalroutinen (hier rsync) eine coole Methode, den Ressourcenbedarf zu steuern.

Systemd-mount kann bekannte Werkzeuge wie lsblk und blkid, im Prinzip auch mount weitgehend ersetzen. Der Befehl

systemd-mount –list

zeigt alle Datenträger inklusive UUID, Label, Dateisystem. Die Mount-Pfade zeigt es allerdings nur, wenn Laufwerke mit systemd-mount eingehängt wurden. Für aktives Mounten mit systemd-mount gibt es zahlreiche Optionen ähnlich dem klassischen mount, wobei aber auch einfachste Varianten funktionieren:

systemd-mount /dev/sdb1 /mnt/usb4TB

Für das Aushängen muss dann der Befehl systemd-umount

systemd-umount /mnt/usb4TB

genutzt werden, weil das klassische umount die so eingehängten Datenträger nicht kennt.

Systemd-cgtop ist der Prozessmonitor von systemd, der den Verbrauch von Systemd-Control-Groups zusammenfasst, also den Ressourcenverbrauch von „User“- und „System“-Units. Einzelne Anwendungsprogramme erscheinen hier nicht. Die Sortierung nach CPU, RAM, IO-Last lässt sich per Parameter ebenso steuern wie das Update-Intervall. Ohne Parameter gestartet

systemd-cgtop

sortiert das Tool nach CPU-Last. Relevant ist solche Kontrolle praktisch nur auf Linux-Servern, wo die Lastverteilung zugunsten eines Serverdienstes optimiert werden soll. Wie das mit „systemctl set-property“ oder durch Editieren von Unit-Dateien erfolgt, ist im vorangehenden Beitrag skizziert.

Systemd-delta ist hauptsächlich für Admins relevant, die tief in der Systemd-Konfiguration stecken und eigene Units erstellt oder Anpassungen vorgenommen haben. Der Befehl

systemd-delta

liefert einen detaillierten Überblick über zeigt abgeschaltete Units („masked“), originale Zustände („equivalent“) und sämtliche Konfigurationsänderungen („overridden“) im Detail. Die Anzeige abgeschalteter Units kann auch für normale Desktop-Nutzer relevant sein, die zwar keine Dienste geändert, aber mit systemctl mask […] abgeschaltet haben.

Kleiner, feiner Helfer: Systemd-delta verschafft Durchblick bei geänderten Systemdiensten.

Weitere systemd-Hilfsprogramme sind ganz unscheinbare kleine Systemtool wie Systemd-path. Der einfache Befehl

systemd-path

kennt keine weiteren Schalter und liefert eine detaillierte Übersicht über allgemeine Systemordner und spezielle Systemd-Pfade. Ein weiteres Mini-Tool Systemd-cat kann für Systemnotizen nützlich sein. Eigentlich ist systemd-cat ein interner Befehl für systemd-Dienste, um an das Journal zu berichten. Der Benutzer kann das aber auch manuell tun:

systemd-cat cat /etc/fstab

Hier wird der aktuelle Inhalt der Datei fstab an das Journal angehängt und kann später mit journalctl jederzeit wieder abgefragt werden. Hierbei kann man sogar mit Schalter „-p“ Priority-Levels (0 bis 7) mitgeben. Ebenfalls eher marginal ist Systemd-tmpfiles, das mit dem Schalter „—clean“ einige temporäre Dateien beseitig.

Systemd-Units erstellen

Das Anlegen von einfacheren Timer-, Service- oder Mount-Units unter Systemd ist keine Geheimwissenschaft, braucht aber Übung und nicht selten korrigierende Detailrecherche. Systemd fordert Präzision und ist nicht auskunftsfreudig, wenn etwas nicht funktioniert. Wer aber die Prinzipien einmal beherrscht, wird durch zahlreiche Zeitoptionen, neue Möglichkeiten der Systemautomatisierung und minutiöse Details der Prozesssteuerung belohnt.

Jede Menge Anschauungsmaterial
Bevor man den ersten eigenen Timer oder Service baut, ist der Blick in vorhandene und funktionierende Beispiele nützlich. Der erste Artikel (ab Seite 40) hat nur gezeigt, wie systemctl edit […] Detailänderungen erledigen kann. Wer eine Unit-Datei nur lesen will, verwendet (Beispiel)

systemctl cat samba.service

und der Befehl

sudo systemctl edit --full samba.service

erlaubt Änderungen an der Originaldatei (statt eine zusätzliche Override-Anweisung anzulegen).

Die Durchsicht einiger Dateien mit systemctl cat ist für Einsteiger zwiespältig: Unit-Dateien sind kurz und mit ihrer Sektions-Struktur gut lesbar. Andererseits finden Sie in jeder Datei andere und neue Anweisungsdirektiven, deren Bedeutung und Relevanz sich nicht erschließt. Es ist keine schlechte Idee, mit Timer-Units zu starten. Erstens sind zeitgesteuerte Jobs ein häufiges Anliegen, zweitens sind die Unit-Dateien für Timer recht leicht nachvollziehbar: Die Sektions-Struktur „[Unit]“ (so beginnt jede Unit-Datei), „[Timer]“ (das ist der Unit-Typ und kann auch Service, Mount, Automount lauten) und „[Install]“ ist zuverlässig, und die ganze Datei enthält oft nur eine Handvoll relevanter Anweisungen. Unter „[Install]“ steht bei (System-) Timern immer:

[Install]
WantedBy=timers.target

Da oben unter „[Unit]“ nur die Zeile „Description=“ notwendig, aber beliebig zu füllen ist, geht es letztlich nur noch um die Zeitangaben unter „[Timer]“.

Timer: So einfach wie möglich

Der sicherste Weg, eigene Unit-Datei anzulegen, ist dieser Aufruf (Beispiel)

sudo systemctl edit --full --force auto-off.timer

Dann müssen Sie sich nicht um den richtigen Ort kümmern, und Systemctl öffnet eine temporäre Datei.#auto-off.timer[Hex-Ziffer], die nach dem Speichern /etc/systemd/system/auto-off.timer heißen wird. Hier tragen Sie die drei Sektionen „[Unit]“ mit beliebiger „Description“, „[Timer]“ und „[Install]“ mit der Standardanweisung „WantedBy=timers.target“ ein. Die Zeitangabe unter „[Timer]“ erledigen Sie mit der Anweisung „OnCalendar=“. Es gibt viele absolute und relative Zeitangaben, die Systemd-Timer akzeptieren. In diesem Beispiel tragen wir

OnCalendar=*-*-* 23:00:00

ein. Das bedeutet „jedes Jahr, jeden Monat, jeden Tag“ um 23 Uhr. Das ist schon alles, denn Systemd vermischt nichts: Was zu diesem Zeitpunkt konkret geschehen soll, muss in einer anderen Unit-Klasse definiert werden – als Service. Die Beziehung zwischen Timer und Service ist in den beiden Unit-Dateien nicht definiert. Sie entsteht schlicht dadurch, dass der Dateiname der Service-Unit exakt identisch sein muss mit jenem der Timer-Unit (hier „auto-off“) – daher:

sudo systemctl edit --full --force auto-off.service

In diese Datei muss nur der Titel „[Unit]“ mit der zweiten Zeile „Description=“ (Inhalt beliebig), darunter die Sektion „[Service]“ mit der Anweisung „ExecStart=“. Das ist der Befehl, der zu dem Zeitpunkt ausgeführt werden soll, die im Timer definiert ist. Dieses Beispiel fordert mit

ExecStart=/usr/sbin/rtcwake -m off -s 28800

einen Shutdown des Systems, das acht Stunden später wieder starten soll (28800 Sekunden). Da der Shutdown um 23 Uhr erfolgt, läuft das System um 7 Uhr wieder an.

Das Beispiel mit Rtcwake ist vielleicht nicht das einfachst mögliche, alle Systemd-betreffenden Anweisungen sind aber auf das absolute Minimum reduziert, was ein funktionierender Timer benötigt. Sie müssen nach dem Speichern von Timer- und Service-Unit den Timer lediglich noch scharf schalten. Dies ist nur einmal zur Ersteinrichtung erforderlich:

sudo systemctl daemon-reload
sudo systemctl enable auto-off.timer
sudo systemctl start auto-off.timer

Um die Service-Unit müssen Sie sich nicht kümmern, das erledigt der Timer zur gegebenen Zeit. Die beiden neuen Units werden nach

systemctl status auto-off.timer
systemctl status auto-off.service

für den Service melden, dass er aktuell „tot“ ist, aber „Triggered“ vom Timer. Der Timer hingegen meldet sich als „aktiv“ und zeigt eine Frist, wann er den Service starten wird.

Shutdown-Timer: Die wenigen Zeilen für Timer und Service sind weitgehend selbsterklärend. Der Timer feuert täglich um 23 Uhr, der Service enthält den nötigen Befehl.

Timer: Elaborierte Optionen und User-Kontext

Systemd-Timer kennen neben festen „OnCalendar=“-Zeiten zahlreiche relative Angaben wie „OnBootSec=10m“ (Beispiel für einen Timer, der 10 Minuten nach Anmeldung zuschlägt). Für periodische Wiederholungen gibt es vereinfachte Angaben wie „hourly“, „daily“, „weekly“ (also etwa „OnCalendar=daily“). Sehr hilfreich ist ferner, dass man mehrere „OnCalendar=“-Zeilen untereinander setzen. Und noch ein entscheidender Vorteil gegenüber Cron: Die Anweisung

Persistent=true

unterhalb der Sektion „[Timer]“ erledigt das, wofür neben Cron noch der Hilfsdienst Anacron arbeiten muss: Sie sorgt dafür, dass ein Termin nachgeholt wird, falls der Rechner zum geplanten Timer-Zeitpunkt nicht eingeschaltet war.

Das folgende Beispiel geht auf weitere Timer-Details nicht näher ein, führt aber ein bislang vernachlässigtes Großthema ein. Die Aufgabe des Beispiel-Timers scheint einfach: Ein Systemd-Timer soll an jedem Monatsbeginn durch ein „notify-send“ an die Erledigung der Umsatzsteuervoranmeldung erinnern. Notify-send ist ein grafisches Tool und muss daher im Benutzerkontext laufen (theoretisch kann auch ein System-Timer plus Service grafische Programme starten, aber das ist knifflig und unzuverlässig).

Systemd-Timer und Dienste können auch mit Benutzerrecht angelegt und genutzt werden. Es funktionieren alle erläuterten Systemctl-Kommandos, hier aber ohne „sudo“ und mit dem Schalter „–user“. Beim Erstellen überlässt man die Wahl des richtigen Pfades am besten wieder Systemctl:

systemctl --user edit --full --force ustva.timer

Wie bei einer System-Unit erfolgt die Erstellung (oder Nachbearbeitung) der Init-Datei mit einer temporären Datei, hier im User-Pfad ~/.config/systemd/user. Als die ersten beiden Zeilen stehen wieder das obligatorische „[Unit]“ und eine „Description“. Unter „[Timer]“ könnte nun etwa

[Timer]
OnCalendar=*-*-01 10:00:00
Persistent=true

folgen, um den Timer am ersten Tag jeden Monats um 10:00 auszulösen. Die „Persistent“-Zeile sorgt dafür, dass der Timer nachgeholt wird, falls der Rechner an diesem Ersten des Monats nicht läuft. Um die Flexibilität der Timer-Units zu zeigen, ändern wir den Zeitplan insofern, dass der Timer nur noch quartalsweise zuschlagen soll (Januar, April, Juli, Oktober). Das sind für kleine Solo-Selbständige die üblichen Termine für die Umsatzsteuer. Das ist ganz einfach mit diesen vier Zeilen erledigt:

OnCalendar=*-01-01 10:00:00
OnCalendar=*-04-01 10:00:00
OnCalendar=*-07-01 10:00:00
OnCalendar=*-10-01 10:00:00

In der letzten Sektion „[Install]“ ist bei Units, die im Benutzerkontext laufen, diese Anweisung erforderlich:

[Install]
WantedBy=default.target

Das ist ein wichtiger Unterschied zu System-Timern (immer timers.target).

Nun ist noch die zugehörige, gleichnamige Dienst-Unit zu erstellen:

systemctl --user edit --full --force ustva.service

In die Service-Datei kommt folgender Inhalt:

[Unit]
Description=Umsatzsteuer-Voranmeldung
Wants=graphical.target
After=graphical.target
[Service]
ExecStart=/usr/bin/notify-send "Umsatzsteuer bis 10. des Monats erledigen!"

Da ein grafisches Programm ausgelöst wird, ist in der Unit-Sektion das „graphical.target“ als benötigt (Wants) und gestartet (After) angegeben.

Timer-Test: Ob Timer und Dienst funktionieren, kann man am einfachsten durch zusätzliche Dummy-Termine ermitteln, die man danach wieder entfernt.

Path-Unit für Auto-Backup

Path-Units von Systemd können Ordner überwachen und Aufgaben automatisch auslösen, sobald sich Ordnerinhalte ändern. Die Kombination von Path-Unit und gleichnamiger Service-Unit ist ganz ähnlich wie bei Timer und Service, nur dass hier der Auslöse-Trigger kein zeitlicher, sondern eine Änderung im Dateisystem ist. Path-Units sollten gut überlegt sein, weil allzu umfangreiche Aktionen in frequentierten Ordern hohe und vielleicht unnötige Systemlast erzeugen. Bei Systemd muss man sich aber immerhin keine Gedanken machen, dass ein Service mehrfach läuft: Dies verhindert Systemd automatisch. Unser Beispiel zeigt, wie sich mit einer Path-Unit mehrere wichtige Ordner so überwachen lassen, dass bei allen Änderungen automatisch ein Rsync-Backup ausgelöst wird.

Der erste Schritt ist wieder das Erzeugen der Unit-Datei, hier mit

sudo systemctl edit --full --force auto-sync.path

für die Path-Klasse. „[Unit]“-Header und „Description“ oben sind problemlos, unter „[Install]“ binden wir die Unit an das multi-user.target:

WantedBy=multi-user.target

Das liegt bei der hier genutzten Serverplatine nahe, genügt aber auch bei einem Desktopsystem, weil der Vorgang keine grafischen Ressourcen benötigt. Wesentlich sind die Pfadangaben nach „PathChanged=“. Wie die Abbildung zeigt, sind diverse solche Einträge möglich und oft sinnvoll, weil Path-Units keine Unterverzeichnisse berücksichtigen. „PathChanged“ reagiert auf alle Datenänderungen im angegebenen Pfad.

Notwendig – und im Vergleich zu Timer-Units etwas irritierend – ist in der Sektion „[Path]“ die explizite Angabe der zugehörigen Service-Datei (mit gleichem Namen):

Unit=auto-sync.service

Nach Speichern der Path-Unit legen Sie mit

sudo systemctl edit --full --force auto-sync.service

die Service-Datei an. Unser Beispiel sichert per SSH auf ein anderes Gerät im Netzwerk und erfordert daher ein geladenes „network.target“, was in der ersten Sektion unter „[Unit]“ vermerkt wird. Die entscheidende Anweisung unter „[Service]“ ist wie üblich „Exec-Start=“. Die beiden weiteren Anweisungen sind optional, aber sinnvoll: Sie begrenzen die Systemlast der Aktion („CPUQuota“) und stellen mit „ExecCondition=“ eine Bedingung:

ExecCondition=/usr/bin/ping -c 1 192.168.0.110

Wenn der Rechner mit der genannten IP nicht erreichbar ist, stoppt der Service sofort. „ExecCondition“ ist sehr flexibel, insofern es den Exitcode ($?) eines beliebigen Bash-Tools auswertet. Nur bei Exitcode „0“ startet der Dienst.

Nach dem Speichern der beiden Unit-Dateien folgt wieder die übliche Einrichtung:

sudo systemctl daemon-reload
sudo systemctl enable auto-sync.path
sudo systemctl start auto-sync.path

Die Service-Unit wird nicht aktiviert. Das erledigt künftig die Path-Unit automatisch, sobald sich in den hinterlegten Pfaden etwas ändert.

Path-Unit mit zugehörigem Service: Systemd überwacht hier einige Ordner und startet bei Änderungen automatisch eine Rsync-Sicherung.

Automount: Wozu ist das gut?

Die Datei /etc/fstab scheint eine Altlast, nachdem Systemd deren Laufwerkeinträge schon seit vielen Jahren in seine eigenen Mount-Units übersetzt (systemd-fstab-generator). Da aber von der Umstellung der systemkritischen Verzeichnisse Root (/) und Boot (/boot) auf Systemd-Mount-Units nach wie vor abgeraten wird, behält die fstab vorerst weiter ihr Existenzrecht. Damit bringt es keinen Vorteil, Datenlaufwerke aus der fstab zu nehmen und explizit als Systemd-Mount umzuwandeln.

Gute Motive für Mount- und Automount-Units gibt es aber für mobile USB-Datenträger. An das Automount von grafischen Systemen unter /media/[User] kann man sich sicher gewöhnen, aber vielleicht will man den Mountpunkt selbst bestimmen? Noch überzeugender ist ein Mount-Automount-Gespann auf einem (Platinen-) Server ohne Desktop: Wer hier alle paar Wochen mal ein bestimmtes USB-Gerät anschließen will, kommt an einem manuellen Einhängen nicht vorbei. Das kann Systemd deutlich vereinfachen.

Eine Automount-Unit benötigt immer eine zugehörige Mount-Unit mit demselben Namen. Automount ist – ähnlich wie Timer und Path – ein wartender Trigger, der beim Eintreten des Ereignisses die eigentliche Mount-Unit auslöst. Das Ereignis ist in diesem Fall der Zutritt in das Mount-Verzeichnis – ob per Klick im Dateimanager oder per Terminalbefehl (cd, ls, mc…), spielt dabei keine Rolle.

Eine erste wichtige Vorbereitung ist der Mount-Pfad. Der sollte sprechend, aber nicht lang und kompliziert sein (Leerzeichen besser vermeiden), weil die Unit-Dateinamen den Pfad exakt wiedergeben müssen. Für einen Mountpfad /srv/Archiv wäre dann die Unit-Namen srv-Archiv.mount und srv-Archiv.automount zutreffend. Im Zweifel liefert Systemd sogar das Mini-Tool

systemd-escape "/srv/Archiv/"

mit, um für einen Pfad den korrekten Unit-Namen zu ermitteln. Ist der Mountpfad angelegt, kann der Automount-Trigger erstellt werden (hier im System-Kontext):

sudo systemctl edit --full --force srv-Archiv.automount

Die wenigen Zeilen können Sie der Abbildung entnehmen. Entscheidend ist die Pfadangabe nach „Where=“, den die Unit künftig überwacht. Die Option „TimeOutIdleSec=“ ist optional, aber ressourcensparend. Unter „[Install]“ wird die Unit an das multi-user.target gebunden, was auch am grafischen Desktop ausreicht. Danach erstellt der Befehl

sudo systemctl edit --full --force srv-Archiv.mount

die zugehörige Mount-Unit. Die Angabe „Where=“ muss erneut den gewünschten Mountpfad definieren, während „What=“ die Hardware bezeichnet: Besser als etwa „/dev/sdb1“ ist die eindeutige UUID, die man vorher mit lsblk -f ermittelt. Der Rest ist nicht viel anders als beim Mount-Befehl oder in fstab. Auf grafischen Systemen ist bei den „Options=“  der zusätzliche Eintrag „x-gvfs-show“ keine schlechte Idee, weil der Dateimanager Systemd-Automounts nur dann in der Navigation anzeigt. Die Mount-Unit erhält keine „[Install]“-Sektion, da sie ausschließlich von der komplementären Automount-Unit gestartet wird.

Nach dem Speichern der Dateien müssen Sie den Automount-Trigger noch scharf schalten. Daher folgt abschließend die übliche Ersteinrichtung der Unit:

sudo systemctl daemon-reload
sudo systemctl enable srv-Archiv.automount
sudo systemctl start srv-Archiv.automount

Um die Mount-Unit müssen Sie sich nicht weiter kümmern.

Was passiert künftig, wenn Sie das USB-Laufwerk anschließen? Gar nichts – denn Automount ist keine Hardware-Erkennung, sondern eine Ordnerüberwachung. Erst sobald der Mount-Pfad betreten, wird die Mount-Unit ausgelöst und – mit leichter Verzögerung – stehen die Inhalte des Datenträgers zur Verfügung. Sehr praktisch! Noch ein Hinweis: Wenn Sie mit dem Tool

systemd-unmount /srv/Archiv/

das Laufwerk auswerfen, wertet Systemd dies als Ansage, dass Sie die Automount-Unit nicht mehr brauchen und deaktiviert sie.

((303_4_Automount.png))

Automount- und Mount-Unit: Besonders praktisch ist diese Methode bei Servern ohne Desktop für USB-Geräte, die nicht dauerhaft angeschlossen sind.
SYSTEMDUnit-DateienDIE WICHTIGSTEN REGELN
[Unit]SEKTION 1 (notwendige und statische Startzeile „[Unit]“)
Description=notwendig, aber Inhalt beliebig
Requires= | After= | Wants=optionale Target-Angaben, falls die Unit z. B. „network.target“ oder „graphical“ benötigt
[Service] | [Timer] | [Path] | Mount]SEKTION 2: Angabe der Unit-Klasse 
[Service]
ExecStart=notwendig: zu startendes Programm
Type=optional, Standard „simple“ genügt oft
WorkingDirectory=optional, aber oft nützlich, um Shellscript zu ersparen
Restart=optional: z. B. „on-failure“, um den Dienst nach Fehler neu zu starten
ExecCondition=optional: Shell-Befehl wie ping o. test, der Errorcode liefert (Dienst startet nur bei $?=0)
User= | Group=optional: höhere Sicherheit, weil der Systemdienst dann nur in diesem Konto laufen darf
[Timer]
OnCalendar=notwendig ist mindestens eine Zeitangabe, z. B. „-* 15:00:00″ oder „hourly“
OnBootSec=alternative relative Zeitangabe – etwa „20m“ (20 Minuten nach Anmeldung)
Persistent=optional: „true“ holt den Timer nach, falls der Rechner zur geplanten Zeit nicht lief
[Path]
PathChanged=notwendig ist mindestens eine Pfadangabe, „PathChanged“ reagiert auf alle Änderungen
PathExistsGlob=erlaubt Filter nach Dateinamen oder Extensionen – etwa „/srv/data/*.pdf“
[Mount]
What=notwendig: Gerätekennung wie „/dev/sda1“ oder „UUID=[…]“
Where=notwendig: Mountordner im Dateisystem
Type=optional, aber zu empfehlen: Dateisystem wie „ext4“ oder „ntfs“
Options=optional, aber oft notwendig – etwa „username=sepp,password=sepp“
[Automount]
Where=notwendig: muss exakt der Where-Zeile in der zugehörigen Mount-Unit entsprechen
TimeOutIdleSec=optional: Abschaltzeit, falls kein Zugriff stattfindet – etwa „600“ (10 Minuten)
[Install]SEKTION 3: Unit installieren (an Target binden)
WantedBy=Target-Klasse wie multi-user.target oder timers.target
Das angegebene Target erhält einen Symlink zu dieser Unit und startet es mit.
Sektion 3 entfällt bei Mount-Units und Services, die von Timer- oder Path-Units gestartet werden

Bash: Filterkommandos

Die Filterbefehle Grep, Awk, Xargs & Co sind unentbehrlich, um den Textoutput von Terminalbefehlen zielsicher zu filtern. Der Beitrag erklärt die wichtigsten Filter und die Prinzipien der Benutzung.

Grep: Der horizontale Zeilenfilter

Grep ist der häufigste Textfilter, um eine eventuell seitenlange Liste auf die relevante(n) Zeile(n) abzukürzen. Grep ist relativ eingängig, weil man einfach den Textstring angibt, den die benötigten Zeilen enthalten müssen (oder nicht enthalten dürfen).

Im einfachsten Fall geht es im interaktiven Terminal nur darum, die Ausgabe übersichtlich zu halten. So zeigt etwa der mount-Befehl auf Ubuntu-Systemen mit zahlreichen Snaps überwiegend Mountpunkte, die für den Benutzer irrelevant sind. Der Befehl

mount | grep "/dev/sd"

verkürzt auf die physischen Laufwerke. In manchen Fällen ist es sinnvoll, den Filter mit „-v“ umzudrehen, um nur die Zeilen zu erhalten, wo der String nicht vorkommt:

apt list --installed | grep -v "automatisch"

Dies zeigt alle installierten Software-Pakete, die manuell nachinstalliert wurden, also nicht zum „automatisch“ mitgelieferten Umfang gehören.

Für Scripts ist es oft erforderlich, genau eine einzige Ausgabezeile eines Standardbefehls auszuwerten. Der Suchstring muss dann entsprechend eindeutig ausfallen:

free -m | grep "Speicher:"

Die weitere Auswertung der verbleibenden Zeile kann dann das Werkzeug Awk übernehmen (siehe unten). Für Scripts ist ferner die Tatsache wichtig, dass Grep den Errorlevel „1“ zurückmeldet (abzufragen mit „$?“), wenn der Textstring nicht gefunden wird:

echo $file | grep -i ".7z"
if [ $? -eq 0 ] then …

Im Prinzip eignet sich Grep auch für die Textrecherche in vielen Dateien. Das Kommando

grep -r "Bunsenlabs" .

durchsucht ab dem aktuellen Verzeichnis rekursiv alle Dateien nach dem Suchstring. Da es sich aber um reine Textdateien handeln muss, wenn die Ausgabe lesbar sein soll, bleibt der Nutzwert von Grep als Desktopsuche begrenzt. Textprofis werden dafür eher zu Recoll oder Docfetcher greifen. Die Parameter „–after-context=“ und „–before-context=“, die auf Wunsch Zeilen nach und vor dem Suchtreffer ausgeben, zielen ebenfalls auf solche Textrecherche und seien hier zumindest erwähnt.

Hinweis: Die Varianten Egrep, Fgrep, Rgrep bleiben hier unberücksichtigt. Sie sind allesamt über Grep-Schalter zu erreichen.

Grep macht Datenfluten übersichtlich: Hier kontrolliert der String „deleting“, was ein rsync-Befehl bei tatsächlicher Ausführung löschen würde.

Sort: Zeilenreihenfolge umstellen

Sort ist ein Filter, der die Datenmenge insgesamt unverändert lässt (Ausnahme Schalter „-u“). Das Sortieren kann aber die Daten in völlig neue Zusammenhänge setzen, die besseren Überblick und schnelle Auswertung ermöglichen.

Sort sortiert die Ausgaben anderer Befehle alphabetisch (Standard) oder numerisch (Schalter „-n“), bei Bedarf auch nach der gewünschten Spalte (Schalter „-k“). Vor allem die Sortierung von Listen nach einer beliebigen Spalte bringt rückt Informationen zusammen, die aus den ursprünglichen Daten nie ersichtlich wären: Der Befehl tree -isa listet alle Dateien unterhalb des aktuellen Verzeichnisses mit Bytezahl auf. Mit

tree -isa |sort -k2 -n

wird die Liste numerisch („-n“) nach dieser Größenangabe sortiert, sodass die größten Dateien am Ende erscheinen. Sortiert werden muss – etwas irritierend – nach Spalte 2, weil die beginnende Klammer „[ “ als erste Spalte zählt.

Als weiteres Beispiel sei der Befehl ps –A angeführt, der alle laufenden Prozesse zeigt. Die Ausgabe ist standardmäßig nach der PID (Prozess-ID) sortiert, was bei der Suche nach einem bestimmten Programm unübersichtlich ist. Sort macht daraus mit

ps –A | sort –k4

eine alphabetische Liste:

Sort kann nicht nur nach einer bestimmten Spalte sortieren („-k“), sondern dies auch dort, wo ungewöhnliche Spalten- und Feldbegrenzer vorliegen (Schalter „-t“). Typisch ist etwa das Semikolon in CSV-Dateien:

cat Buchungen.csv | sort -t ";" -n -k7

Wenn Spalte 7 die Buchungsbeträge enthält, wird die komplette Tabelle numerisch nach diesen Werten sortiert.

Mit Schalter „-u“, der ausschließlich horizontal und zeilenbezogen arbeitet, filtert Sort bei der Ausgabe langer Listen oder Dateien doppelte, identische Zeilen weg:

cat .bash_history | sort -u

Wer diesen Räumdienst direkt in der Originaldatei übernehmen will, nutzt am besten Sponge:

cat .bash_history | sort -u | sponge

Dies erspart den lästigen Umweg über eine sekundäre, temporäre Datei.

Hinweis Uniq: „sort -u“ macht das kleine Hilfsprogramm Uniq weitgehend überflüssig. Der Mehrwert gegenüber „sort -u“ liegt allenfalls bei der Analyse, zumal Uniq grundsätzlich nur funktioniert, wenn ein Sort-Filter vorangestellt wird:

cat .bash_history | sort | uniq -c

Dies zeigt alle Zeilen mit der Anzahl eventueller Wiederholungen. Jeder Wert größer als „1“ bedeutet einen doppelten oder vielfachen Eintrag.

Sort schafft Ordnung: Wichtige Eigenschaften sind die Sortierung nach Spalten (-k) und der Schalter für numerische Werte (-n).

Awk: Der vertikale Spaltenfilter

Awk ist das umfangreichste Filterwerkzeug und zerlegt die Textausgabe von Terminalkommandos in Spalten und Felder. Damit können Sie Spalten einer Liste ausblenden oder umstellen oder in einer Ausgabezeile genau einen bestimmten, einzelnen Wert ermitteln und weiterverarbeiten. Awk kann außerdem vorgefundene Werte gleich mathematisch verrechnen und etwa Additionen oder Divisionen erledigen.

Awk ist ein selbständiges Programmiertool. Die folgenden Beispiele können diesen Umfang nicht annähernd wiedergeben und fokussieren sich auf wichtige Aufgaben im interaktiven Einsatz oder für einfache Bash-Alias oder Funktionen. Die Arbeitsweise von Awk zeigt ein ganz simples Beispiel:

echo Anna Sepp Hans Berta | awk '{print $1 $4 $3 $2}'

Die Felder (hier Namen) werden umgestellt, sind aber ohne Trenner schlecht lesbar – also:

echo Anna Sepp Hans Berta | awk '{print $1 "\t" $4 "\t" $3 "\t" $2}'

Dies setzt einen Tabulator zwischen die Felder.

Nun wird es ernster: Awk soll aus dem Standardbefehl Top die aktuelle CPU-Last abgreifen und nur diesen einzigen Wert anzeigen:

top -n1 | grep "CPU(s)" | awk '{print 100-$8"%"}'

Feld 8 in der Zeile „CPU(s)“, die Grep vorfiltert, enthält den aktuellen Idle-Wert. Von 100 subtrahiert, ergibt sich die aktuelle CPU-Last.

Eigentlich ist Awk in diesem Fall gar nicht auf Grep angewiesen: Wenn eine Befehlsausgabe wie der Header von Top genau normiert ist, also von vornherein klar, in welcher Zeile welche Information erscheint, dann kann Awk auf die Nachhilfe von horizontalen Filtern verzichten. Mit „NR==“ lässt sich die exakte Zeilennummer einstellen und nachfolgend auswerten. Das folgende Beispiel ermittelt die aktuelle RAM-Belegung aus Zeile 4 des Top-Kommandos:

top -n1 | awk 'NR==4 {print int($8) " MB belegt von " int($4) " MB"}'

Dies wird ein Ergebnis wie „524 MB belegt von 3732 MB“ erzeugen. Die Funktion „int“ ist nicht zwingend, bereinigt aber auf gut lesbare Ganzzahlen.

Auf diese Weise wird es relativ einfach, gesuchte Werte nicht nur auszugeben, sondern als Bash-Variable zur Weiterverarbeitung abzulegen:

RAM_used=$(top -n1 | awk 'NR==4 {print int($8)}')

Danach steht die Variable $RAM_used für Scripts oder Funktionen zur Verfügung.

Awk kann auch eine Zeilennummerierung ausführen:

find . | awk '{print NR "\t" $0}'

Hier will offenbar jemand wissen, wie viele Dateien sich im aktuellen Ordner befinden: Awk nummeriert die Zeilen und hängt nach Tabulator die komplette Zeile an, wie sie Find anliefert („$0“ bedeutet die gesamte Zeile ohne Feldauswahl).

Wenn statt einer klaren Tabellenstruktur die Felder durch Trenner wie Semikolon, Doppelpunkt oder Slash definiert sind, dann hilft der Awk-Schalter „-F“ („Field“):

cat /etc/passwd | awk -F: '{print $3 "\t" $1}'

Die Datei /etc/passwd nutzt den Doppelpunkt als Feldtrenner, daher „-F:“. Die Ausgabe wird dann auf Username und UID reduziert, die Spalten umgedreht (Name zuerst) und zur besseren Lesbarkeit ein Tabulator zwischengeschaltet (Tipp: Der Backslash ist das typische Signal für Sonderzeichen in Bash-Filtern – hier „\t“ für den Tabulator).

Das letzte Beispiel zeigt zugleich noch einmal, dass Awk die Spalten eines Ausgangbefehls beliebig umstellen und unnötige Spalten ausblenden kann.

Awk pickt sich jeden Wert aus Zeilen und Spalten. Dieser Filter ist für Scripts und Aliases absolut unentbehrlich.

Column: Spaltenzerlegung

Dieses Tool verbessert die Lesbarkeit unformatierter Listen signifikant. Wer Awk beherrscht, wird Column zwar nicht oft brauchen, aber das Tool ist handlich und setzt passende Tabulatoren nach Berechnung aller Daten. Es kann auch als Vorbereitung dienen, um eine weitere Zerlegung durch Awk zu erleichtern.

Vergleichen Sie die überaus schlecht lesbare Ausgabe von mount mit dieser Variante

mount | column -t

oder den Befehl cat /etc/passwd mit dieser Tabellendarstellung:

cat /etc/passwd | column -s: -t

Column ersetzt hier das Trennzeichen „:“ (Schalter „-s“ steht für Separator) durch Tabulatoren. Sortiert man das Ganze dann noch mit

cat /etc/passwd | column -s: -t | sort -n -k3

numerisch nach der User-ID in Spalte 3, ist das Resultat mit der Originaldatei kaum noch zu vergleichen. Anders als Awk oder Sed, die ebenfalls Tabulatoren einsetzen können, errechnet Column eine passende Tabulatorweite für alle Spalten der gesamten Datenmenge.

Column schafft aber auch Felder, wo vorher keine waren. Der schon früher genannte Befehl

apt list --installed

trennt die Paketnamen durch einen „/“-Slash von der nachfolgenden Paketquelle. Mit

apt list --installed | column -s/ -t

wandeln Sie den Slash-Trenner um in eine gut lesbare Tabelle und mit

apt list --installed | column -s/ -t | awk '{print $1}'

bleiben nur noch die Paketnamen der ersten Spalte übrig, die sich dann für eine Masseninstallation verwenden lässt. Hierfür ist das Tool Xargs einschlägig (siehe unten).

Hinweis: Für genau dasselbe Ergebnis des letzten Befehls reicht mit

apt list --installed | awk -F/ '{print $1}'

auch das begabte Awk allein.

Column macht Listen mit seltsamen Trennzeichen lesbar und ist vor allem zur Darstellung größerer Tabellen die optisch ansprechendste Lösung.

Cut: Spalten definieren und entfernen

Column und vor allem Awk bieten alle Möglichkeiten, um vertikale Spalten und Felder darzustellen, zu analysieren oder bei Bedarf durch Umwandlung von Trennzeichen erst herzustellen. Das Tool Cut ist technisch weitaus einfacher, aber gerade deswegen oft die unkompliziertere Alternative.

Cut eignet sich ideal, um eine bestimmte Spalte aus einer Liste zu filtern, die ihre Felder mit einem Delimiter-Zeichen wie Semikolon, Komma, Doppelpunkt, Bindestrich oder Slash trennt. Die wichtigsten Schalter von Cut sind „-d“ (Delimiter), der das Trennzeichen definiert, und „-f“ für die Angabe der gewünschten Spalten (Fields). Der Befehl

echo Anna Sepp Hugo | cut -d" " -f2

wird folglich mit „Sepp“ antworten. Das letzte Beispiel oben, das mit Column und Awk eine Paketliste erstellte, ist daher mit dem Tool Cut noch einfacher zu realisieren:

apt list --installed | cut -d/ -f1

Mit dem Schalter „-d“ wird hier der Slash „/“ als Spaltentrenner definiert und mit „-f1“ nur noch die erste Spalte angezeigt, also die puren Paketnamen. Im folgenden Beispiel

cut -d: -f1,3 /etc/passwd

reduziert Cut die genannte Datei auf die zwei Felder Usernamen und UID.

Cut ist ein relativ einfaches Tool, um gezielt eine oder mehrere Spalte(n) einer Liste zu isolieren.

Sed: Zeichen ersetzen oder löschen

Der Streameditor Sed eignet sich sowohl zur Dateibearbeitung als auch zur Korrektur des Terminaloutputs. Er ersetzt einzelne Zeichen oder Zeichenfolgen durch einen anderen String, löscht störende Zeichen oder fügt zusätzliche ein.

Sed kann automatische Textersetzungen oder Löschungen in allen Dateien des aktuellen Verzeichnisses erledigen. Ferner kann es auch als Kosmetik für schlecht lesbare Terminalbefehle dienen. Wenn das mächtige Werkzeug viele Dateien bearbeiten soll, ist Vorsicht geboten und zumindest ein vorhergehender Test zu empfehlen, der nur im Terminal angezeigt wird:

sed 's/domain.org/neue.domain.de/g' *.html

Jedes Vorkommen von „domain.org“ wird durch die neue Adresse korrigiert. Mit zusätzlichem Schalter „-i“ (oder „–in-place“) erledigt Sed die Aktion tatsächlich.

Hocheffizient, aber auch riskant sind Löschkommandos mit „d“:

sed -i '/bind /d' ~/.bashrc

Hier wird jede Zeile der angegebenen Datei gelöscht, die mit dem Kommando „bind “ beginnt.

Sed ist aber auch für die interaktive Kosmetik am Terminaloutput nützlich. Die Ausgabe des Systempfads mit

echo $PATH

trennt die Ordner bekanntlich schlecht lesbar mit Doppelpunkt. Folgende Alternative

echo $PATH | sed 's/:/\n/g'

ersetzt alle Doppelpunkte durch einen Zeilenumbruch („\n“) und macht die Ausgabe übersichtlich. Wie schon bei Awk angemerkt, ist der Backslash wieder das typische Signal für ein nachfolgendes Sonderzeichen.

Streameditor Sed: Das Tool ist ein phänomenaler Zeitsparer, erfordert aber sehr präzise und eindeutige Angaben.

Xargs: Andere Befehle füttern

Das Tool Xargs gehört in diesen Kontext, obwohl es selbst keine Filterleistung bietet. Aber es gibt vorher gefilterte Argumente oder den Inhalt einer Dateiliste direkt an einen anderen Befehl weiter. Damit ist es eine nützliche Abkürzung, die eine weitaus umständlichere Scriptverarbeitung erspart.

Im ersten einfachen Beispiel wird eine vorher angelegte Paketliste

apt-mark showmanual > liste.txt

später an diesem oder auf einem anderen System mit

cat liste.txt | xargs apt install

in einem Rutsch installiert. Xargs übergibt einfach den kompletten Inhalt der Textdatei an den Paketmanager.

Diese beiden nachfolgenden Befehle sind funktionsidentisch:

xargs -a liste.txt -n 1 apt install
cat liste.txt | xargs -n 1 apt install

Das zeilenweise Abarbeiten mit „-n 1“ ist notwendig, wenn die Listendatei für jedes Argument eine eigene Zeile nutzt.
Xargs kann auch für eine besser lesbarere oder ergänzte Terminalausgabe sorgen:

free -m | grep "Speicher" | awk '{print int(($3/$2)*100)}' | xargs -i echo {}% RAM belegt

Die Ausgabe von free wird auf die Zeile mit „Speicher“ gekürzt. Awk filtert dort die Werte für den Gesamtspeicher ($2) und den benutzten Speicher ($3) und berechnet den belegten Prozentwert (bereinigt durch „int“ auf eine Ganzzahl). Damit nicht die bloße Zahl geliefert wird, übergibt Xargs den Wert an Echo. Weil der vorher ermittelte Wert nicht am Ende des Echo-Befehls steht, muss Xargs mit Schalter „-i“ verwendet werden. Die Klammern „{}“ definieren dann die Stelle für den Übergabewert.

Xargs ist ein Wertelieferant und gibt die von Bash-Filtern gesammelten Infos an einen anderen Befehl weiter (hier nur an Echo).

Bash-Filter: More & Less

Es gibt eine Reihe weiterer (Mengen-) Filter wie More und Less zum zeilenweisen Blättern in der Ausgabe, Head und Tail zur Reduktion der Ausgabe auf die ersten oder letzten Zeilen. Dies nur der Vollständigkeit halber – denn dieser letzte Abschnitt ist eher ein Fazit.

In der Bash-Shell geht mit den genannten Tools im Prinzip alles. Wie bei allen textbasierten Shells ist es aber kein Vergnügen. Die Erbsenzählerei zum benötigten Feld für eine Awk-Auswertung ist mühsam, aber immerhin lohnend. Richtig ärgerlich ist, dass Bash-Tools keine einheitlichen Schalter haben und etwa einen Spaltentrennzeichen mal mit „-F“, mit „-d“ oder mit „-t“ definieren. Eine weitere Herausforderung ist es, dass Tools ähnliche Funktionen enthalten, die unterschiedliche Lösungen für ein und dasselbe Problem bieten. Unterm Strich sollten Grep, Sort und Awk alle Aufgaben erledigen – sofern man sie richtig beherrscht. Sed ist ein Editierautomat, der sich vornehmlich an Script- und Webentwickler richtet.

Tipps für Linux-Editoren

Ob Samba, SSH, Terminal, Fstab oder Desktop-Verknüpfungen: Für die Linux-Konfiguration sind überwiegend Textdateien zuständig, die zur Bearbeitung einen tauglichen Texteditor erfordern. Wir nehmen vier Editoren genauer unter die Lupe.

Bei der Administration von Linux-Rechnern sind Texteditoren die wichtigsten Werkzeuge. Am Desktop sind grafische Editoren wie Gedit und Kate sicher die bevorzugte Wahl. Universeller – weil auch in virtueller Konsole und im SSH-Terminal funktionierend – sind aber die textbasierten Editoren für das Terminal. Diese haben höheren Tipp- und Anpassungsbedarf als Gedit & Co und erhalten auf den folgenden Seiten gebührende Beachtung.

Der Gnome-Editor Gedit

Der Editor unter allen Gnome-affinen Desktops gehorcht durchwegs standardisierten Hotkeys zur Textnavigation und Textbearbeitung. Für Novizen gibt es im Menü sogar die Option „Tastenkürzel“, um sich alle Hotkeys anzeigen zu lassen. Nichtsdestotrotz erschließen sich nicht alle Anzeige- und Bearbeitungsmöglichkeiten auf Anhieb.

Die Seitenleiste (links) ist über „Ansicht -> Seitenleiste“ oder schneller mit F9 einzublenden. Standardmäßig ist dort der Modus „Dokumente“ aktiv, der die geöffneten Dateien auflistet. Wesentlich nützlicher ist der Modus „Dateiverwaltung“, den das Plugin „Dateiverwaltungsleiste“ bereitstellt (mehr zu Plugins siehe unten). Damit erhält Gedit eine Ordnernavigation, die Dateimanager überflüssig macht. Der Hotkey Strg-H blendet wie im Dateimanager versteckte Dateien ein oder aus. Kontrolle über mehrere geöffnete Dateien behalten Sie immer noch durch die Tab-Register unterhalb der Titelleiste.

Das Übersichtsfenster (rechts) können Sie im Menü unter „Einstellungen -> Ansicht“ aktivieren. Der Informationswert dieser Miniaturübersicht ist gering, aber sie erlaubt mit der Maus schnelles Blättern oder Springen an entfernte Stellen in größeren Texten.

Die Plugins: Für Gedit gibt es eine ganze Reihe nützlicher Plugins, die standardmäßig nur partiell installiert und aktiv sind, wie der Gang im Menü zu „Einstellungen -> Erweiterungen“ zeigt. Alle offiziellen Plugins erreichen Sie mit dem Befehl:

sudo apt install gedit-plugins

Dies kann in keinem Fall schaden, da Sie in dem oben genannten Gedit-Dialog immer noch die Wahl haben, ein Plugin zu aktivieren oder nicht. Neben den „gedit-plugins“ gibt es auch noch das Paket „gedit-developer-plugins“. Sehr zu empfehlen sind „Wortvervollständigung“ (Autocomplete-Funktion), die „Zeichentabelle“, die sich in die Seitenleiste (links) integriert, und das nachfolgend beschriebene „Snippet“-Tool.

Gedit-Optionen: Der Editor zeigt hier seinen per Plugin eingebauten Dateimanager (linke Spalte), Tab-Verwaltung für geöffnete Dateien (oben), Syntaxhighlighting und Autosave-Funktionen.

Das Plugin „Schnipsel“ (Snippets): Dieses Plugin stattet Gedit mit Textbausteinen aus, die per Hotkey oder besser per Textkürzel (gefolgt von der Tab-Taste) eingefügt werden. Typische Kandidaten für solche Schnipsel sind Mailsignaturen, Adressen, Namen, Telefonnummern, IBAN oder auch die Grundsyntax einer Script-Konstruktion. Für Viel-Schreiber und -Scripter sind solche Schnipsel eine unschätzbare Hilfe. Bei aktivierter Erweiterung führt der Menüpunkt „Schnipsel verwalten“ zum Einrichtungsdialog, der in zahlreiche Scriptsprachen untergliedert ist. Textbausteine unter „Global“ gelten für alle Texte. Mit der „+“-Schaltfläche entsteht an der gewünschten Stelle (etwa unter „Global“) ein neuer Eintrag, dem Sie etwa den Namen „Adresse“ geben. Selbige geben Sie im Textfenster ein und definieren unten neben „Tabulatorauslösung“ ein Kürzel wie „adr“. Nach Schließen des Schnipsel-Dialogs ist der Autotext aktiv – „adr“ und Tab-Taste fügt also die komplette Adresse ein.

Hinweis: Eventuell werden die Snippets zunächst nicht gespeichert („~/.config/gedit/snippets“), wofür ein offenbar verbreiteter Fehler bei den Dateirechten verantwortlich ist. Der Terminalbefehl

sudo chmod -R 777 ~/.config/gedit

behebt das Zugriffsproblem.

Suchen und Ersetzen: Die Funktionen gehorchen den Standard-Hotkeys Strg-F und Strg-H. Der Ersetzen-Dialog ist durch seine detaillierteren Optionen die generell bessere Wahl – auch für pure Suche. Gedit kann auch nach Zeilenumbrüchen („\n“), Returns („\r“) und Tabulatoren („\t“) suchen, also etwa mit

\nif 

nach Zeilen, die mit „if“ beginnen.

Das Syntaxhighlighting: Gedit versucht automatisch zu erkennen, um welchen Text es sich handelt, und aktiviert dann das passende, farbige Syntaxhighlighting. Wenn dies unbefriedigend ausfällt, können Sie unter „“Ansicht -> Hervorhebungsmodus“ manuell eine andere Scriptsprache oder „Reiner Text“ auswählen.

Farbschema und Aussehen: Unter „Einstellungen -> Schrift und Farben“ gibt es die typischen Farbschemata „Klassisch“, „Kate“, „Kobalt“, „Oblivion“. Unabhängig vom Farbschema können Sie an gleicher Stelle die Schriftgröße definieren. Vor allem bei der Fehlersuche hilfreich sind die Zeilennummern, die Gedit unter „Einstellungen -> Ansicht“ aktiviert.

Automatische Sicherungskopien: Die Registerkarte „Einstellungen -> Editor“ zeigt zwei Optionen, um bearbeitete Dateien besser zu sichern. Sowohl die „Sicherungskopie“ als auch „Auto-Speichern“ im angegebenen Minutenintervall sind unbedingt zu empfehlen.

Zum Teil Schnickschnack, zum andern Teil unverzichtbar: Plugins wie “ Dateiverwaltungsleiste“, „Schnipsel“, „Wortvervollständigung“ und „Zeichentabelle“ ergänzen Gedit und Xed.

Xed: Der Editor des Mint-Teams

Im Zuge der Entwicklung Desktop-unabhängiger X-Apps arbeitet das Team von Linux Mint am Editor Xed. Diese Textbearbeitung unterscheidet sich äußerlich erheblich von Gedit durch ein klassisches Menü, eine Werkzeugleiste und im Hauptfenster integriertem „Suchen/Ersetzen“. Dennoch ist Xed wie Pluma (Mate-Desktop) ein Gedit-Fork mit praktisch identischer Funktionalität.

Die Bedienung von Xed erscheint uns etwas übersichtlicher, aber triftige inhaltliche Gründe, Gedit gegen Xed (ppa:embrosyn/xapps) auszutauschen, gibt es nicht. Im Gegenteil: Xed kann bislang nicht die Menge an Plugins anbieten wie sein Vorbild Gedit. Einzige Ausnahme ist das Xed-exklusive Plugin „Floskelliste“, das sich in die linke Seitenleiste (F9) integriert und vor allem für HTML-Coding alle wichtigen Tags anbietet, die dann einfach per Doppelklick in das Textfenster übernommen werden.

Plugin „Wortvervollständigung“: Das Autocomplete-Tool für Gedit und Xed indexiert den Text und macht nach Eingabe weniger Buchstaben Vorschläge.

Nano: Standardeditor im Terminal

Nano ist für das Terminal vorinstallierter Standard unter Ubuntu, Mint, Debian und Co. Das unterschätzte Tool wird im SSH-Terminal und in virtuellen Konsolen meistens nur als Notnagel akzeptiert. Dabei erlebt der 20 Jahre alte Editor eine erstaunlich dynamische Entwicklung. Aktuelle Versionen 2.9 bis 3.2 bieten bei Navigation und Markieren fast den Standard grafischer Editoren und zudem erweiterte Anpassungsmöglichkeiten über die Konfigurationsdatei „nanorc“. Die noch in vielen Distributionen vertretenen, älteren Nano-Versionen bis 2.5 benutzen hingegen eigenwillige Hotkeys, die man sich entweder angewöhnen muss oder umbelegen kann.

Neuere Nano-Versionen folgen dem Standard anderer Editoren, mit Umschalt-Taste und Cursortasten Text zu markieren. Bei älteren Nano-Versionen ist der Hotkey Alt-A erforderlich, um eine Markierung ab der Cursorposition zu starten. Danach erweitern Sie die Markierung durch Cursortasten. Erneutes Alt-A beendet die Markierungsaktion. Der Hotkey Alt-A funktioniert auch noch im neuesten Nano, ist dort aber nicht mehr unbedingt notwendig. Markierte Texte lassen sich mit Alt-6 kopieren, mit Strg-K ausschneiden, Strg-U ist der Hotkey, um Textinhalte wieder aus der Zwischenablage zu holen. Nützlich: Strg-K löscht eine komplette Zeile ungeachtet der Cursorposition.

Die Navigation im Text erfolgt durch Cursor- und Bild-Tasten, sowie Pos1 und Ende. Neuere Versionen verwenden außerdem Strg-Pos1/Ende, um zum Beginn oder Ende der ganzen Datei zu springen.

Strg-U ist der Hotkey, um die letzte Aktion rückgängig zu machen. Allerdings ist die Undo-Funktion nicht standardmäßig aktiv. Sie können Sie in der Nano-Konfigurationsdatei mit der Direktive

set undo

scharf schalten.

Die Konfigurationsdatei: Das Anpassen der globalen Konfigurationsdatei /etc/nanorc (mit Root-Recht) oder besser einer benutzerspezifischen Kopie unter ~/.nanorc lohnt sich definitiv. Hier finden Sie zahlreiche auskommentierte Optionen wie etwa die Anweisungen

set backup

und

set backupdir [Pfad]

Wird „set backup“ aktiviert (führendes „#“ löschen), erstellt Nano immer eine Sicherungskopie vom letzten Zustand im Pfad der Originaldatei. Mit aktiviertem „backupdir“ entstehen im angegebenen Zielpfad sogar durchnummerierte Versionssicherungen aller Bearbeitungsschritte. Das angegebene Backup-Verzeichnis muss natürlich existieren. Nützlich sind ferner die Optionen

set linenumbers

zur Anzeige der Zeilennummer, „set positionlog“, das bei neuerlicher Bearbeitung einer Datei sofort zur letzten Bearbeitungsstelle springt, sowie „set mouse“, das Positionieren und Markieren mit der Maus erlaubt.

Nano unterstützt außerdem Farbanpassungen. Beachten Sie, dass die Nano-Farbeinstellungen zu den globalen Terminalfarben passen müssen. Späteres Umstellen der Terminalfarben kann dazu führen, dass die Nano-Farben schlecht lesbar werden. Nano kann Elemente wie die Titelzeile („titlecolor“), die Statuszeile („statuscolor“), markierten Text („selectedcolor“ – nur in neuesten Versionen) und die Infozeilen unten einfärben („keycolor“ und „functioncolor“). Als Farben gibt es die üblichen acht Ansi-Farben (Black, White, Red, Green, Blue, Yellow, Cyan, Magenta). Die Abbildung zeigt ein Beispiel für geänderte Farbeinstellungen und die zugehörigen „set“-Befehle.

Eine der interessantesten Anpassungen sind die Hotkeys, die bei Nano zum Teil sehr gewöhnungsbedürftig ausfallen. Die Hotkey-Belegung ist ebenfalls global in der Datei /etc/nanorc oder User-spezifisch in ~/.nanorc möglich. Die Liste aller Nano-Funktionen, die Sie auf andere Hotkeys legen können, ist unter https://www.nano-editor.org/dist/v3/nano.html#Rebinding-Keys dokumentiert. Die Hotkeys sind in der Konfigurationsdatei in der Form „^“ (Strg) und „M-“ (Alt) zu hinterlegen. Um also etwa das typische Strg-C für das Kopieren von Text zu definieren, wäre folgende Zeile in der Datei nanorc zu vergeben:

bind ^C copytext main

Die Abbildung der Konfigurationsdatei auf dieser Seite zeigt eine Reihe von geänderten Hotkeys, welche die Bedienung des Editors durch standardisierte Tastenkombinationen vereinfacht. Neben den Standards Strg-C|V|X zur Textbearbeitung reagiert Nano danach auch auf Strg-F (Suche) und Strg-Q (Beenden). Beachten Sie, dass Strg-C nach dem obigen Bind-Befehl in allen Untermenüs – etwa im Kontext „Speichern“ – weiterhin als Abbruch-Hotkey arbeitet. Nur im „Main“-Bereich, also im Textfenster, erhält Strg-C seine neue Rolle.

Nano-Farben und Hotkeys: In der Konfigurationsdatei (nanorc) belegen Sie die Tastenkombinationen des Editors um. Farbanpassungen sind Geschmackssache.

Startparameter: Alle Einstellungen der Konfigurationsdatei nanorc lassen sich auch über Parameter beim Nano-Start anfordern. Ausgenommen sind lediglich die Farbdefinitionen und die Hotkey-Umbelegung. Im Allgemeinen ist es sinnvoller, die Nano-Optionen dauerhaft in der Konfiguration abzulegen, jedoch gibt es Ausnahmen: Die oben genannten Direktiven „set backup“ und „set backupdir [Pfad]“ sind nicht für jede Dateibearbeitung nötig und daher besser ad hoc anzufordern. Der Befehl

nano -B [Datei]

würde eine Sicherungskopie der editierten Datei anlegen, und

nano -C ~/nanoback [Datei]

legt bei jedem Speichern eine Versionssicherung an.

Eine ebenfalls nützliche Vorgabe, die in der Konfigurationsdatei

set const

lautet, kann beim Start mit

nano -c [Datei]

geladen werden. Dann bleibt unten die Statuszeile permanent aktiv, welche unter anderem die aktuelle Zeilenziffer anzeigt. Dies ist vor allem bei älteren Versionen nützlich, die eine „set linenumbers“ oder den Startbefehl „nano -l“ noch nicht beherrschen. Die komplette Palette der Nano-Startparameter zeigt die Dokumentation unter https://www.nano-editor.org/docs.php.

Mcedit: Editor des Midnight Commander

Auf jedem Linux-System mit installiertem Midnight Commander gibt es auch Mcedit. Auch dieser Editor wird unterschätzt und ist zunächst nicht einmal im Midnight Commander selbst als Standard vorgesehen. Dies lässt sich unter „Optionen -> Konfiguration“ mit der Einstellung „Internen Editor benutzen“ ändern. Danach ist für das Bearbeiten von Dateien (F4) Mcedit zuständig.

Mcedit ist aber ein unabhängiger Terminaleditor, den Sie auch ohne sein Hauptprogramm verwenden können:

mcedit [datei]

Mcedit zeigt die wichtigsten Bearbeitungs-Hotkeys unten an, nach F9 oder nach Klick auf die obere Infozeile erscheint ein opulentes Menü. Wer dieses Menü immer im Blick haben will, kann das bis zum Schließen des Editors über „Fenster -> Vollbild umschalten“ erreichen, was zugleich den Fenstermodus des Editors aktiviert. Wie das Menü „Fenster“ durch weitere Optionen anzeigt, beherrscht Mcedit nämlich den Umgang mit mehreren Dateien. Das kann zwar auch Nano, aber nicht mit der eleganten Fensterteilung wie Mcedit, die fast grafischen Komfort erreicht: Wenn Sie mehrere Dateien über „Datei -> Datei öffnen“ oder direkt per mcedit-Aufruf geladen haben, dann lassen sich die Dateien (nach „Fenster -> Vollbild umschalten“) skalieren und verschieben. Am Desktop funktionieren diese Aktionen exakt und komfortabel mit der Maus (Skalieren mit der Ecke rechts unten, Verschieben mit dem oberen Fensterrahmen); in der virtuellen Konsole erledigen die Cursortasten nach „Fenster -> Größe ändern“ bzw. „Fenster -> Verschieben“ das Arrangement.

Editor des Midnight Commander: Die wenigsten Nutzer wissen, dass Mcedit ein erstaunlich komfortables Fensterarrangement für mehrere geladene Dateien beherrscht.

Mcedit bietet farbige Syntaxhervorhebung unter „Optionen -> Allgemein“ und die Auswahl der Scriptsprache unter „Optionen -> Syntaxhervorhebung“. Auch in diesem Punkt ist Mcedit ausgereifter als Nano. Eine Sortierfunktion finden Sie unter „Format“, eine Codepage-Auswahl unter „Befehl -> Kodierung“. Auch das Suchen (F7) und Ersetzen (F4) von Text ist optionsreicher als unter Nano. Nützlich: Strg-Y löscht eine komplette Zeile ungeachtet der Cursorposition.

Einige fundamentale Textfunktionen sind gewöhnungsbedürftig: So ist der Text beim Verschieben erst mit der Maus (oder mit Umschalt-Taste und Cursor) zu markieren, anschließend mit Cursor oder Bild-oben/unten an die gewünschte Stelle zu navigieren und dann mit F6 das Verschieben auszulösen. Hier lohnen sich Anpassungen der mc.keymap (siehe unten). Der alte Modus beim Markieren, mit F3 zunächst die Markierfunktion aufzurufen, ist nicht mehr notwendig, da das standardisierte Markieren mit Umschalt-Taste funktioniert. Der F3-Modus besteht aber fort, und ist für die Windows-SSH-Clients Putty/Kitty weiterhin unentbehrlich.

Anpassung der Hotkeys: Trotz des alternativen Menüangebots von Mcedit machen angepasste Tastenkombination die Bedienung einfacher, wenn Sie sich standardisierte Hotkeys einrichten. Das sollte aber in der umfangreichen Keymap-Datei des Midnight Commander dosiert und mit Rückversicherung erfolgen. Verwenden Sie besser nicht die globale Datei „/etc/mc/mc.keymap“, sondern kopieren Sie diese nach „~/.config/mc/mc.keymap“, also in Ihr Home-Verzeichnis. So bleibt das Original unter „/etc“ als Rückversicherung erhalten.

Alle Optionen für Mcedit befinden sich im Abschnitt „[editor]“. Ein nützlicher Eingriff besteht etwa darin, die altertümlichen Hotkeys „ctrl-insert“ und „shift-insert“ für „Store“ (Copy) und „Paste“ durch geläufigeres „ctrl-c“ und „ctrl-v“ ersetzen (Strg-C, Strg-V):

[editor]

Store = ctrl-c
Paste = ctrl-v

Natürlich kann man sich auch die Textsuche, Folgesuche und Ersetzen mit

Search = ctrl-f

SearchContinue = ctrl-n

Replace = ctrl-r

auf einprägsamere Hotkeys legen. Änderungen an der mc.keymap werden immer erst nach dem nächsten Start des Programms gültig. Das Menü des Editors lernt dabei flexibel mit: Es zeigt die von Ihnen definierten Hotkeys.

Alleskönner VLC

Der Media Player VLC darf auf keinem Linux- oder Windows-Rechner fehlen, weil er praktisch alle Video- und Musik-Formate abspielt. Viele Möglichkeiten vergräbt das Multitalent hinter Schaltern und einer anspruchsvollen Konfigurationsoberfläche,

Der VLC – kurz für „Videolan Client“ – kann eigentlich alles rund um Film und Sound und macht diverse Player-Alternativen und Multimedia-Tools weitgehend überflüssig. Optischer Schick und benutzerfreundliche Konfiguration sind freilich nicht seine Stärken. So bleibt meist viel Potential ungenutzt oder es kommen neben dem VLC weitere ergänzende Player und Helfer zum Einsatz. Das ist nicht falsch und manchmal komfortabler, aber technisch notwendig wäre es nicht, wie dieser Ratgeber zeigen soll.

Projektseite und Download: www.videolan.org

Dokumentation: http://wiki.videolan.org mit Infos zu Installation, Menü-Angebot, Konfiguration, Startparameter, Netzwerk-Streaming, Stream-Ausgabe und vieles mehr. Nutzen Sie in der linken Spalte den Eintrag „Documentation“.

Weitere Tipps & Infos: http://wiki.ubuntuusers.de/vlc

VLC-Installation unter Linux

Alle Linux-Distributionen halten den VLC Media Player in ihren Standardpaketquellen bereit. Die Installation ist entsprechend einfach und problemlos. Installieren Sie das Paket „vlc“, optional zusätzlich „browser-plugin-vlc“ (Browser-Integration):

sudo apt­ install vlc browser-plugin-vlc

Nicht immer ist schon die neueste Version verfügbar. So liegt etwa unter Ubuntu 16.04 oder Linux Mint 18 noch die Version 2.2.4 vor. Die funktionalen Unterschiede sind aber meist nicht gravierend. Notwendige Sicherheitsupdates erhalten auch die älteren Versionen. Wer trotzdem stets den aktuellsten VLC nutzen will, kann auf das PPA des Hersteller Videolan ausweichen:

sudo add-apt-repository ppa:videolan/stable-daily
sudo apt update
sudo apt install vlc

Unentbehrlich zur Wiedergabe von DVDs ist ferner die Bibliothek libdvd, die Sie mit folgenden Befehlen

sudo apt install libdvd-pkg
sudo dpkg-reconfigure libdvd-pkg

nachrüsten und integrieren.

Basisfunktionen des Players

Der VLC spielt nicht nur Audio- oder Videodateien fast jeden Dateiformats (Audio u. a. APE, FLAC, MID, MP3, OGG, WMA; Video u. a. AVI, DIVX, FLV, MKV, MP4, MPEG, VOB, WMV). Er beherrscht außerdem Musik-CDs, Film-DVDs, Blu-rays und Internet-Streams, gibt das Medienangebot von UPnP/DLNA-Servern im Heimnetz wieder, dient – in allerdings engen Grenzen – selbst als solcher UPnP-Streaming-Server und greift auf DVB-T-Hardware zu. Auch Aufnehmen und Konvertieren in andere Formate ist möglich.

Bedienungsgrundlagen: Der VLC besteht aus zwei Hauptfenstern – das Wiedergabefenster und die Wiedergabeliste. Im Allgemeinen ist es einfacher und übersichtlicher, beide Fenster zu kombinieren, was über „Ansicht -> Angedockte Wiedergabeliste“ auch die Standardvorgabe ist. In der „Wiedergabeliste“ (Strg-L) zeigt der Player zahlreiche Medienquellen. Unter der aktuellen Wiedergabeliste und der optional angelegten Medienbibliothek gibt es zunächst die lokalen Standardordner wie „Meine Videos“, die lediglich auf die entsprechenden Standardverzeichnisse unter /home/[user] verweisen. Unter „Standardgeräte“ gibt es den Zugriff auf „Platten“, also auf CD- und DVD-Laufwerke, ferner auf „MTP-Geräte“, also mobile MP3-Player, sofern angeschlossen. Eventuelle Medien-Server im lokalen Netz (UPnP/DLNA und iTunes) zeigt der VLC unter „Lokales Netzwerk“. Darunter folgt noch eine Reihe von namhaften Audio-Streaming-Diensten unter „Internet“, besonders ergiebig Icast und Jamendo.

Dateien und Medien öffnen: Sowohl das Wiedergabefenster als auch die Wiedergabe beherrschen Drag & Drop mit der Maus. Das ist der einfachste Weg, um schnell aus dem Dateimanager eine Mediendatei abzuspielen. Dabei kann der VLC auch unvollständige Videos und Audiopakete etwa schon während eines Downloads anspielen. Noch besser: Der VLC beherrscht auch ZIP- und RAR-Archive sowie das Mounten von ISO-Images: Diese Formate sind also ohne Bearbeitung sofort zu benutzen.

Das Menü „Medien“ fürs Öffnen von Dateien enthält insgesamt sechs Befehle zum Starten von Medien. Der erste Eintrag „Datei öffnen“ ist klassisch und erlaubt nach Navigation zur Quelldatei den Start derselben. Es ist hier aber auch mit den typischen Tasten Strg und Umschalt eine Mehrfachauswahl von Dateien möglich. Der Extra-Eintrag „Mehrere Dateien öffnen“ ist daher nur dann notwendig, wenn sich die Auswahl über unterschiedliche Verzeichnisse erstrecken soll; außerdem gibt es hier die zusätzliche Option, die ausgewählten Medien durch eine synchrone Mediendatei zu begleiten – etwa private Videos durch eine passende Audiodatei.

„Ordner öffnen“ kann praktisch sein, um alle Audiodateien eines Verzeichnisses einschließlich aller Unterordner (Achtung!) in die aktuelle Wiedergabeliste zu übernehmen. Auch bei typischen DVD-Rips mit mehreren VOB-Dateien ist diese Methode eleganter als die Dateien mit Filmunterbrechung einzeln zu starten.

„Medium öffnen“ benötigen Sie, um eine eingelegte DVD, Blu-ray-Disc oder Audio-CD abzuspielen. Der Dialog zeigt einige elaborierte Optionen zum Einsprungpunkt und zur Startzeit, die Sie im Normalfall ignorieren können.

„Netzwerkstream öffnen“ ist der Startdialog für jegliches lokales oder Internet-Streaming (Mediatheken, Youtube). Zum lokalen Streamen lesen Sie an späterer Stelle mehr. Für das Streamen eines Web-Videos oder Web-Radiosenders genügt es, die URL zu wissen und in diesem Dialog einzutragen – etwa http://br-brklassik-live.cast.addradio.de/br/brklassik/live/mp3/128/stream.mp3. Der Streaming-Dienst wird dann wie jedes andere Medium in die Wiedergabeliste eingetragen (in diesem Beispiel als „BR-Klassik“) und beginnt sofort mit der Wiedergabe. Zuverlässige, aktuelle und umfassende Tabellen mit direkten Stream-URLs sind rar, recht brauchbar sind www.stream-urls.de/webradio (Radio), https://wiki.ubuntuusers.de/Internet-TV/Stationen (TV) und https://wiki.ubuntuusers.de/Internetradio/Stationen (Radio).

VLC „öffnet“ alles: Das Menü „Medien“ zeigt sechs Optionen zum Starten von Film und Musik. Hier wurde „Netzwerkstream“ gewählt und die URL einer Mediathek eingegeben.

Mediensammlung im VLC anlegen

Zur bequemen Benutzung der Medien vom lokalen Rechner oder von Netzwerkfreigaben ist das manuelle Öffnen über das „Medien“-Menü nicht ausreichend. Dafür gibt es die Medienbibliothek. Um eine solche Mediensammlung anzulegen, klicken Sie in der Wiedergabeliste („Ansicht -> Wiedergabeliste“) auf den Eintrag „Medienbibliothek“ und dann im Listenfenster nach Rechtsklick auf „Verzeichnis hinzufügen“. Sie erhalten dabei keine Rückmeldung, wann der Player die Dateien einschließlich Medien-Tags eingelesen hat. Je nach Menge der Medien ist daher Geduld erforderlich. Die integrierten Stücke erscheinen dann in einer einfachen Tabelle, die sich über das Suchfeld rechts oben filtern lässt.

Die Darstellung kann über das kleine Symbol neben dem Suchfeld oder nach Rechtsklick und „Ansicht der Wiedergabeliste“ umstellen und zeigt mit der Option „Symbole“ die Alben- oder Film-Cover. Auch die Größe können Sie mit Strg-Mausrad verändern. Dennoch kann die Medien-Verwaltung mit den schickeren und strukturierten Bibliotheken anderer Player nicht mithalten. Für Puristen ist sie aber völlig ausreichend oder gar willkommen. Überflüssige Medien lassen sich mit „Ausgewählte entfernen“ wieder aus der Bibliothek löschen. Die Dateien selbst bleiben dabei erhalten.

Streams und Mediatheken in der Medienbibliothek: Wenn Sie die Streams in der Wiedergabeliste sammeln und als Datei speichern, kann die Datei wiederum in die Bibliothek integriert werden.

Streaming-Dienste in der Medienbibliothek

Die Medienbibliothek kann auch Streaming-Angebote aus dem Internet aufnehmen. Dazu ist ein kleiner Umweg erforderlich: Zunächst nehmen Sie, wie oben beschrieben, eine Reihe von Radio- oder TV-Angeboten über „Medien -> Netzwerkstream öffnen“ in die temporäre Wiedergabeliste auf. Diese Wiedergabeliste, die inhaltlich möglichst homogen sein sollte, speichern Sie dann über „Medien -> Wiedergabeliste in Datei speichern“ als xspf-Datei. Wer auf Ordnung Wert legt, kann diese XML-Datei zunächst in einen Editor laden und Standardtitel „Wiedergabeliste“, der in der dritten Zeile als

<title>Wiedergabeliste</title>

erscheint, nach Wunsch ändern – etwa auf „Rock-Radio“ oder was immer passend. Danach lässt sich diese URL-Sammlung nach Rechtsklick im Fenster der Medienbibliothek und „Datei hinzufügen“ wie ein Medium in die Bibliothek integrieren. Die xspf-Datei muss dauerhaft erhalten bleiben, wenn die VLC-Bibliothek den geänderten Titel anzeigen soll. Mit gepflegten URL-Sammlungen in der Bibliothek ist der VLC komfortabler als Lesezeichen im Browser oder spezialisierte Tools wie etwa Radiosure.

Der VLC als Bildviewer

Als Viewer für Fotos und Bilder ist der VLC nur zweite Wahl. Natürlich kann er Bildformate anzeigen, und wenn Sie mit der Maus eine Menge markierter Bilder vom Dateimanager in das Wiedergabefenster oder in die Wiedergabeliste ziehen, wird er sie sogar sofort als Slideshow im 10-Sekunden-Takt wiedergeben. Dabei ist aber weder das Intervall noch eine feste Fenstergröße konfigurierbar. Eine für diesen Einsatzzweck unentbehrliche, aber auch für Videos im Fenstermodus nützliche Option ist das Kästchen „Interface an Videogröße anpassen“ unter „Werkzeuge -> Einstellungen -> Interface“. Diese Option sollte deaktiviert werden, damit das Wiedergabefenster ungeachtet der Bild- (oder Video-) Größe konstant bleibt. Mehr als ein Hilfsviewer, wenn nichts Besseres an Bord ist, ist der VLC für Bilder dennoch nicht.

Der VLC und UPnP/DLNA-Server

Der VLC Player beherrscht in der Wiedergabeliste via „Universal Plug’n’Play“ den Zugriff auf lokale Server UPnP/DLNA-Server (NAS, Kodi, Plex, Minidlna). Einen korrekt im Netzwerk eingebundenen UPnP-Server zeigt der Player dort an und mit einem Doppelklick auf einen Eintrag navigieren Sie in der Struktur des Servers. Bei großen Mediensammlungen des UPnP-Servers kann es irritierend sein, dass der VLC die Wiedergabe erst anbietet, wenn er sämtliche Medien via Netzwerk eingelesen hat. Dies kann eventuell so lange dauern, dass der Nutzer an der Funktionalität zweifelt. Bei anderen UPnP-tauglichen Playern sind die ersten Audio- oder Video-Dateien sofort sichtbar und benutzbar, während der Player im Hintergrund weiter nachlädt. Der VLC zeigt und spielt er nach komplett abgeschlossenem Vorgang.

UPnP im VLC: Der Videolan-Player zeigt Medienserver unter „Lokales Netzwerk“. Wenn es keinen UPnP-Server gibt, fehlt der Eintrag „Universal Plug’n’Play“.

Der VLC als Streaming-Server

Einen schicken UPnP/DLNA-Server erhalten Sie mit dem VLC nicht, jedoch ist er durchaus in der Lage, ad hoc einige Film über eine Netzwerkadresse für Abspielclients bereitzustellen. Die Vorgehensweise am Rechner („Server“), der den Film bereithält:

1. Gehen Sie zunächst auf „Medien -> Stream“ (relativ am Ende des Menüs). Unter „Dateiauswahl“ navigieren Sie mit „Hinzufügen“ zur gewünschten Mediendatei. Danach klicken Sie im selben Dialog unten auf „Stream“. Im folgenden Dialog des Assistenten geht es mit „Nächstes“ einfach weiter.

2. Im Fenster „Ziel einstellen“ verwenden Sie am besten „RTP / MPEG Transport Stream“ und klicken nach dieser Auswahl rechts auf die Schaltfläche „Hinzufügen“. Geben Sie als Adresse

239.0.0.1

ein, den Standardport 5004 können Sie unverändert übernehmen. Beachten Sie, dass diese Multicast-Adresse unabhängig von Ihrem lokalen Adressbereich zu benutzen ist. Ihr Adressraum und die IP-Adresse des Server-PCs spielt hier keine Rolle.

3. Nach Klick auf „Nächstes“ kommt die Transkodierungsauswahl, die Sie auf Standard belassen können und erneut „Nächstes“ klicken. Im letzten Fenster aktivieren Sie „Alle Elementarstreams streamen“ und schließen die Aktion mit der Schaltfläche „Stream“ ab.

Beim Client – idealerweise erneut ein VLC Player – ist der Weg einfach: Gehen Sie auf „Medien -> Netzwerkstream“. Als Netzwerkadresse geben Sie hier die vorher eingerichtete Multicast-Adresse samt Port

rtp://239.255.0.1:5004

ein und klicken dann im selben Dialog unten auf die Schaltfläche „Wiedergabe“.

Hinweis: Die Methode funktioniert analog auch ohne Multicast-Adresse, sofern Sie einen Stream gezielt nur an einen Rechner schicken wollen. Dann geben Sie am Server die LAN-IP des Zielclients ein – etwa 192.178.1.10 – und greifen dann am Client den Netzwerkstream mit der Adresse „rtp://192.178.1.10“ ab. Die Multicast-Methode ist jedoch einfacher, weil Sie sich dabei um die lokalen IP-Adressen nicht kümmern müssen.

VLC als Streaming-Server: Das funktioniert technisch einwandfrei über eine Multicast-IP oder auch direkt an die Zielrechner-IP. UPnP-Komfort ist hier nicht das Ziel.

VLC-Fernbedienung mit HTTP-Server

Der VLC hat einen einfachen, eingebauten HTTP-Server, der die Steuerung des Players im Browser eines beliebigen Netzwerk-Clients ermöglicht (Tablet, Smartphone, PC). Remote-Steuerung bedeutet, dass der Rechner mit dem VLC weiterhin das Abspielgerät bleibt und der Client nur die Medienauswahl und Lautstärke erledigt. Der HTTP-Server bietet weder eine sonderlich schicke Oberfläche noch nennenswerten Bedienkomfort, genügt aber zur fundamentalen Fernsteuerung. Dies insbesondere dann, wenn im VLC eine Medienbibliothek eingerichtet ist und die Medien nicht im Dateisystem gesucht werden müssen.

Theoretisch sollte der Web-Server über „Einstellungen -> Alle -> Interface -> Hauptinterfaces“ oder auch über „Ansicht -> Interface hinzufügen -> Web“ neben der normalen Oberfläche ladbar sein. Das ist uns nicht gelungen, da der Server ein Passwort verlangt, das an dieser Stelle in den Einstellungen nicht zu vergeben ist. Hingegen funktioniert der Start des HTTP-Servers unter allen Betriebssystemen im Terminal mit dieser Kommandozeile:

vlc --intf http --http-password nix

Danach ist der VLC remote über jeden Browser mit der Adresse

[IP-Adresse]:8080

erreichbar. Bei der Authentifizierungsabfrage lassen das Feld „Benutzernamen“ leer und geben nur das Passwort ein. Statt des Stellvertreters „[IP-Adresse] verwenden Sie die tatsächliche lokale IP des Rechners, auf dem der VLC läuft – also beispielsweise „192.168.1.25:8080“.

Soll der VLC neben dem HTTP-Server auch noch seine normale Oberfläche anzeigen, ist folgender Befehl einschlägig:

vlc --intf qt --extraintf http --http-password nix

Das Interface „qt“ ist die Standardoberfläche (auch unter Windows), und über den Parameter „–extraintf …“ wird zudem der Web-Server gestartet.

((401_4_VLC-Http-Client.png))

HTTP-Server: Diese VLC-Fernbedienung via Browser leistet fundamentalen Remote-Zugriff, ist aber insgesamt etwas fummelig.

Der VLC als Konvertierer

Für den VLC sind exotische Formate kein Problem, für Smart-TV oder Tablets hingegen schon. Ungeachtet spezialisierter Tools wie Handbrake können Sie den VLC auch zum Konvertieren nutzen. Über „Medien -> Konvertieren/Speichern“ startet der zugehörige Assistent. Im Folgedialog bestimmen Sie über „Hinzufügen“ die Mediendatei und klicken dann unten auf „Konvertieren/Speichern“. Unter „Profil“ gibt es eine Dropdown-Liste mit populären Audio- und Videoformaten, wobei auch Android-Geräte, iPod und Youtube speziell berücksichtigt sind. Nachdem Sie eine Zieldatei angegeben haben, kann der Vorgang mit „Start“ beginnen. Die Konvertierung verläuft je nach Rechner in mehrfacher Geschwindigkeit, wenn Sie auf die Option „Ausgabe anzeigen“ verzichten.

Das Konvertieren funktioniert selbstverständlich auch bei Audiodateien oder Audio-CDs (wobei Sie hier statt einer Quelldatei das Medium angeben – meist „/dev/sr0“). Bei einer typischen Audio-Konvertierung nach „Audio – MP3“ sollten Sie dieses Ausgabe-„Profil“ unbedingt bearbeiten, da standardmäßig nur 128 KBit/s vorgesehen sind. Profiländerung erledigen Sie neben der Dropdown-Liste entweder punktuell über das Schraubenschlüsselsymbol, oder Sie legen mit der Schaltfläche „Neues Profil erstellen“ (ganz rechts) dauerhaft ein passendes Profil etwa mit 192 KBit/s Bitrate und 48000 Hz Sampling Rate an.

Generell zeigt sich der VLC beim Konvertieren technisch makellos, aber ohne den Komfort von Spezialisten: So bleibt die Namensvergabe beim Audio-Rippen eine manuelle Mühe.

Konvertieren mit dem VLC: Technisch arbeitet der VLC einwandfrei, fordert aber bei Musik (mehr als bei Videomaterial) einige Klicks und eventuelle Nachbearbeitung.

Optimieren der Videoausgabe

Das Untermenü „Werkzeuge -> Effekte und Filter“ ist überaus umfangreich und erlaubt fundamentale und detaillierte Darstellungsoptimierung. Wir nennen hier nur drei fundamentale Eingriffe:

Bild und Ton synchronisieren: Über „Werkzeuge -> Effekte und Filter -> Synchronisierung“ gleichen Sie aus, wenn Bild und Ton asynchron laufen – also der Ton vorauseilt oder hinterherhinkt. Den Wert müssen Sie dort in Millisekunden eingeben. Beispiel: Um den Ton um eine Sekunde nach vorne zu versetzen, wäre der Wert „-1000“ einschlägig, während „1000“ den Ton um eine Sekunde verzögert.

Drehen von Videos: Bei Videos mit dem Smartphone sind um 90 Grad gedrehte Filme recht häufig. Das kann der VLC mühelos korrigieren: Das einschlägige Werkzeug finden Sie unter „Werkzeuge -> Effekte und Filter“ auf der Registerkarte „Videoeffekte“, hier wiederum auf der Unterregisterkarte „Geometrie“. Zunächst müssen Sie die Option „Transformieren“ aktivieren. Danach lässt sich das Video per Vorgabeoptionen in der Dropdown-Liste um 90, 180 oder 270 Grad drehen, im Prinzip aber auch filigran in Gradstufen (Option „Drehen“).

Helligkeit und Farben: Ebenfalls unter „Werkzeuge -> Effekte und Filter -> Videoeffekte“ ist eine zu dunkle oder zu farblose Filmwiedergabe deutlich zu korrigieren. Das Register „Genauigkeit“ bietet unter anderem Schieberegler zu Helligkeit, Kontrast, Sättigung und Gammawert. Da ein laufender Film das Resultat der Einstellung sofort anzeigt, ist die Wiedergabe in wenigen Sekunden optimiert.

Helligkeit, Farben und Sättigung: Was sich am Monitor oder TV nicht verbessern lässt, kann der VLC über diverse Filter signifikant verbessern.
Jetzt steht der Hund auf den Beinen: Das Drehen von falsch aufgenommenen Videos ist für den VLC kein Problem (siehe „Werkzeuge -> Effekte -> Videoeffekte -> Geometrie“).

Optimale Größe bei Vollbildwiedergabe

Je nach Filmmaterial können bei der Wiedergabe auf Smart-TVs oder PC-Monitoren platzverschwendende schwarze Ränder horizontal wie vertikal erscheinen. Über den Menüpunkt „Video“ oder auch im Vollbild nach Rechtsklick und dem Kontextmenü „Video“ können Sie den Monitor eventuell besser ausnutzen. Die Optionen „Seitenverhältnis“ und „Beschneiden“ erlauben Dehnungen des Bildes und das Abschneiden von Randbereichen. Hier hilft nur empirisches Ausprobieren, da sowohl zu starke Verzerrung als auch das Abschneiden von zu viel Filmmaterial kontraproduktiv sind. Ein ganz genaues Beschneidewerkzeug gibt es außerdem unter „Werkzeuge -> Effekte und Filter -> Videoeffekte -> Beschneiden“.

Normalisierung der Lautstärke

Mediendateien haben oft sehr unterschiedliche Lautstärkepegel. Dies erfordert dann mitunter hektische Korrektur an den Lautsprecherboxen oder im Sound-Applet. Der VLC Player hat zwar keinen Einfluss auf die Lautsprecher-Stellung und den Lautstärkemixer, jedoch kann er den Startpegel reduzieren und die Lautstärke der Mediendateien angleichen (normalisieren). Die Optionen finden Sie unter Werkzeuge -> Einstellungen -> Audio“. Stellen Sie den Schieberegler neben „Audio-Start-Pegel immer zurücksetzen“ auf ein moderates Maß. Ferner aktivieren Sie im selben Dialog die Option „Normalisiere die Lautstärke“.

TV-Aufnahmen und Screenshots

Der VLC kann über „Wiedergabe -> Aufnehmen“ einen aktuell laufenden Film aufnehmen, also auf die Festplatte schreiben. Wer dies häufiger benötigt, kann unter „Ansicht“ die „Erweiterte Steuerung“ aktivieren. Dann erscheinen im Wiedergabefenster weitere Bedienelemente, unter anderem der Aufnahme-Knopf. Alle Aufnahmen werden unter Angabe der Zeit, des Sender und Namen der Sendung unter ~/Downloads/ als .ts-Datei abgelegt. Über „Werkzeuge -> Einstellungen -> Eingang / Codecs“ können Sie neben „Ausnahme-Verzeichnis oder Dateiname“ auch einen eigenen Pfad festlegen.

Über „Video -> Schnappschuss machen“ legen Sie einen Screenshot der aktuellen Filmszene ab. Zielverzeichnis und Namen für diese Bilder können Sie unter Werkzeuge -> Einstellungen -> Video“ im Bereich „Videoschnappschüsse“ selbst festlegen.

Desktop-Videos mit VLC

Der VLC unterstützt Sie auch, wenn Sie Ihre Desktop-Aktivitäten filmen möchten, um ein Videotutorial herzustellen. Für diese Aufgabe gehen Sie auf „Medien -> Aufnahmegerät öffnen“. Wählen Sie als „Aufnahmemodus“ den Eintrag „Desktop“. Unter „Optionen“ geben Sie die gewünschte Anzahl an Bildern pro Sekunde an. Für einen flüssig wirkenden Screencast ist die Voreinstellung „1,00 f/s“ zu wenig, wenigstens zwei sollten Sie eintragen. Wenn Sie vor dem Start noch etwas vorbereiten müssen, klicken Sie auf „Mehr Optionen anzeigen“ und geben eine Startzeit an. Um mit der Aufnahme zu beginnen, klicken Sie unten auf die Schaltfläche mit dem kleinen Pfeil rechts neben „Wiedergabe“ und auf „Konvertieren“. Im folgenden Dialogfenster legen Sie die „Zieldatei“ und das Format des Videos fest und beginnen die Aufnahme mit „Start“.

Lesezeichen im Film setzen

Im VLC gibt es eine Möglichkeit, Lesezeichen zu setzen, um einen Film später genau an dieser Stelle fortzusetzen. Lesezeichen für die aktuelle Stelle verwaltet der VLC über den Menüpunkt „Wiedergabe -> Benutzerdefinierte Lesezeichen“. Ein Klick auf „Erstellen“ legt einen neuen Zeitpunkt auf der Merkliste an, der als Sprungmarke funktioniert. Damit ist die Marke aber noch nicht permanent gespeichert. Dazu muss erst noch eine Playliste als Datei gespeichert werden, was Sie unter „Medien -> Wiedergabeliste in Datei speichern“ erledigen. Ein Klick auf die resultierende Datei im Dateimanager öffnet dann den Film wieder im VLC und unter „Benutzerdefinierte Lesezeichen“ liegt die Sprungmarke zur gewünschten Stelle.

Lesezeichen setzen: Zum Anhalten und Fortsetzen an einer bestimmten Filmstelle hat der VLC eine Verwaltung von Sprungmarken, die in einer Playlist gespeichert werden muss.

Mit Reset-Kommando zum Standard

Dieser Artikel hat alle Skins und LUA-Erweiterungen für den VLC ausgeklammert, da sie unterm Strich die Bedienung des VLC nicht signifikant verbessern und die Stabilität verringern. Es bleibt gegen unsere Empfehlung aber jedem Nutzer vorbehalten, sich hier umzusehen. Unter „Werkzeuge -> Plugins und Erweiterungen“ lässt sich der Plugin-Manager des VLC öffnen. Die im Web verfügbaren Erweiterungen zeigt das Tool nach Klick auf „Zusätzl. Erweiterungen im Netz finden“.

Weil das Spielen mit experimentellen Skins aber schon mal dazu führt, dass der Player nicht mehr bedienbar ist und auch seine Einstellungen nicht mehr anbietet, um dort das Problem rückgängig zu machen, ist folgender Startparameter wichtig:

vlc --reset-config

Das setzt den Player auf seine Standardoberfläche zurück, andere Einstellungen wie etwa eine eingerichtete Medienbibliothek bleiben jedoch erhalten.

Alles verschlüsselt!

Mobile Notebooks, handliche USB-Sticks, öffentliche Cloud: Alles, was das Haus und das heimische Netz verlässt, kann in fremde Hände gelangen oder ist in fremden Händen. Verschlüsselung sorgt dafür, dass die Daten nichts Persönliches preisgeben.

Hinsichtlich Datenschutz und Verschlüsselung spaltet sich die Gesellschaft so schizophren wie sonst auch: Die einen werfen ihre Privatsphäre bedenkenlos ins World Wide Web, die anderen sorgen sich bei jeder Dropbox-Datei, dass die NSA mitlesen könnte. Es ist aber nicht Ziel dieses Beitrags, die Naiven zu bekehren oder die Paranoiden zu beruhigen. Hier geht es allein um die technischen Möglichkeiten, die Linux in großer Vielfalt und Abstufung bereithält, um Daten zu verschlüsseln. Der Artikel stellt alle Methoden vor, bewertet sie und bringt eine vollständige Praxis-Anleitung für die Einrichtung und Nutzung.

1. LUKS-verschlüsseltes Linux-System

Die kompromisslose Methode, die lokalen Daten vor Fremdzugriff zu schützen, ist die Verschlüsselung der kompletten Festplatte. Mit dem auf dem Kernelmodul dm-crypt basierenden Linux Unified Key Setup (LUKS) lassen sich sowohl externe USB-Datenträger (siehe Punkt 2) als auch die Systemfestplatte selbst sicher verschlüsseln. Wir beginnen mit dem technisch anspruchsvollsten Szenario der verschlüsselten Systemfestplatte, da es durch moderne Installer zur einfachen Übung gerät und bei der Alltagsbenutzung nicht mehr Aufwand bedeutet als die Schlüsseleingabe beim Systemstart. Trotzdem sollte sich jeder Anwender, der seine Systemfestplatte verschlüsselt im Klaren sein, dass die Partitionierung komplexer wird und bei Bootproblemen höheren Reparaturaufwand verursacht.

Empfehlung: Eine LUKS-verschlüsselte Systemfestplatte ist die richtige Maßnahme für Notebooks, die viel unterwegs sind und auch jenseits des Home-Verzeichnisses vertrauliche und private Daten enthalten. Der verschlüsselte Datenträger lässt beim Booten durch ein Fremdsystem keinerlei Einblick in die Verzeichnisstruktur und in die Daten zu. Das Einzige, was ein Fremdzugriff anhand der Partitionierungsfakten in Erfahrung bringen kann, ist die Tatsache, dass die Festplatte LUKS-verschlüsselt ist.

Installation mit LUKS und LVM: Es gibt diverse grafische Linux-Installer, die beim Setup eine LUKS-verschlüsselte Systempartition einrichten können. Neben Yast unter Open Suse, dem Debian-Installer und dem Fedora-Installer bieten alle Ubuntu-basierten Distributionen inklusive Linux Mint den Installer Ubiquity, der dies beherrscht. Die folgende Anleitung orientiert sich an Ubiquity. Beachten Sie aber, dass der Ubuntu-Installer den bequemen Weg zur LUKS-verschlüsselten Systemfestplatte nur anbietet, wenn Sie ihm dafür die gesamte primäre Festplatte überlassen. Eine kompliziertere Situation mit Multiboot oder anderweitigen Partitionsaufteilungen ist nicht vorgesehen. Die Festplatte wird bei diesem Vorgang komplett gelöscht.

Starten Sie die Installation im Livesystem eines Ubuntu-Systems, und folgen Sie dem Setup-Assistenten bis zum Punkt „Installationsart“. Hier wählen Sie die erste Option „Festplatte löschen und […] installieren“. Darunter aktivieren Sie das Kästchen „Die neue Ubuntu-Installation zur Sicherheit verschlüsseln“. Sobald Sie dies tun, wird zugleich der weitere Punkt „LVM […] verwenden“ aktiv. Der Logical Volume Manager ist eine Abstraktionsschicht, um Festplatten und Partitionen flexibler zu verwalten, zusammenzufassen und dynamisch zu erweitern. In diesem Fall ist LVM notwendig, um neben der kleinen unverschlüsselten Bootpartition die LUKS-formatierte Partition und die virtuelle LVM-Partition unterzubringen, die bei korrekter Kennworteingabe unverschlüsselt ins Dateisystem geladen wird.

Wenn Sie im Assistenten mit den genannten Optionen auf „Weiter“ klicken, folgt noch die Abfrage des Sicherheitsschlüssels. Dieses Kennwort sollte komplex genug sein, um vom Assistenten als „Starkes Passwort“ gelobt zu werden. Andererseits muss die Eingabe zumutbar bleiben, denn sie ist künftig bei jedem Systemstart erforderlich. Die weitere Installation unterscheidet sich nicht mehr von einem üblichen Ubuntu-Setup.

Wenn Sie ein LUKS-verschlüsseltes System booten, erscheint künftig das Eingabefeld „Please unlock disk […]“. Dort geben Sie das Passwort ein, und erst danach kann der Systemstart fortsetzen, wobei das LUKS-Volume entsperrt und unverschlüsselt nach /dev/mapper/[sd…] gemountet wird.

Systemverschlüsselung per Setup: Dies ist die entscheidende Einstellung beim Ubuntu-Installer. Mit LVM und LUKS-Verschlüsselung bootet das System erst nach korrekter Kennworteingabe.

2. LUKS-verschlüsselte (USB-) Datenträger

Interne Laufwerke, die als reine Datenpartition dienen, sowie externe USB-Datenträger lassen sich ebenfalls mit LUKS verschlüsseln. Technisch ist dies weniger anspruchsvoll und kommt ohne LVM-Unterstützung aus. Die Einrichtung und Benutzung erfolgt auf modernen Linux-Distributionen komplett mit grafischen Werkzeugen, die den komplizierteren Weg über Terminalbefehle in der Regel überflüssig machen.

Empfehlung: Besonders USB-Sticks und handliche USB-Festplatten gehen oft verloren oder werden vergessen. LUKS ist für mobile Speicher erste Wahl, sofern die Datenträger überwiegend mit Linux gelesen und beschrieben werden. Dort, wo auch ein Windows oder ein Mac OS zugreifen soll, ist Veracrypt (siehe Punkt 6) die bessere Option.

Einrichten mit grafischen Werkzeugen: Erfreulicherweise hat LUKS-Verschlüsselung in die Systemwerkzeuge längst Einzug gehalten. Die KDE-Umgebung bietet den „KDE Partition Manager“ (partitionmanager), und die Gnome-affinen Desktops (Gnome, Mate, Unity, Cinnamon, XFCE) haben das Tool „Laufwerke“ (gnome-disks) an Bord. Wir beschreiben die wenigen Klicks zur LUKS-Verschlüsselung eines USB-Laufwerks am Beispiel von gnome-disks:

Nach Anschließen des USB-Datenträgers hängen Sie das Laufwerk zunächst mit dem kleinen schwarzen Symbol links unterhalb der Partitionsanzeige aus. Danach klicken Sie auf das Zahnradsymbol und verwenden die Option „Partition formatieren“. Im Folgedialog wählen Sie als „Typ“ den Eintrag „Verschlüsselt, kompatibel mit Linux-Systemen (LUKS + Ext4)“. Der Eintrag „Name“ ist nicht unbedingt erforderlich, macht aber den späteren Mountpunkt lesbarer. Entscheidend ist darunter die „Passphrase“ – also das Kennwort. Hier gilt wie unter Punkt 1: Das Kennwort sollte komplex sein, die Eingabe aber zumutbar bleiben, denn sie ist künftig bei jeder Nutzung des Datenträgers erforderlich. Mit Klick auf „Formatieren“ schließen Sie den Vorgang ab. Sie können nach der Formatierung den Datenträger sofort mit gnome-disks einhängen und nutzen, indem Sie auf den unteren Balken der symbolischen Anzeige klicken und die Partition mit dem Pfeilsymbol links einhängen.

Für die künftige Alltagsbedienung genügen die typischen Dateimanager Nautilus, Nemo, Caja, Dolphin. Wenn Sie das USB-Gerät anschließen, erscheint nach kurzer Frist automatisch der Dialog „Geben Sie eine Passphrase zum Entsperren […] ein“. Nach Eingabe des korrekten Kennworts ist das Medium entsperrt und im Dateimanager unter „Geräte“ normal benutzbar. An gleicher Stelle im Dateimanager können Sie den Datenträger wieder trennen („Laufwerk sicher entfernen“).

LUKS-Verschlüsselung für USB-Datenträger: Diese Aufgabe beherrschen die typischen Partitionsmanager von Desktop-Distributionen – hier gnome-disks unter Linux Mint.
Exkurs: Manuelle LUKS-Verschlüsselung

LUKS-Verschlüsselung für ein externes USB-Laufwerk kann auch ohne grafische Werkzeuge etwa auf einem Headless-Server eingerichtet werden. Die folgende Ergänzung zu den Punkten 1 und 2 dient nicht nur der Vollständigkeit, sondern soll auch die zugrundeliegenden Werkzeuge vorstellen, die unter der Haube auch von grafischen Tools wie gnome-disks genutzt werden.

Zunächst ermitteln Sie mit

lsblk

die Gerätekennung des USB-Datenträgers. Alle folgenden Kommandos gehen von der Beispielkennung /dev/sde aus, die in Ihrem Fall natürlich anders lauten kann und unbedingt entsprechend angepasst werden muss. Zunächst wird die Partitionstabelle des Sticks mit fdisk neu geschrieben:

sudo fdisk /dev/sde

Geben Sie am fdisk-Prompt „o“ ein. Dieser Befehl legt eine neue DOS-Partitionstabelle an. Sie müssen die Aktion anschließend mit dem Schreibbefehl „w“ realisieren, was zugleich fdisk beendet. Starten Sie dann fdisk erneut:

sudo fdisk /dev/sde

Jetzt legen Sie mit dem Befehl „n“ eine neue Partition an und verwenden dabei „p“ für „primary“, „1“ für Partition 1. Die zwei Abfragen der Start- und End-Sektoren quittieren Sie einfach mit der Eingabetaste. Auch hier muss abschließend der Write-Befehl „w“ erfolgen, um die Aktion tatsächlich auf den Datenträger zu schreiben.

Nun hängen Sie das Laufwerk mit

sudo umount /dev/sde?

aus und formatieren es mit LUKS. Das dazu notwendige Tool cryptsetup steht auf allen verbreiteten Distributionen zur Verfügung:

sudo cryptsetup luksFormat /dev/sde1

Der Parameter „luksFormat“ muss genau so eingegeben werden. Die nachfolgende Bestätigung mit „YES“ ist ebenfalls case-sensitiv und erfordert Großbuchstaben. Dann werden Sie nach dem „Passsatz“ gefragt, also dem Zugangskennwort. Die Eingabe erfolgt ohne Textanzeige und ohne Stellvertreterzeichen.

Nun können Sie das Laufwerk mit „luksOpen“

sudo cryptsetup luksOpen /dev/sde1 Stick

in das System laden. Der Name, hier „Stick“, ist frei wählbar. Das Laufwerk wird nun unter /dev/mapper/Stick gemountet. Zu guter Letzt braucht das Laufwerk neben LUKS noch ein normales, unverschlüsseltes Dateiformat, was Sie mit

sudo mkfs.vfat /dev/mapper/Stick -n Stick

erledigen. Das war’s. Entfernen Sie nun den Stick einfach vom Rechner. Die Prozedur ist für jeden USB-Datenträger nur einmal erforderlich.

3. Verschlüsseltes Home-Verzeichnis (Ecryptfs)

Ubuntu-Systeme einschließlich Linux Mint machen bei der Installation das Angebot, das Home-Verzeichnis zu verschlüsseln. Diese Option ist bei einer Neuinstallation immer gut zu überlegen, zumal sie nachträglich für den ersteingerichteten Benutzer nicht mehr vorgesehen ist und dann doch einige Klimmzüge erfordert. Technisch zuständig ist in diesem Fall das Modul Ecryptfs, das Ubuntu & Co. standardmäßig im Kernel mitbringen. Ecryptfs ist nicht zu verwechseln mit Encfs (siehe Punkt 5), wenngleich sich beide Techniken ähneln.

Empfehlung: Ein Ecryptfs-verschlüsseltes Home-Verzeichnis ist für typische Desktop-Systeme, auch für mobile Notebooks, oft der angemessene und der komfortabelste Schutz. Bei Fremdzugriff ist zwar der Großteil des Dateisystems lesbar, nicht aber der Inhalt von /home/[user]. Dieser liegt verschlüsselt unter /home/.ecryptfs/[user]/.Private und wird automatisch unverschlüsselt nach /home/[user] geladen, sobald sich der Benutzer am System anmeldet. Wenn sich der Gerätebesitzer daran hält, seine Daten stets unter /home abzulegen, ist für Datendiebe nichts zu holen. Lediglich die Anzahl der Verzeichnisse und Dateien sowie deren ungefähre Größen sind unter /home/.ecryptfs/[user]/.Private ersichtlich – die Inhalte nicht. Die Dateinamen sind ebenfalls verschlüsselt.

Einrichten der Home-Verschlüsselung: Bei der Installation von Ubuntu-Systemen erscheint zu einem späteren Zeitpunkt das Fenster „Wer sind Sie?‟. Hier legen Sie den Erstbenutzer des System an. An unterster Stelle gibt es die Option „Meine persönlichen Daten verschlüsseln‟. Ein Häkchen genügt, um Ecryptfs für das Home-Verzeichnis des Erstbenutzers zu aktivieren. Nach der ersten Anmeldung am neu installierten System erscheint dann ein Fenster mit dem Hinweis „Ihre Verschlüsselungspassphrase notieren‟. Klicken Sie auf „Diese Aktion ausführen‟. Danach geben Sie das Systempasswort ein und bestätigen mit der Eingabetaste. Sie sehen dann das von Ubuntu & Co. zufällig generierte Passwort für die Home-Verschlüsselung. Notieren Sie sich dieses, denn Sie benötigen es für den (unwahrscheinlichen) Fall, dass einmal die Wiederherstellung eines defekten Dateisystems nötig werden sollte.

Für den alltäglichen Zugriff auf das Home-Verzeichnis genügt die Anmeldung am System. Vor anderen Benutzern am selben PC ist das verschlüsselte Home-Verzeichnis ebenfalls sicher. Diese erhalten beim Zugriff eine Fehlermeldung, die auf fehlende Rechte hinweist. Besitzen andere Systembenutzer root-Recht, können Sie zwar den Ordner /home/.ecryptfs/[user]/.Private betreten, sehen dort aber nicht mehr als verschlüsselte Ordner- und Dateinamen.

Weitere verschlüsselte Home-Verzeichnisse: Die Home-Verschlüsselung bei der Installation gilt nur für den dort eingerichteten Erstbenutzer. Wenn ein weiterer Benutzer ein verschlüsseltes Home-Verzeichnis erhalten soll, gibt es zwei Wege:

1. Die grafische Methode über „Einstellungen -> Benutzer/Users“ ist aktuell noch die Ausnahme. Linux Mint 18.2 bietet in der Benutzerverwaltung beim Anlegen eines neuen Kontos ganz unten die Option „Persönlichen Ordner verschlüsseln […]“.

2. Bei den meisten Distributionen ist die Home-Verschlüsselung nur über die Kommandozeile zu erreichen. Es genügt dieser Befehl:

sudo adduser --encrypt-home [username]

Falls der Befehl scheitert, installieren Sie das Paket ecryptfs-utils (sudo apt install ecryptfs) und wiederholen den Befehl. Legen Sie das Passwort für den neuen Benutzer hinter „Geben Sie ein neues UNIX-Passwort ein:‟ fest. Danach geben Sie die Benutzerinformationen ein oder bestätigen einfach alles mit Eingabetaste. Ab sofort kann sich der neue Benutzer anmelden und das verschlüsselte Home-Verzeichnis nutzen. Auch er erhält einen Hinweis, sich die Verschlüsselungspassphrase zu notieren.

Home-Verzeichnis nachträglich verschlüsseln: Es ist nicht vorgesehen, die Verschlüsselung nachträglich zu aktivieren. Die einfachste Lösung ist es daher, alle Dateien im Home-Verzeichnis vorübergehend an einen anderen Ort zu verschieben, dann ein neues Benutzerkonto mit verschlüsseltem Home-Verzeichnis anzulegen und die gesicherten Dateien danach in das neue Home-Verzeichnis zu kopieren. Das ursprüngliche Konto kann danach im Prinzip gelöscht werden. Tun Sie dies aber erst, wenn der Systemalltag reibungslos funktioniert: So sollte zum Beispiel der sudo-berechtigte Erstbenutzer nicht gelöscht werden, solange kein neues Konto mit sudo-Recht eingerichtet ist (visudo).

Linux Mint bietet bei der Installation nach wie vor an, das Home-Verzeichnis des Erstbenutzers zu verschlüsseln. Das gilt auch für weitere, später angelegte Benutzer .

4. Verschlüsselung mit Encfs

Encfs ist ein flexibles Ordner- und Datei-orientiertes Verschlüsselungswerkzeug. Der Ruf des Tools hat etwas gelitten, nachdem vor Jahren eine theoretische Lücke bekannt wurde, welche die Robustheit von Encfs infrage stellte. Diese Lücke besteht immer noch und wird bei der Installation des Pakets gemeldet. Unterm Strich handelt es sich aber um ein akademisches Problem, das normale Anwender nicht betrifft. Technisch ähnlich wie bei Ecryptfs wird ein verschlüsselter Ordner durch Eingabe des richtigen Passwort entsperrt und der Inhalt unverschlüsselt in einen zweiten Ordner gemountet, wo die Dateien dann normal zu verwenden sind. Verschlüsselte Encfs-Ordner sind überall flexibel einzurichten – auf internen und externen Datenträgern mit FAT, FAT32, NTFS oder einem Linux-Dateisystem.

Empfehlung: Encfs ist das richtige Werkzeug für alle Situationen, die im Alltag plötzlich Verschlüsselung ratsam erscheinen lassen: Dieses oder jenes Verzeichnis auf der USB-Festplatte hat Verschlüsselung verdient, ein Unterordner von Home muss geschützt werden oder ein Cloud-Dienst soll über den verschlüsselten Sync-Ordner nur noch geschützte Dateien bevorraten. Encfs kann an jeder Stelle und auf jedem Datenträger einspringen und eignet sich auch für größere Datenmengen. Neben Linux können Android-Geräte mit der App Cryptonite Encfs-Daten lesen. Für Mac-Anwender gibt es nach einem gewissen Installationsaufwand ein praktisch identisches Encfs. Für den Austausch mit Windows gibt es Encfs4win, das allerdings experimentell bleibt (https://encfs.win).

Encfs mit grafischem Cryptkeeper: Encfs ist meist nicht installiert, doch finden Sie das relativ kleine Paket in den Repositories aller wichtigen Linux-Distributionen. Unter Ubuntu/Mint installieren Sie es mit

sudo apt install encfs

und können dann sofort loslegen. Encfs ist an sich ein reines Kommandozeilen-Tool, jedoch werden die meisten Anwender Encfs über das grafische Frontend Cryptkeeper bedienen. Auch dieses kleine Tool muss mit

sudo apt install cryptkeeper

erst nachinstalliert werden. Nach dem Aufruf cryptkeeper präsentiert sich dieser als Schlüsselsymbol in der Hauptleiste. Die Option „Erstelle verschlüsselten Ordner“ richtet ein neues verschlüsseltes Verzeichnis ein, wobei Sie in der oberen Zeile den Ordnernamen vergeben und unten zum gewünschten Ort navigieren, etwa zu einem USB-Stick unter /media im Dateisystem. Mit der Schaltfläche „Vor“ geht es weiter zur Passwortvergabe. Der neue und noch leere Mount-Ordner wird zum Abschluss automatisch im Dateimanager geöffnet und kann dann befüllt werden. Sie arbeiten in diesem Ordner wie mit unverschlüsselten Dateien. Die eigentlichen Dateien liegen auf gleicher Ebene in einem versteckten Ordner .[name]_enfcs. Um einen Encfs-Ordner auszuhängen und damit zu schützen, klicken Sie auf das Cryptkeeper-Symbol und dann auf den betreffenden Ordnereintrag.

Über die „Einstellungen“ können Sie vorgeben, dass Mount-Ordner nach dem Entladen („Aushängen“) gelöscht und dass nicht genutzte Encfs-Ordner nach bestimmter Frist automatisch entladen werden. Diese zweite Sicherheitsmaßnahme ist ein Alleinstellungsmerkmal von Encfs.

Encfs auf der Kommandozeile: Im Terminal ist Encfs-Verschlüsselung etwas mühsamer, andererseits flexibler. Die Kernsyntax lautet:

encfs /Pfad1/verschlüsselte_Daten/ /Pfad2/unverschlüsselte_Daten/

Pfad1 ist der zu verschlüsselnde Ordner, Pfad2 der Mountpunkt, wo die Daten unverschlüsselt genutzt werden. Das Beispiel

mkdir /media/sepp/data/privat
mkdir ~/privat
encfs /media/sepp/data/privat ~/privat

erstellt unter „/media/sepp/data“ das neue Verzeichnis „privat“, ferner den gleichnamigen Mountpunkt im Home-Verzeichnis. Die dritte Zeile lädt das noch leere Verzeichnis in den Mountpunkt. Danach ist noch die Vergabe eines neuen Kennworts notwendig. Unter „~/privat“ arbeiten Sie mit den Daten.

Während bei Cryptkeeper das verschlüsselte Verzeichnis und das Mount-Verzeichnis stets auf gleicher Ebene liegen, kann Encfs auf Kommandozeile von beliebiger Stelle in einen beliebigen Mountpunkt laden. Wenn Sie einen verschlüsselten Ordner nicht mehr benötigen, entladen Sie seinen Mountpunkt:

fusermount -u ~/privat 

Neuerliches Laden geschieht mit genau demselben Encfs-Befehl wie bei der Ersteinrichtung.

Tipp: Auf der Kommandozeile (nicht im Cryptkeeper) können Sie Encfs auch auf ein bereits bestehendes Verzeichnis ansetzen. Alle Dateien, die sich dort bereits befinden, bleiben dort allerdings weiterhin unverschlüsselt. Sollen diese nachträglich verschlüsselt werden, verschieben Sie die Dateien einfach in das Mountverzeichnis des Encfs-Ordner-Paares.

Ersteinrichtung eines Encfs-Ordners: Sie benötigen lediglich einen Ordner als Mountpunkt (hier USBData im Home-Verzeichnis) und ein Kennwort.
Grafisches Frontend für EncFS: Das kleine Tool Cryptkeeper erscheint als Schlüsselsymbol in der Hauptleiste und bietet die wesentlichen EncFS-Funktionen.

5. Container mit Veracrypt

Veracrypt ist der Nachfolger des Verschlüsselungsklassikers Truecrypt, der 2014 eingestellt wurde. Veracrypt arbeitet mit verschlüsselten Containerdateien und einem eigenen Format. Der Inhalt solcher Container wird durch die „Mount“- (oder „Einbinden“-) Schaltfläche und nach korrekter Passworteingabe unverschlüsselt ins Dateisystem gemountet, wobei auch gleich der zuständige Dateimanager zur Anzeige und Dateibearbeitung gestartet wird. Die Größe der Containerdateien muss bei der Einrichtung definiert werden und ist später nicht mehr dynamisch erweiterbar.

Empfehlung: Veracrypt eignet sich für große und sehr große Datenmengen, allerdings nur auf lokalen Rechnern oder im lokalen Netzwerk. Für den Transfer in die Cloud ist es ungeeignet, da auch bei geringen Datenänderungen immer der Transport des gesamten Containers notwendig wäre. Ein entscheidendes Plus von Veracrypt sind Versionen für Linux, Windows, Mac OS, Free BSD und Raspbian. Damit sind Veracrypt-Container zwischen allen PC-Systemen austauschbar.

Installation und Container-Betrieb: Anlaufstelle für die meisten Betriebssysteme ist die Projektseite https://www.veracrypt.fr/en/Downloads.html. Für Ubuntu, Mint & Co. ist die Installation über ein PPA allerdings deutlich komfortabler:

sudo add-apt-repository ppa:unit193/encryption
sudo apt-get update
sudo apt-get install veracrypt

Im Unterschied zur Windows-Version bietet Veracrypt unter Linux keine deutsche Übersetzung, weswegen die nachfolgenden Menübezeichnungen englischsprachig ausfallen. Um eine neue Containerdatei anzulegen, klicken Sie im Hauptdialog auf „Create Volume -> Create an encrypted file container“ und anschließend auf “Standard VeraCrypt volume“. Hier geben Sie Pfad und Namen einer bisher nicht existierenden Datei an. „Encryption Option“ belassen Sie einfach auf den Standardvorgaben. Danach geben Sie die Größe der Containerdatei an. Diese sollte großzügig ausfallen, weil die Kapazität nicht mehr zu ändern ist und viele kleine Container unübersichtlicher sind als wenige große.

Danach kommt die Passwortvergabe. Zur Schlüsselerstellung auf Basis des Passworts erwartet Veracrypt Mausbewegungen im eigenen Fenster. Nach beendeter Fortschrittsanzeige schließen Sie mit „Format“. Damit ist der Container einsatzbereit. Mit „Select File“ im Hauptdialog navigieren Sie zur Containerdatei. Mit Klick auf „Mount“ wird diese geladen und im Dateimanager geöffnet (falls nicht, lässt sich das unter „Preferences -> System Integration“ einstellen). Linux mountet Container nach „/media/veracrypt[nummer]“, Windows auf freie Laufwerkbuchstaben. Auf diesen Datenträgern lesen, arbeiten, kopieren Sie wie auf einem normalen Laufwerk. Mit „Dismount“ im Hauptdialog entladen Sie den Container, der somit wieder geschützt ist.

Zur besseren Systemintegration nistet sich das Veracrypt-Symbol zusätzlich in der Systemleiste des Linux-Desktops ein. Hier sind im Kontextmenü einige fundamentale Aktionen wie das Mounten aller „Favorites“ oder das Abschalten aller aktuell geladenen Container. Eingerichtete „Favorites“ ersparen die Sucherei nach verstreuten Containerdateien, sodass es sich durchaus lohnt, das Menü „Favorites“ zu organisieren.

Beachten Sie, dass Sie beim Mounten von Veracrypt-Containern zusätzlich zum Container-Passwort auch noch nach dem sudo-Kennwort gefragt werden, das mit dem Veracrypt-Passwort nichts zu tun hat und vermutlich anders lautet.

Tipp 1: Veracrypt ist auch komplett über Terminalbefehle zu steuern (siehe veracrypt –help). So entlädt etwa

veracrypt --dismount

alle geladenen Containerdateien. Und auf stationären, privaten PCs kann es vertretbar sein, einen Container durch ein Terminal-Alias zu laden und dabei das Passwort im Klartext mitzugeben:

veracrypt --mount /home/ha/vc-data
--password=Sehr-GeH3im

Tipp 2 für ältere Truecrypt-Container: Unter „Select File“ wählen Sie die Container-Datei aus oder mit „Select Device“ das verschlüsselte Laufwerk. Nach einem Klick auf „Mount“ aktivieren Sie im angezeigten Dialog vor der Angabe des Passworts die Option „TrueCrypt Mode“. In einigen Fällen funktioniert das nicht, und Veracrypt öffnet den Container nicht. Hier hilft es, die Einstellung „Options -> Mount volume as read-only“ zu aktivieren. Damit sind die Daten erreichbar und können bei Bedarf an eine andere Stelle kopiert werden.

Hauptdialog und Systemintegration von Veracrypt: Veracrypt entspricht bei der Bedienung seinem Truecrypt-Vorgänger. Laden und Entladen von Containern gelingt auch über das Panelsymbol.
Veracrypt im Terminal: Alle Funktionen der Verschlüsselungs-Software sind auf Wunsch auch über die Kommandozeile zu steuern.

6. Einfaches Verschlüsseln mit Packer

Einfachster Schutz bei geringeren Datenmengen ist die Ad-hoc-Verschlüsselung von Einzeldateien oder eines Ordners. Ohne Einschränkung für alle Dateien und Ordner anwendbar ist ein Packer mit eingebauter Verschlüsselung wie 7-Zip. Diese ist sicher, wenn Sie das Passwort komplex und lang wählen. Packer-Verschlüsselung erfordert diszipliniertes Verhalten und ist nicht so komfortabel wie andere Methoden.

Empfehlung: Geschützte Packer-Archive eignen sich für Dateien in der Cloud, können aber auch für mobile Datenträger ausreichen, wenn die Dateimengen überschaubar sind. Da es 7-Zip für Linux, Windows und Mac OS (7zX) gibt, ist der Austausch solcher Archive problemlos. Unter Android können nicht alle Apps mit einem „zip“ im Namen auch mit passwortgeschützten Archiven umgehen, aber der kostenlose, allerdings werbefinanzierte 7Zipper (von Polar Bear) beherrscht dies.

Manuelles Verpacken: Installieren Sie zunächst, sofern noch nicht geschehen, den 7-Zip-Packer:

sudo apt install p7zip-full

7-Zip erscheint unter Desktop-Linux nicht als selbständiges, grafisches Programm, sondern integriert sich in die „Archivverwaltung“. In Zusammenarbeit mit dieser Archivverwaltung oder dem 7z-Filemanager unter Windows ist Verschlüsseln und Entschlüsseln recht komfortabel: Sie ziehen Datei oder Ordner einfach mit der Maus in das Fenster („Archivverwaltung“ oder „7-Zip“), bestätigen unter Linux, dass damit ein neues Archiv angelegt werden soll und geben dann das Format „7z“ an. Unter „Erweiterte Einstellungen“ vergeben Sie das Passwort. Die Option „Dateiliste ebenfalls verschlüsseln“ sorgt dafür, dass die Archivverwaltung später auch keine Dateinamen verrät. Beim späteren Doppelklick des Archivs wird automatisch das Kennwort abgefragt und nur bei richtiger Eingabe entpackt.

Komfortfunktionen: Der Hauptaufwand für sichere passwortgeschützte Archive entsteht durch die Eingabe des komplexen Kennworts. Dieser Komfortverlust lässt sich etwa durch Terminal-Aliases oder -Funktionen minimieren. Für hier soll ein Beispiel für das Terminal genügen, das am besten als Function in der Datei ~/.bashrc zu realisieren ist:

function cc (
{
name=${1%/}
echo $name | grep ".7zEnc"
if [ $? -eq 0 ]; then
  7z x
-p'linuX*Welt' "$name"
else
  7z a
-p'linuX*Welt' -t7z -mhe=on "$name.7zEnc" "$name"
fi
}

Danach erledigt im Terminal die Eingabe

cc [datei]

das Ein- oder Auspacken des Archivs im aktuellen Verzeichnis. Ob Einpacken oder Auspacken als Aufgabe ansteht, erkennt die Funktion anhand der Dateiextension. Das Kennwort „linuX*Welt“ ist natürlich anzupassen.

Ähnliche und zum Teil noch komfortablere grafische Lösungen hat die LinuxWelt in früheren Ausgaben vorgestellt, so den Ausbau des jeweiligen Dateimanagers mit speziellen Kontextmenüs. Die letzte Ausgabe der LinuxWelt zeigte eine Lösung mit einem Incron-überwachten Ordner, der die Verschlüsselung per Drag & Drop erledigt. Alle nötigen Infos dazu finden Sie im PDF-Booklet auf Heft-DVD. Im Prinzip basieren aber alle diese Komfortlösungen auf einem Shellscript ähnlicher Machart wie oben.

Vereinfachte Packer-Verschlüsselung: Ein Script kann die lästige Aufgabe übernehmen, das Kennwort an 7-Zip zu übergeben.

7. Kennwortschutz in Office-Software

Libre Office und Microsoft Office bieten eine eigene integrierte Verschlüsselung. Das ist bequem, bleibt aber eine Insellösung, die auf die wenigen Office-Formate beschränkt ist. Außerdem hat diese Software-interne Kryptographie den großen Nachteil, dass Sie auf Office-Suiten angewiesen sind, um ein Dokument lesen zu können. Immerhin kann Libre Office auch Passwort-geschützte Microsoft-Dateien öffnen, umgekehrt ist das nicht der Fall.

Empfehlung: Diese Methode, Dateien einzeln zu verschlüsseln, eignet sich nur für wenige sensible Texte oder Tabellen. Für größere Datenmengen ist sie zu unbequem. Der häufigste Einsatz ist der Austausch vertraulicher Tabellen innerhalb eines Arbeitsteams.

Praktische Nutzung: Libre Office bietet die Option „Datei -> Speichern unter -> Mit Kennwort speichern“. Das Kennwort muss jeweils beim Öffnen eingegeben werden. Dass das Dokument geschützt ist, ist Libre Office bei der Weiterbearbeitung klar: Es genügt daher künftig, normal zu speichern. In Microsoft Office findet sich die Verschlüsselung unter „Datei -> Speichern unter -> Tools -> Allgemeine Optionen“.

Einzeldateien unter Libre Office verschlüsseln: Diese Ad-hoc-Maßnahme ist ein Notbehelf für geringe Datenmengen.

Exkurs: Asymmetrische Verschlüsselung

Alle bisher genannten Verschlüsselungsvarianten (Punkt 1 bis 8) gehören zur Kategorie symmetrischer Verschlüsselung: Ein Kennwortschlüssel verändert die Ausgangsdaten unlesbar, genau derselbe Schlüssel stellt den lesbaren Zustand wieder her. Dieses Verfahren ist optimal, wenn Sender und Empfänger dieselbe Person sind: Sie verschlüsseln Dateien oder Datenträger, die Sie später wieder entschlüsseln. Die Verschlüsselung hat nur den Zweck, dass keine andere Person die Datei lesen kann. Sobald Sender und Empfänger verschiedene Personen sind, wird symmetrische Verschlüsselung problematisch: Erstens muss der Schlüssel auf einem sicheren Weg von Person A zu Person B kommen. Zweitens brauchen Sie strenggenommen für Person C einen anderen Schlüssel, für Person D einen weiteren und so fort. Bei einem Austausch vieler Personen wie bei der Mail-Korrespondenz ist dies nicht praktikabel.

Wesentliches Merkmal der asymmetrischen Verschlüsselung (siehe Punkt 9) sind zwei unabhängige Schlüssel: ein öffentlicher zum Verschlüsseln, ein privater zum Entschlüsseln. Die komplementären Schlüssel generiert die Software – etwa GnuPG – auf Ihrem Rechner. Beide Schlüssel stehen zwar in eindeutigem Verhältnis, jedoch ist die Berechnung des privaten Schlüssels aus dem öffentlichen durch den Einsatz mathematischer Einwegfunktionen extrem aufwendig bis unmöglich. Der öffentliche Schlüssel zum Verschlüsseln kann daher ohne Geheimniskrämerei an alle Kommunikationspartner direkt oder zu einem öffentlichen Key-Server im Web geschickt werden. Nun chiffrieren alle Partner Nachrichten an Sie mit Ihrem öffentlichen Schlüssel – und Sie sind die einzige Person, die diese Nachrichten mit dem passenden privatem Schlüssel lesbar machen kann. Umgekehrt codieren Sie Ihre Nachrichten mit den öffentlichen Schlüsseln Ihrer Partner und haben die Sicherheit, dass nur der Empfänger mit dem komplementären privaten Schlüssel die Nachricht lesen kann.

Asymmetrische Verschlüsselung: Der Absender einer verschlüsselten Nachricht benötigt zum Chiffrieren („E“ – Encrypt) nur den öffentlichen Schlüssel des Empfängers. Empfangen und entschlüsselt („D“ – Decrypt) wird mit dem privaten Schlüssel.

8. Mailverschlüsselung unter Thunderbird

Ob der persönliche Mail-Austausch Verschlüsselung benötigt, muss jeder selbst entscheiden. Tatsache ist, dass US-Anbieter wie Google oder Yahoo der Neugier von Geheimdiensten wenig Datenschutz-Anstrengungen entgegensetzen. Auch wenn Sie deutsche Provider oder sogar einen eigenen Mail-Server benutzen, ist die Mail doch an den Knotenpunkten theoretisch abzufangen – am einfachsten in öffentlichen WLANs.

Empfehlung: Mail-Verschlüsselung ist wie jede Datenschutzmaßnahme mit Mehraufwand verbunden. Die Kombination von GnuPG (GNU Privacy Guard) plus Thunderbird mit Erweiterung Enigmail ist die wohl komfortabelste Lösung, aber auch sie erfordert Gewöhnung und zumindest einen Anteil von Mail-Partnern, die ebenfalls GnuPG nutzen. Unter Linux sind Thunderbird und GnuPG oft vorinstalliert, und falls nicht, über die Paketnamen „thunderbird“ und „gnupg“ schnell nachgerüstet. Für Windows gibt es Downloads unter www.mozilla.org und www.gnupg.org). Enigmail finden und installieren Sie dann direkt in Thunderbird über „Add-ons“.

Einrichtung und Mail-Alltag: Nach der Installation der Enigmail-Erweiterung und einem Thunderbird-Neustart verwenden Sie im automatisch startenden Einrichtungsassistenten die „ausführliche Konfiguration“. Im ersten Schritt geben Sie die „Passphrase“ ein. Das Passwort benötigen Sie später stets, um auf Ihre Schlüssel zuzugreifen. Es bildet auch die Grundlage für die beiden Schlüssel. Nach der doppelten Eingabe legt Enigmail das neue Schlüsselpaar an (öffentlich/privat). Falls Sie auf einem anderen Rechner bereits ein eingerichtetes Enigmail und ein Schlüsselpaar besitzen, wählen Sie im Assistenten die Option, bestehende Schlüssel zu importieren. Schlüssel lassen sich über „Enigmail -> Schlüssel verwalten“ als Ascii-Dateien exportieren und auf anderen Rechnern importieren.

Öffnen Sie wie gewohnt den Editor zum Verfassen von Nachrichten. Dort hat Enigmail jetzt eine weitere Symbolleiste platziert. Möchten Sie eine ausgehende Nachricht verschlüsseln, benötigen Sie den öffentlichen Schlüssel des Empfängers. Wenn dieser als Textdatei vorliegt, können Sie den Schlüssel über „Enigmail -> Schlüssel verwalten -> Datei importieren“ einlesen. Alternativ gibt es Schlüsselserver, die öffentliche Schlüssel aufbewahren. Über „Schlüsselserver -> Schlüssel suchen“ sehen Sie nach, ob die Empfängeradresse dort eingetragen ist; falls ja, importieren Sie den Schlüssel mit einem Klick. Umgekehrt ist es sinnvoll, den eigenen öffentlichen Schlüssel über „Schlüsselserver -> Schlüssel hochladen“ im Web zugänglich zu machen.

Nach einem Schlüsselimport ist der neue Mail-Empfänger Enigmail/GnuPG bekannt. Künftig klicken Sie beim Verfassen einer Nachricht an diesen Empfänger auf das Symbol mit dem Schloss. Um Mails verschlüsselt zu versenden, müssen Sie Ihr Passwort eingeben. Wenn Sie mit dem Schloss-Symbol verschlüsselt senden wollen, jedoch für den Empfänger kein Schlüssel vorliegt, erscheint automatisch der Hinweis, dass dieser Empfänger „nicht gültig“ ist. Dann besorgen Sie sich entweder den öffentlichen Schlüssel oder Sie senden unverschlüsselt.

Erhalten Sie umgekehrt eine Mail, die verschlüsselt wurde, erkennt Enigmail das automatisch. Wenn Sie im Vorschaubereich von Thunderbird auf das Element klicken, werden Sie dazu aufgefordert, das Passwort einzugeben. Wenige Augenblicke später erscheint die Nachricht.

Beachten Sie, dass Sie bei der Nutzung mehrerer Rechner die Schlüsselverwaltung manuell synchron halten müssen. Eine wichtige Hilfe ist wieder „Enigmail -> Schlüssel verwalten -> Datei exportieren“, wobei Sie einfach sämtliche Schlüssel markieren. Die resultierende Ascii-Datei lässt sich auf dem nächsten Rechner importieren.

Verschlüsselte Mail mit GnuPG und Enigmail: Wenn Sie versuchen, verschlüsselt zu senden, aber für den Adressaten kein Schlüssel vorliegt, öffnet sich automatisch die Schlüsselverwaltung.

9. Verschlüsselte Browser-Synchronisierung

Die Browser-Synchronisierung von Lesezeichen, Einstellungen, Erweiterungen und Skins bedeutet für Nutzer mehrerer Geräte unschätzbaren Komfort. Bedenklich scheint allerdings der Nebenaspekt, dass dabei Mengen von persönlichen Daten auf Google- oder Mozilla-Servern hinterlegt werden müssen.

Empfehlung: Firefox verschlüsselt standardmäßig alle Daten, wobei der Schlüssel auf dem Gerät des Benutzers verbleibt. Damit ist der Mozilla-Browser in puncto Datenschutz erste Wahl. Jedoch lässt sich auch der Google-Browser so einstellen, dass alle Synchronisierungsdaten sicher verschlüsselt sind.

Abhörsichere Synchronisierung für Chrome/Chromium: Standardmäßig werden hier nur die Kennwörter verschlüsselt. Aber unter „Einstellungen -> Erweiterte Synchronisierungseinstellungen“ (vorherige Google-Anmeldung vorausgesetzt) gibt es die Option „Alle synchronisierten Daten […] verschlüsseln“, bei der Sie ein individuelles Kennwort zur Sync-Verschlüsselung vergeben, das unabhängig vom Google-Kennwort ist. Der Komfortverlust ist nicht gravierend, da Sie dieses Kennwort auf jedem weiteren Gerät nur ein einziges Mal eingeben müssen. Damit landen sämtliche Daten verschlüsselt auf dem Google-Server, der Schlüssel dazu (Kennwort) verbleibt auf dem lokalen Gerät.

Sync-Daten verschlüsseln: Diese Maßnahme hält Googles Big-Data-Sammler von Lesezeichen und Verlaufsdaten fern.

10. Verschlüsselung im Internet

Der Datenaustausch über unverschlüsselte Verbindungen ins Internet kann im Klartext mitgelesen werden. Das gilt verschärft in öffentlichen Funknetzen, innerhalb von lokalen Firmennetzen und theoretisch auch außerhalb des lokalen Netzwerks an Verteilerknoten, die von Providern, Geheimdiensten oder Hackern abgehört werden. Im Fokus stehen die meistgenutzten Protokolle HTTP (Webseiten) und FTP (Datentransfer). Die folgenden Infos beziehen sich ausschließlich auf die Client-Seite des Web-Nutzers, nicht auf die Server-Seite des Betreibers.

HTTP und HTTPS: Im Sinne des Datenschutzes ist, wo immer möglich, auf verschlüsselte Verbindung zu achten. Zwingend erforderlich ist dies überall, wo zur Anmeldung persönliche Zugangsdaten verschickt werden (Bank, Online-Shop). Alle Browser zeigen sichere (HTTPS-) Web-Adressen in der Adresszeile mit einem grünen Schloss-Symbol an. HTTPS garantiert, dass es für Kriminelle und Geheimdienste selbst dann nichts Lesbares zu lesen gibt, wenn der Angreifer im Netz sitzt und den Netzverkehr abhört.

Firefox und Chrome signalisieren unverschlüsselte HTTP-Sites explizit als „nicht sicher“. Dies ist kein Urteil über die Seriosität der Website, sondern ausschließlich die Aussage, dass eine Site keine TLS- (Transport Layer Security) oder SSL-Verschlüsselung bietet (Secure Socket Layer). Datenschutztechnisch noch einen Schritt weiter geht Firefox, der Anmeldungen auf unverschlüsselten Seiten automatisch bremst: „Diese Verbindung ist nicht verschlüsselt…“. Das ist im Prinzip verdienstvoll, kann aber – insbesondere bei lokalen Servern (Router, NAS) – auch nerven und über „about:config“ deaktiviert werden („security.insecure_field_warning…“).

FTP, FTPS und SFTP: Das File Transfer Protocol (FTP) bietet keine Verschlüsselung. Daher sollten Sie sich die Anmeldung auf unverschlüsselten FTP-Servern zumindest in öffentlichen WLANs verkneifen. Man mag sich als Client-Nutzer auf den Standpunkt stellen, das Sicherheitsproblem sei Sache des Server-Betreibers. Jedoch fällt der Erstverdacht zunächst auf den Client-Nutzer, wenn dessen unverschlüsselte Anmeldedaten abgegriffen und destruktiv missbraucht werden. Sicherheitsbewusste FTP-Betreiber werden FTPS (FTP mit SSL- oder TLS-Verschlüsselung) anbieten. FTP-Clients wie Filezilla zeigen im Servermanager unter „Verschlüsselung“ an, ob die Verbindung abhörsicher ist.

Eine sichere Alternative zu FTP ist der Datenaustausch über SSH, das über sein Protokoll SFTP auch die direkte verschlüsselte Dateiübertragung vorsieht. Mit den ähnlich klingenden Protokollen FTP und FTPS hat das nichts zu tun, sondern mit SSH-Servern, die auf Linux-Systemen SSH-Verbindungen entgegennehmen. Mit Rücksicht auf Windows-Systeme, die standardmäßig keinen SSH-Client enthalten, bleibt FTP und FTPS das verbreitete Austauschprotokoll. Wirklich triftig ist diese Rücksicht auf Windows allerdings nicht, da der auch unter Windows vielgenutzte FTP-Client Filezilla auch das Protokoll „SFTP – SSH File Transfer Protocol“ beherrscht.

Firefox ultravorsichtig: Der Mozilla-Browser zeigt bei Anmeldungen auf unverschlüsselten Web-Seiten diese Warnung.

Exkurs: Unentbehrlicher Browser-Tipp

Mit dem Thema „Verschlüsselung“ hat dieser kleine Exkurs nichts zu tun, aber viel mit dem verwandten Thema „Datenschutz“: Wer gerade vorhat, sich eine Jacke, Gitarre oder Kettensäge zu kaufen, sollte die Angebote tunlichst nicht über normales Google & Co. recherchieren. Dann sieht man nämlich die nächsten Wochen im Web überall nur noch Jacken, Gitarren und Kettensägen. Einfache Abhilfe schafft der „Private Modus“ im Firefox oder „Inkognito“ bei Chrome. Damit können Sie in Google & Co. suchen, ohne die Werbeindustrie über Ihre Interessen zu informieren. Wer solche Belästigung generell hasst, kann auch die Suchmaschine duckduckgo.com verwenden – dort ist der Datenschutz inklusive.


Veracrypt-Verschlüsselung

Truecrypt und der Nachfolger (Fork) Veracrypt sind faszinierende Verschlüsselungssoftware und beste Wahl für mobile Rechner und Datenträger. Dieser Beitrag erklärt den Umgang und plädiert für das KISS-Prinzip („Keep it simple, stupid“).

Die jüngsten Versionen von Ubuntu und allen Abkömmlingen haben die Nachfrage nach einer zuverlässigen Verschlüsselungssoftware wieder schlagartig erhöht. Seit das Home-Verzeichnis nicht mehr standardmäßig ab Installation durch Ecryptfs geschützt werden kann, muss vor allem auf mobilen Notebooks eine Alternative her. Auch USB-Datenträger, die persönliche Daten enthalten und viel unterwegs sind, brauchen Verschlüsselungsschutz. Der Truecrypt-Nachfolger Veracrypt ist hierfür allererste Wahl.

Veracrypt im Kurzporträt

Veracrypt ist Open-Source-Software und kann daher keine geheimen Hintertüren für Geheimdienste verbergen. Es eignet sich für große und sehr große Datenmengen, allerdings nicht für den Transfer in die Cloud, da auch bei geringen Datenänderungen immer der Transport eines gesamten Volumes („Container“) notwendig wäre. Die Verschlüsselungstechniken und nebenbei auch die Benutzeroberfläche, stehen überwiegend auf der Basis des eingestellten Vorgängers Truecrypt, der als praktisch unüberwindbar eingestuft wurde. Das mysteriöse Ende von Truecrypt im Jahr 2014 wurde damals mit angeblichen Sicherheitslücken begründet, die jedoch nie nachgewiesen wurden. Dies lässt bis heute Gerüchte blühen, dass Truecrypt keineswegs fehlerhaft, sondern im Gegenteil zu gut war, um noch länger von staatlicher Exekutive und/oder Wirtschaft geduldet zu werden.

In der Tat geht der Anspruch von Truecrypt und dem Nachfolger Veracrypt deutlich über so harmlose Datenschutzmotive hinaus, Mitarbeiteradressen oder Gehaltstabellen zugriffssicher zu verschlüsseln. Truecrypt/Veracrypt haben das Potential, auch die Daten von strafrechtlich oder politisch Verfolgten zu schützen, die mit professionellen Computerforensikern als Gegner rechnen müssen.

Für „normale“ Nutzer mit legitimen Ansprüchen auf Privatsphäre ist diese Komplexität von Veracrypt durchaus ein Problem: Container, Volume, Partition, Standard/Versteckt, Verschlüsselungsalgorithmus, Hash-Algorithmus, Passwort, PIM, Keyfiles, Dateisysteme, Header-Daten, Cache-Daten – das sind anspruchsvolle und in Veracrypt überall präsente Begriffe. Da muss man erst den Überblick gewinnen, was nun wirklich relevant ist oder doch eher in die Paranoia-Ecke gehört. Der Nutzer sollte sich auf das für ihn Notwendige konzentrieren. Wer mit Veracrypt-Optionen leichtfertig spielt, erzielt schnell maximalen Datenschutz – indem er sich selbst aussperrt.

Im Veracrypt-Assistenten: Anfänger sollten sich an die einfachen Optionen halten, Standards übernehmen und elaborierte Möglichkeiten erst mal ignorieren (hier „PIM“ und „Keyfiles“).

Wie jede Software ist auch Veracrypt nicht fehlerfrei. 2016 wurde ein Bug bekannt, durch den sich versteckte Volumes nachweisen lassen (zu versteckten Volumes siehe gleichnamigen Kasten). Dieser Bug ist seit Version 1.18a behoben, aktuell ist Version 1.22. Eine weitere Anfälligkeit ist akademisch und betrifft außerdem ausschließlich die Komplettverschlüsselung von Festplatten oder sogar der Systempartition (nur in der Windows-Variante). Die theoretische Lücke kann bei physischem Zugriff einer Fremdperson nach einer Speicheranalyse die Passwortlänge preisgeben.

Weitere theoretische Angriffsszenarien sind nicht spezifisch, sondern gelten generell für jedes kryptografische Verfahren: Die Kennworteingabe kann auf kompromittierten Rechnern durch Keylogger bespitzelt werden. Ferner beherrschen Forensiker Kaltstartattacken, bei welchen nach einem Neustart mit einem Minimalsystem der RAM-Speicher ausgelesen wird, der für kurze Zeit noch den gesamten Inhalt inklusive Kennwörter preisgeben kann.

Noch zwei allgemeine Hinweise:

1. Der Einsatz von Veracrypt erfordert immer wieder Geduld: Das Laden („Mount“), mehr noch das Entladen („Dismount“) ist häufig zäh, sollte Sie aber keinesfalls veranlassen, den Vorgang durch ein „Auswerfen“ des Datenträgers mit Betriebssystem-Werkzeugen oder durch schlichtes Abziehen eines USB-Medium zu unterbrechen.

2. Beim Hantieren mit Veracrypt-Containern werden Sie zusätzlich zum Container-Passwort auch nach dem sudo-Kennwort gefragt werden, das mit dem Veracrypt-Passwort nichts zu tun hat und vermutlich anders lautet.

Plattformen und Installation

Anlaufstelle ist die Projektseite https://www.veracrypt.fr/en/Downloads.html. Veracrypt gibt es für Linux (auch Free BSD, Raspbian), Windows und Mac OS. Somit steht einer plattformübergreifenden Nutzung nichts im Wege. Für Windows gibt es sogar neben der installierbaren eine portable Variante, was die Mitnahme der Veracrypt-Software parallel zu den verschlüsselten Daten auf USB ermöglicht. Generell ist Veracrypt für Windows nochmal deutlich komplexer, da es auch Systempartitionen verschlüsselt und für externe Datenträger eine In-Place-Verschlüsselung anbietet – also die Verschlüsselung bestehender Datenträger ohne Datenverlust.

Unter Mac OS ist neben Veracrypt das zusätzliche OSXFUSE erforderlich, um Veracrypt-Container mit Benutzerrechten laden zu können. Unter Ubuntu, Mint & Co. ist die Installation über die genannte Webseite zwar möglich, der deutlich bequemere Weg führt jedoch über das PPA:

sudo add-apt-repository ppa:unit193/encryption
sudo apt-get update
sudo apt-get install veracrypt

Im Unterschied zur Windows-Version bietet Veracrypt unter Linux keine deutsche Übersetzung, weswegen wir uns bei den nachfolgenden Menübezeichnungen an die englischsprachigen halten.

Veracrypt ist ein Tool für PCs und Notebooks. Smartphone und Tablets mit Android und iOS werden nicht direkt unterstützt. Die nachfolgend der Vollständigkeit halber genannten Apps sollten zumindest das Öffnen und Lesen von Veracrypt-Volumes ermöglichen. Mit technischen Limits und Komforteinschränkungen ist jedoch überall zu rechnen. Für Android finden Sie im Google Play Store das Tool EDS (Encrypted Data Store) in einer kostenlosen Lite-Version: (goo.gl/Ce6wmg) und der Vollversion für 7,49 Euro (siehe goo.gl/1gsakw). Die Lite-Version hat gravierende Beschränkungen (siehe http://www.sovworks.com). Für iOS gibt es den Crypto Disks & File Explorer (goo.gl/vT4yNJ) und Disk Decipher (goo.gl/QGdkdq) für je einen Euro.

Verschlüsselter USB-Stick: Das Systemtool Gnome-Disks (rechts) zeigt an, dass es mit diesem Datenträger nichts anfangen kann. Nur Veracrypt kann ihn mounten.

Datencontainer oder Datenträger?

Veracrypt für Linux kann mit verschlüsselten Containerdateien arbeiten oder komplette (externe) Datenträger verschlüsseln. Die erste Variante ist die technisch einfachere und auch vom Assistenten („Creation Wizard“) die stets empfohlene.

Datenträgerverschlüsselung: Da Veracrypt unter Linux einen Datenträger oder eine Partition komplett löschen und neuformatieren muss, um ihn danach verschlüsselt anzubieten, gibt es nur einen nennenswerten Grund für die Komplettverschlüsselung interner oder mobiler Laufwerke: Der Datenträger soll sich wie ein unformatiertes Laufwerk verhalten. Ein Veracrypt-Laufwerk präsentiert sich unter Linux nämlich als unbekanntes Dateisystem, und Windows will es umstandslos sofort formatieren. Nur Veracrypt selbst kann das Laufwerk laden.

Ist dies gewünscht, dann verwenden Sie im Veracrypt-Assistenten nach „Create Volume“ die Option „Create a volume within a partition/drive“, danach „Standard VeraCrypt volume“ und wählen dann mit „Select Device“ den Datenträger. Das Gerät selbst, etwa /dev/sdc, können Sie nur verwenden, wenn der Datenträger im Rohformat ohne jede Partition vorliegt. Typischerweise ist eine Partitionsangabe wie /dev/sdc1 die richtige Wahl. Wenn nur eine Partition vorliegt, ist das Resultat von /dev/sdc und /dev/sdc1 dasselbe. Wenn der Datenträger keine unverschlüsselte Partition enthalten soll, sorgen Sie vorab mit Gparted oder Gnome-Disks dafür, dass keine oder nur eine Partition vorliegt. Alle weiteren Optionen der Einrichtung unterscheiden sich nicht vom Anlegen eines einfacheren Containers, das nachfolgend genauer beschrieben ist. Für das Mounten verschlüsselter Datenträger verwenden Sie im Veracrypt-Hauptfenster statt „Select File“ (für Container) die Schaltfläche „Select Device“.

Dateisysteme: Sollen Veracrypt-Daten unter Linux wie Windows funktionieren, ist ein kompatibles Dateisystem wichtig – einmal für den Datenträger, zum andern für den Container.

Datencontainer: Um eine neue Containerdatei anzulegen, klicken Sie im Hauptfenster auf „Create Volume“, dann auf „Create an encrypted file container“ und auf “Standard VeraCrypt volume“. Hier geben Sie Pfad und Namen einer bisher nicht existierenden Datei an. Unter „Encryption Options“ belassen Sie alles auf den Standardvorgaben. Danach geben Sie die Größe der Containerdatei an. Diese sollte großzügig ausfallen, weil die Kapazität nicht mehr zu ändern ist. Veracrypt verwaltet auch sehr große Container mühelos, andererseits bedeuten viele kleine Container erhöhten Verwaltungsaufwand und die Gefahr, Einstellungen und Passwörter zu vergessen.

Danach kommt die Passwortvergabe. Speziellere Optionen bei diesem Schritt sind im nächsten Punkt beschrieben. Für die meisten Szenarien ist ein komplexes Passwort völlig ausreichend. Die anschließenden „Format Options“ gelten für das innere Dateisystem des Containers und sind wichtig: Wählen Sie am besten FAT oder NTFS, wenn Sie die Daten auch unter Windows brauchen. Mit anderen Worten: Ein USB-Stick, den Sie unter allen Systemen nutzen möchten, muss nicht nur selbst ein allgemein kompatibles Dateisystem haben, sondern auch der Veracrypt-Container muss mit einem solchen formatiert sein. Im Allgemeinen kann man bei der Container-Formatierung mit NTFS nichts falsch machen. FAT genügt auch, sofern der Container keine Dateien größer als 4 GB aufnehmen muss.

Die nächste Option lautet „Cross-Platform Support“. Hier muss die obere Einstellung aktiviert werden, wenn ein Container auch in anderen Betriebssystemen genutzt werden soll („I will mount the volume on other platforms“). Beachten Sie aber, dass es sich hier nur um ein zusätzliches Container-Flag handelt, das nichts nützt, wenn das Dateisystem des Datenträgers plus das Dateisystem des Containers nicht kompatibel sind (siehe oben).

Zur Schlüsselerstellung auf Basis des Passworts erwartet Veracrypt danach Mausbewegungen im eigenen Fenster. Schließen Sie den Vorgang am Ende mit „Format“ ab. Damit ist der Container einsatzbereit.

Um Container zu verwenden, navigieren Sie mit „Select File“ im Hauptdialog zur Containerdatei. Mit Klick auf „Mount“ wird diese im Dateimanager geöffnet (falls nicht, lässt sich das unter „Preferences -> System Integration“ einstellen). Linux mountet Container nach „/media/veracrypt[nummer]“, Windows auf freie Laufwerkbuchstaben. Auf diesen Datenträgern lesen und arbeiten Sie wie auf einem normalen Laufwerk. Mit „Dismount“ im Hauptdialog entladen Sie den Container, der somit wieder geschützt ist.

Ob Sie Container oder Datenträger mounten wollen, müssen Sie selbst wissen. Hier ist es ein USB-Stick („Datenträger“) unter Windows, mit dem Windows selbst nichts anzufangen weiß.

Anspruchsvollere Passwort-Optionen

Bei der Passwortvergabe haben wir im vorangehenden Abschnitt zwei Optionen übergangen, weil wir sie für die Basisbenutzung von Veracrypt nicht empfehlen. Interessant sind sie durchaus, aber sie erhöhen Komplexität und Verwaltungsaufwand.

Container mit Passwort und PIM: Beim Erstellen des Containers gibt es im Dialog der Passwort-Definition die zusätzliche Option „Use PIM“. Hier kann eine Zahl eingetragen werden. Geschieht dies, so genügt das richtige Kennwort zum Öffnen dieses Containers nicht mehr. Hier ist dann zusätzlich die exakte PIM-Zahl erforderlich. Vereinfacht gesagt, handelt es sich um ein zusätzliches Kennwort für deutlich erhöhten Schutz. Technisch definiert der Personal Iterations Multiplier die Anzahl der Wiederholungen von Hashfunktionen, die dann beim genauen angegebenen PIM-Wert den Entschlüsselungsheader generieren. Beachten Sie, dass ein hoher PIM-Wert den Mount-Vorgang eines Volumes deutlich verzögert. Das einmal geladene Volume ist dann aber so schnell wie gewohnt.

Container mit Passwort und Keyfile: Der Passwortdialog hält noch eine weitere interessante Möglichkeit parat – nämlich die „Keyfiles“, Schlüsseldateien. Dabei kann es sich um eine beliebige Datei handeln, die Veracrypt zum Öffnen des Containers zusätzlich zum Passwort benötigt. Entscheidend für die Schlüsselfunktion dieser Datei sind deren erste 1024 Bytes, nicht Pfad oder Dateiname. Das heisst, dass sich der Inhalt dieser Schlüsseldatei keinesfalls ändern darf, das Verzeichnis oder der Dateiname jedoch durchaus. Ideale Kandidaten für Schlüsseldateien sind Binärdateien, PDFs oder ISO-Images, die normalerweise nie geändert werden. Ein Keyfile ist wie die PIM-Zahl additiv: Es ersetzt nicht das Passwort, sondern muss zusätzlich vorliegen. Es ist ein guter Schutz gegen Keylogger, weil das Kennwort alleine nicht mehr ausreicht. Das Keyfile kann ferner auch ein schwächeres Kennwort rechtfertigen und die Kennworteingabe verkürzen. Für mobile USB-Laufwerke ist die Keyfile-Methode nicht geeignet. Möglich wäre aber ein geschützter USB-Stick, für welchen das Keyfile sowohl zu Hause wie im Büro vorliegt – aber keinesfalls auf dem Stick selbst.

Container mit Keyfile, aber ohne Passwort: Sie können Veracrypt-Container auch mit leerem, also ohne Kennwort anlegen und sie nur durch Angabe einer Schlüsseldatei öffnen. Das ist aber nicht nur unsicherer, sondern wahrscheinlich auch organisatorisch aufwändiger als sich ein Kennwort zu merken.

Schaltfläche „Volume Tools“: Für einen geladenen Container lassen sich alle bisherigen Einstellungen nachträglich ändern (unter Windows muss der Container ausgewählt, darf aber nicht geladen sein). Das erledigen Sie im Hauptfenster über „Volume Tools“. Sie können ein neues Passwort vergeben oder Keyfiles hinzufügen oder entfernen. Beachten Sie, dass die Aktion in jedem Fall noch einmal eine korrekte Anmeldung mit den bisherigen Daten erfordert (obwohl der Container bereits gemountet ist). Durchaus kompliziert ist etwa die Definition einer neuen Schlüsseldatei („Add/Remove Keyfiles“). Dazu müssen Sie nämlich für die Anmeldung „Use keyfiles“ aktivieren und die bisherige Datei angeben, unter „New“ erneut „Use keyfiles“ aktivieren und dort das neue definieren.

Nachträgliche Änderungen: Mit „Volume Tools“ können Passwort, PIM und Schlüsseldateien eines Containers neu definiert werden.

Versteckte Veracrypt-Volumes

Im zweiten Fenster des Assistenten kann man mit „Hidden VeraCrypt Volume“ einen versteckten Container innerhalb eines sichtbaren Containers anlegen. Der Vorgang beginnt zunächst mit dem „Outer Volume“. Nach Erstellung, Kennwortvergabe und Bestückung mit Dateien (was auch später geschehen kann), führt der Assistent automatisch weiter zum „Hidden Volume“, das im äußeren Container untergebracht wird. Wichtig ist, dass dieser zweite Container ein völlig anderes Kennwort erhält. Nutzt man beim späteren Mounten der Containerdatei das erste Kennwort, so öffnet sich das äußere Volume. Gibt man hingegen das zweite Kennwort ein, öffnet dies das innere, versteckte Volume. Laut Hersteller ist das innere Volume auch bei geöffnetem äußeren Volume und genauer Datenanalyse nicht nachweisbar.

Natürlich sind versteckte Container eine reichlich paranoide Methode, wenn es nur um den Datenschutz einiger Tabellen oder Texte geht. Das Prinzip „Plausible Deniability“ (glaubhafte Abstreitbarkeit) soll dem Datenbesitzer unter Erpressung oder Folter die Möglichkeit geben, ein Passwort preiszugeben – aber eben nicht das entscheidende. Wer tatsächlich mit solcher Situation rechnen muss, sollte im „Outer Volume“ zumindest scheinbar interessante Daten bereithalten.



Linux-Hürden für Umsteiger

Linux ist anders als Windows. Wer bisherigen Windows-Nutzern allein mit der Wahl des richtigen Linux ein Quasi-Windows verspricht, unterschlägt strategische und technische Hürden. Das Wichtigste bespricht dieser Beitrag.

Aufmacher_WinLin

Da es hier um Linux für Windows-Umsteiger geht, geht es logischerweise um Desktopsysteme für PCs und Notebooks. Die großartigen Möglichkeiten, die Linux (und zwar nur Linux) auf kleinen Servern eröffnet, bleiben komplett außen vor. Klipp und klar: Linux kann Windows auf dem Desktop ersetzen – aber nicht überall und nicht immer ohne Hindernisse.

1. Die Vielfalt der Distributionen

Für Windows-Umsteiger ist der artenreiche Linux-Zoo undurchsichtig: Es gibt eine dreistellige Anzahl von Linux-Varianten (http://distrowatch.com). Empfehlungen mit dem Motto „Das beste Linux für Windows-Umsteiger“ sind nicht verkehrt, aber zu relativieren. Solche Aussagen insinuieren, dass die Wahl des richtigen Systems alle Umstiegsprobleme aus dem Weg räumte. Richtig ist, dass manche Distributionen für Einsteiger überhaupt nicht in Betracht kommen, weil Installation, Konfiguration, Oberfläche oder alles zusammen unzumutbare Anforderungen stellen würden. Richtig ist ferner, dass Windows-Umsteiger sich nicht auf Linux-Exoten einlassen sollten: Die Nachhaltigkeit solcher Projekte ist ungewiss, und eine heute hochgelobte Neuerscheinung kann zwei Jahre später eingestellt sein.

Dieser Artikel ist keine Distributionsberatung. Wir begnügen uns hier mit der pauschalen Empfehlung für Debian/Ubuntu-basierte Distributionen (Debian, Ubuntu, Kubuntu, Ubuntu Mate, Xubuntu, Lubuntu, Linux Mint). Diese garantieren Nachhaltigkeit und lange Supportzeiträume. Der Installer aller Ubuntu-Varianten inklusive Linux Mint ist das Komfortabelste, was unter Linux anzutreffen ist, und auch der Debian-Installer ist Einsteiger-tauglich. Unter den Bedienkonzepten dieser Systeme kommt Linux Mint mit dem Cinnamon-Desktop den Gewohnheiten eines Windows-Nutzers am meisten entgegen. Die Ubuntu-Spielarten Ubuntu und Kubuntu erfordern mehr Gewöhnung, sind aber wie Ubuntu Mate, Xubuntu und Lubuntu schnell „habituiert“.

Ubuntu mit Gnome: Der innovative Desktop ist auf einfache Bedienung mit Windows-Taste und wenigen Mausklicks ausgelegt. Beste konservative Alternative ist Linux Mint mit Cinnamon.

2. Die Vielfalt der Desktop-Oberflächen

Punkt 1 hat es schon angesprochen: Zur Vielzahl der Linux-Distributionen kommt eine weitere, für Windows-Nutzer verwirrende Diversifizierung: Populäre Systeme wie Debian, Ubuntu und Linux Mint bieten für denselben Systemunterbau mehrere Desktop-Umgebungen an (Oberflächen), und die Wahl der Oberfläche ist mehr als nur eine Geschmacksfrage: Sie bestimmt maßgeblich die Konfigurierbarkeit und Anpassungsfähigkeit des Systems, die mitgelieferte Standardsoftware und den Ressourcenverbrauch.

Die wichtigsten Desktops sind die Schwergewichte KDE und Gnome 3 sowie die Leichtgewichte XFCE und LXDE (ideal für ältere Rechner). Cinnamon, Standardoberfläche von Linux Mint, und Mate sind wichtige Abspaltungen der älteren Gnome-2-Basis und führen dessen klassisches Bedienkonzept mit Systemleisten und Hauptmenü fort. Mate und Cinnamon, ebenso die sparsamen Oberflächen XFCE und LXDE für schwächere Hardware sind für Umsteiger leicht nachvollziehbar. KDE ist extrem anpassungsfreudig, aber auch relativ komplex, während Gnome 3 mit gewissen Parallelen zu Windows 10 ungewöhnlich, aber klar und simpel ausfällt. Es gibt neben den genannten eine Reihe weiterer Linux-Oberflächen mit exotischem Charme oder verblüffender Anspruchslosigkeit. Windows-Nutzer sollten davon besser Abstand halten.

Beachten Sie, dass einige Ubuntu-Distributionsnamen den benutzten Desktop anzeigen: Der Name „Kubuntu“ ist zu lesen als „Ubuntu mit KDE“, während Xubuntu“ und „Lubuntu“ als „Ubuntu mit XFCE bzw. LXDE“ aufzulösen ist. Das „Ubuntu“ ohne Zusatz meint die Hauptvariante mit Gnome-Desktop.

Sparsame Desktops: Distributionen mit XFCE und LXDE (im Bild Mint mit XFCE) laufen auch auf älterer Hardware mit wenig Speicher. Die Optik ist konservativ, aber nicht spartanisch.

3. Das Kriterium „Homogenität“

Windows ist Windows, und alles, was das System mitbringt, trägt die Microsoft-Handschrift. Linux ist der Systemkern – der Rest jedoch ist modular. Für Umsteiger ist es ein oft unterschätztes Problem, dass Oberfläche, Systemzubehör, Software nicht aus einer Hand sind. Der Nutzer muss mit unterschiedlicher Fehlertoleranz und Qualität rechnen: Die eine Komponente ist einsteigerfreundlich und warnt vor Fehlgriffen, die nächste erwartet hingegen einen Benutzer, der genau weiß, was er tut.

Wer als Umsteiger solches Gefälle vermeiden will, nimmt am besten ein Ubuntu oder Linux Mint und nutzt für die Systemverwaltung ausschließlich die Systemwerkzeuge, welche die Distribution mitbringt. Die vorinstallierten Systemtools populärer Distributionen sind hinsichtlich Zielgruppe und Qualität homogen und ausgereift.

Win 32 Disk Imager für 1:1-Kopien von ISO-Abbildern: Das Hilfsprogramm ist das technische Windows-Äquivalent des Linux-Tools dd. Wichtig ist die genaue Kontrolle des Ziellaufwerks.

4. Handarbeit mit ISO-Abbildern

Suche und Download einer Distribution sind kein Abenteuer, da eine Websuche nach einem populären System wie etwa „Kubuntu“ mühelos zur Projektseite und von dort zum ISO-Download führt. Das ISO-Abbild muss dann aber bootfähig auf DVD oder USB kopiert werden. Diese für Linux-User vertraute Prozedur ist für Windows-Nutzer keineswegs selbstverständlich.

Das einschlägige Windows-Werkzeug, um ISO-Abbilder auf CDs (ISO bis 700 MB) oder DVDs (ISO größer als 700 MB) zu brennen, ist das Tool Imgburn (auf Heft-DVD, Download unter http://imgburn.com). Wählen Sie hier die Option „Imagedatei auf Disc schreiben“. Der wichtigste Punkt des Folgedialogs ist links oben „Quelle“ mit dem kleinen Ordnersymbol, über das Sie dann zur ISO-Quelldatei navigieren. Bei eingelegtem Rohling wird dann die bunte Schaltfläche links unten aktiv, mit der Sie den Schreibvorgang auslösen.

Das beste Werkzeug, um unter Windows ISO-Abbilder auf USB oder SD-Karten zu kopieren, ist der Win 32 Disk Imager (auf Heft-DVD, Download unter http://sourceforge.net/projects/win32diskimager). Hier genügt es, die Quelldatei („Image File“) und das Zielgerät („Device“) anzugeben. Die Schaltfläche „Write“ startet den Kopiervorgang. Der Win 32 Disk Imager schreibt eine bitgenaue Rohkopie auf das Zielgerät und wird nur dann ein bootfähiges Medium erstellen, wenn das ISO-Abbild eine Bootumgebung enthält. Dies ist aber bei allen uns bekannten Abbildern der Fall.

Eine Alternative, um unter Windows ISO-Abbilder auf USB oder SD-Karten zu kopieren, ist Unetbootin (auf Heft-DVD, Download unter http://unetbootin.sourceforge.net). Hier wählen Sie im Dialog unten die Option „Abbild“ und navigieren mit der Schaltfläche „…“ zur gewünschten Datei. Nach Klick auf „Öffnen“ erscheint der komplette Pfadname im Eingabefeld. Danach wählen Sie neben „Typ“ die Option „USB-Laufwerk“, und neben „Laufwerk“ geben Sie den Laufwerksbuchstaben des USB-Sticks an. „OK“ startet den Kopiervorgang. Anders als der Win 32 Disk Imager schreibt Unetbootin seine eigene Bootumgebung auf das Zielmedium. Das Medium wird somit auch bootfähig, wenn das ISO-Abbild keine Bootumgebung beinhaltet. Andererseits funktioniert diese Bootumgebung aber nur für Ubuntu-basierte Distributionen.

5. Livesystem und Installationsmedium

Windows-Nutzer kennen eine Setup-DVD zur Systeminstallation, aber keine Livesysteme. Die ISO-Abbilder aller populären Linux-Desktop-Distributionen sind aber beides – Livesystem inklusive Installer. Das ist ein großzügiger Service, weil er das Ausprobieren eines Systems erlaubt und die tatsächliche Installation direkt aus dem laufenden Livesystem. Die weitreichenden Möglichkeiten, die ein Livesystem bietet, sind aber auch Anlass zu Missverständnissen: Ist ein ISO-Livesystem, das auf ein beschreibbares Medium (USB) kopiert wird, nicht genau dasselbe wie ein auf USB installiertes Linux? Nein! Livesysteme bleiben auch auf einem beschreibbaren Laufwerk unveränderlich, alle Änderungen gehen beim nächsten Shutdown wieder verloren. Wer Linux auf USB installieren will, muss die Installation genauso durchlaufen wie bei der Einrichtung auf interner Festplatte.

6. Hürden bei der Installation

Ein Linux-Setup fordert mehr Angaben als ein Windows-Setup, das im Kern nur die Zielpartition (sofern eine Auswahl besteht) und den Erstbenutzer abfragt. Erste Ursache dafür ist, dass Linux kein kommerzielles Lizenzmodell und keine Bindung an die Hardware kennt, daher beliebig oft und auch auf USB-Datenträger installiert werden kann. Ein zweiter Grund ist die Tatsache, dass der Bootloader auf einem beliebigen Datenträger gespeichert werden kann. Diese großzügigen Möglichkeiten sind komplexer als bei Windows und äußern sich notgedrungen auch in technischer Weise. Wenn die Partitionierung im Linux-Installer manuell erfolgt, gibt es eine weitere technische Hürde: Die meisten Distributionen wollen für die Speicherauslagerung eine extra Swap-Partition.

Ohne auf die unterschiedlichen Installer einzeln einzugehen, unter denen der Ubuntu/Mint-Installer „Ubiquity“ Komfortmaßstäbe setzt, gelten überall folgende Prinzipien:

  1. Linux benötigt wie Windows nicht unbedingt eine komplette Festplatte, aber eine eigene Partition. Verfügbare Partitionen wird der Installer in der Form „/dev/sd[x][n]“ anzeigen – etwa „/dev/sda1“. Es muss absolute Sicherheit herrschen, hier das richtige Laufwerk „[x]“ und die richtige Partition „[n]“ anzugeben, weil diese Partition komplett überschrieben wird. Wichtigste Orientierung bieten die Größenangaben für die Partitionen. Weitere Abfragen für eine Linux-Systempartition gelten dem Dateisystem („ext4“ empfohlen) und dem Einhängepunkt („/“ für das Wurzelverzeichnis).
  2. Für den Bootloader ist im Normalfall „/dev/sda“ vorgegeben. Das ist die erste interne Festplatte, so wie es auch Windows automatisch festlegt, und das ist in Ordnung, wenn Sie Linux auf eine interne Festplatte installieren. Bei Installation auf USB-Laufwerke müssen Sie hingegen als Bootloader-Ziel das Laufwerk angeben, wohin Sie auch das System installieren: Ist die Systempartition etwa „/dev/sdc1“, dann gehört der Bootloader auf das Gerät „/dev/sdc“. Wird dies übersehen, ist der USB-Stick nicht bootfähig.
  3. Je nach Installer kann das Einrichten der zusätzlichen Swap-Partition lästig bis unrealisierbar sein, da nicht jeder Installer ein Partitionierungswerkzeug anbietet. Einfachste Lösung ist es, auf die Swap-Partition zu verzichten. Jedoch lässt sich eine Festplatte auch vorab mit Gparted unter Linux oder mit der Windows-Datenträgerverwaltung so aufteilen, dass eine große Partition für das System und eine kleine (etwa 8 GB) für die Auslagerung entsteht. Die richtigen Dateisysteme – „ext4“ für das System, „swap“ für die Auslagerung kann dann später der Linux-Installer einrichten.

Bei Verwendung des Ubuntu-Installers werden Sie mit diesen technischen Fragen nur belästigt, wenn Sie unter „Installationsart“ die manuelle Einrichtung „Etwas Anderes“ wählen (etwa für ein Setup auf USB). Bei anderen Optionen  – Installation auf primäre Festplatte oder Dualboot neben Windows – übernimmt das Setup alles automatisch.

Ubuntu-Installer: Bei USB-Installationen müssen Sie Partitionen und Bootloader manuell einrichten (hier auf /dev/sdc). Die Einrichtung auf interne Festplatten verläuft vollautomatisch, sofern die vom Installer analysierte Situation zutrifft.

7. Unter Linux funktioniert nicht jede Hardware

Nicht jeder Hersteller hält es für nötig, Linux-Treiber für seine Hardware zu entwickeln. Resultat ist, dass dann dieses Gerät unter Linux schlicht nicht funktioniert. Kernkomponenten wie Sata, Ethernet, Grafikarte, Monitor, Maus, Tastatur sind nicht betroffen, wohl aber USB-Drucker, Scanner, WLAN-Adapter, TV-Sticks insbesondere von Billiganbietern. Die Chancen, anhand exakter Gerätekennungen und Chip-Revisionen doch noch Abhilfe im Web zu finden, sind begrenzt und gegebenenfalls für Umsteiger zu knifflig.

Keine Abhilfe, aber präventive Problemerkennung bieten die Livesysteme der Linux-Distributionen. Alles, was im Livesystem problemlos funktioniert, wird im selben System auch nach Installation auf Festplatte funktionieren. Ein Sonderfall sind brandneue Rechner mit aktuellsten Prozessoren: Hier ist es wichtig, ein Linux mit möglichst aktuellem Kernel zu verwenden, der den neuesten CPU-Entwicklungen bereits Rechnung trägt. Am Beispiel Ubuntu wäre in solchen Fällen die jüngste Version 17.10 (Kernel 4.13) der Langzeitversion 16.04.3 (Kernel 4.10) vorzuziehen.

8. Energiesparfunktionen unter Linux

Windows-Umsteiger müssen damit rechnen, dass sich der Akku desselben Notebooks unter Linux schneller entleert als unter Windows. Standardmäßig bietet Linux (Ubuntu: „Systemeinstellungen -> Leistung“, Mint: „Energieverwaltung“) fundamentale Stromspartechniken mit Timeouts für Bildschirm und Bereitschaftsmodus, jedoch bietet Windows hier in enger Absprache mit den Hardware-Herstellern filigranere Regeln. Immerhin ist eine Näherung an Windows-Verhältnisse mit spezialisierten Tools zu erreichen, die der Beitrag ab Seite [[502]] in diesem Heft erklärt.

Fundamentale Stromsparfunktionen: Die Akkulaufzeiten von Notebooks sind unter Linux kürzer. Die Basiseinstellungen des Systems können aber durch externe Tools ergänzt werden.

9. Fehlende Software und Spiele

Anpassungsfähige Windows-Umsteiger werden unter Linux für jedes Einsatzgebiet geeignete Software vorfinden. Wenn es aber statt Gimp oder Libre Office ganz bestimmte Microsoft- oder Adobe-Software sein muss, kann Linux nicht dienen. Wer aus beruflichen Gründen uneingeschränkte Kompatibilität mit Excel, Word, Indesign oder Photoshop benötigt, wird mit Linux mittelfristig nicht froh: Der durchaus realisierbare Austausch der Formate erfordert immer wieder lästige Korrekturen am Detail.

Auch die Erfolge, die das Projekt Wine mit dem Nachbau der Windows-API vorweisen kann (https://appdb.winehq.org/), fallen qualitativ sehr unterschiedlich aus: Dass hier genau die benötigte Version einer Windows-Software einen störungsfreien „Platinum“- oder „Gold“-Status erreicht, bleibt ein Glücksfall. Ferner bedeutet die Benutzung von Wine eine weitere Hürde: Die Einrichtung ist einfach, der produktive Umgang damit aber keineswegs trivial.

PC-Spiele? Trotz Anbindung an die Spielplattform Steam ist Linux in Konkurrenz zu Windows keine Gaming-Plattform. Das Angebot bleibt gegenüber Windows reduziert, und leistungstechnisch kann selbst das dedizierte Gaming-Linux Steam OS (http://store.steampowered.com/steamos/) ein Windows nicht schlagen.

10. Die Installation von Software (Paketmanagement)

Der Bezug von Software bedeutet für Umsteiger eine große Umstellung. Linux bezieht seine Software aus den Paketquellen der jeweiligen Linux-Distribution. Die Softwarepakete sind signiert und garantiert virenfrei – ein unschätzbarer Vorteil gegenüber Windows. Ein weiterer Vorteil ist die Möglichkeit, ein komplettes System einschließlich Software mit einem einzigen Befehl zu aktualisieren (sudo apt dist-upgrade).

Auf der anderen Seite sehen Windows-Nutzer, die es gewöhnt sind, sich aus dem gesamten Web zu bedienen, auch Nachteile: Was die Distributions-Paketquellen bereitstellen, ist hinsichtlich Umfang und Aktualität begrenzt. Die Debian/Ubuntu-Repositories sind quantitativ zwar sehr gut gefüllt, doch stagnieren hier oft die Programmversionen während des Lebenszyklus einer Distribution. Wer nicht selbst den Quellcode kompilieren will, bleibt oft auf ältere Versionen beschränkt.

Dieses strikte Software-Deployment ist allerdings längst aufgeweicht. Programmentwickler können ihre Software auf einem PPA (Personal Package Archive) anbieten. Wenn der Anwender solche PPAs etwa mit apt-add-repository ppa:libreoffice/ppa (Beispiel für Libre Office) in seine Standardpaketquellen aufnimmt, kann er das Software-Angebot erweitern oder aktueller halten.

Zusätzlich zu den PPAs kommen zunehmend Programme in Container-Paketen in Mode (Snap, Flatpak, Appimage). Solche Pakete bringen alle benötigten Systembibliotheken mit und sind somit Distributions-unabhängig, ohne Installation lauffähig und portabel.

Jenseits der offiziellen Software-Quellen: PPAs (Personal Package Archives) für Ubuntu und Mint erweitern oder aktualisieren den Software-Bestand der Distributionspaketquellen.

11. Software-Verwaltung: Grafische Tools oder Terminal

Der Komplex der Paketverwaltung unter Ubuntu (und ähnlich Linux Mint) ist für Umsteiger gewöhnungsbedürftig, da er sich auf drei grafische Werkzeuge aufteilt. Was Ubuntu als Softwarequellen nutzt, ist unter „Systemeinstellungen -> Anwendungen & Aktualisierungen“ einstellbar. Aktives Aktualisieren findet aber nicht in diesem Tool statt, sondern in der „Aktualisierungsverwaltung“. Für Neu- oder De-Installationen ist wiederum das Tool „Ubuntu Software“ zuständig, das allerdings nur einen Bruchteil der etwa 40000 Pakete der Ubuntu-Repositories anbietet.

Umsteiger, die mit der Kommandozeile nicht gänzlich auf Kriegsfuß stehen, sind mit apt-Befehlen im Terminal oft besser beraten, wo sich alles zentral an einem Ort erledigen lässt. Eine Handvoll Kommandos genügt für fundamentale Aufgaben (weitere Optionen zeigt der Kasten „Software, Updates, Upgrades“). Der Befehl

sudo  apt  install  vlc

installiert eine Software, dessen Paketnamen Sie kennen (im Beispiel der VLC-Player). Wenn Sie einen Paketnamen nicht kennen, hilft apt-cache, das auch nach Beschreibungen filtern kann:

apt-cache search  dateimanager

Für das Deinstallieren genügt ein remove-Kommando:

sudo apt remove vlc

Achtung: Das De-Installieren von Programmen ist unter Linux vollständiger als vom Windows-Nutzer gewohnt. Wenn Sie im jeweiligen Software-Center oder im Terminal mit sudo apt remove […] ein Programmpaket entfernen, berücksichtigt Linux alle verzeichneten abhängigen Pakete. Im Extremfall kann eine kleine Desktop-Komponente, die aber integraler Teil der grafischen Oberfläche ist, den kompletten Desktop de-installieren. Dies geschieht aber nach Anzeige der entsprechenden Paketliste und einer Rückfrage. Wenn der Löschauftrag eine Liste von abhängigen Paketen meldet, sollten Sie den Auftrag abbrechen.

Vorsicht mit abhängigen Paketen beim De-Installieren: Das Beispiel zeigt Libre Office Draw, das sich nicht deinstallieren lässt, ohne das komplette Office-Paket mitzuziehen.

12. Updates und Upgrades

Windows hat seinen monatlichen Patchday, an dem es optional auch Microsoft-Anwendungssoftware aktualisiert (Office). Die komplette restliche Software benötigt allerdings ihre je eigenen Updates. Bei Linux genügt hingegen ein Befehl (sudo apt dist-upgrade) oder ein Klick auf die automatisch erscheinende Meldung der „Aktualisierungsverwaltung“ für ein Komplett-Update inklusive Software.

Heikler als Updates sind Upgrades. Bei Ubuntu sind Upgrades auf die jeweils nächste Version vorgesehen. Sie können also von 17.04. auf 17.10 wechseln oder demnächst von der LTS-Version 16.04 auf 18.04 LTS. Sobald ein Upgrade verfügbar ist, meldet sich die Aktualisierungsverwaltung automatisch. Sie müssen dann nur auf „System aktualisieren“ klicken und den weiteren Anweisungen folgen. Wenn Sie das Angebot aus Zeitmangel zunächst ablehnen, können Sie die Option später über die „Aktualisierungsverwaltung“ nachholen.

Der Terminalbefehl für ein Upgrade lautet

sudo do-release-upgrade

und sollte durch eine normale Systemaktualisierung mit

sudo apt update
sudo apt dist-upgrade

vorbereitet werden.

Linux Mint zeigt in der „Aktualisierungsverwaltung“ im Menü „Bearbeiten“ die Option „System aktualisieren auf Linux Mint xx.x“, sobald ein jüngere Version erhältlich ist. Bevor man das tut, ist es ratsam, das System erst auf den neuesten Stand zu bringen (wie bei Ubuntu).

Sollte ein Upgrade wegen eines Abhängigkeitsfehlers abbrechen, nutzen Sie diese beiden Befehle:

sudo apt -f install
sudo apt dist-upgrade

Achtung: System-Upgrades sind ein langwieriger und kritischer Vorgang. Viele Distributionen bieten das Upgrade daher gar nicht erst an. Ubuntu und Linux Mint haben den Vorgang aber nach unserer Erfahrung gut im Griff. Ärgerlich sind Upgrade-Angebote, die überwiegend scheitern und am Ende doch eine Neuinstallation erfordern (wie etwa beim NAS-System OMV).

Exkurs: Software – Updates – Upgrades

Aus Gründen, die der Haupttext darlegt, ist der Komplex der Paketverwaltung im Terminal am besten aufgehoben. Das Tool apt (Advanced Package Tool) ist das Terminal-Werkzeug unter Debian/Ubuntu/Mint für alle Aufgaben der Paketverwaltung (Software-Quellen, Aktualisierung, Neu- und De-Installation). Alle Befehle außer apt-cache search benötigen root-Recht (vorangestelltes sudo):

apt update
Software-Paketquellen aktualisieren (fundamental)

apt upgrade [Paket]
komplettes System [oder bestimmte Software] aktualisieren

apt full-upgrade 
komplette Aktualisierung des Systems (inkl. Löschen alter Pakete)

apt install [Paket]
Programm installieren

apt remove [Paket]
Programm deinstallieren

apt purge [Paket] 
Programm komplett löschen

apt autoremove
nach Deinstallationen überflüssige gewordene Pakete löschen

apt-add-repository [Quelle]
externe Software-Paketquelle erlauben

apt-cache search [Name]
sucht nach Paketnamen und Beschreibungen

do-release-upgrade
Upgrade auf nächsthöhere Version

13. „sudo“ und Administratorrechte

Die Verhältnisse zwischen Standard- und Administrator/root-Konto sind unter Linux und Windows ähnlich, aber der bedarfsweise Wechsel von eingeschränkten Benutzerrechten zu uneingeschränkten root-Rechten folgt anderen Regeln. Möglich ist dieser Wechsel bei Windows wie Linux nur Systemkonten, die zur Gruppe der Administratoren gehören. Während Windows nur einen „Ja“-Klick auf die Abfrage der „Benutzerkontensteuerung“ verlangt, fordert Linux die Eingabe des Benutzerkennworts. Diese Abfrage an der grafischen Oberfläche erscheint bei allen systemnahen Aktionen (Installation, Paketquellen, Benutzerkonten, Aktualisierungsverwaltung). Im Terminal kann dem eigentlichen Befehl sudo vorangestellt werden, um dem Befehl root-Recht zu verleihen. Auch hier fordert Linux die Eingabe des Benutzerkennworts.

Die Erlaubnis, mit sudo den Rechtekontext zu wechseln, erhält normalerweise jedes Benutzerkonto vom Typ „Administrator“ automatisch. Es ist aber darüber hinaus möglich, sudo-Erlaubnis über die Konfigurationsdatei „/etc/sudoers“ manuell und individuell einzurichten.

Im grafischen Dateimanager sind alle Schreibaktionen wie „Ordner anlegen“ oder „Löschen“ inaktiv, wenn man sich jenseits von /home, /tmp oder /media aufhält. Jedoch bieten Desktopsysteme wie Ubuntu und Mint das Kontextmenü „Als Systemverwalter öffnen“, um im Dateimanager uneingeschränkt mit root-Recht zu arbeiten. Wenn ein Dateimanager diese Option nicht selbst anbietet, können Sie ihn im Terminal mit vorangestellten sudo starten – also etwa sudo nautilus, um root-Recht zu erzwingen.

Kontextmenü für Administrator-Recht: Die Dateimanager von Ubuntu und Mint machen es einfach, Ordner oder Dateien zu bearbeiten, die den Wechsel zu root-Rechten erfordern.

14. Die lokalen Dateirechte

Das Thema Dateibesitz und Dateirechte ist unter Windows wie Linux kompliziert und Ursache für manche Zugriffsprobleme, zumal auch Netzfreigaben für einen User „xyz“ mindestens auch lokale Leserechte für „xyz“ voraussetzen. Linux-Einsteiger können nichts Klügeres machen, als manuelle Rechteänderungen möglichst zu vermeiden. Dabei helfen Ubuntu-Systeme inklusive Linux Mint mit Dateimanagern, die lokale Datenträger und Netzwerklaufwerke automatisch (Automount) so ins Dateisystem mounten, dass keine Rechtekonflikte entstehen. Die typische Nutzung von Netzressourcen über „Netzwerk durchsuchen“, Klick auf den gewünschten Server und dessen Freigabe, lädt die Netzfreigabe automatisch in einen Mountpunkt, der keine lokalen root-Rechte benötigt. Im Hintergrund arbeitet bei allen Gnome-affinen Desktops das Tool gvfs-mount, das auch im Terminal benutzt werden kann und stets in den Pfad „/run/user/[user-id]/gvfs/“ mountet. Dieses Automount geht Rechteproblemen aus dem Weg und hat nur den Nachteil, dass es nicht dauerhaft gilt: Es muss einmal in der laufenden Linux-Sitzung geschehen und gilt bis zur Abmeldung.

Bei typischen Zugriffsproblemen, wo statt dem normalen User nur root die nötigen Dateirechte besitzt, ist daher die richtige Antwort eine andere Mount-Methode – und nicht das rekursive Ändern massenhafter Dateirechte. Dennoch ist das im Notfall natürlich möglich. Dateimanager eignen sich über „Eigenschaften -> Zugriffsrechte“ nur für einzelne Ordner und Dateien. Der Terminalbefehl chown („change ownership“) ändert den Besitzer und arbeitet sich mit Schalter „-R“ auch rekursiv durch ganze Ordnerebenen:

sudo chown -R [Benutzer] [Pfad]

Zum Ändern der Rechte dient der Befehl chmod – mit leider zwei Beschränkungen. Er arbeitet nicht rekursiv, was sich mit Hilfe des find-Befehls kompensieren lässt. Chmod unterscheidet aber auch nicht zwischen Dateien und Ordnern. Wenn man Dateien und Ordnern dieselben Zugriffsrechte zuteilt, führt das zu dem Dilemma, dass sich entweder Ordner nicht öffnen lassen oder Dateien allesamt das „Ausführen“-Recht erhalten. Beides wäre fehlerhaft. Daher sind zwei Befehle notwendig:

find . -type f -exec chmod 664 {} \;
find . -type d -exec chmod 775 {} \;

„type f“ bearbeitet nur Dateien, „type d“ nur Ordner. Die Beispielbefehle würden ab dem aktuellen Verzeichnis (Punkt „.“) alle Unterordner verarbeiten.

Eine Rechteänderung, die jeder Linux-Nutzer kennen muss, betrifft das „Ausführen“-Bit von Scripts, das sich über „Eigenschaften -> Zugriffsrechte“ oder mit

chmod +x [Dateiname]

setzen lässt. Ohne dieses Bit gelten Scripts als Textdatei und werden nur angezeigt statt ausgeführt.

Ausführen-Bit setzen: Scripts werden erst ausführbar, wenn das Execute-Bit gesetzt ist. Das erledigt der Dateimanager oder auch chmod +x [name] im Terminal.

15. Automount von Netzwerk-Ressourcen

Beim erstmaligen Mounten von Samba-Freigaben im Dateimanager (siehe Punkt 14) muss sich der zugreifende Benutzer ausweisen und Samba-Kontonamen und -Kennwort eingeben. Diese Zugangsdaten können auf Wunsch dauerhaft hinterlegt werden („Nie vergessen“). Zusätzlich – und für Windows-Umsteiger ungewohnt – wird hier die „Domäne“ abgefragt. Im lokalen Netzwerk verwenden Sie hier wahlweise den Rechnernamen des Servers wie „raspberry“ oder „fritz-nas“ oder die Arbeitsgruppe, typischerweise „workgroup“, sofern keine explizit angelegt wurde.

Eine weitere Hürde für Windows-Nutzer ist der relativ abgelegene Automount-Pfad von Netzwerkfreigaben unter „/run/user/[…]/gvfs/“. Im Dateimanager, wo eingehängte Ressourcen unter „Geräte“ mit einem Klick erreichbar sind, spielt dieser Mountpunkt keine Rolle, bei der Nutzung anderer Programme oder des Terminals hingegen schon. Wird nun versucht, mit einem manuellen mount-Befehl ein Netzlaufwerk in einen angenehmeren User-Pfad einzubinden, dann stellt sich das Problem, dass der mount-Befehl root-Rechte erfordert, was dann unweigerlich zu Rechteproblemen im Mount-Ordner führt. Hier hilft nur ein Eingriff in eine Konfigurationsdatei, hier in die „/etc/fstab“ (Beispiel):

//192.168.178.20/archiv   /home/ha/Archiv   cifs user=ha,password=0815,domain=raspi,users  0  0

Die Freigabe wird dann automatisch bei der Systemanmeldung eingehängt. Die Option „users“ sorgt dafür, dass man die Freigabe außerdem mit User-Rechten ein- und aushängen darf. Die Befehle

mount /home/ha/Archiv
umount /home/ha/Archiv

funktionieren dann ohne root-Recht und benötigen nur den Mountpunkt als Parameter.

Netzwerk-Authentifizierung mit „Domäne“: Diese Abfrage beantworten Sie am einfachsten mit dem Rechnernamen des Servers, der die Freigabe bereitstellt.

16. Netz-Protokolle und Anwendungssoftware

Die Dateimanager Nautilus, Nemo, Dolphin, Caja prominenter Desktopsysteme beherrschen den Umgang mit diversen Netzwerkprotokollen – neben Samba (smb://) und FTP (ftp://) auch SSH (sftp://) oder Webdav (webdav://). Solche Netzadressen zeigt der Dateimanager, wenn Sie über „Netzwerk durchsuchen“ einen Datenserver anklicken, Adressen wie „smb://raspberry/“ können Sie aber auch direkt in die Adresszeile des Dateimanagers eingeben.

Für Einsteiger irritierend ist die Tatsache, dass ein solcher Netzwerkpfad zwar im Dateimanager ans Ziel führt, im Terminal oder einer Anwendungssoftware jedoch scheitert. Einfacher Grund ist, dass diese Programme die Protokolle nicht beherrschen: Sie erwarten, dass solche Netzressourcen in das lokale Dateisystem eingehängt wurden, und arbeiten nur über diesen lokalen Mountpfad. Also – zunächst im Dateimanager mounten, erst danach in der Software nutzen!

17. Übersicht über sämtliche Laufwerke

Der Windows-Explorer zeigt interne und externe Laufwerke mit allen Partitionen auf oberster Ebene an. Viele Linux-Umsteiger vermissen diese Ebene, die von dort ein Herabsteigen in die Verzeichnisebenen gestattet. Der Einstieg über das Wurzelverzeichnis („/“) des Dateisystems ermöglicht dies nicht, da Laufwerke oder Netzfreigaben in beliebigen Verzeichnissen eingehängt sein können. Jedoch bietet die Navigationsleiste in den Dateimanagern eine solche Übersicht: Unter „Geräte“ sind dort üblicherweise alle Partitionen aufgelistet. Wer zusätzlich eine Übersicht der Laufwerke im Hauptfenster sehen will, kann in das Adressfeld des Dateimanagers „computer:///“ eingeben und diese Laufwerkübersicht mit Strg-D („Lesezeichen -> Lesezeichen hinzufügen“) dauerhaft in der Navigationsspalte ablegen. Bei manchen Dateimanagern ist dieser Eintrag „Rechner“ standardmäßig vorhanden.

18. Die Laufwerksbezeichnungen /dev/sd[x][n]

Unter Windows dienen aufsteigende Buchstaben als Kennung für Datenträger. Aus historischen Gründen beginnt das Alphabet bei „C“, da „A“ und „B“ ungenutzt weiterbestehen (ehemals Diskettenlaufwerke). Linux ist hier eigentlich klarer, dennoch sind die Kennungen ein häufiges Problem für Umsteiger. Laufwerke und Partitionen eindeutig zu bestimmen, ist aber fundamental bei der Installation oder beim Schreiben von ISO-Abbildern.

Eine Kennung wie /dev/sda1 beginnt mit /dev/ für „Device“, „sd“ kennzeichnet die Schnittstelle „Sata Device“ (seltener sind „sc“ für SCSI-Device oder „m“ für RAID). Wichtig wird es danach: „a“ bedeutet die erste interne Festplatte, „b“ die zweite oder – falls nicht vorhanden – bereits das erste externe USB-Laufwerk. Die abschließende Zahl ist die Partitionsangabe.

Die Kennungen sind über grafische Werkzeuge wie „Laufwerke“ (gnome-disks) oder Gparted zu ermitteln. Eine schnelle Übersicht bietet der Terminalbefehl lsblk, der sich optional mit Output-Parametern („-o“)

lsblk -o name,type,label,size,mountpoint,fstype

gesprächiger schalten lässt.

Wichtig vor Installationen oder Kopieren von ISO-Abbildern: lsblk im Terminal liefert einen schnellen Überblick über alle Partitionen – rechts das Systemtool gnome-disks („Laufwerke“).

19. Groß-/Kleinschreibung und Sonderzeichen

Unter Windows spielt die Schreibung weder bei Dateinamen noch bei Befehlen und Schaltern eine Rolle. „DIR“ ist dasselbe wie „dir“ oder „diR“. Unter Linux ist genaue Schreibung hingegen zwingend: Den Befehl „LSBLK“ gibt es nicht, und ein Schalter „-X“ bedeutet etwas anderes als „-x“. Folgerichtig können auch Dateiobjekte wie „Musik“, „musik“ und „MUSIK“ nebeneinander existieren.

Nonchalant verhält sich Linux hingegen bei Sonderzeichen in Datei- und Ordnernamen. Die Sortierung von Ordnern und Dateien im Dateimanager wie im Terminal fällt bei Verwendung von Sonderzeichen deutlich anders aus. Während Windows einen Ordner „_Start“ vor allen Ordner mit alphanumerischen Startzeichen einsortiert, ignoriert Linux das Sonderzeichen und ordnet ihn unter „S“ ein. Zum echten Problem beim Datenaustausch zwischen Linux und Windows können Sonderzeichen in Dateinamen werden, da Linux mehr Sonderzeichen erlaubt als Windows. So können Linux-Dateinamen auch Doppelpunkt, Fragezeichen, Asterisk (*) oder Backslash enthalten.

20. Abmelden – Shutdown – Bereitschaft

Unter Windows 10 führt ein Rechtsklick auf das Hauptmenü zum Punkt „Herunterfahren oder abmelden“. Der Klickweg ist nicht intuitiv, aber immerhin ist hier alles an Ort und Stelle. Unter Linux handhaben die Desktop-Oberflächen das jeweils eigen: Unter Linux Mint sind alle Abschaltfunktionen wie Abmelden, Ausschalten, Neustart oder Bereitschaft im Hauptmenü versammelt – übersichtlich und leicht zu finden. Andere Linux-Desktops wie etwa Gnome folgen der technischen Logik und trennen die echten Abschaltfunktionen von jenen der Benutzer-Session. Hinter dem typischen Abschaltsymbol gibt es daher nur Shutdown und Neustart, während die Abmeldung oder die Bildschirmsperre unter dem Kontonamen zu finden sind.

Alle Abschalt-Optionen an Ort und Stelle: Das Menü von Linux Mint versammelt Abmeldung und Shutdown-Varianten übersichtlich an zentraler Stelle.

Zurück zur Linux-Übersichtsseite…

Linux-Mini-Server mit Python

Http-Server mit Python: Mit einem Terminalbefehl ist ein Downloadserver für das aktuelle Verzeichnis eingerichtet. Hier erfolgt der Zugriff über Firefox unter Windows.

Nahezu jedes Linux-System verfügt über eine ungeahnte Möglichkeit, einen Ordnerinhalt ganz einfach anderen Teilnehmern im Netzwerk per Webbrowser (lesend) zugänglich zu machen. Der Scriptinterpreter Python, der in den meisten Linux-Distributionen vorinstalliert ist, enthält einen Webserver, der mit einem einzigen Befehl bei Bedarf im Terminal aus dem gewünschten Verzeichnis heraus in Gang gesetzt wird:

python -m SimpleHTTPServer 4444

Jeder andere Teilnehmer mit Webbrowser kann nun, während dieser Mini-Webserver läuft, über die IP-Adresse des Linux-Rechners und der Portnummer auf die Dateien in diesem Verzeichnis lesend im Browser zugreifen und Dateien herunterladen. Je nachdem, wo der Python-Befehl ausgeführt wird, steht das komplette Dateisystem oder nur ein Unterverzeichnis zur Verfügung.

Hat der Linux-PC beispielsweise die IP-Adresse 192.168.0.2, so kommt man auf jedem Rechner mit dem Browser und der Adresse

http://192.168.0.2:4444

zur Freigabe. Auf dem Linux-Rechner beendet Strg-C den temporären Mini-Webserver wieder.

 

Interne CMD-Kommandos

Diese Sammlung beansprucht keinerlei Vollständigkeit, weder im Moment noch künftig. Es geht mir nur darum, einige besonders interessante Aspekte (die ich selbst ständig vergesse) an dieser Stelle zu sammeln.

Initialisierungsbatch
Man spart sich erheblich Mühe und Frust am CMD-Prompt, wenn man diesen durch eine Initialisierungsbatch (Datei mit der Endung CMD oder BAT) standardisiert. Das ist recht mühelos möglich, weil die CMD beim Start eine Batch automatisch lädt, die im Registry-Schlüssel „HKEY_CURRENT_USER\Software\Microsoft\Command Processor“ in der Zeichenfolge „Autorun“ mit vollem Pfadnamen eingetragen ist.

Typischer Inhalt der Initialisierungsdatei sind dann Farbdefinition (Color), Prompt, Titel (title) und Doskey-Definitionen, also Kommandoabkürzungen wie etwa „doskey d=pushd „%userprofile%\desktop“ oder „doskey x=explorer.exe .“.
Eine einfache Init.cmd, die sich selbst ins Benutzerprofil kopiert und in die Registry einträgt, können Sie hier herunterladen. Einfach Zip entpacken, Init.cmd starten mit Doppelklick – erledigt. Die enthaltenen Befehle sind natürlich Geschmackssache. Wenn Sie am Prompt „init“ eingeben, erhalten Sie die Initialisierungsbatch im Editor und können Sie nach eigenen Wünschen verändern. Ich beschreibe hier nur das – ausbaufähige – Prinzip, da ich selbst den alternativen Kommandointerpreter 4NT klar bevorzuge.

DOSKEY
Der antiquierte Name Doskey steht für Alias-Abkürzungen wie unter Unix.
Wenn das Alias „doskey x=explorer.exe .“ definiert wurde, startet „x“ ein Explorer-Fenster mit dem aktuellen Verzeichnis. Um einem Alias einen Parameter übergeben zu können, verwenden Sie „$*“:

doskey n=notepad.exe $*

Der Befehl „n datei.txt“ würde nun die angegebene Datei in Notepad laden.
Mehrere Befehle lassen sich mit „$T“ verketten:

doskey xkill=taskkill.exe /f /im explorer.exe $T pause $T explorer.exe

Dieses Doskey-Alias

doskey clip=$* $T $*^>%temp%\temp.txt $T notepad.exe %temp%\temp.txt

zeigt, dass man auch Dateiumleitungen nutzen kann. Dazu muss aber das Umleitungszeichen „>“ mit „^“ maskiert werden. Das Alias würde etwa nach „dir /s /b“ diesen Befehl ausführen und die Ausgabe in Notepad laden.

ECHO
Mit Batch-Code temporäre Dateien zu schreiben ist recht lästig: Typischerweise müssen Sie Textzeile für Textzeile mit ‚Echo‘ und Umleitungszeichen in die Datei setzen:
echo Bla > Datei.txt
echo Bla >>Datei.txt
echo Bla >>Datei.txt
echo Bla >>Datei.txt

Das ist nicht nur mühsam, sondern auch fehleranfällig.
Folgende Syntax-Variante macht die Sache viel bequemer:

(echo Bla
echo Bla
echo Bla
echo Bla
)>Datei.txt

Die Ausgabedatei müssen Sie hier nur ein einziges Mal am Ende angeben. Die Unterscheidung der Umleitungszeichen zwischen „>“ (Erstellen der neuen Datei) und „>>“ (Anhängen an bestehende Datei) wird ebenfalls obsolet.