ubuntuusers.de

5. April 2018

Heute möchte ich kurz GeoGebra als weitere App des Monats vorstellen. Es ist ein sehr bekanntes Projekt und wir wahrscheinlich in fast allen Schulen im Mathematikunterricht eingesetzt. Doch was genau ist GeoGebra?

GeoGebra (Kofferwort aus Geometrie und Algebra) ist eine Dynamische-Geometrie-Software (DGS), die zu ihren geometrischen Objekten nicht nur die übliche geometrische, sondern auch eine algebraische Schnittstelle zur Verfügung stellt. Geometrische Objekte können damit nicht nur gezeichnet, sondern auch durch die Angabe beziehungsweise Manipulation von Gleichungen verändert werden. Neben elementargeometrischen Objekten erlauben neuere Versionen von GeoGebra auch die Erzeugung von Funktionsgraphen, ebenen Kurven und Vektoren und verfügen über ein integriertes Computeralgebrasystem (CAS) und eine Tabellenkalkulation. (Wikipedia)

Funktionen von GeoGebra

Der Wikipedia-Artikel über GeoGebra listet einige Funktionen auf. Kurz kann man sagen, dass GeoGebra viele leistungsstarke Funktionen hinter einer einfach zu bedienenden Benutzeroberfläche zugänglich macht. Dazu zählen:

  • Funktionsgraphen (inkl. Krümmung, Extrema, Wendepunkt, Tangenten, Asymptoten, Spiegelungen etc.)
  • Bestimmte Integrale sowie Stammfunktionen
  • Geraden und ihre Steigung, Halbgerade
  • Mittelpunkt, Mittelsenkrechte, Lote, Parallele, Winkelhalbierende
  • Fläche von beliebigen Polygonen und regelmäßigen Vielecken
  • Länge von Strecken, Größe von Winkeln
  • Kegelschnitte: Ellipse, Kreis, Pol und Polare
  • Kreissektoren, Kreisbögen, Umkreis
  • Vektoren, Normalenvektor
  • Rechnen mit komplexen Zahlen, Matrizen, Polynomen

Installation

GeoGebra ist ein weiteres Beispiel dafür, dass es heutzutage immer weniger auf das Betriebssystem ankommt, sondern man eigentlich nur noch einen Browser braucht. Es ist für eine Vielzahl an Plattformen verfügbar, aber man kann es auch online nutzen.

Auf der Webseite des Projekts gibt es Pakete im DEB oder RPM Format zum Download. Dort findet man auch eine portable Version, die man vom direkt von einem USB-Stick starten kann. Um die DEB für Debian oder Ubuntu zu installieren, lädt man sich das entsprechende Paket herunter und installiert es mit der Paketverwaltung.

$ sudo dpkg -i geogebra-classic*

Danach kann man das Programm über den Programmstarter starten.

GeoGebra

GeoGebra gibt es noch in verschiedenen anderen Versionen für fast alle Plattformen zum Download. Unter anderem auch eine Augmented Reality App. Damit kann man Funktionen, Körper etc. virtuell im Raum darstellen. Hier ein Beispiel:

Aktivieren Sie JavaScript um das Video zu sehen.
Video-Link: https://www.youtube.com/watch?v=nmIIO9KZNww

An unserer Schule verwenden wir GeoGebra hauptsächlich im Mathematikunterricht. Ich persönlich verwende es als Grundschullehrer aber eher weniger in meinem Unterricht 🙂

Fazit

GeoGebra ist eine preisgekrönte Software, die man sehr gut im Unterricht einsetzen kann. Es gibt auch einen „Klassenarbeitsmodus“, sodass man die App in Klausuren verwenden kann. Manche allerdings kritisieren die Lizenz, die für diese Software verwendet wird. Teile der Software stehen unter der GPL, andere Teile (wie z.B. der Installer oder auch die Sprachdateien) sind unter einer eigenen Lizenz lizenziert. Die Nutzung für den Unterricht ist kostenfrei möglich – für Schüler und Lehrkräfte.

Insgesamt kann man diese Software nur empfehlen, da es eine Unmenge an Features bietet und dabei noch einfach zu bedienen bleibt.

Kommentar hinzufügen

Der Beitrag GeoGebra – App des Monats erschien zuerst auf .:zefanjas:..

3. April 2018

Mozilla hat mit Firefox Reality einen neuen Browser speziell für Virtual, Augemented und Mixed Reality angekündigt. Mozilla spricht vom ersten plattformübergreifenden sowie einzigen quelloffenen Browser für Mixed Reality.

Themen wie Virtual Reality, Augemented Reality und Mixed Reality werden uns in den nächsten Jahren noch viel beschäftigen. Längst handelt es sich dabei nicht mehr nur um einen technologischen Trend. Mozilla war bei diesem Thema von Anfang an vorderster Front dabei: Firefox 55 war der erste Desktop-Browser mit Unterstützung für Virtuelle Realität, mit A-Frame bietet Mozilla ein beliebtes Framework für Virtuelle Realität an, welches über zehn Millionen Mal pro Monat genutzt wird, und mit dem WebXR Viewer gibt es von Mozilla eine App für Apple iOS zum Betrachten von Mixed Reality-Inhalten.

Nun hat Mozilla Firefox Reality angekündigt. Dabei handelt es sich um einen eigenen Browser speziell für Virtual, Augmented und Mixed Reality, der von Technologien aus Firefox Quantum und Mozillas Next-Generation-Engine Servo profitiert. Erst vergangenen Monat hatte Mozilla angekündigt, dass Mozillas Servo-Team Teil von Mozillas Team für Mixed Reality wird.

Mozilla Firefox Reality

Mozilla gibt die folgenden Argumente an, wieso es wichtig ist, dass Mozilla Firefox Reality entwickelt:

  • „Firefox Reality ist der erste plattformübergreifende Browser für die Mixed Reality.“
  • „Firefox Reality ist der einzige quelloffene Browser für die Mixed Reality.“
  • „Firefox Reality wird von einem Unternehmen entwickelt, das die Privatsphäre der Nutzer respektiert.“
  • „Firefox Reality wird superschnell.“
  • „Firefox Reality ist ein Browser mit Zukunft.“
  • „Browser sind die Zukunft der Mixed Reality.“

In der offiziellen Ankündigung geht Mozilla genauer auf jeden dieser Punkte ein. Die Entwicklung findet transparent auf GitHub statt. Dort finden Interessierte auch eine erste Vorab-Version zum Download.

Das folgende Video zeig eine frühe Version von Firefox Reality auf einem HTC VIVE Focus:

Original-Video ansehen

Der Beitrag Mozilla kündigt neuen Browser Firefox Reality an erschien zuerst auf soeren-hentzschel.at.

Im Habpanel können die unterschiedlichsten Aktoren oder Widgets für Informationen hinterlegt werden. Eigentlich war es geplant das Live Bild einer Überwachungskamera von Foscam ebenfalls einzubinden. Leider bietet die eingesetzte Kamera nicht die Option das Livebild per URL abzurufen, hierfür muss die Handyapp oder das webfrontend verwendet werden. Beim suchen nach einer geeigneten Lösung für das Problem bin ich in dem openhab Forum auf einen funktionierenden Ansatz gestoßen. Die Kameras bieten zwar kein Livebild per URL, jedoch kann ein Standbild abgerufen werden. In dem Image Widgets des Habpanels kann die entsprechende URL hinterlegt werden und das Widget bietet die Option das Bild in bestimmten Intervallen neu zu laden.

Die hinterlegte Url lautet http://ipadresse:88/cgi-bin/CGIProxy.fcgi?cmd=getDevState&usr=benutzer&pwd=kennwort, das Intervall wurde auf 2 Sekunden gesetzt.

Linux-Admins werden es kennen: arbeitet man viel mit Konfigurationsdateien des Systems oder verschiedener Daemons, kann es passieren, dass man vergisst, sie als root-Benutzer zu öffnen.

Das ist ärgerlich, man muss die Änderungen kopieren, den Editor verlassen (vim:

:q!
), ihn wieder mit u.U. sudo (shortcut hierfür:
sudo !!
zum aufrufen des letzten Kommandos mit root-Rechten) öffnen, Änderungen einfügen und neu abspeichern. Noch ärgerlicher ist es, wenn die Datei nicht bearbeitet, sondern erstellt werden soll und relativ umfangreich ist.

vim-Nutzer sind hier im Vorteil: der Editor ist so flexibel, dass man eine read-only-geöffnete Datei als root speichern kann.

Voraussetzung hierfür ist, dass sudo auf dem System installiert ist und der Nutzer die Berechtigungen hat, hiermit Kommandos auszuführen.

Nun zum Trick:

:w !sudo tee %

Die Zauberei hinter diesem Trick ist, dass vim “pipen” kann, denn anders als oft angenommen, ist

:w
nicht ausschließlich für das Speichern der Datei zuständig, sondern sendet eher den current buffer in die aktuelle Datei, eine andere Datei oder gar in ein anderes Kommando. Und dieses Kommando lässt sich eben auch per sudo ausführen. tee übrigens lässt sich wie ein T-Stück verstehen. Alle Hintergründe hierzu sind bei Stackoverflow erklärt.

Linux-Admins werden es kennen: arbeitet man viel mit Konfigurationsdateien des Systems oder verschiedener Daemons, kann es passieren, dass man vergisst, sie als root-Benutzer zu öffnen.

Das ist ärgerlich, man muss die Änderungen kopieren, den Editor verlassen (vim: :q! ), ihn wieder mit u.U. sudo (shortcut hierfür: sudo !! zum aufrufen des letzten Kommandos mit root-Rechten) öffnen, Änderungen einfügen und neu abspeichern. Noch ärgerlicher ist es, wenn die Datei nicht bearbeitet, sondern erstellt werden soll und relativ umfangreich ist.

vim-Nutzer sind hier im Vorteil: der Editor ist so flexibel, dass man eine read-only-geöffnete Datei als root speichern kann.

Voraussetzung hierfür ist, dass sudo auf dem System installiert ist und der Nutzer die Berechtigungen hat, hiermit Kommandos auszuführen.

Nun zum Trick:

:w !sudo tee %

Die Zauberei hinter diesem Trick ist, dass vim "pipen" kann, denn anders als oft angenommen, ist :w nicht ausschließlich für das Speichern der Datei zuständig, sondern sendet eher den current buffer in die aktuelle Datei, eine andere Datei oder gar in ein anderes Kommando. Und dieses Kommando lässt sich eben auch per sudo ausführen. tee übrigens lässt sich wie ein T-Stück verstehen. Alle Hintergründe hierzu sind bei Stackoverflow erklärt.

 

2. April 2018

Firefox wird im Standard-Auslieferungszustand neben seinem Standard-Design auch noch mit einem alternativen hellen sowie dunklen Theme ausgeliefert. Während das dunkle Theme bislang nur die Tab- und Symbolleisten dunkel färbte, ändert sich dies mit Firefox 61: ab dann wird das dunkle Theme auch darüber hinaus dunkel sein.

Wer dunkle Designs mag und dem das dunkle Theme von Firefox bisher nicht weit genug ging, darf sich freuen: ab Firefox 61 wird das dunkle Theme vollständig dunkel. Das heißt, dass nicht länger nur die Tab- und Symbolleisten einschließlich der Symbole dunkel sind, sondern auch die Adressleisten-Vorschläge, die Seite, welche beim Öffnen eines neuen Tabs erscheint, das Hauptmenü, sämtliche Panels von Firefox und die Seite zum Anpassen der Firefox-Oberfläche.

Dunkles Theme in Firefox 61

Dunkles Theme in Firefox 61

Dunkles Theme in Firefox 61

Der Beitrag Firefox 61: Dunkles Theme wird vollständig dunkel erschien zuerst auf soeren-hentzschel.at.

Mit dem Windows-Subsystem für Linux (WSL) können Linux-Distributionen wie bspw. Debian GNU/Linux direkt unter Windows ausgeführt werden – einschließlich aller Anwendungen.

Um grafische Anwendungen (GUI) unter WSL ausführen zu können, muss unter Windows ein X Window System/X-Server installiert sein.

Es bietet sich hier an, den X-Server von Gygwin/X XWin.exe zu installieren, da Gygwin auch viele andere Pakete wie Perl, SSH, usw. bereitstellt und es ggf. schon installiert ist. Auf die Installation von Gygwin selbst geht dieser Artikel aber nicht weiter ein. Wie man Gygwin unter Windows installiert, aktualisiert usw. ist auf der Webseite des Projekts beschrieben. Siehe: https://cygwin.com und https://x.cygwin.com/. Kurz: Es wird das Programm setup-x86_64.exe ausgeführt und im Dialog ein Mirror ausgewählt, die Paketliste geladen/aktualisiert und die Pakete zur Installation/Aktualisierung ausgewählt.

Ist kein X-Server installiert, wird dies i.d.R. durch folgende Fehlermeldung ausgedrückt:

$ DISPLAY=":0" thunderbird # Start einer grafischen Anwendung (hier thunderbird)
Unable to init server: Could not connect: Connection refused
Error: cannot open display: :0

X-Server installieren

Der X-Server XWin.exe wird über das Cygwin-Paket xorg-server installiert:

wsl-x-server.png

Damit XWin.exe beim Windows Systemstart startet, muss es in den Autostart z.B. unter %APPDATA%\Microsoft\Windows\Start Menu\Programs\startup:

wsl-x-server-autostart.png

Wichtig für eine Verknüpfung im Autostart ist als Ziel: C:\cygwin64\bin\XWin.exe :0 -multiwindow -listen tcp -auth und Ausführen in: C:\cygwin64\home\%USERNAME% anzugeben.

Außerdem muss in der Windows Firewall XWin.exe konfiguriert/eingetragen sein, da es ein Netzwerkprotokoll ist! Der Zugriff muss aber nicht erlaubt werden und der Dialog kann mit abbrechen beendet werden.

Nun können auch grafische Anwendungen aus WSL (und auch aus Gygwin) heraus gestartet werden.

Die Anwendungsdaten befinden sich in folgenden Ordnern:

  • WSL:
    /mnt/c/Users/,
    /mnt/c/Cygwin/home/, /mnt/c/Cygwin64/home/,
    %LOCALAPPDATA%\Packages\*\LocalState\rootfs\home\
  • Cygwin:
    /cygdrive/c/Users/,
    C:\Cygwin\home\, C:\Cygwin64\home\,
    /cygdrive/c/Users/*/AppData/Local/Packages/*/LocalState/rootfs/home/

Cygwin aktualisieren

Um Cygwin bzw. die installierten Pakete zu aktualisieren, habe ich ein kleines PowerShell-Skript geschrieben:

# Download Cygwin
Invoke-WebRequest -uri "https://cygwin.com/setup-x86_64.exe" -OutFile "setup-x86_64.exe"

# Run Cygwin in unattended setup mode
# setup-x86_64.exe --help
Start-Process -FilePath "setup-x86_64.exe" -ArgumentList "--verbose","-q","--upgrade-also"

Ich zeichne gerne bei Ausflügen die zurückgelegten Wege mit dem Smartphone auf. Hierzu nutze ich die Andoid-App My Tracks, die die aufgezeichneten Wege auf dem Smarthone ansprechend darstellt, Fotos einbindet und die Wegpunkte als gpd-Datei exportieren kann.

Zum Aufzeichnen der Touren und zum visualisieren mit dem Nextcloud Plugin GpxPod habe ich den Artikel Touren mit Android aufzeichnen und in Nextcloud darstellen geschrieben. Die Lösung zum darstellen der Routen mit GpxPod finde ich sehr gelungen, da es unabhängig vom eigenen Computer funktioniert übersichtlich ist und das Kartenmaterial aus mehreren Quellen abgerufen werden kann, darunter auch Satellitenbilder.

Um “mal eben schnell” eine Route zu visualisieren ist die Nextcloudlösung allerdings nicht geeignet, jedenfalls nicht wenn man sie erst aufsetzen müsste.

Für diesen Fall eignet sich die lokal installierte Software GPX Viewer. GPX Viewer ist bei vielen Linux-Distributionen in den Paketquellen enthalten und lässt sich ohne Aufwand über den Paketmanager installieren. Die Webseite des Projekts findet man unter http://andrewgee.org/blog/projects/gpxviewer/. Aufgrund des generischen Namens des Programms ist die Seite über einen Google-Suche nur schwer zu finden.

Zum Darstellen der Karten greift GPX Viewer auf das Kartenmaterial von Openstreetmap zurück. Zur Benutzung wird also eine Internetverbindung benötigt.

GPX Viewer kann mehrere GPX-Dateien auf einmal anzeigen und stellt diese in unterschiedlichen Farben dar. Außerdem erhält man Statistiken zur zurückgelegten Strecke Geschwindigkeit usw. Das Tool stellt für mich eine komfortable Möglichkeit dar, in GPX-Dateien aufgezeichnete Strecken schnell und ohne große Ladezeiten optisch ansprechend zu visualisieren.

Routen mit GPX-Viewer visualisieren

Wenn man unterwegs Fotos gemacht hat, die mit einem Geo-Tag versehen sind ist vielleicht auch das entsprechende Plugin für den Gnome-Bildbetrachter Eye-Of-Gnome interessant. Damit kann man sich den Aufnahmeort sämtlicher Bilder in einem Ordner auf einer Karte darstellen lassen. Damit hatte ich mich vor einiger Zeit im Artikel Geoposition eines Bildes im Gnome-Bildbetrachter anzeigen befasst.


 

Mit GPS aufgezeichnete Touren visualisieren ist ein Beitrag von techgrube.de.

GRUB 2 hat viele Funkionen in Module ausgelagert. Dadurch ist es möglich, dass man nur die benötigten Funktionen lädt und damit kleinere Core-Images möglich sind. Man kann diese Module aber auch nutzen, um GRUB zu erweitern, z.B. um eine Zeitsteuerung in GRUB einzubauen. Damit ist es möglich ein bestimmtes Betriebssystem zu einer festgelegten Zeit zu starten.

Eine Liste aller vorhandenen Module erhält man mit

$ ls /boot/grub/i386-pc/

Zeitsteuerung in GRUB konfigurieren

Für die Zeitsteuerung in GRUB braucht man das Module datehook. Damit können in GRUB auf folgende Variablen zugreifen:

  • DAY
  • HOUR
  • MINUTE
  • SECOND
  • MONTH
  • WEEKDAY
  • YEAR

Alle diese Werte basieren auf der Uhrzeit und dem Datum, das im BIOS eingestellt wurde (i.d.R. die Hardwareuhr des Mainboards). Das muss man im Hinterkopf behalten, wenn man die Zeitsteuerung in GRUB einrichtet.

Mit dem folgenden Befehl erhält man eine Liste mit allen Menü-Punkten des GRUB-Menüs:

$ grep -E '^menuentry|^submenu' /boot/grub/grub.cfg | cut -d '"' -f2 | cut -d "'" -f2

Der erste Eintrag hat die Nummer 0, der zweite die Nummer 1 usw.

Als nächstes öffnet man die Datei /boot/grub/grub.cfg und fügt folgende Zeilen relativ am Anfang der Datei ein:

insmod datehook
# Eine extra Null beo Minute 0-9 hinzufügen, sodass MINUTE immer zweistellig ist
if [ $MINUTE -lt 10 ]; then PADDING="0"; else PADDING=""; fi  
TIME=$HOUR$PADDING$MINUTE

# Standardmäßig Ubuntu starten
set default=0

# Starte "Windows 10" von 17 bis 23 Uhr
if [ $TIME -ge 1700 -a $TIME -lt 2300 ]; then
  set default=3
fi

Am Anfang fügt man eine extra Null bei Minuten kleiner als 10 ein, sodass die Minutenzahl immer zweistellig ist. Dann konstruiert man eine neue Variable TIME, die die aktuelle Uhrzeit mit dem Format HHMM hat. Diese kann man nun nutzen, um die Zeitsteuerung in GRUB zu implementieren.

Ubuntu soll standardmäßig gestartet werden, aber am Abend bekommt Windows 10 den Vorrang. Eventuell muss man die Uhrzeiten noch anpassen, da im BIOS oft die Zeitzone UTC eingerichtet ist.

Fazit

Die Änderungen oben gelten nur solange bis zum nächsten Mal update-grub ausgeführt wird. Damit die Änderungen dauerhaft in GRUB erhalten bleiben, sollte man ein Template mit diesem Code unter /etc/grub.d/ anlegen.

Wir nutzen diese Option, um unsere Rechner in der Schule besser verwalten zu können. Am Tag wird standardmäßig Ubuntu gestartet, aber während der Nacht lassen wir Linbo booten, damit die Rechner dann z.B. aktualisiert oder mit einem neuen Image versorgt werden können.

1 Kommentar

Der Beitrag Zeitsteuerung in GRUB einrichten erschien zuerst auf .:zefanjas:..

1. April 2018

Mozilla hat eine neue Einstellung in Firefox 61 implementiert, welche das Schließen von Tabs per Doppelklick erlaubt.

Tabs in Firefox können entweder per Tastatur (Strg + W; macOS: Cmd + W) geschlossen werden oder über die Schließen-Schaltfläche im Tab. Ab Firefox 61 kommt für aktive Tabs eine weitere Option dazu: wird zunächst über about:config der Schalter browser.tabs.closeTabByDblclick durch einen Doppelklick auf true geschaltet, lassen sich aktive Tabs auch durch einen Doppelklick in eben jenen schließen.

Für nicht aktive Tabs funktioniert dies allerdings nicht. Statistiken von Mozilla Peking zeigen, dass eine Implementierung für den aktiven Tab bereits 80 Prozent der Doppelklicks in der chinesischen Firefox-Version abdeckt, wo man dieses Verhalten in der Vergangenheit per Erweiterung implementiert hatte. Außerdem sei das versehentliche Schließen von falschen Tabs mit nicht korrekt funktionierenden Mäusen eine häufige Beschwerde, die man erhalten habe, was durch die Limitierung auf aktive Tabs verhindert wird.

Der Beitrag Firefox 61: Neue Einstellung zum Schließen von Tabs per Doppelklick erschien zuerst auf soeren-hentzschel.at.

Bild von pixelcreatures via pixabay / Lizenz: CC0 Public Domain

EncFS ist im übertragenen Sinne die Mutter der Cloudverschlüsselung. Obwohl nicht unbedingt dafür gemacht, bot sich die dateibasierte Verschlüsselung für die Cloud geradezu an. Die erste Version des überaus populären Boxcryptor (siehe: Boxcryptor - Proprietäre Cloudspeicher-Verschlüsselung) setzte somit auch auf eine modifizierte EncFS Implementierung. Ein Audit 2014 setzte dem aber ein jähes Ende. Ob die gravierenden Schwachstellen heute behoben sind ist trotzdem unklar.

Der Audit-Bericht kam 2014 zu dem Ergebnis, dass die Verschlüsselung nicht sicher ist, wenn mehr als eine Version der Datei vorliegt. Dies ist beim Cloudeinsatz die Regel, weshalb EncFS für selbigen ungeeignet ist. Die Homepage zeigt keinen Verweis auf den Audit, ebenso die Github-Seite.

Die überprüfte Versionsnummer war damals 1.7.4, inzwischen ist man bei 1.9.4 angelangt. Das Changelog schweigt sich aber darüber aus, ob die Schwachstellen von damals behoben wurden. Zumindest eine Schwachstelle scheint offen zu sein und ist erst für Version 2 zur Behebung vorgesehen. Auch weitere minder schwere Schwachstellen scheinen nicht behoben zu sein.

Man ist hier immerhin so transparent, dass die Bugreports und ihr Status einsehbar sind. Wenn man als unbedarfter Anwender aber nicht in den tiefen des Projekts wühlt, könnte man auf die Idee kommen EncFS wäre sicher. Im Internet wird es schließlich auch allenthalben empfohlen und die regelmäßigen Veröffentlichungen verweisen auf ein aktives Entwicklungsgeschehen.

Transparenz und Verantwortung gegenüber dem Anwender sieht anders aus!

Bild von andries48 via pixabay / Lizenz: CC0 Creative Commons

Linux hat im Desktopbereich einen verschwindend geringen Marktanteil, egal welche Statistik man zu Grunde legt. Wenn man sich durch die Blogs und Foren der "Datenschutz-Szene" sieht das aber ganz anders aus. Konkrete Zahlen liegen nicht vor, aber vermutlich nutzen mehr als 50% der Personen Linux als primäres Betriebssystem.

Die Gründe werden deutlich seltener thematisiert.

Meistens kommt zuerst ein lapidarer Verweis auf Open Source und die Freiheit des Entwicklungsmodells. Das ist ein Punkt, der viel zu wenig hinterfragt wird (siehe: Proprietär vs. Open Source – Die ewige Debatte um die Sicherheit &  Kommentar: Open Source ist gut für die Sicherheit - Oder doch nicht?). Natürlich ist es prinzipiell für die Sicherheit förderlich, dass der Quellcode frei zugänglich ist. Es ermöglicht unabhängige Audits, die nicht von der Gnade einer Firma abhängig sind und im Zweifelsfall kann der versierte Anwender selbst nachschauen. Faktisch sind die meisten, insbesondere die sicherheitskritischen, Open Source Projekte riesig. Kaum ein Anwender hat die Kenntnisse und die Zeit "mal eben" ein Projekt wie Firefox zu überprüfen. Gleichzeitig ist die Entwicklerzahl in vielen Projekten sehr gering, so dass ein Mehr-Augen-Prinzip kaum gewährleistet wird. Natürlich ist ein proprietäres Entwicklungsmodell mit nicht einsehbarem Quellcode nicht sicherer, der Verweis auf den offenen Quellcode ist ohne Berücksichtigung der realen Umstände jedoch ein Scheinargument.

Anders gelagert ist bei einer weniger ideologischen Argumentation. Linux-Distributionen sind im Prinzip Baukästen, bei denen man sehr viele Bestandteile ersetzen oder komplett weglassen kann. Im Gegensatz zu macOS oder Windows ist z. B. bei keiner Linux-Distribution ein Clouddienst fest in das Betriebssystem eingebunden. Weiterhin stehen in diesem modularen Baukasten leistungsstarke Verschlüsselungslösungen für Kommunikation, Daten und Betriebssystem zur Verfügung. Bei vergleichbaren Betriebssystemen trifft das nur für teurere Editionen zu oder gilt nur für Teile wie das eigentliche Betriebssystem. Linux senkt hier die Hürden zu weitergehenden Schutzmaßnahmen enorm.

Im Zusammenhang mit Windows 10 liegt der Fokus mal wieder auf Telemetrie-Daten und Datenabfluss. Wie sensibel das Thema inzwischen ist musste auch Canonical kürzlich feststellen. Es ist leider auch keineswegs so, dass unter Linux keine Telemetrie-Daten erhoben werden. Firefox ist sicherlich das prominenteste Beispiel für eine Open Source-Software, die per Opt-out-Verfahren Daten sammelt - es ist aber bei weitem nicht die einzige. Richtig ist hingegen, dass dahinter - auch bedingt durch die Fragmentierung in unterschiedliche Projekte - kein groß angelegter Plan zur Datensammlung steht.

Als vor über 15 Jahren Windows XP auf den Markt erlebte das Internet seinen vielleicht ersten großen Shitstorm, auch wenn man das damals noch nicht so bezeichnete. Windows XP nahm nämlich vielfältige Verbindungen ins Internet auf. xp-AntiSpy gehörte bald zur Basisausstattung vieler Systeme. Viele der Aufregerthemen von damals muten heute befremdlich an. Windows XP überprüfte erstmals die Lizenz online, nahm Kontakt zum Update-Server auf und hatte noch andere Funktionen wie einen automatischen Coverdownload integriert. Vieles davon ist heute selbstverständlich, so nehmen natürlich auch die meisten Linux-Distributionen Kontakt zu Servern auf. Updates der Paketdatenbank, Zeitsynchronisierung, automatischer Coverdownload bei vielen Musikplayern usw. usf. Bei allen diesen Verbindungen fallen potenziell Daten an, zur Zeit jedoch höchstwahrscheinlich nicht systematisch erfasst und vermutlich auch nicht statistisch verarbeitet. Wobei manche Distributionen immerhin ab und an einen Blick auf die Daten nehmen.

Ein beliebter Kritikpunkt ist, dass viele der großen IT-Giganten ihren Sitz in den USA haben (und inzwischen zunehmend auch in China) und damit den dortigen Gesetzen unterliegen - mit all den problematischen Implikationen. Das ist soweit nicht falsch, verkennt aber, dass Linux hier kaum besser dasteht. Red Hat - einer der wichtigsten Akteure im Linux-Bereich - sitzt in Nord Carolina, die SUSE GmbH gehört Micro Focus mit Sitz in Großbritannien. Einem Land mit einer Affinität zu weitreichenden Überwachungsgesetzen, der GCHQ stand nicht umsonst auch im Fokus der globalen Überwachungs- und Spionageaffäre. Man sollte sich da keine Illusionen machen, Linux wird schon lange nicht mehr von kleinen Hobbyentwicklern im Keller voran getrieben. Insbesondere in den zentralen Bestandteilen erfolgt die Entwicklung durch bezahlte Entwickler, die in Firmen angestellt sind, die ihre Sitze oft in den gleichen Staaten haben, wie die proprietären - vermeintlich nicht vertrauenswürdigen - IT-Giganten. Hier schließt sich dann der Kreis zum Anfang. Der offene Quellcode sollte gewährleisten, dass diese Firmen nichts schädliches einbauen. Doch geschieht das faktisch wirklich? Selbst so zentrale Bestanteile wie OpenSSL wurden schließlich jahrelang kaum angeguckt.

Große Probleme liegen zudem noch unterhalb des Betriebssystems. Es gibt kaum Hardware mit wirklich freier Firmware und Bestandteile wie Intel ME haben inzwischen komplette eigene Betriebssysteme. Selbst Hardware von in Linux-Kreisen traditionell populärer Anbieter ist da nicht besser. Umso wichtiger sind Projekte wie Purism oder Coreboot. Wer solch spezielle Hardware nicht besitzt, sollte sich also trotz Linux nicht zu sicher fühlen.

Linux ist trotzdem eine gute Grundlage. Vor allem durch die hohe Verfügbarkeit erweiterter Werkzeuge und den modularen Aufbau, der es ermöglicht unerwünschtes wirklich zu entfernen. Zudem können viele der hier geäußerten Kritikpunkte in manueller Kleinarbeit behoben werden. Linux ist aber kein abgeschottetes System, das keinen Kontakt nach außen aufnimmt und einmal generierte Daten, können prinzipiell auch irgendwann mal ausgewertet werden. Hier sollte man sich nicht zu sicher wähnen. Das Open Source-Argument sollte man mit zunehmender Komplexität der Software und Einfluss großer Unternehmen auf die Entwicklung auch nicht zu offensiv vor sich her tragen. Denn eigentlich sagt es kaum was aus.

Bild von harshahars via Pixabay / Lizenz: CC0 Creative Commons

Snaps, Flatpaks und andere vergleichbare Systeme sind momentan eine der wenigen spannenden Entwicklungen am Linux-Desktop. Die Entwickler aus dem Umfeld von Canonical und RedHat wollen damit viele Probleme angehen: Der hohe Aufwand für Firmen Pakete für alle möglichen Distributionen und Versionen zur Verfügung zu stellen, der sinkende Anteil an Maintainern für die bisherigen Paketsammlungen der Distributionen und vieles weiteres. Damit stellt man den Heiligen Gral der Linuxwelt in Frage: Die Paketverwaltung.

Grundsätzlich sind tiefgreifende Änderungen im Linux-Desktop immer schwerer durchzusetzen. Meiner Meinung nach liegt das auch strukturell an der Zusammensetzung der Linux-Community (siehe: Nabelschau und Phantomschmerzen - die Linux Community auf dem Weg in die Bedeutungslosigkeit?). Richtig schön sieht man das an der neuen Auseinandersetzung um die neuen Paketformate vs. die alten Lösungen. In den Foren ist die Empörung allgegenwärtig, Aussagen wie "Braucht kein Mensch", "zu aufgeblasen", "Wer soll, die integrierten Bibliotheken warten?" und "Das bisherige System funktioniert doch, wozu braucht es was neues?" decken wohl die meisten Reaktionen ab. Der Linux-Desktop ist bekanntermaßen perfekt, Änderungen unerwünscht.

Doch funktioniert das alte System wirklich so gut oder wird nicht nur der Status quo verherrlicht? Paketverwaltungen waren prinzipiell einer der großen Vorteile von Linux gegenüber alternativen Betriebssystemen. Anstatt Betriebssystem und Programme unabhängig davon über dutzende Updateroutinen zu aktualisieren, hebt man das gesamte System mit einem Befehl auf einen aktuellen Stand. Andere Betriebssysteme haben aber nachgezogen und mit den heutigen App Stores erreicht man einen ähnlichen Effekt bei macOS und Windows. Sofern man natürlich nicht alles manuell an diesen Programmsammlungen vorbei installiert, aber das gilt auch für die Paketverwaltung.

Der zweite Vorteil ist natürlich, dass eine Bibliothek exakt ein mal installiert haben muss und dann jedem Programm zur Verfügung steht. Das spart Speicherplatz, aber der ist inzwischen selbst in SSD-Form preiswert und reichlich vorhanden. Zudem kann das auch problematisch sein, wenn Programme unterschiedliche Versionen einer Bibliothek benötigen.

Das System Paketverwaltung hat in den letzten Jahren aber auch einige Exzesse hinter sich. Insbesondere Debian-basierte Distributionen haben die Pakete förmlich atomisiert. Jedes Programm wird in dutzende, von einander abhängige, Pakete zerlegt - ein Trend der mit jeder Version extremer wurde. Ein KDE-Desktop in Debian Lenny hatte noch deutlich weniger als 700 Pakete, heute hat man leicht weit über tausend installierte Pakete. Das liegt nicht nur daran, dass Desktopumgebungen an Umfang gewonnen haben. Manuelle Aktualisierungen sind dadurch kaum noch möglich, weil man ziemlich schnell in einer Abhängigkeitshölle landet.

Dies führt unweigerlich zu einem hohen Einsatz von Fremdquellen, da nur diese eine partielle Aktualisierung von Programmen ermöglichten. Fremdquellen sind jedoch ein riesiges Sicherheitsproblem. Ohne ein durchdachtes Priorisierungssystem (das gegenwärtig, abgesehen von YaST in openSUSE, keine grafische Oberfläche unterstützt) sind Fremdquellen nämlich dazu in der Lage Systempakete zu überschreiben. Dies kann auch nachträglich geschehen, wenn der Maintainer der Fremdquelle diese Pakete der Quelle hinzufügt. Dieses Sicherheitsrisiko ist viel realer als die abstrakte Gefahr von irgendwelchen nicht ganz aktuellen Bibliotheken in Snaps und Flatpaks.

Viele Vorteile von klassischen Paketverwaltungen existieren zudem real gar nicht mehr. Ein klassisches Argument lautet, dass eine Sicherheitslücke ja potenziell nur in einem Paket gepatcht werden muss und nur dieses aktualisiert wird. Real ziehen moderne Build-Prozesse immer die Versionsnummern von ganzen Paketgruppen hoch. Ob Qt dann z.B. in zig Unterpakete gesplittet ist, kann dem Anwender eigentlich egal sein, aktualisieren muss er meistens eh alle Pakete der Programmgruppe. Deltapakete haben das Problem der großen Downloads auch schon lange behoben, werden jedoch nur von RPM-basierten Distributionen verwendet.

Weiterhin sind die Synergieeffekte doch eher überschaubar. Nimmt man zum Beispiel LibreOffice: Das Paket ist bei den meisten Distributionen vorbildhaft zerlegt in seine Einzelteile. Die Bestandteile Calc, Writer & Co, die man abwählen kann, sind jedoch vergleichsweise klein. Der dicke Brocken ist LibreOffice-Core und den braucht man immer. Andere Bibliotheken wie uno braucht man nur für LibreOffice. Ihre Ausgliederung ist also ohne Mehrwert für den Benutzer.

Die Beschränkungen der klassischen Paketverwaltung, die fast zwangsläufig zum Antagonismus Rolling Release vs. Stabile Distribution führt, ist zudem ein großes Problem für den Linux-Desktop. Viele langjährige Nutzer merken das nicht mehr, weil sie es nichts anders kennen, aber es ist eben nicht normal, dass man entweder das komplette Betriebssystem permanent aktualisieren muss oder sonst komplett auf alten Versionen sitzen bleibt

Die neuen Paketformate haben natürlich auch ihre Probleme. Es wird sich zeigen müssen, ob sie langfristig gepflegt werden oder letztlich zu viele veraltete Bibliotheken mit Sicherheitslücken aufweisen. Für einen wirklichen Mehrwert muss sich zudem noch klären, ob sich Snaps oder Flatpaks durchsetzen. Erfahrungsgemäß muss Canonical irgendwann seine eigene Lösung einstampfen.

Der Mehrwert ist aber offensichtlich. Die Pakete von z. B. Flathub laufen auf allen Distributionen, die Flatspaks unterstützen (eigentlich alle außer Ubuntu) und müssen nicht permanent für jede Version neu gebaut werden.

Flatpaks & Co werden natürlich die Paketverwaltung nicht komplett ersetzen. Solche Bestrebungen wurden vom Fedora-Team nicht umsonst aufgegeben. Für das eigentliche Basissystem und den Desktop ist die Paketverwaltung nach wie vor bestens geeignet. Es gibt aber keinen Grund klassische Endanwenderprogramme genau so wie den Kernel zu verwalten. Außer natürlich man ist der Meinung, der Linux-Desktop wäre perfekt und ausentwickelt.

31. März 2018

In freiesMagazin 07/2015 und in der DTK 4/2015 habe ich verschiedene E-Book-Konverter gezeigt, die aus einem LaTeX-Dokument eine HTML-Seite bzw. gleich ein EPUB erzeugen.

Auf Basis dessen erreichte mich vor zwei Wochen eine Anfrage, ob ich bei der Konvertierung eines Buches, welches mit TeX gesetzt wurde, helfen könne. Das Buch umfasst ca. 500 Seiten, enthält ca. 70 Abbildungen und 4000 mathematische Formeln. Es werden 32 LaTeX-Pakete eingebunden, wovon ich maximal drei Viertel kenne – was aber auch kein Wunder ist bei der Masse an Paketen, die es gibt.

Unterstützen sollte ich bei der Konvertierung des Buches mittels tex4ebook, was Herbert Voss kurz in der DTK 4/2015 anriss, da ich es in meinem Test damals nicht mit einbezogen hatte. Nach ein bisschen Handarbeit lief tex4ebook in der neuesten Version dann bei mir auch. Schade ist, dass man schon Einiges an Linux- und TeX-Wissen braucht, um das Programm überhaupt zum Kompilieren und Installieren zu bekommen.

Leider übersetzte aber die TeX4ht-Engine – welche zum Konvertieren nach HTML benutzt wird – das Dokument nicht sofort. Folgende Änderungen musste ich manuell vornehmen:

  • PDF-Bilder, die mit \includegraphics ohne Dateiendung eingebunden wurden, wurden nicht gefunden. Hier musste ich das .pdf ergänzen, was dazu führt, dass pdflatex das Dokument nicht mehr übersetzt. \includepdf wäre wohl die richtige Wahl.
  • Bei einer description, itemize oder enumerate muss der erste Eintrag ein \item sein. Im Buch stand dort des öfteren ein Hyperref-Linkziel mit \hypertarget.
  • Das Paket subfig erzeugt ein fehlendes \fi und musste daher entfernt werden. Die entsprechenden Benutzungen von \subfloat habe ich durch simple Tabellen ersetzt. Wie ich gelesen habe, könnte das Paket subfigure auch helfen.
  • Das Paket arydshln erzeugt ebenfalls ein Problem mit einem „Undefined control sequence“. Das Paket musste ich entfernen, ebenso wie die genutzten \hdashline durch \hline ersetzen.
  • Ganz tödlich waren Fußnoten \footnote bzw. \footnotemark oder Indexverweise mit \index in Überschriften. Das erzeugte regelmäßig ein „Tex capacity exceeded, sorry [input stack size = 5000]“. Grund war weniger die Fußnote oder der Index, sondern der Fehler trat bei einem darauf folgenden \label auf, weil vermutlich das Label dann ebenso die Fußnote/Index enthielt, was zu viel des Guten war.

Nach diesen Anpassungen lief zumindest tex4ebook durch und erzeugte ein PDF. Zu einem großen Teil sah das auch ganz okay aus. Es fehlten aber auch einige Abbildungen, Formeln und vieles mehr. Ich denke, dass man hier einige Stunden bzw. realistischer Tage und Wochen Arbeit vor sich hat, um ein ansehnliches E-Book zu erzeugen.

Mir hat das reale Beispiel (meine Beispieldatei entspricht nicht ganz der Realität und freiesMagazin wurde fast von Anfang an darauf getrimmt) aber wieder einmal mehr gezeigt, dass für die Konvertierung einer TeX-Datei in PDF, HTML und EPUB einige Punkte wichtig sind:

  • Trennen von Paketinkludierung, von Befehlsdefinitionen und vom eigentlichen Inhalt. So kann man nämlich wesentlich leichter eine spezielle EPUB-Version mit eigenen Befehlsdefinitionen oder anderen Paketen einbinden.
  • Möglichst eigene Befehlsdefinitionen verwenden und keine reinen LaTeX-Befehle. Klingt erst einmal komisch, hilft aber enorm, wenn man für die EPUB-Version eigene Befehlsdefinitionen schreiben muss.
  • Fußnoten möglichst spärlich einsetzen, das Konzept passt einfach nicht in ein E-Book.

Ich bin jedenfalls gespannt, wie es mit dem Buch weitergeht und ob es der Ersteller schafft, daraus ein E-Book zu generieren. Ich drücke ihm natürlich die Daumen, es bleibt ein spannendes Unterfangen.

In freiesMagazin 07/2015 und in der DTK 4/2015 habe ich verschiedene E-Book-Konverter gezeigt, die aus einem LaTeX-Dokument eine HTML-Seite bzw. gleich ein EPUB erzeugen.

Auf Basis dessen erreichte mich vor zwei Wochen eine Anfrage, ob ich bei der Konvertierung eines Buches, welches mit TeX gesetzt wurde, helfen könne. Das Buch umfasst ca. 500 Seiten, enthält ca. 70 Abbildungen und 4000 mathematische Formeln. Es werden 32 LaTeX-Pakete eingebunden, wovon ich maximal drei Viertel kenne – was aber auch kein Wunder ist bei der Masse an Paketen, die es gibt.

Unterstützen sollte ich bei der Konvertierung des Buches mittels tex4ebook, was Herbert Voss kurz in der DTK 4/2015 anriss, da ich es in meinem Test damals nicht mit einbezogen hatte. Nach ein bisschen Handarbeit lief tex4ebook in der neuesten Version dann bei mir auch. Schade ist, dass man schon Einiges an Linux- und TeX-Wissen braucht, um das Programm überhaupt zum Kompilieren und Installieren zu bekommen.

Leider übersetzte aber die TeX4ht-Engine – welche zum Konvertieren nach HTML benutzt wird – das Dokument nicht sofort. Folgende Änderungen musste ich manuell vornehmen:

  • PDF-Bilder, die mit \includegraphics ohne Dateiendung eingebunden wurden, wurden nicht gefunden. Hier musste ich das .pdf ergänzen, was dazu führt, dass pdflatex das Dokument nicht mehr übersetzt. \includepdf wäre wohl die richtige Wahl.
  • Bei einer description, itemize oder enumerate muss der erste Eintrag ein \item sein. Im Buch stand dort des öfteren ein Hyperref-Linkziel mit \hypertarget.
  • Das Paket subfig erzeugt ein fehlendes \fi und musste daher entfernt werden. Die entsprechenden Benutzungen von \subfloat habe ich durch simple Tabellen ersetzt. Wie ich gelesen habe, könnte das Paket subfigure auch helfen.
  • Das Paket arydshln erzeugt ebenfalls ein Problem mit einem „Undefined control sequence“. Das Paket musste ich entfernen, ebenso wie die genutzten \hdashline durch \hline ersetzen.
  • Ganz tödlich waren Fußnoten \footnote bzw. \footnotemark oder Indexverweise mit \index in Überschriften. Das erzeugte regelmäßig ein „Tex capacity exceeded, sorry [input stack size = 5000]“. Grund war weniger die Fußnote oder der Index, sondern der Fehler trat bei einem darauf folgenden \label auf, weil vermutlich das Label dann ebenso die Fußnote/Index enthielt, was zu viel des Guten war.

Nach diesen Anpassungen lief zumindest tex4ebook durch und erzeugte ein PDF. Zu einem großen Teil sah das auch ganz okay aus. Es fehlten aber auch einige Abbildungen, Formeln und vieles mehr. Ich denke, dass man hier einige Stunden bzw. realistischer Tage und Wochen Arbeit vor sich hat, um ein ansehnliches E-Book zu erzeugen.

Mir hat das reale Beispiel (meine Beispieldatei entspricht nicht ganz der Realität und freiesMagazin wurde fast von Anfang an darauf getrimmt) aber wieder einmal mehr gezeigt, dass für die Konvertierung einer TeX-Datei in PDF, HTML und EPUB einige Punkte wichtig sind:

  • Trennen von Paketinkludierung, von Befehlsdefinitionen und vom eigentlichen Inhalt. So kann man nämlich wesentlich leichter eine spezielle EPUB-Version mit eigenen Befehlsdefinitionen oder anderen Paketen einbinden.
  • Möglichst eigene Befehlsdefinitionen verwenden und keine reinen LaTeX-Befehle. Klingt erst einmal komisch, hilft aber enorm, wenn man für die EPUB-Version eigene Befehlsdefinitionen schreiben muss.
  • Fußnoten möglichst spärlich einsetzen, das Konzept passt einfach nicht in ein E-Book.

Ich bin jedenfalls gespannt, wie es mit dem Buch weitergeht und ob es der Ersteller schafft, daraus ein E-Book zu generieren. Ich drücke ihm natürlich die Daumen, es bleibt ein spannendes Unterfangen.

30. März 2018

An dieser Stelle möchte ich ein Konzept erarbeiten, um meinen Blog mit Hilfe von Ansible[1. Ansible – IT-Automation für Jedermann – My-IT-Brain] [2. Ansible – Wikipedia] auf einem Ubuntu-Server ausbringen zu können.

Dabei hoffe ich auch ein wenig auf eure Unterstützung. Habt ihr Anregungen, konkrete Verbesserungsvorschläge oder auch Fragen, freue ich mich über eure Kommentare. Denn ich selbst bin kein Ansible-Experte und führe dieses Projekt zum Selbststudium und zu Übungszwecken durch.

Die Testumgebung

Die Testumgebung besteht aus der Ansible Control Machine, basierend auf RHEL 7[3. Red Hat Enterprise Linux – Wikipedia] und dem Zielsystem, basierend auf Ubuntu Bionic Beaver[4. Bionic Beaver – wiki.ubuntuusers.de]. Zum Zeitpunkt der Erstellung dieses Artikels nutze ich Ansible in Version 2.4.2.

Zwar wurde bereits die Ansible-Version 2.5 veröffentlicht, in den RHEL-7-Paketquellen ist jedoch noch die Version 2.4.2 enthalten. Ich verwende diese Version auch auf der Arbeit und erhoffe mir so, Erkenntnisse aus diesem Projekt in meine dienstliche Tätigkeit einfließen lassen zu können.

Auf dem Zielsystem existiert ein Benutzer, welcher über volle sudo-Berechtigung verfügt. Dieser Benutzer muss sich mit seinem Passwort authentisieren, wenn er sudo verwendet.

Auf der Ansible Control Machine wird ein SSH-Schlüsselpaar[5. Authentifizierung über Public-Keys – wiki.ubuntuusers.de] generiert, dessen privater Schlüssel nicht mit einer Passphrase geschützt ist. Der öffentliche Schlüssel wird auf dem Zielsystem abgelegt. Damit wird sichergestellt, dass die Ansible Control Machine SSH-Zugriff auf das Zielsystem hat.

Die Konfiguration von Ansible (/etc/ansible/ansible.cfg) wird so angepasst, dass standardmäßig das oben erzeugte SSH-Private-Key-File beim Verbindungsaufbau genutzt wird.

Die Installation der benötigten Betriebssysteme und Ansible sind nicht Gegenstand dieses Artikels.

Geplante Vorgehensweise

Um eine Vorgehensweise zu erarbeiten, orientiere ich mich an dem Artikel Testinstanz für einen WordPress-Blog erstellen. In diesem habe ich bereits beschrieben, wie ein Blog auf einem weiteren System als Testsystem aufgesetzt werden kann. Die Vorgehensweise ist ähnlich, mit dem Unterschied, dass sämtliche Schritte nun durch Ansible orchestriert werden sollen.

Danach ergibt sich folgende (vorläufige) Reihenfolge:

  1. Vom Produktivsystem benötigte Dateien holen
  2. Sicherstellen, das alle benötigten Pakete auf dem Zielsystem installiert sind
  3. VirtualHost erstellen
  4. DocumentRoot aus Backup-Datei erstellen
  5. Datei-Attribute und Zugriffsrechte korrekt setzen
  6. Eine .httpasswd-Datei erzeugen/ausbringen
  7. Datenbank aus Backup wiederherstellen
  8. Datenbankbenutzer erstellen
  9. Troubleshooting

Mit hoher Wahrscheinlichkeit ist die obige Liste noch nicht vollständig. Daher werde ich diese im Laufe des Projekts anpassen, sobald weitere Erkenntnisse vorliegen.

Als Quelldaten für den Blog liegen das DocumentRoot meines Blogs als Tarball[6. tar – Wikipedia] vor. Von der Datenbank wurde ein logisches Backup[7. Logisches Backup – wiki.ubuntuusers.de] erstellt. Auf diese Datensicherung wird zurückgegriffen, um den Blog auf einem neuen Ubuntu-Server auszubringen bzw. wiederherzustellen.

Der erste Versuch

Im ersten Anlauf habe ich eine Ansible-Rolle[8. Directory Layout — Ansible Best Practices] mit folgendem Aufbau erstellt:

/etc/ansible/roles/
└── deploy-my-blog
    ├── files
    │   ├── backup-documentroot.tar.bz2
    │   ├── dh_params.pem
    │   ├── db_dump.sql.bz2
    │   ├── my-it-brain.vhost
    │   └── php-fpm-pool.conf
    ├── handlers
    │   └── main.yml
    ├── tasks
    │   └── main.yml
    └── vars
        └── main.yml

5 directories, 8 files

Unterhalb von files wurden Dateien abgelegt, welche vom aktuellen Produktivsystem stammen und für das Deployment auf einem neuen Server benötigt werden.

Im folgenden werde ich zuerst auf die eingesetzten Module eingehen und anschließend das Playbook zum Deployment des Blogs vorstellen.

Verwendete Module

ModulStatusVerwendung
aptstableinterfaceVerwaltet APT-Pakete
unarchivepreviewEntpackt Archiv-Dateien und kopiert sie ggf. vorher auf das Zielsystem
copystableinterfaceKopiert Dateien auf entfernte Rechner
filestableinterfaceErstellt Dateien, Verzeichnisse, symbolische Links und setzt deren Attribute
mysql_dbpreviewHinzufügen von MySQL-Datenbanken (aus Backup)
mysql_userpreviewHinzufügen (und Entfernen) von Benutzern in MySQL-Datenbanken

Die in der Spalte Status angegebenen Werte stableinterface und preview lassen Rückschlüsse auf die Stabilität der Schnittstellen eines Moduls zu.

So garantieren die Entwickler bei einem stableinterface, dass es in Zukunft keine Änderungen geben wird, die nicht abwärtskompatibel sind. Auch wenn sich keine explizite Angabe findet, wie lange diese Garantie gilt, kann man davon ausgehen, dass man seine Playbooks bei Verwendung dieser Module nicht so schnell aufgrund von Updates anpassen muss. Für Module mit dem Status preview wird genau dies hingegen nicht garantiert. Hier kann es von Version zu Version Änderungen geben, welche Anpassungen an Playbooks erforderlich machen, welche diese Module verwenden. Dadurch entsteht ggf. ein erhöhter Testaufwand, bevor man seine Ansible-Installation aktualisieren kann.

Das Playbook

Den Inhalt der Datei /etc/ansible/roles/deploy-my-blog/tasks/main.yml habe ich unter dem Namen deploy-blog-playbook.yml als Gist veröffentlicht. Um es in diesem Artikel anzeigen zu können, müsst ihr JavaScript in eurem Webbrowser aktiveren.

Die Zeilen 2-11 sorgen dafür, dass die benötigten Pakete auf dem Zielsystem installiert werden. Da es sich dabei um einen Ubuntu-Server handelt, verwende ich das Modul apt.

Die Zeilen 13-16 stellen das DocumentRoot und die SSL-Zertifikate aus dem Dateibackup auf dem Zielsystem wieder her.

In meiner aktuellen Konfiguration verwende ich PHP-FPM mit einem eigenen Pool, welcher in meinem VirtualHost referenziert wird. Um diese Konstellation auch auf dem neuen System nutzen zu können, stelle ich entsprechende Konfiguration mit den Zeilen 18-47 her. Vermutlich können die Zeilen 39-47 entfallen, da PHP-FPM das Logfile automatisch erstellt. Weitere Tests müssen dies noch zeigen. Ich habe diese Zeilen während des Troubleshootings eingefügt. Ursache für den Fehler wird vermutlich das fehlende Log-Verzeichnis gewesen sein, welches ich in den Zeilen 29-37 erzeuge.

Der NGINX auf meinem Produktivsystem verwendet die Datei dh_params.pem, welche ich in den Zeilen 49-57 auch auf den neuen Host kopiere. Anschließend wird in den Zeilen 59-66 die vHost-Datei auf das Zielsystem kopiert und durch die Zeilen 68-77 verlinkt und damit aktiviert.

Die letzten Zeilen kümmern sich um die Einrichtung der Datenbank. Zuerst wird die Dump-Datei auf das Zielsystem kopiert und dort anschließend in die neue Datenbank db_my_it_brain eingespielt. Zum Schluss wird noch der benötigte Datenbank-Benutzer erstellt.

In Zeile 94 und 95 habe ich Variablen eingesetzt, welche in vars/main.yml definiert wurden. Dort habe ich auch eine Variable für den Namen der Datenbank definiert, welche ich gern in Zeile 96 genutzt hätte. Leider ist es mir nicht gelungen, da sowohl priv: '"{{ DBNAME }}".*:ALL' als auch priv: "{{ DBNAME }}".*:ALL zu Fehlern führten. Falls hier jemand eine Idee hat, freue ich mich, wenn ihr mir die korrekte Syntax mitteilt.

Erstes Fazit

Das ging leichter als gedacht. Die benötigten Module waren schnell gefunden und ihre Anwendung aufgrund der hinreichend guten Dokumentation nicht schwierig.

Da die aktuell genutzten Variablen sensible Informationen beinhalten, möchte ich diese zukünftig mit Ansible Vault schützen.

Stand heute bin ich jedoch erstmal in der Lage meinen Blog aus der Datensicherung heraus erneut deployen zu können.

Im ersten Teil dieser Serie haben wir bereits Koha installiert. Bevor wir ein Buch aufnehmen oder verleihen können, müssen noch einige Einstellungen vorgenommen werden. Ein großes Thema ist das bibliografische Framework. Bei der Installation haben wir bereits MARC21 gewählt. Was das ist, warum es wichtig ist und wie wir das Framework für eine Schule anpassen können, darum geht es in diesem 2. Teil.

Dieser Artikel ist ein Teil einer Serie:

  1. Installation und Einrichtung einer ersten Bibliothek
  2. Das bibliografische Framework
  3. Grundeinstellungen
  4. Buchaufnahme
  5. Drucken von Etiketten
  6. Verbinden mit einem Z.39.50 / SRU Server
  7. Benutzerverwaltung und Ausleihkonditionen
  8. Benachrichtigungen und Erinnerungen
  9. Mahnungen und Gebühren

Was ist das bibliografische Framework?

Am besten stellen wir uns das bibliografische Framework wie eine Vorlage vor, nach der Bücher oder andere Medien in Koha aufgenommen werden. In dieser Vorlage legen wir fest, welche Daten wir in unserem System haben wollen. Das könnten z.B. folgende sein:

  • Titel und Author/in
  • Verlag, Erscheinigsort und -jahr
  • ISBN / ISSN
  • Altersbeschränkung
  • evtl. Sprache

Diese Liste lässt sich beliebig erweitern, aber für eine Schulbibliothek wollen wir es so einfach wie möglich machen. Diese Daten nennt man auch Felder.

Damit sich nicht jede Bibliothek ihre eigenen Felder ausdenken muss, wurde vor vielen Jahren ein Standard geschaffen, der in Koha verwendet wird: MARC21.

MARC21

Wikipedia definiert MARC folgendermaßen:

MARC (MAchine-Readable Cataloging) ist ein bibliographisches Datenformat. Entwickelt wurde es 1966 in den USA. Im Lauf der Jahre folgten zahlreiche verschiedene Versionen, von denen bis heute vor allem die Version MARC 21 weltweit von Bibliotheken verwendet wird. MARC 21 ist ein allgemeines Format, das von verschiedensten Anwendungen gelesen und verarbeitet werden kann. Hauptzweck ist die Übertragung von bibliographischen Daten zwischen Bibliotheken.

Es geht also einen bibliografischen Datensatz, der von einem Computer gelesen werden kann.

Koha verwendet ebenfalls MARC21, deswegen müssen wir uns ein wenig damit auseinander setzen. Es gibt eine gute Einführung in MARC21, die aber nur in Englisch verfügbar ist. Ich kann sie sehr empfehlen, da sie mir geholfen hat MARC21 besser zu verstehen: Understanding MARC.

Ein MARC21 Feld besteht aus einem Tag (einer dreistelligen Zahl), zwei Indikatoren und einem Unterfeld-Code. Hier ein Beispiel für das Feld ISBN:

020 ##  $a 0877547637

Die ersten drei Zahlen 020 stehen für das MARC21 Feld bzw. Tag. Die zwei „##“ stehen für die beiden Indikatoren, die für dieses Feld nicht definiert sind. Mit $a folgt das Unterfeld a für die ISBN. Zum Schluss steht die ISBN. Laut Definition kann man im Unterfeld $z auch eine nicht mehr gültige ISBN angeben.

Eine Übersicht über alle MARC21-Felder gibt es hier: https://www.loc.gov/marc/bibliographic/

MARC21 für Schulbibliotheken anpassen

Ich empfehle wirklich jedem, der Koha einsetzen möchte, sich die oben verlinkte Einführung in MARC durchzulesen, denn es hilft ungemein beim Verständnis, wie Koha funktioniert und wie man es verwenden kann und muss.

Framework exportieren

Da wir jetzt grob wissen, was MARC21-Felder sind, wollen wir in Koha das bibliografische Framework anpassen. Dazu loggen wir uns mit unserem im Teil 1 erstellen Benutzer ein und öffnen den Menüpunkt Administration.

Koha Menü

Dort wählen wir den Punkt bibliografisches Framework.

Koha Admin Menü

Hier sehen wir nun eine Liste mit allen bibliografischen Frameworks. Wir können theoretisch für jeden Medientyp ein eigenes Framework erstellen, doch wir möchten es so einfach wie möglich haben.

Das Framework können wir gut im Browser anpassen, aber es ist mit viel Klicken und Warten verbunden. Deshalb werden wir das Framework exportieren und anschließend wieder importieren.

In der Liste klicken wir neben Framework mit dem Code „FA“ und dem Namen „Schnellaufnahme“ auf Aktionen → Export. (Falls das Schnellaufnahme Framework fehlt, wurde bei der Installation vergessen, den Haken an der entsprechenden Stelle zu setzen…)

Koha FrameworksFramework anpassen

Nun müssen wir die heruntergeladene Datei (man kann zwischen CSV, Exel oder Open Document Format wählen) mit einer Tabellenkalkulation unserer Wahl öffnen und wie folgt anpassen.

Im ersten Reiter marc_tag_structure  und zweitem Reiter marc_subfield_structure alle Zeilen löschen mit den Tags:

  • 010, 050, 082, 090, 099

Im zweiten Reiter werden wir noch einige Felder verstecken, damit die Maske zur Aufnahme der Bücher übersichtlicher wird. In der Spalte hidden geben wir an folgenden Stellen „5“ für folgende Tags und Unterfelder ein:

  • 020 → alle bis auf Unterfeld a
  • 022  → alle bis auf Unterfeld a
  • 100  → alle bis auf Unterfeld a (und l optional)
  • 245  → alle bis auf Unterfelder a und b
  • 250  → alle bis auf Unterfeld a
  • 260  → alle bis auf Unterfelder a, b und c
  • 300  → alle
  • 500  → alle bis auf Unterfeld a
  • 942  → alle bis auf Unterfeld c
  • 952 → nur Unterfelder 2, b, e, f, i, j, l, m, n, q, r, s, u, v, w, y

Wenn wir das geschafft haben, haben wir eine große Hürde bei der Verwendung von Koha genommen. Das was jetzt noch kommt, wird wieder leichter 🙂

Framework importieren

Nun müssen wir unser bearbeitetes Framework wieder importieren. Dazu klicken wir auf Aktionen → Import und wählen unserer bearbeitet Tabellenkalkulationsdatei, die wir gerade eben bearbeitet haben, aus. Mit Import wird unser „FA“ Framework aktualisiert.

Koha Framework Import

Fazit

Wir haben nun ein sehr wichtiges Element in der Konfiguration von Koha eingerichtet – unser bibliografisches Framework! Es ist fast alles für die Aufnahme oder den Import unserer Medien eingerichtet. Im nächsten Teil dieser Serie geht es um weitere grundlegende Einstellungen für Schulen sowie die Einrichtung weitere Medien- und Benutzergruppen.

2 Kommentare

Der Beitrag Teil 2: Das bibliografische Framework – Wie man Koha installiert und für Schulen einrichtet erschien zuerst auf .:zefanjas:..

28. März 2018

Unter dem Namen Test Pilot betreibt Mozilla eine Möglichkeit für Firefox-Nutzer, potentielle neue Funktionen vorab zu testen und Feedback zu geben. Mit Min Vid, Snooze Tabs und Voice Fill beendet Mozilla drei Experimente. Dieser Artikel klärt auf, wie es mit besagten drei Projekten sowie mit den weiteren Experimenten Send und Notes weitergeht.

Über testpilot.firefox.com können Firefox-Nutzer mögliche Neuerungen vorab testen, indem entsprechende Erweiterungen installiert werden. Min Vid, Snooze Tabs und Voice Fill haben nun das Test Pilot-Programm verlassen. Für jede dieser Experimente hat Mozilla einen Abschlussbericht mit Dingen veröffentlicht, die Mozilla aus dem Experiment gelernt hat.

Min Vid

Min Vid ermöglicht es, Videos anzusehen und gleichzeitig andere Dinge zu machen. Dafür werden Videos per Knopfdruck in einem Mini-Player angezeigt, der von der Webseite losgelöst ist und andere Fenster überlagern kann. Dies funktioniert mit YouTube, Vimeo sowie Soundcloud.

Das Experiment im Rahmen von Test Pilot hat Mozilla beendet. Für bestehende Nutzer bleibt Min Vid vorerst weiter installiert. Mozilla möchte weiter mit dem Konzept experimentieren und Min Vid daher als sogenannte SHIELD-Studie in Firefox bringen. Das heißt, dass Min Vid bald für einen kleinen Teil der Nutzer zurückkehren könnte.

Allerdings hat Mozilla erkannt, dass eine komplette Neuentwicklung der Code-Basis erforderlich ist, um Min Vid in Sachen Wartbarkeit und Performance tauglich für eine Release-Version von Firefox zu machen. Eine weitere Erkenntnis ist, dass weniger oft mehr ist. Das Playlisten-Feature wird entfernt werden, ebenso die Unterstützung für Vimeo und Soundcloud – Daten zeigen, dass 99 Prozent aller Benutzungen von Min Vid auf YouTube fielen. Mit einem abgespeckten Min Vid und einer kleinen Test-Population möchte Mozilla herausfinden, ob das Konzept im Release-Firefox funktioniert.

Vollständiger Bericht von Mozilla zu Min Vid

Snooze Tabs

Snooze Tabs ging im Februar 2017 an den Start. Wie es der Name bereits andeutet, überträgt Snooze Tabs die Snooze-Funktion eines Weckers auf Tabs.

In diesem Fall geht es aber nicht darum, dass man nicht aufstehen möchte, sondern darum, dass man einen Tab nicht sofort, sondern erst später wieder benutzen will. Der Nutzer kann entweder eine der vordefinierten Optionen auswählen, wie „Später“, „Morgen“, „nächste Woche“ oder „beim nächsten Start“ oder aber man wählt selbst ein Datum und eine Uhrzeit aus. Nach der Auswahl verschwindet der gerade aktive Tab und taucht zum gewünschten Zeitpunkt wieder auf.

Die Funktion wird nicht direkt in Firefox integriert werden. Stattdessen steht Snooze Tabs ab sofort auf addons.mozilla.org als Erweiterung zur Verfügung. Nutzer des Test Pilot-Experiments werden automatisch auf die neue Version migriert, welche gegenüber dem Test Pilot-Experiment bereits diverse Bugfixes und kosmetische Verbesserungen erhalten hat.

Download Snooze Tabs
Vollständiger Bericht von Mozilla zu Snooze Tabs

Voice Fill

Dieses Experiment ging ebenfalls Anfang des vergangenen Jahres an den Start, ist allerdings auf englischsprachige Nutzer beschränkt gewesen. Voice Fill erweitert die Suchmasken von Google, Yahoo! und DuckDuckGo um eine Schaltfläche zur Spracherkennung. Die Spracheingaben dienen nicht nur dem Nutzer, um sein Ziel zu erreichen, sondern wurden auch genutzt, um Mozillas Künstliche Intelligenz zur Spracherkennung zu trainieren, um so wiederum bessere Resultate liefern zu können.

Spracherkennung ist nach wie vor ein großes Thema für Mozilla. In diesem Zusammenhang existieren bei Mozilla unter anderem das DeepSpeech-Projekt, in dessen Rahmen Mozilla eine Sprache-zu-Text-Engine entwickelt, welche durch Techniken des Maschinen-Lernens dazu lernen kann, basierend auf Baidus Forschung zu diesem Thema, und auch Common Voice, ein Projekt, bei dem jeder seine Stimmen beitragen kann, um Mozillas Spracherkennung zu verbessern. Der serverseitige Proxy-Service, den Mozilla als Teil von Voice Fill entwickelt hat, findet weitere Verwendung in Mozillas IoT Gateway, einem Open Source Connector für Smart Devices.

Voice Fill wird im Rahmen von Test Pilot nicht fortgesetzt werden. Stattdessen steht Voice Fill ab sofort auf addons.mozilla.org als Erweiterung zur Verfügung. Nutzer des Test Pilot-Experiments werden automatisch auf die neue Version migriert.

Download Voice Fill
Vollständiger Bericht von Mozilla zu Voice Fill

Notes und Send noch aktiv

Mit Send und Notes sind zwei Experimente nach wie vor aktiv, die seit dem Start wichtige Verbesserungen halten. So können über Send hochgeladene Dateien nun auch mit einem Passwort geschützt werden und man kann erlauben, dass Dateien mehrfach heruntergeladen werden können. Auch funktioniert Send nun in mehr unterschiedlichen Browsern. Notes wurde um die Fähigkeit erweitert, Notizen über Firefox Sync zu synchronisieren und weitere Änderungen stehen in der Pipeline. So wird es bald unter anderem die Möglichkeit geben, mehrere Notizen anzulegen.

Der Beitrag Firefox Test Pilot: Mozilla beendet drei Experimente erschien zuerst auf soeren-hentzschel.at.

Als Maintainer des Debian Sourc List Generators erreichen mich viele Mails in letzter Zeit, mit der Bitte um Aufnahme neuer Repos.

Leider hat ich in den letzten Wochen wenig Zeit diesen zu pflegen. Das soll sich jetzt ändern.

Ich bin dabei den Generator zu überarbeiten, dann soll es auch Benutzern möglich sein, wieder Repos zu melden. Diese werden dann von mir nur noch gepürft und dann freigegeben.

Aktuell suche ich auch einen weiteren Maintainer, der Lust hätte auch mich ein wenig zu unterstützen.

Ziel ist es den Generator auf den neusten Stand zu bringen, auch sollen einige Fehler behoben werden und die Informationen besser dargestellt werden.

Seit heute habe ich einen “neuen” Blog. Weiterhin ist es Hugo, doch er hat neues Theme erhalten.

Zusätzlich habe ich einige Artikel gelöscht, die ich nicht mehr pflegen möchte bzw. die nicht so viel Anklang gefunden haben. Ich werde mich in den nächsten Tagen und Wochen versuchen wieder häufiger Artikel zu schreiben.

Also bleibt dran.

Seit heute habe ich einen "neuen" Blog. Weiterhin ist es Hugo, doch er hat neues Theme erhalten.

Zusätzlich habe ich einige Artikel gelöscht, die ich nicht mehr pflegen möchte bzw. die nicht so viel Anklang gefunden haben. Ich werde mich in den nächsten Tagen und Wochen versuchen wieder häufiger Artikel zu schreiben.

Also bleibt dran.

Als Maintainer des Debian Sourc List Generators erreichen mich viele Mails in letzter Zeit, mit der Bitte um Aufnahme neuer Repos.

Leider hat ich in den letzten Wochen wenig Zeit diesen zu pflegen. Das soll sich jetzt ändern.

Ich bin dabei den Generator zu überarbeiten, dann soll es auch Benutzern möglich sein, wieder Repos zu melden. Diese werden dann von mir nur noch gepürft und dann freigegeben.

Aktuell suche ich auch einen weiteren Maintainer, der Lust hätte auch mich ein wenig zu unterstützen.

Ziel ist es den Generator auf den neusten Stand zu bringen, auch sollen einige Fehler behoben werden und die Informationen besser dargestellt werden.

26. März 2018

Mozilla hat mit Firefox 59.0.2 ein Update für Firefox 59 veröffentlicht und behebt damit mehrere Probleme der Vorgängerversion.

Download Mozilla Firefox 59.0.2 für Microsoft Windows, Apple macOS und Linux

Mit dem Update auf Firefox 59.0.2 behebt Mozilla gleich einige Probleme. So kam es seit Firefox 59 für Windows-Nutzer mit aktivierter Hardwarebeschleunigung in Firefox und deaktivierter ClearType-Einstellung in Windows zu Darstellungsproblemen auf Webseiten.

Für Nutzer von Windows 7 mit einem Touchscreen oder einer Drittanbieter-Anwendung, welche mit Firefox durch Schnittstellen für Barrierefreiheit interagiert, konnte es zu Abstürzen kommen. Unter anderem StickyPassword ist bekannt dafür, diesen Absturz auslösen zu können. Ein weiterer Absturz konnte auftreten, wenn versucht wurde, einen Druck-Auftrag kurz vor Fertigstellung abzubrechen.

Drittanbieter-Software konnte eine hohe Auslastung der CPU respektive einen ungewöhnlich hohen Speicherverbrauch verursachen. Eine mögliche Ursache hierfür wurde behoben.

GetUserMedia hat auf DragonFly, FreeBSD, NetBSD sowie OpenBSD nicht mehr funktioniert. Entsprechende Video-Chat-Apps haben entweder überhaupt nicht oder nur ohne Ton funktioniert.

Weiter wurde ein Problem beim Laden von Ressourcen in Service Workers behoben und das Problem, dass bei Verwendung der Option „Automatische Proxy-Konfigurations-Adresse“ die Schaltfläche zum Neuladen ausgegraut war.

Wurde über about:config die versteckte Option privacy.resistFingerprinting auf true gesetzt hat, haben auf Webseiten Browser-Shortcuts wie beispielsweise Strg + C zum Kopieren nicht mehr funktioniert.

Schließlich wurde noch eine Sicherheitslücke geschlossen.

Der Beitrag Mozilla veröffentlicht Firefox 59.0.2 und behebt diverse Probleme erschien zuerst auf soeren-hentzschel.at.

25. März 2018

Abwechslung tut gut und deswegen dreht sich diese Ausgabe des Wochenrückblicks schwerpunktmäßig wieder um Open Source Software. Für alle, die sich schon in den letzten Wochen gewundert haben: der Wochenrückblick hat zwischenzeitlich die Themenfelder erweitert und passt als solches nicht immer in den Ubuntuusers.de Planeten oder das OSBN. Wenn es sich allerdings (thematisch) anbietet, versuche ich auch in Zukunft einige Ausgaben extra für die OSS-Blognetze zu schreiben.

TLS 1.3 fast fertig

TLS 1.3, die neue Version des weit verbreiteten Standards für Transportverschlüsselung, kann in absehbarer Zeit als Standard durch die IETF veröffentlicht werden. (Heise, Golem) Bis zuletzt gab es zwischen diversen Interessensgruppen, die am Standard mitarbeiten, Diskussionen, ob und wie z.B. die Verbindungen entschlüsselt werden können.

Mit TLS 1.3 soll für weniger Metadaten und bessere Kryptoalgorithmen gesorgt werden. Hier kann ich den c’t-Artikel empfehlen, der die Thematik genauer beleuchtet.

DNS über HTTPS?

Um mehr Diskretion im Datenverkehr zu schaffen, bietet sich natürlich die o.g. Transportverschlüsselung an. Man darf aber keinesfalls andere Angriffsvektoren vernachlässigen. Im Datenverkehr eines “üblichen” Endnutzers findet sich nämlich nicht nur aktuell absicherbare Protokolle wie HTTPS oder SSH, sondern auch DNS vor. Und hier klafft bisher ein Problem, da diese Anfragen (mithilfe von DNS-Anfrage können die jeweiligen IP-Adressen zu Domains ermittelt werden) unverschlüsselt übertragen werden. Der Sicherheitsgewinn, der bei der Vermeidung von Metadaten bei TLS 1.3 bald gewonnen wird, wird möglicherweise an solchen Stellen wettgemacht, da die Liste angefragter Domains auch Aufschluss über das Nutzungsverhalten gibt.

Generell lässt sich das Problem durch den Einsatz von VPNs verlagern, es bleibt im Endeffekt aber immer noch keine ganzheitliche Lösung, da ab dem VPN-Endpunkt i.d.R. alles unverschlüsselt weiter läuft. Gibt es eine salonfähige Lösung für das Problem?

Jein. Die IETF hat da etwas in der Schublade, das sich DNS over HTTPS (DoH, unveröffentlicht!) nennt. Warte, DNS-Anfragen über HTTPS schieben? D’oh! Naja, aber es ist wenigstens ein Weg, um die Verbreitung von verschlüsselten DNS-Anfragen auf dem “ersten Übertragungsabschnitt” zwischen dem Endgerät und seinem Zugangspunkt abzusichern – sprich: DNS kann in offenen WLANs/Hotspots abgesichert werden. Aber der HTTPS-Endpunkt erfährt natürlich (in der bisherigen Umsetzung, wie ich es gesehen habe) von allen Anfragen des Nutzers.

Mozilla hat nun vor einigen Tagen angekündigt, eine solche DoH-Implementierung für eine Studie im Firefox Nightly mit einigen Nutzern für eine begrenzte Zeit zu testen. Als Partner für den HTTPS-Serverendpunkt wird Cloudflare angegeben.

Kritisiert wird unter anderen, dass der Nutzer vorher über die Studie nicht informiert wird, denn immerhin lässt sich über den DNS-Verlauf einiges über den Nutzer aussagen.

So my understanding of the study is that for those in the study branch (50% of Nightly users) we’ll be sending every hostname they visit to Cloudflare. That sounds problematic to me.

– Dave Townsend

Der Thread zu der Studie ist in der Google Groups-Diskussion zu finden.

Artikeltipps

Hier noch einige Artikeltipps über OSS aus dem Planeten, die ich empfehlenswert finde in dieser Woche:

Neben der Vielzahl an Einstellungsmöglichkeiten, die sich unter „(Firefox) -> Einstellungen -> Einstellungen“ verbergen, möchte ich hier ein paar Dinge hervor heben, bei denen an der about:config geschraubt werden muss.

Am Ende des Beitrages findet ihr den Inhalt meiner user.js. Diese Datei könnt ihr
~/.mozilla/firefox/profilname ablegen, dann müsst ihr euch nicht selber durch die about:config klicken.

Darüber hinaus seien euch Projekte wie Waterfox oder der Tor-Browser empfohlen, die schon ab Werk einige Einstellungen wesentlich datenschutzfreundlicher Gestalten.

Ein Teil der folgenden Infos stammen von der sehr guten Seite ffprofile.com auf der ihr euch eine user.js nach eigenen Wünschen zusammenstellen könnt. Dort sind, wie ebenfalls im unteren Teil dieses Beitrages einige sinnvolle Add-ons gelistet.

Überblick

  1. Konfiguration
    1. temporäre Dateien verschieben
    2. Kamera und Mikrofon-Zugriff unterbinden
    3. Geolocation / Standortbestimmung unterbinden
    4. Sitzungswiederherstellung unterbinden
    5. Telemetrie-Datensammlung überprüfen
    6. Tracking blockiern
    7. Zeitmessung des Seitenaufrufs abschalten
    8. Vorrausladen von Inhalten unterbinden
    9. Fingerprinting erschweren
    10. Pastejacking verhindern
  2. TLDR user.js
  3. Erweiterungen installieren

Konfiguration

temporäre Dateien verschieben

Unter anderem weil ich eine SSD verwende, möchte ich, dass Firefox die temporären Dateien im Ordner /tmp/ ablegt. Wie das geht, wird im Wiki-Artikel auf ubuntuusers.de erklärt.

Dazu muss about:config in die Adress-Zeile eingegeben und der auftauchende Hinweis bestätigt werden. Nun ist die Zeile browser.cache.disk.parent_directory neu einzufügen und auf /tmp/firefox-cache zu stellen.

Kamera und Mikrofon-Zugriff unterbinden

Um zu verhindern, dass mein Browser Zugriff auf meine Webcam und mein Mikrofon haben, gilt es den Zugriff auf diese Hardware zu unterbinden.

Dazu müssen wiederum Zeilen in der about:config angepasst werden. Die entsprechenden Zeilen lautent media.navigator.enabled und media.peerconnection.enabled. Beide existieren bereits, müssen als Wert jedoch jeweils von true auf false gesetzt werden. Dein Doppelklick genügt dafür. Überprüfen lässt sich die Änderung zum Beispiel auf den Test-Seiten für die WebRTC-Implementierung.

Doch nicht nur der Browser selbst, auch das Flash-Plugin bietet Möglichkeiten auf diese Hardware zu zu greifen. Dies lässt sich auf der Einstellungsseite verhindern.

Geolocation / Standortbestimmung unterbinden

Auch die Standort-Bestimmung möchte ich dem Browser unter keinen Umständen erlauben. Wie das geht wird auf den Seiten von Mozilla erklärt.

Die entsprechende Zeile in der about:config lautet geo.enabled. Auch diese muss per Doppelklick von true auf false gesetzt werden.

Darüber hinaus bietet der Browser ab Werk die Möglichkeit WLan-Netzte der Umgebung zu analysieren, um mittels eines Google-Service die Standort-Genauigkeit noch zu verbessern. Wer das nicht möchte entferne die URL unter geo.wifi.uri.

Sitzungswiederherstellung unterbinden

Seit geraumer Zeit bietet Firefox an, die aktuelle Sitzung (engl. Session) nach einem Absturz oder dem plötzlichen Beenden des Browsers wiederherzustellen. Warum das sinnvoll sein kann und unter welchen Umständen der Browser dies tut, wird auf der Website des Entwickler-Teams von Mozilla erklärt.

Dieses an sich sehr nützliche Verhalten bürgt die Gefahr, dass beim Öffnen des Browsers Dritte einblick bekommen, welche Websiten zuletzt besucht wurden und je nach Cookie-Politik Websiten zugriff auf Online-Konten bekommen können, aus denen sich (zB wegen eines Absturzes) nicht mehr ausgeloggt werden konnte. Die datenschutzrechtlichen Implikationen werden von Mozilla selbst angesprochen.

Zum Deaktivieren der Sitzungswiederherstellung muss in der schon von oben bekannten about:config der Wert browser.sessionstore.resume_from_crash gesucht und auf false gesetzt werden.

Telemetrie-Datensammlung überprüfen

Seit längerem sammeln die Testversionen des Firefox bereits sogenannte Telemetrie-Daten. Sören Hentzschel erklärt in seinem Blogbeitrag dazu:

Firefox besitzt mit dem Telemetrie-Feature eine Mess-Infrastruktur, um diverse Leistungsdaten von Firefox anonym an die Mozilla-Server zu übertragen. Ab sofort ist Telemetrie in den Betaversionen standardmäßig aktiviert.

Telemetrie liefert Mozilla wichtige Erkenntnisse zur Nutzung des Browsers, um diesen zu verbessern. Für Nutzer der Nightly- sowie Aurora-Versionen von Firefox war Telemetrie bereits standardmäßig aktiviert, Gleiches trifft nun auch für Nutzer der Beta-Versionen zu.

Die Einstellungen für die Sammlung telemetrischer Daten lässt sich leicht unter about:telemetry überprüfen.

Tracking blockiern

Seit Version 42 hat der Firefox eine Tracking Protection für private Browser-Tabs:

Sie soll den Surfer davor schützen, dass Werbenetze sein Nutzungsverhalten verfolgen, um Informationen für Profile zu sammeln. Dazu blockiert die Firefox-Beta das Laden von Site-Elementen, die bekannt dafür sind, Surfer zu tracken.

Um den Tracking-Schutz auch in normalen Tabs zu aktivieren folgen wir der Anleitung von Martin und suchen in der about:config den Wert privacy.trackingprotection.enabled. Dieser muss nun auf true gesetzt werden. Mehr Infos finden sich bei mozilla.org.

Zeitmessung des Seitenaufrufs abschalten

Mittels einer Funktion im DOM lassen sich Seitenaufrufe messen und eventuell zur Erzeugung eines individuellen Fingerabdrucks nutzen. Um das zu verhindern muss in der about:config der Wert von dom.enable_performance auf false gesetzt werden. Im Torbrowser ist dies bereits der Fall.

Eine ähnliche Funktion stellen dom.enable_resource_timing und dom.enable_user_timing bereit, die ebenfalls mittels false deaktiviert werden können.

Vorrausladen von Inhalten unterbinden

Firefox analysiert bereits während eines Seitenbesuchs die Link-Struktur dieser Seite und lädt mögliche Seiten vor, die „wahrscheinlich“ angeklickt werden. Dies kann zur Folge haben, dass die Internetanbieter oder Nachrichtendienste, die den Datenverkehr abschürfen, Seitenaufrufe dokumentieren, die nie getätigt wurden.

Das Deaktivieren mittels setzen des Wertes False in network.prefetch-next schafft hier Abhilfe.

Eine verwandte Funktion stellt das DNS-Prefetching dar. Hier löst Firefox IPs auf, bevor ihr auf den entsprechenden Link geklickt habt. Zur Unterbindung muss
network.dns.disablePrefetch auf True gesetzt werden.

Auch für TCP gibt es eine Vorlade-Funktion, die getrost deaktiviert werden kann. Dazu network.predictor.enabled auf False setzen.

Etwas anders aber ebenfalls rein spekulativ funktioniert die Funktion network.http.speculative-parallel-limit die Anzahl von TCP-Verbindung bereits beim Überfahren von Links bestimmt. Um das zu verhindern sollte der Wert auf 0 gesetzt werden. Im Torbrowser ist dies bereits der Fall.

Fingerprinting erschweren

Das Team, dass den Tor-Browswer entwickelt hat Strategien entwickelt, um Fingerprinting, also das Sammeln von Identifizierungsmerkmalen, die insgesamt eine recht genaue Identifikation des Webbrowser und damit des Nutzenden ermöglichen, zu erschweren. Um diese Funktionen zu verwenden muss der Schlüssel privacy.resistFingerprinting auf True gesetzt werden.

Pastejacking verhindern

Seit Version 41 erlaubt Firefox Webseiten den Zugriff auf die Zwischenablage. Manche Zeitungen nutzen dies um an kopierte Beitrags-Ausschnitte die URL automatisiert anzuhängen. Dieses Feature könnte jedoch auch genutzt werden, um zB von einer Website kopierten Quellcode oder Befehlszeilen so zu verändern, dass Schadcode auf dem Rechner ausgeführt wird. Sicherheitsforscher haben den Begriff Pastejacking dafür geprägt.

Firefox kann den Zugriff auf die Zwischenablage unterbinden. Dazu muss in der about:config der Wert dom.event.clipboardevents.enabled auf false gesetzt werden.

user.js

Die Datei muss im Profil-Ordner eures Browser ~/.mozilla/firefox/PROFILNAME/ als user.js gespeichert werden.

// http://barfoos.blogsport.eu/firefox-an-die-eigenen-beduerfnisse-anpassen/#temp_Dateien
user_pref("browser.cache.disk.parent_directory", "/tmp/firefox-cache");

// http://barfoos.blogsport.eu/firefox-an-die-eigenen-beduerfnisse-anpassen/#Kamera_und_Mikrofon
user_pref("media.navigator.enabled", false);
user_pref("media.peerconnection.enabled", false);

// http://barfoos.blogsport.eu/firefox-an-die-eigenen-beduerfnisse-anpassen/#Geolocation
user_pref("geo.enabled", false);
user_pref("geo.wifi.uri", "");

// http://barfoos.blogsport.eu/firefox-an-die-eigenen-beduerfnisse-anpassen/#Sitzungswiederherstellung
user_pref("browser.sessionstore.resume_from_crash", false);

// http://barfoos.blogsport.eu/firefox-an-die-eigenen-beduerfnisse-anpassen/#Telemetrie
user_pref("toolkit.telemetry.enabled", false);
user_pref("toolkit.telemetry.rejected", false);
user_pref("experiments.enabled", false);
user_pref("experiments.supported", false);

// http://barfoos.blogsport.eu/firefox-an-die-eigenen-beduerfnisse-anpassen/#Tracking
user_pref("privacy.trackingprotection.enabled", true);

// http://barfoos.blogsport.eu/firefox-an-die-eigenen-beduerfnisse-anpassen/#Navigation_Timing
user_pref("dom.enable_performance", false);
user_pref("dom.enable_resource_timing", false);
user_pref("dom.enable_user_timing", false);

// http://barfoos.blogsport.eu/firefox-an-die-eigenen-beduerfnisse-anpassen/#Vorrausladen
user_pref("network.prefetch-next", false);
user_pref("network.dns.disablePrefetch", true);
user_pref("network.predictor.enabled", false);
user_pref("network.http.speculative-parallel-limit", O);

// http://barfoos.blogsport.eu/firefox-an-die-eigenen-beduerfnisse-anpassen/#Fingerprinting
user_pref("privacy.resistFingerprinting", true);

// http://barfoos.blogsport.eu/firefox-an-die-eigenen-beduerfnisse-anpassen/#Pastejacking
user_pref("dom.event.clipboardevents.enabled", false);

Erweiterungen installieren

Zu guter Letzt gilt es noch ein paar für mich unumgängliche Erweiterungen zu installieren:

  • uBlock Origin – Werbeblocker, der AdBlock Edge abgelöst hat
  • uMatrix – Matrix-basierte Firewall, die NoScript abgelöst hat
  • Cahoots – zeigt Verbindungen von Journalisten zu Vereinen, Organisationen und Unternehmen
  • HTTPS Everywhere – Verbindung verschlüsseln, wenn der Server das anbietet
  • Privacy Badger – mächtiger aber einfach bedienbarer Script-, Cookie- & Ad-Blocker
  • Calomel SSL Validation – tiefergehende Bewertung der TLS-Verschlüsselung zum Server

Alte Add-ons, die ich nicht mehr nutze:

  • Clone-Tab – ermöglicht das Duplizieren von Tabs
  • NoScript – mächtiger Blocker
  • Favicon Reloader – aktualisiert Favicons aller Lesezeichen auf Knopfdruck
  • XMarks Sync – Lesezeichen-Synchronisation über Browsergrenzen hinweg
  • Adblock Edge – Werbeblocker, der kein Feintuning braucht
  • <a href=“https://addons.mozilla.org/de/firefox/addon/ghostery/“>Ghostery – mächtiger Blocker
  • Adblock Plus – Werbeblocker, der Feintuning braucht
  • Download Status Bar – übersichtliche Download-Verwaltung
  • Foxy Proxy – vereinfacht den Wechsel zwischen Proxy und normaler Verbindung
  • InstantFox Quick Search – Suchen in der Adresszeile mit Suchkürzeln