ubuntuusers.de

16. Mai 2018

Ich wurde heute nach meinem öffentlichen PGP-Schüssel gefragt mit dem man mir verschlüsselte E-Mails zukommen lassen kann. Da das die erste Anfrage seit Jahren war, musste ich erst einmal passen, da es die Adresse für die ich damals einen Schlüssel erstellt habe, nicht mehr existiert.

Auch wenn ich in der Praxis vermutlich wenig bis gar keine verschlüsselten E-Mails erhalten werde, habe ich für die im Impressum genannte E-Mail-Adresse ein PGP-Schlüsselpaar erstellt. Den öffentlichen Schlüssel kann man hier herunterladen. Auf einen Keyserver werde ich nichts hochladen, da ich beim letzten mal schneller Spam erhalten habe als ich die Adresse samt öffentlichen Schlüssel veröffentlicht habe. Der Fingerprint des Schlüssels lautet 288B 8E32 5378 AC5B A3D0 C76F E235 C466 7179 7AE4.

Da ich wegen meines Notebooks immer eine aktuelle stabile Vanilla-Version von Linux einsetze, habe ich mir in der Vergangenheit angewöhnt regelmäßig bei „www.kernel.org“ nachzuschauen, welches gerade die aktuellste stabile Linux-Version ist. Danach führte der Weg immer zum Mainline-PPA“ um dort dann die die Debian-Pakete des Kernels herunterzuladen. Diese sind in der Regel kurz nach der Freigabe einer neuen Version verfügbar. Da ich ein bequemer Mensch bin und mir vor allem das händische Herunterladen irgendwann auf den Geist ging, habe ich ein kleines Skript geschrieben, welches diese Schritte automatisiert:

Das Skript schaut auf der Kernel-Webseite nach, welches die aktuellste stabile Version ist und lädt dann aus dem Mainline-PPA die passenden Dateien für den eingesetzten CPU-Typ herunter. Das Skript hat noch drei Parameter, welche für alle selbsterklärend sind, die schon einmal einen Kernel aus dem Mainline-PPA heruntergeladen haben. Das Skript prüft selbstständig ob die CPU und der Kerneltyp zusammenpassen (z.B. macht es keinen Sinn zu versuchen einen „i386“-Kernel vom Typ „snapdragon“ herunterzuladen. Letzteren gibt es nur für den CPU-Typ „arm64“) und lässt nur den Download einer verfügbaren Kombination zu.

Das Skript ist in Python3 geschrieben und benötigt ein zusätzliches Python-Modul, welches aber in allen noch unterstützten Ubuntu und Debian-Versionen vorhanden ist:

sudo apt install python3-lxml

Das Skript habe ich auf Github gehostet: https://github.com/glasen/download_kernel

Direkter Download des Skripts: download_kernel.py

15. Mai 2018

Foto: © Rogatnev / Fotolia.com

Die Meldung gehört eigentlich in die Kategorie "In China ist ein Sack Reis umgefallen". Mail-Verschlüsselung ist zwar wichtig, aber derart wenig verbreitet, dass praktisch nur eine kleine Minderheit von diesem Problem betroffen ist. Forscher fanden heraus, dass die E-Mail Verschlüsselung mittels S/MIME und PGP nicht sicher ist. Sicherheitsprobleme haben heutzutage immer hashtagtaugliche Namen, dieses Mal: EFAIL.

Die Presseberichterstattung reicht von Katastrophe bis halb-so-wild. Daher einige Links für den Überblick:

  1. Heise - PGP und S/MIME: E-Mail-Verschlüsselung akut angreifbar
  2. Heise - PGP und S/MIME: So funktioniert Efail
  3. Golem - Angreifer können sich entschlüsselte E-Mails schicken lassen
  4. EFF - Attention PGP Users: New Vulnerabilities Require You To Take Action Now

Hinzu kommen noch viele mehr oder minder gut informierte Artikel in der Presse. ZEIT ONLINE, SPON, Süddeutsche - alle berichten darüber.

Einige Stimmen warnen auch vor übertriebener Panik. Gerne auch mit dem Hinweis, dass man doch seit Jahren vor HTML in E-Mails warnt.

Grundsätzlich ist das nicht falsch, es zeigt aber leider mal wieder, dass viele Sicherheitsexperten in einem Paralleluniversum leben. HTML ist in E-Mails heute außerhalb von Open Source-Mailinglisten weit verbreitet. Das Nachladen von externen Inhalten in der Regel voreingestellt. Die Sicherheitslücke ist deshalb real und eine Warnung nicht übertrieben.

Nun wird man abwarten müssen ob die E-Mail Programme und Protokolle entsprechend abgesichert werden. Diese Lücke hat leider das Potenzial die sowieso schon kaum verbreitete Mailverschlüsselung weiter zu diskreditieren.

Eine Übersicht der verwundbaren E-Mail Programme findet sich auf Seite 11 des Papers. Bezeichnend ist mal wieder, dass Thunderbird von allen Open Source-Programmen am verwundbarsten ist.

Foto: © Rogatnev / Fotolia.com

Die Meldung gehört eigentlich in die Kategorie "In China ist ein Sack Reis umgefallen". Mail-Verschlüsselung ist zwar wichtig, aber derart wenig verbreitet, dass praktisch nur eine kleine Minderheit von diesem Problem betroffen ist. Forscher fanden heraus, dass die E-Mail Verschlüsselung mittels S/MIME und PGP nicht sicher ist. Sicherheitsprobleme haben heutzutage immer hashtagtaugliche Namen, dieses Mal: EFAIL.

Die Presseberichterstattung reicht von Katastrophe bis halb-so-wild. Daher einige Links für den Überblick:

  1. Heise - PGP und S/MIME: E-Mail-Verschlüsselung akut angreifbar
  2. Heise - PGP und S/MIME: So funktioniert Efail
  3. Golem - Angreifer können sich entschlüsselte E-Mails schicken lassen
  4. EFF - Attention PGP Users: New Vulnerabilities Require You To Take Action Now

Hinzu kommen noch viele mehr oder minder gut informierte Artikel in der Presse. ZEIT ONLINE, SPON, Süddeutsche - alle berichten darüber.

Einige Stimmen warnen auch vor übertriebener Panik. Gerne auch mit dem Hinweis, dass man doch seit Jahren vor HTML in E-Mails warnt.

Grundsätzlich ist das nicht falsch, es zeigt aber leider mal wieder, dass viele Sicherheitsexperten in einem Paralleluniversum leben. HTML ist in E-Mails heute außerhalb von Open Source-Mailinglisten weit verbreitet. Das Nachladen von externen Inhalten in der Regel voreingestellt. Die Sicherheitslücke ist deshalb real und eine Warnung nicht übertrieben.

Nun wird man abwarten müssen ob die E-Mail Programme und Protokolle entsprechend abgesichert werden. Diese Lücke hat leider das Potenzial die sowieso schon kaum verbreitete Mailverschlüsselung weiter zu diskreditieren.

Eine Übersicht der verwundbaren E-Mail Programme findet sich auf Seite 11 des Papers. Bezeichnend ist mal wieder, dass Thunderbird von allen Open Source-Programmen am verwundbarsten ist.

14. Mai 2018

Mann, ist das lange her.

Mein letzter Eintrag hier in Zockertown, der mit Kernel Compilierung zu tun hatte, ist ca. 9 Jahre her.

Seit dem bin ich offenbar immer mit dem Standard Kerneln von Debian ausgekommen.

Komme ich immer noch, aber im aktuellen Testing "Buster" habe ich zwei kleine Ärgernisse, die ich untersuchen bzw. beheben möchte. Zum Beispiel funktioniert seit dem Debian linux-image-4.15.03-amd64 das einstellen der Hintergrundhelligkeit auf meinem Tuxedo XC1506 nicht mehr per Fn Tasten, sondern nur noch mit xbacklight.

Die Ursache ist die fehlende Infrastruktur unter /sys/class/backlight/ 

Deshalb dachte ich, ich probiere mal einen neuen Kernel und gucke mir die .config genauer an, was übrigens in heutigen Zeiten nicht ohne ist, man kämpft sich durch mehr als 8000 Zeilen....

Der von Buster bereitgestellte und installierte Kernel ist: linux-image-4.16.0-1-amd64

Mein compilierter Kernel ist der derzeitige Stable 4.16.8

# diff -y --suppress-common-lines  /boot/config-4.16.0-1-amd64 /boot/config-4.16.8 
# Linux/x86 4.16.5 Kernel Configuration                                                      | # Linux/x86_64 4.16.8 Kernel Configuration
CONFIG_X86_X32_DISABLED=y                                                             <
                                                                                                                        > CONFIG_FB_NVIDIA=m
                                                                                                                        > CONFIG_FB_NVIDIA_I2C=y
                                                                                                                        > # CONFIG_FB_NVIDIA_DEBUG is not set
                                                                                                                        > CONFIG_FB_NVIDIA_BACKLIGHT=y
                                                                                                                        > # CONFIG_FB_RIVA is not set
CONFIG_USB_COMMON=m                                                                      |  CONFIG_USB_COMMON=y
CONFIG_SECURITY_PERF_EVENTS_RESTRICT=y                              <
CONFIG_LOCK_DOWN_KERNEL=y                                                        <
# CONFIG_ALLOW_LOCKDOWN_LIFT_BY_SYSRQ is not set            <
CONFIG_LOCK_DOWN_IN_EFI_SECURE_BOOT=y                             <
CONFIG_SYSTEM_TRUSTED_KEYS="debian/certs/test-signing-certs.p | CONFIG_SYSTEM_TRUSTED_KEYS=""

Die Fehlermeldung:

 *** Keine Regel vorhanden, um das Ziel „debian/certs/test-signing-certs.pem“, 
  benötigt von „certs/x509_certificate_list“, zu erstellen.  Schluss.
Makefile:1060: die Regel für Ziel „certs“ scheiterte

wird durch die Config Optionen CONFIG_SYSTEM_TRUSTED_KEYS="" und auskommentieren / entfernen von CONFIG_SYSTEM_EXTRA_CERTIFICATE vermieden

 

#Kernel compilieren

time make-kpkg -j 8 --initrd --revision 100.0 kernel_image modules_image

real 29m53,385s

user 180m22,725s

sys 15m53,992s

Die Namensgebung ist ungeschickt, aber für meine Zwecke ausreichend, wichtig ist, dass ich die gebauten Kernel auseinander halten kann.

 

So. Neuer Kernel läuft nun, Helligkeitseintellung mit den Fn Tasten geht wieder, das zweite Ärgernis, nämlich die Fn Taste für Flugmodus geht immer noch nicht wieder, das ist mir aber erstmal nicht so wichtig, hat bestimmt ähnliche Ursachen.. 

 
vNotes 14. Mai 2018 13:15

Efail


[Breaking] Wie Sebastian Schinzel, Professor an der Fachhochschule Münster schreibt, sind momentan die Implementierungen zu den verbreiteten Verfahren PGP und S/MIME zur Verschlüsselung von E-Mails akut angreifbar. Siehe Tweet:

Auch die EFF warnt nun und rät, bis auf Weiteres die Verschlüsselung zu deaktivieren und andere Kanäle zu nutzen. Weitere Informationen sollen morgen folgen.

[Update 13:28 Uhr] BSI-Pressemitteilung zur Thematik

[Update 13:29 Uhr] Änderung im Text: die Implementierungen sind angreifbar, die Verfahren selbst sollen nach aktuellem Stand noch sicher sein

[Update 13:46 Uhr] Artikel von Netzpolitik.org. Es geht scheinbar in erster Linie um aktive Inhalte. EFail.de ist eine Übersichtssetie zur Thematik. Hier befindet sich das dazugehörige Paper.

[Update 13:50 Uhr] Zusammengefasst:

In a nutshell, EFAIL abuses active content of HTML emails, for example externally loaded images or styles, to exfiltrate plaintext through requested URLs.

– https://efail.de/

[Update 13:56 Uhr] Empfehlenswert im Paper ist Seite 11, Table 4. Hier ist aufgelistet, bei welchen Clients akuter Handlungsbedarf herrscht. Mozilla Thunderbird soll demnach sehr angreifbar sein (S/MIME und alle PGP-Varianten), Evolution nur bei S/MIME und der Kommandozeilenclient Mutt – oh Wunder – gar nicht (der weiß mE nicht Mal, wie er ein Bild aufrufen kann, aber das rettet ihn scheinbar). Roundcube-Admins aufgepasst: hier muss auch gehandelt werden.

Mozilla arbeitet an einer neuen Fähigkeit für Firefox, um mit mehreren Tabs gleichzeitig interagieren zu können.

Bislang kann immer nur maximal ein Tab gleichzeitig verschoben oder geschlossen werden. Mozilla arbeitet an einer neuen Fähigkeit für Firefox, welche es erlaubt, mit mehreren Tabs gleichzeitig zu interagieren.

Dies funktioniert, indem der Nutzer bei gedrückter Strg-Taste (macOS: Cmd-Taste) mehrere Tabs markieren und dann per Kontextmenü-Eintrag die gewünschte Aktion ausführen kann. Mittels gedrückter Shift-Taste soll eine ganze Reihe von Tabs ausgewählt werden können. Ein Kontextmenü-Eintrag erlaubt die Markierung aller geöffneten Tabs.

Alles, was bisher für einen Tab möglich war, soll in Zukunft auch für mehrere Tabs möglich sein. Neben der bisher bekannten Möglichkeit, einen einzelnen Tab in ein neues Fenster zu verschieben, sollen die Möglichkeiten neu dazu kommen, den Tab ganz an den Anfang oder das Ende des aktuellen Fensters zu verschieben. Zu den Optionen, andere Tabs oder die Tabs rechts vom ausgewählten Tab zu schließen, soll die Option dazu kommen, doppelte Tabs zu schließen.

Multi-Tab-Management in Firefox

Die Schaltfläche, welche derzeit erscheint, wenn der Anwender mehr Tabs offen hat als auf dem Bildschirm Platz haben, und bei Klick alle geöffneten Tabs anzeigt, soll in Zukunft permanent sichtbar sein, also auch bei wenigen geöffneten Tabs. Hier sollen Funktionen zugänglich gemacht werden, welche alle geöffneten Tabs betreffen, z.B. alle geöffneten Tabs stumm schalten oder alle geöffneten Tabs als Lesezeichen hinzufügen.

Multi-Tab-Management in Firefox

Die Entwicklung findet hinter der in about:config vorhandenen und standardmäßig deaktivierten Einstellung browser.tabs.multiselect statt. Derzeit passiert noch nicht mehr, als dass der Tab-Text bei Mehrfachauswahl fett wird. Aber das wird sich in den kommenden Monaten ändern.

Der Beitrag Firefox bekommt Multi-Tab-Management erschien zuerst auf soeren-hentzschel.at.

vNotes 14. Mai 2018 00:00

Efail

[Breaking] Wie Sebastian Schinzel, Professor an der Fachhochschule Münster schreibt, sind momentan die Implementierungen zu den verbreiteten Verfahren PGP und S/MIME zur Verschlüsselung von E-Mails akut angreifbar. Siehe Tweet:

https://twitter.com/seecurity/status/995906576170053633

https://twitter.com/seecurity/status/995906638556155904

https://twitter.com/seecurity/status/995906702951288833

https://twitter.com/seecurity/status/995906762439094272

Auch die EFF warnt nun und rät, bis auf Weiteres die Verschlüsselung zu deaktivieren und andere Kanäle zu nutzen. Weitere Informationen sollen morgen folgen.

[Update 13:28 Uhr] BSI-Pressemitteilung zur Thematik

[Update 13:29 Uhr] Änderung im Text: die Implementierungen sind angreifbar, die Verfahren selbst sollen nach aktuellem Stand noch sicher sein

[Update 13:46 Uhr] Artikel von Netzpolitik.org. Es geht scheinbar in erster Linie um aktive Inhalte. EFail.de ist eine Übersichtssetie zur Thematik. Hier befindet sich das dazugehörige Paper.

[Update 13:50 Uhr] Zusammengefasst:

In a nutshell, EFAIL abuses active content of HTML emails, for example externally loaded images or styles, to exfiltrate plaintext through requested URLs.

– https://efail.de/

[Update 13:56 Uhr] Empfehlenswert im Paper ist Seite 11, Table 4. Hier ist aufgelistet, bei welchen Clients akuter Handlungsbedarf herrscht. Mozilla Thunderbird soll demnach sehr angreifbar sein (S/MIME und alle PGP-Varianten), Evolution nur bei S/MIME und der Kommandozeilenclient Mutt - oh Wunder - gar nicht (der weiß mE nicht Mal, wie er ein Bild aufrufen kann, aber das rettet ihn scheinbar). Roundcube-Admins aufgepasst: hier muss auch gehandelt werden.

 

13. Mai 2018

Gestern hatte ich über IRC mal wieder eine Diskussion geführt, warum man Linux bzw. OSS im Allgemeinen nutzt bzw. nutzen soll. Im Laufe der Diskussion hat sich erneut herauskristallisiert, dass ich zwar Respekt vor Stallman habe aber mir seine Ansichten trotzdem größtenteils am Arsch vorbeigehen. Bin ich nun ein schlechter Mensch?

Gefühlt gehöre ich irgendwie zur Minderheit der Nutzer von Linux bzw. OSS die dies einfach aus rein technischen Gründen tun. Zum Beispiel weil eben nach dem Bekanntwerden von Sicherheitslücken sehr schnell Updates angeboten werden. Oft schneller als die Medien reagieren können. Und man diese notfalls auch abseits der Paketverwaltung einspielen kann. Trotzdem setzte ich in bestimmten Fällen auch einfach auf proprietäre Lösungen. Anstelle der quelloffenen Nouveau-Treiber nutze ich die proprietären Treiber von Nvidia. Wieso? Weil ich auch unter Linux zocke. Zum Beispiel CS:GO. Und da sind die Treiber von Nvidia einfach derzeit besser. Punkt. Ein weiteres Beispiel wäre der Editor. Ja es gibt eine Arsch voll quelloffener Editoren unter Linux. Aber egal welchen ich teste, ich lande trotzdem immer wieder bei Sublime Text. Das hat in dem Fall nicht einmal unbedingt etwas mit dem Funktionsumfang zu tun sondern einfach etwas mit dem “Look & Feel”. Genauso wie ich eben Vivaldi anstelle von Firefox bevorzuge. Bei Vivaldi muss ich mir nicht x Erweiterungen installieren. Er funktioniert größtenteils einfach “out of the box” wie ich es will.

Sehr oft wird als Argument für Linux bzw. OSS die Freiheit angegeben. Aber spätestens wenn es um die Lizenz diverser Programme geht, hört diese Freiheit scheinbar bei vielen auf. Meiner Meinung nach sollte man auch als Nutzer von OSS oder Linux die Freiheit haben auch nicht quelloffene Software zu nutzen. Ich finde, dass eine Nutzung von 80 Prozent OSS und 20 Prozent CSS immer noch besser ist als 100 Prozent CSS. Wobei auch einen Nutzung von 100 Prozent CSS nicht zwangsläufig “böse” ist.

Und quelloffene Software kann sicherer sein als nicht quelloffene Software. Aber die letzen Jahre haben gezeigt, dass auch in quelloffener Software Sicherheitslücken über Jahre unentdeckt bleiben. Nur weil man theoretisch die Möglichkeit hat den Quellcode zu prüfen bedeutet es ja noch lange nicht, dass es auch jemand macht. Bzw. dass dieser auch alle Probleme entdeckt. Genauso wie eben nicht jeder Entwickler von nicht quelloffener Software automatisch ein Backdoor oder eine Spionagefunktion einbaut. Unterm Strich ist es also für den durchschnittlichen Nutzer eine Sache des Vertrauens. Vertraue ich nun quelloffenen Code den ich selbst nicht beurteilen kann und der vielleicht auch nicht von anderen mit mehr Ahnung geprüft wird? Oder vertraue ich Leuten wie_Tetzchner (Chef von Vivaldi) die mir bisher keinen Anlass gegeben haben ihnen zu misstrauen?

Gerade in der heutigen Zeit sollte man natürlich immer misstrauisch sein (z. B. https://github.com/canonical-websites/snapcraft.io/issues/651). Aber man sollte vielleicht auch öfters einfach mal etwas tolleranter gegenüber anderen Nutzern sein. Es wäre schön, wenn es mal eine Zeit geben würde, in der ich mich nicht verdeitigen müsste, wieso ich Sublime Text anstelle eines anderen quelloffenen Editors nutze. Oder wenn ich mir mal keine dummen Sprüche anhören muss nur weil ich Distribution X nutze. Unterm Strich sollten wir Nutzer von Linux / OSS doch eigentlich alle an einem Strang ziehen. Statt dessen führen viele einfach nur einen lächerlichen Kleinkrieg. Distribution gegen Distribution. Editor gegen Editor. DE gegen DE. Warum versuchen wir nich einfach gemeinsam etwas zu verbessern? Warum müssen wir wegen jedem Scheiß einen Fork erstellen anstelle sich auf einen Mittelweg zu einigen? Und warum können wir nicht einfach akzeptieren, dass es auch Nutzer gibt die Linux / OSS nicht nutzen können oder einfach nicht nutzen wollen? Oder das man eben anstelle von Plasma Gnome nutzt? Auch das ist ein Teil von Freiheit. Und gerade das ist doch eigentlich wichtig.

In diesem Sinne. Be nice or go away.

Eine weitere Woche ist um. Da ich momentan viel an PictureNotes bzw. dessen neuer Android-App CapriPix arbeite, hier "nur" fünf interessante Artikel/Seiten aus dieser Woche:

  • In den letzten Tagen fand die alljährliche Google-Entwicklerkonferenze I/O statt. Der Assistant kann mittlerweile alleine telefonieren und Linux kommt auf die Chromebooks.
  • K9 Mail nutzt scheinbar noch TLS 1.0. Das ist echt schade, da K9 aus meiner Sicht einer der wenigen leistungsfähigen Android-E-Mail-Clients auf Open Source-Basis ist. Die längst überfällige Umstellung auf Material Design hängt scheinbar immer noch in der Schleife und solche sicherheitsrelevanten Mängel sind echt ... ärgerlich.
  • Nutzt wer MediaWiki? Für größere Wikis setze ich es teils selber ein, da im Gegensatz zum sonst sehr guten DokuWiki z.B. Templating sehr einfach ermöglicht wird. Deutlich schwieriger sind jedoch Modifikationen außerhalb des Contents, da dort meist auf Configfiles zurückgegriffen werden muss. Seeseekey zeigt, wie man bspw. den Footer verändern kann.
  • Mozilla Firefox 60 ist da. Sören Hentzschel erklärt in gewohnt sehr hoher Qualität die Veränderungen des Releases.
  • Das Thema DSGVO wird uns noch die nächsten Wochen etwas beschäftigen. Wer momentan beim Umstellen bzw. Anpassen ist, findet in diesem GitHub Awesome eine ganz nette Checklist als roten Faden.

 

12. Mai 2018

In knapp 2 Wochen ist es soweit, denn am 25.05.2018 tritt die Datenschutz-Grundverordnung (DSGVO) in Kraft.
Ich habe mich nun auch mal damit auseinandergesetzt und aus den ganzen Aenderungen Konsequenzen gezogen:

Damit ist meine Website noch ein bisschen schneller und datenschutzfreundlicher geworden und ihr koennt nun selbst entscheiden, ob ihr euch das Verlinkte ansehen wollt oder nicht. Da ja nun auch keine externen Videos mehr eingebunden werden, koennen diese trotzdem recht datenschutzfreundlich angeguckt werden, z.B. mit youtube-dl .

Es steht allerdings noch die Anpassung/Anonymisierung der IP-Speicherung durch Nginx aus.
Allerdings bin ich mir hier noch nicht sicher, ob und wie ich diese durchfuehre.

Fuer alle, die etwas mehr einsetzen als ich (z.B. Cookies), gibt es hier eine DSGVO-Checkliste und hier noch ein Artikel (auch die weiteren Links beachten!):

Interessant ist in dem Zusammenhang das Tool Webbkoll , was eine URL auf diverse Dinge, z.B. TLS, Referrer, Cookies, CSP und Third-parties testet.

Ergebnis fuer yhaupenthal.org von Webbkoll
Ergebnis fuer yhaupenthal.org von Webbkoll

Angestiftet durch den Hinweis “Referrers partially leaked” hatte ich kurzzeitig die Policy auf no-referrer gesetzt, mich dann aber doch wieder umentschieden, da so fremde Websites nicht einsehen koennen, dass Leute von mir kommen, was ich dann zwecks Bekanntheitsgrad vermeiden moechte. (Convince me otherwise!)

In knapp 2 Wochen ist es soweit, denn am 25.05.2018 tritt die Datenschutz-Grundverordnung (DSGVO) in Kraft.
Ich habe mich nun auch mal damit auseinandergesetzt und aus den ganzen Aenderungen Konsequenzen gezogen:

  • Alle iframes entfernt (YouTube, Vimeo, GitHub, Twitter, ...) und durch Links ersetzt
  • Unter Datenschutz ein bisschen ausfuehrlicher beschrieben, was ich speichere
  • Meine Content Security Policy (CSP) angepasst (u.a. mit Hilfe des CSP Evaluators von Google und ReportURI)
  • Den Header Referrer-Policy von no-referrer-when-downgrade zu strict-origin-when-cross-origin geaendert (Erklaerung)

Damit ist meine Website noch ein bisschen schneller und datenschutzfreundlicher geworden und ihr koennt nun selbst entscheiden, ob ihr euch das Verlinkte ansehen wollt oder nicht.
Da ja nun auch keine externen Videos mehr eingebunden werden, koennen diese trotzdem recht datenschutzfreundlich angeguckt werden, z.B. mit youtube-dl.

Es steht allerdings noch die Anpassung/Anonymisierung der IP-Speicherung durch Nginx aus.
Allerdings bin ich mir hier noch nicht sicher, ob und wie ich diese durchfuehre.

Fuer alle, die etwas mehr einsetzen als ich (z.B. Cookies), gibt es hier ein paar Links (auch die weiteren Links beachten!):

Interessant ist in dem Zusammenhang das Tool Webbkoll, was eine URL auf diverse Dinge, z.B. TLS, Referrer, Cookies, CSP und Third-parties testet.

Ergebnis fuer yhaupenthal.org von Webbkoll

Angestiftet durch den Hinweis "Referrers partially leaked" hatte ich kurzzeitig die Policy auf no-referrer gesetzt, mich dann aber doch wieder umentschieden, da so fremde Websites nicht einsehen koennen, dass Leute von mir kommen, was ich dann zwecks Bekanntheitsgrad vermeiden moechte. (Convince me otherwise!)

LXD ist ein Hypervisor für Linuxcontainer, den es seit einigen Versionen in Ubuntu gibt. Ein Linuxcontainer ist im Prinzip wie eine virtuelle Maschine, nur leichtgewichtiger. Wir verwenden LXD / LXC für viele unserer Anwendungen an der Schule. LXD lässt sich leicht bedienen und es gibt so einige Gründe, warum wir es verwenden. Heute möchte ich zeigen, wie man das Backup für LXD-Container machen kann.

1. Möglichkeit: lxc copy

Die einfachste Möglichkeit besteht darin, das man einen LXD-Container einfach auf einen anderen Rechner kopiert. Dazu braucht man einen zweiten LXD-Host, den man auf dem ersten als Remote hinzufügt.

$ sudo lxc remote add lxd2 192.168.1.50

lxd2 ist dabei der Name, den man dem zweiten LXD-Host geben wollen, gefolgt von der IP. Beim Setup des zweiten LXD-Hosts muss man darauf achten, dass er über das Netzwerk erreichbar ist und man muss auch ein Admin-Passwort vergeben. Dieses Passwort muss man eingeben, wenn man die Remote hinzufügen will.

Ist alles eingerichtet kann man sich z.B. alle Container auf der Remote anzeigen lassen:

$ lxc list lxd2:

Um nun ein Backup eines Containers zu machen, kopiert man ihn bzw. einen Snapshot auf die eben hinzugefügte Remote:

$ lxc snapshot my-container my-snapshot
$ lxc copy my-container/my-snapshot lxd2:my-backup

In umgekehrter Weise kann man den Container wieder auf dem ursprünglichen Host wiederherstellen.

$ lxc copy lxd2:my-backup my-container-restored

2. Möglichkeit: lxc export und lxc publish

Mit LXD kann man auch einen Container als komprimiertes Image exportieren und dann auf einem NAS, einem Offsite-Backup oder einem Cloud-Speicher sichern. Später können diese Images dann mit lxc import wieder importiert bzw. wiederherstellt werden.

Auf Github habe ich ein Skript gefunden, welches genau unsere Anforderungen erfüllt. Es exportiert den gewünschten Container und sichert ihn dann mit rclone (tolles Projekt!!!) auf einen Cloud-Speicher/NAS unserer Wahl.

Dazu muss man sich erst noch rclone installieren und einrichten. Ein Anleitung für die Installation und Pakete für alle Plattformen gibt auf der Projektwebseite. rclone unterstützt so ziemlich jeden Cloud-Speicher und Protokoll (ssh, webdav, …). Wir haben uns für ein Backup auf Google Drive entschieden, da wir da durch GSuite for Education unbegrenzten Speicherplatz haben 🙂

Ist rclone eingerichtet lädt man sich das Backup-Skript herunter, macht es ausführbar:

$ wget https://raw.githubusercontent.com/cloudrkt/lxdbackup/master/lxdbackup
$ chmod +x lxdbackup

Damit der Upload des Backups auch funktioniert muss man noch einige Parameter festlegen (v.a. RCLONETARGET).

$ nano lxdbackup
# Settings

# The target bucket or container in your Rclone cloudstorage 
RCLONETARGETDIR="lxdbackup" 
# Optional Rclone settings.
RCLONEOPTIONS=""
# Rclone target cloud used in your rlcone.conf
RCLONETARGET="my-remote"
# Directory were local images are stored before upload
WORKDIR="/tmp/lxdbackup"

Nun kann man das Skript mit folgendem Aufruf testen:

$ lxdbackup my-container

Wenn alles gut geht, sollten man sein Backup nach einiger Zeit (der Export eines Containers kann etwas dauern, je nach Größe) auf dem Speichern finden, den man in rclone konfiguriert hat.

Fazit

Bisher haben wir einfach den LXD-Host im Gesamten gesichert. Das reicht in der Regel aus, aber man verliert die Möglichkeit einzelne Container getrennt voneinander wiederherstellen zu können. Mit dem lxdbackup-Skript und der Kombination mit rclone haben wir nun viel mehr Möglichkeiten und können unsere Container sehr flexibel sichern. Mit Hilfe von Cronjobs haben wir das Backup automatisiert. Manche Container werden z.B. 2x am Tag gesichert, andere nur 1x in der Woche (und das nur, wenn keine Schulferien sind) – je nach Anwendungsfall.

2 Kommentare

Der Beitrag Backup für LXD-Container erschien zuerst auf .:zefanjas:..

11. Mai 2018

Wie ich in meinem Blog irgendwann mal erwähnt habe, studiere ich im Moment Bioinformatik an der THM und JLU in Gießen. Da ich nebenbei auch  noch einen Job in einer der Arbeitsgruppen habe, bekomme ich einen Recht guten Eindruck davon, was aktuell Forschungsgebiet in der Bioinformatik ist und vor allem welche Software und Hardware dort eingesetzt wird. Einen Überblick über beispielsweise die Hardware des Bioinformatikfachbereichs an der THM liefert der z.B. folgende Link:

mni.thm.de: Bioinformatik erweitert Infrastruktur

Ubuntu ist im Bioinformatik-Umfeld sehr weit verbreitet. Ich würde sogar sagen, dass knapp 80% aller Bioinformatiker Ubuntu (Mit verschiedenen Desktops) einsetzen. Der Rest verteilt sich auf Debian und Arch-Linux. Es gibt auch Windows-Nutzer, aber diese sind deutlich in der Unterzahl. Ein sehr nettes Feature seitens Ubuntu und Debian ist die Tatsache, dass nahezu alle wichtigen Bioinformatik-Tools direkt in den Paketquellen vorhanden sind. Das ist auch einer der Hauptgründe für die weite Verbreitung.

Die Bioinformatik ist grundsätzlich sehr Unix-affin. Nahezu alle Server, die irgendwas mit Bioinformatik und verwandten Gebieten zu tun haben, laufen unter einem Unix-System (Heutzutage hauptsächlich eine Linux-Distribution). Und wer tagtäglich auf einem Unix-System unterwegs ist, arbeitet auch privat eher mit so einem System.

Das Projekt, welches die Bioinformatik als eigenständiges Fachgebiet der Informatik etabliert hat, war das „Humangenomeprojekt„. Dieses Projekt lief von 1990 bis ca. 2003 und endete mit der fast vollständigen Sequenzierung (Dem Ablesen des DNA-Strangs) und der Assemblierung (Dem Zusammenpuzzlen von DNA-Schnipseln) eines menschlichen Genoms. Die Gesamtkosten des Projekts lagen dabei bei ca. 3 Mrd. US-Dollar. Ohne den massiven Einsatz von leistungsstarken Computern und den passenden Algorithmen, hätte diese Aufgabe wahrscheinlich noch Jahrzehnte gedauert. Ich gehe jetzt hier nicht zu sehr ins Detail, eine gute Übersicht bietet z.B. der englische Wikipedia-Artikel „Sequence Assembly

Quelle: http://www.genomicglossaries.com/presentation/SLAgenomics.asp
Quelle: http://www.genomicglossaries.com/presentation/SLAgenomics.asp

Anfang bis Ende der 90er Jahre des letzten Jahrtausends war „leistungsstarker Computer“ ein Synonym für Unix-basierte Server und Workstations mit RISC-CPUs (z.B. von SUN, Silicon Graphics, IBM, HP, usw.). Wer große Datenmengen verarbeiten wollte, musste ein Unix-System benutzen. Das lag vor allem an drei Dingen:

  1. Unix war schon damals technisch ausgereift und stabil. Windows hingegen war mit der ersten NT-Version 3.0 und später mit NT 4.0 gerade erst den „Kinderschuhen“ entwachsen, aber noch weit davon entfernt Unix ein ernsthafter Konkurrent zu sein.
  2. x86-basierte Rechner waren damals einfach noch nicht leistungsfähig genug, um die gewaltigen Datenmengen, welche in der Bioinformatik anfallen, verarbeiten zu können und auch die Hardware war noch nicht stabil genug um tage -oder wochenlang am Stück zu laufen. Während dauerlaufende Multi-Core-Server mit mehr als 4 CPUs in der Unix-Welt eine alltägliche Sache waren, dauerte es in der x86-Welt bis in die frühen 2000er Jahre bis es zuverlässige Server in dieser Größenordnung gab.
  3. Alle Kommandozeilentools unter Unix machen Gebrauch von dem Umleiten von Datenströmen und nahezu jedes bioinformatische Programme macht ebenfalls davon Gebrauch. Oft reicht es mehrere Programme mittels der Pipe miteinander zu verbinden um die gewünschten Daten zu erhalten.

Der zweite Punkt änderte sich zwar im Laufe der 2000er Jahre, aber Windows ist im Bereich des „High Performance Computings“ (HPC) nie wirklich angekommen (Seit November 2017 besteht die Top 500 der Supercomputer nur noch aus Linux-basierten Systemen). Das lag und liegt vor allem daran, dass ein Bioinformatiker im Grunde „nur“ gigantisch große Textdateien analysiert und Unix durch seine vielen kleinen Tools dafür prädestiniert ist. Für einen Bioinformatiker ist es vollkommen normal eine 20 GB große Datei mit „grep“, „awk“ und Co zu behandeln. Dazu kommt der Fakt, dass es bis heute relativ umständlich ist Windows über Fernwartungstools zu bedienen. Erst letztes Jahr hat sich Microsoft dazu durchgerungen Windows mit einem SSH-Server -und Client auszuliefern. Selbst Microsoft hat in der Zwischenzeit bemerkt, dass eine komfortable und mächtige Shell unabdingbar ist.

Um ein Gefühl für die Datenmengen, die einem als Bioinformatiker tagtäglich einfach mal so begegnen können, zu bekommen, hier ein Beispiel aus meinem Studium:

Ich habe meine Bachelorarbeit über das Themengebiet „ChIP-Seq“ geschrieben. Mit Hilfe von ChIP-Seq kann man Bindestellen von Proteinen mit der DNA feststellen. Diese sind wichtig um festzustellen wo z.B. ein bestimmtes Gen auf der DNA liegt bzw. wo dessen Beginn ist. Um zuverlässig diese Bindestellen zu finden, muss man mehrere Experimente im „Wet-Lab“ durchführen, welche am Ende sehr große Datenmengen erzeugen. In meinem Ordner auf dem NAS meiner Arbeitsgruppe liegen aktuell 164 GB an Daten. Es sind sogar noch ein paar GB mehr, da das NAS ZFS benutzt und die Dateikompression aktiviert ist und sich Textdateien gut komprimieren lassen. Mein Kommilitone schreibt gerade eine Pipeline zur Verarbeitung von Gendaten. Er meinte er knackt noch den Rekord der Arbeitsgruppe, der bei ca. 8 TB liegt.

Die Rohdaten aus den ChIP-Seq-Experimenten müssen erst mit Hilfe eines sogenannten „Aligners“ auf das menschliche Genom gemappt werden. Das heißt grob, man schaut wo jeder einzelne der sogenannten „Reads“ (Ein kleiner DNA-Schnipsel mit ca. 50-1000 Buchstaben Länge, je nach eingesetzer Sequenzierungstechnologie) auf dem Genom liegt (Welches bei Menschen ca. drei Mrd. Buchstaben lang ist). Da die Rohdaten aus ungefähr 50 Mio. Reads pro Datei bestehen, dauert das ein wenig (In der Regel einen Kaffee). Moderne Aligner wie z.B. Bowtie2 unterstützen deshalb Multithreading um das Mapping zu beschleunigen.

Die meisten Menschen denken, dass der Mensch als „Krone der Schöpfung“ das größte Genom und auch die meisten Gene (ca. 20000) besitzt. Das stimmt aber nicht. So hat die Fichte eine Genomgröße von ca. 20 Mrd. Basenpaaren und kodiert ca. 56000 Gene. Der Lungenfisch hat sogar eine Genomgröße von 130 Mrd. Basenpaaren. Säugetiere scheinen allgemein weniger Gene als andere Tierarten zu haben, da sie wegen ihrer gleichbleibenden Körpertemperatur weniger „Buchhaltung“ betreiben müssen.

Damit das Mappen schnell durchläuft, habe ich das Programm auf einem Server mit 64 Kernen (128 Threads) und 2 TB RAM laufen lassen. Der Aligner lief dabei nicht auf allen Kernen, da dieser ab 16 Threads nicht linear skaliert (Das liegt weniger am Programm, sondern daran, dass sich die 64 Kerne auf 4 CPUs verteilen und die Kommunikation zwischen diesen einiges an Leistung frisst). Aus diesem Grund habe ich maximal zwei Aligner mit 16 Threads parallel laufen lassen (Ich benutze nur 32 Kerne, da auch andere Benutzer den Server benutzen wollen).

Für Bioinformatiker ist das Buzzword „Big Data“ also nicht nur eine leere Worthülse, sondern Alltag. Im Grunde können wir nur darüber lächeln, wenn ein Wirtschaftsinformatiker bei einer Datenbank mit knapp 10 GB Dateigröße über die Datenmenge stöhnt. Natürlich kann man die Art der Daten nicht miteinander vergleichen (Bioinformatische Datenbanken haben in der Regel nur wenige Relationen), aber das obige Beispiel ist gerade mal die Spitze des Eisberges. Bei größeren Analysen oder dem relativ neuen Feld der Metagenomik (Salopp erklärt: Man nimmt einen Löffel mit Dreck und schaut was darin an Leben enthalten ist.) können leicht mehrere Petabytes (1 PB = 1000 TB) an Daten zusammenkommen, die einen Rechencluster mit mehreren hundert CPUs wochenlang mit der Analyse beschäftigen können.

Neben konventionellen CPUs kommen auch immer mehr GPUs zum Einsatz. Diese eignen sich besonders zum Training von großen neuronalen Netzwerken (Deep Learning) welche z.B. darauf trainiert werden Unregelmäßigkeiten in Langzeit-EKGs festzustellen oder Tumorzellen in Zellgewebeschnitten zu erkennen und zu klassifizieren. Gerade Letzteres basiert heute noch sehr auf der subjektiven Meinung eines Onkologen und nicht auf objektiven Maßstäben (Zeigt man einen solchen Zellschnitt drei verschiedenen Onkologen, erhält man in der Regel drei verschiedene Diagnosen). Software auf Basis neuronaler Netzwerke soll dabei den Arzt nicht ersetzen, sondern ihn bei seiner Arbeit unterstützen und vor allem entlasten. Das letzte Wort soll dabei immer noch ein Arzt haben. Das Training von großen Netzen kann mehrere Tage bis Wochen in Anspruch nehmen, weshalb momentan immer mehr dezidierte Hardware zum Beschleunigen dieses Trainings auf den Markt kommt. Die THM hat z.B. Anfang des Jahres eine Nvidia DGX-1 mit 8 Tesla V100 angeschafft. Diese läuft unter einer angepassten Version von Ubuntu 16.04 (Um den Bogen zu Linux zu spannen).

Die Hauptarbeit eines Bioinformatikers besteht in der Datenanalyse:

Biologen liefern die Daten und die Bioinformatiker der Arbeitsgruppe analysieren diese unter den gewünschten Gesichtspunkten. Dazu gehört der Einsatz schon vorhandener Tools wie z.B. Bowtie(2), SAMtools, Velvet, BioPython, R, usw. Die Liste lässt sich schier endlos weiterführen.

Falls kein Tool vorhanden ist, muss oft ein neues implementiert werden um z.B. einen speziellen Sachverhalt zu untersuchen. Die allermeisten Tools werden dabei in C, Java, Python oder R geschrieben, wobei Python und R am häufigsten benutzt werden (Ich schreibe meine Programme meistens in Python). Programme, bei denen es auch auf Geschwindigkeit ankommt, werden in C oder C++ entwickelt, wobei sehr häufig die Sprachen bunt gemischt werden (z.B. der kritische Teil in C, der Rest in Python oder R). Die Entwicklung findet dabei, aus den oben genannten Gründen, primär unter Linux statt. Der Trend geht dabei eindeutig zu webbasierten Anwendungen, um den Anwendern die Installation und Konfiguration abzunehmen und vor allem eine leistungsfähige Hardware zur Verfügung zu stellen.

Ein wichtiges, wenn nicht das wichtigste Teilgebiet der Bioinformatik ist die Entwicklung neuer Algorithmen um bestimmte Aufgabenstellungen effizienter und schneller als vorher zu erledigen. So war es z.B. erst durch die Entwicklung von bestimmten Algorithmen möglich das Humangenomprojekt schneller als geplant abzuschließen. Ich will jetzt hier nicht allzu sehr ins Detail gehen, sondern nenne nur eine kleine Liste wichtiger Algorithmen und Datenstrukturen:

Die Liste ist bei Weitem nicht vollständig, deckt aber die Dinge ab, die mir während meines Studiums nahezu tagtäglich im Rahmen von Vorlesungen, Hausübungen und Projekten begegnet sind. Gerade die BWT begegnet einem Linux-Benutzer in Form von bzip2 nahezu alltäglich.

Die immer größeren Datenmengen, welche durch die Einführung der „Next Generation Sequencing„-Technologien produziert werden, können nicht alleine durch die Anschaffung besserer Computer und Server schneller bearbeitet werden. Wie stark die Entwicklung der „NGS“-Technik die Kosten reduziert und damit auch die Arbeit der Biologen verändert hat, kann man z.B. an der folgenden Grafik sehen:

Quelle: https://www.genome.gov/27565109/the-cost-of-sequencing-a-human-genome/

Die Y-Achse der Grafik ist logarithmisch aufgetragen, d.h. jeder Strich ist um den Faktor 10 größer. Wie oben schon erwähnt kostete das Human Genom Projekt ca. 3 Mrd. US-Dollar. Rechnet man nur die reinen Kosten für die Sequenzierung, waren es „nur“ 300 Mio. US-Dollar. Das war ungefähr im Jahr 2002. Heute kostet die vollständige Sequenzierung eines menschlichen Genoms in etwa 1500 US-Dollar. Die Assemblierung des Genoms lässt sich heute fast auf einem Desktop-PC in akzeptabler Zeit bewerkstelligen. Ein kleiner Server mit 16 Kernen und 32 GB RAM reicht je nach Programm vollkommen aus und schafft die Assemblierung dann in weniger als einem Tag. Die Sequenzierung von kleinen Bakteriengenomen kostet nur wenig mehr als 100$ und die Assemblierung ist in wenigen Minuten auf einem heutigen Standardlaptop erledigt. Mit der Einführung der Nanopore-Technologie und Sequenziergeräten in Größe eines USB-Sticks, welche gerade mal 1000$ kosten, wird die Datenmenge noch weiter zunehmen.

Ich könnte den Artikel an dieser Stelle noch weiter ausbauen, aber das Gebiet der Bioinformatik ist so groß (z.B. habe ich das Gebiet des „Molecular Modellings“ oder der Proteinstrukturvorhersage und andere Themen komplett ausgeklammert), dass ich irgendwo aufhören musste um nicht den Rahmen zu sprengen. Ich hoffe aber das der Artikel einen kleinen Einblick in das Thema gegeben hat und dass Linux gerade in der Forschung unabdingbar geworden ist.

10. Mai 2018

Mozilla hat Firefox 60 veröffentlicht. Auch Firefox 60 bringt wieder viele Neuerungen. Dieser Artikel fast die wichtigsten Neuerungen zusammen.

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

Mehr Sicherheit für Firefox-Nutzer

Geschlossene Sicherheitslücken

Auch in Firefox 60 hat Mozilla wieder zahlreiche Sicherheitslücken geschlossen, worunter auch einige sind, welche von Mozilla als besonders kritisch eingestuft werden. Alleine aus Gründen der Sicherheit ist ein Update auf Firefox 60 daher für alle Nutzer dringend empfohlen.

Unterstützung für Web Authentication API

Firefox ist der erste Browser am Markt, der den neuen Web Authentication API-Standard, oder kurz: WebAuthn, zur sicheren Authentifizierung auf Webseiten ohne Eingabe eines Passworts, zum Beispiel über YubiKey, ermöglicht.

Unterstützung von Same-Site-Cookies

Firefox 60 unterstützt Same-Site-Cookies als Maßnahme gegen sogenanntes Cross-Origin Request Forgery (CSRF). Details hierzu liefert Mozillas Security-Blog.

Keine Unterstützung alter Symantec-Zertifikate mehr

Firefox akzeptiert keine Symantec-Zertifikate mehr, welche vor dem 01.06.2016 ausgestellt worden sind. Ab Firefox 63 wird Firefox überhaupt keine Symantec-Zertifikate mehr akzeptieren. Dies betrifft ebenfalls die zu Symantec gehörenden CAs Thawte, VeriSign, Equifax, GeoTrust sowie RapidSSL. Symantec hatte aufgrund verschiedener Vorfälle das Vertrauen der Browserhersteller verloren.

Verbesserungen für die Startseite / den neuen Tab

Die Seite, die standardmäßig als Startseite eingestellt ist und auch beim Öffnen eines neuen Tabs erscheint, hat diverse Verbesserungen erhalten. So wurde das Layout angepasst, um auf großen Bildschirmen mehr Inhalt anzeigen zu können.

Die verschiedenen Bereiche konnten bereits entweder eingeklappt oder komplett deaktiviert werden. Ab sofort ist es auch möglich, die Reihenfolge beliebig anzupassen.

Firefox 60

Der Bereich „Überblick“ beinhaltet eine Auswahl von Webseiten, welche kürzlich besucht oder als Lesezeichen gespeichert worden sind. Hier werden standardmäßig zusätzlich nun auch Webseiten angezeigt, die der Nutzer über die entsprechende Schaltfläche in Firefox bei Pocket abgelegt hat, einem Online-Dienst von Mozilla. Stichwort Pocket, für einen Teil der Nutzer in den USA werden im Pocket-Abschnitt jetzt auch gesponsorte Stories angezeigt.

Das Suchfeld der Startseite / des neuen Tabs zeigt jetzt auch das Logo der eingestellten Standard-Suchmaschine an, womit für den Nutzer klarer wird, dass darüber eine Suche bei der Suchmaschine seiner Wahl erfolgt. Auch der Text in der Adressleiste wurde angepasst und beinhaltet nun den Namen der eingestellten Suchmaschine.

Privatsphäre-Einstellungen überarbeitet

Die Einstellungen im Bereich „Datenschutz & Sicherheit“ wurden überarbeitet. So erhält der Nutzer nun direkten Zugriff auf die Einstellungen zur Akzeptanz von Cookies, ohne vorher erst einstellen zu müssen, dass Firefox eine Chronik nach benutzerdefinierten Einstellungen anlegen soll. Das macht diese Einstellungen leichter zugänglich und gibt dem Nutzer letztlich dadurch mehr Kontrolle.

Der neue Abschnitt „Cookies und Websitedaten“ fasst die eben erwähnten Cookie-Einstellungen sowie die vorherigen Abschnitte „Zwischengespeicherte Webinhalte“ und „Websitedaten“ zusammen und sorgt damit für weniger Verwirrung durch die vielen ähnlichen, aber doch unterschiedlichen Einstellungen. Gerade die Trennung von Technologien wie Cookies und Local Storage waren für viele Nutzer unklar.

Was in den neuen Einstellungen nicht mehr geht, ist ein Löschen einzelner Cookies einer Domain. Aber diese detaillierte Kontrolle steht nach wie vor über die Entwicklerwerkzeuge von Firefox zur Verfügung.

Firefox 60

Position von Suchmaschinen-Vorschlägen plus Einstellung

Bei der Eingabe eines Begriffes in die Adressleiste zeigt Firefox nicht nur bereits besuchte Webseiten und Lesezeichen an, auch kann Firefox direkt Vorschläge der eingestellten Standard-Suchmaschine anzeigen, sofern diese das unterstützt. Bislang erschienen diese Suchmaschinen-Vorschläge immer am Ende. Für Profile, die mit Firefox 56 oder früher erstellt wurden, ändert sich daran auch nichts. Für Profile, die mit Firefox 57 oder neuer erstellt wurden, ändert sich die Reihenfolge und Suchmaschinen-Vorschläge werden als erstes angezeigt.

So oder so, in den Einstellungen von Firefox gibt es eine neue Option, so dass jeder das Verhalten konfigurieren kann, welches ihm am meisten zusagt.

Firefox 60

Neue CSS-Engine stellt Firefox-Oberfläche dar

Seit Firefox 57 arbeitet in Firefox eine neue, in der Programmiersprache Rust geschriebene, CSS-Engine.

Wir haben einen regelrecht bahnbrechenden Ansatz entwickelt, um Webseiten zu gestalten – eine superschnelle CSS-Engine, die in Rust geschrieben ist (eine Systemprogrammiersprache, die von Mozilla unterstützt wird). Diese neue, in Firefox integrierte CSS-Engine arbeitet besonders schnell und unter Zuhilfenahme mehrerer Prozessorkerne zugleich. Das kann derzeit kein anderer Browser. – Mozilla

Die auf den Namen Stylo oder auch Quantum CSS hörende CSS-Engine wurde bislang nur für Webseiten eingesetzt. Ab Firefox 60 wird die neue CSS-Engine auch für die Darstellung der Firefox-Oberfläche selbst benutzt.

Tabs in Titelleiste auch für Linux

Für Nutzer von Windows und Apple macOS ist dies nicht neu: das Zeichnen von Tabs direkt in die Titelleiste anstelle der Anzeige des Webseiten-Titels in der Titelleiste. Mit Firefox 60 erhalten auch Linux-Nutzer diese Möglichkeit. Zu finden ist die Einstellung auf der Seite zur Anpassung der Firefox-Oberfläche, welche über das Firefox-Menü zu erreichen ist.

Verbesserungen für Entwickler von Firefox-Erweiterungen

Natürlich gab es auch für Entwickler von WebExtensions wieder einige neue APIs und Verbesserungen bestehender APIs. So werden nun viele neue Eigenschaften für Themes unterstützt, womit die Gestaltung von Firefox noch individueller erfolgen kann. Aber auch in Zusammenhang mit Tabs gibt es neue Möglichkeiten, Verbeserungen gab es bei der Proxy-API, Erweiterungen haben nun Zugriff auf den DNS-Service von Firefox, um Hostnamen aufzulösen. Sidebars können nun auch ihre Tastenkombination, falls vorhanden, in Firefox anzeigen. Mehrere Startseiten können WebExtensions nicht mehr setzen, sondern nur noch eine. WebExtensions können dem Nutzer jetzt die Möglichkeit anbieten, eine zuvor definierte (eigene) Tastenkombination zu ändern. Zahlreiche weitere Erweiterungen der WebExtension-Plattform werden hier beschrieben.

Verbesserungen der Webplattform

Natürlich gibt es auch bezüglich Webstandards wie immer auch in Firefox 60 Neuerungen. Hervorzuheben ist hier die Unterstützung von JavaScript-Modulen, von Array.prototype.values() und der CSS-Eigenschaft text-stroke. Die CSS-Eigenschaft transform wird nur noch ohne Vendor-Präfix -moz- unterstützt. Das Drücken der Enter-Taste in contenteditable-Elementen fügt nun ein „div“ anstelle eines „br“ ein. Weitere Informationen zu Änderungen für Webentwickler in Firefox 60 finden sich in den MDN web docs.

Neuerungen für Webentwickler

Das Regeln-Panel im Inspektor-Werkzeug kann nun auch CSS-Variablen vorschlagen. Der Tastaturbefehl zum Verändern von Zahlenwerten in 0,1-Schritten wurde auf Windows und Linux von Alt + Auf/Ab auf Strg  + Auf/Ab geändert, um ein Konflikt auf Betriebssystem-Ebene zu vermeiden.

Optionale Features

Einstellungen zum Abschalten von Sensor-APIs

Über Sensor-APIs können Webseiten Informationen über die Umgebung erhalten, in welcher ein Gerät genutzt wird. Mit den neuen Einstellungen device.sensors.proximity.enabled, device.sensors.ambientLight.enabled, device.sensors.orientation.enabled sowie device.sensors.motion.enabled können diese Sensor-APIs unabhängig voneinander durch Setzen per Doppelklick auf false deaktiviert werden. Die beiden erstgenannten Schalter wurden in Firefox 60 sogar bereits standardmäßig deaktiviert.

Neue Einstellungen für deutliche Warnung bei HTTP anstelle von HTTPS

Die verschlüsselte Übertragung von Daten wird immer mehr zu einem Muss im Web. In Firefox 60 stellt Mozilla zwei neue Einstellungen bereit, um relativ deutlich zu warnen, wenn eine Webseite über HTTP und nicht über HTTPS übertragen wird.

Wird security.insecure_connection_text.enabled via Doppelklick auf true gestellt, erscheint bei Webseiten, die nur über HTTP übertragen werden, der Schriftzug „Nicht sicher“ in der Adressleiste. Dies gilt sowohl für private als auch für nicht private Fenster. Außerdem kommt mit security.insecure_connection_text.pbmode.enabled noch eine zweite Einstellung dazu. Wird diese auf true gesetzt, dann erscheint dieser Schriftzug nur in privaten Fenstern.

Firefox 60 Unsichere Verbindung

Neue Einstellung zum Deaktivieren des FTP-Protokolls

In die gleiche Richtung zielt eine weitere neue Einstellung ab: auch über das FTP-Protokoll können Daten unverschlüsselt übertragen werden. Firefox 60 besitzt eine neue Einstellung, um das FTP-Protokoll vollständig in Firefox zu deaktivieren. Dafür muss network.ftp.enabled in about:config per Doppelklick auf false gesetzt werden.

Automatisches HTTPS-Upgrade für HTTP-Ressourcen

Und noch einmal geht es um das Thema HTTP und HTTPS: eine neue Einstellung erlaubt ein automatisches Upgrade von HTTP-Ressourcen auf HTTPS-Webseiten, sofern diese auch über HTTP verfügbar sind. Die Aktivierung erfolgt über den Schalter security.mixed_content.upgrade_display_content, welcher über about:config auf true geschaltet werden muss. Doch Achtung, dies kann auch dazu führen, dass ein Element auf einer Webseite überhaupt nicht mehr angezeigt wird. Die Funktionsweise wird ausführlich in diesem Artikel behandelt.

DNS over HTTPS

Firefox 60 bietet eine Unterstützung für DNS over HTTPS. Wie DNS over HTTPS konfiguriert werden kann, wird hier beschrieben. Die noch experimentelle Technologie soll die Sicherheit, Privatsphäre und Performance verbessern.

Neue Option zum Deaktivieren von Firefox Sync

Firefox besitzt eine Möglichkeit zur Synchronisation, womit es möglich ist, auf Chronik, Lesezeichen, Passwörter und mehr von verschiedenen Geräten aus zuzugreifen. Firefox 60 besitzt eine neue Option, um die den Zugang zu Sync komplett zu verbergen. Die entsprechende Option in about:config heißt identity.fxaccounts.enabled und muss dazu auf false gesetzt werden.

Eingabe in Adressleiste in einem neuen Tab öffnen

Firefox 60 besitzt eine neue Einstellung, um Eingaben in die Adressleiste in einem neuen Tab zu öffnen. Dazu muss über about:config der Schalter browser.urlbar.openintab per Doppelklick auf true geschaltet werden. Dies ergänzt ähnliche Einstellungen für das Suchfeld sowie für das Öffnen von Lesezeichen.

Neue Browserkonsole aktivieren

Nachdem die Webkonsole bereits in Firefox 57 ein komplett neues Frontend erhalten hat, welches nicht länger auf Mozillas proprietärem XUL-Standard basiert, sondern mit Webtechnologie umgesetzt worden ist, kann das neue Konsole-Frontend nun auch für die Browserkonsole aktiviert werden. Dazu muss über about:config der Schalter devtools.browserconsole.new-frontend-enabled auf true gesetzt werden.

Firefox 60 ist neue Basis für Firefox ESR

Firefox ESR ist die Firefox-Version mit Langzeitunterstützung und damit besser für Unternehmen und Organisationen geeignet ist, welche nicht alle sechs bis acht Wochen Neuerungen ausliefern können oder wollen. Firefox 60 stellt die neue Basis für Firefox ESR dar und löst damit Firefox ESR 52 ab. Auch wenn die Mainstream- und die ESR-Version von Firefox 60 im Großen und Ganzen gleich sind, gibt es doch ein paar Unterschiede zwischen beiden Versionen, welche in einem gesonderten Artikel beschrieben werden.

Firefox im Unternehmen konfigurieren

Gerade im Unternehmens-Umfeld kann es erwünscht sein, Firefox so zu konfigurieren, dass Bereiche wie die erweitere Konfiguration unter about:config oder der Add-on Manager für die Nutzer nicht zugänglich sind. Es könnte erwünscht sein, dass Features wie der integrierte PDF-Betrachter deaktiviert werden, eine besonder Startseite erscheint oder bestimmte Lesezeichen bereits standardmäßig vorhanden sind.

Diese und andere Dinge sind ab Firefox 60 möglich. Unter Windows kann dies über sogenannte Gruppenrichtlinienobjekte, kurz: GPO, erfolgen. Dabei handelt es sich um ein Feature von Windows, welches von Firefox ab Version 60 unterstützt wird. Die andere Möglichkeit ist über eine JSON-Konfiguration, welche im Distributions-Verzeichnis von Firefox abgelegt wird. Der Vorteil dieser Variante: es funktioniert nicht nur unter Windows, sondern ebenfalls unter Apple macOS sowie Linux.

Tipp: mit dem Enterprise Policy Generator wird in wenigen Tagen eine neue Erweiterung für Firefox veröffentlicht werden, welche die Erstellung einer solchen Konfigurations-Datei durch einfaches Zusammenklicken der gewünschten Optionen erlaubt.

Firefox 60

Sonstige Neuerungen von Firefox 60

Mozilla hat die Audio-Performance von WebRTC für Linux-Nutzer verbessert. Ebenfalls WebRTC betrifft die folgende Änderung: Firefox deaktiviert ab sofort die Kamera und das Kamera-Lämpchen, wenn eine Video-Aufnahme gestoppt wird, und aktiviert beides wieder, wenn die Aufnahme fortgesetzt wird. So herrscht keine Unklarheit mehr darüber, ob die Kamera gerade etwas aufnimmt oder nicht.

Den bisher in C++ geschriebenen Parser, der all die Firefox-Einstellungen liest und verarbeitet, hat Mozilla in Rust neu geschrieben. Der neue Parser ist fast doppelt so schnell, sicherer, korrekter und besser wartbar als der alte Parser.

Kritische Bugfixes konnten seit Firefox 10 über sogenannte Hotfix-Erweiterungen ausgeliefert werden. Zuletzt wurde diese Infrastruktur nicht mehr genutzt, nachdem Mozilla immer mehr auf die sogenannten System-Erweiterungen setzt, welche diesen Anwendungsfall ebenfalls bedienen können. Mit Firefox 60 wurde die Unterstützung für Hotfix-Erweiterungen aus Firefox entfernt.

Das Standard-Favicon, welches für Webseiten ohne eigenes Favicon angezeigt wird, wurde geändert. Auf Windows wurde das Tastatur-Kommando zum Öffnen der Leseansicht einer Webseite auf F9 geändert.

Die about:config-Einstellung view_source.tab, um den Quelltext einer Webseite in einem eigenen Fenster statt in einem Tab anzuzeigen, wurde entfernt. Das Problem, dass unter Windows verschiedene Firefox-Prozesse bei den Lautstärke-Reglern erscheinen, konnte zwar nicht vollständig aus der Welt, aber deutlich verbessert werden.

Die Performance des Panels von WebExtensions, welche in dem sogenannten Überhangsmenü platziert werden, wurde spürbar verbessert. Verbessert wurde auch die Performance der Blockierlisten.

Der Beitrag Mozilla veröffentlicht Firefox 60 – die Neuerungen erschien zuerst auf soeren-hentzschel.at.

Linux Mint Startmenü Icon ändern Beitragsbild

Schon vor einiger Zeit bin ich vom Gnome- zum Cinnamon Desktop gewechselt und bin mit der Entscheidung sehr zufrieden. Ich empfinde Cinnamon als optisch ansprechend, er ist umfangreich konfigurierbar und setzt nach wie vor auf das klassische Prinzip der Desktopbedienung. Längere Zeit nutzte ich Cinnamon mit Antergos als Distribution. Mittlerweile ist mir Stabilität und ein jederzeit einsatzbereites System wichtiger als aktuelle Software, weshalb ich derzeit bei Mint gelandet bin. Auch weil ich ein bisschen Heimweh nach der großen Ubuntu-Welt hatte.

Allerdings konnte ich mich nie mit Mints grünem Desktoptheme anfreunden. Und wie so oft sind es Kleinigkeiten, die mich wahnsinnig machen können und mit deren Änderung ich mich Stundenlang beschäftigen kann. Glücklicherweise lässt sich das “Problem” in diesem Fall einfach beheben. Die Farbe der Icons und Bedienelemente lässt sich problemlos über die Desktopthemen anpassen. Das Startmenü-Icon bleibt aber giftgrün, was zu einem unschönen und uneinheitlichen Erscheinungsbild des Desktops führt.

Linux Mint Starticon Farben in der Standardeinstellung

Aber auch das lässt sich ändern. Mit einem Rechtsklick auf das Icon des Startmenüs kann man den Dialog Einrichten öffnen. Hier lässt sich das Icon gegen eine beliebige Grafik austauschen. Man muss also nur die Standardgrafik (oder eine beliebige andere Grafik) nehmen, mit GIMP die Farbe ändern und anschließend den Pfad zur neu erstellten Datei angeben.

Damit hat der Desktop endlich wieder ein farblich einheitliches Erscheinungsbild.

Linux Mint Startmenü Icons Farben

 


 

Startmenü-Icon des Cinnamon Desktops ändern ist ein Beitrag von techgrube.de.

Ich habe seit Anfang des Jahres (Spätzünder 😁) einen RaspberryPi 3 dessen Backup ich nach der Einrichtung angefertigt habe indem ich die SD-Karte in den Rechner gesteckt und geklont habe. Natürlich möchte ich nicht immer den RaspberryPi herunterfahren um ein Backup mit dd1 anzufertigen weshalb ich heute mal nach einer Lösung gesucht habe um das Remote zu erledigen. Wie sich herausstellte ist das ganze sehr einfach.

Auf dem RPi geben wir folgenden Befehl für unseren Benutzer zur Ausführung mit root-Rechten per sudo frei:

user ALL=(ALL) NOPASSWD: /bin/tar -cpO --exclude=/proc --exclude=/tmp --exclude=/mnt --exclude=/dev --exclude=/sys /

Statt user muss natürlich der Benutzer eingetragen werden mit dem man sich per SSH2 auf dem Raspberry anmeldet und /dev/mmcblk0p2 muss gegebenfalls durch eure Bezeichnung der SD-Karte angepasst werden.

Danach kann das Backup mit folgendem Befehl ausgeführt werden:

ssh user@rpi "sudo /bin/tar -cpO --exclude=/proc --exclude=/tmp --exclude=/mnt --exclude=/dev --exclude=/sys / | xz" | > ~/pi/`date --rfc-3339=date`-pi3.tar.xz

user ist wieder durch euren Benutzernamen auf dem Pi und rpi durch den hostnamen oder die IP3-Adresse eures RPis zu ersetzen. Das ganze dauert dann eine ganze Weile, aber man muss ja nicht davor sitzen und zuschauen. 😄

⚠️ Warnung ⚠️
Das ganze ist erst mal mit etwas Vorsicht zu genießen, da ich jetzt nicht unnötig das Backup eingespielt habe um die SD-Karte nicht zu verschleißen aber die Dateigröße des erstellten Archivs wirkt auf mich plausibel und auch ein erster Blick ins Archiv sieht gut aus.

ls -lh ~/pi/      
insgesamt 2,2G
-rw-r----- 1 martin martin 1,6G Feb 20 19:29 2018-02-20-pi3.img.xz
-rw-r----- 1 martin martin 602M Mai 10 15:56 2018-05-10-pi3.tar.xz

Somit habe ich nun das Image, dass ich am Anfang mit dd erstellt habe mit dem ich ein funktionstüchtiges System auf eine neue SD-Karte im Falle eines Austauschs schreiben kann und ein aktuelles Backup der Daten.


  1. Die Herkunft des Programmnamens dd ist nicht gänzlich geklärt und es finden sich zahlreiche Möglichkeiten in diversen Quellen.
    [Wikipedia][50]  ↩︎
  2. Secure Shell ↩︎

  3. Internet Protocol ↩︎

Ich habe seit Anfang des Jahres (Spätzünder 😁) einen RaspberryPi 3 dessen Backup ich nach der Einrichtung angefertigt habe indem ich die SD-Karte in den Rechner gesteckt und geklont habe. Natürlich möchte ich nicht immer den RaspberryPi herunterfahren um ein Backup mit dd1 anzufertigen weshalb ich heute mal nach einer Lösung gesucht habe um das Remote zu erledigen. Wie sich herausstellte ist das ganze sehr einfach.

Auf dem RPi geben wir folgenden Befehl für unseren Benutzer zur Ausführung mit root-Rechten per sudo frei:

user ALL=(ALL) NOPASSWD: /bin/tar -cpO --exclude=/proc --exclude=/tmp --exclude=/mnt --exclude=/dev --exclude=/sys /

Statt user muss natürlich der Benutzer eingetragen werden mit dem man sich per SSH2 auf dem Raspberry anmeldet und /dev/mmcblk0p2 muss gegebenfalls durch eure Bezeichnung der SD-Karte angepasst werden.

Danach kann das Backup mit folgendem Befehl ausgeführt werden:

ssh user@rpi "sudo /bin/tar -cpO --exclude=/proc --exclude=/tmp --exclude=/mnt --exclude=/dev --exclude=/sys / | xz" | > ~/pi/`date --rfc-3339=date`-pi3.tar.xz

user ist wieder durch euren Benutzernamen auf dem Pi und rpi durch den hostnamen oder die IP3-Adresse eures RPis zu ersetzen. Das ganze dauert dann eine ganze Weile, aber man muss ja nicht davor sitzen und zuschauen. 😄

⚠️ Warnung ⚠️
Das ganze ist erst mal mit etwas Vorsicht zu genießen, da ich jetzt nicht unnötig das Backup eingespielt habe um die SD-Karte nicht zu verschleißen aber die Dateigröße des erstellten Archivs wirkt auf mich plausibel und auch ein erster Blick ins Archiv sieht gut aus.

ls -lh ~/pi/      
insgesamt 2,2G
-rw-r----- 1 martin martin 1,6G Feb 20 19:29 2018-02-20-pi3.img.xz
-rw-r----- 1 martin martin 602M Mai 10 15:56 2018-05-10-pi3.tar.xz

Somit habe ich nun das Image, dass ich am Anfang mit dd erstellt habe mit dem ich ein funktionstüchtiges System auf eine neue SD-Karte im Falle eines Austauschs schreiben kann und ein aktuelles Backup der Daten.


  1. Die Herkunft des Programmnamens dd ist nicht gänzlich geklärt und es finden sich zahlreiche Möglichkeiten in diversen Quellen.
    [Wikipedia][50]  ↩︎
  2. Secure Shell ↩︎

  3. Internet Protocol ↩︎

Der aus meiner Sicht größte Vorteil des Umstiegs von Unity auf Gnome besteht darin, dass sich Ubuntu nun wesentlich freier konfigurieren lässt. In den folgenden Schritten stelle ich Ihnen meine persönliche Konfiguration vor. Vermutlich haben Sie ganz andere Vorlieben — aber vielleicht ist ja der eine oder andere Baustein dabei, nach dem Sie auch schon gesucht haben. (Wenn Sie eigene Tipps, haben, dürfen Sie gerne einen kurzen Kommentar verfassen …)

Ubuntu-Desktop nach der Art des Hauses …

Gnome Tweaks

Die Gnome-Philosophie ist es, seine Anwender nicht durch unnötige Optionen zu verwirren. Erfreulicherweise können viele nützliche Einstellungen aber ganz unkompliziert in den Gnome Tweaks (deutscher Programmname Optimierungen) vorgenommen werden. Die Installation erfolgt mit apt install gnome-tweaks. Dort können Sie unter anderem einen freien Skalierungsfaktor für alle Schriften einstellen, Modale Dialoge vom Hauptfenster lösen, Fensterbuttons links oder rechts anzeigen etc.

Gnome Shell Extensions

Damit Gnome-Erweiterungen im Webbrowser konfiguriert werden können, müssen Sie ein zusätzliches Paket installieren: apt install chrome-gnome-shell. Danach besuchen Sie die Seite https://extensions.gnome.org. Dort klicken Sie auf den Link Click here to install browser extension und erlauben Sie die Aktivierung dieser Browser-Erweiterung. Anschließend laden Sie die Seite neu.

Die Liste der aktiven Shell-Erweiterungen

Dock

Ubuntus Dock ist eine reduzierte Variante der beliebten Gnome-Erweiterung Dash to Dock. Das Original bietet mehr Konfigurationsmöglichkeiten, weswegen ich die Erweiterung zuerst im Webbrowser installiert und das entsprechende Ubuntu-Paket dann entfernt habe: apt remove gnome-shell-extension-ubuntu-dock. (Ohne die De-Installation kämpfen zwei Dock-Erweiterungen gegeneinander. Das eigentlich deaktivierte Dock von Ubuntu taucht nach Updates sonst immer wieder auf.)

Neben diversen Optionen, die die optische Gestaltung des Docks betreffen (z.B. dass das Dock nicht größer als 90% der Bildschirmhöhe werden soll), finden sich in den Konfigurationdialogen auch ausgesprochen nützliche Funktionen: Beispielsweise bewirkt die Einstellung Wirkung bei Mausklick = Minimieren, dass die betroffenen Fenster ein- und wieder ausgeblendet werden.

Die originale »Dash to Dock«-Erweiterung bietet mehr Konfigurationsmöglichkeiten als die Ubuntu-Variante.

Ubuntu-Icon anstelle von »Aktivitäten«

Der Button Aktivitäten ist optisch ein Fremdkörper im Gnome-Panel. Ein dezentes Icon reicht vollkommen aus. Die Erweiterung Activities Configurator bietet neben unzähligen anderen Optionen die Möglichkeit, hierfür eine Bitmap-Datei auszuwählen. Ich habe das Ubuntu-Logo verwendet (/usr/share/icons/Humanity/places/64/start-here.svg).

Der »Activities Configurator« steuert das Aussehen und Verhalten der Panel-Zeile.

Systemmonitor

Techniker der ich nun mal bin will ich wissen, was auf meinem Rechner vor sich geht. Meine diesbezüglichen Wünsche erfüllt die Erweiterung system-monitor. Bevor die Erweiterung im Webbrowser aktiviert werden kann, müssen allerdings diverse Pakete installiert werden:

apt install gir1.2-gtop-2.0 gir1.2-networkmanager-1.0 gir1.2-clutter-1.0
Im Konfigurationsdialog von »system-monitor« kann genau eingestellt werden, welche Statusinformationen wie im Panel bzw. im Menü präsentiert werden sollen.

Touchpad deaktiveren, sobald eine Maus angeschlossen ist

Das Touchpad meines Notebooks in Ehren, aber sobald ich eine Maus angeschlossen habe, ist mir die lieber. Und dann soll das Touchpad automatisch deaktiviert werden, um unbeabsichtigte Mausbewegungen und -klicks zu verhindern. Genau das kann die Erweiterung Touchpad Indicator. Damit die Erweiterung wunschgemäß funktioniert, müssen Sie im Konfigurationsdialog der Erweiterung im erste Dialogblatt die Umschaltmethode Xinput auswählen und im zweiten Dialogblatt die Option Touchpad automatisch ein- bzw. ausschalten aktivieren.

Konfiguration des Touchpad-Indikators

Alt+Tab wiederherstellen

Gnome kennt viel zu viele Tastenkürzel, um zwischen Fenstern und Programmen zu wechseln. Mir reicht eine, und die soll funktionieren, wie es einst unter Windows der Fall war. Diesen Wunsch erfüllt die simple Erweiterung Alternate Tab.

CapsLock deaktivieren

Die überflüssigste Taste jeder Tastatur ist CapsLock. Immer wieder führt ein unbeabsichtigtes Drücken zur eINGABE FEHLERHAFTEN tEXTS. Abhilfe: Im Programm Optimierungen (also Gnome Tweaks) gibt es im Dialogblatt Tastatur und Maus den merkwürdig beschrifteten Button Zusätzliche Belegungsoptionen. Er führt in einen Dialog, in dem Sie die Funktionen diverse Spezialtasten (Strg, Alt, Windows, CapsLock) verändern können. Dort gibt es auch die Möglichkeit, CapsLock ganz zu deaktivieren.

CapsLock ade

Nachtmodus

Gnome kann die Monitorfarben in der Nacht mit weniger Blau- und mehr Gelb- und Orange-Tönen darstellen. Das schont die Augen, ist aber natürlich zur farbechten Bearbeitung von Fotos ungeeignet. Die Option findet sich unter den gewöhnlichen Einstellungen (Dialogblatt Geräte / Anezigegeräte).

9. Mai 2018

Ich habe seit meinem Umstieg auf Hugo das Theme Minos ohne Änderung (abgesehen von der Linkfarbe) genutzt. Gestern und heute habe ich ein paar kleine Änderungen am CSS1 vorgenommen um das Aussehen etwas zu personalisieren.
Außerdem habe ich im Zuge der kommenden DSGVO2 mein Impressum aktualisiert und die Datenschutzerklärung als eigene Seite eingeführt.

Beides habe ich mit Hilfe des Impressum-Generator von juraforum.de erstellt. Das Impressum habe ich etwas angepasst, da ich meine Inhalte unter CC BY-SA veröffentliche.
So ganz zufrieden bin ich mit den Formulierungen noch nicht und ich denke ich werde die nächste Zeit nach und nach etwas nachbessern. Da mir die Kopfzeile mit einem weiteren Link zu voll wurde habe ich beides in der Fußzeile verlinkt.

Update 2018-05-10

Ich habe heute einen kleinen Bug im Design gefunden, den ich mit meinen Änderungen eingeführt habe. Nachdem ich einfach nicht darauf kam, was am CSS1 nicht passt bekam ich schnelle Hilfe bei css-tricks.
Mir sind aber noch zwei weitere unschöne Kleinigkeiten aufgefallen für die ich derzeit noch keine Lösung habe. Wie immer werde ich erst mal selbst versuchen es zu beheben bevor ich nach Hilfe frage. Mal schauen wer die Fehler bis dahin findet. 😄


  1. Cascading Style Sheet [return]
  2. Datenschutzgrundverordung [return]

Diese Datenschutzerklärung klärt Sie über die Art, den Umfang und Zweck der Verarbeitung von personenbezogenen Daten (nachfolgend kurz „Daten“) innerhalb unseres Onlineangebotes und der mit ihm verbundenen Webseiten, Funktionen und Inhalte sowie externen Onlinepräsenzen, wie z.B. unser Social Media Profile auf (nachfolgend gemeinsam bezeichnet als „Onlineangebot“). Im Hinblick auf die verwendeten Begrifflichkeiten, wie z.B. „Verarbeitung“ oder „Verantwortlicher“ verweisen wir auf die Definitionen im Art. 4 der Datenschutzgrundverordnung (DSGVO).

Verantwortlicher

Martin Dosch

Arten der verarbeiteten Daten

  • Bestandsdaten (z.B., Namen, Adressen).
  • Kontaktdaten (z.B., E-Mail, Telefonnummern).
  • Inhaltsdaten (z.B., Texteingaben, Fotografien, Videos).
  • Nutzungsdaten (z.B., besuchte Webseiten, Interesse an Inhalten, Zugriffszeiten).
  • Meta-/Kommunikationsdaten (z.B., Geräte-Informationen, IP-Adressen).

Kategorien betroffener Personen

Besucher und Nutzer des Onlineangebotes (Nachfolgend bezeichnen wir die betroffenen Personen zusammenfassend auch als „Nutzer“).

Zweck der Verarbeitung

  • Zurverfügungstellung des Onlineangebotes, seiner Funktionen und Inhalte.
  • Beantwortung von Kontaktanfragen und Kommunikation mit Nutzern.
  • Sicherheitsmaßnahmen.

Verwendete Begrifflichkeiten

„Personenbezogene Daten“ sind alle Informationen, die sich auf eine identifizierte oder identifizierbare natürliche Person (im Folgenden „betroffene Person“) beziehen; als identifizierbar wird eine natürliche Person angesehen, die direkt oder indirekt, insbesondere mittels Zuordnung zu einer Kennung wie einem Namen, zu einer Kennnummer, zu Standortdaten, zu einer Online-Kennung (z.B. Cookie) oder zu einem oder mehreren besonderen Merkmalen identifiziert werden kann, die Ausdruck der physischen, physiologischen, genetischen, psychischen, wirtschaftlichen, kulturellen oder sozialen Identität dieser natürlichen Person sind.

„Verarbeitung“ ist jeder mit oder ohne Hilfe automatisierter Verfahren ausgeführten Vorgang oder jede solche Vorgangsreihe im Zusammenhang mit personenbezogenen Daten. Der Begriff reicht weit und umfasst praktisch jeden Umgang mit Daten.

„Pseudonymisierung“ die Verarbeitung personenbezogener Daten in einer Weise, dass die personenbezogenen Daten ohne Hinzuziehung zusätzlicher Informationen nicht mehr einer spezifischen betroffenen Person zugeordnet werden können, sofern diese zusätzlichen Informationen gesondert aufbewahrt werden und technischen und organisatorischen Maßnahmen unterliegen, die gewährleisten, dass die personenbezogenen Daten nicht einer identifizierten oder identifizierbaren natürlichen Person zugewiesen werden;

„Profiling“ jede Art der automatisierten Verarbeitung personenbezogener Daten, die darin besteht, dass diese personenbezogenen Daten verwendet werden, um bestimmte persönliche Aspekte, die sich auf eine natürliche Person beziehen, zu bewerten, insbesondere um Aspekte bezüglich Arbeitsleistung, wirtschaftliche Lage, Gesundheit, persönliche Vorlieben, Interessen, Zuverlässigkeit, Verhalten, Aufenthaltsort oder Ortswechsel dieser natürlichen Person zu analysieren oder vorherzusagen;

Als „Verantwortlicher“ wird die natürliche oder juristische Person, Behörde, Einrichtung oder andere Stelle, die allein oder gemeinsam mit anderen über die Zwecke und Mittel der Verarbeitung von personenbezogenen Daten entscheidet, bezeichnet.

„Auftragsverarbeiter“ eine natürliche oder juristische Person, Behörde, Einrichtung oder andere Stelle, die personenbezogene Daten im Auftrag des Verantwortlichen verarbeitet;

Maßgebliche Rechtsgrundlagen

Nach Maßgabe des Art. 13 DSGVO teilen wir Ihnen die Rechtsgrundlagen unserer Datenverarbeitungen mit. Sofern die Rechtsgrundlage in der Datenschutzerklärung nicht genannt wird, gilt Folgendes: Die Rechtsgrundlage für die Einholung von Einwilligungen ist Art. 6 Abs. 1 lit. a und Art. 7 DSGVO, die Rechtsgrundlage für die Verarbeitung zur Erfüllung unserer Leistungen und Durchführung vertraglicher Maßnahmen sowie Beantwortung von Anfragen ist Art. 6 Abs. 1 lit. b DSGVO, die Rechtsgrundlage für die Verarbeitung zur Erfüllung unserer rechtlichen Verpflichtungen ist Art. 6 Abs. 1 lit. c DSGVO, und die Rechtsgrundlage für die Verarbeitung zur Wahrung unserer berechtigten Interessen ist Art. 6 Abs. 1 lit. f DSGVO. Für den Fall, dass lebenswichtige Interessen der betroffenen Person oder einer anderen natürlichen Person eine Verarbeitung personenbezogener Daten erforderlich machen, dient Art. 6 Abs. 1 lit. d DSGVO als Rechtsgrundlage.

Sicherheitsmaßnahmen

Wir treffen nach Maßgabe des Art. 32 DSGVO unter Berücksichtigung des Stands der Technik, der Implementierungskosten und der Art, des Umfangs, der Umstände und der Zwecke der Verarbeitung sowie der unterschiedlichen Eintrittswahrscheinlichkeit und Schwere des Risikos für die Rechte und Freiheiten natürlicher Personen, geeignete technische und organisatorische Maßnahmen, um ein dem Risiko angemessenes Schutzniveau zu gewährleisten.

Zu den Maßnahmen gehören insbesondere die Sicherung der Vertraulichkeit, Integrität und Verfügbarkeit von Daten durch Kontrolle des physischen Zugangs zu den Daten, als auch des sie betreffenden Zugriffs, der Eingabe, Weitergabe, der Sicherung der Verfügbarkeit und ihrer Trennung. Des Weiteren haben wir Verfahren eingerichtet, die eine Wahrnehmung von Betroffenenrechten, Löschung von Daten und Reaktion auf Gefährdung der Daten gewährleisen. Ferner berücksichtigen wir den Schutz personenbezogener Daten bereits bei der Entwicklung, bzw. Auswahl von Hardware, Software sowie Verfahren, entsprechend dem Prinzip des Datenschutzes durch Technikgestaltung und durch datenschutzfreundliche Voreinstellungen berücksichtigt (Art. 25 DSGVO).

Zusammenarbeit mit Auftragsverarbeitern und Dritten

Sofern wir im Rahmen unserer Verarbeitung Daten gegenüber anderen Personen und Unternehmen (Auftragsverarbeitern oder Dritten) offenbaren, sie an diese übermitteln oder ihnen sonst Zugriff auf die Daten gewähren, erfolgt dies nur auf Grundlage einer gesetzlichen Erlaubnis (z.B. wenn eine Übermittlung der Daten an Dritte, wie an Zahlungsdienstleister, gem. Art. 6 Abs. 1 lit. b DSGVO zur Vertragserfüllung erforderlich ist), Sie eingewilligt haben, eine rechtliche Verpflichtung dies vorsieht oder auf Grundlage unserer berechtigten Interessen (z.B. beim Einsatz von Beauftragten, Webhostern, etc.).

Sofern wir Dritte mit der Verarbeitung von Daten auf Grundlage eines sog. „Auftragsverarbeitungsvertrages“ beauftragen, geschieht dies auf Grundlage des Art. 28 DSGVO.

Übermittlungen in Drittländer

Sofern wir Daten in einem Drittland (d.h. außerhalb der Europäischen Union (EU) oder des Europäischen Wirtschaftsraums (EWR)) verarbeiten oder dies im Rahmen der Inanspruchnahme von Diensten Dritter oder Offenlegung, bzw. Übermittlung von Daten an Dritte geschieht, erfolgt dies nur, wenn es zur Erfüllung unserer (vor)vertraglichen Pflichten, auf Grundlage Ihrer Einwilligung, aufgrund einer rechtlichen Verpflichtung oder auf Grundlage unserer berechtigten Interessen geschieht. Vorbehaltlich gesetzlicher oder vertraglicher Erlaubnisse, verarbeiten oder lassen wir die Daten in einem Drittland nur beim Vorliegen der besonderen Voraussetzungen der Art. 44 ff. DSGVO verarbeiten. D.h. die Verarbeitung erfolgt z.B. auf Grundlage besonderer Garantien, wie der offiziell anerkannten Feststellung eines der EU entsprechenden Datenschutzniveaus (z.B. für die USA durch das „Privacy Shield“) oder Beachtung offiziell anerkannter spezieller vertraglicher Verpflichtungen (so genannte „Standardvertragsklauseln“).

Rechte der betroffenen Personen

Sie haben das Recht, eine Bestätigung darüber zu verlangen, ob betreffende Daten verarbeitet werden und auf Auskunft über diese Daten sowie auf weitere Informationen und Kopie der Daten entsprechend Art. 15 DSGVO.

Sie haben entsprechend. Art. 16 DSGVO das Recht, die Vervollständigung der Sie betreffenden Daten oder die Berichtigung der Sie betreffenden unrichtigen Daten zu verlangen.

Sie haben nach Maßgabe des Art. 17 DSGVO das Recht zu verlangen, dass betreffende Daten unverzüglich gelöscht werden, bzw. alternativ nach Maßgabe des Art. 18 DSGVO eine Einschränkung der Verarbeitung der Daten zu verlangen.

Sie haben das Recht zu verlangen, dass die Sie betreffenden Daten, die Sie uns bereitgestellt haben nach Maßgabe des Art. 20 DSGVO zu erhalten und deren Übermittlung an andere Verantwortliche zu fordern.

Sie haben ferner gem. Art. 77 DSGVO das Recht, eine Beschwerde bei der zuständigen Aufsichtsbehörde einzureichen.

Widerrufsrecht

Sie haben das Recht, erteilte Einwilligungen gem. Art. 7 Abs. 3 DSGVO mit Wirkung für die Zukunft zu widerrufen

Widerspruchsrecht

Sie können der künftigen Verarbeitung der Sie betreffenden Daten nach Maßgabe des Art. 21 DSGVO jederzeit widersprechen. Der Widerspruch kann insbesondere gegen die Verarbeitung für Zwecke der Direktwerbung erfolgen.

Cookies und Widerspruchsrecht bei Direktwerbung

Als „Cookies“ werden kleine Dateien bezeichnet, die auf Rechnern der Nutzer gespeichert werden. Innerhalb der Cookies können unterschiedliche Angaben gespeichert werden. Ein Cookie dient primär dazu, die Angaben zu einem Nutzer (bzw. dem Gerät auf dem das Cookie gespeichert ist) während oder auch nach seinem Besuch innerhalb eines Onlineangebotes zu speichern. Als temporäre Cookies, bzw. „Session-Cookies“ oder „transiente Cookies“, werden Cookies bezeichnet, die gelöscht werden, nachdem ein Nutzer ein Onlineangebot verlässt und seinen Browser schließt. In einem solchen Cookie kann z.B. der Inhalt eines Warenkorbs in einem Onlineshop oder ein Login-Staus gespeichert werden. Als „permanent“ oder „persistent“ werden Cookies bezeichnet, die auch nach dem Schließen des Browsers gespeichert bleiben. So kann z.B. der Login-Status gespeichert werden, wenn die Nutzer diese nach mehreren Tagen aufsuchen. Ebenso können in einem solchen Cookie die Interessen der Nutzer gespeichert werden, die für Reichweitenmessung oder Marketingzwecke verwendet werden. Als „Third-Party-Cookie“ werden Cookies bezeichnet, die von anderen Anbietern als dem Verantwortlichen, der das Onlineangebot betreibt, angeboten werden (andernfalls, wenn es nur dessen Cookies sind spricht man von „First-Party Cookies“).

Wir können temporäre und permanente Cookies einsetzen und klären hierüber im Rahmen unserer Datenschutzerklärung auf.

Falls die Nutzer nicht möchten, dass Cookies auf ihrem Rechner gespeichert werden, werden sie gebeten die entsprechende Option in den Systemeinstellungen ihres Browsers zu deaktivieren. Gespeicherte Cookies können in den Systemeinstellungen des Browsers gelöscht werden. Der Ausschluss von Cookies kann zu Funktionseinschränkungen dieses Onlineangebotes führen.

Ein genereller Widerspruch gegen den Einsatz der zu Zwecken des Onlinemarketing eingesetzten Cookies kann bei einer Vielzahl der Dienste, vor allem im Fall des Trackings, über die US-amerikanische Seite http://www.aboutads.info/choices/ oder die EU-Seite http://www.youronlinechoices.com/ erklärt werden. Des Weiteren kann die Speicherung von Cookies mittels deren Abschaltung in den Einstellungen des Browsers erreicht werden. Bitte beachten Sie, dass dann gegebenenfalls nicht alle Funktionen dieses Onlineangebotes genutzt werden können.

Löschung von Daten

Die von uns verarbeiteten Daten werden nach Maßgabe der Art. 17 und 18 DSGVO gelöscht oder in ihrer Verarbeitung eingeschränkt. Sofern nicht im Rahmen dieser Datenschutzerklärung ausdrücklich angegeben, werden die bei uns gespeicherten Daten gelöscht, sobald sie für ihre Zweckbestimmung nicht mehr erforderlich sind und der Löschung keine gesetzlichen Aufbewahrungspflichten entgegenstehen. Sofern die Daten nicht gelöscht werden, weil sie für andere und gesetzlich zulässige Zwecke erforderlich sind, wird deren Verarbeitung eingeschränkt. D.h. die Daten werden gesperrt und nicht für andere Zwecke verarbeitet. Das gilt z.B. für Daten, die aus handels- oder steuerrechtlichen Gründen aufbewahrt werden müssen.

Nach gesetzlichen Vorgaben in Deutschland, erfolgt die Aufbewahrung insbesondere für 10 Jahre gemäß §§ 147 Abs. 1 AO, 257 Abs. 1 Nr. 1 und 4, Abs. 4 HGB (Bücher, Aufzeichnungen, Lageberichte, Buchungsbelege, Handelsbücher, für Besteuerung relevanter Unterlagen, etc.) und 6 Jahre gemäß § 257 Abs. 1 Nr. 2 und 3, Abs. 4 HGB (Handelsbriefe).

Nach gesetzlichen Vorgaben in Österreich erfolgt die Aufbewahrung insbesondere für 7 J gemäß § 132 Abs. 1 BAO (Buchhaltungsunterlagen, Belege/Rechnungen, Konten, Belege, Geschäftspapiere, Aufstellung der Einnahmen und Ausgaben, etc.), für 22 Jahre im Zusammenhang mit Grundstücken und für 10 Jahre bei Unterlagen im Zusammenhang mit elektronisch erbrachten Leistungen, Telekommunikations-, Rundfunk- und Fernsehleistungen, die an Nichtunternehmer in EU-Mitgliedstaaten erbracht werden und für die der Mini-One-Stop-Shop (MOSS) in Anspruch genommen wird.

Hosting

Die von uns in Anspruch genommenen Hosting-Leistungen dienen der Zurverfügungstellung der folgenden Leistungen: Infrastruktur- und Plattformdienstleistungen, Rechenkapazität, Speicherplatz und Datenbankdienste, Sicherheitsleistungen sowie technische Wartungsleistungen, die wir zum Zwecke des Betriebs dieses Onlineangebotes einsetzen.

Hierbei verarbeiten wir, bzw. unser Hostinganbieter Bestandsdaten, Kontaktdaten, Inhaltsdaten, Vertragsdaten, Nutzungsdaten, Meta- und Kommunikationsdaten von Kunden, Interessenten und Besuchern dieses Onlineangebotes auf Grundlage unserer berechtigten Interessen an einer effizienten und sicheren Zurverfügungstellung dieses Onlineangebotes gem. Art. 6 Abs. 1 lit. f DSGVO i.V.m. Art. 28 DSGVO (Abschluss Auftragsverarbeitungsvertrag).

Erhebung von Zugriffsdaten und Logfiles

Wir, bzw. unser Hostinganbieter, erhebt auf Grundlage unserer berechtigten Interessen im Sinne des Art. 6 Abs. 1 lit. f. DSGVO Daten über jeden Zugriff auf den Server, auf dem sich dieser Dienst befindet (sogenannte Serverlogfiles). Zu den Zugriffsdaten gehören Name der abgerufenen Webseite, Datei, Datum und Uhrzeit des Abrufs, übertragene Datenmenge, Meldung über erfolgreichen Abruf, Browsertyp nebst Version, das Betriebssystem des Nutzers, Referrer URL (die zuvor besuchte Seite), IP-Adresse und der anfragende Provider.

Logfile-Informationen werden aus Sicherheitsgründen (z.B. zur Aufklärung von Missbrauchs- oder Betrugshandlungen) für die Dauer von maximal 7 Tagen gespeichert und danach gelöscht. Daten, deren weitere Aufbewahrung zu Beweiszwecken erforderlich ist, sind bis zur endgültigen Klärung des jeweiligen Vorfalls von der Löschung ausgenommen.

Kontaktaufnahme

Bei der Kontaktaufnahme mit uns (z.B. per Kontaktformular, E-Mail, Telefon oder via sozialer Medien) werden die Angaben des Nutzers zur Bearbeitung der Kontaktanfrage und deren Abwicklung gem. Art. 6 Abs. 1 lit. b) DSGVO verarbeitet. Die Angaben der Nutzer können in einem Customer-Relationship-Management System (“CRM System”) oder vergleichbarer Anfragenorganisation gespeichert werden.

Wir löschen die Anfragen, sofern diese nicht mehr erforderlich sind. Wir überprüfen die Erforderlichkeit alle zwei Jahre; Ferner gelten die gesetzlichen Archivierungspflichten.

Kommentare und Beiträge

Wenn Nutzer Kommentare oder sonstige Beiträge hinterlassen, können ihre IP-Adressen auf Grundlage unserer berechtigten Interessen im Sinne des Art. 6 Abs. 1 lit. f. DSGVO für 7 Tage gespeichert werden. Das erfolgt zu unserer Sicherheit, falls jemand in Kommentaren und Beiträgen widerrechtliche Inhalte hinterlässt (Beleidigungen, verbotene politische Propaganda, etc.). In diesem Fall können wir selbst für den Kommentar oder Beitrag belangt werden und sind daher an der Identität des Verfassers interessiert.

Des Weiteren behalten wir uns vor, auf Grundlage unserer berechtigten Interessen gem. Art. 6 Abs. 1 lit. f. DSGVO, die Angaben der Nutzer zwecks Spamerkennung zu verarbeiten.

Die im Rahmen der Kommentare und Beiträge angegebenen Daten, werden von uns bis zum Widerspruch der Nutzer dauerhaft gespeichert.

Kommentarabonnements

Die Nachfolgekommentare können durch Nutzer mit deren Einwilligung gem. Art. 6 Abs. 1 lit. a DSGVO abonniert werden. Die Nutzer erhalten eine Bestätigungsemail, um zu überprüfen, ob sie der Inhaber der eingegebenen Emailadresse sind. Nutzer können laufende Kommentarabonnements jederzeit abbestellen. Die Bestätigungsemail wird Hinweise zu den Widerrufsmöglichkeiten enthalten. Für die Zwecke des Nachweises der Einwilligung der Nutzer, speichern wir den Anmeldezeotpunkt nebst der IP-Adresse der Nutzer und löschen diese Informationen, wenn Nutzer sich von dem Abonnement abmelden.

Sie können den Empfang unseres ABonnemenets jederzeit kündigen, d.h. Ihre Einwilligungen widerrufen. Wir können die ausgetragenen E-Mailadressen bis zu drei Jahren auf Grundlage unserer berechtigten Interessen speichern bevor wir sie löschen, um eine ehemals gegebene Einwilligung nachweisen zu können. Die Verarbeitung dieser Daten wird auf den Zweck einer möglichen Abwehr von Ansprüchen beschränkt. Ein individueller Löschungsantrag ist jederzeit möglich, sofern zugleich das ehemalige Bestehen einer Einwilligung bestätigt wird.
Erstellt mit Datenschutz-Generator.de von RA Dr. Thomas Schwenke

Ich habe heute morgen noch schnell den Beitrag Kommentare mit Github überabeitet. Als erstes hatte sich ein kleiner Fehler eingeschlichen, man muss natürlich die JS Datei nicht im Header einbinden sondern direkt im Beitrag, was ich auch bereits getan habe.

Zusätzlich habe ich das Script ein wenig angepasst, damit die CSP noch restriktiver sein können. So ergeben sich jetzt folgenden Regeln:

script-src 'self'; 
img-src 'self' https://*.githubusercontent.com;
connect-src https://*.github.com

Das wichtigste war die erste Regel, direkten JS Code in der HTML Datei gilt als unsicher, und wird unteranderem vom Observatory Test von Mozilla mit 25 Punkten (bei 100 Punkten Gesamt) Abzug geahndet. Jetzt erhalten wir also auch wieder unser A+.

Ich habe heute morgen noch schnell den Beitrag Kommentare mit Github überabeitet. Als erstes hatte sich ein kleiner Fehler eingeschlichen, man muss natürlich die JS Datei nicht im Header einbinden sondern direkt im Beitrag, was ich auch bereits getan habe.

Zusätzlich habe ich das Script ein wenig angepasst, damit die CSP noch restriktiver sein können. So ergeben sich jetzt folgenden Regeln:

script-src 'self'; 
img-src 'self' https://*.githubusercontent.com;
connect-src https://*.github.com

Das wichtigste war die erste Regel, direkten JS Code in der HTML Datei gilt als unsicher, und wird unteranderem vom Observatory Test von Mozilla mit 25 Punkten (bei 100 Punkten Gesamt) Abzug geahndet. Jetzt erhalten wir also auch wieder unser A+.

8. Mai 2018

Auch wenn sie in letzter Zeit ihre Beiträge fast ins Unleserliche zergendern1 hat netzpolitik.org heute mal im Beitrag “Per Online-Tool dem BND die Metadatenspeicherung untersagen” einen (hoffentlich) nützlichen Link gebracht: Mit diesem Tool der Reporter ohne Grenzen kann man lt. deren Pressemitteilung dem BND wohl untersagen weiterhin ohne Rechtsgrundlage Telefonie-Metadaten zu speichern.

Der „Bitte Nicht Durchleuchten-Generator“ erzeugt dann automatisch ein juristisches Schreiben, womit der BND im Namen der Person aufgefordert wird, es künftig zu unterlassen, „Telefonie-Metadaten aus meinen Telekommunikationsverkehren in der Datei VerAS zu speichern oder zu nutzen.“ Eine E-Mail-Adresse ist nur für den Versand einer Bestätigung durch ROG erforderlich, wird jedoch nicht an den Geheimdienst weitergegeben. Der BND hat dann zehn Tage Zeit, um der Aufforderung nachzukommen.

So toll sich das auch erst mal anhört, ich habe dann doch auch etwas die Befürchtung, dass das diese Überwachungsdienste erst Recht dazu ermuntert Daten dieses “Querulanten” zu speichern. Es wäre ja nicht das erste Mal, dass sich die Stasi Schnüffeldienste über dem Recht wähnen.


  1. Danke tux für den Begriff zergendern. [return]

Ich bin ein großer Freund vom Datenschutz, leider unterstützt Hugo nur disqus, was alles andere als freundlich zum Datenschutz ist. Also gab es die letzten Monate nie eine Kommentar Funktion, das hat sich jetzt geändert.

Ich bin durch Zufall auf den Artikel von Don Williamson gestoßen, der es mir erlaubt eine Kommentar Funktion für meine Artikel durch Github anzubieten.

Konfiguration

Als erstes legen wir eine Datei comments.html im Ordner themes/THEME_NAME/layouts/partials/ mit folgenden Inhalt an:

<div id="gh-comments">
          <h2>Kommentare</h2>
              <div id="gh-comments-list"></div>
                  <a href="javascript:void(0)" id="gh-load-comments" class="btn" style="display:none">Load more comments</a>
</div>

   <script type="text/javascript" data-ghid="{{ $.Params.ghcommentid }}" src="{{ .Site.BaseURL }}js/github-comments.js"></script>

Als nächstes brauchen wir jetzt noch die JS Datei, die für uns die ganze Arbeit macht themes/THEME_NAME/static/js/github-comments.js mit folgenden Inhalt:

// use of ajax vs getJSON for headers use to get markdown (body vs body_htmml)
// todo: pages, configure issue url, open in new window?
//

var this_js_script = $('script[src*=github-comments]');


var ghid = this_js_script.attr('data-ghid');   
if (typeof ghid === "undefined" ) {
   var ghid = '0';
}

DoGithubComments(ghid);

var CurrentPage = 0;

function ParseLinkHeader(link)
{
    var entries = link.split(",");
    var links = { };
    for (var i in entries)
    {
        var entry = entries[i];
        var link = { };
        link.name = entry.match(/rel=\"([^\"]*)/)[1];
        link.url = entry.match(/<([^>]*)/)[1];
        link.page = entry.match(/page=(\d+).*$/)[1];
        links[link.name] = link;
    }
    return links;
}

function DoGithubComments(comment_id, page_id)
{
    var repo_name = "beli3ver/malte-kiefer.de";

    if (page_id === undefined)
        page_id = 1;

    var api_url = "https://api.github.com/repos/" + repo_name;
    var api_issue_url = api_url + "/issues/" + comment_id;
    var api_comments_url = api_url + "/issues/" + comment_id + "/comments" + "?page=" + page_id;

    var url = "https://github.com/beli3ver/malte-kiefer.de/issues/" + comment_id;

    $(document).ready(function ()
    {
        $.getJSON(api_issue_url, function(data) {
            NbComments = data.comments;
        });

        $.ajax(api_comments_url, {
            headers: {Accept: "application/vnd.github.v3.html+json"},
            dataType: "json",
            success: function(comments, textStatus, jqXHR) {

                // Add post button to first page
                if (page_id == 1)
                    $("#gh-comments-list").append("<a href='" + url + "#new_comment_field' rel='nofollow' class='btn'>Füge eine Kommentar hinzu</a>");

                // Individual comments
                $.each(comments, function(i, comment) {

                    var date = new Date(comment.created_at);

                    var t = "<div id='gh-comment'>";
                    t += "<img src='" + comment.user.avatar_url + "' width='24px'>";
                    t += "<b><a href='" + comment.user.html_url + "'>" + comment.user.login + "</a></b>";
                    t += " posted at ";
                    t += "<em>" + date.toUTCString() + "</em>";
                    t += "<div id='gh-comment-hr'></div>";
                    t += comment.body_html;
                    t += "</div>";
                    $("#gh-comments-list").append(t);
                });

                // Setup comments button if there are more pages to display
                var links = ParseLinkHeader(jqXHR.getResponseHeader("Link"));
                if ("next" in links)
                {
                    $("#gh-load-comments").attr("onclick", "DoGithubComments(" + comment_id + "," + (page_id + 1) + ");");
                    $("#gh-load-comments").show();
                }
                else
                {
                    $("#gh-load-comments").hide();
                }
            },
            error: function() {
                $("#gh-comments-list").append("Kommentarfunktion für diesen Beitrag nicht aktiviert!");
            }
        });
    });
}

Jetzt müssen die Links in der Datei angepasst werden. Ihr müsst eine eigne Repo anlegen bei Github und hier in der Datei anpassen. Achtung: Wir brauchen auch jQuery!. jQuery sollte umbedingt im <head></head> geladen werden.

Zum Schluss noch das Template für die Beitragsdatei anpassen (themes/THEME_NAME/layouts/_default/single.html) und den folgenden Teil for dem Aufruf des <footer></footer> Tags einfügen:

{{ partial "comments.html" . }}

Um jetzt die Kommentarfunktion zu nutzen, ein entsprechendes issue bei Github eröffnen, die ID merken. Wenn ihr dann einen neuen Beitrag erstellt, müsst ihr vor den “—” folgendes einfügen:

ghcommentid: ID

Und das wars, nun habt ihr und ich eine Kommentarfunktion.

CSP

Damit ihr diese Funktion mit CSP nutzen könnt, müssen folgende Einstellungen gesetzt sein:

img-src 'self' https://*.githubusercontent.com;
connect-src 'self' https://*.github.com