26.02.2014 Aufrufe

Linux-Magazin Clean Linux (Vorschau)

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

09/13<br />

Anzeige:<br />

Fotoverwaltungen:<br />

Es entwickelt sich<br />

Corel Aftershot Pro, Darktable, Digikam<br />

und Shotwell im Vergleichstest S. 48<br />

DRM vom W3C<br />

Der kommende Video-<br />

„Schutz“ von HTML 5 aus<br />

Programmierersicht S. 98<br />

Sprachen: Vala<br />

Java- und C#-ähnliche<br />

Programmiersprache für<br />

Gnome und GTK+ S. 92<br />

<strong>Clean</strong> <strong>Linux</strong><br />

Die saubersten Strategien und Tools<br />

fürs Updaten und Upgraden<br />

■ Die häufigsten Paketmanager im Vergleich S. 22<br />

■ Wie Apt intern wirklich arbeitet S. 30<br />

■ Upgrade-Nachhaltigkeit: Ubuntu LTS Server<br />

und Open Suse im 5-Jahres-Test S. 34<br />

■ Softwareverwaltung gegen Geld:<br />

RHEL, SLES und Canonicals Ubuntu S. 38<br />

■ Techniken für heikle Kernelupdates S. 42<br />

■ Kaum Maintenance für Embedded-Geräte S. 46<br />

■ So geht’s: Verräterische Daten<br />

aus E-Mail-Headern entfernen S. 60<br />

■ Microsofts Aufholjagd: Cloudbase<br />

stapelt Open Stack auf Hyper-V S. 68<br />

Rechtzeitig vor der Bundestagswahl: FSF Europe checkt die Parteien auf Software-Kompetenz S. 74<br />

www.linux-magazin.de<br />

Deutschland Österreich Schweiz Benelux Spanien Italien<br />

4 6,40 4 7,05 sfr 12,80 4 7,50 4 8,30 4 8,30<br />

4 192587 306401 09


The Dope Show<br />

Login 09/2013<br />

Editorial<br />

Manche Sportarten gelten als „Doping-verseucht“. Das erscheint gegenüber<br />

den ehrlichen Profi-Sportlern als ungerecht, die schwarzen Schafe aber, die<br />

verbotene Substanzen konsumieren, versauen den Ruf – auch weil sie ihr<br />

unsportliches Verhalten stets mit Leugnen und Verschwörungstheorien zu<br />

kaschieren suchen. Dabei ist die Wahrscheinlichkeit bei Dopingkontrollen aufzufliegen,<br />

gar nicht gering. Der Doper schadet sich also selbst am meisten, er<br />

ruiniert auf Dauer Gesundheit, Ansehen beim Publikum, das ganze Lebenswerk,<br />

die Sponsorenzahlungen.<br />

www.linux-magazin.de<br />

3<br />

Sind zehn Prozent mehr Wattleistung für einen prominenten Radfahrer so<br />

wichtig, dass er, sobald überführt, die nächsten 20 Jahre nicht mal mehr zur<br />

Einweihung eines Möbelhauses eingeladen wird? Man kann es drehen und wenden:<br />

Sehenden Auges den eigenen Ruin zu riskieren, bleibt für Außenstehende<br />

dauerhaft unverständlich.<br />

Jan Kleinert, Chefredakteur<br />

Genauso unverständlich das Motiv tausender US-Firmen, die jüngsten Berichten zufolge im Zuge von Prism<br />

bereits seit 2007 die heimischen Geheimdienste mit Informationen über in- und ausländische Bürger versorgt<br />

haben. Beispiel Microsoft: Die Firma hat offenbar im Rahmen des Foreign Intelligence Surveillance Act Nutzerdaten<br />

aus seinen Diensten Skype, Outlook.com und Skydrives ohne Wissen und Zustimmung seiner Kunden an<br />

die NSA weitergegeben – und wer weiß, was sonst noch?! Besonders doof für die Firma ist zurzeit, dass sie aus<br />

juristischen Gründen nicht mal mit der Preisgabe von Einzelheiten vor der Öffentlichkeit rechtfertigen darf.<br />

Klar, für <strong>Linux</strong>er ist die Sache vergnüglich. Aber jedermann, der wissen will, was die Welt im Innersten zusammenhält,<br />

fragt sich schon, warum eine Firma sich ohne einen erkennbaren Nutzen so nahe an den Rand des<br />

Abgrunds stellt. Zur Erinnerung: Jedes marktwirtschaftliche Unternehmen strebt per Definitionen nach nichts<br />

so sehr wie nach Gewinn. Den Microsoft-Bossen dagegen muss klar sein, dass die jüngsten Neuigkeiten die<br />

eigenen Anwender verunsichert. Die fragen sich: Wer hat Zugriff auf meine bisher sicher geglaubt Daten?<br />

Bei Konzernen, die Microsoft-Software einsetzen, hat der Zweifel am Datenschutz sogar einen Namen: Compliance.<br />

Kann es irgendwo auf der Welt eine Bank oder ein Konzern gegenüber seinen Aktionären und anderen<br />

institutionellen Investoren verantworten, mit Produkten zu arbeiten, die möglicherweise Backdoors eingebaut<br />

haben? Wenn Die Antwort „Nein“ lautet, kann sich der Software-Hersteller die bisherigen Milliardengewinne<br />

in die Haare schmieren. Dann tritt das ein, was kein <strong>Linux</strong> und keine Wettbewerbskommission je erreichen<br />

könnte: Redmond hat Feuer im Dachstuhl.<br />

Dass Manager ihre Unternehmen in den Abgrund reiten, kennt man von Dioxin-, Gammelfleisch- oder<br />

Atomtechnologie-Skandalen. Sie handelten zwar illegal, aber insofern rational, als dass das kleine Risiko<br />

aufzufliegen für einen großen Profit in Kauf nahmen. Welchen Profit aber haben Microsoft, Google, Facebook<br />

oder Apple für den Verrat ihrer Kunden zu erwarten? Keinen.<br />

Es lässt sich höchstens spekulieren, dass dumpfer Patriotismus Einzelner im Spiel ist nach dem Motto: Mein<br />

Land ist das beste unter Gottes Sonne und mein Unternehmen – auch deshalb – das beste der Welt. Und damit<br />

das so bleibt, gebe ich den Geheimdiensten, was die wollen. Puh, wer das logisch findet, hat sich entweder<br />

eine Menge Dope reingezogen oder Lance Armstrong als Werbebotschafter.


Inhalt<br />

www.linux-magazin.de 09/2013 09/2013<br />

4<br />

Schmutzige Sicherheitsbugs zwingen oft in Tagesfrist zum Update der Distribution. Alle zwei<br />

bis fünf Jahre fällt zudem ein großes Upgrade an, weil der Maintenance zu Ende geht – wer<br />

eine Rechnerflotte betreibt, dem geht trotz moderner Paketverwaltungen die Arbeit nicht<br />

aus. Diese Ausgabe sammelt Rat und Tat, um <strong>Linux</strong>-Geräte mit wenig Mühe sauberzuhalten.<br />

Aktuell<br />

Titelthema: <strong>Clean</strong> <strong>Linux</strong><br />

6 N ew s<br />

n Xen 4.3 auch für ARM<br />

n Eine Heimat für Debian-Quelltexte<br />

n Chromebook HP Pavillion erhältlich<br />

n Open-Source-Tage in München<br />

22 Paketmanager<br />

Titel<br />

Wie sich RPM und Apt schlagen, wenn es<br />

darum geht, unbeaufsichtigt zu updaten.<br />

38 Enterprise-Strategien<br />

Red Hat, Suse und Canonicals Update-<br />

Portale im Vergleich.<br />

Quicklebendig: Fedora 19, Schrödingers Katze,<br />

bringt viel Neues, etwa für 3-D-Drucker.<br />

12 Zahlen & Trends<br />

n Frei Navigieren in Bochum und Moers<br />

n Google-Drive-Petition<br />

n Red Hat wächst<br />

Online-Updates unter Suse konfigurieren kann<br />

der Anwender auch am Desktop – dank Yast.<br />

30 Apt intern<br />

Was bei Apt alles im Hintergrund passiert.<br />

Puppet und Chef machen‘s besser: RHCP, Suse<br />

Manager und Landscape sind teurer Luxus.<br />

42 Kernelupdates<br />

Fluch oder Segen? Techniken für reibungslose<br />

Kernelupdates.<br />

Wer auf Debian ein Update anschiebt, setzt<br />

zahlreiche unsichtbare Mechanismen in Gang.<br />

Beim Booten kann der Admin notfalls auch den<br />

alten Kernel wieder auswählen.<br />

Auf Mozillas Webmaker-Webseite finden sich<br />

alle Informationen für die Party 2013.<br />

18 Zacks Kernel-News<br />

n Schneller Booten auf Speicherriesen<br />

n 32-Bit-Kernel auf 64-Bit-Hardware<br />

Sicherheit muss nicht kompliziert sein, meint<br />

das Smack-Projekt. Linus glaubt das nicht.<br />

34 Nachhaltigkeit<br />

Auf Dauer gut? Zwei freie Distributionen<br />

in einer Fünf-Jahres-Retrospektive.<br />

DELUG-DVD<br />

Knoppix 7.2 (32+64 Bit)<br />

TOOL<br />

Live-<strong>Linux</strong>-Spezialist Klaus<br />

Knopper legt mit Kernel 3.9.6,<br />

UEFI und neuen Treibern nach<br />

Fedora 19 (64 Bit)<br />

TOOL<br />

TOOL<br />

Codename „Schrödinger's Cat“:<br />

Mit Systemd, UEFI, SE <strong>Linux</strong>, KDE<br />

4.10 und Gnome 3.8<br />

46 Embedded-Updates<br />

Hoffentlich! Mehr und bessere<br />

Aktualisierungen für <strong>Linux</strong>-Geräte.<br />

Details zu DVD-<br />

TOOL<br />

Inhalten auf S. 47<br />

E-Book über Shell<br />

Knapp 800 Seiten kostenlos statt<br />

gedruckt für 45 Euro:<br />

„Shell-Programmierung“ (Galileo)<br />

Schutz-Appliance<br />

TOOL<br />

Fertig eingerichtetes VMware-Image<br />

mit Liberté <strong>Linux</strong>, und bestens<br />

geeignet für unsichere LANs


09/2013 09/2013<br />

Inhalt<br />

48 Sammeln mit Motiv<br />

Bilder importieren, archivieren,<br />

organisieren, mainpulieren und publizieren:<br />

All das leisten aktuelle Programme<br />

zur Fotoverwaltung.<br />

60 Talking Heads<br />

Oft verrät der Quelltext einer E-Mail<br />

mehr übers LAN als dem Admin lieb<br />

sein kann. Postfix und seine Headerchecks<br />

sorgen für Ordnung im Kopf.<br />

102 Meldungen wie Heu<br />

Jede Menge Systemprotokolle findet<br />

Perlmeister Schilli auf seinem Server.<br />

Grund genug, den Log-Analyzer Splunk<br />

um ein paar Perl-Addons zu erweitern.<br />

www.linux-magazin.de<br />

5<br />

Software<br />

Sysadmin<br />

Know-how<br />

47<br />

Einführung<br />

Auf der DELUG-DVD: Knoppix 7.2, Fedora<br />

19, Cloud-PDFs, ein Shell-E-Book und<br />

Videos aus Bozen.<br />

48 Bitparade<br />

Titel<br />

Corel Aftershot Pro, Darktable, Digikam,<br />

Shotwell: Freie Fotoverwaltungen können<br />

mit teurer Profi-Software mithalten.<br />

59 Einführung<br />

Aus dem Alltag eines Sysadmin: Whowatch<br />

& Co. helfen bei der Server-Inspektion.<br />

60 E-Mails bereinigen<br />

Titel<br />

Verräterische Mailheader entfernen.<br />

66 <strong>Linux</strong> bei Microsoft<br />

Im VM-Depot bietet der Softwareriese<br />

auch jede Menge <strong>Linux</strong>-Images an.<br />

84 Embedded Debugging<br />

Auf der Pirsch nach Fehlern in eingebetteten<br />

Systemen.<br />

Darktable erstellt auf Wunsch Snapshots von<br />

den Bearbeitungsschritten.<br />

68 Windows gestapelt<br />

Titel<br />

MS Windows als Open-Stack-Gastgeber.<br />

Remote Debugging klappt über die Kommandozeile<br />

oder ein IDE wie Eclipse.<br />

89 Insecurity Bulletin<br />

Wenn ein Angreifer es nicht schafft, den<br />

Rechner zu übernehmen, aber dennoch<br />

Schaden anrichtet: Denial of Service.<br />

56 Tooltipps<br />

Fish 2.0.0, Bad 0.0.2, Blink, Fping 3.5,<br />

Lnav 0.5.0 und Tomb 1.4 im Kurztest.<br />

Cloudbase hat viele der Open-Stack-Komponenten<br />

auf Windows portiert.<br />

Forum<br />

Programmieren<br />

92 Vala<br />

Titel<br />

Eine Programmiersprache für Gnomeund<br />

GTK+-Anwendungen.<br />

73 Leserbriefe<br />

Auf den Punkt gebracht.<br />

Der Logdateien-Navigator Lnav hilft bei der Suche<br />

in umfangreiche Systemprotokollen.<br />

Service<br />

3 Editorial<br />

108 IT-Profimarkt<br />

111 Stellenanzeige<br />

112 Veranstaltungen<br />

112 Inserenten<br />

113 Impressum<br />

114 <strong>Vorschau</strong><br />

74 FSFE zu Open-Source-Politik<br />

Titel<br />

Wie stehen die Parteien im Bundestagswahlkampf<br />

zu <strong>Linux</strong> und freier Software?<br />

78 Rechts-Rat<br />

Webshops, E-Mail-Marketing, Double-Optin<br />

und der Sportverein<br />

82 Bücher<br />

Bücher zur Websecurity<br />

und über<br />

den Raspberry Pi.<br />

Praxistauglich: Die Bilderverwaltungsoftware<br />

Shotwell ist in Vala programmiert.<br />

98 HTML 5 und DRM<br />

Titel<br />

Die Verschlüsselungstechnik, die so viele<br />

Firmen gerne in HTML 5 sehen wollen,<br />

hat sich zum Politkum entwickelt.<br />

102 Perl-Snapshot<br />

Splunk filtert verschiedene Logdaten.


Aktuell<br />

www.linux-magazin.de News 09/2013<br />

6<br />

News<br />

Fedora 19 ist fertig<br />

Nach der Spherical Cow –<br />

sprich: Fedora 18 – landet mit<br />

Schrödingers Katze, so der<br />

Codename, Fedora 19 planmäßig<br />

auf den Desktops vieler<br />

<strong>Linux</strong>-Geeks. Die Distribution<br />

mit dem blauen Logo und<br />

dem Hut im Namen bringt<br />

jede Menge Neues: PHP 5.5,<br />

Ruby 2.0.0, zahlreiche Tools<br />

für 3-D-Drucker, Systemd 204,<br />

Open Shift und Open Stack<br />

(Grizzly).<br />

Wer die Standard-Desktops<br />

KDE 4.10 und Gnome 3.8<br />

nicht mag, greift zu Mate<br />

(1.6), Sugar, LXDE oder XFCE<br />

(beide in Version 4.10) oder<br />

einfach zum Gnome Classic<br />

Quicklebendig: Fedora 19, Schrödingers Katze, bringt verschiedene Desktops<br />

mit, aber auch Cloudtools und Support für 3-D-Drucker.<br />

Mode. Unter der Haube arbeiten<br />

GCC 4.8 und ein Kernel<br />

3.9 mit Servern wie Bind 10,<br />

Cups 1.6, Node.js sowie den<br />

Spice/QXL-Treibern.<br />

Im <strong>Linux</strong>-<strong>Magazin</strong>-Kurztest<br />

überzeugte Fedora 19 mit tadellosen<br />

Bootzeiten und hoher<br />

Stabilität – sowohl unter KDE<br />

als auch Gnome, auf Desktop-<br />

Pcs und Notebooks. Lediglich<br />

auf einem Dualcore-Atom-<br />

Nettop ruckelten die Flashvideos,<br />

die Ubuntu 12.04 auf<br />

demselben System problemlos<br />

darstellte.<br />

Die Installation von Fedora<br />

19, die auch mit Hilfe diverser<br />

Live-CDs möglich ist,<br />

übernimmt der GUI-Installer<br />

Anaconda, der Einsteiger allerdings<br />

deutlich überfordern<br />

dürfte – vor allem bei der<br />

Partitionierung. Bis Fedora<br />

20 haben die Entwickler nun<br />

jedoch Zeit, auch dieses Tool<br />

zu überarbeiten, die nächste<br />

Fedora-Version ist für November<br />

2013 geplant.<br />

n<br />

Xen 4.3 unterstützt ARM<br />

Heimat für Debian-Quelltexte<br />

Der Hypervisor Xen ist in Version<br />

4.3 verfügbar. Die Virtualisierungssoftware<br />

bootet<br />

»dom0«, kann andere virtuelle<br />

Maschinen starten und unterstützt<br />

die Basisfunktionen<br />

virtueller Maschinen.<br />

Die ARM-Unterstützung gilt<br />

derzeit aber noch als experimentell.<br />

Der 32-Bit-Port von<br />

Xen bootet auf ARMv7 Fast<br />

Models, zu denen Cortex A15<br />

Versatile Express Platform<br />

sowie das Arndale-Board<br />

mit dem Exynos 5 SoC von<br />

Samsung gehören. Die 64-Bit-<br />

Variante läuft mangels Hardware<br />

derzeit noch auf einer<br />

AEMv8-Simulation des Chipdesigners<br />

ARM. Außerdem<br />

neu ist Numa-bezogenes Scheduling.<br />

Der Sche duler weiß<br />

dabei, auf welchen Nodes der<br />

Speicher einer VM läuft. Xen<br />

4.3 unterstützt zudem Open<br />

Vswitch als Bridging-Mechanismus.<br />

Daneben hat das Xen-Projekt<br />

die Energieeffizienz verbessert<br />

und möchte künftig die<br />

Upstream-Version des Emulators<br />

Qemu verwenden anstelle<br />

des bisherigen, hauseigenen<br />

Forks. Xen 4.3.0 steht im<br />

Quelltext zum Download unter<br />

[http://​www.​xenproject.​org/​<br />

​downloads/] bereit. Als Lizenz<br />

gilt die GPLv2, einzelne Bestandteile<br />

stehen unter der<br />

BSD-Lizenz. <br />

n<br />

Debian-Entwickler Stefano<br />

Zacchiroli hat sein „neuestes<br />

Spielzeug“ vorgestellt: Unter<br />

[http://sources.​debian.​net] finden<br />

sich ab sofort alle Quelltexte<br />

der freien <strong>Linux</strong>-Distribution.<br />

Der Datenbestand würde viermal<br />

am Tag aktualisiert, sodass<br />

er immer möglichst nah<br />

am Debian-Archiv sei, und<br />

„enthält Quellen aus den offiziellen<br />

Suites von oldstable<br />

bis experimental“.<br />

Das neue Meta-Repository böte<br />

sich an, um etwa Quelltextpakete<br />

zu durchsuchen, ohne<br />

auf Features wie Code Highlighting<br />

zu verzichten. Dank<br />

der Integration von [http://<br />

codesearch.​debian.​net] könne<br />

man auch direkt nach Begriffen<br />

suchen.<br />

Das Archiv sei schon seit einigen<br />

Tagen im Betrieb, schreibt<br />

„Zack“: „Wahrscheinlich habt<br />

ihr es bereits genutzt, als ihr<br />

auf andere beliebte Debian-<br />

Dienste zugegriffen habt, denn<br />

die meisten haben es bereits<br />

integriert.“ Aktuell belegen<br />

die unkomprimierten Quellen<br />

zirka 381 GByte, plus etwa 83<br />

GByte für den komprimierten<br />

lokalen Mirror.<br />

Das Webinterface zur Sammlung<br />

stammt in weiten Teilen<br />

von Matthieu Caneill. Wer<br />

sich einbringen will, findet<br />

auf einer langen Liste mit Todo-Punkten<br />

Inspiration. n


Anonymisier-<strong>Linux</strong> sucht Entwickler<br />

Whonix, eine Debian-basierte<br />

<strong>Linux</strong>-Distribution zur anonymisierten<br />

Internetnutzung,<br />

sucht ehrenamtliche Mitarbeiter.<br />

Derzeit steht ein Entwickler,<br />

der sich Adrelanos<br />

nennt, allein da. Wie er in<br />

einem Blogeintrag schreibt,<br />

sollen ihm die Mitstreiter dabei<br />

helfen, Whonix zu einer<br />

ausgereiften Distribution zu<br />

machen.<br />

Aufgaben gibt es in dem<br />

Projekt genug: Bash-Skripte<br />

schreiben, Recherchieren,<br />

Anwendern helfen, Dokumentation<br />

verfassen und sich<br />

mit Upstream-Projekten verständigen.<br />

Als wichtigen Einstiegspunkt<br />

für Interessierte<br />

nennt Adrelanos die Entwickler-Mailingliste<br />

und den Bugtracker<br />

des Projekts.<br />

Die noch junge <strong>Linux</strong>-Distribution<br />

verwendet die Virtualisierungssoftware<br />

Virtualbox,<br />

um eine virtuelle Maschine als<br />

Workstation und eine zweite<br />

als Tor-Gateway zu benutzen.<br />

Die Workstation gelangt ausschließlich<br />

über das Gateway<br />

ins Internet.<br />

n<br />

Open CV auf Version 2.4.6 aktualisiert<br />

Bei Open CV (Open Source<br />

Computer Vision Library)<br />

handelt es sich um eine quelloffene<br />

Computervision- und<br />

Maschinenlern-Software. Version<br />

2.4.6 weist neben einer<br />

aktualisierten Dokumentation<br />

einige Neuerungen auf.<br />

Dazu gehören Updates, welche<br />

die Bibliothek für Cuda<br />

5.5 sowie Qt 5 flottmachen.<br />

Auch zahlreiche Open-CL-<br />

Algorithmen haben Entwickler<br />

portiert. Die Bibliothek<br />

unterstützt nun Linaros NDK<br />

und ist um Funktionen für die<br />

Konvertierung von UI-Image<br />

nach »cv::Mat« erweitert.<br />

Nicht zuletzt bringt sie einige<br />

Reparaturen und kleine Stabilitätsverbesserungen.<br />

Open CV steht unter BSD-<br />

Lizenz, hat etwa 2500 optimierte<br />

Algorithmen in petto<br />

und wird unter anderem von<br />

Google, Yahoo und Microsoft,<br />

aber auch zahlreichen Startups<br />

eingesetzt. Wer die neue<br />

Version 2.4.6 herunterladen<br />

will, besucht am besten den<br />

Download-Bereich [http://​<br />

​opencv.​org/​downloads.​html]. n<br />

Lilblue <strong>Linux</strong> erhält WPA Supplicant<br />

Lilblue <strong>Linux</strong>, eine gehärtete<br />

Distribution auf Gentoo-Basis,<br />

ist in der neuen Version<br />

20130708 erhältlich. Die unterstützt<br />

nun WLAN-Geräte, die<br />

WPA Supplicant brauchen. Es<br />

gibt einige Updates, ein Bugfix<br />

repariert den Treiber für<br />

Synaptics-Touchpads.<br />

Lilblue nutzt zwar die Embedded-Systembibliothek<br />

Uclibc,<br />

ist aber für AMD-64-Bit-Rechner<br />

gedacht. Pax, Grsecu rity<br />

und Stack Smashing Protection<br />

erhöhen die Sicherheit,<br />

als Desktop dient XFCE 4.<br />

Weitere Informationen bietet<br />

das Gentoo-Wiki.<br />

n


Aktuell<br />

www.linux-magazin.de News 09/2013<br />

8<br />

Ametys verbessert Multisite-Betrieb<br />

Das freie Content Management<br />

System (CMS) Ametys<br />

[http://​www.​ametys.​org] ist in<br />

Version 3.5 mit einigen neuen<br />

Funktionen erschienen. Für<br />

die Release haben die Entwickler<br />

einige Arbeit in das<br />

Multisite-Feature gesteckt:<br />

Das Anzeigen von Inhalten<br />

auf mehreren Websites ist<br />

nun einfacher möglich, zudem<br />

taucht der geteilte Inhalt<br />

auch in den Suchergebnissen<br />

und in Zusammenfassungen<br />

auf. Daneben kann der Admin<br />

gemeinsam genutzte Ressourcen<br />

wie beispielsweise Bilder<br />

anlegen.<br />

Eine weitere Neuerung sind<br />

passwortgeschützte Benutzerkonten<br />

für Besucher, die<br />

Das Content Management System Ametys 3.5 ermöglicht es, Inhalte und Ressourcen<br />

auf mehreren Websites anzuzeigen.<br />

im System ein Profil und<br />

persönliche Voreinstellungen<br />

hinterlegen. Besucher können<br />

so personalisierte Inhalte<br />

und Dienste verwenden. Ein<br />

neues Plugin erlaubt es dem<br />

Anwender, Youtube-Playlisten<br />

in Seiten einzubetten.<br />

Das in Java geschriebene<br />

Ametys gibt es seit 2003. 20<br />

Personen entwickeln es und<br />

die Homepage spricht von<br />

über 30 000 Websites, die es<br />

nutzen. Es richtet sich an große<br />

Firmen, Bildungseinrichtungen<br />

und Behörden. Das<br />

CMS steht unter Apache-2.0-<br />

Lizenz, setzt Java 6 voraus<br />

und genügt dem Content-Repository-Standard<br />

JCR/JSR-<br />

170 (Jackrabbit). n<br />

Skyline und Oculus helfen beim Monitoring<br />

Zwei neue Softwarepakete<br />

sollen zusammen mehr Sinn<br />

in ausufernde Datenmengen<br />

bringen, die beim Monitoring<br />

anfallen. Die Firma Etsy hat<br />

diese unter dem Namen Loupe<br />

veröffentlicht.<br />

Etsy, eigentlich eine Community-Site<br />

für DIY-Projekte, erhebt<br />

etwa 250 000 Werte, um<br />

die eigene Infrastruktur zu<br />

überwachen. Weil sich diese<br />

Menge nicht mehr visuell anhand<br />

von Diagrammen überprüfen<br />

lässt, hat Etsy eigene<br />

Software dafür geschrieben,<br />

um die Monitoringdaten maschinell<br />

auszuwerten. Eine<br />

Komponente mit dem Namen<br />

Skyline [http://​github.​com/​<br />

​etsy/​skyline] spürt Anomalien<br />

in den Messdaten auf, eine<br />

weitere namens Oculus [http://​<br />

​github.​com/​etsy/​oculus] versucht<br />

Korrelationen dazu in anderen<br />

Datenreihen zu finden.<br />

Bei Oculus handelt es sich um<br />

eine relativ komplexe Webanwendung,<br />

die auf Ruby Sinatra<br />

und Java basiert und laut Etsy<br />

mindestens einen Rechner mit<br />

8 GByte RAM braucht.<br />

Die Installation der beiden<br />

Programme erweist sich allerdings<br />

als recht umständlich,<br />

da vom Admin eine ganze Reihe<br />

von Paketen von Hand zu<br />

installieren ist, zum Beispiel<br />

Python-Module wie Numpy<br />

und Scipy.<br />

n<br />

Open-Source-Tage in München<br />

Auf den Münchner Open-<br />

Source-Tagen trafen sich Mitte<br />

Juni zahlreiche Experten<br />

und Anwender aus mehreren<br />

deutschen Städten und Institutionen<br />

zum Erfahrungsaustausch<br />

rund um <strong>Linux</strong>, Open<br />

Source und freie Software.<br />

Dabei gab es lobende Worte<br />

vom OB und viel Neues rund<br />

um Groupware.<br />

Als Schirmherr begrüßte<br />

Münchens Oberbürgermeister<br />

Ude zahlreiche Experten<br />

aus Österreich, der Schweiz,<br />

Italien und Deutschland.<br />

Diese hörten zwei Tage lang<br />

Vorträgen über Open-Source-<br />

Philosophie, ‐Technik und<br />

‐Anwendung im Behördenumfeld<br />

zu und gaben Einblicke<br />

in ihre Arbeit und eigene<br />

Erfahrungen.<br />

So stellte Thomas Uhl (OSBA)<br />

die neuesten Entwicklungen<br />

rund um deutsche Cloud-Produkte<br />

und ‐APIs vor, während<br />

Markus Feilner vom <strong>Linux</strong>-<br />

<strong>Magazin</strong> den Zuhörern einen<br />

Überblick aktueller Open-<br />

Source-Groupware-Produkte<br />

verschaffte.<br />

Das Thema Groupware betrifft<br />

aktuell auch die Stadt München:<br />

Die laufende Ausschreibung<br />

des Limux-Projekts für<br />

eine neue Groupware betritt<br />

gerade Phase 2, in der man<br />

die Produkte verschiedener<br />

Anbieter evaluiert, während<br />

es in Phase 1 eher um die<br />

Bewerber selbst ging. Frühestens<br />

bis November sei mit einer<br />

Entscheidung zu rechnen,<br />

berichten Insider.<br />

Auch für verlassene Microsoft-<br />

Nutzer will die Stadt sorgen:<br />

Pünktlich zum Support-Ende<br />

für Windows XP im Juni 2014<br />

will München seinen Einwohnern<br />

kostenlose Ubuntu-DVDs<br />

zur Verfügung stellen. n


Chromebook HP Pavilion 14 in Deutschland erhältlich<br />

Notebooks mit Googles <strong>Linux</strong>-Betriebssystem<br />

Chrome<br />

OS heißen Chromebooks. HP<br />

verkauft nun sein erstes Gerät<br />

dieser Klasse zum moderaten<br />

Preis auch in Mitteleuropa.<br />

Dass HP ein 14-Zoll-Notebook<br />

mit Googles Betriebssystem<br />

baut, ist bereits seit April<br />

2012 bekannt. Nun ist das HP<br />

Pavilion 14 auch im hiesigen<br />

HP-Shop sowie bei Cyberport,<br />

Amazon, Notebooksbilliger<br />

und Saturn zu haben.<br />

Die einzige zurzeit lieferbare<br />

Ausstattungsvariante schlägt<br />

mit rund 300 Euro zu Buche<br />

und bietet 4 GByte DDR3-<br />

RAM, eine 16 GByte große<br />

SSD, die Webcam HP True<br />

Vision HD und einen vierzelligen<br />

Lithium-Ionen-Akku. In<br />

dem 34,7 mal 23,8 mal 2,1<br />

Zentimeter großen und 1,8 Kilo<br />

schweren Gerät tun ein mit<br />

1,1 GHz getakteter Dualcore-<br />

Celeron 847 und ein Grafikchip<br />

von Intel Dienst.<br />

Für Anschluss sorgen eine<br />

Ethernetbuchse (100-MBit/​s),<br />

802.11a/​b/​g/​n-WLAN, Bluetooth,<br />

ein Leser für MMCund<br />

SD-Karten, drei USB-2.0-<br />

Buchsen und ein HDM-Interface.<br />

Vor der Tastatur hat HP<br />

zudem ein Multitouch-fähiges<br />

Pad platziert.<br />

Hewlett-Packard bereichert<br />

das nicht besonders reichhaltige<br />

Angebot an Chromebooks<br />

hierzulande um ein günstiges<br />

Gerät, bei dessen Ausstattung<br />

am ehesten das große Display<br />

auffällt. Bislang scheinen die<br />

bisherigen Chromebook-Hersteller<br />

– neben HP vor allem<br />

Samsung, Acer und Google –<br />

mit den weltweiten Verkaufszahlen<br />

der Geräteklasse eher<br />

unzufrieden zu sein. n<br />

HP verkauft sein erstes Chromebook nun auch in Mitteleuropa.<br />

Quelle: www.hp.com<br />

News 09/2013<br />

Aktuell<br />

www.linux-magazin.de<br />

9


Aktuell<br />

www.linux-magazin.de News 09/2013<br />

10<br />

Kurznachrichten<br />

Kscreen 1.0: Ein KDE-Programm zum Verwalten mehrerer Anzeigegeräte.<br />

Das Tool steuert an den Rechner angeschlossene Monitore, Fernsehgeräte<br />

und Projektoren. Neu: Mit der Veröffentlichung von Version 1.0 gilt Kscreen<br />

offiziell als stabil. Der Anwender kann Anzeigegeräte klonen, an- und<br />

ausschalten, die Auflösung verändern, sie drehen und das primäre Display<br />

mit dem KDE-Menü festlegen. Kscreen läuft im Hintergrund, erkennt neu<br />

angesteckte Anzeigegeräte und lässt sich mit den Display-Funktionstasten<br />

eines Laptops steuern. Lizenz: GPLv2 und LGPLv2.1 [http://​quickgit.​kde.​<br />

​org/​?​p=kscreen.​git]<br />

Doudou <strong>Linux</strong> 2.0: Eine Debian-basierte Live-DVD für Kinder ab zwei Jahren.<br />

Neu: Die Entwickler haben 30 kindgerechte Anwendungen wie Cheese<br />

und Mypaint hinzugefügt und das System in über 40 Sprachen lokalisiert.<br />

Die Startseite der Desktopumgebung zeigt nun größere Icons. Klickt<br />

ein Kind mehrmals auf ein Symbol, sorgt Unique-Launch dafür, dass ein<br />

Programm nur einmal läuft. Als Browser dient Gnomes Epiphany, als Standardsuchmaschine<br />

das datenschutzgerechte Duck Duck Go. Lizenz: GPLv2<br />

und andere [http://www.doudoulinux.org/web/english/index.html]<br />

Jubula für Eclipse 7.1: Das freie Testtool für automatisierte funktionale<br />

GUI-Tests stammt von der Bredex GmbH und lässt sich in Eclipse integrieren.<br />

Neu: Das Werkzeug testet nun auch Eclipse-e4-Anwendungen und kann<br />

die Suche in einem Projekt auf bestimmte Teile beschränken. Der Testbericht<br />

im HTML-Format dokumentiert neuerdings Fehler in Form von Screenshots.<br />

Daneben ist die Properties-Ansicht kompakter gestaltet – nicht<br />

bearbeitbare Eigenschaften erscheinen grau markiert. Lizenz: Freeware ​<br />

[http://​www.​eclipse.​org/​jubula/]<br />

Open Slides 1.4: Der Versammlungsmanager verwaltet Teilnehmer, stellt<br />

Inhalte, aber auch Anträge dar (etwa Präsentationen, Tagesordnungen und<br />

Agendas), prozessiert Abstimmungen und präsentiert deren Ergebnisse.<br />

Neu: Diese Version integriert eine Zeitplanung, QR-Codes, eine interaktive<br />

Rednerliste sowie eine generalüberholte Antragsverwaltung, die Sachgebiete<br />

berücksichtigt und einen HTML-Editor einschließt. Zudem ist das<br />

deutsche Handbuch überarbeitet und Django auf Version 1.5 aktualisiert.<br />

Lizenz: GPLv2 [http://​openslides.​org]<br />

Clonezilla Live 2.1.2-20: Ein Admintool für Backups und Masseninstallationen.<br />

Neu: Das Betriebssystem der Live-Distribution erhielt ein Upgrade<br />

auf Debian Sid, der neue Kernel trägt die Versionsnummer 3.9.8-1. Das<br />

Programm Partclone verwendet in Version 0.2.66.drbl1 einen verbesserten<br />

Diskcache, DRBL (Diskless Remote Boot in <strong>Linux</strong>) wurde auf Version<br />

2.4.18-drbl1 aktualisiert und Clonezilla auf 3.5.1-drbl1. Das Tool kann mit<br />

den Optionen »‐k1« und »‐icds« auch größere Partitionen in kleinere<br />

klonen, sofern die Zahl der benutzten Datenblöcke das zulässt. Als neue<br />

Programme sind »lziprecover«, »nwipe« und »efibootmgr« an Bord. ​<br />

Lizenz: GPLv2 [http://​www.​clonezilla.​org/​downloads.​php]<br />

Rust 0.7: Parallelisierbare Programmiersprache von Mozilla. Neu: Diese<br />

Version bringt Verbesserung an der Standardbibliothek mit. Der Borrow<br />

Checker erleichtert die Arbeit mit geborgten Pointern, ein neues Iterator-<br />

Modul »std::iterator« soll die bisherigen Iteratoren ersetzen. Rust soll<br />

künftig externe Iteratoren nach Java-Art verwenden. Nicht zuletzt setzt<br />

der Entwickler nun die »clone«-Methode ein, tiefes Kopieren funktioniert<br />

über »deep_clone«. Lizenz: GPLv2 [http://​www.​rust‐lang.​org]<br />

FSFE und Harald Welte setzen GPL durch<br />

Sniffer-Update<br />

Die Free Software Foundation<br />

Europe (FSFE) und der<br />

Kernelentwickler Harald Welte<br />

haben ein weiteres Unternehmen<br />

der GPL-Verletzung<br />

überführt. Die Firma Fantec<br />

hatte keinen Quelltext für die<br />

<strong>Linux</strong>-Firmware ihres Mediaplayers<br />

Fantec 3DFHDL zur<br />

Verfügung gestellt.<br />

Welte war im Mai 2012 während<br />

des „Hacking for Compliance<br />

Workshop“ der FSFE<br />

auf die Lizenzverletzung gestoßen.<br />

Nach dem gescheiterten<br />

Versuch, das Problem<br />

außergerichtlich zu lösen, zog<br />

Welte vor Gericht. Mit seiner<br />

Initiative GPL-Violations.org<br />

hat er bereits viele ähnliche<br />

Fälle gewonnen.<br />

Als Urheberrechtsinhaber am<br />

Netfilter-/​IPtables-Code im<br />

Kernel konnte er auch diesmal<br />

die Beachtung der GPL<br />

durchsetzen. Das Landgericht<br />

Hamburg hat entschieden,<br />

dass Fantec die Einhaltung<br />

der Lizenz sicherstellen, Welte<br />

Auskunft über die Vertriebswege<br />

geben sowie eine Strafe<br />

zahlen muss.<br />

Das Urteil ist beim Institut<br />

für Rechtsfragen der Freien<br />

und Open Source Software<br />

(IFROSS) als PDF-Dokument<br />

einzusehen. Die FSFE hat<br />

ein Howto für Unternehmen<br />

verfasst, die GPL-lizenzierte<br />

Software in ihren Produkten<br />

verwenden. Zudem bietet die<br />

Organisation besagte Compliance-Workshops<br />

an. n<br />

Im netzwerkfähigen Mediaplayer Fantec 3DFHDL steckt unter anderem Netfilter-/​IPtables-Code,<br />

der unter der GPL steht.<br />

Quelle: Fantec<br />

Junkie the Sniffer, ein Open-<br />

Source-Tool zur Echtzeit-Analyse<br />

von Netzwerkverkehr, ist<br />

in Version 2.5.0 zu haben. Sie<br />

bringt einen neuen Parser für<br />

TLS mit und bietet ähnlich<br />

wie SSLdump die Möglichkeit,<br />

es zu entschlüsseln.<br />

Ein Neuzugang unter den Protokollen<br />

ist das Skinny Call<br />

Control Protocol (SCCP) von<br />

Cisco. Ein Plugin namens<br />

Nettop zeigt à la Top eine Tabelle<br />

des aktuellen Traffic an.<br />

Standardmäßig sortiert Junkie<br />

nun den TCP-Traffic neu.<br />

Junkie dient auch dazu, komplexe<br />

Ereignisse im Netzwerk<br />

aufzuspüren. Die Entwickler<br />

ordnen ihr Tool zwischen<br />

Wire shark und Tcpdump ein.<br />

Die Software verwendet Libpcap<br />

zum Sniffen und lässt<br />

sich mit Guile skripten. Der<br />

Quelltext lagert im Github-<br />

Repository [https://​github.​com/​<br />

​securactive/​junkie].<br />

n


Liferea 1.10 mit Google-Import<br />

Der freie RSS-Feed-Reader<br />

Liferea [http://​lzone.​de/​liferea/]<br />

ist in der neuen stabilen Version<br />

1.10 erhältlich und bietet<br />

sich als Ersatz für den eingestellten<br />

Google Reader an.<br />

Die aktuelle Release besitzt<br />

zu diesem Zweck eine neue<br />

Option, um Google-Reader-<br />

Abonnements in lokale Feeds<br />

umzuwandeln.<br />

Daneben gibt es eine experimentelle<br />

Synchronisationsfunktion<br />

für den Abgleich mit<br />

The Old Reader. Die History<br />

erlaubt es, durch kürzlich gelesene<br />

Einträge zu navigieren.<br />

Ein einfaches Mediaplayer-<br />

Plugin liefert dem Anwender<br />

die Möglichkeit, Audio-Inhalte,<br />

die als Attachements von<br />

Feed-Beiträgen ankommen,<br />

direkt in der Reader-Oberfläche<br />

abzuspielen.<br />

Außerdem ermöglicht es ein<br />

neues Plugin, Passwörter im<br />

Gnome-Keyring zu speichern.<br />

Auch die Konformität mit dem<br />

Desktopstandard XDG soll höher<br />

sein. Die Standardansicht<br />

des GUI lässt sich nun über<br />

die Einstellungen festlegen,<br />

das Kontextmenü geht intelligenter<br />

mit Links um.<br />

Version 1.10 steht auf der<br />

Liferea-Webseite im GPLv2-<br />

lizenzierten Quellcode zum<br />

Download bereit, die Binärpakete<br />

der Distributionen sind<br />

noch in Arbeit. <br />

n<br />

Yum-Hauptentwickler Seth Vidal ist tot<br />

Red-Hat-Mitarbeiter und Yum-<br />

Hauptentwickler Seth Vidal<br />

kam Anfang Juli bei einem<br />

tragischen Verkehrsunfall<br />

ums Leben. Ein Autofahrer<br />

hatte den 36-Jährigen, der<br />

in Durham (North Carolina)<br />

mit dem Fahrrad unterwegs<br />

war, angefahren und tödlich<br />

verletzt. Vidal starb noch auf<br />

dem Weg ins Krankenhaus.<br />

Der 27-jährige Autofahrer<br />

war zunächst geflüchtet, hatte<br />

sich aber später der Polizei<br />

gestellt.<br />

Freunde und Kollegen aus<br />

aller Welt trauern um den<br />

Entwickler, der sich mit dem<br />

Paketmanager Yum einen<br />

Namen gemacht hat, der auf<br />

RPM-basierten Systemen dabei<br />

hilft, Software einfach zu<br />

verwalten. Vidal hatte den<br />

Updater Yup von Yellow Dog<br />

<strong>Linux</strong> seinerzeit deutlich beschleunigt,<br />

indem er ihn nur<br />

noch die Kopfzeilen von Paketen<br />

herunterladen ließ und<br />

das Projekt dann als Yum (Yellowdog<br />

Updater, modified)<br />

veröffentlicht.<br />

Neben Yum arbeitete Vidal an<br />

mehreren Stellen im Fedoraund<br />

im Centos-Projekt mit.<br />

Zudem brachte er laut Aussage<br />

der Rothüte, die sogar die<br />

Firmenflagge auf Halbmast<br />

setzten, die Infrastruktur des<br />

Fedora-Projekts voran. (jk/<br />

kki/mfe/mhu/ofr) n<br />

News 09/2013<br />

Aktuell<br />

www.linux-magazin.de<br />

11


Aktuell<br />

www.linux-magazin.de Zahlen & Trends 09/2013<br />

12<br />

Zahlen & Trends<br />

Alternative Informationssysteme für Bochum und Moers<br />

Die Organisationen Open Ruhr<br />

und Open Knowledge Foundation<br />

Deutschland (OKF DE)<br />

haben alternative Rats-Informationssysteme<br />

für die Städte<br />

Bochum und Moers ins Web<br />

gestellt. Die Websites [http://​<br />

​bochum.​ris.​openruhr.​de] und<br />

[http://​moers.​ris.​openruhr.​de] beruhen<br />

auf den frei verfügbaren<br />

Daten der offiziellen Rats-<br />

Informationssysteme (RIS)<br />

beider Städte.<br />

Die Bürger finden hier etwa<br />

Unterlagen aus den Sitzungen<br />

der Stadträte und Ausschüsse<br />

sowie Informationen aus den<br />

Stadtverwaltungen, etwa Anträge<br />

und Anfragen. Zusätzlich<br />

sind diese mit Geodaten<br />

verknüpft, sodass der Besucher<br />

Vorgänge in seiner Nachbarschaft<br />

klar erkennt.<br />

Das alternative Angebot hat<br />

offenbar den Segen der Stadtväter,<br />

zumindest Moers’ Bürgermeister<br />

Norbert Ballhaus<br />

begrüßt die Entwicklung: „Wir<br />

freuen uns, dass Open Ruhr<br />

die Open-Data-Bemühungen<br />

unserer Stadt aufnimmt und<br />

mit unseren Daten neue faszinierende<br />

Dienste entwickelt.“<br />

Daniel Dietrich, Sprecher des<br />

OKF Deutschland e.V., meint:<br />

„Daten, die als offene Daten<br />

unter freien Lizenzen angeboten<br />

werden, schaffen einen<br />

guten Nährboden für mehr<br />

Demokratie und Mitbestimmung,<br />

aber auch für innovative<br />

Wirtschaft.“<br />

Die neuen Plattformen sind<br />

Weiterentwicklungen des Projekts<br />

[http://​offeneskoeln.​de]. Die<br />

RIS-Anwendungen beruhen<br />

auf Open-Source-Code, der<br />

auf Github erhältlich ist. Sie<br />

bieten zudem ein API, über<br />

das interessierte Entwickler<br />

Daten für eigene Anwendungen<br />

beziehen. Die Server für<br />

die Informationssysteme stiftet<br />

der Schulungsanbieter <strong>Linux</strong>hotel,<br />

der ebenfalls in der<br />

Region ansässig ist. n<br />

Die alternativen Rats-Informationssysteme für Bochum und Moers erlauben<br />

auch die geografische Suche zu Beschlüssen und Informationen.<br />

Intels Rapid Start für Kernel 3.11?<br />

Europython-Konferenz kommt nach Berlin<br />

In dem Blogpost [http://​mjg59.​<br />

​dreamwidth.​org/​26022.​html] erläutert<br />

Entwickler Matthew<br />

Garrett, was sein Patch für<br />

Intels Schnell-Boot-Technologie<br />

Rapid Start, das er für<br />

Kernel 3.11 eingereicht hat, im<br />

Detail macht. Es fügt demnach<br />

ein Sys-FS-Interface hinzu, das<br />

sich um die korrekten ACPI-<br />

Einstellungen kümmert, ohne<br />

die Rapid Start den Rechner<br />

nicht erfolgreich weckt. Allerdings,<br />

so Garrett, gebe es für<br />

<strong>Linux</strong>-Systeme derzeit noch<br />

keine Möglichkeit, zu erkennen,<br />

ob die Hardware Rapid<br />

Start unterstützt – es sei denn,<br />

eine dafür vorbereitete Partition<br />

existiert bereits.<br />

Schickt man einen PC, der Rapid<br />

Start beherrscht, schlafen,<br />

wacht er, vom Benutzer unbemerkt<br />

und dank eines Timeout,<br />

nur wenig später wieder<br />

auf, um die vorgehaltenen<br />

Daten zum Beispiel auf eine<br />

SSD zu verfrachten. Das spart<br />

Energie wie beim Suspend-to-<br />

Disk, funktioniert beim Aufwachen<br />

aber fast so schnell<br />

wie Suspend-to-RAM. n<br />

Die europäische Python-Konferenz<br />

Europython [https://​<br />

​ep2013.​europython.​eu] soll in<br />

den Jahren 2014 und 2015 in<br />

Berlin stattfinden. Das hat die<br />

Europython Society in Florenz<br />

mitgeteilt, wo die Veranstaltung<br />

2013 residierte.<br />

Dort versammelten sich Anfang<br />

Juli ungefähr 900 Teilnehmer,<br />

um die 87 Vorträge,<br />

14 Tutorials und acht Keynotes<br />

in sieben parallelen<br />

Tracks zu besuchen. Zu den<br />

Rednern gehörten der Google-<br />

Mitarbeiter und Python-Buchautor<br />

Alex Martelli sowie der<br />

Python-Core-Developer Larry<br />

Hastings. Laut den Organisatoren<br />

handelt es sich um die<br />

größte europäische Python-<br />

Konferenz.<br />

In Berlin wird die Europython<br />

ab 2014 von der Berliner Python<br />

User Group, der Django<br />

User Group Berlin, den Pyladies<br />

Berlin und Newthinking<br />

Communications organisiert.<br />

Als Veranstalter fungiert der<br />

Python Software Verband e.V.<br />

in Kooperation mit der Europython<br />

Society.<br />

n


Top 500: China hat den schnellsten Supercomputer<br />

Im Rahmen der International<br />

Supercomputing Conference<br />

in Leipzig (ISC 13) wurde die<br />

mittlerweile einundvierzigste<br />

Top-500-Liste [http://​www.​<br />

​top500.​org] vorgestellt. Der<br />

neue „Schnellste Rechner der<br />

Welt“ ist Tianhe-2, ein von<br />

Chinas National University of<br />

Defense Technology (NUDT)<br />

entwickelter Supercomputer,<br />

der eine Spitzenrechenleistung<br />

von 33,86 Petaflop/​s im<br />

Linpack-Benchmark bewältigt.<br />

Der Rechner verfügt über<br />

16 000 Knoten mit jeweils<br />

zwei Xeon-Ivy-Bridge-Prozessoren<br />

sowie drei Xeon-Phi-<br />

Prozessoren, die sich insgesamt<br />

zu drei Millionen Kernen<br />

summieren.<br />

Der neue Spitzenreiter nutzt,<br />

wie 54 andere Systeme der<br />

Top-500-Liste, zusätzliche Beschleuniger<br />

wie Co-Prozessoren<br />

oder GPUs, deren Anteil<br />

an der Gesamtperformance<br />

weiter stark steigt.<br />

Auf den zweiten Rang der<br />

Top-500-Liste rutschte Titan<br />

ab, ein XK7-System von Cray,<br />

das das U.S. Department of<br />

Energy (DOE) betreibt. Es erreicht<br />

17,59 Petaflop/​s und<br />

gehört damit zu den energieeffizientesten<br />

Supercomputern<br />

mit einem Energieverbrauch<br />

von „nur“ 8,21 Megawatt,<br />

was 2143 MFlops pro<br />

Watt entspricht. Den Bronze-<br />

Rang hält Sequoia, ein IBM-<br />

Bluegene/​Q-Rechner des Lawrence<br />

Livermore National Laboratory<br />

(USA) mit einer vergleichbar<br />

günstigen Energiebilanz<br />

von 2031 MFlops pro<br />

Watt. Dieses System rechnet<br />

mit 17,17 Petaflop/​s.<br />

Der schnellste Rechner Europas<br />

und die Nr. 7 in der Welt<br />

ist ein weiterer IBM-Bluegene/​<br />

Q, der es auf 5,01 PFlops/​s<br />

bringt. Dieses beliebte Rechnermodell<br />

hält außerdem die<br />

Plätze fünf und acht.<br />

Mit Blick auf die Länderwertung<br />

hat China nun Japan,<br />

Frankreich und Deutschland<br />

überholt und rangiert hinter<br />

den USA auf Platz 2. Aufgrund<br />

der neuesten Daten erwarten<br />

Experten nun etwa 2019 den<br />

ersten Exaflop-Rechner. n<br />

Red Hat wächst<br />

Auch im ersten Quartal 2013<br />

kann Red Hat wieder zahlenmäßige<br />

Erfolge vermelden.<br />

Der Umsatz des Konzerns<br />

aus Raleigh stieg weiter, das<br />

Geschäftsvolumen wuchs um<br />

knapp ein Siebtel. Mit 363<br />

Millionen Dollar machte Red<br />

Hat knapp 15 Prozent mehr<br />

Umsatz als im Quartal zuvor.<br />

Dabei entfallen allein 316<br />

Millionen auf die Software-<br />

Subskriptionen, die um 16<br />

Prozent anwuchsen.<br />

Der Nettogewinn beträgt mit<br />

40 Millionen Dollar gut ein<br />

Zehntel mehr als im Vorjahresquartal.<br />

Der „Operating Cash<br />

Flow“ lag bei 142 Millionen<br />

Dollar und legte so ebenfalls<br />

um 14 Prozent zu. n<br />

Zahlen & Trends 09/2013<br />

Aktuell<br />

www.linux-magazin.de<br />

13<br />

Anzeige<br />

Petition: <strong>Linux</strong>-Client für Google Drive<br />

Bis zu 15 GByte kostenlosen<br />

Onlinespeicher bietet Google<br />

mit Google Drive seinen Documents-,<br />

Mail- und Foto-<br />

Kunden an – doch <strong>Linux</strong>-<br />

Anwender bleiben dabei gegewärtig<br />

noch außen vor, weil<br />

bislang ein Client für das freie<br />

Betriebssystem fehlt. Das soll<br />

sich ändern, fordern die Initiatoren<br />

einer Onlinepetition.<br />

Diese haben sie auf Change.<br />

org veröffentlicht, einer Webseite,<br />

auf der sich annähernd<br />

beliebige Petitionen erstellen<br />

lassen.<br />

Die an Google gerichtete Aufforderung<br />

hat nun in den letzten<br />

Wochen deutlich an Fahrt<br />

aufgenommen: Unter dem Titel<br />

„Google: Create A Native<br />

<strong>Linux</strong> Google Drive Application“<br />

hatten bis zum Redaktionsschluss<br />

über 17 500 <strong>Linux</strong>-Anwender<br />

ihre Stimmen<br />

abgegeben. Sie wollen den<br />

Suchmaschinenkonzern dazu<br />

überreden, nach Windows, OS<br />

X und verschiedenen Mobil-<br />

Betriebssystemen nun auch<br />

den <strong>Linux</strong>-Desktop mit einem<br />

nativen Client für den Onlinespeicher<br />

zu versorgen.<br />

Zwar gab es bereits vor über<br />

einem Jahr die Ankündigung<br />

in einem News-Portal für<br />

Ubuntu [http://​www.​omgubuntu.​<br />

​co.​uk/​2012/​04/], nach der ein<br />

<strong>Linux</strong>-Client in Entwicklung<br />

sei, doch offensichtlich stocken<br />

die Fortschritte bei diesem<br />

Projekt – Neuigkeiten<br />

dazu sind rar.<br />

Bislang stehen dem <strong>Linux</strong>-<br />

Anwender auch ohne nativen<br />

Google-Client Tools wie<br />

Ubuntu One und Dropbox zur<br />

Verfügung, die aber nur 5 respektive<br />

2 GByte kostenlosen<br />

Speicherplatz anbieten. Alternativ<br />

greifen sie über Webdav<br />

auf Googles Dienste zu. n


Aktuell<br />

www.linux-magazin.de Zahlen & Trends 09/2013<br />

14<br />

Maker-Party 2013: Kreativ im Web<br />

Mozilla hat mit einigen Kooperationspartnern<br />

für die<br />

Zeit vom 15. Juni bis zum 15.<br />

September eine globale Maker-Party<br />

ausgerufen. Sie soll<br />

dazu inspirieren, kreativ mit<br />

dem WWW und seinen Technologien<br />

umzugehen. Dazu<br />

reiche bereits eine Küchenparty<br />

in der Familie, schlagen<br />

die Organisatoren vor.<br />

Mit den Web-basierten Mozilla-Tools<br />

[https://​webmaker.​<br />

​org/​tools] wie dem Webseiteneditor<br />

Thimble und dem<br />

Video-Editor Popcorn könne<br />

man einfach und fast ohne<br />

Vorwissen produktiv werden.<br />

Wer dazu ein wenig Anregung<br />

brauche, solle bestehende Inhalte<br />

wiederverwenden oder<br />

zu Vorlagen greifen.<br />

Wer hingegen ein Projekt mit<br />

mehreren Leuten aufziehen<br />

möchte, kann einen Hack<br />

Jam an der Schule oder einem<br />

anderen öffentlichen Ort<br />

organisieren oder zu einem<br />

dafür vorgesehenen Treffen<br />

gehen, einem so genannten<br />

Hive Pop-up. Im deutschsprachigen<br />

Raum ist bislang nur<br />

ein Pop-up angekündigt – für<br />

den 11. September in Berlin<br />

[https://​webmaker.​org/​events/​69].<br />

Die Webmaker-Website, die<br />

Materialien, Galerien und Veranstaltungskalender<br />

anbietet,<br />

dient als zentrale Anlaufstelle<br />

für Interessierte. <br />

n<br />

Tizen App Challenge zahlt 4 Millionen aus<br />

Anmelden, App erstellen und<br />

registrieren – wer diese drei<br />

Schritte auf der Tizen-Webseite<br />

mitmacht, kann bis zum<br />

1. November 200 000 US-<br />

Dollar pro App von Intel und<br />

Samsung einstreichen.<br />

Die „Grand Price“ genannten<br />

Gewinne in der Rubrik<br />

„Games“ sind mit 200 000<br />

Dollar dotiert, in der „Non-<br />

Games-Category“ gibt es immerhin<br />

noch 120 000 Dollar<br />

für die beste App. Insgesamt<br />

geben Intel und Samsung 4<br />

Millionen Dollar für neue<br />

Apps aus. Dabei erhalten bis<br />

zu drei Programme pro Kategorie<br />

Preisgelder, teilen die<br />

Tizen-Entwickler auf [https://​<br />

​developer.​tizen.​org/​contests/] mit.<br />

Dort finden Programmierer<br />

auch die Bedingungen des<br />

Wettbewerbs, der bereits seit<br />

dem 9. Juli läuft.<br />

Das <strong>Linux</strong>-basierte Smartphone-Betriebssystem<br />

Tizen<br />

soll eine sichere Alternative<br />

zu I-OS und Android werden.<br />

Intel und Samsung hatten<br />

erst kürzlich einen besseren<br />

Support durch Provider wie<br />

Orange und Hersteller wie<br />

Huawei angekündigt und die<br />

Tizen Association gegründet.<br />

Das neue Betriebssystem soll<br />

unter anderem im Multimediabereich<br />

Einzug halten,<br />

insbesondere im In-Vehicle-<br />

Infotainment (IVI). n<br />

Supermuc misst besser<br />

Auf Mozillas Webmaker-Webseite findet sich neuerdings eine eigene Abteilung<br />

für die Maker-Party, die diesen Sommer stattfindet.<br />

Serverabsatz sinkt, doch Dell profitiert<br />

Der Umsatz mit Serverhardware<br />

ist in der Region EMEA<br />

(Europe, Middle-East, Africa)<br />

im ersten Quartal 2013 im Vergleich<br />

zum Vorjahr um 10,5<br />

Prozent zurückgegangen, berichten<br />

die Marktforscher von<br />

IDC. Die Anzahl der verkauften<br />

Einheiten fiel schwächer,<br />

um 5,7 Prozent. Absolut betrug<br />

der Umsatz im Q1 2013<br />

2,8 Milliarden Euro. Damit hat<br />

IDC für das sechste Quartal<br />

in Folge Einbußen im Markt<br />

EMEA festgestellt.<br />

Doch es gibt Unterschiede im<br />

Abwärtstrend. So büßte die<br />

x86-Plattform mit 1,5 Prozent<br />

deutlich weniger ein als andere<br />

Hardware-Architekturen,<br />

deren Absatz um dramatische<br />

34,8 Prozent zurückging. Die<br />

Hersteller IBM und Hewlett-<br />

Packard erlebten mit 23,5<br />

und 13,5 Prozent deutliche<br />

Umsatzrückgänge, Dell dagegen<br />

konnte seinen Umsatz um<br />

12,6 Prozent erhöhen. Weitere<br />

Zahlen sind auf der Webseite<br />

von IDC nachzulesen. n<br />

Der Supercomputer Supermuc<br />

[http://​www.​lrz.​de], der in Garching<br />

bei München zu Hause<br />

ist, misst als einer der weltweit<br />

ersten Rechner seiner Art<br />

den eigenen Energieverbrauch<br />

besonders genau.<br />

Die bei den Organisatoren der<br />

Green-500-Liste eingereichten<br />

Messwerte berücksichtigen<br />

bestimmte Qualitätsmerkmale<br />

der vorgenommenen Messungen,<br />

zu denen unter anderem<br />

die Größe des ausgemessenen<br />

Teils der Maschine, die Granularität,<br />

die Dauer oder die<br />

Anzahl der in die Messung<br />

eingegangenen Teilsysteme<br />

gehören.<br />

Die Qualitätsanforderungen<br />

an die Messungen werden dabei<br />

in drei Stufen eingeteilt:<br />

Level 1 entspricht dem bisherigen<br />

Standard der Green-500-<br />

Liste. Level 2 geht darüber<br />

hinaus, lässt sich jedoch mit<br />

vertretbarem Aufwand von<br />

den meisten Rechenzentren<br />

erfüllen. Level 3 steht hingegen<br />

für die derzeit beste Methodik,<br />

um die Leistungsaufnahme<br />

von Supercomputern<br />

zu messen. Supermuc gehört<br />

zu nur drei Supercomputern<br />

weltweit, die Messergebnisse<br />

nach Level 3 liefern.<br />

„Die Leistungsaufnahme von<br />

HPC-Systemen und damit<br />

auch die Betriebskosten des<br />

Rechenzentrums steigen“,<br />

erklärt Natalie Bates, Leiterin<br />

der Energy Efficient HPC<br />

Working Group. Diese hat die<br />

neuen Messrichtlinien erstellt<br />

und die Level 1 bis 3 definiert.<br />

„Sie können nur verbessern,<br />

was sie auch messen können“,<br />

fährt Bates fort, „und<br />

die Fähigkeit, die Leistungsund<br />

Energieaufnahme zu<br />

messen, wird künftige Verbesserungen<br />

der Energieeffizienz<br />

beim Höchstleistungsrechnen<br />

beschleunigen.“<br />

n


Doping für Libre Office<br />

Wie die Document Foundation,<br />

die Stiftung hinter Libre<br />

Office, ankündigt, wird auch<br />

der Chiphersteller AMD künftig<br />

in ihrem Advisory Board<br />

sitzen. Damit reiht sich die<br />

Firma in den Reigen anderer<br />

Branchenschwergewichte wie<br />

Google und Intel ein.<br />

AMD verspricht sich von dem<br />

Schritt laut Manju Hegde,<br />

dem Verantwortlichen für<br />

heterogene Lösungen, neue<br />

Einsatzmöglichkeiten für die<br />

hauseigenen GPUs und APUs.<br />

Vor allem für Nutzer von Tabellenkalkulationen<br />

– und damit<br />

vornehmlich für Business-<br />

Kunden – will man die Chips<br />

optimaler nutzen.<br />

Auch Michael Meeks, Vorstandsmitglied<br />

der Document<br />

Foundation, erhofft sich vom<br />

neuen Board-Mitglied Impulse<br />

und möchte die Performanceund<br />

Parallelisierungsmöglichkeiten<br />

der aktuellen und<br />

künftigen AMD-Chips gern für<br />

die Libre-Office-Nutzer optimieren.<br />

Dabei hat man offenbar die<br />

nächste Generation von AMD-<br />

Produkten im Auge, die auf<br />

der Heterogeneous System Architecture<br />

(HSA) basieren. Die<br />

Technologie soll dafür sorgen,<br />

dass eine Software ihre Tasks<br />

abhängig vom Bedarf flexibel<br />

auf die CPUs, GPUs oder andere<br />

Prozessoren verteilt. n<br />

Silberne Himbeere für Eben Upton<br />

Eben Upton erhält in Großbritannien<br />

eine Silbermedaille<br />

für die Gründung der Raspberry<br />

Pi Foundation [http://​<br />

​www.​raspberrypi.​org]. Sein Minicomputer<br />

sollte an Schulen<br />

im Informatikunterricht zum<br />

Einsatz kommen. Upton baute<br />

den Prototyp, arbeitete als Co-<br />

Designer und entwickelte die<br />

offene Architektur.<br />

Die Royal Academy of Engineering<br />

[http://​www.​raeng.​org.​<br />

​uk] zeichnet besonders erfolgreiche<br />

Unternehmer aus, die<br />

das Ingenieurswesen in Großbritannien<br />

fördern. Auf ihren<br />

Seiten hebt sie hervor, dass<br />

das Model B des Raspberry<br />

Pi bereits wenige Minuten<br />

nach dem Marktstart ausverkauft<br />

gewesen sei, mit über<br />

100 000 Vorbestellungen am<br />

ersten Tag. Bislang seien über<br />

1,3 Millionen Einheiten verkauft<br />

worden.<br />

n<br />

Quelle: Flickr, jimkillock, CC-BY-SA-2.0<br />

Eben Upton, Vater des Raspberry Pi, auf dem Edinburgh Turing Festival.


Aktuell<br />

www.linux-magazin.de Zahlen & Trends 09/2013<br />

16<br />

Berlin: „Keine Ahnung von offenen Standards“<br />

Der Grünen-Politiker Thomas<br />

Birk aus Berlin bemängelt,<br />

dass „der Senat bei der Migration<br />

zu Open-Source-Software<br />

seit 2005 auf Zeit spielt,<br />

Beschlüsse nicht umsetzt und<br />

keine IT-Strategie für das Land<br />

hat“.<br />

Als Sprecher für Verwaltungsmodernisierung<br />

in seiner<br />

Partei war Birk federführend<br />

beim Entwurf eines Fahrplans<br />

zur OSS-Migration, den<br />

die Berliner Regierung Mitte<br />

Juni ablehnte. „Das ist umso<br />

mehr schade, als die CDU<br />

2008 schon mal einen konkreten<br />

Zeit- und Kostenplan für<br />

eine schrittweise Umstellung<br />

Mimo: Französische Behörde verstärkt Document Foundation<br />

Mit der französischen Behörde<br />

Mimo (Mutualisation interministérielle<br />

pour une bureautique<br />

ouverte) wächst der<br />

Beirat der Document Foundation,<br />

der gemeinnützigen<br />

Stiftung hinter Libre Office,<br />

auf neun Mitglieder. Der interministerielle<br />

Pool, der sich<br />

für ein freies Office einsetzt,<br />

auf Open Source beschlossen<br />

hatte“, ärgert sich das Mitglied<br />

des Berliner Abgeordnetenhauses.<br />

Zwar habe der Senat in einem<br />

eigenen Änderungsantrag<br />

eine ganze Reihe Standards<br />

definiert, die hätten jedoch<br />

„nichts mit Open Source und<br />

freier Software zu tun gehabt“.<br />

Vor diesem Hintergrund reichten<br />

die Grünen nun einen eigenen<br />

Änderungsantrag nach,<br />

für den die Fraktion mit der<br />

Open Source Business Alliance<br />

(OSBA) zusammengearbeitet<br />

habe, um zu einer Definition<br />

für offene Standards zu<br />

gelangen. n<br />

repräsentiert rund 500 000<br />

Anwender in den Ministerien<br />

Frankreichs.<br />

Mimo setzt Libre Office ein,<br />

validiert dessen Versionen<br />

und passt sie an die IT-Infrastruktur<br />

der französischen<br />

Ministerien an. Dabei vergibt<br />

er Aufträge an Libre-Office-<br />

Entwickler und ‐Dienstleister.<br />

Thomas Birk von den Berliner Grünen<br />

ärgert sich über den Umgang der<br />

Berliner Regierung mit Open-Source-<br />

Software.<br />

Die persönliche Vertretung<br />

bei der Document Foundation<br />

übernimmt Laure Patas<br />

d’Illiers vom französischen<br />

Finanzministerium. Das Advisory<br />

Board der Foundation<br />

vertritt Organisationen, die<br />

die Stiftung finanziell oder auf<br />

andere Weise fördern, und berät<br />

den Vorstand.<br />

n<br />

EU-Kooperation<br />

Die deutsche Open Source<br />

Business Alliance (OSBA) und<br />

der französische Conseil National<br />

du Logiciel Libre (CNLL)<br />

wollen künftig stärker kooperieren,<br />

um ihre Interessen in<br />

der EU durchzusetzen.<br />

Die Kooperation sei auf dem<br />

IT-Summit vereinbart worden,<br />

der parallel zum <strong>Linux</strong>tag<br />

2013 stattfand. Der CNLL<br />

vereint elf regionale Open-<br />

Source-Organisationen unter<br />

einem Dach, die etwa 300 IT-<br />

Unternehmen vertreten.<br />

Das gemeinsame Ziel bestehe<br />

darin, stärker präsent zu sein,<br />

weil in der EU die strategischen<br />

IT-Entscheidungen fallen,<br />

kündigte die OSBA in einer<br />

Pressemitteilung an. Auch<br />

die Zusammenarbeit mit anderen<br />

europäischen Verbänden,<br />

die in diese Richtung gehen,<br />

wolle man ausbauen.<br />

Zu den Plänen gehört ein intensiverer<br />

Informationsaustausch,<br />

der am Ende in einen<br />

Forderungskatalog an die Politik<br />

münden soll. Basis sind<br />

die „zehn Vorschläge“ des<br />

CNLL sowie die Leitlinien der<br />

OSBA, die vor allem die öffentlichen<br />

Verwaltungen der<br />

Länder adressieren. n<br />

Neue Einrichtung soll Cookie-Regeln verbessern<br />

Das Logo des Cookie Clearing House<br />

des Center for Internet and Society<br />

der Stanford-Universität.<br />

Um Websurfer besser vor Beobachtungen<br />

durch Drittanbieter-Cookies<br />

zu schützen,<br />

haben Mozilla und Stanfords<br />

Center for Internet and Society<br />

(CIS) die Einrichtung<br />

Cookie Clearing House (CCH)<br />

gegründet. Sie soll sich darum<br />

kümmern, die Browser-Cookies<br />

von Drittanbietern nach<br />

einem transparenten Verfahren<br />

zu behandeln.<br />

Ein bestehendes Patch, das<br />

den Umgang mit Drittanbieter-Cookies<br />

regeln sollte, sei<br />

nicht in der Firefox-Beta gelandet,<br />

weil es False Positives<br />

und False Negatives geliefert<br />

habe. Das schreibt Mozillas<br />

CTO und Javascript-Erfinder<br />

Brendan Eich unter [https://​<br />

​brendaneich.​com/​2013/​06/].<br />

Zur Verbesserung schlägt er<br />

Black- und Whitelists vor, an<br />

denen das CCH – an dem sich<br />

auch der Browser-Hersteller<br />

Opera beteiligt – arbeiten<br />

solle. Daneben solle es für<br />

Zweifelsfälle der Cookie-Policy<br />

zuständig sein. Das Center for<br />

Internet and Society hatte der<br />

Open-Source-Jurist Lawrence<br />

Lessig im Jahr 2000 gegründet,<br />

es gehört zur Stanford<br />

Law School. (kki/mfe/mhu/<br />

jcb/Tim Schürmann) n


Aktuell<br />

www.linux-magazin.de Kernel-News 09/2013<br />

18<br />

Zacks Kernel-News<br />

<strong>Linux</strong> zwischen Security und Performance<br />

Linus Torvalds hat ein Patch an<br />

Al Viro geschickt, um bessere<br />

Performance aus dem Virtual<br />

Filesystem (VFS) des Kernels<br />

herauszuholen. Insbesondere<br />

geht es ihm darum, einige<br />

Sicherheitsprüfungen von SE<br />

<strong>Linux</strong> zu beschleunigen, indem<br />

er die benötigten Daten<br />

aus dem Sicherheitssystem in<br />

die Inode-Datenstruktur verlagert.<br />

Beim Nachschlagen von<br />

Dateipfaden könnte der Code<br />

so eine Pointer-Dereferenzierung<br />

einsparen.<br />

Das rief Casey Schaufler auf<br />

den Plan, der Smack [http://​<br />

​schaufler‐ca.​com], ein Kernelmodul<br />

für Mandatory Access<br />

Control (MAC), betreut. Er<br />

schreibt, in seiner Arbeit sei er<br />

gerade dabei, jene Dereferenzierung<br />

wieder einzuführen,<br />

die Linus einsparen möchte.<br />

Daneben erklärt er, ihm sei<br />

gar nicht bekannt gewesen,<br />

dass man die Daten in die Inode<br />

verlagern dürfe.<br />

Außerdem würde der Smack-<br />

Maintainer lieber Performance-Verbesserungen<br />

am<br />

generischen <strong>Linux</strong> Security<br />

Module (LSM) sehen als an<br />

einer bestimmten Lösung<br />

wie SE <strong>Linux</strong>. Das existiere<br />

schließlich, damit Linus „die<br />

ganzen furchtbaren Sachen<br />

nicht sehen muss, die wir<br />

Security-Leute anstellen“,<br />

schreibt er. Torvalds hält dagegen,<br />

SE <strong>Linux</strong> sei die einzige<br />

Security-Lösung, die annehmbare<br />

Performance biete.<br />

Daneben schimpft er: „Das<br />

letzte Mal, als ich Ubuntu<br />

probiert habe (die benützen<br />

noch App Armor, oder?) hat<br />

das »make modules_install ;<br />

make install« für den Kernel<br />

nicht funktioniert. Wenn die<br />

Ubuntu-Leute sich nicht um<br />

Sicherheit muss nicht kompliziert sein, schreibt das Smack-Projekt. Linus<br />

Torvalds dagegen hält Sicherheitssysteme für eine Performance-Bremse.<br />

Kernelentwickler scheren,<br />

werde ich mich auch nicht<br />

mit ihnen abgeben.“ Später<br />

steigerte sich Linus noch zu<br />

einer Tirade gegen die Security-Community:<br />

„Es wäre<br />

gut, wenn die Security-Leute<br />

endlich kapieren, dass Performance<br />

wichtig ist. Es nervt<br />

einfach, durch Sicherheitsfeatures<br />

50 Prozent Performance<br />

einzubüßen, wenn man einen<br />

Dateipfad nachschlägt.“<br />

Casey wandte ein, dass sich<br />

die Security-Community sehr<br />

wohl der Performance-Frage<br />

bewusst sei. „Wir werden<br />

mit Performance-Bedenken<br />

bombardiert“, schreibt er,<br />

„manchmal ist die Kritik ausgesprochen<br />

feindselig.“ Daraufhin<br />

zog sich Linus auf die<br />

technischen Aspekte der Diskussion<br />

zurück.<br />

Er schlägt vor, mehr Code<br />

aus den Sicherheitssystemen<br />

in das VFS zu migrieren. So<br />

ließen sich die meisten Fälle<br />

optimiert behandeln, nur<br />

bei Ausnahmen müsste das<br />

Dateisystem bei den Security-<br />

Komponenten nachfragen.<br />

Die meisten Fälle lassen sich<br />

laut Torvalds durch ein einziges<br />

Bit entscheiden, das signalisiert:<br />

„Diese Inode besitzt<br />

keine besonderen Zugriffsrechte<br />

außer den normalen<br />

Unix-Permissions.“ n<br />

Abgetaucht: Tarball-Releases und Patches<br />

Als Linus Torvalds im Juni<br />

Kernel 3.10-rc4 aus seinem<br />

Urlaub veröffentlichte, lieferte<br />

er keine Quelltext-Tarballs.<br />

Er hatte vergessen, vor der<br />

Abreise in das Taucherparadies<br />

Palau das Tool »kup«, die<br />

benötigten Perl-Module sowie<br />

seine Release-Skripte auf dem<br />

Laptop zu installieren.<br />

Auf der Pazifik-Insel reichte<br />

die Internetanbindung offenbar<br />

für Mail, war aber nicht<br />

stabil genug, um Softwarepakete<br />

herunterzuladen. Auch<br />

sein Git-Repository konnte<br />

Linus updaten, doch ansonsten<br />

musste er sich entschuldigen.<br />

Er schrieb: „Ich glaube,<br />

es benutzt ohnehin niemand<br />

mehr Tarballs und Patches,<br />

weil Git so bequem und effizient<br />

ist.“ Zu den wenigen,<br />

die sich darauf zu Wort meldeten,<br />

gehörte der langjährige<br />

Kernelentwickler Rand<br />

Dunlap. Er arbeitet noch mit<br />

Tarballs und Patches. Torvalds<br />

beruhigte ihn: „Ich werde die<br />

Tarballs und Patches nicht<br />

einstellen, solange sie noch<br />

Abnehmer finden.“ n


ITIL SOA MDM NOSQL CMDB<br />

BPM BYOD CRUD SSH JVM<br />

DMTF SPDY OODBMS DRDB<br />

EAI EDI ACL TCP/IP GUI<br />

ODBC KVM IMAP RAS RFC<br />

UML XML SNMP SMART<br />

RDBMS SMTP RPC QoS ORB<br />

OLA SNA IEEE ESB ISP ROI<br />

NOSQL DDR JSON BIOS ACL<br />

VPN 100B-T ROM MMX ADSL<br />

CMOS ASCII MTU OSPF SSL<br />

Was soll das bedeuten?


Aktuell<br />

www.linux-magazin.de Kernel-News 09/2013<br />

20<br />

Schneller Booten auf Speicherriesen<br />

Der SGI-Entwickler Nathan<br />

Zimmer bemerkte, dass das<br />

Booten auf Hochleistungsrechnern<br />

mit viel Speicher sehr<br />

lange dauert. Mit 16 TByte<br />

RAM zum Beispiel kann es<br />

über eine Stunde in Anspruch<br />

nehmen, die hauptsächlich<br />

beim Initialisieren des Arbeitsspeichers<br />

vergeht. Ein Patch<br />

von ihm und seinem Kollegen<br />

Mike Travis sorgt dafür, dass<br />

zuerst die CPUs starten. So<br />

lässt sich die Speicherinitialisierung<br />

auf mehrere Prozessoren<br />

verteilen.<br />

Greg Kroah-Hartman fiel auf,<br />

dass die beiden ihr Patch als<br />

Konfigurationsoption vorgesehen<br />

hatten. Das hält er<br />

für unnötig vorsichtig, denn<br />

schließlich sei schnelleres<br />

Booten stets ein Gewinn für<br />

den Anwender. H. Peter Anvin<br />

schloss sich diesem Argument<br />

an und hält das Feature für<br />

alle Rechner ab einer gewissen<br />

RAM-Größe für sinnvoll,<br />

geschätzt ab 28 GByte.<br />

Daneben war Peter neugierig,<br />

wie groß das Patch sei, und<br />

Nathan antworte, es umfasse<br />

nur 400 Codezeilen. Peter<br />

hatte aber den binären Maschinencode<br />

gemeint, und der<br />

vergrößert das Kernelimage<br />

um 32 KByte. Anvin hält das<br />

für erstaunlich umfangreich.<br />

„Ist das alles Initcode?“, fragte<br />

er, „32 KByte Laufzeitcode,<br />

der immer ausgeführt wird, ist<br />

doch nicht ganz unproblematisch.“<br />

Nathan Zimmer meinte,<br />

echter Runtimecode seien<br />

wohl nur 24 KByte.<br />

Es folgte eine Diskussion über<br />

alternative Umsetzungen der<br />

Idee. Der x86-Kenner Yinghai<br />

Lu brachte Anregungen ein<br />

und Ingo Molnar schlug ein<br />

ganz anderes Konzept vor, das<br />

den Buddy-Allocator verwendet,<br />

der den Speicher in kleinere<br />

Einheiten aufteilt. Welche<br />

Lösung sich auch durchsetzt,<br />

die Besitzer großer Maschinen<br />

dürfen sich wohl bald über<br />

rascheres Booten freuen. n<br />

Anonymous Memory von Android<br />

Der Google-Entwickler Colin<br />

Cross findet es schade, wenn<br />

Features in »linux‐next« liegenbleiben.<br />

Einige würde er<br />

lieber im offiziellen Kernelzweig<br />

sehen, insbesondere<br />

»ashmem« (Android Shared<br />

Memory), das mehrere Arten<br />

von anonymem Arbeitsspeicher<br />

umsetzen kann.<br />

Besonders gefällt Colin Named<br />

Anonymous Memory. Hinter<br />

dieser Bezeichnung steckt<br />

eine Speicherregion, die als<br />

Datei unter »/proc/pid/maps«<br />

auftaucht. Er schreibt: „Die<br />

Dalvik-VM macht von diesem<br />

Feature ausgiebig Gebrauch<br />

[...]. Es erlaubt Speicher für<br />

verschiedene Zwecke über<br />

mehrere Prozesse hinweg zusammenzufassen.<br />

Android benutzt<br />

es in seinen Tools »dumpsys<br />

meminfo« und »librank«,<br />

um die Speichernutzung von<br />

Java-Heaps, JIT-Caches und<br />

anderem zu bestimmen.“<br />

Christoph Hellwig schien zunächst<br />

nicht davon überzeugt,<br />

dass das Feature tatsächlich<br />

so nützlich sei. Er verstand<br />

nicht, „was »ashmem« besser<br />

machen sollte als ein shared<br />

»mmap« von »/dev/zero«“.<br />

Colin erklärte ihm daher,<br />

»ashmem« binde den Speicher<br />

an einen Filedeskriptor.<br />

Damit lasse er sich einem<br />

anderen Prozess übergeben,<br />

was mit »/dev/zero« nicht<br />

funktioniere – es würde eine<br />

neue Speicherregion herauskommen.<br />

Christoph war zunächst<br />

erstaunt, konsultierte<br />

dann aber den Quelltext von<br />

»/dev/zero« und gab Colin<br />

schließlich recht.<br />

Darauf folgte eine Diskussion<br />

über Implementierungsdetails,<br />

an denen sich auch John<br />

Stultz vom Linaro-Projekt beteiligte.<br />

Ein konkretes Konzept<br />

ergab sich dabei zwar nicht,<br />

aber dennoch scheint das<br />

Android-Feature »ashmem«<br />

ein aussichtsreicher Kandidat<br />

für den Mainline-Kernel von<br />

<strong>Linux</strong> zu sein. <br />

n<br />

32-Bit-Kernel auf 64-Bit-Hardware<br />

Der Software-Entwickler Pierre-Loup<br />

A. Griffais klagte,<br />

das Kopieren von Dateien laufe<br />

in letzter Zeit immer langsamer,<br />

wenn man einen 32-Bit-<br />

Kernel und mehr als 16 GByte<br />

Arbeitsspeicher verwendet.<br />

Darauf erwiderte Rik van Riel:<br />

„Wenn du so viel Speicher in<br />

deinem System hast, solltest<br />

du einen 64-Bit-Kernel verwenden,<br />

ansonsten treten im<br />

Memory Management viele<br />

Grenzsituationen auf.“ Johannes<br />

Weiner fügte an: „Dabei<br />

kannst du das 32-Bit-Userland<br />

behalten, tausche einfach den<br />

Kernel aus.“<br />

Pierre-Loup antwortete: „Viele<br />

Distributionen liefern einen<br />

32-Bit-Kernel als Standard für<br />

Anwender, die unsicher sind.<br />

Dabei ist PAE aktiviert, um die<br />

Mengen an Arbeitsspeicher in<br />

modernen Rechnern zu unterstützen.“<br />

Da konnte Linus Torvalds nicht<br />

mehr an sich halten: „PAE ist<br />

eine Notlösung. Das ganze<br />

Konzept taugt nichts, und<br />

alle, die einen 32-Bit-Kernel<br />

mit 16 GByte RAM betreiben,<br />

haben nicht die geringste Ahnung.<br />

So etwas tut man nicht.<br />

Sie sollen auf 64 Bit upgraden<br />

oder sich mit der miesen I/​O-<br />

Leistung abfinden.“ Er fügte<br />

hinzu: „Beschwer dich bei<br />

deiner Distribution, wenn sie<br />

keinen 64-Bit-Kernel liefert.<br />

Aber wir Kernelentwickler<br />

werden uns nicht damit abmühen,<br />

PAE zu optimieren. Es<br />

lohnt sich einfach nicht.“<br />

Er habe für sich persönlich<br />

zwar einen 64-Bit-Kernel<br />

kompiliert, räumte Pierre-<br />

Loup ein, für viele seiner<br />

Endanwender sei das aber<br />

keine Option. „Ich werde die<br />

Distributionen darauf hinweisen,<br />

dass PAE-Kernel angesichts<br />

der auftretenden Probleme<br />

und der Einstellung der<br />

Kernelentwickler keine gute<br />

Standardlösung sind.“<br />

Rik van Riel schlug schließlich<br />

einen gangbaren Mittelweg<br />

vor: „Man könnte den<br />

Speicher, den ein PAE-Kernel<br />

nutzt, auf eine bestimmte<br />

Menge beschränken, bei der<br />

es noch nicht zu Problemen<br />

kommt, etwa 8 oder 12 GByte.<br />

Daneben könnte der Kernel<br />

eine Warnung ausgeben, die<br />

dem Anwender mitteilt, er<br />

solle auf einen 64-Bit-Kernel<br />

upgraden, um seinen gesamten<br />

Arbeitsspeicher zu nutzen.“<br />

Das gefiel Pierre-Loup.<br />

(Zack Brown/​mhu) n


Die Antwort steht in<br />

ADMIN.<br />

www.admin-magazin.de


Titelthema<br />

www.linux-magazin.de Paketmanager 09/2013<br />

22<br />

Unattended Upgrades: Paketmanager im Vergleich<br />

Automatisch sauber<br />

Manuelle Software-Updates begleiten Admins durch den Tag. Dabei versprechen die Paketmanager diese Arbeit<br />

zu automatisieren. Der Artikel vergleicht die großen Distributionen und testet, wie viel Reinheit die mit<br />

den Systemen gelieferten Tools wirklich bringen – und welche Gefahren dabei entstehen. Konstantin Agouros, Markus Feilner<br />

Inhalt<br />

© Alterfalter, Fotolia.com<br />

22 Paketmanager<br />

Red Hat, Suse, Debian, Ubuntu: Wie<br />

genau kann der Admins automatische<br />

Updates konfigurieren?<br />

30 Apt intern<br />

Apt erledigt viele Aufgaben bereits im<br />

Hintergrund: Ein Blick in den Maschinenraum<br />

des Debian-Tools.<br />

34 Nachhaltigkeit<br />

Kann <strong>Linux</strong> auch auf Dauer gut sein?<br />

Zwei freie Distributionen in einer Fünf-<br />

Jahres-Retrospektive.<br />

38 Enterprise-Strategien<br />

Red Hat, Suse und Canonical: Update-<br />

Portale im Vergleich.<br />

42 Kernelupdates<br />

Fluch oder Segen? Techniken für<br />

reibungs lose Kernelupdates.<br />

46 Embedded-Updates<br />

Hoffentlich! Mehr und bessere Aktualisierungen<br />

für <strong>Linux</strong>-Geräte.<br />

In einem unterscheiden sich proprietäre<br />

oder offene Betriebssysteme kaum – egal<br />

ob der Anwender Windows, Mac OS oder<br />

das freie <strong>Linux</strong> einsetzt, stets ist er mit<br />

immer mehr Updates und Patches in immer<br />

kürzeren Abständen konfrontiert.<br />

Ob Bugfixes zu installieren, Sicherheitslöcher<br />

zu stopfen sind oder die mit einer<br />

neuen Programmversion lange erwartete<br />

Funktion endlich kommt: In schöner<br />

Regelmäßigkeit müssen Anwender und<br />

Admins Updates einspielen, in vielen Fällen<br />

sogar täglich.<br />

Verführerische Versprechen<br />

Einladend glänzen moderne <strong>Linux</strong>-Distributionen<br />

mit Schaltflächen, die wie<br />

Waschmaschinen eine Vollautomatik<br />

versprechen und den Anwender glauben<br />

lassen, der Rechner sei danach auf dem<br />

neuesten Stand, er kümmere sich ganz<br />

alleine darum, brauche keine Hilfe und<br />

sei durchaus in der Lage, mit heiklen<br />

Softwarepaketen umzugehen.<br />

Doch ganz so einfach funktionieren Unattended<br />

Updates und Upgrades in der<br />

Praxis selten, vor allem wenn eigene<br />

oder exotische Software im Spiel ist. Aber<br />

nicht nur dann ist es immer noch keine<br />

gute Idee, ein Produktivsystem, einen<br />

Server oder gar eine ganze Rechnerfarm<br />

alleine, unbeaufsichtigt und vollautomatisch<br />

updaten oder upgraden zu lassen.<br />

An einem Desktop, mit dem der Benutzer<br />

Fehlermeldungen erhält und eingreifen<br />

oder den Admin anrufen kann, mag das<br />

anders aussehen.<br />

Immer wieder tauchen Abhängigkeiten<br />

auf, die das Update scheitern lassen und<br />

so schlimmstenfalls für Produktionsausfälle<br />

sorgen – nicht nur bei selbst<br />

geschriebenen Applikationen. Um eine<br />

Testumgebung kommt der verantwor-<br />

tungsbewusste Admin nicht herum, doch<br />

kann die dank Virtualisierung heutzutage<br />

in Form von virtuellen Maschinen auch<br />

auf seinem Laptop laufen.<br />

Noch besser ist es jedoch, angesichts von<br />

Kernelpatches und eventuellen proprietären<br />

Treibern, die Testsysteme aus identischer<br />

Hardware aufzubauen wie die<br />

produktiven Maschinen – sonst könnte<br />

es passieren, dass zwar alle Updates sauber<br />

durchlaufen, der Paketmanager keine<br />

Fehler meldet, aber das System einfach<br />

nicht mehr booten kann.<br />

Hardware in Gefahr<br />

Das kann allerdings auch andere Gründe<br />

haben, so wie 2004, als Suse schlicht<br />

beim Kernelupdate den XFS-Treiber fehlerhaft<br />

verbaut hatte [1], oder vor wenigen<br />

Wochen, als ein Bug in den Updates<br />

von Systemd und Journald Fedora-19-


und -20-Systeme an den Rand eines Kollapses<br />

brachte [2].<br />

Dabei geriet sogar Hardware in Gefahr:<br />

Im Systemprotokoll landeten Unmengen<br />

an alten Einträgen. So schnell es CPU und<br />

I/​O des Systems eben hergaben, schrieben<br />

die Daemons Vierzeiler ins Log – und<br />

trieben Festplatten- und CPU-Last an die<br />

Grenzen. Auf unüberwachten, lüfterlosen<br />

Geräten war da schnell die Hardware an<br />

Grenzen. Abhilfe schaffte nur ein manuelles<br />

»yum downgrade rsyslog«, ein<br />

Eintrag in die Blacklist (damit nicht das<br />

nächste Update wieder den gleichen Fehler<br />

verursacht) – und dann warten, bis<br />

die Community den Bug behob.<br />

Auf baugleicher Hardware und mit identischen<br />

Setups kann der Admin solche<br />

Fehler weitgehend ausschließen. Herstellerpatches<br />

lassen sich ausprobieren, ohne<br />

dass sie Schaden anrichten, bevor der<br />

Admin sie zum Ausrollen freigibt.<br />

Automatik erst nach Tests<br />

Dann ergibt ein Auto-Update auch mehr<br />

Sinn: Das Umbiegen der Repositories für<br />

Patches ist schließlich bei allen geprüften<br />

Distributionen möglich. Der Admin legt<br />

die von ihm getesteten und verifizierten<br />

Updates auf einem eigenen Updateserver<br />

ab und geht so auf Nummer sicher.<br />

Erfahrene <strong>Linux</strong>-Administratoren greifen<br />

gern zum Cronjob, doch gibt es bei allen<br />

Distributionen Spezialtools, die zwar<br />

letzten Endes auch nur Einträge in einer<br />

Crontab oder im »cron.daily«-Verzeichnis<br />

anlegen. Doch diese Werkzeuge bieten<br />

einfache Oberflächen und viele Funktionen<br />

rund um das periodische »aptitude<br />

-y upgrade« (Listing 1) beziehungsweise<br />

»yum -y upgrade« (Listing 2).<br />

Die beiden Listings zeigen einen automatischen<br />

Durchlauf durch ein reguläres<br />

Update inklusive eines Upgrade des<br />

<strong>Linux</strong>-Kernels. Die Ubuntu-Variante bekommt<br />

dabei Kernel 3.8.0-26 verpasst,<br />

Fedora 19 schnappt sich 3.9.9.<br />

Paketmanager 09/2013<br />

Titelthema<br />

www.linux-magazin.de<br />

23<br />

Listing 1: »aptitude update && aptitude ‐y upgrade«<br />

01 Treffer http://de.archive.ubuntu.com raring Release.gpg<br />

02 Holen: 1 http://de.archive.ubuntu.com raring‐updates Release.gpg [933 B]<br />

03 [...]<br />

04 100% [28 Packages bzip2] [Warten auf Kopfzeilen] [Warten<br />

05 Ign http://security.ubuntu.com raring‐security/restricted<br />

Translation‐de_DE<br />

06 Treffer http://de.archive.ubuntu.com raring‐updates/restricted<br />

Translation‐en<br />

07 Ign http://de.archive.ubuntu.com raring‐backports/restricted<br />

Translation‐de<br />

08 [...]<br />

09 889 kB wurden in 7 s heruntergeladen (116 kB/s)<br />

10 <br />

11 Auflösen der Abhängigkeiten ...<br />

12 Die folgenden NEUEN Pakete werden zusätzlich installiert:<br />

13 linux‐headers‐3.8.0‐26{a}<br />

14 linux‐headers‐3.8.0‐26‐generic{a}<br />

15 linux‐image‐3.8.0‐26‐generic{a}<br />

16 linux‐image‐extra‐3.8.0‐26‐generic{a}<br />

17 Die folgenden Pakete werden aktualisiert:<br />

18 libdrm‐intel1 libdrm‐nouveau2 libdrm‐radeon1<br />

19 libdrm2 libkms1 linux‐generic<br />

20 linux‐headers‐generic linux‐image‐generic<br />

21 8 Pakete aktualisiert, 4 zusätzlich installiert, 0 werden entfernt und<br />

1 nicht aktualisiert.<br />

22 56,6 MB an Archiven müssen heruntergeladen werden. Nach dem Entpacken<br />

werden 235 MB zusätzlich belegt sein.<br />

23 Holen: 1 http://de.archive.ubuntu.com/ubuntu/ raring‐updates/main<br />

libdrm2 amd64 2.4.43‐0ubuntu1.1 [26,3 kB]<br />

24 [...]<br />

25 Holen: 12 http://de.archive.ubuntu.com/ubuntu/ raring‐updates/main<br />

linux‐headers‐generic amd64 3.8.0.26.44 [2.398 B]<br />

26 56,6 MB wurden in 10 s heruntergeladen (5.538 kB/s)<br />

27 [...]<br />

28 Vormals nicht ausgewähltes Paket linux‐image‐3.8.0‐26‐generic wird<br />

gewählt.<br />

29 Entpacken von linux‐image‐3.8.0‐26‐generic (aus .../linux‐image‐<br />

3.8.0‐26‐generic_3.8.0‐26.38_amd64.deb) ...<br />

30 Vormals nicht ausgewähltes Paket linux‐image‐extra‐3.8.0‐26‐generic<br />

wird gewählt.<br />

31 [...]<br />

32 linux‐image‐3.8.0‐26‐generic (3.8.0‐26.38) wird eingerichtet ...<br />

33 Running depmod.<br />

34 update‐initramfs: deferring update (hook will be called later)<br />

35 Examining /etc/kernel/postinst.d.<br />

36 run‐parts: executing /etc/kernel/postinst.d/apt‐auto‐removal<br />

3.8.0‐26‐generic /boot/vmlinuz‐3.8.0‐26‐generic<br />

37 run‐parts: executing /etc/kernel/postinst.d/initramfs‐tools<br />

3.8.0‐26‐generic /boot/vmlinuz‐3.8.0‐26‐generic<br />

38 update‐initramfs: Generating /boot/initrd.img‐3.8.0‐26‐generic<br />

39 run‐parts: executing /etc/kernel/postinst.d/pm‐utils 3.8.0‐26‐generic<br />

/boot/vmlinuz‐3.8.0‐26‐generic<br />

40 run‐parts: executing /etc/kernel/postinst.d/update‐notifier<br />

3.8.0‐26‐generic /boot/vmlinuz‐3.8.0‐26‐generic<br />

41 run‐parts: executing /etc/kernel/postinst.d/zz‐update‐grub<br />

3.8.0‐26‐generic /boot/vmlinuz‐3.8.0‐26‐generic<br />

42 grub.cfg wird erstellt ...<br />

43 [...]<br />

44 linux‐image‐extra‐3.8.0‐26‐generic (3.8.0‐26.38) wird eingerichtet ...<br />

45 Running depmod.<br />

46 update‐initramfs: deferring update (hook will be called later)<br />

47 Examining /etc/kernel/postinst.d.<br />

48 run‐parts: executing /etc/kernel/postinst.d/apt‐auto‐removal<br />

3.8.0‐26‐generic /boot/vmlinuz‐3.8.0‐26‐generic<br />

49 run‐parts: executing /etc/kernel/postinst.d/initramfs‐tools<br />

3.8.0‐26‐generic /boot/vmlinuz‐3.8.0‐26‐generic<br />

50 update‐initramfs: Generating /boot/initrd.img‐3.8.0‐26‐generic<br />

51 run‐parts: executing /etc/kernel/postinst.d/pm‐utils 3.8.0‐26‐generic /<br />

boot/vmlinuz‐3.8.0‐26‐generic<br />

52 run‐parts: executing /etc/kernel/postinst.d/update‐notifier 3.8.0‐26‐<br />

generic /boot/vmlinuz‐3.8.0‐26‐generic<br />

53 run‐parts: executing /etc/kernel/postinst.d/zz‐update‐grub 3.8.0‐26‐<br />

generic /boot/vmlinuz‐3.8.0‐26‐generic<br />

54 grub.cfg wird erstellt ...<br />

55 [...]<br />

56 linux‐image‐generic (3.8.0.26.44) wird eingerichtet ...<br />

57 linux‐headers‐3.8.0‐26 (3.8.0‐26.38) wird eingerichtet ...<br />

58 linux‐headers‐3.8.0‐26‐generic (3.8.0‐26.38) wird eingerichtet ...<br />

59 linux‐headers‐generic (3.8.0.26.44) wird eingerichtet ...<br />

60 linux‐generic (3.8.0.26.44) wird eingerichtet ...<br />

61 Trigger für libc‐bin werden verarbeitet ...<br />

62 ldconfig deferred processing now taking place<br />

63 <br />

64 Aktueller Status: 1 aktualisierbares Paket [‐8].


Titelthema<br />

www.linux-magazin.de Paketmanager 09/2013<br />

24<br />

Die Unterschiede zwischen den Paketmanagern<br />

und ihren Tools liegen mittlerweile<br />

eher im Detail. Da kann Yum<br />

beispielsweise automatisch einen geeigneteren<br />

Repository-Server finden, während<br />

Apt standardmäßig nur seine eigene<br />

Liste verwendet. Yum setzt dafür auf<br />

Metadaten-Pakete und Delta-RPMs, dafür<br />

gibt’s bei Ubuntu beispielsweise ein<br />

simples Repository für Wagemutige, die<br />

die neuesten Kernel ausprobieren wollen<br />

(»kernel‐ppa/mainline«). Dort finden<br />

sich auch paketierte Release Candidates<br />

der nächsten Entwicklerkernel.<br />

Sieben Distributionen<br />

Dem folgenden Vergleich stellen mussten<br />

sich Centos, Debian, Fedora, Open Suse,<br />

RHEL, SLES und Ubuntu. Auch andere<br />

Distributionen bieten Auto-Update-Funktionen<br />

an, warnen aber wie Arch <strong>Linux</strong><br />

in der Regel davor, sie anzuwenden [3].<br />

Alle getesteten Distributionen kennen die<br />

Möglichkeit, Pakete von Upgrade oder<br />

Installation auszunehmen, etwa wenn<br />

Abhängigkeiten aufzulösen sind.<br />

Debian und ​Ubuntu fallen im Vergleich<br />

positiv auf, weil sich bei ihnen (fast) alles<br />

explizit und dediziert für die automatischen<br />

Upgrades konfigurieren lässt. So<br />

kann der Admin bei einem automatischen<br />

»apt‐get update« alles upgraden, aber zugleich<br />

verhindern, dass das System kritische<br />

Pakete ohne manuelles Eingreifen<br />

aktualisiert, die beispielsweise Neustarts<br />

von eigenen Diensten erfordern oder mit<br />

denen der Admin schlechte Erfahrungen<br />

gemacht hat. Die anderen Distributionen,<br />

abgesehen von RHEL, bieten derlei über<br />

Einstellungen in der Yum- oder Zypper-<br />

Konfiguration.<br />

Der Admin kann das eingangs beschrieben<br />

Vorgehen einer Staging-Umgebung<br />

und die daraus freigegebenen Patches bei<br />

allen Kandidaten mit den unbeaufsichtigten<br />

Techniken kombinieren, indem er die<br />

Patches, die die Tests bestanden haben,<br />

auf einen lokalen Server legt und allen<br />

Systemen mit automatischem Modus nur<br />

diesen Server als Repository-Master zuweist.<br />

Alternativ kann er natürlich auch<br />

Software wie Pulp [4] verwenden, um<br />

die Upgrades zentral anzustoßen, statt sie<br />

dezentral einsammeln zu lassen.<br />

E Centos<br />

Wer seine Centos-Installation mit automatischen<br />

Updates versehen will, muss<br />

das Paket »yum‐cron« installieren. Es<br />

besteht aus Konfigurationsdateien und<br />

einem Shellskript, das die dort konfigurierten<br />

Updates nach den Vorgaben des<br />

Admin einspielt. Als etwas eigentümlich<br />

dabei erweist sich, dass der Admin das<br />

Ganze über Initskripte und Services (de-)<br />

aktivieren muss. Die Startfunktion des<br />

Initskripts legt lediglich eine Lock-Datei<br />

an, und Cron ruft das eigentliche Skript<br />

auf. Das verrichtet seinen Dienst nur,<br />

wenn die Lock-Datei existiert.<br />

Listing 2: »yum ‐y update«<br />

01 Geladene Plugins: langpacks, refresh‐packagekit<br />

02 Abhängigkeiten werden aufgelöst<br />

03 ‐‐> Transaktionsprüfung wird ausgeführt<br />

04 ‐‐‐> Paket OpenImageIO.x86_64 0:1.1.10‐2.fc19 markiert, um aktualisiert<br />

zu werden<br />

05 [...]<br />

06 ‐‐‐> Paket kernel.x86_64 0:3.9.9‐301.fc19 markiert, um installiert zu<br />

werden<br />

07 ‐‐‐> Paket kernel‐devel.x86_64 0:3.9.9‐301.fc19 markiert, um installiert<br />

zu werden<br />

08 ‐‐‐> Paket kernel‐headers.x86_64 0:3.9.8‐300.fc19 markiert, um<br />

aktualisiert zu werden<br />

09 ‐‐‐> Paket kernel‐headers.x86_64 0:3.9.9‐301.fc19 markiert, um eine<br />

Aktualisierung zu werden<br />

10 [...]<br />

11 ‐‐‐> Paket xorg‐x11‐server‐common.x86_64 0:1.14.2‐1.fc19 markiert, um<br />

eine Aktualisierung zu werden<br />

12 ‐‐> Abhängigkeitsauflösung beendet<br />

13 ‐‐> Transaktionsprüfung wird ausgeführt<br />

14 ‐‐‐> Paket kernel.x86_64 0:3.9.2‐301.fc19 markiert, um gelöscht zu<br />

werden<br />

15 ‐‐‐> Paket kernel‐devel.x86_64 0:3.9.2‐301.fc19 markiert, um gelöscht<br />

zu werden<br />

16 ‐‐> Abhängigkeitsauflösung beendet<br />

17 <br />

18 Abhängigkeiten aufgelöst<br />

19 <br />

20 ==============================<br />

21 Package Arch Version Paketquelle Größe<br />

22 ==============================<br />

23 Installieren:<br />

24 kernel x86_64 3.9.9‐301.fc19 updates‐testing 29 M<br />

25 kernel‐devel x86_64 3.9.9‐301.fc19 updates‐testing 8.1 M<br />

26 Aktualisieren:<br />

27 OpenImageIO x86_64 1.1.13‐1.fc19 updates‐testing 1.1 M<br />

28 fedorautils noarch 3.0.8‐4.2 fedorautils 61 k<br />

29 [...]<br />

30 selinux‐policy noarch 3.12.1‐59.fc19 updates‐testing 271 k<br />

31 xorg‐x11‐server‐common x86_64 1.14.2‐1.fc19 updates‐testing 43 k<br />

32 <br />

33 Transaktionsübersicht<br />

34 ==============================<br />

35 Installieren 2 Pakete<br />

36 Aktualisieren 16 Pakete (+7 Abhängige Pakete)<br />

37 Entfernen 2 Pakete<br />

38 <br />

39 Gesamte Downloadgröße: 54 M<br />

40 Downloading packages:<br />

41 No Presto metadata available for fedorautils<br />

42 updates‐testing/19/x86_64/prestodelta | 661 kB 00:00:00<br />

43 Delta RPMs reduced 7.3 M of updates to 1.6 M (77% saved)<br />

44 (1/25): gpm‐libs‐1.20.6‐31.fc19_1.20.6‐33.fc19.x86_64.drpm | 23 kB<br />

00:00:00<br />

45 [...]<br />

46 (18/25): kernel‐headers‐3.9.9‐301.fc19.x86_64.rpm | 854 kB 00:00:01<br />

47 (19/25): kernel‐devel‐3.9.9‐301.fc19.x86_64.rpm | 8.1 MB 00:00:02<br />

48 [...]<br />

49 (25/25): kernel‐3.9.9‐301.fc19.x86_64.rpm | 29 MB 00:00:11<br />

50 ‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐<br />

51 Gesamt 3.7 MB/s | 48 MB 00:13<br />

52 Running transaction check<br />

53 Running transaction test<br />

54 Transaction test succeeded<br />

55 Running transaction


Die Konfiguration des Dienstes erfolgt<br />

über die Datei »/etc/subsys/yum‐cron«.<br />

Hier kann der Admin einstellen, dass<br />

Centos nur prüft, ob es neue Pakete gibt,<br />

ob die Server erreichbar sind und ob das<br />

System neue Pakete nur herunterladen,<br />

aber nicht installieren soll – oder aber<br />

beides.<br />

Außerdem finden sich in dieser Datei<br />

noch Parameter für Fehler-E-Mails und<br />

die Einstellungen, an welchen Tagen das<br />

Update laufen soll. Standardmäßig aktualisiert<br />

es alle Pakete, sollte ein Reboot<br />

notwendig sein, beispielsweise bei Kernelupdates,<br />

dann erfährt dies der Administrator<br />

nur, wenn er die Logdatei oder<br />

Statusmail liest und nachsieht, welche<br />

Updates eingespielt wurden.<br />

E Debian<br />

Debian-Systeme haben die wohl komplexeste<br />

Variante für unbeaufsichtigte<br />

Updates. Zunächst muss auch hier der<br />

Administrator ein Paket installieren, bei<br />

Debian heißt es »unattended‐upgrades«.<br />

Die Konfiguration erledigt er in mehreren<br />

Dateien im Verzeichnis »/etc/apt/apt.<br />

conf.d«, nachträglich aktivieren kann er<br />

es mit »dpkg-reconfigure --plow unattended‐upgrades«.<br />

In der Datei »50unattended‐uprades«<br />

stellt er außerdem noch<br />

ein, aus welchen Quellen (dabei werden<br />

Patterns verwendet) Pakete stammen<br />

müssen, damit das Unattended-Paket sie<br />

verarbeitet.<br />

In der Standardeinstellung akzeptiert das<br />

Tool nur Debian-Pakete aus dem Stable-<br />

Bereich mit Label »Debian‐Security« –<br />

wohl eine sehr weise Entscheidung. In<br />

dieser Datei lassen sich kritische Pakete<br />

auch auf eine Blacklist setzen, was das<br />

automatische Update verhindert.<br />

Wie bei Centos kann der Administrator<br />

hier eine E-Mail-Adresse eintragen. Auch<br />

die riskanten automatischen Neustarts<br />

oder Updates beim Shutdown statt im<br />

Hintergrund des laufenden Betriebs und<br />

56 Aktualisieren : selinux‐policy‐3.12.1‐59.fc19.noarch 1/50<br />

57 [...]<br />

58 Aktualisieren : fedorautils‐3.0.8‐4.2.noarch 22/50<br />

59 Installieren : kernel‐devel‐3.9.9‐301.fc19.x86_64 23/50<br />

60 Aktualisieren : ibus‐typing‐booster‐1.2.1‐1.fc19.noarch 24/50<br />

61 Installieren : kernel‐3.9.9‐301.fc19.x86_64 25/50<br />

62 [...]<br />

63 Aufräumen : kernel‐3.9.2‐301.fc19.x86_64 34/50<br />

64 Aufräumen : kernel‐headers‐3.9.8‐300.fc19.x86_64 35/50<br />

65 [...]<br />

66 Überprüfung läuft: selinux‐policy‐targeted‐3.12.1‐59.fc19.noarch 12/50<br />

67 Überprüfung läuft: kernel‐3.9.9‐301.fc19.x86_64 13/50<br />

68 [...]<br />

69 Entfernt:<br />

70 kernel.x86_64 0:3.9.2‐301.fc19 kernel‐devel.x86_64 0:3.9.2‐301.fc19<br />

71 <br />

72 Installiert:<br />

73 kernel.x86_64 0:3.9.9‐301.fc19 kernel‐devel.x86_64 0:3.9.9‐301.fc19<br />

74 <br />

75 Aktualisiert:<br />

76 OpenImageIO.x86_64 0:1.1.13‐1.fc19<br />

77 [...]<br />

78 kernel‐headers.x86_64 0:3.9.9‐301.fc19<br />

79 [...]<br />

80 xorg‐x11‐server‐Xorg.x86_64 0:1.14.2‐1.fc19<br />

81 Abhängigkeit aktualisiert:<br />

82 libdrm.x86_64 0:2.4.46‐1.fc19<br />

83 [...]<br />

84 selinux‐policy.noarch 0:3.12.1‐59.fc19<br />

85 xorg‐x11‐server‐common.x86_64 0:1.14.2‐1.fc19<br />

86 <br />

87 Komplett!


Titelthema<br />

www.linux-magazin.de Paketmanager 09/2013<br />

26<br />

Abbildung 1: GUI-Konfiguration des Paketmanagements unter KDE auf Fedora 19:<br />

Apper integriert sich in die Systemsteuerungen …<br />

Abbildung 2: … steht dem Admin aber auch als Stand-alone-Applikation zur<br />

Seite, wenn er sie von der Kommandozeile aus startet.<br />

01 [main]<br />

viele andere nützliche Settings darf er<br />

hier konfigurieren.<br />

Ob die Einstellung, Updates beim Herunterfahren<br />

einzuspielen, sinnvoll ist,<br />

muss jeder Admin selbst entscheiden.<br />

Microsoft-Anwendern ist das vertraut,<br />

doch nicht jedem liegt die Vorstellung,<br />

beim unter <strong>Linux</strong> doch deutlich selteneren<br />

Reboot erst minutenlang warten zu<br />

müssen. In der Regel klappen die Updates<br />

jedoch deutlich schneller als bei<br />

Windows 7, wo sich schwachbrüstige<br />

PCs bei umfangreichen Aktualisierungen<br />

schon mal eine halbe Stunde für den<br />

Neustart genehmigen.<br />

Der zweite Teil der Konfiguration steckt<br />

im selben Verzeichnis in der Datei »02periodic«.<br />

Dort stellt der Administrator ein,<br />

ob überhaupt automatische Updates<br />

durchzuführen sind, wann das System<br />

die Paketlisten aktualisiert, ob es die Pakete<br />

nur herunterladen oder auch gleich<br />

installieren soll und wann es alte Pakete<br />

aus dem Cache löscht.<br />

Die Funktionsweise der Auto-Updates<br />

unter Debian ist simpel: Alle Parameter<br />

Listing 3: »yum‐updatesd.conf«<br />

02 # how often to check for new updates (in<br />

seconds)<br />

03 run_interval = 3600<br />

04<br />

05 # how often to allow checking on request (in<br />

seconds)<br />

06 updaterefresh = 600<br />

07 <br />

08 # how to send notifications (valid: dbus,<br />

email, syslog)<br />

Offene und kommerzielle Variante der<br />

beiden Suse-Distributionen unterscheiden<br />

sich bekanntlich nur in der Registrierung,<br />

die bei SLES erforderlich wird<br />

und die den Anspruch auf offiziellen<br />

Support aktiviert. Wie beim Chamäleon<br />

üblich, konfiguriert der Admin automatische<br />

Updates in Yast: Im Modul »Software<br />

| Online Update Configuration« (Abbildungen<br />

3 und 4) kann er die folgenden,<br />

vergleichsweise bescheidenen Parameter<br />

eingestellen:<br />

n Automatische Updates überhaupt aktivieren?<br />

n Wie häufig soll geprüft werden (täglich,<br />

wöchentlich, monatlich)?<br />

n Interaktive Patches auch einspielen?<br />

n Soll das System allen Lizenzbestimmungen<br />

zustimmen?<br />

n Sollen auch empfohlene Patches eingespielt<br />

werden?<br />

Schließlich kann der Administrator noch<br />

aus einer Liste von Kategorien (Security,<br />

Empfohlen, ...) auswählen, sodass nur<br />

Pakete, die einer diesen Kategorien entdienen<br />

dem Shellskript »/etc/cron.daily/<br />

apt« dazu, einmal täglich (getriggert von<br />

Cron) gemäß den Einstellungen die anstehenden<br />

Aufgaben zu absolvieren. Im<br />

Verzeichnis »/var/log/unattended‐upgrades«<br />

findet sich die Datei »unattended‐upgrades.log«,<br />

die den Statusbericht<br />

der täglichen Abläufe enthält. Installiert<br />

das Skript tatsächlich Upgrades, so legt es<br />

Extradateien an, die detaillierte Ausgaben<br />

der Installation aufnehmen.<br />

E Fedora<br />

Fedora verwendet optional das Python-<br />

Skript »yum‐updatesd«. Dessen Konfiguration<br />

wird in der Datei »/etc/yum/<br />

yum‐updatesd.conf« festgelegt. Listing<br />

3 zeigt die Konfiguration für automatische<br />

Updates. Wahlweise verteilt das<br />

Skript Update-Benachrichtigungen übers<br />

Dbus-System oder via Syslog und stellt<br />

sie natürlich auch per E-Mail zur Verfügung,<br />

wobei der Administrator beim<br />

E-Mail-Verfahren die Sende- und Empfangsadresse<br />

sowie den Mailserver direkt<br />

09 emit_via = dbus<br />

10 # should we listen via dbus to give out update<br />

11 # information/check for new updates<br />

12 dbus_listener = yes<br />

13 <br />

14 # automatically install updates<br />

15 do_update = yes<br />

16 # automatically download updates<br />

17 do_download = yes<br />

18 # automatically download deps of updates<br />

19 do_download_deps = yes<br />

angeben kann. Bei Syslog darf er Facility<br />

und Level spezifizieren.<br />

Wurde der Yum-updatesd-Dienst gestartet,<br />

dann heißt es warten, bis das Intervall<br />

vorbei ist. Je nach gewählter Benachrichtigungsart<br />

bekommt der Administrator<br />

eine Email oder findet die Informationen<br />

über die Updates im Syslogfile. Und wer<br />

das Desktop-Red-Hat am Arbeitsplatz<br />

einsetzt, konfiguriert die Updates über<br />

Apper (Abbildungen 1 und 2).<br />

E Open Suse und ​SLES


sprechen, beim automatischen Update<br />

zum Zuge kommen.<br />

Mit wenigen Mausklicks ist die Konfiguration<br />

abgeschlossen und der Administrator<br />

kann in »/var/log/zypp/history«<br />

nachprüfen, was das System wann installiert<br />

hat. Wer lieber Textdateien editiert,<br />

findet die Parameter in dem Verzeichnis<br />

»/etc/sysconfig«.<br />

E Red Hat Enterprise<br />

<strong>Linux</strong><br />

Paketmanager 09/2013<br />

Titelthema<br />

www.linux-magazin.de<br />

27<br />

Abbildung 3: Online-Updates unter Suse konfigurieren kann der Anwender auch am Desktop – dank Yast.<br />

RHEL besitzt schon lange sein eigenes<br />

Modell, mit dem Admins ihre Systeme<br />

dazu anweisen, automatische Updates<br />

herunterzuladen und zu installieren. Die<br />

Rothüte haben Yum um ein Plugin für das<br />

Red Hat Network (RHN) erweitert, von<br />

dem jeder Server profitiert, der über eine<br />

gültige Subskription und einen Account<br />

verfügt. Damit kann der Administrator<br />

über die Weboberfläche Installationen<br />

oder Upgrades anstoßen. Auf den Systemen<br />

arbeitet anschließend der »rhn«-<br />

Daemon die Aufgaben ab. Dabei schickt<br />

das RHN E-Mails an die Admins, wenn<br />

Updates anstehen.<br />

Der Rhnsd prüft in Intervallen (einstellbar<br />

in »/etc/sysconfig/rhn/rhnsd«), ob<br />

es für ihn etwas zu tun gibt. Auf den<br />

Web oberflächen der Systeme kann der<br />

Admin konfigurieren, ob Updates auto-<br />

Listing 4: »/etc/apt.conf.d/<br />

10periodic«<br />

01 APT::Periodic::Update‐Package‐Lists "1";<br />

Abbildung 4: Yast bietet deutlich weniger Parameter als Debian-Systeme, dafür ein schickes GUI. Die Einstellungen<br />

landen unter »/etc/sysconfig«.<br />

02 APT::Periodic::Download‐Upgradeable‐Packages "1";<br />

03 APT::Periodic::AutocleanInterval "7";


Titelthema<br />

www.linux-magazin.de Paketmanager 09/2013<br />

28<br />

Abbildung 5: Unter »Software & Aktualisierungen« konfiguriert der Anwender am Ubuntu-Desktop Updates.<br />

Das schaut unter KDE und Gnome/​Unity gleich aus und integriert sich in die Systemsteuerungen, hier KDE.<br />

matisch und ohne Bestätigung einzuspielen<br />

sind, dabei lässt sich das GUI<br />

aber leider nicht näher darüber aus, was<br />

„relevant“ bedeutet.<br />

Über den Status der durchgeführten Upgrades<br />

informiert das RHN den Administrator<br />

ebenfalls per E-Mail. Mehr Details<br />

zu den Enterprise-Distributionen und den<br />

verbundenen Implikationen bietet ein eigener<br />

Artikel in diesem Schwerpunkt.<br />

E Ubuntu<br />

01 # ssh root@ubuntu1304<br />

Listing 5: Reboot erforderlich<br />

02 Welcome to Ubuntu 13.04 (GNU/<strong>Linux</strong><br />

3.9.4‐030904‐generic x86_64)<br />

03 <br />

04 * Documentation: https://help.ubuntu.com/<br />

05 <br />

06 *** Neustart des Systems erforderlich ***<br />

07 Last login: Mon Jul 1 15:56:30 2013 from<br />

95‐91‐235‐245‐dynip.superkabel.de<br />

08 # reboot<br />

Wie Debian setzt auch Ubuntu auf das<br />

Paket »unattended‐upgrades«. Das System<br />

verhält sich genau so, wie im Debian-Abschnitt<br />

oben beschrieben, bringt<br />

aber eigene GUIs mit (Abbildung 5). Out<br />

of the Box kommt auch der »update‐notifer‐common«<br />

auf die Platte, der ebenfalls<br />

unter »/etc/apt/apt.conf.d« eine Datei<br />

»10periodic« anlegt (Listing 4).<br />

Diese versteht im Prinzip die gleichen<br />

Parameter wie die ebenfalls oben schon<br />

beschriebene »02periodic« bei »unattended‐upgrades«,<br />

allerdings funktionieren<br />

die Parameter, beispielsweise »APT::Periodic::Unattended‐Upgrade«,<br />

etwas anders,<br />

hier hilft aber der Blick in die Manpage<br />

weiter.<br />

Es empfiehlt sich, nur eine der beiden Varianten<br />

aktiv zu halten, damit das System<br />

weniger oft die Updateserver abfragt und<br />

die beiden Prozesse nicht beim Download<br />

miteinander konkurrieren. Bei der<br />

Installation kümmert sich Apt ja um den<br />

Zugriff auf die Paketdatenbank. Ubuntu<br />

meldet übrigens über die Datei »/etc/issue«,<br />

wenn nach automatischen Updates<br />

beispielsweise ein neuer Kernel einen Reboot<br />

verlangt (Listing 5).<br />

Nie ohne Testumgebung<br />

Tabelle 1: Distributionen im Vergleich<br />

Abbildung 6: Am Desktop kein Problem: So wie hier<br />

Fedora informieren alle Systeme den Benutzer.<br />

Tabelle 1 fasst die Ergebnisse des Tests<br />

zusammen. Die höchste Flexibilität bietet<br />

definitiv Debians Paketmanagement.<br />

Durch die Möglichkeit, automatische und<br />

manuelle Updates getrennt zu behandeln,<br />

kann der Administrator hier auch<br />

Pakete, die er als gefahrlos einstuft, automatisch<br />

aktualisieren lassen, während<br />

er problematischere Software gesondert<br />

behandelt.<br />

Bei den anderen Distributionen muss<br />

er dieses Verhalten mit den entsprechenden<br />

Optionen der Paketwerkzeuge<br />

erzwingen, was aber in der Regel den<br />

Nachteil mit sich bringt, dass bei einem<br />

manuellen Upgrade die allgemeingültigen<br />

Ausnahmen überschrieben werden.<br />

Trotzdem sollte ein sicherheitsbewusster<br />

Admin bei produktiven Systemen lieber<br />

auf eine Download-only-Strategie setzen,<br />

zumindest wenn er keine Testumgebung<br />

vorhalten will. So muss er beim Upgrade<br />

nicht lange warten, hat aber trotzdem<br />

noch alle Fäden in der Hand, falls etwas<br />

schiefläuft. <br />

n<br />

Infos<br />

[1] Marcel Hilzinger, „Suse <strong>Linux</strong> 9.1 Special<br />

Edition“: <strong>Linux</strong>-<strong>Magazin</strong> 11/​04<br />

[2] Markus Feilner, „Fedora 19/​20: Logfile-<br />

Explosion dank Systemd-Syslog und<br />

Journald“: [http:// www. linux‐magazin. de/​<br />

NEWS/ Fedora‐19‐20‐Logfile‐Explosion‐dank<br />

‐Systemd‐Syslog‐und‐Journald]<br />

[3] Arch-Auto-Update-Disclaimer:<br />

[https:// wiki. archlinux. org/ index. php/​<br />

Update_packages_from_crontab]<br />

[4] Konstantin Agourous, „Filmreif ausrollen“:<br />

<strong>Linux</strong>-<strong>Magazin</strong> 05/​12, S. 28<br />

Der Autor<br />

Konstantin Agouros arbeitet<br />

bei der N.runs AG als Berater<br />

für Netzwerksicherheit.<br />

Dabei liegt sein Schwerpunkt<br />

im Bereich Telekommunikationsanbieter<br />

und<br />

SIEM Technologien. Sein Buch „DNS/​DHCP“ ist<br />

bei Open Source Press erschienen.<br />

Centos Debian Fedora Open Suse RHEL Ubuntu<br />

und SLES<br />

Download only ja ja ja nein nein ja<br />

Allgemeine Filter ja ja ja ja nein ja<br />

Spezifische Filter für<br />

Unattended-Modus<br />

nein ja nein nein nein ja


Titelthema<br />

www.linux-magazin.de Apt intern 09/2013<br />

30<br />

Systeme aktualisieren mit Apt<br />

Gruppenreise<br />

Wer auf Debian- und Ubuntu-Rechnern ein Upgrade anschiebt, setzt im Hintergrund eine Reihe unsichtbarer<br />

Mechanismen in Gang, die sich gegenseitig bedingen und die Apt-Spezialist und -Maintainer Michael Vogt in<br />

diesem Artikel im Detail erklärt. Michael Vogt<br />

© dhoch kr, photocase.com<br />

Apt ist nicht irgendein Werkzeug zur<br />

Softwareverwaltung, sondern schlicht<br />

das Standardwerkzeug zur Paketverwaltung<br />

auf Debian-basierten Systemen wie<br />

Ubuntu, Mint und Debian selbst. Mit<br />

»apt‐rpm« existiert zudem eine RPM-Portierung.<br />

Apt entstand 1998, eine Gruppe<br />

von Debian- und Ubuntu-Programmierern<br />

entwickelt es seitdem kontinuierlich<br />

weiter. Eine seiner zentralen Aufgaben<br />

besteht im Installieren und Aktualisieren<br />

von Software.<br />

Architektonisches<br />

Apt arbeitet mit dem Low-Level-Tool<br />

»dpkg« zusammen. Apt ruft es auf, um<br />

lokale ».deb«-Pakete auf dem Dateisystem<br />

zu installieren oder zu löschen. Außerdem<br />

überprüft »dpkg«, ob Dateipfade kollidieren<br />

und ob es jede Datei einem Paket<br />

zuordnen kann. Daneben ruft es vor oder<br />

nach einem Lösch- oder Installationsprozess<br />

die so genannten Maintainer-Skripte<br />

Preinst, Postinst, Prerm und Postrm auf<br />

und kümmert sich um das Verarbeiten<br />

von Triggern, die in bestimmten Installationsfällen<br />

Aktionen auslösen, beispielsweise<br />

die Manpage aktualisieren.<br />

Apt selbst behält hingegen die größeren<br />

Zusammenhänge im Auge. Es gruppiert<br />

Pakete in Repositories und stellt sicher,<br />

dass diese sich darin authentifizieren lassen.<br />

Es erlaubt zudem, in den lokalisierten<br />

Paketbeschreibungen zu suchen, und<br />

löst Abhängigkeiten zwischen Paketen<br />

auf. Es ist auch dafür zuständig, Pakete<br />

auf das lokale System zu kopieren. Dazu<br />

stehen Apt verschiedene Transportprotokolle<br />

zur Verfügung, etwa HTTP(S),<br />

FTP, SSH oder bewegliche Medien wie<br />

CD-ROMs und DVDs.<br />

Aktualisierungen<br />

Zu den großen Aufgaben von Apt gehört<br />

aber, die Software eines Rechners aktuell<br />

zu halten. Dazu prüft es, welche Version<br />

eines Pakets lokal installiert ist und welche<br />

in einer der konfigurierten Paketquellen<br />

steckt. Grob lassen sich zwei Aktualisierungsvarianten<br />

unterscheiden. Zum<br />

einen spielt Apt Updates und Upgrades<br />

für die installierte Software einer Distribution<br />

auf den Rechner. Zum anderen<br />

kümmert es sich um Upgrades auf eine<br />

neue Version der Distribution.<br />

Das Einspielen von Aktualisierungen für<br />

eine installierte Distribution ist einfach<br />

und erfolgt über »sudo apt‐get upgrade«.<br />

Dabei aktualisiert Apt nur vorhandene<br />

Softwarepakete, installiert aber keine<br />

neuen oder löscht überflüssige. Vereinzelt<br />

bestehen für Pakete, etwa den Kernel bei<br />

ABI-Änderungen, jedoch neue Abhängigkeiten,<br />

dann ist der Aufruf von »sudo<br />

apt‐get dist‐upgrade« notwendig.<br />

Aber nicht nur dazu: Auch die Aktualisierung<br />

auf eine neue Version einer Distribution<br />

funktioniert über »sudo apt‐get<br />

dist‐upgrade«, allerdings erst nach dem<br />

Anpassen der Datei »/etc/apt/sources.<br />

list«. Hierbei aktualisieren Debian beziehungsweise<br />

Ubuntu eine große Zahl<br />

von Paketen, es kommen zahlreiche<br />

neue Abhängigkeiten hinzu, welche die<br />

Distributionen auflösen, indem sie neue<br />

Abhängigkeiten im Detail<br />

Bei der Installation speichert »dpkg« für jedes<br />

Paket den aktuellen Status. Wird das Deb-<br />

Paket zunächst ausgepackt, setzt »dpkg«<br />

dessen internen Zustand auf »unpacked«.<br />

Anschließend konfiguriert es das Paket, indem<br />

es das Maintainer-Skript »DEBIAN/postinst«<br />

aufruft.<br />

Erst wenn dies fehlerfrei geschehen ist, weist<br />

»dpkg« dem Paket den Zustand »installed«<br />

zu. In der Datei »/var/log/dpkg.log« lassen<br />

sich die Übergänge zwischen den (internen)<br />

»dpkg«-Zuständen beobachten.


Pakete einspielen. Dabei kommt es zu<br />

wiederholten Paketkonflikten, die Apt<br />

unter anderem löst, indem es zahlreiche<br />

veraltete Pakete löscht.<br />

Aufbau des Cache<br />

Intern führt Apt ein Verzeichnis mit den<br />

aktuellen Paketinformationen (Abbildung<br />

1). Dazu liest es alle Indexdateien der aktivierten<br />

Paketquellen aus dem Verzeichnis<br />

»/var/lib/apt/lists/« und bildet diese<br />

in einer internen Struktur ab. Zusätzlich<br />

verinnerlicht Apt die Statusinformationen<br />

der lokal installierten Pakete über die<br />

Datei »/var/lib/dpkg/status«.<br />

Diese Daten speichert es dann per Memory<br />

Mapping (MMap) in »/var/cache/<br />

apt/pkgcache.bin«. Ändern sich die Paketinformationen<br />

nicht, nutzt das System<br />

diesen MMap-Cache, was wiederholte Zugriffe<br />

beschleunigt. Danach erzeugt Apt<br />

dynamisch einen Dependency-Cache, der<br />

Informationen über Abhängigkeiten der<br />

Pakete untereinander enthält.<br />

Apt kennt Paketgruppen, Pakete und<br />

Versionen. Da moderne x86-Prozessoren<br />

sowohl 32- als auch 64-Bit-Programme<br />

ausführen, kann eine Paketgruppe Pakete<br />

für verschiedene Architekturen enthalten.<br />

Das einzelne Paket ist dagegen einer<br />

Architektur zugeordnet, kann aber in<br />

mehreren Versionen vorliegen.<br />

Apt nutzt eine konfigurierbare Policy, um<br />

die Candidate-Version zu finden, wobei<br />

die neueste Version in der Regel auch<br />

der gesuchte Kandidat ist. Zugleich liest<br />

Apt aus dem »dpkg‐status«, welche Paketversion<br />

auf einem Rechner installiert<br />

ist, und stellt diese Information im Cache<br />

zur Verfügung.<br />

Graduelle Abhängigkeiten<br />

Um Beziehungen zwischen Paketen zu<br />

definieren, nutzt Debians Paketmanagement<br />

ein feingliedriges System (siehe<br />

Kasten „Abhängigkeiten im Detail“)<br />

von Attributen wie Depends, Recommends,<br />

Suggests und Enhances, Konflikte<br />

definiert das System über Conflicts oder<br />

Breaks. Diese Attribute legen für ein Paket<br />

dessen Abhängigkeiten fest.<br />

Das Depends-Attribut signalisiert eine<br />

starke Abhängigkeit: Die dort genannten<br />

Pakete müssen zwingend installiert<br />

sein, damit ein Paket funktioniert. Das<br />

Recommends-Attribut stellt eine schwächere<br />

Form der Abhängigkeit dar. Hier<br />

funktioniert ein Paket auch dann, wenn<br />

die Abhängigkeit nicht installiert ist,<br />

aber eventuell fehlt es dann an wichtiger<br />

Funktionalität. Apt installiert Recommends-Empfehlungen<br />

immer mit, über<br />

die Option »‐‐no‐install‐recommends«<br />

lässt sich diese Option jedoch manuell<br />

abschalten.<br />

Wer nachschauen will, welche Recommends<br />

derzeit nicht installiert sind, verwendet<br />

den Befehl<br />

sudo apt‐get install ‐‐fix‐policy<br />

Suggests unterliegen einer sehr schwachen<br />

Form von Abhängigkeit. Der Admin<br />

MMap<br />

Apt<br />

»/var/cache/apt/pkgcache.bin«<br />

»/var/lib/dpkg/status«<br />

index<br />

index<br />

index<br />

index<br />

Dependency-Cache<br />

»/var/lib/apt/lists«<br />

Abbildung 1: Apt verschafft sich mit Hilfe verschiedener Indexdateien einen Überblick der vorhandenen<br />

Pakete und ihrer Abhängigkeiten untereinander und erzeugt daraus den Dependency-Cache.


Titelthema<br />

www.linux-magazin.de Apt intern 09/2013<br />

32<br />

Der Problem-Resolver weist jedem Paket<br />

einen Punktewert zu (Score), der seine<br />

Wichtigkeit ausdrückt. Eine hohe Zahl<br />

verweist auf ein wichtiges Paket. Um die<br />

Scores einzelner Pakete zu betrachten,<br />

ruft man die Option »‐o Debug::pkgProblemResolver::ShowScores=true«<br />

auf. Die<br />

Berechnung dieses Wertes ist relativ kompliziert,<br />

denn es fließen einige Faktoren<br />

ein wie die Priority und das »Essential:<br />

yes«-Flag. Auch erhalten installierte Pakete<br />

eine höhere Priorität.<br />

Als Nächstes wird untersucht, wie viele<br />

andere Pakete ein bestimmtes Paket als<br />

Abhängigkeiten voraussetzen (Reverse<br />

Dependencies). Jede Abhängigkeit erhöht<br />

den Score. Dies stellt sicher, dass zentrale<br />

Bibliotheken einen hohen Stellenwert erhalten.<br />

So hat etwa die »libgcc1« auf einem<br />

typischen Desktop einen Wert von<br />

mehr als 2000.<br />

An dieser Stelle werden auch Provides<br />

berücksichtigt. Zum Beispiel erhalten<br />

Pakete, die den »notification‐daemon« in<br />

ihrer Provides-Liste führen, einen höheinstalliert<br />

solche Pakete, indem er die Option<br />

»‐‐install‐suggests« aktiviert, und<br />

sudo apt‐get install ‐‐install‐suggests<br />

‐‐fix‐policy<br />

schaut nach, welche »suggests« auf dem<br />

System fehlen – in der Regel sind das<br />

recht viele.<br />

Kommt es zu Konflikten, wird zwischen<br />

Conflicts und Breaks unterschieden. Ein<br />

Konflikt tritt auf, wenn sich zwei Pakete,<br />

die identische Dateien enthalten, zur selben<br />

Zeit auf dem Dateisystem befinden,<br />

etwa »/usr/sbin/sendmail«. Ein Break<br />

weist auf einen schwächeren Konflikt<br />

hin: Er tritt auf, wenn sich zwei Pakete<br />

zur gleichen Zeit im Installed-Zustand<br />

befinden – unpacked dürfen sie hingegen<br />

sein.<br />

Typischerweise nutzen Breaks eine Versionsnummer,<br />

zum Beispiel »Break: foo<br />

( ( devel )<br />

08 Broken build‐essential:amd64 Depends on dpkg‐dev [<br />

amd64 ] < 1.16.1.2ubuntu7.1 > ( utils ) (>= 1.13.5)<br />

09 Considering dpkg‐dev:amd64 10001 as a solution to<br />

build‐essential:amd64 0<br />

10 Removing build‐essential:amd64 rather than change<br />

dpkg‐dev:amd64<br />

11 Done<br />

ändert, wodurch es für ältere Versionen<br />

anderer Software, die dieses Interface<br />

ebenfalls nutzen, unbenutzbar wird. Apt<br />

versucht daher im obigen Beispiel, das<br />

Paket »foo« auf eine Version 1.0 oder<br />

besser zu aktualisieren.<br />

Installation und Upgrades<br />

Gibt der User eine Installation oder ein<br />

Upgrade in Auftrag, schaut Apt zunächst<br />

in seinem Cache nach, ob es den Paketnamen<br />

kennt. Abhängig von der Policy<br />

wählt es die Candidate-Version aus und<br />

markiert diese für eine Installation oder<br />

ein Upgrade. Als Nächstes iteriert Apt<br />

über die Liste der Abhängigkeiten und<br />

markiert alle noch nicht erfüllten oder<br />

neuen Abhängigkeiten zur Installation.<br />

Alle negativen Abhängigkeiten (wie<br />

Conflicts und Breaks) markiert es zum<br />

Löschen.<br />

Der Admin kann Apt bei diesem Teil<br />

der Arbeit beobachten, indem er das<br />

Flag »‐o Debug::pkgDepCache::Auto Install=true«<br />

setzt. Listing 1 visualisiert<br />

über die eingerückten »Installing«-<br />

Anweisungen, wie Libapt die Abhängigkeiten<br />

auflöst, indem sie Schritt für<br />

Schritt den Abhängigkeitsbaum durchwandert.<br />

Noch weitere Details fördert<br />

»-o Debug::pkgDepCache::Marker=1«<br />

zutage.<br />

Anders als bei einer Installation betrifft<br />

ein Upgrade meist eine große Zahl von<br />

Paketen. Das Kommandozeilentool<br />

Apt‐get unterscheidet zwei Arten von<br />

Upgrades: »sudo apt‐get upgrade« installiert<br />

alle neuen Versionen von Software,<br />

die nicht die Installation oder das Löschen<br />

weiterer Pakete erfordern. Beim<br />

Kommando »sudo apt‐get dist‐upgrade«<br />

gibt es diese Einschränkung nicht. Weil<br />

etwa ein neuer Kernel aufgrund von ABI-<br />

Änderungen auch die stabilen Varianten<br />

neuer Pakete einfordert, ist ein »sudo<br />

apt‐get dist‐upgrade« für Upgrades im<br />

Allgemeinen die bessere Wahl.<br />

Der Algorithmus für »upgrade« arbeitet<br />

sehr einfach: Er iteriert über alle installierten<br />

Pakete und markiert sie für ein<br />

Upgrade, wobei er die Option »AutoInstall«<br />

explizit ausklammert. Der »ProblemResolver«<br />

setzt dann problematische<br />

Abhängigkeit zurück auf »keep«.<br />

Der Algorithmus für »dist‐upgrade« arbeitet<br />

ähnlich, allerdings nutzt er »AutoInstall«,<br />

um neue Abhängigkeiten zu<br />

installieren. Auch neue Pakete vom Typ<br />

»Essential: yes« landen damit auf dem<br />

Rechner. Anschließend startet der »ProblemResolver«,<br />

um die verbleibenden<br />

fehlerhaften Abhängigkeiten in Ordnung<br />

zu bringen.<br />

Der Problemlöser<br />

Operationen wie »install«, »dist‐upgrade«<br />

oder »remove« führen unter Umständen<br />

dazu, dass der Cache inkonsistent wird,<br />

das heißt, Abhängigkeiten verletzt oder<br />

Konflikte nicht aufgelöst werden. Dies<br />

kann zum Beispiel passieren, wenn die<br />

Installation von Paket A ein Paket B installiert,<br />

das in Konflikt mit einem bereits<br />

installierten Paket steht.<br />

An dieser Stelle kommt der so genannte<br />

Problem-Resolver von Apt ins Spiel. Er<br />

soll eine Lösung für die Inkonsistenzen<br />

finden, seine Handlungen lassen sich über<br />

»‐o Debug::pkgProblemResolver=true«<br />

beobachten. Neben dem Problem-Resolver<br />

gibt es noch weitere Implementierungen:<br />

So bringt Aptitude eine eigene<br />

Variante mit, daneben gibt es externe<br />

Tools wie »aspcud«.<br />

Pakete mit Punkten


en Score, da viele Pakete vom Notification‐Daemon<br />

abhängen, es aber kein echtes<br />

Paket dafür gibt. Eine weitere Rolle<br />

spielen die Wünsche des Users: Wählt<br />

er ein Paket explizit zur Installation oder<br />

zum Löschen aus, steigt der Wert, um<br />

den Wunsch zu berücksichtigen.<br />

Löschen oder behalten<br />

Ist die Wertigkeit der Pakete festgestellt,<br />

beginnt die eigentliche Arbeit des Problem-Resolvers.<br />

Er iteriert über die nach<br />

Punkten sortierten Pakete. Trifft er auf<br />

nicht erfüllte Abhängigkeiten oder Konflikte,<br />

übernimmt Apt und prüft die am<br />

stärksten betroffenen Exemplare einzeln.<br />

Es versucht nicht erfüllte Abhängigkeiten<br />

mit Hilfe von »keep« oder »delete« zu lösen.<br />

Bleibt dies erfolglos, versucht Apt als<br />

Nächstes, das Paket mit den nicht erfüllten<br />

Abhängigkeiten zurückzuhalten oder<br />

zu löschen. Dies wiederholt es so lange,<br />

bis der Paket-Cache einen konsistenten<br />

Zustand erreicht.<br />

Listing 2 zeigt den Problem-Resolver von<br />

Ubuntu 12.04 in einer Pbuilder-Chroot-<br />

Umgebung bei der Arbeit. Hier lässt sich<br />

gut beobachten, wie das Löschen von<br />

»dpkg‐dev« dazu führt, dass das ebenfalls<br />

installierte Paket »build‐essential« jetzt<br />

eine verletzte Abhängigkeit aufweist (es<br />

hängt von »dpkg‐dev« ab). Der Resolver<br />

entscheidet daraufhin »build‐essential«<br />

ebenfalls zu löschen, um das System<br />

wieder in einen konsistenten Zustand zu<br />

versetzen.<br />

Die Zahlen »10001« hinter »dpkg‐dev« und<br />

»0« hinter »build‐essential« geben jeweils<br />

die Wertigkeit des Pakets an. Der hohe<br />

Wert von »dpkg‐dev« rührt daher, dass<br />

ein expliziter Wunsch des Users existiert,<br />

das Paket zu löschen: Der Problemlöser<br />

verändert seinen Zustand daher nicht,<br />

sondern passt vielmehr die anderen Pakete<br />

mit niedrigerer Wertigkeit an.<br />

Auf los! geht’s los<br />

Befindet sich der Cache endlich in einem<br />

konsistenten Zustand, pflegt Apt die Änderungen<br />

ein. Hierzu unterteilt das Tool<br />

die Installation in die Schritte »remove«,<br />

»unpack« und »configure«, um dann<br />

»dpkg« für die einzelnen Pakete aufzurufen.<br />

Dabei fasst Apt Pakete in Gruppen<br />

zusammen, sodass sich »dpkg« auf größere<br />

Gruppen von ihnen anwenden lässt,<br />

was die Installation beschleunigt. Dank<br />

der Option »‐o Debug::pkgDpkgPM=1«<br />

kann ein Admin im Vorfeld verfolgen,<br />

was »dpkg« tun würde.<br />

In Listing 3 lässt sich beobachten, dass<br />

Apt »dpkg« aufruft und damit explizit<br />

die Architektur im Paketnamen angibt,<br />

um auf einem Multiarchitektur-System<br />

eindeutige Paketnamen zu erzeugen.<br />

Spezialfälle<br />

Für Ubuntu gibt es zusätzlich das Paket<br />

»ubuntu‐release‐upgrader«. Es bringt das<br />

Kommando »sudo do‐release‐upgrade«<br />

mit, über das ein Ubuntu-Nutzer sein<br />

System auf eine neue Version aktualisiert.<br />

Ergänzt er die Option »‐‐devel«, springt<br />

Ubuntu auf die Entwicklungsversion,<br />

zurzeit die 13.10.<br />

Der Release-Upgrader übernimmt Aufgaben,<br />

die sonst ein Admin erledigen<br />

müsste, etwa das Aktualisieren der Konfigurationsdatei<br />

für die Paketquellen<br />

(»/etc/apt/sources.list«). Zudem löst er<br />

Sonderfälle beim Berechnen der Aktualisierung.<br />

So stellt er sicher, dass auf<br />

einem Desktop-Ubuntu stets das Metapaket<br />

»ubuntu‐desktop« existiert.<br />

Daneben deckt der Release-Upgrader Spezialfälle<br />

ab. Ein solcher tritt zum Beispiel<br />

ein, wenn ein Nutzer vom proprietären<br />

»fglrx«- auf den freien »ati«-Grafikkartentreiber<br />

wechselt, weil die neue Version<br />

des proprietären Treibers die Hardware<br />

des Rechners nicht mehr unterstützt. Intern<br />

benutzt der Release-Upgrader die<br />

Bibliothek Libapt, um das Upgrade zu<br />

berechnen und Konflikte zu lösen.<br />

Unattended Upgrades<br />

Ein weiterer Spezialfall entsteht mit dem<br />

Wunsch, Updates automatisch vom System<br />

installieren zu lassen. Dafür sorgen<br />

Unattended Upgrades – wenn man sie<br />

entsprechend einrichtet. Sie installieren<br />

meist Sicherheitsupdates für stabile Versionen<br />

von Debian oder Ubuntu. Automatische<br />

Sicherheitsupdates sind per<br />

sudo dpkg‐reconfigure ‐plow unattendedU<br />

‐upgrades<br />

zu aktivieren. Es gibt noch weitere Konfigurationsoptionen,<br />

die der Admin in der<br />

Datei »/etc/apt/apt.conf.d/50unattended<br />

‐up grades« einrichtet. Mehr Informationen<br />

zum Thema Paketmanager gibt der<br />

Artikel zu Beginn des Schwerpunkts.<br />

Apt plus Python<br />

Neben den Debug-Optionen für »apt‐get«<br />

lässt sich nicht zuletzt mittels »python‐apt«<br />

genau beobachten, wie das<br />

System arbeitet. Das Skript aus Listing<br />

4 verdeutlicht dies, indem es »Problem‐<br />

Resolver« aktiviert (Zeile 3), das Paket<br />

»dbus« löscht (Zeile 6), die kaputten Abhängigkeiten<br />

im Cache betrachtet (Zeile<br />

7) und den »ProblemResolver« erneut<br />

startet, um das Hindernis zu beseitigen<br />

(Zeile 9). Ein finaler Check (Zeile 10)<br />

zeigt, dass der Cache keine kaputten Pakete<br />

mehr enthält. (kki) <br />

n<br />

Der Autor<br />

Michael Vogt ist seit dem Jahr 2000 Debian-<br />

Entwickler und seit 2004 bei Ubuntu als Core<br />

Developer aktiv. Arbeitet er mal nicht an einem<br />

Programmierprojekt wie Apt, Python-apt,<br />

Software-Center, Synaptic oder Unattended Upgrades,<br />

trinkt er mit Vorliebe grünen Tee oder<br />

spielt Hockey.<br />

Listing 3: Apt löscht<br />

01 $ apt‐get remove ‐o Debug::pkgDpkgPM=true dpkg‐dev<br />

02 Reading package lists... Done<br />

03 Building dependency tree<br />

04 Reading state information... Done<br />

05 The following packages will be REMOVED:<br />

06 build‐essential dpkg‐dev<br />

07 0 upgraded, 0 newly installed, 2 to remove and 0 not<br />

upgraded.<br />

08 After this operation, 1228 kB disk space will be<br />

freed.<br />

09 Do you want to continue [Y/n]?<br />

10 /usr/bin/dpkg ‐‐status‐fd 57 ‐‐force‐depends<br />

‐‐force‐remove‐essential ‐‐remove<br />

build‐essential:amd64 dpkg‐dev:all<br />

Listing 4: Python und Apt<br />

01 #!/usr/bin/python<br />

02 import apt<br />

03 apt.apt_pkg.config.set("Debug::pkgProblemResolver"<br />

, "1")<br />

04 cache = apt.Cache()<br />

05 pkgname="dbus"<br />

06 cache[pkgname].mark_delete(auto_fix=False)<br />

07 print cache.broken_count<br />

08 resolver=apt.cache.ProblemResolver(cache)<br />

09 resolver.resolve()<br />

10 print cache.broken_count<br />

Apt intern 09/2013<br />

Titelthema<br />

www.linux-magazin.de<br />

33


Titelthema<br />

www.linux-magazin.de Stabilität 09/2013<br />

34<br />

<strong>Linux</strong>-Upgrades und Anwendungsstabilität bei Ubuntu und Open Suse<br />

Amateure auf Langstrecke<br />

Wer vorhat, über lange Zeit ein LAMP-System „nur“ zu betreiben, wünscht sich, dass der Distributionshersteller<br />

seine Upgrades sowohl unkompliziert gestaltet als auch die Basis stabil hält, auf der eigene Anwendungen<br />

laufen. Zwei freie Distributionen in einer Fünf-Jahres-Retrospektive. Jan Kleinert<br />

© maridav, 123RF.com<br />

Wer im Rechenzentrum komplexe, geschäftskritische<br />

und verzahnt arbeitende<br />

Anwendungen betreibt, hantiert natürlich<br />

mit Enterprise-Distributionen und einem<br />

mit kostenpflichtigen Subscriptions unterlegten<br />

Softwaremanagement auf der<br />

richtigen Spielfeldhälfte. Wenn etwas<br />

nach einem Update oder Upgrade crasht,<br />

darf er den Herstellersupport einfordern<br />

(siehe Artikel „Klasse Luxusklasse?“).<br />

Es existieren aber auch die simplen Fälle,<br />

wo der Server einfach nur über lange Zeit<br />

Dienst schieben soll. Dabei ist es egal, ob<br />

es sich um einen dedizierten Server im<br />

eigenen Haus oder beim Provider handelt<br />

oder um eine virtuelle Maschine. Dem<br />

Admin drängt sich natürlich die Frage<br />

auf, ob es nicht ein „normales“ <strong>Linux</strong><br />

auch tut. Das <strong>Linux</strong>-<strong>Magazin</strong> geht ihr<br />

nach und greift die im deutschsprachigen<br />

Raum wohl verbreitetsten Distributionen<br />

heraus: Ubuntu und Open Suse.<br />

Um deren Langzeitstabilität zu beurteilen,<br />

sind die <strong>Magazin</strong>-Tester fünf Jahre<br />

in der Zeit zurückgereist. Dann simulierten<br />

sie die Arbeitsgänge, die ein (an<br />

der Distribution eher desinteressierter)<br />

Admin bis heute hätte leisten müssen,<br />

um ein Security-gepatchtes 64-Bit-System<br />

zu behalten. Als Indikator für die Nachhaltigkeit<br />

des Ganzen diente die deutsche<br />

Version des freien Content Management<br />

System Joomla 2.5. [1]. Um das<br />

machen Distributionshersteller offenbar<br />

gern einen Bogen – vielleicht, weil sie<br />

Versionskonflikte zwischen dessen Komponenten<br />

und dem erforderlichen LAMP<br />

befürchten. Das macht es zum idealen<br />

Funktionsbenchmark-Kandidaten.<br />

Ubuntu LTS Server Edition<br />

Wer mit Ubuntu <strong>Linux</strong> Desktop arbeitet<br />

und Anwenderwissen aufgebaut hat,<br />

für den erscheint es nur natürlich, seine<br />

Distribution auch auf Servern zu verwenden<br />

– zumal es eine Server Edition gibt.<br />

Die fällt zudem im Vergleich zur Desktop<br />

Edition und zu den Mitbewerbern als<br />

sehr schlank auf, passt auf eine CD und<br />

enthält weder grafische Oberfläche noch<br />

GUI-Programme. Wenig Software bedeutet<br />

hier, dass im laufenden Betrieb auch<br />

wenig Pakete zu warten sind.<br />

Es heißt im Fall von Ubuntu Server auch,<br />

dass Admins kaum Verwaltungswerkzeug<br />

bekommen und Konfigurationsdateien<br />

manuell ändern müssen. Mit der Komforteinbuße<br />

nähert sich Canonical andererseits<br />

wieder der ursprünglichen Philosophie<br />

von Unix und <strong>Linux</strong>, die Klarheit<br />

und Kleinteiligkeit kombiniert. Salopp gesagt:<br />

Alte Unix-Hasen kommen mit Ubuntu<br />

Server sicher auf Anhieb klar.<br />

Die dem Artikel zugrunde liegende Aufgabe<br />

unterstützt Ubuntu zudem mit seinen<br />

langzeitstabilen LTS-Versionen. Für<br />

die Server Editions bedeutet „Long Term<br />

Support“, dass auch Anwender ohne<br />

Supportvertrag nach dem Erscheinen<br />

fünf Jahre lang mit laufend bereitgestellten<br />

Securityfixes in Paketform rechnen<br />

dürfen. Dieser Test beginnt denn auch<br />

mit Ubuntu 8.04 LTS, Codename „Hardy<br />

Heron“ [2]. Die Version erschien im April<br />

2008, der Support lief im Mai 2013 aus.<br />

Bei der Installation von CD folgten die<br />

Tester so gut es ging den Empfehlungen<br />

der Wizard-Macher, um ein System von<br />

der Stange zu bekommen. Bei der Paketvorauswahl<br />

nahmen sie »LAMP«. Nach<br />

dem Kopieren der Pakete klappte der<br />

Ubuntu-Start von Festplatte erwartungsgemäß<br />

gut. Um Joomla aufs System zu<br />

bekommen, mussten sie nur den Tarball<br />

im Document-Root »/var/www/joomla«<br />

entpacken und Owner und Group aller<br />

CMS-Dateien manuell setzen. Das per<br />

Browser von außen gestartete Joomla-<br />

Setup verlief ohne Fehler. Gleich im Anschluss<br />

war das CMS einsatzbereit.


Weil »apt‐get check« nichts bemängelte,<br />

griffen die Tester mit »apt‐get update« ins<br />

mittlerweile abgelaufene Online-Repository.<br />

Auch nach dieser Aktion liefen alle<br />

Joomla-Komponenten klaglos weiter.<br />

Upgrade auf 10.04 LTS<br />

Im Netz existieren lange Anleitungen,<br />

welche Vor- und Nachbereitungen im<br />

Zuge von Ubuntu-Upgrades zu treffen<br />

sind. Die Tester gingen, wie vermutlich<br />

die meisten Anwender in der Praxis<br />

auch, weit weniger zart zu Werke und<br />

tippten lediglich im laufenden System<br />

»sudo do‐release‐upgrade«. Das funktionsmächtige<br />

Kommandozeilentool, das<br />

kaum Parameter kennt, kümmert sich<br />

um die für ein Upgrade nötigen Arbeiten.<br />

Ubuntus Konzept sieht eleganterweise<br />

Online-Upgrades innerhalb der laufenden<br />

Distribution vor – der Admin muss also<br />

nicht mit Datenträgern hantieren wie bei<br />

den meisten anderen <strong>Linux</strong>en.<br />

Wer »do‐release‐upgrade« auf eine LTS-<br />

Distribution anwendet, landet intelligenterweise<br />

bei der nächsten LTS. Sprünge<br />

zur übernächsten Version sind nicht vorgesehen.<br />

Die Systematik der Upgrade-Zielsuche<br />

ist übrigens in der Datei »/etc/update‐manager/release‐upgrades«<br />

hinter<br />

dem Eintrag »Prompt=« änderbar.<br />

Das »do‐release‐upgrade«, das im Test<br />

von der 8.04 zur 10.04 führte, ging<br />

schmerzarm vonstatten: Zum einen kam<br />

eine Nachfrage zur Konfigurationsdatei<br />

für Dhclient, die Tester folgten dem Vorschlag,<br />

die alte Datei beizubehalten. Außerdem<br />

tauchten Warnungen zu Apparmor-Modulen<br />

auf. Die Frage der Routine,<br />

20 alte Pakete entfernen zu wollen – GCC<br />

4.2, Python 2.5 und diverse Bibliotheken<br />

–, bejahten die Tester. Geschafft: Nach<br />

einem Neustart meldete sich der Laborrechner<br />

als Ubuntu 10.04. Angenehm<br />

überraschte der Umstand, dass das manuell<br />

installierte Joomla-CMS auch sofort<br />

loslief und erreichbar war.<br />

ßen sie auf der Maschine abermals ein<br />

»do‐release‐upgrade« an.<br />

Der Vorgang ähnelte dem vorigen sehr,<br />

dauerte aber merklich länger. Auch stellte<br />

das Setup den Testern mehr (allerdings<br />

einfache) Fragen. Am Ende entfernte das<br />

Tool 18 Pakete, hauptsächlich Libraries<br />

und Python 2.6. Nach einem Neustart<br />

zeigte sich die Joomla-Erlebniskulisse:<br />

Alles bestens (Abbildung 1 und 2).<br />

Open Suse 11.0<br />

Im Juni 2008 veröffentlichte die Open-<br />

Suse-Community ihre Version 11.0 [3],<br />

alle acht Monate folgt eine neue Version.<br />

Gerade mal 18 Monate versorgen die Macher<br />

die Repositories mit Sicherheits- und<br />

Bugfix-Updates – eigentlich nicht gerade<br />

eine Einladung für den Langzeiteinsatz.<br />

Als Evergreen [4] firmiert ein Unterprojekt,<br />

das ausgewählte Versionen künftig<br />

länger pflegen will.<br />

Der Installer von Open Suse 11.0 ist gleich<br />

nach dem Booten von DVD grafisch viel<br />

opulenter als der von Ubuntu Server. Die<br />

Tester wählten mit Hinblick auf den Einsatzzweck<br />

unter »Desktop auswählen«<br />

die Option »Weitere | Minimale Serverauswahl<br />

(Textmodus)«. Beim ersten Booten<br />

von Festplatte irritierte eine Fehlermeldung<br />

von »/usr/sbin/smartd«.<br />

Dass die »Serverauswahl« tatsächlich minimal<br />

ausfällt, merkten die Tester daran,<br />

dass weder Apache noch MySQL installiert<br />

waren. Mit der Konsolenversion von<br />

Yast 2 installierten sie also das Softwareschema<br />

»Web‐ und LAMP‐Server« nach.<br />

Die Setup-Routine des wie bei Ubuntu<br />

manuell eingespielten Joomla scheiterte<br />

trotzdem. Wie sich herausstellte, beinhaltet<br />

das »Web‐ und LAMP‐Server«-Schema<br />

entgegen der Yast-Beschreibung statt<br />

MySQL ein PostgreSQL. Die Tester installierten<br />

nun MySQL nach und schalteten<br />

sie im Runlevel-Editor ein. Um Joomla zu<br />

erwecken, fehlten außerdem das Paket<br />

»php5‐zlib« und ein Apache-Restart per<br />

Inetd. Die gute Nachricht: Nach einem<br />

Online-Update (mit Delta-RPMs), das in<br />

zwei Stufen und mit einem Reboot ablief,<br />

funktionierte das CMS weiter.<br />

Upgrade auf Version 11.1<br />

Suses Standard-Update-Konzept erwartet<br />

den Datenträger der nächsten <strong>Linux</strong>-Version<br />

und dass der Rechner heruntergefahren<br />

ist. Die Tester booteten darum die<br />

11.0-Maschine von einer Open-Suse-11.1-<br />

DVD, wählten dann den Punkt zum Installieren,<br />

dann Aktualisieren (Abbildung<br />

3). Beides ging ohne Probleme ab, ein<br />

Test des CMS verlief positiv. Das blieb<br />

auch nach dem anschließend per Yast<br />

angestoßenen Online-Update so.<br />

Nach gleichem Schema lief der Übergang<br />

zu Open Suse 11.2, mit dem Unterschied,<br />

Stabilität 09/2013<br />

Titelthema<br />

www.linux-magazin.de<br />

35<br />

Schlusspunkt Ubuntu 12.04<br />

Bei der Software-Ausstattung im April<br />

2010 gut angekommen und mit den aktuellen<br />

Sicherheitsupdates versorgt, rüsteteten<br />

sich die Tester für den zweiten großen<br />

Sprung. Ohne irgendwelche Paketquellen<br />

zu prüfen oder gar zu einzustellen, stie-<br />

Abbildung 1 und 2: Die Systeminfo-Seite im Joomla-Backend spiegelt hier die Ubuntu-Versionsgeschichte<br />

wider – oben 8.04, unten 12.04.


Titelthema<br />

www.linux-magazin.de Stabilität 09/2013<br />

36<br />

Abbildung 3: Nach dem Booten von der Suse-DVD ist zum Upgraden der<br />

Modus »Aktualisierung« die richtige Wahl – hier beim Weg von 11.0 zu 11.1.<br />

dass Yast meldete: »Es konnten nicht alle<br />

Konflikte gelöst werden. Ein manueller<br />

Eingriff ist erforderlich.« Es stellte sich<br />

heraus, dass zwei alte »kernel‐default«-<br />

-Pakete im Clinch lagen. Beim unbeaufsichtigten<br />

Booten fiel den Testern eine<br />

ungünstige Grub-Konfiguration auf die<br />

Füße, die versuchte, den 11.0er-Kernel zu<br />

booten, was unter kryptischen Fehlermeldungen<br />

im Single Mode endete. Der nun<br />

gewählte, neue Kernel war trotz der beim<br />

11.0-Setup angekündigten Servernutzung<br />

ein »2.6.31.5‐0.1‐desktop«.<br />

Die nächste Ungereimtheit: Yast meldet<br />

beim Versuch online zu aktualisieren: »Es<br />

ist noch kein Aktualisierungs‐Repository<br />

konfiguriert«. Da kein einfacher Weg,<br />

den Verlust der Repositories automatisch<br />

zu beheben, ersichtlich war, beließen es<br />

die Tester dabei. Joomla war davon zum<br />

Glück nicht zu beeindrucken.<br />

Open Suse 11.3 und 11.4<br />

Das Upgrade von der Chaosversion 11.2<br />

auf Suse 11.3 versetzte das System in<br />

einen besseren Zustand. Yast konnte<br />

auch wieder Online-Updates ausführen.<br />

Nach dem dann erforderlichen Reboot<br />

verschwand übrigens auch die Fehlermeldung<br />

von »/usr/sbin/smartd«, die den<br />

Test seit Version 11.0 begleitet hatte.<br />

Der positive Eindruck konnte sich mit<br />

dem Übergang zu Suse 11.4 leider nicht<br />

festigen: Die Upgrade-Routine kündigte<br />

einen Paketkonflikt »preload‐kmp‐default‐Version<br />

benötigt ksym Version«<br />

nebst »Nicht installierbare Anbieter: kernel‐default‐2.6.37.Version«<br />

an. Die nicht<br />

leichte Entscheidung zwischen Deinstal-<br />

lation, Behalten der alten<br />

Version und dem<br />

Ignorieren der Abhängigkeiten<br />

fiel auf die<br />

erste Option.<br />

Das Aktualisieren von<br />

572 Paketen, das Einspielen<br />

von 43 neuen<br />

und das Löschen von<br />

35 weiteren bereitete<br />

dann keine Probleme.<br />

Beim Neustart irritier te,<br />

dass »Starting mce log«<br />

nicht geklappt hätte.<br />

Joomla dagegen funktionierte<br />

prächtig. Als<br />

hätten die 1,3 GByte<br />

des DVD-Upgrades nicht gereicht, dauerte<br />

die Online-Aktualisierung auffällig lange.<br />

Mit einem weiteren Neustart verschwand<br />

dafür die Mcelog-Fehlermeldung.<br />

Übergang zu 12.1 und 12.2<br />

Trotz neuer Major-Version, die wegen des<br />

Wechsels auf den Dreier-Kernel gerechtfertigt<br />

erscheint, läuft Suses Upgradeprozedur<br />

für den Admin genau wie zwischen<br />

zwei Elfern ab. Nach Einspielen von 1,5<br />

GByte Update-Paketen ging der Systemstart<br />

von Platte ohne Fehlermeldungen<br />

vonstatten. Doch oh Schreck: Joomla war<br />

erstmals nicht mehr erreichbar! Tests ergaben,<br />

dass Apache HTML ausliefern<br />

konnte, auch PHP und MySQL waren<br />

zugegen. Die Tester fanden zwei Workarounds:<br />

Entweder in Yast eine Apache-<br />

Neukonfiguration erzwingen oder Apache<br />

per Initd neustarten. Seltsam.<br />

Nach dem nächsten Online-Update meldete<br />

MySQL beim Hochfahren wahrheitswidrig,<br />

dass »/dev/stderr« fehle. Konsequenterweise<br />

blieb die Anzeige hängen<br />

– vermutlich, weil eine Fehlerausschrift<br />

des Daemons keinen Ausgabekanal fand.<br />

Nach [Enter] ging die Anzeige weiter.<br />

Das Verhalten blieb über das Upgrade auf<br />

Open Suse 12.2. hinaus bestehen. Gleiches<br />

galt für das hängende Joomla.<br />

Wertung und Fazit<br />

Vermutlich wird niemand behaupten wollen,<br />

Suse sei schon immer eine Upgrade-<br />

Spezialistin gewesen. In Anwenderforen<br />

überwiegt historisch wie auch aktuell<br />

die Meinung, die Neuinstallation sei der<br />

Königsweg, um von einer zur nächsten<br />

Version zu gelangen. Andererseits bieten<br />

die Nürnberger Installationsmedien die<br />

Upgrade-Funktion explizit an. Und: Suses<br />

traditionelle Herangehensweise, die<br />

alte Distribution im heruntergefahrenen<br />

Zustand zu erneuern, lässt eigentlich bessere<br />

Ergebnisse erwarten als von <strong>Linux</strong>-<br />

Bundles, die Gleiches aus dem laufenden<br />

Betrieb heraus versuchen.<br />

Hinzu kommt, dass die gestellte Aufgabe<br />

die Latte nicht sonderlich hoch legt: Bis<br />

auf Joomla – was hakelig genug zu installieren<br />

war – begann die Reise durch die<br />

Geschichte bei einem knitterfreien Open<br />

Suse 11.0 von der Stange. Dass diese so<br />

erlebnisreich verlief, sorgte im Testlabor<br />

für einiges Erstaunen. Es machte sogar<br />

das Zitat eines früheren Redakteurskollegen<br />

die Runde: „Das hat wohl nie einer<br />

ausprobiert.“<br />

Aber um das eigentliche Ziel des Tests<br />

nicht aus dem Auge zu verlieren: Auf<br />

beiden Distributionen blieb das an den<br />

Paketverwaltungen vorbei installierte<br />

Joomla 2.5 über simulierte fünf Jahre<br />

lang unmodifiziert lauffähig. Das ist so<br />

selbstverständlich nicht, da sich Apache<br />

und seine Module in der Zeit merklich<br />

veränderten. Auch MySQL musste sein<br />

Datenbankformat in den fünf Jahren<br />

kompatibel, und die Sprache PHP ihre<br />

Sprachsyntax und die Bibliotheksschnittstellen<br />

trotz hochtickender Versionsnummer<br />

stabil halten.<br />

Beide Kandidatinnen, die eine Deb-, die<br />

andere RPM-basiert, haben die ihnen<br />

gestellte Marathonaufgabe mit Bravour<br />

gemeistert. Ihre Langzeitstabilität, die<br />

man eher als exklusives Merkmal in der<br />

mit teuren Subscriptions unterlegten<br />

Enterprise-<strong>Linux</strong>-Klasse erwartet, bildet<br />

eine prima Basis für eigene, oft ebenso<br />

simple wie wichtige Anwendungen, die<br />

ohne viel Wartungsaufwand über Jahre<br />

einfach nur laufen sollen. Bravo! n<br />

Infos<br />

[1] Joomla, deutsch: [http:// www. jgerman. de]<br />

[2] Ubuntu 8.04 LTS Server Edition:<br />

[http:// www. ubuntu. com/ news/ ubuntu‐8.​<br />

04‐lts‐server]<br />

[3] Open Suse 11.0: [https:// www. suse. com/​<br />

releasenotes/ x86_64/ openSUSE/ 11. 0/]<br />

[4] Evergreen: [http:// en. opensuse. org/​<br />

openSUSE:Evergreen]


Titelthema<br />

www.linux-magazin.de Enterprise 09/2013<br />

38<br />

RHEL, SLES, Ubuntu: Automatische Updates bei Enterprise-Distributionen<br />

Klasse Luxusklasse?<br />

Die teuren Managementwerkzeuge der Enterprise-Systeme versprechen Admins zentral gesteuerte, reibungslose<br />

Updates und sorgenfreien Rundumservice. Hält die Technik unter der Haube von SLES, RHEL und Ubuntu<br />

dieses Versprechen oder leistet sie kaum mehr als die Holzklasse normaler Distributionen? Martin Loschwitz<br />

© timurpix, 123RF.com<br />

Damit er ruhig schlafen kann, wünscht<br />

sich der typische Admin meist nur zwei<br />

Dinge: Die von ihm überwachten Systeme<br />

mögen funktionieren und keine zusätzliche<br />

Arbeit verursachen. Zum anderen<br />

sollen die Systeme sicher sein und entsprechend<br />

korrigierte Pakete eventuelle<br />

Sicherheitslöcher möglichst automatisch<br />

korrigieren.<br />

Herzinfarktgefahr<br />

Wer aber jetzt glaubt, die regelmäßige,<br />

automatische Installation von Security-<br />

Fixes sei dafür ausreichend, der sieht sich<br />

getäuscht. Erfahrene Admins können ein<br />

Lied davon singen, dass Updates auch bei<br />

Enterprise-Systemen viel mehr Faktoren<br />

umfassen als „einfach mal ein neues Paket<br />

einspielen“.<br />

Im Unternehmensbereich spielen die<br />

Enterprise-Distributionen mit kostenpflichtigen<br />

Subskriptionen eine wichtige<br />

Rolle. Der Deal dabei lautet: Suse, Red<br />

Hat oder Canonical kümmern sich recht<br />

zügig um zeitnahe Fixes und versprechen<br />

eine ausreichend lange Lebenszeit<br />

ihrer Systeme, damit der Kunde nicht zu<br />

oft ein komplettes Distributions-Upgrade<br />

bewältigen muss ([1], [2]).<br />

Upgrades und Updates<br />

In ausgewachsenen IT-Setups erreicht<br />

das flächendeckende Upgrade von einer<br />

Version einer Distribution auf die<br />

nächste nicht selten biblische Ausmaße.<br />

Mit Enterprise-Distributionen erkaufen<br />

sich Unternehmen die Sicherheit, dass<br />

ein derart großes Update nur alle paar<br />

Jahre ansteht. Dann aber geht's zur Sache:<br />

Meist kommt gleich die gesamte<br />

Applikation auf den Prüfstand und die<br />

Migration zieht sich über Monate.<br />

Ähnliche Faktoren wie bei Distributions-<br />

Upgrades betreffen aber auch die vielen<br />

regulären Updates im Alltag. Technisch<br />

ist das zwar kein Problem, bieten doch<br />

alle Paketmanager und deren GUIs entsprechende<br />

Funktionen. Doch dass bei<br />

einem unbewachten Upgrade einiges passieren<br />

kann, zeigt ein eigener Artikel in<br />

dieser Titelstrecke.<br />

In Enterprise-Setups kommen aber weitere<br />

Gefahren hinzu: Längst nicht jede<br />

Applikation übersteht den Reboot ohne<br />

Probleme, noch schwieriger wird es,<br />

wenn sich Setups über mehrere Server<br />

erstrecken. Wer Clustersoftware einsetzt,<br />

möchte zudem verhindern, dass der<br />

Clustermanager aus dem Tritt gerät und<br />

beim Reboot von einem Knoten ein Failover-Festival<br />

startet, obwohl die Admins<br />

eigentlich doch „nur ein paar Updates“<br />

eingespielt haben.<br />

Die Liste der Dinge, die bei einem automatischen<br />

Upgrade schiefgehen können,<br />

ist lang und führt unmittelbar zu<br />

der Frage, welche Möglichkeiten denn<br />

Enterprise-Distributionen bieten, um aus<br />

dieser Zwickmühle auszubrechen, ohne<br />

den Administrator mit Arbeit zu überhäufen.<br />

Dieser Artikel beschäftigt sich im weiteren<br />

Verlauf mit den drei großen Enterprise-Distributionen<br />

(RHEL, SLES und<br />

Ubuntu), für die der Hersteller ein zentrales<br />

Managementwerkzeug für Upgrades<br />

nebst entsprechendem Support zur Verfügung<br />

stellt.<br />

E Red Hat Customer Portal<br />

Red Hat gilt bei Spöttern als jene Firma,<br />

die die Namen ihrer Produkte grundlos,<br />

aber in regelmäßigen Abständen ändert.<br />

Was bis vor nicht allzu langer Zeit noch


Abbildung 1: Das frühere Red Hat Network mit seinen Satellite-Servern bringt jetzt als Red Hat Customer<br />

Portal die Updates zu den Kunden.<br />

das Red Hat Network war, firmiert mittlerweile<br />

unter dem Begriff Red Hat Customer<br />

Portal (RHCP, Abbildung 1, [3]).<br />

Die Funktionalität blieb allerdings weitgehend<br />

identisch.<br />

Nur wer ein „echtes“ Red Hat mit Supportvertrag<br />

betreibt (Subscription), wird<br />

das Customer Portal überhaupt zu Gesicht<br />

bekommen. Centos, Scientifix <strong>Linux</strong><br />

oder ein anderer RHEL-Klon bleiben außen<br />

vor. Wer aber ein RHEL inklusive<br />

Lizenz besitzt, muss allerdings – und<br />

das ist im Vergleich zu Suse und Ubuntu<br />

durchaus erwähnenswert – nicht zusätzlich<br />

Geld abliefern, damit er die Managementfunktionen<br />

vom Red Hat Customer<br />

Portal nutzen kann. Ist ein Rechner im<br />

Portal registriert, lässt er sich per Mausklick<br />

aus der Weboberfläche heraus entsprechend<br />

verwalten. In diese Verwaltung<br />

fallen auch die Patches, die Red Hat<br />

„Errata“ getauft hat.<br />

Der Hersteller erwähnt in seiner Dokumentation<br />

übrigens ausdrücklich die<br />

innere Zerrissenheit, der Admins beim<br />

Thema Security-Updates ausgesetzt sind,<br />

und empfiehlt letztlich, im produktiven<br />

Umfeld Updates zu testen, bevor sie den<br />

Weg auf das System finden. Hält der<br />

Administrator ein Sicherheitsupdate für<br />

hinreichend stabil, um es zu installieren,<br />

kann er das mit dem Red Hat Customer<br />

Portal per Klick auf vielen verschiedenen<br />

Rechnern gleichzeitig tun.<br />

Das Portal nutzt die typische Staffelung,<br />

die alle Systeme in diesem Vergleich aufweisen,<br />

und teilt dem Admin mit, ob relevante<br />

Updates vorliegen oder welche der<br />

insgesamt vorhandenen Updates für das<br />

jeweilige System sinnvoll sind. Stimmt<br />

der Admin dem Vorschlag zu, rattert das<br />

verwaltete System sofort los und aktualisiert<br />

seinen Softwarebestand.<br />

Insgesamt erweist sich das RHCP als<br />

unspektakulär. Die von Red Hat beworbene<br />

Update-Funktionalität ist vorhanden<br />

und steht dem Admin bei Bedarf zur<br />

Verfügung. Automatische Updates kann<br />

er anhand verschiedener Kriterien konfigurieren.<br />

E Suse Manager<br />

Anders als bei Red Hat und Ubuntu ist<br />

bei dem <strong>Linux</strong> aus Nürnberg kein Dienst<br />

zu finden, der das Servermanagement<br />

über ein von Suse gehostetes Werkzeug<br />

erlaubt. Während man sich als Admin<br />

bei Ubuntus Landscape oder dem Red<br />

Hat Network auf der jeweiligen Website<br />

einloggt und die gewünschten Änderungen<br />

vornimmt, kommt der Suse Manager<br />

[4] als fertige Appliance daher, die lokal<br />

laufen muss.<br />

Wer sich von dem Schock erholt hat,<br />

den die Rechnung für den Manager erst<br />

mal auslöst (die Einzellizenz schlägt laut<br />

Liste mit satten 11 000 Euro zu Buche),<br />

schnappt sich ein lokales System und<br />

installiert darauf den Manager. Will der<br />

Admin dafür kein Blech opfern, dann betreibt<br />

er ihn in einer virtuellen Maschine.<br />

Bei der Kalkulation darf er eines nicht<br />

außer Acht lassen: Zusätzlich zu den Lizenzen,<br />

die für den Manager notwendig<br />

sind, kommen noch die Lizenzen für die<br />

SLES-Systeme selbst – ohne die gibt es<br />

erst gar keine Update-Repositories, aus<br />

denen die Aktualisierungen sinnvoll zu<br />

beziehen wären.<br />

Wer jedoch lizenzierte SLES-Systeme an<br />

dieser Instanz des Suse Manager anmeldet<br />

(Abbildung 2), kann sich die umfassenden<br />

Managementfunktionen zunutze<br />

machen. Vollständiges Monitoring ist<br />

ebenso enthalten wie die Möglichkeit,<br />

plattformweit über den Scheduler Events<br />

zu planen, die dann auf den dafür ausgewählten<br />

Servern stattfinden.<br />

Das Thema Update-Management nimmt<br />

bei Suse einen eigenen Platz ein, wobei<br />

Suse lieber den Begriff „Compliancy Management“<br />

nutzt. De facto geht es aber<br />

um das Gleiche wie bei der Konkurrenz:<br />

Das automatische Einspielen der wich-<br />

Abbildung 2: Automatische Updates mit Suse Manager sind möglich und bieten dann eine zentrale Verwaltung<br />

– sobald man den Schock nach Erhalt der Rechnung überwunden hat.<br />

Enterprise 09/2013<br />

Titelthema<br />

www.linux-magazin.de<br />

39


Titelthema<br />

www.linux-magazin.de Enterprise 09/2013<br />

40<br />

Abbildung 3: Ubuntu Landscape implementiert Remote-Management mit automatischen Updates in Ubuntu.<br />

tigsten Updates, die bei Suse traditionell<br />

„Patches“ heißen.<br />

Ein solcher Flicken ist im Grunde eine<br />

Liste aktualisierter Pakete. Die verfügbaren<br />

Patches für ein System listet der<br />

Manager übersichtlich auf und lässt den<br />

Admin zwischen verschiedenen Optionen<br />

entscheiden.<br />

Suse Manager unterteilt bereitstehende<br />

Patches in drei Stufen mit ansteigender<br />

Relevanz:<br />

n Mit einem Ausrufezeichen versehene<br />

kritische Security-Patches.<br />

n Bugs, die Fehler korrigieren, zum Beispiel<br />

Crashes in Desktopsoftware.<br />

n Verbesserungen und Optimierungen<br />

an Paketen, etwa Versions-Upgrades.<br />

Für einzelne Rechner legen Administratoren<br />

fest, ob Pakete dort per automa-<br />

tischem Update einzuspielen sind, und<br />

wenn ja, welches Level ein Patch haben<br />

muss, damit es sich für das Upgrade auf<br />

dieser Maschine qualifiziert.<br />

Suse Manager selbst ist ebenfalls fleißig<br />

und erstellt eine Vorauswahl der „Relevant<br />

Patches“, die auf jedes einzelne<br />

System zugeschnitten ist. Per Klick lässt<br />

sich dann bestimmen, ob die festgelegten<br />

Kriterien Updates automatisch auf das<br />

System bringen oder ob die Installation<br />

vom Admin händisch anzustoßen ist.<br />

Suse Manager beherrscht übrigens auch<br />

das genaue Gegenteil: Wenn der Admin<br />

mal viel Zeit hat oder sich Ärger ersparen<br />

möchte, legt er per Klick im Manager-<br />

Fenster Patch für Patch fest, welches seinen<br />

Weg auf den Server finden soll und<br />

welches nicht.<br />

Insgesamt macht der Suse Manager einen<br />

sehr flexiblen Eindruck, der hohe Preis<br />

scheint einigermaßen gerechtfertigt.<br />

E Ubuntu Landscape<br />

Den jüngsten Dienst für Enterprise-<br />

Systemverwaltung bietet Ubuntu an:<br />

Landscape [5]. Wer bei Canonical einen<br />

Supportvertrag kauft, kriegt auf das Verwaltungswerkzeug<br />

Zugriff. Im Grunde ist<br />

dessen Funktionalität ganz ähnlich der<br />

von Red Hat und Suse, auch wenn Landscape<br />

unter der Haube natürlich andere<br />

Tags nutzt und einen anderen Arbeitsablauf<br />

praktiziert (Abbildung 3).<br />

Unter dem Menüpunkt »Packages« lassen<br />

sich aus der Ferne Pakete installieren<br />

und löschen. Sind Sicherheitsupdates<br />

verfügbar, so weist Landscape über eine<br />

entsprechende Nachricht darauf hin und<br />

ermöglicht es dem Admin, später eine<br />

entsprechende Auswahl zu treffen. Der<br />

gesamte Vorgang ist auch für viele verschiedene<br />

Rechner gleichzeitig nutzbar,<br />

sodass selbst ein Update von Hunderten<br />

Rechnern in der Serverfarm keine Klick-<br />

Orgien verursacht.<br />

Fazit: Kein Kinderspiel<br />

Egal was das Marketing verspricht: Automatische<br />

Security-Updates sind und<br />

bleiben eine wackelige Angelegenheit,<br />

die der Admin mit Bedacht handhaben<br />

sollte. Weil die Gründe dafür nicht nur<br />

Puppet und Chef<br />

Wer keinem der großen Distributoren Geld<br />

für ein zentrales Managementwerkzeug zahlen<br />

möchte, muss auf ein solches Tool nicht<br />

zwangsläufig verzichten. Die freien Alternativen<br />

Puppet und Chef bieten sich insbesondere<br />

dort auch für Upgrades an, wo ohnehin schon<br />

eines der beiden Werkzeuge zum zentralen Konfigurationsmanagement<br />

im Einsatz ist.<br />

Unterschiedliche Systeme verwalten<br />

Ein weiterer Vorteil: Nur so lassen sich unterschiedliche<br />

Distributionen zentral betreuen. Anders<br />

als die kommerziellen Tools suggerieren,<br />

ist es durchaus möglich, Systeme von Red Hat,<br />

Suse und Ubuntu gemeinsam unter einem Dach<br />

zu verwalten. Theoretisch lässt sich so über die<br />

Grenzen der Systeme hinweg beispielsweise ein<br />

Security-Update anstoßen, wobei Puppet und<br />

Chef auf den jeweiligen Systemen das für die<br />

Distribution spezifisch Nötige erledigen. In der<br />

Praxis bieten »dpkg«-gestützte Distributionen<br />

mehr Freiheiten in der Update-Verwaltung als<br />

ihre RPM-Kollegen.<br />

Puppet-Apt – der Apt-Dater und das Kochbuch<br />

für die Chef-unattended-Upgrades<br />

Eine besonders hübsche Kombination ist die<br />

aus Puppet und Apt auf Ubuntu oder Debian:<br />

Mittels »puppet‐apt« [6] lässt sich die Paketverwaltung<br />

via Apt unmittelbar aus Puppet<br />

heraus steuern, und über »apt‐Dater« [7]<br />

erhält »puppet‐apt« direkte Angaben darüber,<br />

ob Pakete automatisch zu aktualisieren sind.<br />

Zur Not stoßen Admins über diese Kombination<br />

auch manuelle Updates an, etwa wenn ein dringendes<br />

Sicherheitsproblem auftaucht.<br />

Wer auf Chef statt auf Puppet setzt, kommt<br />

bei Debian-Systemen über das »chef‐unattended‐upgrades«-Cookbook<br />

[8] weiter. Es<br />

nutzt auf Debian-Systemen zwar auch nur die<br />

»unattended‐upgrades«-Funktion, erlaubt es<br />

aber, wenigstens die Einstellungen zentral zu<br />

steuern, also zum Beispiel, welche Pakete von<br />

den Unattended Upgrades denn ausgenommen<br />

sein sollen und welche nicht.<br />

Puppet-yum: Yum automatisieren auf Enterprise-<strong>Linux</strong><br />

Puppet-yum [9] unterstützt auf Enterprise-<br />

Systemen die Automatik von Yum. Über eine<br />

zentrale Konfigurationsdatei stellt der Admin<br />

ein, ob Yum Updates per Crontab durchführen<br />

soll oder nicht. So erlaubt es das Chef-Modul,<br />

zum Beispiel nach entsprechenden Staging-Tests<br />

die automatischen Updates zu aktivieren und so<br />

zeitlich gesteuert die Hosts auf den neuesten<br />

Stand zu bringen. Puppet-yum unterstützt aktuelle<br />

Red-Hat-Enterprise-<strong>Linux</strong>-Systeme, wobei<br />

die hiermit kompatiblen Distributionen freilich<br />

eingeschlossen sind.


ein technischer Natur sind, tun sich<br />

auch die Hersteller schwer.<br />

Immerhin schaffen es RHCP, Land scape<br />

und Suse Manager, die Updates von Systemen<br />

zentral und hinter einem hübschen<br />

GUI versteckt zu steuern. Wer gern klickt,<br />

kommt hier voll und ganz auf seine Kosten.<br />

Einen echten technischen Mehrwert<br />

bietet aber von den vorgestellten Systemen<br />

eigentlich keines.<br />

Sinnfrei, teuer, aber schick<br />

Dass automatische Updates in vielen Setups<br />

gar nicht sinnvoll sind, daran können<br />

die Werkzeuge ohnehin nur wenig<br />

ändern. Die von den großen Enterprise-<br />

Distributionen gebotenen Update-Funktionen<br />

schaffen es nur selten, das beträchtliche<br />

Preisschild vergessen zu machen.<br />

Wer Red Hat nutzt, hat in der Regel für<br />

den Support ohnehin schon gezahlt und<br />

somit Zugriff auf das Red Hat Customer<br />

Portal. Bei Suse oder Ubuntu zahlt er<br />

für die gebotenen Managementfeatures<br />

extra, und das nicht zu knapp. Etwas<br />

behutsamer geht Canonical zu Werke,<br />

wo Landscape ebenfalls Bestandteil der<br />

Support-Subscriptions ist. Die kosten bei<br />

allen Kandidaten wenige Hundert Euro<br />

pro Maschine.<br />

Im Hinblick auf die Qualität der gebotenen<br />

Features war bei den drei Probanden<br />

kein nennenswerter Unterschied zu<br />

erkennen; Suse Manager, das Red Hat<br />

Customer Portal und Ubuntu Landscape<br />

sind nahezu identisch in Funktionsumfang<br />

und Flexibilität, zumindest was die<br />

Konfiguration angeht. Wer nicht bereits<br />

einen der Dienste für das Management<br />

der eigenen Systeme nutzt, braucht sich<br />

derzeit auch keine Gedanken darüber zu<br />

machen. Vielmehr darf er einen Blick auf<br />

<strong>Linux</strong>-Standard-Tools wie Puppet oder<br />

Chef werfen, die ihm viel Arbeit abnehmen<br />

können (siehe Kasten „Puppet und<br />

Chef“) und Systeme unterschiedlicher<br />

Hersteller verwalten. (mfe) n<br />

Infos<br />

[1] Titelthema zur Update-Qualität von<br />

Distributionen, „Paketservice im Test“:<br />

<strong>Linux</strong>-<strong>Magazin</strong> 03/13 S. 22 bis 38<br />

[2] Markus Feilner, „Und läuft und läuft“:<br />

<strong>Linux</strong>-<strong>Magazin</strong> 03/13, S. 30<br />

[3] Red Hat Customer Portal:<br />

[https:// access. redhat. com/ home]<br />

[4] Suse Manager: [https:// www. suse. com/​<br />

products/ suse‐manager/]<br />

[5] Ubuntu Landscape:<br />

[http:// www. canonical. com/ enterpriseservices/<br />

ubuntu‐advantage/ landscape]<br />

[6] Puppet-apt von Example42 mit Apt-Dater-<br />

Support: [https:// github. com/ example42/​<br />

puppet‐apt]<br />

[7] Apt-Dater:<br />

[https:// github. com/ DE‐IBH/ apt‐dater]<br />

[8] Chef Unattended Upgrades Cookbook:<br />

[https:// github. com/ jeremyolliver/​<br />

cookbook‐unattended‐upgrades]<br />

[9] Puppet-yum von Example42: [https://​<br />

github. com/ example42/ puppet‐yum]<br />

Enterprise 09/2013<br />

Titelthema<br />

www.linux-magazin.de<br />

41


Titelthema<br />

www.linux-magazin.de Kernelupdates 09/2013<br />

42<br />

Techniken für reibungslose Kernel-Updates und -Upgrades<br />

Kern-Kompetenz<br />

Kernelupdates: Fluch oder Segen, Notwendigkeit oder einfach nur ein Ärgernis? Welche Fallstricke gibt es und<br />

wie kann der Systemadministrator Aufwand und Risiko minimieren? Das <strong>Linux</strong>-<strong>Magazin</strong> weiß Rat. Udo Seidel<br />

© serezniy, 123RF.com<br />

Der Austausch des <strong>Linux</strong>-Kernels ist wie<br />

ein Motorwechsel beim Auto. Er lässt sich<br />

nicht zwischen Tür und Angel erledigen<br />

und erfordert Vorbereitung. Dem Eingriff<br />

folgt häufig ein kompletter Reboot des<br />

Servers. <strong>Linux</strong>-Installationen mit Systemen<br />

von drei-, vier- oder gar fünfstelliger<br />

Anzahl sind keine Seltenheit mehr. Der<br />

operative Aufwand, ein Kernelupgrade<br />

in dieser Größenordnung durchzuführen,<br />

ist entsprechend groß und erfordert<br />

erheblichen Zusatzaufwand für das Gelingen.<br />

Aber sogar im kleinen Rahmen<br />

stellt sich die Frage, welche ungewollten<br />

oder unerwarteten Änderungen der neue<br />

Betriebssystemkern mitbringt.<br />

Touch a running System<br />

Gründe für einen Wechsel des Kernels<br />

gibt es gleich mehrere: Typische Szenarien<br />

sind Bugfixes oder das Stopfen<br />

von Sicherheitslöchern (Update), daneben<br />

aber auch externe Anforderungen,<br />

etwa durch Software, die nicht zum Lieferumfang<br />

der <strong>Linux</strong>-Distribution zählt<br />

und neuere Kernelfeatures verlangt (Upgrade).<br />

Die manchmal rasante Entwicklung<br />

der Hardware erfordert nicht selten<br />

ebenfalls einen neueren Betriebssystemkern.<br />

Nur in den seltensten Fällen kann<br />

ein Admin das Kernelupgrade aus seinem<br />

Aufgabenkatalog streichen, also sollte er<br />

es richtig machen. Der folgende grobe<br />

Vorgehensplan betrachtet drei Aspekte:<br />

Wie, Wann und Wo.<br />

Kernelupdates lassen sich in zwei Arten<br />

unterteilen: offline und online. Zur<br />

letzteren zählt der Austausch einzelner<br />

Kernelmodule oder sogar ganzer Funktionen,<br />

was das Tool Ksplice ermöglicht.<br />

Einfacher ist aber zunächst die Offline-<br />

Variante zu erklären. Hier wandert der<br />

neue Kernel auf das System und ein Reboot<br />

aktiviert ihn.<br />

Die Fragestellungen lauten dabei: Wie<br />

den neuen Kernel erzeugen? Wie wandert<br />

er auf den Server und wann? Wann<br />

findet der Reboot zur Aktivierung statt<br />

und auf welchen Systemen (wo)? Das<br />

Offline-Verfahren ist technisch die beste<br />

Variante, weil sich das System danach in<br />

einem sauberen und definierten Zustand<br />

befindet. Allerdings bedeutet der Reboot<br />

einen Ausfall der Dienste des neu zu<br />

startenden Servers.<br />

Lassen Dienstleistungsverträge und<br />

Wartungsfenster dies nicht zu, müssen<br />

Alternativen her. Ist ein Dienst wichtig,<br />

sichert man ihn meist ohnehin durch<br />

Hochverfügbarkeits-Setups. Im Fall des<br />

Kernelupdate kann der Admin auf diesen<br />

Mechanismus zurückgreifen. Bis zum<br />

fertigen Kernel-Rollout befindet sich der<br />

HA-Verbund dabei in einem Mischbetrieb:<br />

Systeme, die identische Aufgaben<br />

wahrnehmen, unterscheiden sich in der<br />

Schlüsselkomponente Kernel. Aus mehreren<br />

Gründen empfiehlt es sich, diesen<br />

Zustand möglichst kurz zu halten.<br />

Rückfahrkarte<br />

Das Testen eines neuen Kernels vor dem<br />

Rollout gehört für Sysadmins zum guten<br />

Ton. Neben dem eigentlichen Funktionstest<br />

gehört das Ausprobieren des<br />

Upgrade-Prozesses selbst dazu, ebenso<br />

ein Fallback. Sind Kernelmodule von<br />

Drittherstellern im Spiel, lohnt es sich,<br />

deren Kompatibilitätsmatrix zu prüfen.<br />

Die Theorie kann aber den Praxistest<br />

nicht ersetzen.<br />

Die Eleganz von <strong>Linux</strong> besteht darin,<br />

dass das System problemlos mehrere Betriebssystemkerne<br />

vorhält (Abbildung 1).<br />

So kann der Admin den Rechner bequem<br />

in den vorherigen Zustand zurückversetzen,<br />

falls nötig. Es empfiehlt sich, Kernelupdates<br />

vom Patchen der sonstigen Systemkomponenten<br />

so weit wie möglich zu<br />

trennen. Zum einen lässt sich der Userspace<br />

online patchen, was den Betrieb<br />

deutlich geringer stört als der Austausch


des Kernels. Zweitens bleiben die Änderungen<br />

am System dadurch klar separiert.<br />

Im Falle eines Fehlverhaltens lässt<br />

sich einfacher feststellen, ob es auf den<br />

neuen Kernel oder auf andere Systemänderungen<br />

zurückzuführen ist.<br />

Kernelupdates 09/2013<br />

Titelthema<br />

Alles neu<br />

Abbildung 1: Beim Booten kann der Admin den zu startenden Kernel auswählen und gegebenenfalls wieder auf<br />

die bewährte Version zurückgreifen, hier beim SLES 11 SP2.<br />

Woher weiß der Admin, welche Änderungen<br />

seine Server durch den neuen Kernel<br />

erfahren? Etwas zu optimistisch ist der<br />

Ansatz, einfach den Betriebssystemkern<br />

auszutauschen und hinterher zu prüfen,<br />

ob der Fix wirkt oder die Software nun erwartungsgemäß<br />

arbeitet. Gibt es Release-<br />

Notes des <strong>Linux</strong>-Distributors, empfiehlt<br />

sich deren Lektüre. Wer es ganz genau<br />

wissen möchte, der organisiert sich den<br />

Quelltext der zu vergleichenden Kernel<br />

und holt sich die gewünschten Informationen<br />

auf diesem Level ab.<br />

Kommt vorwiegend eine bestimmte Distribution<br />

zum Einsatz, lohnt es sich,<br />

Informationen bezüglich ABI- und API-<br />

Stabilität einzuholen. Im günstigsten Fall<br />

verfügt der Hersteller über eine Liste von<br />

Funktionen, deren Schnittstellen für einen<br />

bestimmten Releasezyklus konstant<br />

bleiben. Für Software, die genau dieses<br />

ABI benutzt, ist eine Änderung des Kernels<br />

an sich transparent. Alle anderen<br />

Programme müssen sich wohl oder übel<br />

Tests unterziehen.<br />

In Enterprise-Setups finden sich grundsätzlich<br />

zwei Ansätze zum Thema<br />

Schnittstellen-Stabilität. Red Hat publiziert<br />

eine Liste von Funktionen (siehe<br />

Listing 1), die der Distributor während<br />

einer Major-Release konstant hält [1]. Mit<br />

Lebenszyklen von zehn Jahren für aktuelle<br />

RHEL-Versionen [2] bedeutet dies<br />

zumindest erheblichen Aufwand und<br />

kann sogar hinderlich sein. Beispielsweise<br />

basiert RHEL 6 auf dem Kernel<br />

2.6.32. Bestimmte Funktionen und Features<br />

aus neueren Kernels lassen sich<br />

rückportieren, aber ein echter 3.x-Kernel<br />

wird trotzdem nicht daraus.<br />

Oracle und auch Suse gehen einen anderen<br />

Weg. Hier lautet das Versprechen,<br />

das Userspace-ABI konstant zu halten,<br />

nicht aber unbedingt die Schnittstellen<br />

innerhalb des Kernels ([3], [4]). Das<br />

ermöglicht diesen Distributoren, neuere<br />

Kernel einzusetzen und den Aufwand<br />

fürs Backporting deutlich zu reduzieren.<br />

Das hat aber auch seinen Preis, der<br />

sich in vermehrten Tests mit Software<br />

von Drittherstellern niederschlägt, wenn<br />

diese Kernelmodule benutzt.<br />

Unterbrechungsfrei<br />

Das <strong>Linux</strong>-<strong>Magazin</strong> 08/​08 [5] stellte<br />

das Ksplice-Verfahren [6] vor. Unter<br />

bestimmten Voraussetzungen kann der<br />

Admin damit den Kernel ohne den lästigen<br />

Reboot patchen. Das Tool analysiert<br />

dabei alten und neuen Code auf der Objektebene.<br />

Auszutauschende Funktionen<br />

landen in einem Kernelmodul, das das<br />

Werkzeug in den laufenden Kernel lädt<br />

und aktiviert (Abbildung 2).<br />

Seit 2011 gehört diese Technologie Oracle<br />

[7]. Fedora und Ubuntu-Desktop-Benutzer<br />

können kostenfrei der Online-<br />

Patcherei frönen. Im Enterprise-Umfeld<br />

bekommt es der zahlende Oracle-<strong>Linux</strong>-<br />

Admin als kostenlose Zugabe zum UEK<br />

(Unbreakable Enterprise Kernel). Auch<br />

die Red-Hat-Fans sparen sich gegen Entgelt<br />

einige Reboots.<br />

Suse- beziehungsweise SLES-Fans schienen<br />

lange Zeit außen vor. Die Teilnehmer<br />

der Susecon 2012 durften aber schon<br />

mal durch das Schlüsselloch einen Blick<br />

auf Version 12 der Enterprise-Produkte<br />

werfen: Ksplice – besser gesagt die zugrunde<br />

liegende Technik – soll es dann<br />

dort ebenfalls geben, und zwar direkt aus<br />

dem Hause Suse. Unabhängig vom verwendeten<br />

<strong>Linux</strong> sollte dem Admin aber<br />

klar sein, dass die Aufgabe von Ksplice<br />

primär das schnelle und schmerzfreie<br />

Patchen von Sicherheitslücken im Kernel<br />

ist. Operative Notwendigkeiten und Sicherheitsanforderungen<br />

lassen sich damit<br />

unter einen Hut bringen.<br />

Das Online-Patchen ist dazu gedacht,<br />

einen Kernel jahrelang laufen zu lassen<br />

und immer neue Ksplice-Updates draufzupacken.<br />

Dennoch gibt es technische<br />

Grenzen für Online-Updates. Generell<br />

lässt sich sagen, dass ein Upgrade von<br />

Kernelversion 3.x auf 3.y in Ksplice nicht<br />

vorgesehen ist. Größere Umbauten im<br />

Kernel würden den Aufwand ins Uner-<br />

Listing 1: ABI-Whitelist für RHEL<br />

6.3 (x86_64)<br />

01 [root@rhel]# head /lib/modules/kabi‐rhel63/<br />

kabi_whitelist_x86_64<br />

02 [rhel6_x86_64_whitelist]<br />

03 ___pskb_trim<br />

04 __alloc_pages_nodemask<br />

05 __alloc_percpu<br />

06 __alloc_skb<br />

07 __bdevname<br />

08 __bitmap_and<br />

09 __bitmap_complement<br />

10 __bitmap_empty<br />

11 __bitmap_weight<br />

12 [root@rhel ~]# wc ‐l /lib/modules/kabi‐rhel63/<br />

kabi_whitelist_x86_64<br />

13 1607 /lib/modules/kabi‐rhel63/kabi_whitelist_x86_64<br />

www.linux-magazin.de<br />

43


Titelthema<br />

www.linux-magazin.de Kernelupdates 09/2013<br />

44<br />

Abbildung 2: Paradoxes auf einem per Ksplice gepatchten System: Die effektive Kernelversion ist höher als<br />

die des eigentlich installierten Pakets.<br />

messliche treiben und fallen daher ebenfalls<br />

flach. Auf der Habenseite bleibt das<br />

größere Zeitfenster bis zum unausweichlichen<br />

Reboot, während aktuelle Sicherheitslücken<br />

dennoch geschlossen sind.<br />

Beispiel Sicherheitslücke<br />

Die in CVE-2013-2094 [8] dokumentierte<br />

Sicherheitslücke eignet sich hervorragend<br />

zum Durchspielen der verschiedenen Ansätze<br />

beim Kernelupdate. Der Einfachheit<br />

halber beschränken sich die weiteren<br />

Ausführungen auf Red Hat und Suse.<br />

Das genügt für diesen Artikel, heißt aber<br />

nicht, dass die anderen Distributionen<br />

von dem Sicherheitsproblem verschont<br />

geblieben sind.<br />

Ausgangspunkt ist ein Fehler in der Funktion<br />

»perf_swevent_init()«, durch den ein<br />

lokaler Anwender Rootrechte erlangen<br />

kann. Als im Mai 2013 ein passender<br />

Exploit veröffentlicht wurde, waren 3.x-<br />

Kernel betroffen, wenn sie älter als Version<br />

3.8.9 waren. SLES 11 SP1 basierte<br />

auf 2.6.32 und blieb damit außen vor.<br />

RHEL 6, ebenfalls mit einem Kernel auf<br />

2.6.32-Basis ausgestattet, hatte diesen<br />

Bug allerdings rückportiert und stand<br />

Listing 2: Patch für CVE-2013<br />

-2094<br />

01 $ diff ‐Nur linux‐2.6.32‐358.6.1.el6/<br />

linux‐2.6.32‐358.6.2.el6/<br />

02 ‐‐‐ linux‐2.6.32‐358.6.1.el6/kernel/events/core.c<br />

2013‐03‐29 17:57:44.000000000 +0100<br />

03 +++ linux‐2.6.32‐358.6.2.el6/kernel/events/core.c<br />

2013‐05‐14 21:09:32.000000000 +0200<br />

04 @@ ‐5198,7 +5198,7 @@<br />

05 <br />

06 static int perf_swevent_init(struct perf_event<br />

*event)<br />

07 {<br />

08 ‐ int event_id = event‐>attr.config;<br />

09 + u64 event_id = event‐>attr.config;<br />

10 <br />

11 if (event‐>attr.type != PERF_TYPE_SOFTWARE)<br />

12 return ‐ENOENT;<br />

dadurch unter Zugzwang. Analoges<br />

galt für die RHEL-Klone oder den auf<br />

3.0 beruhenden SLES 11 SP2. Eine recht<br />

vollständige Liste der betroffenen <strong>Linux</strong>e<br />

findet sich unter [8].<br />

Kurz nach Bekanntwerden der Sicherheitslücke<br />

stellten die Distributoren aktualisierte<br />

Pakete bereit, die einen neuen<br />

Betriebssystemkern enthielten ([9],<br />

[10]). Dank Open Source kann der kundige,<br />

aber misstrauische Admin prüfen,<br />

ob der Fehler auch tatsächlich behoben<br />

ist (Listing 2). Im vorliegenden Fall gab<br />

es keinen Grund zur Beanstandung, der<br />

Fix war identisch mit der entsprechenden<br />

Änderung im Vanilla-Kernel.<br />

Damit war der Weg frei zum Offline-<br />

Patchen der Systeme. Was sollten aber<br />

Admins tun, wenn ein Reboot nicht so<br />

schnell möglich war? Die Versorgung der<br />

Ksplice-Benutzer erfolgte zügig [11]. Daneben<br />

gibt es aber Systeme, für die weder<br />

Ksplice noch Reboot in Frage kommen.<br />

Nichtstun ist nur eine Option, wenn die<br />

Sicherheit und Integrität der Systeme<br />

absolut keine Rolle spielt. Selbst eine<br />

Post-mortem-Analyse wäre bei dieser<br />

Lücke nicht trivial, da das Ausnutzen<br />

der betroffenen Kernelfunktion keinen<br />

Eintrag im normalen Systemprotokoll erzeugt.<br />

Selbst für diese Nachforschungen<br />

braucht der Admin daher die Software<br />

Systemtap [12] und muss Vorbereitungen<br />

treffen [13].<br />

Eine genaue Analyse des Problems zeigt,<br />

dass sich das Sicherheitsrisiko auch ohne<br />

Reboot und Ksplice minimieren lässt:<br />

Das Setzen der Sysctl-Variablen »kernel.<br />

perf_event_paranoid« auf den Wert »2«<br />

schließt zwar nicht das Loch an sich,<br />

macht aber den bekannten Exploit wirkungslos<br />

(Abbildung 3). Damit sind die<br />

entsprechenden Server wenigstens vor<br />

Sikript-Kiddies und Attacken von Anfängern<br />

sicher. Ein Reboot ist damit nicht<br />

unmittelbar notwendig – aber nur aufgeschoben:<br />

Im hier dargestellten Beispiel<br />

empfiehlt es sich, die Syscontrol-Änderung<br />

nach Aktivieren eines aktualisierten<br />

Kernels rückgängig zu machen.<br />

Das Ausliefern und Aktivieren neuer<br />

Kernel auf laufenden Systemen ist nur<br />

ein Teil der notwendigen Arbeit. Daneben<br />

gibt es Systeme, die zu einem späteren<br />

Zeitpunkt ein <strong>Linux</strong> bekommen oder<br />

auf anderem Wege im Rechnerverbund<br />

auftauchen. Es steht außer Frage, dass<br />

solche Rechner ebenfalls den als aktuell<br />

eingestuften Betriebssystemkern verwenden<br />

sollten. Voraussetzung dafür ist, Kernelupgrades<br />

in die Installationsprozesse<br />

und ‐routinen zu integrieren.<br />

Im einfachsten Fall genügt eine Patch-<br />

Prozedur als Teil der Postinstallation. In<br />

sicherheitskritischen Umgebungen kann<br />

dies heißen, dass die Ausstattung des Servers<br />

mit <strong>Linux</strong> in einem speziellen und<br />

abgesicherten Netzwerk abläuft und die<br />

Integration in die Produktion erst nach<br />

vollständigem Patchen erfolgt.<br />

Alternativ ist es möglich, ein bereits<br />

angepasstes Image zur Installation zu<br />

verwenden. Je nach Distribution und<br />

Deployment-Methode sind dem aber<br />

Grenzen gesetzt: Die von Suses Autoyast<br />

verwendeten Images beispielsweise sind<br />

per Prüfsumme und Signatur gesichert.<br />

Eine – wenn auch gut gemeinte – Manipulation<br />

ist ohne Herstellersupport nicht<br />

möglich.<br />

C-Library zum Schluss<br />

Vorsichtige Admins dehnen die Kernelupgrade-Problematik<br />

in Richtung C-Bibliothek<br />

aus. Neben dem Betriebssystemkern<br />

ist diese Library eine der tragenden<br />

Säulen eines <strong>Linux</strong>-Systems. Technisch<br />

gesehen zeigt sich die Situation hier aber<br />

entspannter. Ein Austausch ist während<br />

des Betriebs möglich. Sobald sich die Bibliothek<br />

auf dem System befindet, steht<br />

sie neu gestarteten Applikationen zur<br />

Verfügung. Bereits laufende Anwendungen<br />

verwenden allerdings bis zu einem<br />

Neustart den alten Code.<br />

Obwohl diese Inkonsistenz selbst beim<br />

Co-Hosting von komplexen Anwendungen<br />

keine Probleme machen sollte,<br />

bleibt ein mulmiges Gefühl. Kommt<br />

noch »nscd« als Caching-Software zum<br />

Einsatz, ist dessen Neustart beim Glibc-<br />

Update ebenfalls erforderlich. Die Erfahrung<br />

zeigt außerdem, dass Kernelupdates


Abbildung 3: Der öffentlich zugängliche Exploit für CVE-2013-2094 besorgt einem lokalen Anwender eine<br />

Rootshell. Linderung schafft eine Änderung der Sysctl-Konfiguration.<br />

weitaus häufiger anfallen als Libc-Patches.<br />

Wer die Betriebsunterbrechungen<br />

minimieren möchte, tauscht also die<br />

C-Bibliothek bei der nächsten fälligen<br />

Kernelauffrischung einfach mit aus. Dies<br />

gilt mit Abschwächung ebenfalls für<br />

die Ksplice-Gemeinde. Dort treten die<br />

Reboots ja seltener auf, aber eventuell<br />

häufig genug, um die Systembibliothek<br />

ebenfalls zu aktualisieren.<br />

Fazit<br />

Kernelupgrades greifen tief in das <strong>Linux</strong>-<br />

System ein. Bei genauerem Hinschauen<br />

zeigt sich, dass nicht jedes Update dem<br />

anderen gleicht: Ein kritischer Bug kann<br />

einen Massen-Reboot notwendig machen<br />

oder nur Konfigurationsänderungen auf<br />

Betriebssystemebene auslösen, die weit<br />

weniger schmerzvoll sind.<br />

Wie man es auch dreht und wendet: Um<br />

Kernelupdates kommt kein Administrator<br />

herum. Idealerweise hat er mehrere<br />

Prozeduren und Arbeitsabläufe im Repertoire,<br />

um den unterschiedlichen Upgrade-<br />

Gegebenheiten zu begegnen. Wie so oft<br />

im Leben gilt: Das Glück hilft dem, der<br />

vorbereitet ist. (mhu) <br />

n<br />

Der Autor<br />

Dr. Udo Seidel ist eigentlich Mathe-Physik-Lehrer<br />

und seit 1996 <strong>Linux</strong>-Fan. Nach seiner Promotion<br />

hat er als <strong>Linux</strong>/​Unix-Trainer, Systemadministrator<br />

und Senior Solution Engineer gearbeitet.<br />

Heute ist er Leiter des <strong>Linux</strong>-Strategie-Teams der<br />

Amadeus Data Processing GmbH in Erding.<br />

Infos<br />

[1] Jon Masters, „Red Hat Driver Update<br />

Packages“: [http:// people. redhat. com/​<br />

jcm/ el6/ dup/ docs/ dup_book. pdf]<br />

[2] Red Hat Enterprise <strong>Linux</strong> Life Cycle:<br />

[http:// access. redhat. com/ support/ policy/​<br />

updates/ errata/]<br />

[3] „Suse releases hardened 3.0-based kernel<br />

to the enterprise“:<br />

[https:// www. suse. com/ communities/​<br />

conversations/ suse‐releases‐hardened‐3‐<br />

0‐based‐kernel‐to‐the‐enterprise/]<br />

[4] Unbreakable Enterprise Kernel:<br />

[http:// docs. oracle. com/ cd/ E37670_01/​<br />

E37355/ html/ ol_about_uek. html]<br />

[5] Nils Magnus, „Zurechtgeflickt“:<br />

<strong>Linux</strong>-<strong>Magazin</strong> 08/​08, S. 76<br />

[6] Ksplice: [http:// www. ksplice. com]<br />

[7] Oracle kauft Ksplice: [http:// www. oracle.​<br />

com/ us/ corporate/ press/ 435791]<br />

[8] CVE-2013-2094: [http:// cve.​<br />

mitre. org/ cgi‐bin/ cvename. cgi?​<br />

name=CVE‐2013‐2094]<br />

[9] RHSA-2013-0830: [http:// rhn. redhat. com/​<br />

errata/ RHSA‐2013‐0830. html]<br />

[10] SU-2013:0819-1: [http:// lists. opensuse. org/​<br />

opensuse‐security‐announce/ 2013‐05/​<br />

msg00008. html]<br />

[11] „New updates available via Ksplice (CVE-<br />

2013-2094)“: [http:// oss. oracle. com/​<br />

pipermail/ el‐errata/ 2013‐May/ 003467. html]<br />

[12] Systemtap:<br />

[http:// sourceware. org/ systemtap/]<br />

[13] „Does CVE-2013-2094 affect Red Hat<br />

Enterprise <strong>Linux</strong> and Red Hat Enterprise<br />

MRG?“: [http:// access. redhat. com/ site/​<br />

solutions/ 373743]


Titelthema<br />

www.linux-magazin.de Embedded-<strong>Linux</strong> 09/2013<br />

46<br />

Updates für Embedded-<strong>Linux</strong>-Geräte<br />

Mit Verfallsdatum<br />

Geräte mit Embedded-<strong>Linux</strong> erhalten zu selten Updates, bemängeln Experten. Wie Aktualisierungen für mehr<br />

Sicherheit und Zuverlässigkeit funktionieren können, erklärt dieser Artikel. Mathias Huber<br />

© Jon Helgason, 123RF.com<br />

„Die Embedded-<strong>Linux</strong>-Branche muss<br />

sich in Zukunft verstärkt um Updates<br />

für ihre Geräte kümmern.“ Das sagt<br />

Carsten Emde, der Geschäftsführer des<br />

Open Source Automation Development<br />

Lab (OSADL, [1]). Die Genossenschaft<br />

betreibt Forschung und Ausbildung für<br />

<strong>Linux</strong>-Anwender in der Automatisierungsindustrie.<br />

Laut Emde ist nur mit Hilfe von Updates<br />

die Einbruchs- (Security) und Betriebssicherheit<br />

(Safety) von Industrieanlagen<br />

sicherzustellen. Diese teilen vermehrt die<br />

Gefährdungen von <strong>Linux</strong>-Routern, NAS-<br />

Geräten und <strong>Linux</strong>-Fernsehern, die per<br />

Internet erreichbar sind.<br />

Von der Stange?<br />

Teil der Problematik ist, dass kaum standardisierte<br />

Aktualisierungsverfahren für<br />

die Geräte existieren. Wie bei der Entwicklung<br />

der Embedded-Software geht hier<br />

fast jeder Hersteller seinen eigenen Weg.<br />

Handelt es sich bei der Hardware um ein<br />

leistungsfähiges x86-<br />

System, besteht noch<br />

die Möglichkeit, eine<br />

etablierte <strong>Linux</strong>-Distribution<br />

zu verwenden,<br />

die sowohl einen<br />

Paketmanager als auch<br />

regelmäßige Updates<br />

bereitstellt. Bei kommerziellen<br />

Distributionen<br />

kommen den<br />

Embedded-Herstellern<br />

allerdings häufig die<br />

Lizenzen in die Quere,<br />

die den Weitervertrieb<br />

mit der Hardware erschweren.<br />

Zudem benötigen Paketmanager<br />

einige<br />

Ressourcen, um beispielsweise Abhängigkeiten<br />

zu verwalten oder Archive zu<br />

dekomprimieren. Für schwächere Zielsysteme<br />

kommt daher ein so genanntes<br />

Spiegelverfahren zum Einsatz. Der<br />

Hersteller verwendet ein leistungsstärkeres<br />

Entwicklersystem, das er mittels<br />

Paketmanager auf den neuesten Stand<br />

bringt. Diesen Stand spiegelt er auf das<br />

Embedded-Gerät.<br />

Am untersten Ende des Spektrums steht<br />

ein Verfahren, das selbst bei minimal<br />

ausgestatteten Embedded-Geräten funktioniert:<br />

Man schreibt das komplette Betriebssystem<br />

als Image am Stück auf eine<br />

Speicherpartition des Zielgeräts. Das stellt<br />

zudem sicher, dass alle Komponenten des<br />

Betriebssystems und Software stacks auf<br />

dem richtigen Stand sind und gut zusammenspielen.<br />

Das neue Image kann etwa<br />

per USB-Stick oder Speicherkarte zum<br />

Gerät kommen.<br />

Damit sich ein Gerät beim Scheitern des<br />

Updates nicht in einen nutzlosen Ziegelstein<br />

verwandelt, gibt es in der Regel<br />

eine Fallback-Kopie des Betriebssystems,<br />

erklärt Michael Opdenacker. Der Gründer<br />

des Embedded-Spezialisten Free Electrons<br />

[2] erläutert zwei Mechanismen für<br />

diesen Zweck: Im ersten Szenario verfügt<br />

der persistente Speicher des Zielgeräts<br />

über mindestens zwei Partitionen. Auf<br />

einer verbleibt die bisherige <strong>Linux</strong>-Installation.<br />

Die andere beschreibt der Bootloader<br />

mit dem neuen Image. Anschließend<br />

versucht er die neue Partition zu booten.<br />

Bei Erfolg ändert ein Skript die Bootkonfiguration<br />

nachhaltig, ansonsten bleibt die<br />

alte Partition aktiv.<br />

Rettung naht<br />

Opdenackers Lieblingslösung besteht<br />

aber in einer schreibgeschützten Partition<br />

mit einem minimalen Rescue-System. Es<br />

wird aktiv, wenn der Anwender etwa<br />

einen Knopf am Gerät drückt. Dieses<br />

Rescue-System übernimmt die Aufgabe,<br />

ein aktualisiertes Betriebssystem auf die<br />

Standardpartition zu kopieren. Geht dabei<br />

etwas schief – kein Problem: Das unveränderliche<br />

Rettungssystem lässt sich<br />

auf jeden Fall starten.<br />

Auch Michael Opdenacker beklagt die<br />

Update-Müdigkeit: „Am liebsten würde<br />

ich einen Hacking-Contest veranstalten,<br />

bei dem die Teilnehmer Embedded-<strong>Linux</strong>-Geräte<br />

knacken“, meint er. Doch<br />

er bietet auch tröstliche Worte: Die Versionsvielfalt<br />

in der Embedded-Branche<br />

stelle sicher, dass ein einzelner Exploit<br />

oder Bug nur etwa 1 bis 2 Prozent der<br />

Geräte im Internet lahmlegen kann. Diversität<br />

hat eben auch ihre Vorteile. n<br />

Infos<br />

[1] OSADL: [http:// www. osadl. org]<br />

[2] Free Electrons: [http:// free‐electrons. com]


In eigener Sache: DELUG-DVD<br />

Knoppix, Fedora, E-Book, PDFs<br />

Einführung 09/2013 12/2010<br />

Software<br />

Auch diesen Monat bekommen DELUG-Käufer wieder die doppelte Menge zum einfachen Preis: Von der einen<br />

Seite der DVD bootet Knoppix 7.2, von der anderen Fedora 19. Dazu gibt’s eine Tor-VM, gratis ein E-Book über<br />

Shellprogrammierung, PDFs, Videos und jede Menge Software. Markus Feilner<br />

www.linux-magazin.de<br />

47<br />

Inhalt<br />

48 Bitparade<br />

Corel Aftershot Pro, Darktable, Digikam,<br />

Shotwell: Auch freie Fotoverwaltungen<br />

können oft mit teuerer Profi-Software<br />

mithalten.<br />

56 Tooltipps<br />

Im Kurztest: Fish 2.0.0, Bad 0.0.2, Blink,<br />

Fping 3.5, Lnav 0.5.0 und Tomb 1.4.<br />

Neben dem normalen <strong>Linux</strong>-<strong>Magazin</strong><br />

ohne Datenträger gibt es die DELUG-<br />

Ausgabe mit Monats-DVD, bei der die<br />

Redaktion den Datenträger nach einem<br />

speziellen Konzept zusammenstellt: In<br />

einer Art modularem System enthält<br />

er Programme und Tools, die in der jeweiligen<br />

<strong>Magazin</strong>-Ausgabe getestet und<br />

besprochen werden. Zudem führt eine<br />

HTML-Oberfläche durch von der Redaktion<br />

besonders empfohlene Software.<br />

Knoppix 7.2<br />

Fast genau zu Redaktionsschluss stellte<br />

Klaus Knopper die aktuelle Version 7.2<br />

seiner beliebten Live-Distribution zum<br />

Download bereit. Seite B der DVD bootet<br />

die live, ist also frische Ware aus<br />

Deutschland. Vor allem zahlreiche technische<br />

Neuerungen zeichnen die 7.2 aus,<br />

etwa die experimentelle Unterstützung<br />

für das Booten auf PCs mit UEFI. Der<br />

Kernel trägt die Nummer 3.9.6 und hat<br />

AUFS und Cloop nachgerüstet. Außerdem<br />

enthält er experimentelle Treiber für neuere<br />

Atheros-WLAN-Chips.<br />

Die Softwareauswahl beruht auf einer<br />

Mischung von Debian Stable (Wheezy),<br />

sowie Testing und Unstable mit zahlreichen<br />

topaktuellen Programmen – nicht<br />

nur auf dem Desktop (Abbildung 1).<br />

Virtualisieren kann der Anwender mit<br />

Virtualbox 4.2.10 und<br />

Qemu-KVM 1.5.0,<br />

Wine 1.5 lässt Windows-Programme<br />

laufen.<br />

Anonymisiertes<br />

Surfen im Internet<br />

ermöglicht Tor, Lehrer<br />

und Trainer können<br />

den Desktop per VNC<br />

oder RDP freigeben.<br />

Auch Adriane, Knoppers<br />

Desktop für sehbehinderte<br />

Nutzer, ist<br />

dabei, in Version 1.5.<br />

Fedora 19<br />

Auf der zweiten Seite<br />

der DVD findet der DELUG-Leser eine<br />

weitere Distribution zum Booten: Fedora<br />

19. Das „Schrödingers Katze“ getaufte<br />

Community-<strong>Linux</strong> von Red Hat vereint<br />

neueste Desktops mit topaktuellem Unterbau:<br />

Kernel 3.9, KDE 4.10, Gnome 3.8,<br />

dazu Systemd und UEFI-Boot können nur<br />

wenige Distributionen heute schon vorweisen.<br />

Fedora kombiniert das noch mit<br />

SE <strong>Linux</strong> und Firewall zu hoher Default-<br />

Sicherheit.<br />

Liberté, Shell-Programmierung<br />

als E-Book<br />

Den Fokus auf Anonymität und Datenschutz<br />

legt Liberté <strong>Linux</strong>, das als virtuelle<br />

Maschine auf der DVD liegt. Wie<br />

der Name andeutet, haben die Entwickler<br />

die Gentoo-basierte Distribution als<br />

Kommunikationshilfe für nicht vertrauenswürdigen<br />

Umgebungen konzipiert.<br />

Deshalb legt sie bereits bei der Einwahl<br />

einen Tor-Circuit an, der die Netzwerk-<br />

Kommunikation via Onion-Routing abwickelt.<br />

Einer der zentralen Bestandteile<br />

Abbildung 1: Brandneu sind die mit Knoppix 7.2 gelieferten Anwendungen,<br />

zum Beispiel Libre Office 4.0.3, Gimp 2.8, Chromium 27.0.1453.110 und<br />

Iceweasel 21.0 mit den Addons Adblock Plus 2.2.4 und NoScript 2.6.6.1.<br />

von <strong>Linux</strong> ist die umfangreiche Skripting-<br />

Unterstützung, die zumeist auf der Bash<br />

und ihren zahlreichen Helfern fußt. Fundiertes<br />

Wissen rund um die Shellskript-<br />

Programmierung vom Autor Jürgen Wolf<br />

bietet das E-Book „Shell-Programmierung“<br />

vom Verlag Galileo Press.<br />

Die ersten zehn Kapitel des knapp 800<br />

Seiten starken E-Books beschreiben die<br />

Shell-Grundlagen, ehe das Werk auf die<br />

unverzichtbaren Tools wie Grep, Sed und<br />

Awk eingeht. Die gedruckte Variante des<br />

Buches kostet 45 Euro, DELUG-Leser bekommen<br />

es einfach so.<br />

PDFs, Videos, Software<br />

Doch damit nicht genug: Im HTML-Menü<br />

auf der DVD finden unsere Leser noch<br />

diverse weitere exklusive Einträge, zum<br />

Beispiel den zweiten Teil der Vortragsvideos<br />

von der Bozener Open-Source-Management-Conference<br />

2013, ein Bundle<br />

mit PDFs von <strong>Linux</strong>-<strong>Magazin</strong>-Artikeln<br />

rund um Open Stack und jede Menge<br />

Software zu den Artikeln.<br />

n


Software<br />

www.linux-magazin.de Bitparade 09/2013<br />

48<br />

Vier Fotoverwaltungen im Test<br />

Sammeln mit Motiv<br />

Fotoverwaltungen importieren, archivieren, organisieren, manipulieren und publizieren Bildersammlungen.<br />

Die vier Testkandidaten beweisen, dass Qualität nicht teuer sein muss. Mela Eckenfels<br />

© dixiand, photocase.com<br />

Profis und Hobbyfotografen stehen gleichermaßen<br />

vor dem Problem, ihre digitale<br />

Bilderflut zu sichten und zu organisieren.<br />

Fotoverwaltungen erledigen all<br />

das und noch viel mehr. Sie bringen die<br />

Schnappschüsse von der Kamera oder<br />

Speicherkarte auf den Rechner, sortieren<br />

sie anhand von Metadaten und publizieren<br />

sie bei Online-Anbietern.<br />

<strong>Linux</strong>-Anwender finden eine kleine und<br />

feine Auswahl solcher Programme, die<br />

teilweise sogar professionellen Ansprüchen<br />

gerecht werden. Als Kandidaten in<br />

dieser Bitparade treten Corel Aftershot<br />

Pro [1], Darktable [2], Digikam [3] und<br />

Shotwell [4] unter Ubuntu 13.04 und<br />

12.04 LTS an. Als Testgeräte setzten sich<br />

eine Nikon D70s und ein Samsung Galaxy<br />

Note im PTP- und Massenspeichermodus<br />

in Szene.<br />

E Corel Aftershot Pro<br />

Unter dem Namen Bibble startete diese<br />

proprietäre und kommerzielle Fotoverwaltungssoftware.<br />

Nachdem die Firma<br />

Corel im Jahr 2011 die Bibble Labs kaufte,<br />

benannte sie das Produkt in Corel Aftershot<br />

Pro [1] um. Die erste Variante mit<br />

neuem Namen kam 2012 in den Handel;<br />

im Test tritt die aktuelle Version 1.1.1.10<br />

an. <strong>Linux</strong>-, Windows- und OS-X-Benutzer<br />

finden eine 30-Tage-Testversion zum<br />

Download auf der Webseite. RPM- und<br />

Debian-Pakete (32 und 64 Bit) erhalten<br />

User nur, wenn sie die Seite mit einem<br />

Browser unter <strong>Linux</strong> besuchen. Die Vollversion<br />

kostet rund 90 Euro.<br />

Die Fotoverwaltung kommuniziert nicht<br />

direkt mit der Kamera. Stattdessen bringt<br />

der Nutzer die Bilder zuerst auf die Festplatte.<br />

Danach hat er die Wahl, ob er<br />

im Dateisystemmodus arbeitet oder die<br />

Bilder in den Katalog importiert. Auch<br />

dazu wählt er zunächst den Reiter »Dateisystem«<br />

am linken Fensterrand aus,<br />

sichtet die Schnappschüsse, markiert<br />

die gewünschten Fotos und entscheidet<br />

sich für »Datei | Ausgewählte Dateien<br />

importieren«.<br />

Da Corel Aftershot Pro die Bilder von<br />

der Platte einliest, klappt das relativ<br />

schnell. Je nach Rechenpower, Speicher<br />

und Bildmenge nimmt das Berechnen<br />

der <strong>Vorschau</strong>bilder allerdings einige Zeit<br />

in Anspruch. Optional fügt der Benutzer<br />

beim Import direkt passende Schlagwörter<br />

hinzu (Abbildung 1).<br />

Corel Aftershot Pro unterstützt die Raw-<br />

Formate aller gängigen Hersteller, Jpegund<br />

Tiff-Bilder. Videodateien erkennt die<br />

Software nicht – für Multimediales hat<br />

der Hersteller andere Produkte im Angebot.<br />

Beim einfachen Import bleiben die<br />

Bilddateien in ihrem ursprünglichen Verzeichnis,<br />

die Fotoverwaltung verknüpft<br />

sie nur mit der eigenen SQlite-Datenbank.<br />

Auf Wunsch bewegt das Programm die<br />

Fotos an einen neuen Speicherort und organisiert<br />

sie dabei, zum Beispiel anhand<br />

der Metadaten.<br />

Die Software wertet Exif-Dateien aus<br />

und fügt die Schlagwörter den IPTC-Metadaten<br />

hinzu. Über den entsprechenden<br />

Reiter am rechten Fensterrand erweitern<br />

und pflegen die Anwender sie.<br />

Für Schnappschüsse von Kameras ohne<br />

GPS-Empfänger ergänzen sie optional<br />

Geotags. Beim Export schreibt das Programm<br />

Exif-, IPTC- und XMP-Daten in<br />

die Bilddateien und erstellt auf Wunsch<br />

zusätzlich XMP-Dateien.<br />

Häppchenweise<br />

Eine Gesichtserkennung bietet Corel Aftershot<br />

Pro nicht. Dafür sind umfangreiche<br />

Bearbeitungswerkzeuge enthalten,<br />

darunter eine Autokorrektur für<br />

Belichtung und Farbe, Rauschunterdrückung,<br />

Weißabgleich, Kontrast, Schärfen,<br />

Werkzeuge zum Zuschneiden und die<br />

Perfect-Clear-Beleuchtungskorrektur. Die<br />

Funktion »An Achse ausrichten« gleicht<br />

schräge Horizonte aus und erlaubt kreative<br />

Drehungen. Für größere Retusche-


Abbildung 2: Die Funktion zum Erzeugen von HTML-Galerien versteckt sich in der Stapelverarbeitung im<br />

linken Bereich des Programmfensters.<br />

arbeiten bietet die Fotoverwaltung einen<br />

Ebenenmodus und eine Stapelverarbeitung<br />

für Bilderserien.<br />

Dabei lässt die Software das Originalbild<br />

unangetastet. Alle Veränderungen speichert<br />

sie in einer verknüpften XMP-Datei,<br />

in einem Katalog oder in beidem. Da<br />

sie alle Zwischenschritte festhält, können<br />

Anwender jederzeit zu einer früheren<br />

Version zurückkehren, Änderungen<br />

nachvollziehen und mehrere modifizierte<br />

Varianten miteinander vergleichen. Zahlreiche<br />

Plugins [5] erweitern den Funktionsumfang.<br />

Sie stellen Filter bereit,<br />

erlauben es, Text in Bilder zu schreiben<br />

oder Schatten oder Rahmen hinzuzufügen.<br />

Fehlt ein dringend benötigtes Bearbeitungstool,<br />

öffnet ein Rechtsklick das<br />

Bild in einem externen Editor.<br />

Corel Aftershot Pro speichert Bilder im<br />

Tiff- oder Jpeg-Format. Über den Druckdialog<br />

erstellen Anwender darüber hinaus<br />

Kontaktbögen und legen für diese<br />

Spalten, Zeilen und die Anzahl der Bilder<br />

fest. Außerdem bastelt die Fotoverwaltung<br />

einfache HTML-Galerien (Abbildung<br />

2). Integrierte Upload-Funktionen<br />

zu Stockfoto-Anbietern oder Online-Alben<br />

fehlen genauso wie Möglichkeiten,<br />

Fotobücher, Kalender oder Diaschauen<br />

zusammenzuklicken – von einem kommerziellen<br />

Produkt darf man durchaus<br />

mehr erwarten.<br />

Die Software erwies sich im Test als eher<br />

speicherhungrig und mitunter etwas<br />

träge. Spaß macht die Fotoverwaltung<br />

nur mit aktueller Hardware, schnellen<br />

Platten und viel RAM. Ab mehreren Hundert<br />

Bildern im Ordner läuft die Arbeit<br />

eher zähflüssig, und während einer Stapelverarbeitung<br />

großer Bildmengen können<br />

die Anwender getrost Kaffee kochen<br />

– sehr große Kannen.<br />

E Darktable<br />

Der zweite Kandidat ist eine Entwicklung<br />

des Medien-Informatikers Johannes<br />

Hanika. Er hob das Projekt Darktable<br />

[2] 2009 aus der Taufe. Heute kümmert<br />

sich ein 14-köpfiges Entwicklerteam um<br />

das Wohlergehen der unter der GPLv3<br />

stehenden Fotoverwaltung.<br />

Auf der Homepage warten fertige Pakete<br />

auf die Anwender von Ubuntu, Fedora,<br />

Open Suse, Arch <strong>Linux</strong> und Gentoo.<br />

OS-X-Benutzer kommen dank Macports<br />

ebenfalls in diesen Genuss. Darktable<br />

nutzt Libraw [6] und importiert alle von<br />

dieser Bibliothek unterstützten Raw-Formate<br />

(CRW/​CR2, NEF, RAF, DNG und andere).<br />

Zusätzlich liest das Programm Tiffund<br />

Jpeg-Fotos ein. Die Tester schauten<br />

sich Version 1.1.3 an.<br />

Auf den ersten Blick wirkt Darktable<br />

etwas spartanisch, dafür aber deutlich<br />

Abbildung 1: Bereits beim Import der Bildersammlung vergeben Anwender in Corel Aftershot Pro Schlagwörter<br />

für ein oder mehrere Fotos.<br />

aufgeräumter als Corel Aftershot Pro. Das<br />

Programm organisiert mehrere Arbeitsbereiche.<br />

Über den Leuchttisch erreichen<br />

Benutzer die Bilderverwaltung inklusive<br />

Import und Export, die Dunkelkammer<br />

dient zum „Entwickeln“ von Raw-Bildern<br />

und Konvertieren in andere Formate. Die<br />

Open-Source-Fotoverwaltung sucht nach<br />

einem Mausklick auf »Import« angeschlossene<br />

Geräte und erkennt alle von<br />

Gphoto [7] unterstützten Kameras im<br />

PTP- und im Massenspeichermodus. Alternativ<br />

liest sie Bilddateien aus lokalen<br />

Verzeichnissen ein.<br />

Mit der Kamera wollte Darktable im Test<br />

nicht im PTP-Modus kommunizieren,<br />

sondern nur im Massenspeichermodus.<br />

Diesem wiederum bereitet die Zusammenarbeit<br />

mit dem Smartphone Probleme:<br />

Die Software stürzte reproduzierbar<br />

ab. Auch bei der Bildbearbeitung verschluckte<br />

sie sich mitunter. Sehr wahrscheinlich<br />

ist Letzteres dem zu knappen<br />

Arbeitsspeicher des Testrechners und<br />

nicht dem Programm anzulasten. Die<br />

Entwickler weisen darauf hin, dass die<br />

Software speicherhungrig ist und mindestens<br />

4 GByte RAM benötigt.<br />

Auch dieses Tool bietet eine erste Sortierfunktion<br />

anhand von <strong>Vorschau</strong>bildern<br />

an. Über den Reiter »Einstellungen« definieren<br />

Anwender beim Import, welche<br />

Ordnerstruktur sie für die Fotos bevorzugen<br />

(Abbildung 3). Im Vergleich zu<br />

anderen Kandidaten dauert der Import<br />

deutlich länger, dafür ist der Rechner<br />

währenddessen noch benutzbar.<br />

Darktable nutzt Exif-Informationen und<br />

den IPTC-Standard, speichert außer<br />

Schlagwörtern auch Bewertungen, damit<br />

Anwender in großen Sammlungen ge-<br />

Bitparade 09/2013<br />

Software<br />

www.linux-magazin.de<br />

49


Software<br />

www.linux-magazin.de Bitparade 09/2013<br />

50<br />

Abbildung 3: Beim Import der Bilder legt der Darktable-Anwender den Aufenthaltsort, die Verzeichnisstruktur<br />

und den Aufbau von Dateinamen fest. Optional richtet er hier die Backupfunktion ein.<br />

wünschte Bilder schnell finden. Als Datenbank<br />

dient ebenfalls SQlite.<br />

Dunkelkammer<br />

Ein manuelles Geotagging für Kameras<br />

ohne GPS erlaubt dieser Testkandidat<br />

nicht. Dafür lädt er auf Wunsch GPX-<br />

Dateien und synchronisiert sie mit den<br />

Exif-Zeitstempeln der Bilder. Bereits während<br />

des Imports bietet Darktable an,<br />

ein Backup der Sammlung – etwa auf<br />

einer externen Platte – anzulegen. Zudem<br />

speichert die Fotoverwaltung im Bearbeitungsmodus<br />

den Verlauf und macht<br />

damit Änderungen nachverfolgbar. Das<br />

geschieht allerdings nicht automatisch,<br />

sondern Anwender klicken dazu auf die<br />

Schaltfläche »Snapshot erstellen« im linken<br />

Bereich (Abbildung 4).<br />

Die Arbeitsbereiche sind über den oberen<br />

rechten Bereich und über Shortcuts<br />

zu erreichen: [L] öffnet den Leuchttisch,<br />

[D] die Dunkelkammer, [T] das Tethering<br />

(Bilder über angeschlossene Kamera<br />

aufnehmen) und [M] die Karte mit den<br />

Geotags. Eine Gesichtserkennung fehlt<br />

auch diesem Kandidaten.<br />

Über die Dunkelkammer schneiden Anwender<br />

Fotos zu, richten sie aus und<br />

korrigieren die Perspektive. Zudem sind<br />

ein Kurvenwerkzeug, eine Belichtungskorrektur,<br />

ein Weißabgleich, Tools zur<br />

Farbkorrektur, Rauschunterdrückung,<br />

verschiedene Filter und einiges mehr im<br />

Angebot. Bei der Retusche ist Darktable<br />

erstaunlich schnell, und auch die Stapel-<br />

verarbeitung mehrerer Bilder geht flott<br />

von der Hand.<br />

Genau wie Corel Aftershot Pro speichert<br />

Darktable die Änderungen nicht im Original,<br />

sondern in der Datenbank. Um<br />

sie anzuwenden, exportieren Anwender<br />

die Schnappschüsse. Die Fotoverwaltung<br />

speichert in den Formaten Jpeg, Tiff und<br />

PNG. Wahlweise verschickt sie Bilder per<br />

Mail, lädt sie zu Facebook oder Picasa.<br />

Zudem erzeugt Darktable Latex-Buchtemplates<br />

und HTML-Galerien. Sofern das<br />

Bildformat dies unterstützt, schreibt die<br />

Fotoverwaltung die Bearbeitungs-History<br />

als XMP-Tags in die Datei.<br />

E Digikam<br />

Bereits seit 2006 verwaltet die KDE-Anwendung<br />

Digikam [3] Fotos. Sie setzt<br />

im Hintergrund ebenfalls auf Gphoto [7]<br />

und unterstützt daher zahlreiche Kameramodelle.<br />

Die meisten <strong>Linux</strong>-Distributionen<br />

liefern das GPL-Programm in den<br />

Standardrepositories aus. Auf der Homepage<br />

stehen ebenfalls die Quellen zur Verfügung.<br />

Mac-, Free-BSD und Windows-<br />

Anwender finden auf der Projektseite<br />

Download-Links für ihre Betriebssysteme.<br />

Im Test trat Version 3.1.0 an.<br />

Digikam erkennt zahlreiche Bildformate<br />

(Jpeg, Tiff, PNG, PGF und dank Libraw<br />

[6] auch viele Raw-Formate) und importiert<br />

sogar Video- und Audiodateien<br />

(Mpeg und AVI). Im Test klappte das<br />

Einlesen über den PTP- und den Massenspeichermodus<br />

mit der Kamera und dem<br />

Smartphone ohne Probleme. Zudem importiert<br />

Digikam aus lokalen Verzeichnissen<br />

oder von Netzlaufwerken, direkt über<br />

einen angeschlossenen Scanner oder aus<br />

einem Social Web (Picasa, Facebook und<br />

Smugmug).<br />

Über ein <strong>Vorschau</strong>fenster sortieren Anwender<br />

das Material vor dem Import. Je<br />

nach Bildmenge und Hardware-Austattung<br />

kann das Erstellen der Thumbnails<br />

eine Weile dauern. Bilder, Videos und<br />

Audiodateien beschreibt der Benutzer<br />

auf Wunsch schon beim Einlesen und<br />

versieht die Daten mit Schlagworten<br />

(siehe Abbildung 5). Auch die Struktur<br />

der Alben auf der Festplatte legt er in<br />

diesem Schritt fest. Digikam nutzt neben<br />

Exif und IPTC auch XMP und schreibt<br />

die Metadaten in XMP-Sidecar-Dateien.<br />

Stichwörter, Metadaten und die Benutzerbewertung<br />

verwaltet das KDE-Tool<br />

wahlweise in einer SQlite- oder MySQL-<br />

Datenbank.<br />

Die Lernkurve ist moderat, auch Einsteiger<br />

finden sich nach kurzer Zeit zurecht.<br />

Abbildung 4: Darktable erstellt auf Wunsch Snapshots von den Bearbeitungsschritten, sodass Anwender<br />

jederzeit zu einer früheren Version des Fotos zurückkehren können.


Abbildung 5: Digikam organisiert Stichwörter in Hierarchien. Beim Eintragen der Schlagwörter geben die<br />

Anwender optional mehrere Gruppen an.<br />

Über »Durchsuchen« verwaltet der Benutzer<br />

seine Bildersammlung. Er betrachtet<br />

die Alben entweder in einer Menüstruktur<br />

oder er blättert über »Stichwörter«<br />

durch die vergebenen Schlagwörter. Im<br />

Kalender erreicht er die Schnappschüsse<br />

eines bestimmten Tages und über eine<br />

Karte Aufnahmen bestimmter Orte. Die<br />

erweiterte Suchfunktion ermöglicht auch<br />

komplexe Abfragen der einzelnen Datenbankfelder.<br />

Digikam bietet an, die eigene Bildersammlung<br />

nach Gesichtern zu durchforsten.<br />

Schon bei einem kleinen Bestand<br />

dauerte der initiale Suchvorgang im Test<br />

allerdings relativ lange. Den gefundenen<br />

Konterfeis ordnet der Anwender Namen<br />

zu, die Digikam als Stichwörter unter<br />

dem Oberbegriff »Personen« ablegt. Bei<br />

einem erneuten Suchlauf erkennt die<br />

KDE-Fotoverwaltung ähnlich aussehende<br />

Personen meistens automatisch. Im Test<br />

klappte das nicht immer zuverlässig, das<br />

Programm sah auch in einer Hausfassade<br />

und in einer Straßensperre menschliche<br />

Gesichter.<br />

Momentaufnahme<br />

nach Orten und blendet auf Openstreetmap-Karten<br />

alle gefundenen Bilder ein<br />

(siehe Abbildung 6).<br />

Digikam besitzt Bearbeitungswerkzeuge<br />

zum Drehen und Spiegeln, korrigiert<br />

(automatisch) Farbe, Helligkeit und Kontrast,<br />

Farbschattierung und Sättigung,<br />

Tonwert und Farbbalance. Zudem enthält<br />

es Funktionen zum Invertieren, Entsättigen,<br />

Weichzeichnen und Schärfen und<br />

etliches mehr. Ein Rote-Augen-Tool ist<br />

ebenso dabei wie Zuschneide- und Transformationswerkzeuge.<br />

Oben drauf setzt das KDE-Programm einen<br />

bunten Strauß Effekte wie Regentropfen<br />

oder Filmkörnung. In der Abteilung<br />

Dekoration fügen Nutzer ihren Schnappschüssen<br />

Text, Rahmen oder eine Textur<br />

hinzu. Die Stapelverarbeitung enthält<br />

weitere Werkzeuge, um beispielsweise<br />

Wasserzeichen einzufügen.<br />

Mit einer Split-Screen-Ansicht hilft die<br />

Fotoverwaltung dabei, Bildzustände vor<br />

und nach dem Bearbeiten zu vergleichen<br />

– das ist komfortabel. Per Rechtsklick auf<br />

eine Aufnahme öffnet der Benutzer sie<br />

in einem externen Programm. Die KDE-<br />

Anwendung setzt wie die anderen Kandidaten<br />

auf die nicht-destruktive Bildbearbeitung.<br />

Egal wie viele Änderungen ein<br />

Benutzer an den Fotos vornimmt – das<br />

Originalbild tastet sie nicht an.<br />

Mit Backupzielen, wie Darktable sie<br />

beispielsweise kennt, arbeitet Digikam<br />

nicht; Anwender kümmern sich selbst<br />

um die Sicherung. Die Entwickler raten<br />

zu regelmäßigen Backups des Digikam-<br />

Datenordners am besten auf einer externen<br />

Platte oder in der Cloud.<br />

Digikam ist unübertroffen bei den Exportfunktionen.<br />

Die KDE-Anwendung<br />

speichert in 15 Bildformaten, erzeugt<br />

Kalender und HTML-Galerien. Über »Exportieren«<br />

veröffentlichen Benutzer ihre<br />

Schnappschüsse bei zahlreichen Online-<br />

Anbietern, darunter Flickr, Facebook,<br />

23, Piwigo, Wikimedia Commons und<br />

Imageshack. In dem Menü finden sie außerdem<br />

Einträge, um Bilder per E-Mail<br />

zu verschicken, sie auf einen iPod zu<br />

laden oder per Kopete an einen Instant-<br />

Messenger-Freund zu senden.<br />

E Shotwell<br />

Der Gnome-Fotomanager Shotwell [4]<br />

liegt gängigen <strong>Linux</strong>-Distributionen meist<br />

als Version 0.12.x bei. Wer eine neuere<br />

Bitparade 09/2013<br />

Software<br />

www.linux-magazin.de<br />

51<br />

GPS-Informationen liest das Tool aus den<br />

Exif-Daten der Kamera aus, sofern diese<br />

einen Empfänger besitzt. Über »Bild |<br />

Geo‐Lokalisierung« fügt der Anwender<br />

fehlende Daten selbst hinzu oder korrigiert<br />

die vorhandenen. Digikam arbeitet<br />

wahlweise mit Marble, Google Maps<br />

oder Openstreetmap zusammen. Dank<br />

der Kipi-Plugins [8] ist es möglich, Zeitstempel<br />

von Bildern mit einem GPX-Track<br />

abzugleichen. Im selben Dialog sucht der<br />

Benutzer auf dem gleichnamigen Reiter<br />

Abbildung 6: Das KDE-Programm Digikam arbeitet unter anderem mit Openstreetmap zusammen und nutzt<br />

diese Plattform auch, um Bilder zu bestimmten Orten zu finden.


Software<br />

www.linux-magazin.de Bitparade 09/2013<br />

52<br />

Ausgabe des unter der LGPL 2.1 lizenzierten<br />

Programms testen möchte, der<br />

findet auf der Projektseite die Quellen<br />

und weitere Hinweise zur Installation der<br />

aktuellen Variante 0.14, die sich auch die<br />

Tester anschauten.<br />

Shotwell arbeitet mit Jpeg-, Tiff-, PNGund<br />

BMP-Dateien sowie den von Libraw<br />

[6] unterstützten Raw-Formaten. Zusätzlich<br />

erkennt und importiert die Fotoverwaltung<br />

Videos (Ogg Theora, Quicktime,<br />

Mpeg-4 und AVI), was sie der Zusammenarbeit<br />

mit dem Gstreamer-Multimedia-Framework<br />

[9] verdankt.<br />

Direkt nach dem Start bietet das Programm<br />

an, Fotos aus dem Ordner »Bilder«<br />

im Homeverzeichnis der Anwender<br />

zu importieren. Auch Shotwell setzt auf<br />

Gphoto [7] und erkennt eingehängte<br />

Kameras sofort, egal ob im Massenspeicher<br />

oder über PTP angeschlossen.<br />

Beim Anschließen eines Smartphones im<br />

Massenspeichermodus hakte es im Test<br />

mitunter – das Gnome-Programm quittierte<br />

den Dienst. Weitere Importquellen<br />

sind mit F-Spot verwaltete Fotobestände,<br />

Speicherkarten und die lokale Festplatte.<br />

In den Programmeinstellungen legen Benutzer<br />

den Speicherort und die Ordnerstruktur<br />

fest.<br />

Shotwell zeigt Exif-, IPTC- und XMP-<br />

Informationen an, erlaubt aber nur eingeschränkte<br />

Modifikationen an diesen<br />

Metadaten. Anwender dürfen lediglich<br />

den Titel, Schlagwörter, Datum und<br />

Uhrzeit sowie ihre Bewertung anpassen.<br />

Als Datenbank kommt SQlite zum<br />

Einsatz. Vorhandene GPS-Informationen<br />

verwendet die Anwendung selbst nicht,<br />

um sie etwa auf einer Karte darzustellen<br />

oder einen GPX-Track zu bebildern. Die<br />

Geotags tauchen allerdings in den Exif-<br />

Daten auf – Shotwell zeigt Längen- und<br />

Breitengrad an (Abbildung 7). Im Test<br />

klappte das nicht mit allen Bildern, obwohl<br />

die Metadaten nachweislich vorhanden<br />

waren.<br />

Eine Gesichtserkennung bietet das<br />

Gnome-Programm derzeit nicht, sie ist<br />

aber als Projekt im diesjährigen Google<br />

Summer of Code geplant [10]. Mager ist<br />

zurzeit noch die Auswahl an Bearbeitungswerkzeugen,<br />

hier hinkt Shotwell<br />

allen anderen Kandidaten hinterher. Im<br />

Angebot sind lediglich Funktionen zum<br />

Drehen und Spiegeln, Zuschneiden,<br />

Ausrichten, ein Verbessern-Zauberstab<br />

(der keine Benutzer-Interaktion zulässt),<br />

ein Rote-Augen-Tool und eine einfache<br />

Farbanpassung (Abbildung 8). In den<br />

Programmeinstellungen legen die Benutzer<br />

daher am besten einen externen<br />

Foto- und Raw-Editor fest, der bei aufwändigen<br />

Retuschearbeiten in die Bresche<br />

springt.<br />

Seit Version 0.9 erweitern Plugins die<br />

Fähigkeiten der Fotoverwaltung. Im Einrichtungsdialog<br />

finden Anwender auf ei-<br />

nem Reiter bereits zahlreiche Erweiterungen,<br />

die sie hier nach Belieben ein- und<br />

ausschalten können. Im Angebot sind<br />

Diaschau-Übergänge, ein Importfilter für<br />

F-Spot sowie diverse Plugins zur Kooperation<br />

mit Onlinediensten wie Facebook,<br />

Flickr, Picasa oder Youtube.<br />

Als recht eingeschränkt erwies sich auch<br />

der Batchmodus. Markiert der Anwender<br />

mehrere Fotos, stehen ihm lediglich<br />

Funktionen zum Drehen und Spiegeln<br />

Abbildung 7: Die erweiterten Informationen präsentieren die Exif-Daten. GPS-Koordinaten zeigt Shotwell<br />

zwar an und exportiert sie auch, nutzt sie aber nicht für eigene Funktionen.<br />

Abbildung 8: Shotwell bietet nur wenige Werkzeuge zur Bildbearbeitung. Hier hilft im Zweifelsfall der Griff zu<br />

einem externen Editor, den Anwender vorher in den Programmeinstellungen definieren.


sowie der Verbessern-Zauberstab zur Verfügung.<br />

Auch darf er für mehrere Bilder<br />

Titel, Datum und Uhrzeit, Tags und die<br />

Bewertung modifizieren.<br />

Wie die anderen Kandidaten tastet Shotwell<br />

die Originaldateien nicht an. Um für<br />

ein bearbeitetes Bild die Urfassung anzuzeigen,<br />

halten Anwender die Umschalttaste<br />

gedrückt. Über »Foto | Zurück zum<br />

Original« machen sie alle Bearbeitungsschritte<br />

(mit Ausnahme von Datums- und<br />

Uhrzeitkorrekturen) rückgängig – eine<br />

History, die einzelne Stufen anzeigt, fehlt<br />

jedoch. Shotwell exportiert Bilder in die<br />

Formate Jpeg, Tiff, PNG und BMP und<br />

lädt sie über die erwähnten Plugins zu<br />

Online-Anbietern.<br />

Post-Processing<br />

Alle Fotoverwaltungen organisieren, archivieren<br />

und bearbeiten Bilder und erledigen<br />

ihren Job zuverlässig sowie mehr<br />

oder weniger performant. Die besten Im-<br />

und Exportfunktionen bieten Digikam<br />

und Shotwell, die auch Multimediales<br />

nicht außen vor lassen.<br />

Unterschiede gibt es im Wesentlichen<br />

bei den Bearbeitungswerkzeugen. Am<br />

besten haben den Testern die Editiertools<br />

von Corel Aftershot Pro gefallen.<br />

Schnelle Hardware vorausgesetzt erreichen<br />

Anwender schon nach kurzer<br />

Einarbeitungszeit wirklich gute Ergebnisse.<br />

Die Software punktet zudem mit<br />

einem Ebenenmodus und einer History,<br />

über die jederzeit frühere Bearbeitungsstände<br />

erreichbar bleiben.<br />

Digikam hat ebenfalls eine ganze Reihe<br />

von professionellen Werkzeugen an<br />

Bord, erschlägt aber mit seiner Auswahl<br />

jeden Hobbyfotografen, der nur die Fotos<br />

vom letzten Urlaub etwas aufhübschen<br />

möchte. Dafür überzeugt das Programm<br />

mit seiner Stabilität.<br />

Shotwell ist schlanker und übersichtlicher<br />

als die Konkurrenz, was aber auf Kosten<br />

der Funktionalität geht. Besonders das<br />

fehlende Metadaten-Management macht<br />

die Fotoverwaltung für Experten uninteressant.<br />

(hej) <br />

n<br />

Infos<br />

[1] Corel Aftershot Pro:<br />

[http:// www. corel. com/ corel/ product/​<br />

index. jsp? pid=prod4670071]<br />

[2] Darktable: [http:// www. darktable. org]<br />

[3] Digikam: [http:// www. digikam. org]<br />

[4] Shotwell:<br />

[http:// www. yorba. org/ projects/ shotwell]<br />

[5] Aftershot-Pro-Plugins:<br />

[http:// aftershotpro. com/ plugins]<br />

[6] Libraw: [http:// www. libraw. org]<br />

[7] Gphoto: [http:// gphoto. sourceforge. net]<br />

[8] Kipi-Plugins: [http:// projects. kde. org/​<br />

projects/ extragear/ graphics/ kipi‐plugins]<br />

[9] Gstreamer:<br />

[http:// gstreamer. freedesktop. org]<br />

[10] Gesichtserkennung für Shotwell:<br />

[http:// redmine. yorba. org/ projects/​<br />

shotwell/ wiki/ FacesTool]<br />

Bitparade 09/2013<br />

Software<br />

www.linux-magazin.de<br />

53


Software<br />

www.linux-magazin.de Tooltipps 09/2013<br />

56<br />

Werkzeuge im Kurztest<br />

Tooltipps<br />

Fish 2.0.0<br />

Alternative Shell<br />

Quelle: [http:// fishshell. com]<br />

Lizenz: GPLv2<br />

Alternativen: Bash, Dash, Z-Shell<br />

Bad 0.0.2<br />

Backupverzeichnisse überwachen<br />

Quelle: [https:// github. com/ SaviorPhoenix/​<br />

bad]<br />

Lizenz: GPLv2<br />

Alternativen: Lsyncd, Pirysncd<br />

Blink 16jun13<br />

Schlanke Blogengine<br />

Quelle: [http:// tinybashcgis. tuxfamily. org]<br />

Lizenz: GPL<br />

Alternativen: Blazeblogger<br />

Fish ist ein Kommandozeilen-Interpreter<br />

mit interessanten Zusatzfeatures. Auf<br />

den ersten Blick wirkt die Shell wie die<br />

Bash, aber schon bei der ersten Befehlseingabe<br />

sieht alles anders aus. Mit Syntax<br />

Highlighting hebt das Programm unvollständige<br />

Befehle in Rot hervor, korrekte<br />

Kommandos erscheinen in Blau und Parameter<br />

sind türkis gefärbt.<br />

Zudem versucht Fish Befehle und Parameter<br />

zu erraten und macht bereits<br />

während der Eingabe Vorschläge. Dabei<br />

greift das Tool auf die History der aktuellen<br />

Session zurück. Eine Tab-Completion,<br />

Pipes und Umleitungen haben die Entwickler<br />

ebenfalls implementiert.<br />

Eine Überraschung erlebt, wer »help« eintippt.<br />

Die Shell zeigt nicht etwa eine Liste<br />

der verfügbaren Kommandos an, sondern<br />

öffnet die Onlinehilfe im Standardbrowser.<br />

Dieser startet auch, wenn Benutzer<br />

»fish_config« aufrufen. Per Mausklick<br />

schalten sie dann Features ein und aus<br />

und sehen ebenfalls die History. Ein Blick<br />

auf die Projektseite – dort insbesondere<br />

auf das Tutorial – ist empfehlenswert, vor<br />

allem für Anwender, die sich für Skripting<br />

mit Fish interessieren.<br />

★★★★★ Fish ist eine interessante Shell-<br />

Alternative für <strong>Linux</strong>- und OS-X-Anwender.<br />

Neben den Standardfunktionen<br />

punktet das Tool vor allem mit Syntax<br />

Highlighting und den Vorschlägen bei der<br />

Eingabe.<br />

n<br />

Der Backup-Daemon überwacht ein vom<br />

Anwender definiertes Verzeichnis, erstellt<br />

MD5-Summen für neu hinzugekommene<br />

Daten und kopiert sie dann in einen weiteren<br />

Ordner. Um die eigentliche Datensicherung<br />

kümmert sich das Tool nicht.<br />

Hier ist ein weiteres Programm erforderlich,<br />

das den Zielordner sichert.<br />

Bad berücksichtigt Änderungen in Unterverzeichnissen,<br />

jedoch nur bis zur ersten<br />

Stufe. Welche Änderungen im Dateisystem<br />

erfolgt sind, erfährt Bad über die<br />

Inotify-Funktion des Kernels. In der persönlichen<br />

Konfigurationsdatei »~/.bad/<br />

config« geben Benutzer über »watch_dir«<br />

und »backup_dir« an, welchen Ordner<br />

der Daemon überwacht und wohin er<br />

neue Daten kopiert.<br />

Weitere Einstellungen sind über Aufrufparameter<br />

definierbar. So versetzt »‐d« das<br />

Programm zu Testzwecken in einen Dryrun-Modus,<br />

»‐l« beeinflusst den Loglevel,<br />

»‐n« deaktiviert das Hashing und »‐N«<br />

schaltet die rekursive Sicherung ab. Seine<br />

Aktionen protokolliert der Daemon nicht<br />

im Standardverzeichnis unter »/var/log«,<br />

sondern in den Homeverzeichnissen der<br />

Nutzer in der Datei »~/.bad/log«.<br />

★★★★★ Bad ist ein noch junges Projekt<br />

und bietet bisher nur wenige fortgeschrittene<br />

Funktionen. Dennoch hat das Tool<br />

Potenzial und es lohnt sich, es im Auge<br />

zu behalten.<br />

n<br />

Wer eine handliche Blogengine sucht,<br />

der sollte einen Blick auf Blink werfen.<br />

Nach dem Entpacken des Archivs kopieren<br />

Admins das Verzeichnis »cgi‐bin« in<br />

den Dokumentenordner des Webservers<br />

und stellen sicher, dass die enthaltenen<br />

CGI-Dateien ausführbar sind.<br />

Blink verwaltet mehrere Blogs in Verzeichnissen<br />

unterhalb von »cgi‐bin/<br />

blink«. Soll eines davon Kommentare aufnehmen,<br />

erstellen Admins zusätzlich das<br />

Verzeichnis ».comments« im jeweiligen<br />

Blogordner. Wer CSS nutzen möchte, der<br />

muss den HTML-Code im Skript anpassen;<br />

die Datei »README.blink« erklärt,<br />

wie es geht. Blink sortiert die Blogartikel<br />

nach ihrem Änderungsdatum.<br />

Über »post« öffnen Anwender ein Formular,<br />

in dem sie einen Text verfassen können.<br />

Ebenso öffnet ein Klick auf »Comment«<br />

ein Eingabefeld für Kommentare.<br />

Die Textarea ist in beiden Fällen auf 500<br />

Wörter begrenzt; HTML-Tags und ‐Entities<br />

versteht die Engine. Als Schutz vor<br />

Spambots geben Nutzer vor dem Absenden<br />

den aktuellen Monat ein. Eine einfache<br />

Suchfunktion ist ebenfalls dabei.<br />

★★★★★ Die schlanke Blogengine eignet<br />

sich vornehmlich für kleinere Netze oder<br />

den Heimrechner. Mangels einer ausgefeilten<br />

Zugriffsverwaltung sollten sich<br />

Admins gut überlegen, ob sie Blink als<br />

offenes Blog im Netz betreiben. n


Probelesen<br />

ohne risiko<br />

Und Gewinnen!<br />

einen von drei Spheros, per Smartphone fernsteuerbare<br />

Roboter-Bälle im Gesamtwert von 389 Euro<br />

wasserfester Kugelroboter, per Bluetooth steuerbar,<br />

Multi-Colour-Changing LEDs, Apps für Android und iOS<br />

induktive Ladestation (3 Std. Ladezeit, 1 Std. Betriebszeit)<br />

gesponsert von<br />

.de<br />

sonderAkTion!<br />

Testen sie jetzt<br />

3 Ausgaben für<br />

nUr 3€*<br />

Telefon: 07131 /2707 274<br />

Fax: 07131 / 2707 78 601<br />

E-Mail: abo@linux-user.de<br />

Mit großem Gewinnspiel unter:<br />

www.linux-user.de/probeabo<br />

* Angebot gilt innerhalb Deutschlands und Österreichs. In der Schweiz: SFr 4,50.<br />

Weitere Preise: www.linux-user.de/produkte


Software<br />

www.linux-magazin.de Tooltipps 09/2013<br />

58<br />

Fping 3.5<br />

Leistungsfähige Ping-Alternative<br />

Quelle: [http:// fping. org]<br />

Lizenz: GPL<br />

Alternativen: Ping<br />

Lnav 0.5.0<br />

Logdateien-Navigator<br />

Quelle: [http:// tstack. github. io/ lnav]<br />

Lizenz: BSD revised<br />

Alternativen: Multitail<br />

Tomb 1.4<br />

Verschlüsselte Dateicontainer erzeugen<br />

Quelle: [http:// www. dyne. org/ software/​<br />

tomb]<br />

Lizenz: GPLv3<br />

Alternativen: Cryptmount, Truecrypt<br />

Fping sendet ICMP-Pakete an einen<br />

Rechner und wertet die Antwortzeiten<br />

aus. Da das Tool auf Raw-Sockets zurückgreift,<br />

benötigt es Rootrechte. Ist IPv6-<br />

Support gewünscht, gibt der Anwender<br />

dies beim Kompilieren der Quellen an.<br />

Die ausführbare Datei heißt dann nicht<br />

»fping«, sondern »fping6«.<br />

Im Gegensatz zu Ping kann das Werkzeug<br />

mehrere Systeme mit einem Aufruf<br />

abklopfen. Der Benutzer tippt die Adressen<br />

entweder von Hand ein oder übergibt<br />

sie mit dem Parameter »‐f« als Datei. Um<br />

alle Rechner in einem Subnetz zu testen,<br />

nimmt »‐g« als Option das Netz samt<br />

Netzmaske entgegen. Kombiniert mit »‐a«<br />

und »‐q« zeigt Fping nur die verfügbaren<br />

Systeme an und blendet die Fehlermeldungen<br />

nicht erreichter Hosts aus.<br />

Genau wie Ping sendet Fping 56 Byte<br />

große Datenpakete. Mittels »‐b« reduzieren<br />

Nutzer die Paketgröße auf 12 Byte<br />

oder erhöhen sie auf 64 KByte. Wer anstelle<br />

der IP-Adressen lieber die Namen<br />

der Zielrechner in der Ausgabe sehen<br />

möchte, der schaltet mit »‐d« das DNS-<br />

Lookup an.<br />

Fping wartet nach dem Abschicken eines<br />

ICMP-Pakets nicht auf eine Antwort<br />

oder auf einen Timeout, sondern geht<br />

nach dem Round-Robin-Prinzip vor und<br />

spricht direkt den nächsten Host an. Erhält<br />

das Tool eine Antwort, entfernt es<br />

den Recher aus der Liste und macht eine<br />

Ausgabe. In der Voreinstellung probiert<br />

es dreimal, ein System zu erreichen, aber<br />

über »‐r« können Anwender die Anzahl<br />

der Versuche erhöhen. Der Parameter »‐l«<br />

schaltet in eine Endlosschleife, »‐s« zeigt<br />

eine statistische Auswertung.<br />

★★★★★ Fping klopft nicht nur mehrere<br />

Hosts gleichzeitig ab, sondern gibt zahlreiche<br />

Extrainformationen aus. n<br />

Wer in den Logdateien eines großen Servers<br />

nach bestimmten Einträgen sucht,<br />

sieht oft den Wald vor lauter Bäumen<br />

nicht. Lnav hilft beim Lichten des Informationsdickichts.<br />

Das Curses-basierte<br />

Tool bereitet den Inhalt von Protokolldateien<br />

auf und hebt Zeitstempel, Loglevel<br />

und andere Meldungen hervor. Es versteht<br />

und analysiert »/var/log/syslog«,<br />

Apache-Zugriffsprotokolle, Strace und<br />

andere Protokolle, die Timestamps enthalten.<br />

Wichtige Informationen färbt Lnav ein.<br />

So markiert es Warnungen beispielsweise<br />

gelb, während Fehler rot sind. Mit dem<br />

Kommando »highlight«, gefolgt von einem<br />

Suchmuster, färben Anwender auch<br />

andere Einträge bunt. Den Anstrich dürfen<br />

sie allerdings nicht festlegen, Lnav<br />

wählt selbst die Farben aus und ändert<br />

diese bei jedem neuen Aufruf. Filter und<br />

Suchfunktionen sortieren die Informationen.<br />

Der Einsatz von regulären Ausdrücken<br />

ist dabei möglich.<br />

Das Sortieren der Ausgabe können auch<br />

SQL-Statements erledigen. Lnav benutzt<br />

die Virtual-Table-Funktion von SQlite 3,<br />

um rudimentäre Tabellen zu erzeugen.<br />

Wer möchte, kann eigene Tabellen anlegen.<br />

Beispiele für den Einsatz von SQL,<br />

eine Auflistung der integrierten Lnav-Befehle<br />

und der verfügbaren Tastenkürzel<br />

bietet die Onlinehilfe, die »?« auf den<br />

Schirm bringt. Bei den Shortcuts haben<br />

sich die Entwickler an gängigen Tools<br />

orientiert. So leitet »/« beispielsweise<br />

eine Textsuche ein, »:« wechselt in den<br />

Befehls- und »;« in den SQL-Modus.<br />

★★★★★ Lnav wird seinem Namen gerecht<br />

und hilft bei der Navigation in Logdateien.<br />

Das Tool erleichtert damit die<br />

Analyse und Auswertung der Protokolle.<br />

Ausgefeilte Filter- und Suchfunktionen<br />

runden das Paket ab.<br />

n<br />

Tomb erstellt und verwaltet verschlüsselte<br />

Container auf der Shell. Dazu verwendet<br />

das Tool keine eigenen Algorithmen,<br />

sondern setzt als Wrapper auf<br />

bewährte Werkzeuge wie Cryptsetup,<br />

»dd« und »mkfs«. Tomb setzt zudem die<br />

Z-Shell voraus. Einige Befehle erfordern<br />

Rootrechte.<br />

Anwender erstellen ihre Container in<br />

drei Arbeitsschritten. Zunächst rufen sie<br />

Tomb mit dem Parameter »dig« auf, um<br />

den Behälter zu erstellen. Als Optionen<br />

definieren sie die Größe in MByte und<br />

den Namen. Im zweiten Schritt erzeugt<br />

»forge« eine Schlüsseldatei, die das Passwort<br />

zur Verschlüsselung enthält. Zu guter<br />

Letzt initialisiert der Parameter »lock«<br />

die Containerdatei und verschließt sie mit<br />

dem erzeugten Key.<br />

Frühere Tomb-Versionen kannten den<br />

Parameter »create«, der alle drei Phasen<br />

automatisiert durchführte. Die aktuelle<br />

Version unterstützt den Befehl noch, die<br />

Hilfe und die Manpage erwähnen ihn<br />

allerdings nicht mehr.<br />

Mit »open« öffnen Benutzer Tomb-<br />

Container, wobei sie hinter »‐o« weitere<br />

Mountoptionen angeben dürfen. In der<br />

Voreinstellung hängt das Tool die Container<br />

unterhalb von »/media« ein. Um<br />

herauszufinden, welche gerade geöffnet<br />

sind, verwenden Nutzer den Parameter<br />

»list«. Weitere Kommandos wie »index«<br />

oder »search« indizieren alle Daten eines<br />

Containers und ermöglich damit die Suche.<br />

Informationen und Anwendungsbeispiele<br />

liefert die Manpage.<br />

★★★★★ Tomb erzeugt verschlüsselte<br />

Container in wenigen Schritten auf der<br />

Kommandozeile und bindet diese ins<br />

Dateisystem ein. (U. Vollbracht/​hej) n


Aus dem Alltag eines Sysadmin: Whowatch & Co.<br />

Ohne Besuchsrecht<br />

Einführung 09/2013<br />

Sysadmin<br />

Ganz ohne konkreten Anlass macht Sysadmin-Kolumnist Charly ab und an einen kleinen Rundgang um seine<br />

Server und schaut nach Angreifern. Dafür hat er ein kleines Instrumentarium paratliegen. Charly Kühnast<br />

www.linux-magazin.de<br />

59<br />

Inhalt<br />

60 E-Mails bereinigen<br />

Verräterische Header von E-Mails geben<br />

unnötig viele Auskünfte übers LAN.<br />

66 <strong>Linux</strong> by Microsoft<br />

Im VM-Depot bietet der Software-Riese<br />

jede Menge <strong>Linux</strong>-Images für seine<br />

Azure-Cloud an.<br />

68 Open Stack und Hyper V<br />

Eine italienische Firma hilft Microsoft und<br />

bringt Open Stack auf Windows-Hosts.<br />

Jeder Server, der IP-mäßig im Internet<br />

steht, bekommt ungebetenen Besuch.<br />

Die üblichen Scans und skriptgesteuerten<br />

Flächenbombardements tropfen bei meinen<br />

Geräten einfach ab, etwa durch geschicktes<br />

Firewalling, Port Knocking [1]<br />

oder mit Zusatztools wie Fail2Ban [2].<br />

Damit mir darüber hinaus niemand ein<br />

Ei legt, benutze ich die beiden Rootkit-<br />

Jäger Rkhunter [3] und Chkrootkit [4].<br />

Letzterer bezichtigt meinen DHCP-Server<br />

leider der Paketschnüffelei:<br />

eth0: PACKET SNIFFER(/usr/sbin/dhcpd[28382])<br />

Das ist ein bekannter False Positive, den<br />

ich ignoriere. Als Zwischenbericht kann<br />

ich vermelden, dass meine Kammerjäger<br />

bislang ohne Beute geblieben sind.<br />

Trotzdem gehe ich gelegentlich auf Patrouille<br />

und schaue, ob sich ein Server<br />

Abbildung 1: In der Baumansicht präsentiert Whowatch alle Prozesse im System.<br />

merkwürdig benimmt. Dazu benutze ich<br />

gerne Whowatch [5]. Das Tool startet<br />

im Terminal mit einer Prozessliste, in der<br />

zweiten Spalte sehe ich deren Besitzer. In<br />

der dritten zeigt Whowatch, ob der User<br />

lokal, über SSH, Telnet oder auf andere<br />

Weise angemeldet ist. Danach folgt bei<br />

entfernten Benutzern die IP-Adresse, bei<br />

lokalen sehe ich »:0«.<br />

Steuern per Hotkey<br />

Jetzt habe ich zwei Möglichkeiten,<br />

durch die Informationen zu navigieren:<br />

Ich kann mit den Pfeiltasten einen Zeile<br />

auswählen, [Enter] drücken und erhalte<br />

eine Baumansicht mit den zugehörigen<br />

Prozessen wie Abbildung 1. Ein Druck<br />

auf [O] (Owner) blendet die Anzeige des<br />

Prozesseigentümers ein und aus, [D] (Details)<br />

erzeugt ein Fenster mit genauen<br />

Informationen über den Prozess.<br />

Als Möglichkeit zwei tippe ich [T] (Tree<br />

View) für alle laufenden Prozesse. Und<br />

auch in dieser Baumansicht bekomme<br />

ich per [D] (Details) genauere Informationen.<br />

Mit [L] (List of Signals) lasse ich<br />

mir die Steuersignale anzeigen, die ich<br />

dem Prozess schicken kann, etwa »HUP«,<br />

»INT«, »TERM« und im Notfall »KILL«.<br />

Den Status des Gesamtsystems, insbesondere<br />

was die Speicherverwaltung angeht,<br />

blende ich mit [S] (Sysinfo) ein,<br />

hierbei lässt Whowatch die Gesamtlast<br />

im Top-Stil über den Bildschirm zappeln<br />

(Abbildung 2).<br />

Gefunden habe ich bei meinen Server-<br />

Rundgängen bislang nichts, außer ein<br />

wohliges Gefühl von Sicherheit. (jk) n<br />

Infos<br />

[1] Firewall Knock Operator Fwknop:<br />

[http:// www. cipherdyne. org/ fwknop/]<br />

[2] Fail2Ban: [http:// www. fail2ban. org]<br />

[3] Rkhunter: [http:// rkhunter. sourceforge. net]<br />

[4] Chkrootkit: [http:// www. chkrootkit. org]<br />

[5] Whowatch:<br />

[http:// whowatch. sourceforge. net]<br />

Abbildung 2: Top grüßt aus der Ferne, wenn Whowatch auf den Tastendruck [S] die Gesamtlast anzeigt.<br />

Der Autor<br />

Charly Kühnast administriert<br />

Unix-Syste me im Rechenzentrum<br />

Niederrhein. Zu seinen<br />

Aufgaben gehören Sicherheit<br />

und Verfügbarkeit der<br />

Firewalls und der DMZ.


Sysadmin<br />

www.linux-magazin.de Mailheader 09/2013<br />

60<br />

Verräterische Daten aus E-Mail-Headern entfernen<br />

Talking Heads<br />

Die Header von E-Mails geben Auskunft über Strukturen des lokalen Netzwerks. Dies lässt sich schon auf dem<br />

eigenen Mailserver so weit reduzieren, dass Fremde hier nur solche Daten vorfinden, die für den Transport der<br />

Nachrichten notwendig sind. Harry Knitter<br />

© Aaron Amat, 123RF.com<br />

zeigt, wie der Admin die Header auf ein<br />

Mindestmaß reduziert.<br />

Sehr verbreitet sind Netzwerk-Konstellationen<br />

wie die in Abbildung 1: Ein<br />

Router verbindet LAN und ISP. Zwischen<br />

ihm und dem eigentlichen LAN mit den<br />

Clientrechnern, vielleicht auch weiteren<br />

Servern, hängt ein Gateway. Dessen externe<br />

Netzwerkschnittstelle ist mit dem<br />

Router, eine interne Schnittstelle über<br />

einen Switch ist mit den restlichen Maschinen<br />

im lokalen Netz verbunden. Die<br />

Netzwerkschnittstellen gehören unterschiedlichen<br />

Subnetzen an. Im Artikel<br />

und in den Listings 1 bis 5 finden die in<br />

Tabelle 1 beschriebenen anonymisierten<br />

Adressen Verwendung.<br />

Netz-Architektur<br />

Prism, Tempora oder auch das gute alte<br />

Echelon – all diese Schnüffeleien durch<br />

Geheimdienste oder andere, kriminelle<br />

Organisationen haben nicht nur Daten<br />

als Ziel, deren Übertragung dem Benutzer<br />

bewusst ist. Auch die automatisch<br />

angefügten Transportinformationen, zum<br />

Beispiel bei E-Mails, können wertvolle<br />

Hinweise enthalten, die spätere Angriffe<br />

erleichtern.<br />

PGP hilft nicht bei Headern<br />

Dagegen helfen auch PGP und GPG mit<br />

ihrer Ende-zu-Ende-Verschlüsselung<br />

nicht. Die entzieht zwar die Inhalte der<br />

E-Mails dem Blick Unbefugter und SSL/​<br />

TLS verbirgt darüber hinaus auch die<br />

Header-Informationen – aber nur während<br />

des Transports. Spätestens beim<br />

Internet Service Provider (ISP), der die<br />

Mails weiterleitet, liegen genau diese<br />

Header-Informationen wieder im Klartext<br />

vor, obgleich die beteiligten Mailserver<br />

die Nachricht verschlüsselt übertragen<br />

haben. Solche Header von E-Mails enthalten<br />

häufig Informationen, die interne<br />

Strukturen des lokalen Netzwerks offenlegen<br />

und damit potenziellen Angreifern<br />

wichtige Hinweise geben. Dieser Artikel<br />

Tabelle 1: Im Text verwendete Adressen<br />

Adresse<br />

Meine_Domain.local<br />

Gateway.Meine_Domain.local<br />

Bedeutung<br />

Der Router erhält vom ISP entweder eine<br />

dynamische IP und – eventuell auch dynamisch<br />

– einen Fully Qualified Domain<br />

Name (FQDN), zum Beispiel »Name_meines_Routers.Mein_ISP.com«<br />

zugewiesen.<br />

Oder er ist auf seiner ins Internet weisenden<br />

Schnittstelle mit einer festen, ebenfalls<br />

vom ISP zugeteilten IP-Adresse versehen.<br />

Die Verbindung vom Router zum<br />

Name der lokalen Domain (LAN)<br />

Fully Qualified Domain Name (FQDN) des Gatewayrechners<br />

example.com Name der offiziellen Domain (für externe Mails, Web, ...)<br />

Mein_ISP.com<br />

Name_meines_Routers.Mein_ISP.com<br />

Adresse@Meine_Domain.local<br />

Ich@example.com<br />

Adresse@Externe_Domain.com<br />

Domainname des Sender-ISP<br />

Vom ISP zugewiesener FQDN für die externe Schnittstelle<br />

des Routers<br />

Irgendeine andere interne Mailadresse im lokalen Netz<br />

Externe (offizielle) Mailadresse des Senders<br />

Offizielle Mailadresse irgendeines externen Absenders oder<br />

Empfängers


Mailheader 09/2013<br />

Sysadmin<br />

ISP<br />

Internet<br />

Router<br />

Mail-Gateway<br />

LAN<br />

www.linux-magazin.de<br />

61<br />

Abbildung 1: Die typische Netzwerktopologie eines kleinen Unternehmens mit Client-LAN, Mail-Gateway und Router.<br />

Gateway bildet ein eigenes Netz, dessen<br />

Netzwerkadresse sich vom eigentlichen<br />

LAN unterscheiden sollte.<br />

Auf dem Gateway selbst laufen meist<br />

weitere Dienste, etwa DHCP oder DNS,<br />

sowohl für die interne Namensauflösung<br />

als auch für das Abholen externer DNS-<br />

Informationen über einen »forwarders«-<br />

Eintrag. Häufig kommen auch Squid als<br />

Webproxy und eine Firewall zum Einsatz,<br />

wenn das Gateway zugleich als Router<br />

dient. Natürlich werden all diese Dienste<br />

wie auch der für dieses Thema wichtige<br />

MTA (beispielsweise Postfix) und ein lokaler<br />

IMAP-Server wie Cyrus oder Dovecot<br />

nur an jener Schnittstelle lauschen,<br />

die in das LAN weist.<br />

Der lokale Mailserver ist für die Mails<br />

der lokalen Domain (»Meine_Domain.<br />

local«) zuständig und auch für die offizielle<br />

Domain (»example.com«). Mails an<br />

diese übergibt er an einen Relayhost beim<br />

ISP, der sie wiederum an die endgültigen<br />

Adressaten weiterleitet. Wie Admins<br />

Postfix als Mail Transport Agent dafür<br />

konfigurieren, lässt sich in [1] nachlesen.<br />

Dieser Artikel konzentriert sich auf das<br />

Umschreiben der Header und das Entfernen<br />

privater Informationen.<br />

Intern<br />

Damit Postfix die internen Mails richtig<br />

verarbeitet, bekommt der Eintrag »mydomain«<br />

in der Datei »/etc/postfix/main.cf«<br />

den Namen der internen Domain zugewiesen,<br />

also »Meine_Domain.local«.<br />

Der Eintrag »myhostname« wird durch<br />

die Installation auf den FQDN des Gatewayrechners<br />

(»Gateway.Meine_Domain.<br />

local«) selbst gesetzt, »mydestination«<br />

legt der Admin jetzt noch auf »Meine_<br />

Domain« (neben »localhost« und »localhost.Meine_Domain«).<br />

Damit fühlt sich<br />

Postfix für alle Mails an Adressen der<br />

internen Domain »Meine_Domain.local«<br />

und die des Gatewayrechners zuständig.<br />

Diese Mails bleiben im Haus und landen<br />

sofort beim lokalen IMAP-Server.<br />

Extern<br />

Damit die externen Mails, also alle, die<br />

Postfix nicht an »Adresse@Meine_Domain.local«<br />

ausliefern soll, an den MTA<br />

des ISP (»smtp.Mein_ISP.com«) weitergereicht<br />

werden, weist der Admin dem Eintrag<br />

»relayhost« den Namen des MTA des<br />

ISP zu, also »relayhost=smtp.Mein_ISP.<br />

com«. Eingehende Mails von »Adresse@<br />

externe_Domain.com« an »Adresse@<br />

example.com« erreichen den MTA nicht<br />

direkt. Vielmehr holt Fetchmail sie vom<br />

Listing 1: Gesprächige Mailheader<br />

01 Received: from Gateway.Meine_Domain.local<br />

02 (Name_meines_Routers.Mein_ISP.com [1.2.3.4])<br />

03 by smtp.Mein_ISP.com (xxxxx xxxx) (RZmta 31.27 DYNA|AUTH)<br />

04 with (DHE‐RSA‐AES256‐SHA encrypted) ESMTPA id 906d2cp5H92jgY<br />

05 for ;<br />

06 Mon, 17 Jun 2013 11:10:34 +0200 (CEST)<br />

07 Received: from localhost (localhost [127.0.0.1])<br />

08 by Gateway.Meine_Domain.local (Postfix) with ESMTP id 69CF0E009C<br />

09 for ; Mon, 17 Jun 2013 11:10:34 +0200 (CEST)<br />

10 X‐Virus‐Scanned: Debian amavisd‐new at Gateway.Meine_Domain.local<br />

11 Received: from Gateway.Meine_Domain.local ([127.0.0.1])<br />

12 by localhost (Gateway.Meine_Domain.local [127.0.0.1]) (amavisd‐new,<br />

port 10024)<br />

13 with ESMTP id zWPSMoUged0u for ;<br />

14 Mon, 17 Jun 2013 11:10:32 +0200 (CEST)<br />

15 Received: from host1.Meine_Domain.local (host1.Meine_Domain.local<br />

[192.168.0.10])<br />

16 by Gateway.Meine_Domain.local (Postfix) with ESMTP id F1516E0067<br />

17 for ; Mon, 17 Jun 2013 11:10:31 +0200 (CEST)<br />

18 To: Adresse@Externe_Domain.com<br />

19 Subject: test<br />

20 From: "Dr. Harry Knitter" <br />

21 User‐Agent: KMail/1.13.5 (<strong>Linux</strong>/2.6.32‐5‐686; KDE/4.4.5; i686; ; )<br />

22 Date: Mon, 17 Jun 2013 11:10:31 +0200<br />

23 X‐KMail‐Transport: Gateway.Meine_Domain.local<br />

24 X‐KMail‐QuotePrefix: ><br />

25 MIME‐Version: 1.0<br />

26 Content‐Type: Text/Plain;<br />

27 charset="iso‐8859‐15"<br />

28 Content‐Transfer‐Encoding: 7bit<br />

29 Message‐Id: <br />

30 X‐Seen: false<br />

31 X‐ENVELOPE‐TO: <br />

32 X‐Length: 3387<br />

33 X‐UID: 21011<br />

34 Status: R<br />

35 X‐Status: N<br />

36 X‐KMail‐EncryptionState:<br />

37 X‐KMail‐SignatureState:<br />

38 X‐KMail‐MDN‐Sent:


Sysadmin<br />

www.linux-magazin.de Mailheader 09/2013<br />

62<br />

POP3- oder IMAP-Server des ISP ab und<br />

leitet sie an den lokalen MTA weiter, der<br />

sie auf die Postfächer der LAN-Benutzer<br />

verteilt. Zusätzlich zum eigentlichen<br />

Mailtransport arbeitet vielerorts ein Contentfilter<br />

wie der Virenscanner Amavis,<br />

der die Mails auf Malware und Spam<br />

überprüft.<br />

Per Default eher eine<br />

Plaudertasche<br />

Listing 1 zeigt, wie geschwätzig sich<br />

Postfix und andere in der vorliegenden<br />

Konfiguration verhalten, wie freimütig sie<br />

zahlreiche interne Informationen in die<br />

Welt hinausposaunen. Am besten liest<br />

man die Headerdaten von unten nach<br />

oben, also in der Reihenfolge, in der sie<br />

01 ; DiG 9.7.3 smtp.example.com<br />

02 ;; global options: +cmd<br />

03 ;; Got answer:<br />

04 ;; ‐>>HEADER


Wer seinen FQDN nicht der ganzen Welt<br />

mitteilen will oder muss, wählt einfach<br />

einen unverfänglichen Namen, der bestimmt<br />

nicht mit anderen Servern oder<br />

Diensten kollidiert.<br />

Example.com<br />

Gut ist, wenn der FQDN auch noch einen<br />

offiziellen Anklang hat wie die Test-Domain<br />

»example.com«. Da der lokale MTA<br />

Postfix ja nur im internen Netz zu sehen<br />

ist, spielt es meist auch keine Rolle, wenn<br />

er den Namen »smtp.example.com« erhält,<br />

zumal ein »dig smtp.example.com«<br />

(Listing 2) keinen Konflikt mit irgendeiner<br />

offiziellen Adresse gleichen Namens<br />

erkennen lässt.<br />

Dass der Name des MTA nicht im DNS<br />

auflösbar ist, bedeutet nach Erfahrung<br />

des Autors nur in selten ein Problem.<br />

MTAs und Spamfilter, die das bemerken,<br />

werden es zwar monieren, bewerten dieses<br />

Manko jedoch nie so stark wie andere<br />

Faktoren. Außerdem wäre ja in der Regel<br />

auch der ursprüngliche FQDN ebenfalls<br />

nicht durch eine DNS-Abfrage des MTA<br />

des ISP auflösbar.<br />

Wer den Mailserver neutral benennen<br />

will, setzt in der »main.cf«-Konfigurationsdatei<br />

»myhostname« auf den Wert<br />

»smtp.example.com«. Nach einem Neustart<br />

und einer Test-E-Mail zeigt Postfix<br />

die veränderten, jetzt deutlich diskreteren<br />

Headerdaten (Listing 3). Doch Zeile<br />

23 zeigt immer noch, dass der User Kmail<br />

verwendet hat, und posaunt im Header<br />

»X‐KMail‐Transport« den internen Namen<br />

des Mailgateways hinaus.<br />

Individuelle Anpassungen bleiben hier<br />

nicht aus, doch die sollte der Admin<br />

nicht auf Client-Seite erledigen müssen,<br />

denn das führt schnell zur ungeliebten<br />

Turnschuhadministration, wobei der Administrator<br />

auf jedem Client den Postausgangsserver<br />

neu eintragen müsste.<br />

Hier hilft es, gleich mehrere der immer<br />

noch übrig gebliebenen Fliegen mit einer<br />

Klappe zu erschlagen und alle unnötigen<br />

und geschwätzigen Header komplett zu<br />

eliminieren.<br />

Posix oder PCRE<br />

Den besten Mechanismus, um Headerdaten<br />

auf das notwendige Maß zu reduzieren,<br />

bietet Postfix selbst: den Eintrag<br />

»header_checks« in der Konfigurationsdatei<br />

»main.cf« und eine passende Tabelle<br />

mit regulären Ausdrücken und entsprechenden<br />

Anweisungen. Die Tabelle ist<br />

folgendermaßen aufgebaut: »/Regulärer_<br />

Ausdruck/Muster Aktion«. Laut der sehr<br />

informativen Manpage zu Header_checks<br />

[2] gibt es dabei zwei mögliche Varianten<br />

regulärer Ausdrücke: Posix oder<br />

PCRE (Perl Compatible Regulary Expressions).<br />

Die Handbuchseite rät zur letzteren,<br />

weil sie in Sachen Performance der<br />

Posix-Variante überlegen sei.<br />

Allerdings fehlt einer Standardinstallation<br />

von Postfix zumindest unter Debian das<br />

Paket »postfix‐pcre«, es lässt sich aber<br />

schnell mit »apt‐get postfix‐pcre« nachinstallieren.<br />

»postconf ‐m« hilft bei der Erfolgskontrolle<br />

und listet alle verfügbaren<br />

Lookup-Table-Typen auf. Ausführliche<br />

Anleitungen zu regulären Ausdrücken<br />

und zu PCRE finden sich in [3].<br />

Listing 4 enthält die (kommentierte) Datei<br />

»/etc/postfix/header_checks« und ist<br />

auf das vorliegende Beispiel abgestimmt.<br />

Ihre Einträge entfernen (über die Aktion<br />

»IGNORE«) alle Header, deren Inhalte in<br />

der freien Wildbahn nichts verloren haben.<br />

Der Eintrag<br />

header_checks=pcre:/etc/postfix/header_U<br />

checks<br />

in der Konfigurationsdatei »main.cf« teilt<br />

Postfix mit, wo er die entsprechenden Informationen<br />

zu suchen hat. Der Befehl<br />

postmap ‐q Suchmuster pcre:/etc/postfix/U<br />

header_checks<br />

macht die Informationen endgültig verfügbar.<br />

Ein nachfolgendes »/etc/init.d/<br />

postfix reload« schließt das Ganze ab.<br />

Header bereinigt<br />

Das Ergebnis von Header_checks zeigt<br />

Listing 5. In solchen Mails bleiben nur<br />

noch die Informationen erhalten, die für<br />

ihren Transport unbedingt nötig sind. Informationen<br />

über den internen Aufbau<br />

des LAN sind weitestgehend eliminiert,<br />

nur die externe Router-IP und dessen<br />

vom Zugangsprovider zugewiesener<br />

Name geben noch Auskunft.<br />

Transportverschlüsselt und mit Ende-zu-<br />

Ende-Verschlüsselung des Inhalts bleiben<br />

so kaum mehr nützliche Informationen<br />

für potenzielle Angreifer übrig. Die


Sysadmin<br />

www.linux-magazin.de Mailheader 09/2013<br />

64<br />

Headerdaten der E-Mail sehen jetzt so<br />

aus, als kämen sie von einem einzigen<br />

Rechner namens »smtp.example.com«,<br />

ganz gleich von welchem Clientrechner<br />

im LAN ein Benutzer die E-Mails wirklich<br />

abgeschickt hat. Die Headerdaten<br />

werden, ausgenommen die unterschiedlichen<br />

E-Mail-Adressen und Timestamps,<br />

immer gleich aussehen.<br />

Sensible Daten im Betreff<br />

Apropos E-Mail-Adressen: Viele Sysadmins<br />

lassen sich Statusmeldungen per<br />

Mail zuschicken. Zum Beispiel könnte<br />

die Absenderadresse »root@Meine_Domain.local«<br />

lauten, was aber natürlich<br />

wieder Rückschlüsse auf Interna zulässt.<br />

Address Rewriting [4] beseitigt solche<br />

Informationen.<br />

Vorsicht ist ohnehin geboten: Viele Statusmeldungen<br />

enthalten den FQDN des<br />

betreffenden Rechners aber auch im<br />

Betreff. Erwischt Header_checks einen<br />

solchen Subject-Header, schmeißt es ihn<br />

natürlich auch raus und die Mail erreicht<br />

den Empfänger, also den Sysadmin, ohne<br />

Betreffzeile – ein großer Nachteil gerade<br />

bei Mails mit Logs, die sich Admins gerne<br />

per Sieve in Ordner einsortieren lassen,<br />

01 # Nochmal zur Sicherheit Domain entfernen<br />

02 /^.*\.Meine_Domain\.local.*$/i IGNORE<br />

03 # Amavis braucht auch keiner zu sehen<br />

04 /^.*amavis.*$/i IGNORE<br />

05 # Localhost‐Einträge löschen<br />

06 /^Received: from localhost.*$/i IGNORE<br />

07 # Der MUA sollte auch nicht erscheinen<br />

08 /^User‐Agent.*$/i IGNORE<br />

09 # KMail ist eindeutig zu geschwätzig<br />

10 /^X‐KMail.*$/i IGNORE<br />

11 # weitere Regeln für individuelle Mailclients<br />

12 [...]<br />

Listing 4: »/etc/postfix/header_<br />

checks«<br />

Listing 5: Mit Header_checks bereinigte Mail<br />

01 Received: from smtp.example.com<br />

02 (Name_meines_Routers.Mein_ISP.com [1.2.3.4])<br />

03 by smtp.Mein_ISP.com (xxxxx xxxx) (RZmta<br />

31.27 DYNA|AUTH)<br />

04 with (DHE‐RSA‐AES256‐SHA encrypted) ESMTPA id<br />

906d2cp5H92jgY<br />

05 for ;<br />

06 Mon, 17 Jun 2013 11:10:34 +0200 (CEST)<br />

07 To: Adresse@Externe_Domain.com<br />

08 Subject: test<br />

09 From: "Dr. Harry Knitter" <br />

10 Date: Mon, 17 Jun 2013 11:10:31 +0200<br />

in denen schnell mal hundert Mails liegen.<br />

Hier hilft folgende Regel als erster<br />

Eintrag in der Datei »/etc/postfix/header_checks«<br />

weiter:<br />

/^Subject:(.*)@(.*)\.?Meine_Domain.localU<br />

(.*)$/i REPLACE Subject:$(1)$(2).<br />

Sie ersetzt den Namen der internen Domain<br />

»Meine_Domain.local« einschließlich<br />

der Subdomains, also der FQDNs<br />

der sendenden Rechner, durch einen<br />

Nullstring. Wie der Sysadmin Postfix<br />

dazu überredet, ihm den Inhalt solcher<br />

Statusmeldungen auch noch automatisch<br />

verschlüsselt zu übertragen, beschreibt<br />

der Artikel im <strong>Linux</strong>-<strong>Magazin</strong> [5].<br />

Finetuning<br />

Anpassungen für den individuellen Bedarf<br />

sind im beschriebenen Szenario unvermeidlich.<br />

Manche E-Mail-Programme<br />

tragen sich nämlich nicht im Header<br />

»User‐Agent«, sondern mit »X‐Mailer«<br />

ein. Die beschriebenen Säuberungsaktionen<br />

gestalten auch das Debuggen deutlich<br />

schwieriger: Wer selbst Analysen<br />

von Mailheadern vornehmen will, muss<br />

damit rechnen, dass nicht unbedingt alle<br />

Transportinformationen eingehender<br />

Mails erkennbar sind: Die beschriebenen<br />

Maßnahmen wendet Postfix nämlich<br />

auch bei eingehenden Mails an.<br />

Schon Fetchmail, das vielleicht die Daten<br />

vom ISP abholt, liefert die Mails über<br />

den lokalen MTA aus – und weg sind<br />

die Header. Allerdings geschieht dies<br />

nur ein Mal, wenn Postfix die Mail von<br />

Fetchmail erhält. Die später folgenden<br />

Zugriffe des MTA, zum Beispiel beim<br />

Filtern durch Amavis bis zur Ablage in<br />

IMAP, haben keinen Einfluss mehr auf<br />

den Inhalt der dabei erzeugten Header,<br />

wenn in der Konfigurationsdatei »mas-<br />

11 MIME‐Version: 1.0<br />

12 Content‐Type: Text/Plain;<br />

13 charset="iso‐8859‐15"<br />

14 Content‐Transfer‐Encoding: 7bit<br />

15 Message‐Id: <br />

16 X‐Seen: false<br />

17 X‐ENVELOPE‐TO: <br />

18 X‐Length: 3387<br />

19 X‐UID: 21011<br />

20 Status: R<br />

21 X‐Status: N<br />

ter.cf« als Option für die Rückgabe der<br />

Mail durch den Contentfilter an den MTA<br />

»‐o receive_override_options=no_header_body_checks«<br />

eingetragen ist.<br />

Außerdem machen manche Clients wundersame<br />

Dinge: Admins, die mit Kmail<br />

testen, werden sich fragen, warum die<br />

mit Kmail empfangenen E-Mails dennoch<br />

wieder die unerwünschten »X‐KMail«-<br />

Header aufweisen. Direkt auf dem IMAP<br />

sind diese Header in der E-Mail nicht vorhanden.<br />

Sie entstehen, wenn Kmail die<br />

Mails via IMAP abholt. E-Mail-Adressen,<br />

die andere MUAs verwenden, sehen davon<br />

also nichts. Verwendet der Sender<br />

einen anderen MUA als Kmail, passiert<br />

dies ebenfalls nicht.<br />

Fazit<br />

Das Ausplaudern unnötiger und sicherheitskritischer<br />

Daten in den Mailheadern<br />

ist mit recht einfachen Mitteln zu unterbinden.<br />

Die beschriebenen Maßnahmen<br />

sind – sieht man von den regulären Ausdrücken<br />

ab – ohne Programmieraufwand<br />

und ohne Beeinträchtigung der E-Mail-<br />

Kommunikation möglich. Zwar bezieht<br />

sich das Beispiel auf eine relativ simple<br />

LAN-Topologie, die beschriebenen Mechanismen<br />

eignen sich aber genauso für<br />

größere Installationen. (mfe) n<br />

Infos<br />

[1] Postfix-Dokumentation: [ http:// www.​<br />

postfix. org/ documentation. html]<br />

[2] Postfix Header_checks: [http:// www.​<br />

postfix. org/ header_checks. 5. html]<br />

[3] Jeffrey E. F. Friedl, „Reguläre Ausdrücke“:<br />

O’Reilly, Oktober 2007<br />

[4] Postfix Address Rewriting:<br />

[http:// www. postfix. org/ ADDRESS_<br />

REWRITING_README. html]<br />

[5] Harry Knitter, „Schlüsseldienst“: <strong>Linux</strong>-<br />

<strong>Magazin</strong> 07/​13, S. 68;<br />

[http:// www. linux‐magazin. de/ Ausgaben/​<br />

2013/ 07/ Schluesseldienst]<br />

Der Autor<br />

Dr. Harry Knitter [http:// www. knitter‐edv‐be ratung.<br />

de] berät und betreut kleine und mittlere<br />

Unternehmen in den Bereichen Netzwerk und<br />

IT-Sicherheit und setzt dabei auf <strong>Linux</strong>. Er ist<br />

in Hof als EDV-Dozent an der Fachhochschule<br />

für Öffentliche Verwaltung und Rechtspflege in<br />

Bayern tätig.


Sysadmin<br />

www.linux-magazin.de VM Depot 09/2013<br />

66<br />

Microsoft bietet <strong>Linux</strong>-Images in seinem Open Technologies VM Depot an<br />

Strategiespiel<br />

Verkehrte Welt: Für seinen Clouddienst Windows Azure unterhält Microsoft ein ganzes Depot mit vorgefertigten<br />

virtuellen Maschinen, in denen ausnahmslos <strong>Linux</strong>-Systeme lagern. Über ein Tochterunternehmen unterstützt<br />

der Konzern offene Projekte und lässt freie Software integrieren. Tim Schürmann<br />

© Attila Alexovics 123RF.com<br />

mentare finden sich nur in homöopathischen<br />

Dosen. Eine Entscheidungshilfe<br />

bieten die Bewertungen somit (noch)<br />

nicht. Von Microsoft selbst stammen übrigens<br />

keine eigenen oder zertifizierten<br />

virtuellen Maschinen.<br />

Die im Depot verfügbaren virtuellen Maschinen<br />

lassen sich ausschließlich in der<br />

Windows Azure Cloud unter Hyper-V<br />

starten. Wer dort noch kein kostenpflichtiges<br />

Abonnement abgeschlossen hat,<br />

kann den Dienst 90 Tage lang kostenlos<br />

testen [4]. VM Depot ist kostenfrei, die<br />

Ersteller von virtuellen Maschinen dürfen<br />

zudem unbegrenzt viele Exemplare<br />

hochladen.<br />

Microsoft empfiehlt – <strong>Linux</strong><br />

<strong>Linux</strong> von Microsoft? Völlig normal, sagen<br />

die Marketingleute des Konzerns aus<br />

Redmond. Im VM Depot [1] finden Administratoren<br />

heute eine riesige Auswahl<br />

vorgefertigter virtueller <strong>Linux</strong>-Maschinen,<br />

die sich in Microsofts Cloud starten<br />

lassen [1]. Die meisten Images basieren<br />

auf einer der bekannten Distributionen,<br />

allen voran Ubuntu, Debian, Centos und<br />

Open Suse (Abbildung 1).<br />

Mängelliste<br />

Wer sich registriert, darf eigene virtuelle<br />

Maschinen zusammenstellen und<br />

hochladen. Der überwiegende Teil der<br />

Images stammte bei Redaktionsschluss<br />

vom Bitnami-Projekt, das auf seinen eigenen<br />

Seiten einen „App Store für Server<br />

Software“ [2] betreibt. In ihm bekommen<br />

Interessenten nicht nur zahlreiche<br />

virtuelle Maschinen für unterschiedliche<br />

Einsatzzwecke und Cloudplattformen,<br />

sondern auch beliebte Serversoftware<br />

bereits vorkonfiguriert, beispielsweise<br />

die Blogger-Tools von Wordpress.<br />

Standardmäßig senden diese virtuellen<br />

Maschinen verschiedene Informationen<br />

an Bitnami zurück, darunter die<br />

IP-Adresse, die verwendete <strong>Linux</strong>-Distribution<br />

und die Uptime. Wer das nicht<br />

möchte, muss in der Crontab der virtuellen<br />

Maschine eine Zeile auskommentieren<br />

[3].<br />

Vorsicht ist angebracht, denn im VM<br />

Depot darf jede virtuelle Maschine ihre<br />

eigenen Lizenzbedingungen mitbringen<br />

– Administratoren sollten sich diese<br />

Texte deshalb vor der Inbetriebnahme gut<br />

durchlesen. Im Depot dürfen registrierte<br />

Anwender die virtuellen Maschinen kommentieren<br />

und mit bis zu fünf Sternen<br />

bewerten, selbst wenn sie sie noch gar<br />

nicht genutzt haben.<br />

Bis zum Redaktionsschluss hatte dieses<br />

Angebot allerdings kaum jemand genutzt.<br />

So gab es nur wenige Maschinen<br />

mit mehr als einer Bewertung, auch Kom-<br />

Microsoft schreibt zwar keine Distribution<br />

vor, bevorzugt aber nach eigener<br />

Aussage Centos, Open Suse, SLES und<br />

Ubuntu. Diese vier hat der Hersteller mit<br />

Azure getestet und unterstützt sie offiziell.<br />

Dabei gelten allerdings ein paar Einschränkungen,<br />

die Microsoft unter [5]<br />

zusammenfasst. So muss etwa Ubuntu<br />

ab Version 12.04.1 vorliegen, wobei genau<br />

diese Version noch ein spezielles<br />

Kernelpatch benötigt. Netterweise bietet<br />

die Seite auch gleich noch Links auf<br />

Downloadseiten der Distributoren. Open<br />

Suse bietet sogar schon ein fertiges Basis-<br />

Image für Azure an.<br />

Die ausgewählte virtuelle Maschine lässt<br />

sich über Kommandozeilentools in die<br />

Azure-Cloud schieben. Den dazu nötigen<br />

Befehl zeigt VM Depot an (Abbildung 2).<br />

Die Kommandozeilen-Werkzeuge sind<br />

neben Windows und Mac OS X auch für<br />

<strong>Linux</strong> erhältlich und stehen unter der<br />

Apache-Lizenz [6]. Wer eigene virtuelle<br />

Maschinen hochladen möchte, muss sie


Abbildung 1: Mit fünf Bewertungen und drei Kommentaren gehört die virtuelle<br />

Maschine mit Debian zu den wenigen, die Benutzer bewertet haben.<br />

in ein VHD-Image (Virtual-Hard-Disk-<br />

Format) verpacken. Dieses Format kann<br />

beispielsweise Virtualbox erstellen, leider<br />

verdaut Azure dessen neueres VHDX-Format<br />

derzeit noch nicht.<br />

Hintermänner<br />

Betreiber von VM Depot ist nicht Microsoft<br />

selbst, sondern das Tochterunternehmen<br />

Microsoft Open Technologies,<br />

kurz MS Open Tech [7] genannt. Es soll<br />

laut Homepage „eine Brücke zwischen<br />

den Microsoft- und den Nicht-Microsoft-<br />

Technologien bauen“. Intern nennt MS<br />

derlei gerne kurz Interop. Obwohl das<br />

Unternehmen erst eineinhalb Jahre alt<br />

ist, arbeiten in seinem Auftrag bereits<br />

über 70 Personen. Hinzu kommen noch<br />

einmal über 200 Mitarbeiter im MS Open<br />

Tech Hub, das die Zusammenarbeit mit<br />

freien und anderen Microsoft-Mitarbeitern<br />

koordiniert [8].<br />

MS Open Tech hat bereits Code zu zahlreichen<br />

Open-Source-Projekten und<br />

Open-Standard-Initiativen beigesteuert,<br />

wobei erwartungsgemäß vor allem die<br />

Anbindung oder Integration mit MS-Produkten<br />

[9] im Vordergrund steht. Beste<br />

Beispiele sind VM Depot und die Azure-<br />

Kommandozeilentools, für die MS Open<br />

Tech ebenfalls verantwortlich ist.<br />

Außerdem bekam Jquery ein Mobile<br />

Theme für Windows Phone sowie die<br />

Unterstützung für Windows Store Apps<br />

spendiert. Die Datenbank Mongo DB erhielt<br />

Verbesserungen für eine Zusammenarbeit<br />

mit Azure, in Wordpress lassen<br />

sich über ein Plugin Bilder und andere<br />

Medien in Microsofts<br />

Cloud ablegen. Es gibt<br />

eine Dotnet-Bibliothek<br />

für den Node.js-Pa ckage-Manager<br />

NPM, die<br />

Editoren Vi und Emacs<br />

kennen dank MS Open<br />

Tech die Syntax von<br />

Typescript (ein Microsoft-Konkurrent<br />

zu<br />

Javascript), während<br />

Apache Hadoop und<br />

der Microsoft SQL Server<br />

über einen Connector<br />

Daten austauschen.<br />

Eclipse für Java, Hudson<br />

und Jenkins erhielten<br />

jeweils Plugins für die Unterstützung<br />

von Azure und auch der Apache<br />

Zookeeper arbeitet dank MS Open Tech<br />

mit Azure zusammen. Darüber hinaus<br />

gab MS Open Tech einige von Microsoft<br />

entwickelte Standards frei. Dazu zählen<br />

unter anderem die Reactive Extensions<br />

(Rx), Actor Fx, das Entity-Framework<br />

(ein Datenbank-Mapping-Tool für Dotnet),<br />

Web PI (Microsofts Web-Platform-<br />

Installer) und das ASP-Dotnet-MVC-<br />

Framework.<br />

Projekte, die nicht direkt an Microsoft-<br />

Produkte gebunden sind, muss man<br />

schon gezielt suchen. So arbeitete MS<br />

Open Tech an der Spezifikation für HTTP<br />

2.0 mit und veröffentlichte dazu sogar<br />

ein Apache-Server-Modul.<br />

Fazit<br />

Das VM Depot ist zweifellos eine interessante<br />

zentrale Anlaufstelle für alle, die in<br />

Microsofts Cloud eine virtuelle Maschine<br />

auf <strong>Linux</strong>-Basis zünden möchten. Dank<br />

Bitnami ist die Auswahl reichhaltig. Spätestens<br />

jedoch an den fehlenden Kommentaren<br />

und Bewertungen merkt man<br />

schnell, dass sich das Depot noch im<br />

Aufbau befindet und noch recht wenige<br />

Benutzer anzieht. Der Start von Maschinen<br />

erfolgt zudem weiterhin über kryptische<br />

Kommandozeilenbefehle.<br />

Mit dem Betreiber MS Open Tech kanalisiert<br />

Microsoft zugleich marketingwirksam<br />

sein Engagement im Bereich der<br />

Interoperabilität, offenen Standards und<br />

Open Source. Das ist jedoch ganz auf<br />

die eigenen Diente ausgerichtet, allen voran<br />

Azure: Wenn Anwender schon freie<br />

Software bevorzugen, dann sollen zumindest<br />

die Daten in Microsoft-Diensten<br />

und Produkten landen. Andererseits ist<br />

es für freie Projekte von Vorteil, wenn sie<br />

solche Unterstützung erhalten. Durch die<br />

Anbindung von Azure werden vielleicht<br />

weitere Anwender auf die <strong>Linux</strong>-Maschinen<br />

aufmerksam, die zuvor proprietäre<br />

Produkte genutzt haben. (mfe) n<br />

Infos<br />

[1] VM Depot:<br />

[http:// vmdepot. msopentech. com]<br />

[2] Bitnami: [http:// bitnami. com/]<br />

[3] Bitnami FAQ: [http:// wiki. bitnami. com/​<br />

About_BitNami# Does_BitNami_collect_any_<br />

data_from_deployed_BitNami_Stacks. 3f]<br />

[4] Azure 90 Tage Testangebot:<br />

[http:// www. windowsazure. com/ en‐us/​<br />

pricing/ free‐trial/<br />

[5] <strong>Linux</strong> on Windows Azure-Endorsed Distributions:<br />

[http:// www. windowsazure. com/​<br />

en‐us/ manage/ linux/ other‐resources/​<br />

endorsed‐distributions/ ? fb=de‐de]<br />

[6] Azure-Kommandozeilentools:<br />

[http:// www. windowsazure. com/ en‐us/​<br />

downloads/ ? fb=en‐us]<br />

[7] MS Open Tech: [http:// msopentech. com]<br />

[8] Vorstellung des MS Open Tech Hub:<br />

[http:// blogs. technet. com/ b/ port25/​<br />

archive/ 2012/ 07/ 19/ meet‐the‐team‐that‐iscollaborating‐on‐open‐source‐projects‐atthe‐ms‐open‐tech‐hub.<br />

aspx]<br />

[9] MS-Open-Tech-Projekte:<br />

[http:// msopentech. com/ projects/]<br />

Abbildung 2: Den vom Depot angezeigten Startbefehl muss der Admin noch anpassen.<br />

VM Depot 09/2013<br />

Sysadmin<br />

www.linux-magazin.de<br />

67


Sysadmin<br />

www.linux-magazin.de Windows-Cloud 09/2013<br />

68<br />

Open Stack auf Microsoft Windows<br />

Gestapelte Fenster<br />

Damit Microsoft den Hype um Open Stack nicht verschläft, greift dem Konzern jetzt eine italienische Firma<br />

unter die Arme. Die verspricht, Open Stack mit dem Hypervisor Hyper-V zu verheiraten – und das gelingt dank<br />

Python erstaunlich gut. Grund genug, einmal etwas genauer hinzuschauen. Martin Loschwitz<br />

([2], [3], [4]), kommt die Aufgabe des<br />

Managements zu. Damit dieses hochdynamische<br />

Prinzip funktioniert, müssen<br />

die Komponenten einer Cloudumgebung<br />

aber in vielerlei Hinsicht zusammenspielen<br />

– und da liegt auch die Motivation<br />

hinter Microsofts Interop-Strategie.<br />

Installation war gestern!<br />

© Rudmer Zwerver, 123RF.com<br />

Microsoft und <strong>Linux</strong>, oft genug war das<br />

eine Beziehung voller Missverständnisse,<br />

FUD und Emotionen. Noch vor zwölf<br />

Jahren bezeichnete Steve Ballmer <strong>Linux</strong><br />

als Krebsgeschwür [1], doch seit einiger<br />

Zeit ist der Konzern von seiner Konfrontationsstrategie<br />

abgerückt, setzt lautstark<br />

auf „Interoperabilität“, leistet gar einen<br />

beträchtlichen Beitrag zum <strong>Linux</strong>-Kernel<br />

und wird nicht müde, sich als Open-<br />

Source-Company zu präsentieren.<br />

<strong>Linux</strong> by Microsoft<br />

Microsoft nimmt mittlerweile beträchtlichen<br />

Anteil an vielen OSS-Entwicklungen<br />

und schottet seine Produkte gegen quelloffene<br />

Software längst nicht mehr so<br />

radikal ab wie früher. Freiwillig ist das<br />

nicht, denn ein Strategiewechsel tut not:<br />

Im Rechenzentrum dominiert in Zeiten<br />

der Cloud immer häufig das flexiblere<br />

<strong>Linux</strong>, Windows-Server kommen immer<br />

öfter in die Unterzahl.<br />

Ein verbreitetes Vorurteil stellt die Fähigkeiten<br />

von Windows in modernen<br />

Cloudumgebungen in Frage – zu kompliziert<br />

seien Lizenzmanagement und<br />

Administration; das proprietäre System<br />

käme vergleichsweise schlecht mit den<br />

Cloudkonzepten der <strong>Linux</strong>-dominierten<br />

Wolken zurecht. Zugleich weiß jeder,<br />

der mal eine Migration betreut hat: Ganz<br />

ohne Windows geht es eben meistens<br />

doch nicht.<br />

Bei der Cloud, so wie sie der folgende Artikel<br />

verwendet, dreht sich alles um das<br />

Bereitstellen von virtuellen Systemen,<br />

kombiniert mit den Vorteilen von Online-<br />

Speicherangeboten und der Möglichkeit<br />

für Benutzer, an einem Self-Service-Portal<br />

selbst und ohne Eingriff des Dienstleisters<br />

etwa neue virtuellen Maschine anzulegen<br />

oder Onlinespeicher bei Bedarf einfach<br />

zu erweitern.<br />

Der Cloud-Computing-Umgebung selbst,<br />

im folgenden Beispiel dem derzeit von<br />

vielen Konzernen promoteten Open Stack<br />

Die Umgebung verwaltet die Hypervisor-<br />

Knoten und kümmert sich um die Nutzerverwaltung<br />

und die der Netzwerktechnik,<br />

die ja üblicherweise auf Software-defined<br />

Networking (SDN) setzt. Zudem muss<br />

eine Cloud auch Betriebssystem-Abbilder<br />

bieten – niemand zwingt heute Kunden,<br />

die nur virtuelle Maschinen starten wollen,<br />

ein Betriebssystem zu installieren,<br />

am Ende noch von CD oder DVD!?<br />

Grob gesagt, wären auf der einen Seite<br />

viele potenzielle Kunden dazu rein technisch<br />

gar nicht mehr in der Lage, auf der<br />

anderen Seite würde das den Vorgang,<br />

auch nur unnütz in die Länge ziehen<br />

und kostspielige Ressourcen belegen. In<br />

modernen Cloudumgebungen arbeitet<br />

der Kunde mit vorgefertigten Festplatten-<br />

Abbildern, aus denen er sich eines per<br />

Mausklick aussucht, dazu noch ein Speichergerät<br />

aus den von ihm gebuchten<br />

Ressourcen in der Cloud – fertig ist der<br />

neue Server.<br />

Für die Cloud und ihren Hypervisor gilt:<br />

Paravirtualisierte Systeme arbeiten in der<br />

Regel deutlich schneller als ihre vollvirtualisierten<br />

Pendants. Damit Paravirtualisierung<br />

funktioniert, braucht das Gastsystem<br />

aber spezifische Treiber. Die lassen<br />

es wissen, dass es selbst virtualisiert läuft<br />

und mit einem Hypervisor zusammenzuarbeiten<br />

hat. Solange geeignete Treiber<br />

im Gastsystem zur Verfügung stehen, ist


Abbildung 1: Die italienische Firma Cloudbase hat viele der Open-Stack-Komponenten auf Windows portiert.<br />

also alles in bester Ordnung. Aber der<br />

Treiber für den Gast muss speziell darauf<br />

abgestimmt sein, wie der jeweilige Hypervisor<br />

tickt. Ein vorhandener Treiber<br />

zur Paravirtualisierung in KVM hilft in<br />

einem Xen-Setup nicht weiter.<br />

Windows als Gast<br />

Wer Windows als Gast in den unter <strong>Linux</strong><br />

verbreiteten KVM-VMs einsetzt – unabhängig<br />

davon, ob von Open Stack oder<br />

einer anderen Virtualisierungsumgebung<br />

gemanagt –, darf das Problem heute als<br />

gelöst betrachten. Die Treiber kommen<br />

zwar nicht direkt von Microsoft, aber<br />

vom KVM-Team. Das Fedora-Repository<br />

[5] bietet sie sogar digital signiert, sodass<br />

sie in allen aktuellen Windows-Ver si onen<br />

problemlos installierbar sind.<br />

Windows-Installationen sind es gewohnt,<br />

eng mit der Hardware verknüpft zu sein,<br />

auf denen sie laufen. In einer Cloudumgebung<br />

geht das aber nur zum Teil, es<br />

gibt schließlich keine Garantie dafür, dass<br />

alle Hypervisor-Knoten auf exakt die gleiche<br />

Hardware setzen. Ganz im Gegenteil:<br />

Je länger die Wolke schon in Betrieb ist,<br />

desto bunter wird der Hardware-Mix.<br />

Und dann sind da ja auch noch streng<br />

rechnerspezifische Details wie der Lizenzschlüssel,<br />

der zu einer virtuellen<br />

Maschine gehört.<br />

Fakt ist: All diese Informationen können<br />

nicht Teil des Windows-Abbilds sein, das<br />

der Cloudadministrator seinen Kunden<br />

zur Verfügung stellt. Das muss im Grunde<br />

ein nacktes Image sein, das keine wie<br />

auch immer gearteten spezifischen Konfigurationsparameter<br />

enthält. Microsoft<br />

stellt für genau dieses Problem eine Lösung<br />

in Form eines Werkzeugs namens<br />

Sysprep [6] bereit.<br />

Mit ihm gelingt es, einem fertig installierten<br />

und konfigurierten Windows quasi<br />

das Gehirn zu entfernen. Das ist ganz<br />

und gar nicht ironisch gemeint: Alles,<br />

was spezifisch für diese eine virtuelle<br />

Maschine war – und dazu gehört auch<br />

der Lizenzschlüssel –, ist nach einem<br />

Sysprep-Aufruf verschwunden, das System<br />

präsentiert sich wieder jungfräulich.<br />

Genau das ist der Moment, in dem der<br />

Admin ein Image zieht und es in den<br />

Open-Stack-Imagestore lädt.<br />

Gigabyte-große Images<br />

Eine Eigenheit im Windows-Kontext fällt<br />

gelegentlich negativ auf: die Größe. Ein<br />

typisches Windows-Image ist ein paar<br />

GByte groß – für <strong>Linux</strong>er unfassbar. Das<br />

verursacht beim Starten einer neuen virtuellen<br />

Maschine einige Probleme. Ohne<br />

auf die Hypervisor-abhängigen Unterschiede<br />

eingehen zu wollen, funktioniert<br />

der Start immer gleich: Das Management,<br />

beispielsweise Open Stacks Computing-<br />

Komponente Nova, triggert eine neue<br />

virtuelle Maschine auf einem Hypervisor-<br />

Knoten. Dann lädt der Computing-Knoten<br />

das Image aus dem Speichermanager<br />

Glance lokal auf seine Platte, um im<br />

nächsten Schritt die virtuelle Maschine<br />

von der lokalen Imagekopie zu starten.<br />

Windows-Cloud 09/2013<br />

Sysadmin<br />

www.linux-magazin.de<br />

69<br />

Die Sache mit den Lizenzen<br />

Fernab aller technischer Details lauert auf Unternehmen<br />

noch eine weitere Falle, wenn sie<br />

den Einsatz von Microsoft Windows in einer<br />

Cloud-Computing-Umgebung vorsehen. In einer<br />

Cloud geht es schließlich darum, bei Bedarf in<br />

kurzer Zeit möglichst viele virtuelle Maschinen<br />

starten zu können. Anders als <strong>Linux</strong>- brauchen<br />

Windows-VMs gewöhnlich einen Lizenzschlüssel.<br />

Eine virtuelle Maschine mit Windows, die<br />

keinen solchen Key hat, funktioniert entweder<br />

gar nicht oder nur als begrenzte Trial-Version,<br />

Dynamische Lizenzen<br />

Die gute Nachricht ist: Es ist über die beschriebenen<br />

Werkzeuge sehr wohl möglich, einer VM<br />

dynamisch einen Lizenzschlüssel mit auf den<br />

Weg zu geben. In Glance, der Imaging-Komponente<br />

von Open Stack, ist dann das Image<br />

wie eine „VM ohne Gedächtnis“ hinterlegt, die<br />

erst im Anschluss an die Eingabe des Lizenzschlüssels<br />

zu einer vollwertigen Instanz mit<br />

dem passenden Featureset aufsteigt.<br />

Pro VM eine Lizenz beantragen?<br />

Die schlechte Nachricht ist: Selbstverständlich<br />

benötigen Admins für jede Windows-VM von<br />

Microsoft eine Lizenz. Als größter Hemmschuh<br />

erweist sich dabei: Die Windows-Volume-Lizenzen,<br />

die viele Unternehmen bereits besitzen,<br />

greifen in solchen Fällen nicht, weil der Hypervisor<br />

bei Cloudumgebungen eben nicht durch<br />

die Firma verwaltet wird, die die Volume-Lizenz<br />

nutzt. Stattdessen verlangt Microsoft von den<br />

Cloudbetreibern, dass sie für jede virtuelle Maschine<br />

eine eigene Lizenz besorgen, die sie<br />

dann allerdings wieder den eigenen Kunden in<br />

Rechnung stellen dürften.<br />

Diese umständliche Vorgehensweise ist de<br />

facto ein großes Ärgernis und bedeutet auch<br />

für Microsoft dringenden Handlungsbedarf.<br />

Die bis jetzt durchgehaltene Strategie, eine<br />

Volume-Lizenz auf Ebene des Hypervisors nur<br />

für solche Server anzubieten, die tatsächlich<br />

unter der Fuchtel des Unternehmens stehen,<br />

funktioniert in einer Cloudumgebung einfach<br />

nicht. Rein technisch spricht ja im Grunde auch<br />

gar nichts dagegen, den Cloudkunden für ihre<br />

VMs die Option einzuräumen, schon vorhandene<br />

Volume-Lizenzen zu nutzen. So drängt sich der<br />

Eindruck auf, dass Microsoft dem Kunden hier<br />

einfach nur in die Tasche greifen will.


Sysadmin<br />

www.linux-magazin.de Windows-Cloud 09/2013<br />

70<br />

Je mehr Gigabytes das Image hat, umso<br />

länger dauert das. In diesem Punkt ist<br />

<strong>Linux</strong> klar im Vorteil.<br />

Kleine Vorteile genießen Windows-<br />

VMs, die auf KVM setzen: Weil die<br />

Virtualisierung die so genannten Backing<br />

Images nutzt, muss der Hypervisor ein<br />

Image nur einmal laden und kann anschließend<br />

beliebig viele VMs durch das<br />

Anlegen von Deltafiles von diesen starten.<br />

Trotzdem gilt: Wer Windows-Images<br />

in seiner Wolke anbietet, tut gut daran,<br />

eine stabile und eher potente Netzwerkverbindung<br />

zwischen seinen Open-Stack-<br />

Knoten zu haben, weil ansonsten die<br />

ganze Sache lahmt.<br />

Lizenz-Horror und Support<br />

Wer Windows-VMs in Open Stack betreiben<br />

will, braucht technische Einschränkungen<br />

kaum fürchten, wohl aber die<br />

gleichen Lizenzierungs-Einschränkungen,<br />

wie sie eben auch bei konventionellen<br />

Virtualisierungs-Setups auftreten. Der<br />

Kasten „Die Sache mit den Lizenzen“<br />

nimmt sich des Problems an.<br />

Nach der Installation und Klärung der Lizenzierung<br />

steht der Admin vor der Frage<br />

nach dem offiziellen Support für die virtualisierten<br />

Maschinen. Wer eine umfassende<br />

Cloud-Computing-Umgebung<br />

verkaufen möchte, muss seinen Kunden<br />

die Möglichkeit bieten, fast beliebige Applikationen<br />

laufen zu lassen.<br />

Gerade im Windows-Umfeld finden sich<br />

bei den großen Suites in letzter Zeit aber<br />

immer mehr Programme, die in ihren<br />

Systemanforderungen spezifische Details<br />

für virtualisierte Umgebungen festlegen.<br />

Häufig steht dort die Einschränkung,<br />

dass in VMs der gesamte Stack, also vom<br />

Hypervisor bis zur virtuelle Maschine,<br />

ausschließlich Windows-basiert zu sein<br />

hat. Wenn der Kunde diese Anforderung<br />

nicht erfüllt, verweigert mancher Anbieter<br />

kurzerhand den Support.<br />

Hilfe für Hyper-V<br />

Derlei kommt natürlich Microsoft zugute,<br />

weil so auch in reinen <strong>Linux</strong>-Umgebungen<br />

Hosts mit Hyper-V auftauchen, die<br />

den vom Anbieter der spezifischen Applikation<br />

vorgegebenen Windows-Stack<br />

bereitstellen, obwohl es keine technische<br />

Notwendigkeit dafür gibt.<br />

Doch die wichtigste Frage lautet: Wie<br />

vertragen sich Open Stack, Hyper-V und<br />

Redmonds Betriebssystem überhaupt<br />

miteinander? Oder ist hier gar separates<br />

Management mit redundanten Strukturen<br />

angesagt? Zur Verunsicherung trugen<br />

auch die Open-Stack-Entwickler im Februar<br />

2012 bei, als sie die Unterstützung<br />

für Hyper-V ganz aus der damals neuen<br />

Version 2012.1 (Essex) entfernten.<br />

Doch dann trat Cloudbase ([7], Abbildung<br />

1)auf den Plan: Das italienische Unternehmen<br />

um Geschäftsführer Alessandro<br />

Pilotti kümmert sich im Grunde exklusiv<br />

um die Integration von Microsofts<br />

Hyper-V in Open Stack. Das geht so weit,<br />

dass Gerüchte in der Open-Stack-Community<br />

kursieren, Cloudbase sei nur eine<br />

von Microsoft gesteuerte Strohfirma, die<br />

es dem Windows-Konzern auf einfache<br />

Weise ermögliche, an Open Stack mitzuarbeiten,<br />

ohne dabei gleich die Altvorderen<br />

der „Corp“ aufzuscheuchen.<br />

Was an dem Gerücht dran ist, muss sich<br />

erst noch zeigen, sicher ist hingegen,<br />

dass sich die Arbeit von Cloudbase sehr<br />

positiv auf die Hyper-V-Unterstützung in<br />

Open Stack auswirkt. Schon in Version<br />

2012.2 (Folsom) war die Unterstützung<br />

wieder direkt in Open Stack und sie funktionierte<br />

besser als je zu vor.<br />

Zunächst hatte Cloudbase das Hauptaugenmerk<br />

darauf gelegt, die für Hypervisor-Unterstützung<br />

wichtigste Open-<br />

Stack-Komponente – »nova‐compute«<br />

– auf Windows mit installiertem Hyper-<br />

V lauffähig zu machen. Open Stack ist<br />

pures Python und das wiederum ist für<br />

Windows nebst brauchbarer Kommandozeile<br />

problemlos verfügbar.<br />

Basierend auf dem Hypervisor-Code, der<br />

auch für Hyper-V bereits da war, sorgt<br />

das in Verona ansässige Unternehmen<br />

dafür, dass sich »nova‐compute« völlig<br />

schmerzfrei auf Windows nutzen lässt:<br />

Die Entwickler spendierten der Software<br />

sogar einen eigenen Installer, sodass sich<br />

ein Windows-Rechner – so seltsam das<br />

klingen mag – deutlich leichter in einen<br />

Computing-Knoten für Nova verwandeln<br />

lässt, als ein <strong>Linux</strong>-System. Der Admin<br />

braucht lediglich einen mit Hyper-V ausgestatteten<br />

Rechner, sogar die Desktopsysteme<br />

(also Windows 7 oder 8) taugen<br />

dafür (Abbildung 2).<br />

Das Netz<br />

Abbildung 2: Leichter als mit <strong>Linux</strong>: In der Hyper-V-Konsole zeigt sich, wie<br />

nahtlos Cloudbase »nova‐compute« in Open Stack integriert.<br />

Abbildung 3: Der Cinder-Installer für Windows<br />

ermöglicht es, Speicher über I-SCSI von einem<br />

Windows-Server in der Cloud bereitzustellen.<br />

Cloudumgebungen nutzen Software Defined<br />

Networking (SDN) und degradieren<br />

die Switches im Rechenzentrum<br />

zu bloßem<br />

Eisen, um den Packetflow<br />

danach über<br />

die Cloudum gebung<br />

selbst zu kontrollieren.<br />

Der Nachteil: Zusammen<br />

mit der Virtualisierungssoftware<br />

muss auf den Hypervisor-Knoten<br />

noch eine<br />

Komponente laufen,<br />

die sich um das Netzwerk<br />

kümmert.<br />

In Open Stack ist für<br />

das Netzwerk die<br />

Komponente Neutron<br />

verantwortlich, die bis<br />

vor Kurzem offiziell<br />

den Namen Quantum


Abbildung 4: Über den Metadatenservice erfahren virtuelle Maschinen jede<br />

Menge über sich selbst, zum Beispiel ihren Hostnamen.<br />

trug. Quantum setzt in der Standardkonfiguration<br />

auf Open Vswitch [8], um ein<br />

SDN zu etablieren.<br />

Damit konnte Cloudbase bei Windows<br />

aber nichts anfangen, eine Art Open<br />

Vswitch für Windows existiert bis heute<br />

nicht. Deshalb strickten die Italiener ein<br />

eigenes Quantum-Plugin. Das erlaubt<br />

es zwar nicht, Hyper-V-Server und solche<br />

mit <strong>Linux</strong> und Open Vswitch in der<br />

gleichen Quantum-Umgebung laufen zu<br />

lassen. Aber wenigstens funktioniert so<br />

das Netzwerk zwischen Quantum und<br />

Hyper-V zufriedenstellend.<br />

Cinder<br />

Unter dem Namen Cinder firmiert in<br />

Open Stack die Komponente, die VMs<br />

mit persistentem Blockspeicher ausrüstet.<br />

Auch diese Software war auf Windows<br />

nicht lauffähig, bevor Cloudbase<br />

sich ihrer annahm. Cinder bekam einen<br />

grafischen Installer (Abbildung 3) spendiert<br />

und lässt sich jetzt auf Windows-<br />

Server-Systemen installieren, wobei die<br />

»cinder‐volume«-Komponente den wichtigsten<br />

Teil ausmacht.<br />

Ab jetzt kann der Admin den Speicher<br />

auf dem Cinder-Volume-Host problemlos<br />

in Form von Blockdevices direkt an die<br />

laufenden VMs anhängen, ganz gleich,<br />

ob darin <strong>Linux</strong> oder Windows läuft. Dabei<br />

kommt schlicht I-SCSI zum Einsatz,<br />

das der Windows-Server schon mit Bordmitteln<br />

zu exportieren weiß.<br />

Cloudbase-Init<br />

Kommentare zum Cloud Computing greifen<br />

gerne zu folgender tierischen Analogie:<br />

Konventionelle IT-Setups bestanden<br />

aus Systemen, die wie kleine Kätzchen zu<br />

hegen und zu pflegen sind. Ein System<br />

in einer Open-Stack-Cloud jedoch ist im<br />

Grunde ein Herdenrind, dessen Ausfall<br />

den Besitzer emotional nicht mehr sonderlich<br />

beeinflusst. Schließlich lässt sich<br />

das ausgefallene System jederzeit durch<br />

ein anderes ersetzen, vielleicht sogar automatisch.<br />

Doch der<br />

Teufel steckt im Detail:<br />

Auch wenn eine virtuelle<br />

Maschine beliebig<br />

ersetzbar ist, bleiben<br />

doch ein paar spezifische<br />

Daten, die sie<br />

selbst kennen muss. Dazu gehören der<br />

Hostname oder der SSH-Schlüssel, die im<br />

System hinterlegt sein sollen, damit die<br />

entfernte Anmeldung klappt.<br />

Für <strong>Linux</strong>-Gäste gibt es eine einfache<br />

und zuverlässige Möglichkeit, das Problem<br />

in Open-Stack-Clouds in den Griff<br />

zu kriegen: »cloud‐init«. Das Shellskript,<br />

das ein <strong>Linux</strong>-Gast beim Starten aufruft,<br />

bedient sich der fest definierten URL<br />

»http://169.254.169.254:80/«.<br />

Im Hintergrund kümmert sich Open<br />

Stack darum, dass der Request bei Novas<br />

Metadatenserver landet, wo sich im<br />

Anschluss ein entsprechendes Reply auf<br />

die Reise macht (Abbildungen 4 und 5).<br />

So erfährt die virtuelle Maschine, wer sie<br />

ist. Das ganze Prinzip scheint schamlos<br />

bei Amazon AWS geklaut zu sein, wo<br />

der gesamte Vorgang im Grunde genauso<br />

funktioniert.<br />

Windows-Port<br />

Das einzige Problem daran: Das benutzte<br />

»cloud‐init« ist <strong>Linux</strong>-spezifisch,<br />

eine Portierung auf Windows war für die<br />

Open-Source-Community technisch auch<br />

nicht sinnvoll. Doch Cloudbase hat in<br />

den sauren Apfel gebissen und eine Re-<br />

Implementation für Windows verfasst,<br />

die »cloudbase‐init« ([9], Abbildung 6)<br />

heißt und auf Windows-Systemen im<br />

Grunde den gleichen Zweck erfüllt wie<br />

Cloud-init auf <strong>Linux</strong>-Systemen. Mittlerweile<br />

beherrscht »cloudbase‐init« fast<br />

mehr Funktionen als sein <strong>Linux</strong>-Urahn<br />

und hat sich zu einem zuverlässigen<br />

Werkzeug gemausert.<br />

Große Ankündigungen<br />

Windows-Systeme mit Hyper-V lassen<br />

sich schon jetzt sehr ordentlich in eine<br />

Open-Stack-Umgebung integrieren, nur<br />

das Thema Netzwerk bereitet noch Kummer.<br />

Aber Cloudbase ruht sich keinesfalls<br />

auf den erreichten Lorbeeren aus: CEO<br />

Pilotti sorgte im Juni als Vortragender<br />

beim Open Stack CEE Day 2013 [10] in<br />

Budapest mit einem ambitionierten Plan<br />

für Aufsehen: Cloudbase arbeitet daran,<br />

Open Vswitch auf Windows nativ lauffähig<br />

zu machen (Abbildung 7).<br />

Freilich würden davon alle Applikationen<br />

profitieren, die auf Open Vswitch<br />

setzen, aber im Open-Stack-Kontext<br />

wäre der Nutzen am offensichtlichsten.<br />

Denn sobald Open Vswitch für Windows<br />

funktioniert, wäre es de facto möglich,<br />

Hyper-V-Systeme völlig nahtlos in bestehende<br />

Clouds mit Open Stack zu integrieren<br />

und sie sogar unter der gleichen<br />

Windows-Cloud 09/2013<br />

Sysadmin<br />

www.linux-magazin.de<br />

71<br />

Abbildung 5: Beim Starten rufen die meisten Cloudimages die Informationen vom Metadatenserver ab.


Sysadmin<br />

www.linux-magazin.de Windows-Cloud 09/2013<br />

72<br />

Oberfläche mittels Browser zu verwalten.<br />

Einzig die Live-Migration zwischen den<br />

einzelnen Servern bliebe das Problem,<br />

weil eine Live-Migration von KVM auf<br />

Hyper-V oder irgendeine andere Virtualisierungstechnik<br />

zurzeit nicht geht und<br />

wohl absehbar auch nicht zu erwarten<br />

ist. Das lässt sich im Open Stack aber<br />

gegebenenfalls dadurch abfangen, die<br />

<strong>Linux</strong>-Systeme und die Hyper-V-Server<br />

in eigene Zonen zu stecken. Open Stack<br />

bekommt so die Option, zwischen den<br />

Servern zu unterscheiden.<br />

Gast und Hypervisor<br />

Das Open-Stack-Projekt hält im Dokumentationsarchiv<br />

gute Anleitungen bereit,<br />

wie sich ein Windows-Image für<br />

die Nutzung in Open Stack aufbauen<br />

lässt [11]. Wer Windows-VMs auf KVM<br />

oder Hyper-V paravirtualisiert einsetzt,<br />

braucht sich um viele Probleme keine<br />

Gedanken mehr zu machen, denn die<br />

KVM-Entwickler und auch Microsoft<br />

haben hier die eigenen Hausaufgaben<br />

gemacht.<br />

Es mag manchen <strong>Linux</strong>er überraschen,<br />

doch Windows-Systeme finden nicht nur<br />

als Guest-VM in Open Stack einen Lebensraum.<br />

Auch als Hypervisor in Open<br />

Stack lässt sich Windows nutzen, und<br />

die Lorbeeren dafür gehen an Cloudbase<br />

In der Tat ist es in wenigen Mausklicks<br />

möglich, aus einem Hyper-V-System einen<br />

Knoten für Open Stack zu machen,<br />

und die Unterstützung für Storage (Cinder)<br />

sowie das per Software definierte<br />

Netzwerk (Neutron) ist schon enthalten.<br />

Dass das Unternehmen es nun noch auf<br />

Abbildung 7: Netzwerk in Open Stack: Neutron mit Open Vswitch ist der Standard, Cloudbase portiert gerade<br />

Open Vswitch auf das Betriebssystem aus Redmond.<br />

sich nimmt, Open Vswitch in einer Version<br />

für Windows aufzulegen, ist eine<br />

tolle Nachricht für die F/​OSS-Welt und<br />

auch für alle Leute, die Hyper-V-Systeme<br />

gern als Hypervisor in ihre Clouds mit<br />

hinein nehmen wollen. Bleibt zu hoffen,<br />

dass Cloudbase mit der Portierung gut<br />

vorankommt.<br />

Testen leicht gemacht<br />

Wer sich von den Möglichkeiten mit Windows<br />

in Open Stack ein eigenes Bild machen<br />

möchte, findet auf der Cloudbase-<br />

Website [7] sowohl alle benötigten Open-<br />

Stack-Komponenten wie auch ein fertiges<br />

Gast-Image, das die Möglichkeiten von<br />

Windows-Gästen in Open Stack zeigt. Ab<br />

Werk ist das Image eine Trial-Version, die<br />

sich allerdings durch die Eingabe einer<br />

Seriennummer in eine normale Version<br />

umwandelt. (mfe)<br />

n<br />

Infos<br />

[1] „Ballmer: <strong>Linux</strong> is a cancer“, The Register:<br />

[http:// www. theregister.co.uk/2001/06/01/<br />

ballmer_linux_is_a_cancer]<br />

[2] Open Stack: [http:// www. openstack. org]<br />

[3] Christian Berendt, Stefan Seyfried, „Cactus<br />

im Anmarsch“: [http:// www. linux‐magazin.​<br />

de/ Ausgaben/ 2011/ 05/ Open‐Stack/]<br />

[4] Martin Loschwitz, „Dunkle Wolken“:<br />

[http:// www. linux‐magazin. de/ Ausgaben/​<br />

2011/ 12/ Cloud-Automatisierung/]<br />

[5] Fedora-Virtio-Treiber für KVM:<br />

[http:// alt. fedoraproject. org/ pub/ alt/​<br />

virtio‐win/ latest/ images/]<br />

[6] Sysprep: [http:// technet. microsoft. com/​<br />

en‐us/ library/ cc766049(v=ws. 10). aspx]<br />

[7] Cloudbase: [http:// www. cloudbase. it]<br />

[8] Konstantin Agouros, „Virtuos schalten“:<br />

<strong>Linux</strong>-<strong>Magazin</strong> 02/​13, S. 64<br />

[9] Cloudbase-init für Windows-Instanzen:<br />

[http:// www. cloudbase. it/ cloud‐init‐forwindows‐instances/]<br />

[10] Open Stack CEE Day 2013:<br />

[http:// openstackceeday. com]<br />

[11] Windows-Image für Open Stack:<br />

[http:// docs. openstack. org/ trunk/​<br />

openstack‐image/ content/ windowsimage.<br />

html]<br />

Abbildung 6: Cloudbase-Init startet nach dem Booten der Windows-VMs und implementiert die gleichen Features,<br />

die »cloud‐init« für Windows bietet.<br />

Der Autor<br />

Martin Gerhard Loschwitz<br />

arbeitet als Principal<br />

Consultant bei Hastexo.<br />

Er beschäftigt sich dort<br />

intensiv mit den Themen<br />

Hochverfügbar und Cloud<br />

Computing und pflegt in seiner Freizeit den <strong>Linux</strong>-<br />

Cluster-Stack für Debian GNU/​<strong>Linux</strong>.


Auf den Punkt gebracht<br />

Leserbriefe<br />

Leserbriefe 09/2013<br />

Forum<br />

Haben Sie Anregungen, Statements oder Kommentare? Dann schreiben Sie an [redaktion@linux-­magazin.­de].<br />

Die Redaktion behält es sich vor, die Zuschriften und Leserbriefe zu kürzen. Sie veröffentlicht alle Beiträge mit<br />

Namen, sofern der Autor nicht ausdrücklich Anonymität wünscht.<br />

www.linux-magazin.de<br />

73<br />

Knoppix: Tasten, Skype, CD<br />

04/​13, S. 54: Mir gefällt Knoppix sehr<br />

gut, es hat aber für mich noch entscheidende<br />

Mängel: Funktionieren jetzt beim<br />

Netbook die [Fn]-Tasten? Bei Ubuntu ist<br />

das kein Problem. Speichert Skype die<br />

Mikrofoneinstellung? Wann ist die CD-<br />

Version erhältlich?<br />

Karin Nickel, per E-Mail<br />

Jeder Hersteller belegt seine Tastatur anders.<br />

Ubuntu setzt die Tastaturbelegung<br />

bei der Installation. Knoppix kennt keine<br />

Installation, es belegt aber die Tasten,<br />

die überall gleich sind. Dazu gehört die<br />

Ein/​Aus-Schalttaste, bei der ein Dialog<br />

erscheint und fragt, ob man den Rechner<br />

herunterfahren möchte.<br />

Ich installiere auf Knoppix kein Skype. Da<br />

es keine Open-Source-Software ist, kann<br />

Ihnen niemand genau sagen, was dieses<br />

Programm alles tut. Sie können aber programmunabhängig<br />

die Lautstärke-Einstellungen<br />

speichern, indem Sie mit dem<br />

Programm »aumix« alles einstellen und<br />

dann die Datei ».aumixrc« nach »/etc/<br />

aumixrc« kopieren.<br />

Knoppix 7.2.0 steht auf [http://​­knopper.​<br />

­net/​­knoppix‐mirrors/] als CD- und DVD-<br />

Image bereit. (Klaus Knopper) n


Forum<br />

www.linux-magazin.de OSS-Politik 09/2013<br />

74<br />

Open-Source-Politik im Bundestagswahlkampf<br />

Freies Lernen<br />

Open Source, das sei den Parteien sehr wichtig, beteuerten die Politiker unisono, als das <strong>Linux</strong>-<strong>Magazin</strong> sie vor<br />

vier Jahren fragte. Doch in Parteiprogrammen schlug sich das nicht wieder. Jetzt hat die FSFE Wahlprüfsteine<br />

für Freie-Software-Anhänger formuliert und festgestellt: Deutsche Parteien sind lernfähig. Markus Feilner<br />

unter <strong>Linux</strong> nicht lauffähigen Steuererklärungssoftware<br />

Elster Formular, zur<br />

Kontrolle von mobilen Geräten und gebührenfreien<br />

Lizenzierung von Standards<br />

sowie zu Secure Boot, Werbung für unfreie<br />

Software auf Webseiten der öffentlichen<br />

Verwaltung und zu Softwarepatenten.<br />

Alle Parteien haben reagiert, und in<br />

den Antworten zeigt sich, dass die Politik<br />

Know-how aufgebaut hat.<br />

Einigkeit im linken Lager<br />

© Luca Bertolli, 123RF.com<br />

Vor vier Jahren befragte das <strong>Linux</strong>-<strong>Magazin</strong><br />

angesichts der sich nähernden<br />

Wahlen zum deutschen Bundestag Vertreter<br />

aus sechs Parteien nach dem Stellenwert,<br />

den Open Source und <strong>Linux</strong> in<br />

deren Programmen habe [1]. Allerdings<br />

gestaltete sich schon die Wahl der Gesprächspartner<br />

in manchen Parteien<br />

schwierig – und die Ergebnisse konnten<br />

nicht überraschen.<br />

Nachgefragt<br />

Durch die Bank gaben sich die Politiker<br />

gegenüber dem <strong>Linux</strong>-<strong>Magazin</strong> als überraschend<br />

große <strong>Linux</strong>-Fans zu erkennen<br />

– was der aufmerksame <strong>Linux</strong>er im politischen<br />

Alltag eher selten festzustellen<br />

vermochte. Ausgerechnet der außer Konkurrenz<br />

angetretene Satiriker aus „DIE<br />

PARTEI“, Martin Sonneborn, wuchs dabei<br />

zum realsatirischen Höhepunkt der<br />

Parteienbefragung – mit konsequenter<br />

Ehrlichkeit, viel Spott und jeder Menge<br />

bitterböser Ironie [2].<br />

Am 22. September steht wieder eine<br />

Bundestagswahl an. Dieses Mal hat sich<br />

die Free Software Foundation Europe, federführend<br />

ist Matthias Kirschner, der<br />

deutschen Parteienlandschaft angenommen.<br />

Mehrere Monate recherchierten<br />

die FSFE-Autoren, ehe sie schließlich<br />

Anfang Juli die gesammelten Daten [3]<br />

in einer Presseerklärung [4] unter dem<br />

Titel „Bundestagswahl: Positionen der<br />

Parteien zu Freier Software“ zusammenfassten<br />

(Abbildung 1).<br />

Gleich zu Beginn der Studie zieht die<br />

FSFE ein positives Teilfazit: „Erfreulicherweise<br />

haben die Parteien ihr Wissen<br />

seit der letzten Bundestagswahl bezüglich<br />

Freier Software klar verbessert.“<br />

Die Organisation habe allen Parteien die<br />

Frage gestellt, „ob öffentlich finanzierte<br />

Software als Freie Software bereitgestellt<br />

werden muss“. Außerdem Fragen zur<br />

Besonders lobt die FSFE, dass alle Parteien<br />

des linken Spektrums, aber auch die<br />

Freien Wähler, „wollen, dass von öffentlicher<br />

Hand beauftragte und finanzierte<br />

Software als Freie Software veröffentlicht<br />

wird“ – wie es in vielen anderen Ländern<br />

Europas seit Jahren üblich ist.<br />

Einzig die Regierungspartei CDU sieht<br />

hier schwarz, zu schwierig seien „haushaltsrechtliche<br />

Hürden“ in Paragrafen,<br />

die sie jedoch nach Bewertung der FSFE<br />

durchaus selbst ändern könnte. Denn<br />

auch das Bundesamt für Sicherheit in<br />

der Informationstechnik (BSI) sieht in<br />

seinem Migrationsleitfaden keine Hindernisse.<br />

Auch beim Veröffentlichen<br />

von Quelltext spielt die Regierungspartei<br />

nicht mit. Ein weiteres Problem sei, dass<br />

niemand bei Open Source kontrollieren<br />

könne, wer die Software wofür einsetze,<br />

meint die CDU. Das aber sei bei staatlichen<br />

Aufträgen nötig.<br />

Wenig überraschend beschäftigen sich<br />

die Fragen der FSFE auch mit Projekten<br />

und vermeintlichen Skandalen, die die<br />

Foundation in den letzten Jahren festgestellt<br />

hat, beispielsweise das „Elstergate“<br />

[5], die „PDF-Reader“-Aktion ([6], Abbildung<br />

2) oder die Free-Your-Android-<br />

Kampagne ([7], Abbildung 3).


OSS-Politik 09/2013<br />

Forum<br />

Abbildung 1: Alle Politikerantworten und eine Zusammenfassung finden sich auf der Webseite der Foundation.<br />

Doch präsentieren sich nicht alle Parteien<br />

und Protagonisten einsichtig. Zwar<br />

sind alle der Meinung, die Plattformabhängigkeit<br />

der Elster-Steuererklärungssoftware<br />

und das „Zurückhalten“ einer<br />

<strong>Linux</strong>-Version seien zumindest unschön<br />

gelaufen. Doch schon bei der Frage nach<br />

Quellcodes, offenen Standards und der<br />

Werbung für kommerzielle proprietäre<br />

Software fährt die CDU recht allein eine<br />

tendenziell härtere Linie. Werbung, Links<br />

und Empfehlungen staatlicher Stellen<br />

für Hersteller wie Microsoft oder Adobe<br />

seien kein Problem, „solange diese der<br />

Benutzerfreundlichkeit“ diene.<br />

Einigkeit dagegen herrscht in der Politik<br />

bei der Bewertung der Enquetekommission<br />

„Internet und digitale Gesellschaft“<br />

[8], die allenthalben als voller Erfolg<br />

gilt. Allerdings scheiden sich die Geister<br />

recht schnell, wenn etwa die Grünen den<br />

E-Government-Standard SAGA [9] und<br />

damit verbundene offene Standards einfordern.<br />

Linke und Piraten meinen, das<br />

bringe nichts, nicht ohne „aktiven politischen<br />

Willen“. Die Piraten nennen SAGA<br />

einen „Papiertiger“, weil etwa ODF dort<br />

nur empfohlen, nicht aber vorgeschrieben<br />

werde. Nur die CDU ist grundsätzlich<br />

gegen eine gebührenfreie Lizenzierungspflicht<br />

bei offenen Standards. Immerhin<br />

sind sich alle inzwischen einig, dass Softwarepatente<br />

keine gute Idee sind.<br />

Mehr Stellenwert<br />

Abbildung 2: Sollen öffentliche Einrichtungen auf ihren Webseiten Werbung<br />

für proprietäre Produkte machen, etwa für den Adobe-PDF-Reader?<br />

Die detaillierten Antworten, die die FSFE<br />

unter [3] veröffentlicht hat, zeichnen<br />

ein gutes Bild vom veränderten Stellenwert<br />

von <strong>Linux</strong>, OSS und offenen Standards<br />

in den Parteien. Wer sich die Zeit<br />

nimmt und die Texte aufmerksam liest,<br />

merkt schnell, dass sich in den letzten<br />

Jahren viel getan hat. <strong>Linux</strong> und Open-<br />

Source-Software sind<br />

in viele Bereiche des<br />

Alltags vorgedrungen<br />

und Commodity beziehungsweise<br />

Mainstream<br />

geworden. Und<br />

das geht nicht spurlos<br />

an den deutschen Parteien<br />

vorbei.<br />

Umso mehr sollten<br />

sich Gelegenheiten<br />

finden, das umzusetzen,<br />

was die FSFE mit<br />

der Aktion unter anderem<br />

auch bezweckt:<br />

Abbildung 3: Beim Android-Befreien hilft die FSFE.<br />

Open Source und offene Standards ins<br />

Gespräch zu bringen und Politikern ihre<br />

Bedeutung zu verdeutlichen.<br />

Deshalb ist es der Foundation ein Anliegen,<br />

dass die Bürger ihren lokalen Kandidaten<br />

oder Volksvertreter mit den Texten<br />

oder einzelnen Aussagen konfrontieren.<br />

Das scheint ein guter Weg, um auch bei<br />

den verschlafensten Hinterbänklern das<br />

notwendige Bewusstsein für die Belange<br />

der freien Communities und den volkswirtschaftlichen<br />

Nutzen zu schaffen. n<br />

Infos<br />

[1] Parteien und Open Source 2009:<br />

[http:// www. linux‐magazin. de/ NEWS/<br />

Wahl‐Special‐Wie‐halten‐es‐die‐Parteien<br />

‐mit‐Open‐Source]<br />

[2] Anworten von Martin Sonneborn, DIE PAR‐<br />

TEI, 2009: [http:// www. linux‐magazin. de/​<br />

Online‐Artikel/ Open‐Source‐im‐Wahlkampf<br />

‐Teil‐5‐Martin‐Sonneborn‐DIE‐PARTEI]<br />

[3] Die vollständigen Antworten der Parteien:<br />

[http:// fsfe. org/ campaigns/​<br />

askyourcandidates/ 201309‐germany<br />

‐bundestagswahl. de. html]<br />

[4] „Bundestagswahl: Positionen der Parteien<br />

zu Freier Software“, Pressemitteilung der<br />

FSFE vom 3.Juli 2013: [http:// fsfe. org/​<br />

news/ 2013/ news‐20130703‐01. de. html]<br />

[5] Elstergate:<br />

[https:// blogs. fsfe. org/ mk/ ? p=1031]<br />

[6] PDF-Readers: [http:// fsfe. org/ campaigns/​<br />

pdfreaders/ letter. de. html]<br />

[7] Free Your Android: [http:// fsfe. org/​<br />

campaigns/ android/ android. de. html]<br />

[8] Enquetekommission „Internet und digitale<br />

Gesellschaft“: [http:// www. bundestag.​de/​<br />

internetenquete/]<br />

[9] SAGA-Standard-Spezifikation:<br />

[http:// www. cio. bund. de/​<br />

SharedDocs/ Publikationen/ DE/​<br />

Architekturen‐und‐Standards/ SAGA/​<br />

saga_4_0_englisch_download. pdf]<br />

www.linux-magazin.de<br />

75


Forum<br />

www.linux-magazin.de Rechts-Rat 09/2013<br />

78<br />

Leser fragen, der <strong>Linux</strong>-<strong>Magazin</strong>-Ratgeber antwortet<br />

Recht einfach<br />

Urheberrecht, Verträge, Lizenzen und so weiter: In der Serie „Rechts-Rat“ erhalten <strong>Linux</strong>-<strong>Magazin</strong>-Leser verständliche<br />

Auskünfte zu Rechtsproblemen des <strong>Linux</strong>-Alltags. Fred Andresen<br />

© Jozef Polc, 123RF<br />

In dieser Ausgabe geht es um E-Mail-<br />

Marketing, Double-Opt-in-Verfahren, das<br />

Erschöpfungsrecht bei anderen als Programmier-Werken<br />

und um die Pflichtangaben<br />

für Webshop-Betreiber und andere<br />

Onlineunternehmer. Außerdem möchte<br />

ein Sportverein seine Veranstaltungen ins<br />

Netz stellen – samt Siegern und Besiegten.<br />

Double-Opt-in für die<br />

iTonne?<br />

Ich habe gehört, dass das Double-Opt-in-Verfahren<br />

zur Bestätigung von Newsletter-Abonnements<br />

bereits wieder überholt und unzulässig<br />

ist? Welche Lösung ist für die Zukunft rechtlich<br />

unbedenklich?<br />

Kay F.<br />

Als Double-Opt-in bezeichnet man ein<br />

Verfahren beim Bestellen von Werbe- und<br />

Informationssendungen über die Homepage<br />

eines Anbieters. Dieser schickt vor<br />

dem Versand der eigentlichen Werbung<br />

eine Kontroll- oder Bestätigungs-E-Mail<br />

an die eingetragene Empfängeradresse<br />

des Bestellers. Diese enthält einen<br />

HTML-Link, den der Empfänger aktivieren<br />

muss, um die Werbung tatsächlich<br />

zu erhalten. „Double“ bezieht sich also<br />

auf das Verfahren, bei dem ein Anbieter<br />

eine erste Bestellung über eine zweite<br />

Bestätigungs-E-Mail verifiziert, bevor er<br />

Werbung versendet.<br />

Der Grund für diese komplizierte Handhabe<br />

ist die Rechtslage, die unaufgefordert<br />

versandte Werbung als rechtswidrigen<br />

Eingriff in die Sphäre des Empfängers,<br />

zum Beispiel in den eingerichteten<br />

und ausgeübten Gewerbebetrieb, wertet.<br />

Anstelle des tatsächlichen Inhabers der<br />

angegebenen E-Mail-Adresse könnte<br />

nämlich ein böswilliger Dritter dessen<br />

Adresse eingetragen, und den Newsletter<br />

oder andere Werbung bestellt haben.<br />

Der Werbetreibende liefe also permanent<br />

Gefahr, mit seinem Newsletter die Mailbox<br />

eines überraschten und verärgerten<br />

Empfängers zu füllen.<br />

Solche Aktionen können Anlass für eine<br />

– rechtmäßige – kostenintensive Abmahnung<br />

sein, weshalb sich die Rechtsprechung<br />

als „Lösung“ auf das beschriebene<br />

Double-Opt-in-Verfahren geeinigt hat, da<br />

es die Interessen beider Seiten – der Werbetreibenden<br />

wie auch der Empfänger<br />

– möglichst ausbalanciert: Der Werbetreibende<br />

darf seine Werbung versenden,<br />

allerdings nur, wenn er den Empfänger so<br />

wenig wie möglich belästigt beziehungsweise<br />

beeinträchtigt.<br />

Das „neue“ Urteil, auf das Sie sich beziehen,<br />

dürfte die Entscheidung des Oberlandesgerichts<br />

München sein [1], in der<br />

die Richter auch die Bestätigungsaufforderung<br />

bereits als unzulässige Werbung<br />

angesehen haben. Deswegen bejahte das<br />

Gericht die Erstattungspflicht der Abmahnkosten,<br />

die der Versender wegen<br />

unzulässiger Werbung gefordert hatte.<br />

Diese Entscheidung wird vermutlich eine<br />

Einzelfallentscheidung bleiben: Die Urteilsbegründung<br />

wirkt nicht unbedingt<br />

glücklich. Das Gericht wertet auch die<br />

Bestätigungsaufforderung als unzulässigen<br />

Rechtseingriff, was vertretbar ist,<br />

weil allein der legitime E-Mail-Anschlussinhaber<br />

rechtswirksame Zustimmung<br />

zum Werbungsempfang erklären kann.<br />

Der bloße Anschein, der sich auf eine<br />

fälschlich von Dritten eingetragene E-<br />

Mail-Adresse stützt, kann dagegen dem<br />

legitimen Anschlussinhaber nicht entgegengehalten<br />

werden.<br />

Allerdings geht das Gericht weiter davon<br />

aus, dass der Werbeversand (der Bestätigungsaufforderung)<br />

schuldhaft und damit<br />

verwertbar erfolgte. Der Versender hätte<br />

demnach bei Anwendung der gebotenen<br />

Sorgfalt jedenfalls erkennen können, dass<br />

der Empfänger nicht in die E-Mail-Zusendung<br />

eingewilligt habe. Weil das Gericht<br />

dies ohne nähere Betrachtung annimmt,


© Aleksandar Mijatovic, 123RF.com<br />

drehen, sind „spezieller“ als solche, die<br />

generell alle Werke behandeln und gehen<br />

daher den allgemeinen vor, entsprechend<br />

dem Grundsatz „Spezialrecht vor allgemeinem<br />

Recht“.<br />

In diesem Kontext taucht noch ein weiteres<br />

Problem auf: Gerade über die völkerrechtskonforme<br />

Auslegung des (europarechtlichen)<br />

Sekundärrechts finden<br />

derzeit großen Diskussionen statt, im<br />

Zusammenhang mit dem Erschöpfungsgrundsatz<br />

und dessen Erstreckung auf<br />

Computerprogramme und andere urheberrechtlich<br />

geschützte Werke. Während<br />

das Primärrecht der Europäischen Gemeinschaft<br />

aus den Verträgen der Mitgliedsstaaten<br />

besteht, sind das Sekundärrecht<br />

die von den Organen der EU<br />

erlassenen Rechtsakte, zu denen auch die<br />

Richtlinien gehören.<br />

Nach dem EuGH sind Vorschriften des<br />

Sekundärrechts im Lichte des Völkerrechts<br />

auszulegen, insbesondere, wenn<br />

die betreffenden Sekundärrechtsakte völkerrechtliche<br />

Verträge der Gemeinschaft<br />

durchführen sollen [3].<br />

Die sekundärrechtliche Vorschrift ist die<br />

Computersoftware-Richtline; das hier<br />

betroffene Völkerrecht ist der WIPO-<br />

Urheberrechtsvertrag [4]: Dieses Urheberrechtsübereinkommen<br />

gilt als dem<br />

primären Gemeinschaftsrecht zugehörig<br />

und bestimmt, wie etwa die Urheberrechts-<br />

oder auch die Computersoftware-<br />

Richtline auszulegen sind. Nach den Agreed<br />

Statements zu den Artikeln 6 und 7<br />

des WIPO-Urheberrechtsvertrags [5] soll<br />

sich aber eine Erschöpfung jedenfalls nur<br />

auf körperliche Werkstücke beziehen.<br />

Ein Ausdehnen auch auf andere urheberrechtlich<br />

geschützte Werke über Computerprogramme<br />

hinaus scheint damit nicht<br />

möglich, solange es keine Änderung in<br />

den internationalen Abkommen erfolgt.<br />

i Webshop-Pflichtangaben?<br />

Rechts-Rat 09/2013<br />

Forum<br />

Abbildung 1: Gebrauchtwagen und gebrauchte Software sind nicht das Gleiche, und beim Weiterverkauf vongebrauchten<br />

E-Books, Musiktiteln oder Filmen ist noch mehr Vorsicht angebracht.<br />

erkennt es nicht, dass es keinen Weg gibt,<br />

wie der Versender das hätte feststellen<br />

können – mit welcher Sorgfalt auch immer.<br />

Denn die Bestätigungsaufforderung<br />

per E-Mail, war die einzige Möglichkeit,<br />

diese Sorgfaltspflicht zu erfüllen. Es ist<br />

daher anzunehmen, dass Gerichte in anderen<br />

Fällen die Zulässigkeit des Double-<br />

Opt-in-Verfahrens bestätigen werden.<br />

Wiederverkauf von me-<br />

idialen Inhalten?<br />

Wenn inzwischen der Weiterverkauf von gebrauchter<br />

Software auch aus Downloads gestattet<br />

ist, wie sieht es denn mit anderen urheberrechtlich<br />

geschützten Inhalten aus? Schließlich<br />

sind ja Computerprogramme auch nur Urheberrechts-Werke.<br />

Der EuGH sagt ja im Grundsatz,<br />

dass sich das Erschöpfungsprinzip bei E-Books,<br />

Musik oder Filmen nicht anders auslegen lässt,<br />

als bei Software. Theoretisch müsste man ja alles<br />

weiterverkaufen dürfen.<br />

I. P.<br />

Der EuGH begründete die Zulässigkeit des<br />

Weitervertriebs, also den Erschöpfungseintritt,<br />

mittels einer spezialgesetzlichen<br />

Norm, die gegenüber den gewöhnlichen<br />

urheberrechtlichen Vorschriften, auch<br />

der bestehenden nationalen Regelungen,<br />

Vorrang hat: Nach der Computersoftware-<br />

Richtline [2] sind – wenn es sich um<br />

keine körperlichen Werkstücke handelt,<br />

sondern um digitale Vervielfältigungen<br />

– ausschließlich „Programmkopien“ von<br />

der Erschöpfung betroffen.<br />

Computerprogramme bilden eine Unterart<br />

der urheberrechtlich geschützten<br />

Werke. Rechtsnormen, die sich ausschließlich<br />

um Computerprogramme<br />

Wir vertreiben Waren und Dienstleistungen über<br />

einen Onlineshop an Verbraucher. Wo finden wir<br />

konkrete Angaben, welche Pflichtangaben wir<br />

entsprechend den Gesetzen über den Fernabsatz<br />

auf der Homepage machen müssen?<br />

P GmbH<br />

Als Onlinehändler betreffen Sie eine<br />

Reihe von Informationspflichten im Shop,<br />

während des Bestellvorgangs und in den<br />

Bestätigungs-E-Mails nach Abschluss.<br />

Während spezialgesetzliche Regelungen<br />

etwa für Medizinprodukte, Altbatterien<br />

oder andere nicht alltägliche Waren bestehen,<br />

stehen die allgemeinen Informationspflichten<br />

für gewerbliche Onlinehändler<br />

in Art. 246 § 1 ff. EGBGB.<br />

Als Onlinehändler schließen Sie nach<br />

eigenen Angaben Verträge über die Lieferung<br />

von Waren oder Dienstleistungen<br />

zwischen Ihnen als Unternehmer und einem<br />

oder mehreren Verbrauchern unter<br />

ausschließlicher Verwendung von Fernkommunikationsmitteln,<br />

das heißt hier<br />

per Online-Bestellung und E-Mail.<br />

Nach § 312c Abs. 1 BGB in Verbindung<br />

mit Art. 246 § 1 Abs. 1 EGBGB müssen<br />

Sie noch vor Abschluss des Vertrages<br />

Ihren Kunden über folgende Punkte informieren:<br />

n Identität des Unternehmers/​Unternehmens<br />

samt öffentlichem Register und<br />

Registernummer, falls der Unternehmer<br />

dort eingetragen ist (beispielsweise<br />

im Gewerberegister).<br />

Mailen Sie uns Ihre Fragen!<br />

Im monatlichen Wechsel mit aktuellen Fachbeiträgen<br />

lässt das <strong>Linux</strong>-<strong>Magazin</strong> in der Serie<br />

„Rechts-Rat“ Leserfragen durch einen<br />

Rechtsanwalt kompetent beantworten. Was<br />

immer Sie beschäftigt oder ärgert oder was<br />

Sie einfach nur wissen möchten: Schreiben<br />

Sie eine entsprechende E-Mail an die Adresse<br />

[rechtsrat@linux-magazin. de].<br />

Die Themen dürfen von Software lizenzen bis<br />

zum Hardwarekauf reichen. Die Redaktion<br />

behält es sich vor, abgedruckte Zuschriften<br />

zu kürzen und eventuell enthaltene persönliche<br />

Daten zu ändern.<br />

www.linux-magazin.de<br />

79


Forum<br />

www.linux-magazin.de Rechts-Rat 09/2013<br />

80<br />

© mt kang, 123RF.com<br />

Abbildung 2: Wer übers Internet professionell Waren vertreiben will, muss seine<br />

Kunden über die Rechtslage informieren.<br />

Foto: Markus Feilner<br />

Abbildung 3: Nicht so ohne weiteres erlaubt: Fotos vom Turnier darf der<br />

Fussballverein nur mit Einwilligung der Beteiligten veröffentlichen, ebenso die<br />

Namen der Teilnehmer.<br />

n Identität eines Vertreters vor Ort, falls<br />

der Kunde in einem anderen EU-Mitgliedsstaat<br />

wohnt oder die Identität<br />

beteiligter Dritter wie etwa Versanddienstleister<br />

oder Inkassovermittler.<br />

n Ladungsfähige Anschrift Ihres Unternehmens<br />

und den Namen des gesetzlichen<br />

Vertreters, beispielsweise des<br />

Geschäftsführers.<br />

n Wesentliche Merkmale der Ware oder<br />

Dienstleistung.<br />

n Mindestlaufzeit des Vertrags bei Dauerschuldverhältnissen<br />

oder wiederkehrenden<br />

Lieferungen, etwa Abonnements.<br />

n Einen Vorbehalt, bei Nichtverfügbarkeit<br />

eine gleichartige Ware oder ​<br />

Dienstleistung oder aber nicht liefern<br />

zu wollen.<br />

n Gesamtpreis einschließlich Steuern<br />

und Abgaben.<br />

n Liefer-, Versand-, Zoll- oder sonstige<br />

Kosten, die der Kunde zu tragen hat.<br />

n Details von Zahlung und Lieferung<br />

oder Leistung.<br />

n Details und Folgen von etwa bestehenden<br />

Widerrufs- und Rückgaberechten.<br />

n Etwaige weitere Kosten, die Sie verrechnen<br />

könnten.<br />

n Eventuelle Angebotsbefristungen<br />

Weil der Shop online ist, Sie sich also<br />

im elektronischen Geschäftsverkehr bewegen,<br />

haben Sie noch zusätzlich zu<br />

informieren<br />

n über die technischen Schritte, die zu<br />

einem Vertragsschluss führen,<br />

n ob der Unternehmer den Vertragstext<br />

nach dem Vertragsschluss speichert<br />

und ob er Kunden zugänglich ist,<br />

n wie er mit den gemäß § 312g Absatz 1<br />

Satz 1 Nummer 1 BGB zur Verfügung<br />

gestellten technischen Mitteln Eingabefehler<br />

vor Abgabe der Vertragserklärung<br />

erkennen und berichtigen kann,<br />

n über die für den Vertragsschluss zur<br />

Verfügung stehenden Sprachen und<br />

n über sämtliche einschlägigen Verhaltenskodizes,<br />

denen sich der Unternehmer<br />

unterwirft, sowie über die Möglichkeit<br />

eines elektronischen Zugangs<br />

zu diesen Regelwerken.<br />

Übermitteln Sie alle diese Informationen<br />

zusammen mit Ihren Allgemeinen<br />

Geschäftsbedingungen und einer Widerrufsbelehrung<br />

in Textform mit der Bestätigungs-E-Mail,<br />

dann sollten Sie Ihre<br />

Informationspflichten wirksam erfüllt<br />

haben.<br />

Datenschutz beim<br />

iSportfest?<br />

Wir möchten auf unserer (Sport-)Vereins-Website<br />

über die Ergebnisse der von uns ausgerichteten<br />

Wettkämpfe berichten. Während alle unsere Vereinsmitglieder<br />

eine entsprechende Zustimmung<br />

erklärt haben, ist das bei Gästen nicht immer<br />

zuverlässig möglich. Dürfen wir auch ohne besondere<br />

Erklärungen die Namen und die Fotos<br />

der Beteiligten sowie deren Ergebnisse online<br />

stellen?<br />

Harald L.<br />

Die Namen und weiteren persönlichen<br />

Daten der Veranstaltungsteilnehmer, wie<br />

auch Fotos, auf denen diese erkennbar<br />

abgebildet sind, dürfen nicht ohne ausdrückliche<br />

Genehmigung veröffentlicht,<br />

also online gestellt werden.<br />

Kann eine entsprechende Erklärung<br />

beziehungsweise Genehmigung nicht<br />

eingeholt werden, bleibt Ihnen nur die<br />

Veröffentlichung anonymisierter Ergebnisse<br />

und der Verzicht auf Bilder, auf<br />

denen einzelne Personen (die keine Zustimmung<br />

erteilt haben) erkennbar abgebildet<br />

sind.<br />

Durch effektive Anonymisierung wird<br />

der Personenbezug der Information aufgehoben,<br />

wodurch die Belange des Datenschutzes,<br />

einschließlich des Einwilligungserfordernisses<br />

bei fehlender gesetzlicher<br />

Erlaubnis, nicht mehr berührt<br />

werden. (mfe)<br />

n<br />

Infos<br />

[1] OLG München, Urteil vom 27.9.2012 (29 U<br />

1682/​12): [http:// openjur. de/ u/ 566511. html]<br />

[2] EU-Softwarerichtlinie 2009/​24/​EG:<br />

[http:// eur‐lex. europa. eu/ LexUriServ/​<br />

LexUriServ. do? uri=OJ:L:2009:111:0016:00<br />

22:DE:PDF]<br />

[3] EuGH, Urteil vom 07.12.2006 – C-306/​05:<br />

[http:// www. rewi. europa‐uni. de/ de/ profil/​<br />

Projekte/ deluxe/ archiv_2007/ 05_2007/​<br />

fall_SGAE. html]<br />

[4] WIPO Copyright Treaty:<br />

[http:// www. wipo. int/ treaties/ en/ ip/ wct/​<br />

trtdocs_wo033. html]<br />

[5] Agreed Statements zum WIPO CT: [http://​<br />

www. wipo. int/ treaties/ en/ ip/ wct/​<br />

statements. html]<br />

Der Autor<br />

RA Fred Andresen ist Mitglied der Rechtsanwaltskammer<br />

München und der Arbeitsgemeinschaft<br />

Informationstechnologie im Deutschen Anwaltverein<br />

(DAVIT).


Basics. Projekte.<br />

Ideen. Know-how.<br />

NEU!<br />

Mini-Abo<br />

zwei Ausgaben<br />

nur 9,80 €<br />

Jetzt bestellen!<br />

www.medialinx-shop.de/raspberry-pi-geek


Forum<br />

www.linux-magazin.de Bücher 09/2013<br />

82<br />

Bücher über Web Security sowie über den Raspberry Pi<br />

Tux liest<br />

Das <strong>Linux</strong>-<strong>Magazin</strong> hat ein Buch über Websicherheit ausgesucht. Den zweiten Titel hat der Raspberry-Pi-Gründer<br />

Eben Upton mitverfasst, er führt in das Basteln mit dem Kleinstcomputer und <strong>Linux</strong> ein. Mathias Huber, Markus Feilner<br />

Anwender vertrauen dem Browser und<br />

dem Web täglich wichtige Daten an.<br />

Grund genug, sich mit Websecurity zu<br />

befassen, wie das Michal Zalewski in seinem<br />

Buch „Tangled Web“ tut.<br />

Sicherheit im Web<br />

Der Autor gilt als Experte für Browsersicherheit<br />

und hat 2008 das Browser<br />

Security Handbook [http:// code. google.​<br />

com/ p/ browsersec/] für Google erarbeitet.<br />

Den Lesern seines neuen Buches<br />

bietet er unter „Die Anatomie des Web“<br />

zunächst eine gründliche Einführung zu<br />

URLs, HTTP, HTML und Javascript. Dieser<br />

gut verständliche Grundkurs hat das<br />

Zeug zur Pflichtlektüre und führt bereits<br />

einzelne Angriffstechniken wie Cross Site<br />

Request Forgery ein. Am Ende aller Kapitel<br />

steht ein praktischer „Spickzettel<br />

für Webentwickler“, der ihnen erklärt,<br />

was sie aus Sicherheitsgründen tun und<br />

lassen sollen.<br />

Der zweite Teil widmet sich den Sicherheitsfeatures<br />

der Webbrowser. Hier geht<br />

es um die Same Origin Policy (SOP) und<br />

ihre Lücken, die besonderen Adressenschemata<br />

»data:« und »javascript:« sowie<br />

die umstrittenen Third-Party-Cookies<br />

inklusive Do-not-track-Header. Daneben<br />

werden Gefahren wie das Fälschen der<br />

Adresszeile und Denial-of-Service-Angriffe<br />

gegen den Browser beschrieben.<br />

Info<br />

Michal Zalewski:<br />

Tangled Web<br />

Dpunkt, 2012<br />

390 Seiten, 37 Euro<br />

ISBN 978-3-86490<br />

-002-0<br />

Der dritte und letzte Teil will in die Zukunft<br />

blicken, behandelt beispielsweise<br />

mit Private Browsing aber eine bereits<br />

seit Jahren verbreitete Funktion. Web-<br />

RTC erfasst das Werk nur als Vorschlag,<br />

Websockets sind nur kurz erwähnt, auch<br />

Offlinedaten und Client-seitige Datenbanken<br />

kommen zu kurz. Dabei wirbt der<br />

Verlag damit, man habe das englischsprachige<br />

Original nicht nur übersetzt,<br />

sondern auch aktualisiert.<br />

Der größte Mangel des Buches ist aber,<br />

dass es sich fast vollständig auf den<br />

Brow ser, also die Client-Seite von Webanwendungen<br />

konzentriert. Nur kurz vor<br />

Schluss stehen ein paar Kleinigkeiten zur<br />

Server-Seite: Buffer Overflow, Commandund<br />

SQL-Injection, Directory Traversal<br />

sowie Formatstring-Exploits.<br />

Damit eignet sich das Buch zwar für sicherheitsbewusste<br />

Websurfer sowie für<br />

Admins, die ihre Anwender mit sicheren<br />

Browser-Versionen und ‐Konfigurationen<br />

versorgen möchten. Wer aber den Untertitel<br />

„Der Security-Leitfaden für Webentwickler“<br />

ernst nimmt, dürfte unzufrieden<br />

bleiben. Er muss ergänzend zu<br />

einem Buch über Server-seitige Programmierung<br />

greifen, etwa über PHP- oder<br />

Rails-Sicherheit.<br />

Raspberry Pi<br />

Mit seinem Einsteigerbuch für die<br />

Freunde des preiswerten Mini-Computers<br />

hat der Raspberry-Pi-Initiator Eben Upton<br />

zusammen mit Gareth Halfacree ein<br />

praktisches Referenzwerk vorgestellt. Die<br />

Autoren stellen Hardware, Konfiguration,<br />

Betriebssystem und einfache Programmierung<br />

vor.<br />

Nach der faszinierenden Geschichte des<br />

Projekts „Preisgünstiger Mini-PC für Studenten<br />

auf der ganzen Welt“ erklären<br />

die Autoren ausführlich das SoC-Board<br />

mit seinen Anschlüssen und schildern in<br />

nachvollziehbaren Schritten das Flashen<br />

der SD-Karte mit dem Betriebssystem unter<br />

<strong>Linux</strong>, Windows und Mac OS X.<br />

Auch wenn sich das Kapitel in seinen<br />

weit über 100 Seiten vorwiegend mit der<br />

<strong>Linux</strong>-Systemadministration beschäftigt,<br />

adressiert das Buch durchaus auch ungeübte<br />

Anwender. Dieser Abschnitt mit<br />

seinen detaillierten Erklärungen und der<br />

langen Übersicht der <strong>Linux</strong>-Grundlagen<br />

macht das Werk nebenbei auch zu einem<br />

prima Handbuch für <strong>Linux</strong>-Einsteiger, zur<br />

Lernhilfe oder auch zum Kursmaterial für<br />

Trainer, die anhand des Pi Kursteilnehmern<br />

<strong>Linux</strong>, Embedded-Geräte und die<br />

damit verbundenen Programmiertechniken<br />

nahebringen wollen.<br />

In Teil 2 des Buches kann der Pi seine<br />

Fähigkeiten als Mediacenter oder Webserver<br />

beweisen. Leser, die sich hier<br />

durchgearbeitet haben, finden auf den<br />

abschließenden 100 Seiten jede Menge<br />

Tipps, Tricks und Techniken zur Programmierung<br />

des kleinen PC inklusive<br />

seiner GPIO-Pins und einer Einführung<br />

in Scratch und Python.<br />

Wer den Lötkolben auszupacken bereit<br />

ist, findet auf den letzten Seiten im Kapitel<br />

übers Hardware-Hacking Anregungen<br />

zum Basteln. Neben diesem Buch<br />

braucht der Leser nur noch die Hardware<br />

selbst, um loslegen zu können. n<br />

Info<br />

Eben Upton, Gareth<br />

Halfacree:<br />

Raspberry Pi<br />

Mitp, 2013<br />

290 Seiten, 20 Euro<br />

ISBN 978-3-8266-9522-3


ADMIN und <strong>Linux</strong>-<strong>Magazin</strong><br />

am Apple Newsstand!<br />

Jetzt NEU!<br />

Jetzt GRATIS<br />

testen!<br />

Alternativ finden Sie alle Titel der Medialinx AG auch bei:<br />

Pubbles, PagePlace, iKiosk, OnlineKiosk und Leserauskunft


Know-how<br />

www.linux-magazin.de Embedded Debugging 09/2013<br />

84<br />

Fehlersuche auf Embedded-Systemen<br />

Auf der Jagd<br />

Auf der Pirsch nach Fehlern verlangen eingebettete Systeme dem Entwickler etwas mehr Einsatz ab als gewöhnliche<br />

PCs. Gut also, wenn der Bug-Jäger die verschiedenen Techniken kennt. Anselm Busse, Jan Richling<br />

ausführung zu gewährleisten, erhöhen<br />

allerdings aufgrund eines erweiterten<br />

Hardware-Aufbaus den Aufwand.<br />

Eine dritte Variante von Debugging-Ansätzen<br />

basiert auf Emulation. Diese bietet<br />

einem Entwickler zwar große Flexibilität<br />

bei der Arbeit, jedoch zu dem Preis,<br />

dass die Emulation häufig nicht zu 100<br />

Prozent mit der real existierenden Hardware<br />

übereinstimmt. Potenziell kann es<br />

daher zu nicht vorhersehbaren Fehlern<br />

kommen.<br />

© Barbara Reddoch, 123RF.com<br />

Smartphones, Waschmaschinen, LCD-<br />

TVs, Router, Industriesteuerungen, Digitaluhren<br />

und Raspberry Pi haben gemeinsam,<br />

dass sie statt eines x86-Prozessors<br />

ein System-on-Chip mit einem oder mehreren<br />

ARM-Kernen in sich tragen. Ihre<br />

Bedien- und Kommunikations-Schnittstellen<br />

sind deutlich eingeschränkt, was<br />

sich nicht nur auf die Handhabung auswirkt,<br />

sondern auch auf die Software-Entwicklung<br />

und die damit einhergehende<br />

Fehlersuche, die dieser Artikel besonders<br />

beleuchtet. Zwar stehen ARM-Systeme<br />

im Fokus, doch ist das Vorgehen prozessorunabhängig<br />

und gilt für die meisten<br />

eingebetteten Geräte.<br />

Generell fallen Software und Hardware,<br />

die der Embedded-Entwickler üblicherweise<br />

ins Visier nimmt, höchst unterschiedlich<br />

aus: Während Tablets in ihrer<br />

Ausstattung herkömmlichen PCs ähneln,<br />

besitzt die Steuerungshardware einer<br />

Waschmaschine weder die für das gewohnte<br />

Debugging notwendigen Schnittstellen<br />

noch eine ausreichende Rechenleistung<br />

oder Software-Unterstützung.<br />

Kein Wunder also, dass sich die Ansätze<br />

beim Debuggen unterscheiden und von<br />

der Beschaffenheit der eingebetteten Geräte<br />

abhängen.<br />

Debug im Dreierpack<br />

Grundsätzlich fallen die Debugging-<br />

Ansätze im eingebetteten Bereich unter<br />

drei Kategorien, die alle ihre Vor- und<br />

Nachteile besitzen. In die erste Kategorie<br />

gehören jene Methoden, die bestehende<br />

Debugging-Techniken einfach auf<br />

die eingebetteten Systeme ausdehnen.<br />

Diese können auch Entwickler mit wenig<br />

Erfahrung im eingebetteten Bereich<br />

nutzen. Der Nachteil: Sie sind sehr restriktiv<br />

hinsichtlich der Software auf dem<br />

Zielsystem.<br />

Die zweite Kategorie von Techniken setzt<br />

zusätzliche Hardwareschnittstellen voraus,<br />

die vornehmlich dem Debugging dienen.<br />

Sie besitzen den Vorteil, die größtmögliche<br />

Kontrolle bei der Programm-<br />

Native Entwicklung<br />

Die Fehlersuche lehnt sich in der Regel<br />

eng an die eigentliche Entwicklung von<br />

Software an. Diese unterscheidet sich<br />

bei eingebetteten Systemen erheblich<br />

von dem, was bei Desktop- oder Serversystemen<br />

sonst üblich ist. Wer Software<br />

für solche klassischen Systeme entwickelt,<br />

greift heute in den meisten Fällen<br />

auf einen Entwicklungsrechner zurück,<br />

der häufig besser ausgestattet ist als die<br />

Systeme, auf denen die Software später<br />

laufen soll.<br />

Theoretisch ließe sich die Entwicklung<br />

auch auf dem Produktionssystem selbst<br />

vornehmen, weil die Hardware in der<br />

Lage ist, die Entwicklungsumgebung mitsamt<br />

Benutzeroberfläche auszuführen. In<br />

beiden Fällen ist das Testen der Software<br />

sehr einfach, weil der Entwickler die Fehlersuche<br />

auf demselben System erledigt.<br />

Cross-Entwicklung<br />

Bei eingebetteten Systemen funktioniert<br />

dieser Ansatz nur selten. Zum einen verfügen<br />

die Zielsysteme oft über andere<br />

Prozessoren, zum Beispiel ARM, während<br />

als Entwicklungsmaschinen üblicherweise<br />

PCs mit x86-Prozessor dienen,


die den Zielcode nativ nicht ausführen<br />

können. Zum anderen sind die zur Ausführung<br />

der Entwicklungsumgebung notwendigen<br />

Ressourcen nur unzureichend<br />

vorhanden oder fehlen ganz.<br />

Ein anderes Hemmnis: Ein modernes<br />

Tablet könnte eine komplexe Entwicklungsumgebung<br />

zwar technisch problemlos<br />

ausführen, doch die Bedienoberfläche<br />

würde das Entwickeln mit den üblichen<br />

Werkzeugen sehr erschweren. Bei tiefer<br />

eingebetteten Systemen wie der Steuerung<br />

einer Waschmaschine oder eines<br />

Fahrzeugsystems ist das Problem noch<br />

deutlicher ausgeprägt: Hier halten Speicher<br />

und CPU nicht mit, ganz zu schweigen<br />

von der unzureichenden Bedienschnittstelle.<br />

Diese Faktoren machen eine sehr deutliche<br />

Trennung von Entwicklungs- und<br />

Zielsystem notwendig. Die Programmierung<br />

erfolgt auf einem leistungsfähigen<br />

Entwicklungssystem (meist einem PC),<br />

die dabei erzeugte Software wird zur<br />

Ausführung auf das Zielsystem oder ein<br />

dazu kompatibles Entwicklungsboard<br />

übertragen. Letzteres ist in der Regel<br />

etwas leistungsfähiger als das offizielle<br />

Zielsystem und verfügt über zusätzliche<br />

Schnittstellen.<br />

Integrationsfragen<br />

Unterschiedliche Prozessorarchitekturen<br />

(etwa x86 und ARM) erfordern es, statt<br />

des systemeigenen Compilers und Linkers<br />

eine Cross-Toolchain (siehe Kasten<br />

„Cross-Toolchain“) zu verwenden. Sie<br />

erzeugt ausführbare Programme für die<br />

Zielplattform, die der Entwickler auf das<br />

Embedded-Gerät kopiert. Komplexere<br />

Mobilsysteme wie Tablets oder Smartphones<br />

bringen zudem Mechanismen<br />

mit, um Software in das System zu integrieren,<br />

etwa in Form von Apps.<br />

Schlichtere Systeme, zum Beispiel die<br />

Steuergeräte eines Fahrstuhls, laden keine<br />

Software nach. Hier muss der Entwickler<br />

ein wenig mehr Aufwand betreiben, indem<br />

er ein kompiliertes Abbild des Betriebssystems,<br />

das auf dem eingebetteten<br />

System läuft, mit der neu entwickelten<br />

Software zu einem bootfähigen Image<br />

kombiniert. Dieses Image wird dann<br />

wahlweise über ein bootfähiges Medium,<br />

über das Schreiben in den Flashspeicher<br />

oder über das Netzwerk auf dem Zielsystem<br />

ausgeführt.<br />

Im Vergleich zu herkömmlichen Systemen<br />

muss der Debugger hier nicht nur<br />

aufwändigere Entwicklungsmethoden<br />

anwenden, sondern auch mit der Trennung<br />

von Entwicklungs- und Zielsystem<br />

sowie der eingeschränkten Leistungsfähigkeit<br />

des Geräts leben.<br />

Debugging via Printf<br />

Bei der einfachsten Form der Fehlersuche<br />

baut der Programmierer Textausgaben in<br />

das Programm ein, die ihn über den aktuellen<br />

Zustand während der Ausführung<br />

Embedded Debugging 09/2013<br />

Know-how<br />

www.linux-magazin.de<br />

85


Know-how<br />

www.linux-magazin.de Embedded Debugging 09/2013<br />

86<br />

Abbildung 1: Remote Debugging lässt sich über die Kommandozeile oder ein IDE wie Eclipse bewerkstelligen.<br />

informieren. Die Technik heißt, in Anlehnung<br />

an den Funktionsaufruf in C, meist<br />

einfach nur Printf. Sie hat den Nachteil,<br />

dass der Entwickler das Programm anpassen<br />

und die zu beobachtenden Teile<br />

vor dem Übersetzen kennen muss. Dafür<br />

steht der schlichte Ansatz fast immer zur<br />

Verfügung.<br />

Die Ausgabe muss nicht über einen Bildschirm<br />

laufen, für den die Zielsysteme oft<br />

keine Schnittstelle mitbringen, sondern<br />

kann über einen Ethernet-Port oder eine<br />

serielle RS232-Verbindung erfolgen. Fehlt<br />

auch diese, etwa bei sehr einfachen Systemen,<br />

lässt sich eine LED einsetzen, die<br />

ein Muster blinkt, das den Programmfortschritt<br />

anzeigt.<br />

Gemeinsam ist diesen Ansätzen, dass sie<br />

keine explizite Kopplung des Zielsystems<br />

mit dem Entwicklungssystem voraussetzen,<br />

sondern dass der Entwickler seine<br />

Schlüsse aus den Ausgaben des Zielsystems<br />

zieht, die er dann auf dem Entwicklungssystem<br />

umsetzt.<br />

Remote Debugging<br />

Eine komfortablere Fehlersuche schließt<br />

einen Debugger wie GDB [1] ein. Mit<br />

dessen Hilfe unterbricht der Entwickler<br />

die Ausführung seines Programms an bestimmten<br />

Stellen, verfolgt sie Quelltextzeile<br />

für Quelltextzeile weiter, kontrolliert<br />

und manipuliert den Inhalt von Registern<br />

und Variablen.<br />

In der klassischen Software-Entwicklung<br />

finden sowohl die Analyse als auch die<br />

Ausführung des Programms auf dem Entwicklungssystem<br />

statt, das dem Zielsys-<br />

tem sehr stark ähnelt. Eine Entwicklungsumgebung<br />

(Abbildung 1) unterstützt den<br />

Programmierer und erleichtert die Analyse.<br />

Dies setzt voraus, dass die untersuchte<br />

Software auf demselben Rechner<br />

läuft wie der Debugger beziehungsweise<br />

die Entwicklungsumgebung.<br />

Weil dies bei eingebetteten Systemen oft<br />

nicht zutrifft, kommt Remote Debugging<br />

zum Einsatz. Dabei startet der Entwickler<br />

auf dem Zielsystem eine Helfer-Applikation,<br />

mit der sich der Debugger des<br />

Entwicklungssystems verbindet, zum<br />

Beispiel über Ethernet oder die serielle<br />

RS232-Schnittstelle.<br />

Im Falle von GDB führt der Zielrechner<br />

einen GDB-Server aus, bei dem sich der<br />

GDB-Client auf dem Entwicklungssystem<br />

anmeldet. Der Client leitet nun Anweisungen<br />

an die Serverinstanz auf dem<br />

Zielsystem weiter, um zum Beispiel das<br />

untersuchte Programm anzuhalten oder<br />

die Registerinhalte auszulesen. Zugleich<br />

steuert der Programmierer die Anwendung<br />

auf diesem Weg.<br />

Der Server setzt die Anweisungen um<br />

und schickt die Resultate an das Entwicklungssystem<br />

zurück. Dessen Debugger<br />

Cross-Toolchain<br />

Bei der Entwicklung für eingebettete Systeme,<br />

die zum Beispiel ARM-Prozessoren verwenden,<br />

kann der Entwickler die systemeigene Compiler-Toolchain<br />

(Assembler, Compiler, Linker<br />

und Debugger) des Entwicklungssystems nicht<br />

verwenden, um Quelltext in Binärcode für das<br />

Zielsystem zu übersetzen.<br />

Hier kommt eine Cross-Toolchain zum Einsatz,<br />

die auf dem Entwicklungssystem läuft, während<br />

übernimmt dann die rechenintensiven<br />

Aufgaben. Er gleicht Assembler-Instruktionen<br />

mit bestimmten Quelltextzeilen ab<br />

und ordnet Variablen richtig zu.<br />

Debugging über Kreuz<br />

Unterscheiden sich die Architekturen von<br />

Entwicklungs- und Zielsystem, versteht<br />

der Debugger des Entwicklungssystems<br />

weder die Assembler-Instruktionen des<br />

Gegenübers, noch kennt er dessen Register.<br />

Das verhindert ein direktes Auswerten<br />

von Variablen und Zuordnen von<br />

Instruktionen zum Quelltext.<br />

Dieses Problem löst ein so genannter<br />

Cross-Debugger, der Bestandteil der<br />

Cross-Toolchain ist. Er lässt sich ebenfalls<br />

auf dem Entwicklungssystem ausführen,<br />

versteht jedoch die Assembler-Instruktionen<br />

des jeweiligen Zielsystems. Das<br />

macht es unter anderem möglich, mit<br />

Hilfe von Remote Debugging ein ARM-<br />

Programm auf einem x86-System zu untersuchen<br />

(Abbildung 2).<br />

Im Falle von Android stellt Google beispielsweise<br />

Entwicklungsumgebungen<br />

für Smartphone- und Tablet-Entwickler<br />

bereit. Letztere können beim Remote Debugging<br />

kaum noch unterscheiden, ob<br />

die Anwendung auf dem Endgerät oder<br />

dem Rechner des Entwicklers läuft. Auf<br />

dem Entwicklungssystem arbeitet dabei<br />

ein Emulator.<br />

DIY: Remote Debugging<br />

Die eben vorgestellte Form des Remote<br />

Debugging setzt voraus, dass das Zielsystem<br />

mehrere Programme zugleich<br />

ausführen kann, also mindestens das<br />

zu untersuchende Programm und ein<br />

Hilfsprogramm wie den GDB-Server. Das<br />

funktioniert zum Beispiel problemlos,<br />

wenn auf dem Zielsystem ein Betriebssystem<br />

wie etwa <strong>Linux</strong> läuft.<br />

der von ihr erzeugte Binärcode nur auf dem<br />

Zielsystem funktioniert. Gleiches gilt für den<br />

Debugger in der Cross-Toolchain, der nur den<br />

Binärcode des Zielsystems versteht.<br />

Cross-Toolchains auf GCC-Basis lassen sich bei<br />

den meisten <strong>Linux</strong>-Distributionen für verschiedene<br />

Zielarchitekturen aus der Paketverwaltung<br />

heraus installieren oder durch entsprechende<br />

Skripte einfach selbst übersetzen.


Manchmal untersucht der Entwickler<br />

jedoch Programme, die ohne Betriebssystem<br />

funktionieren, oder er will Fehler<br />

im Betriebssystem selbst aufspüren. Die<br />

Programme im ersten Fall heißen Bare-<br />

Metal-Applikationen, da sie ohne Zwischenschicht<br />

direkt auf der Hardware<br />

laufen. Auch sie lassen sich mit einem<br />

gewissen Mehraufwand über Remote-<br />

Debugging-Techniken erforschen.<br />

Eine Variante besteht darin, spezielle Debug-Routinen<br />

in das zu untersuchende<br />

Programm einzuschleusen. So kann<br />

dieses selbst als Debug-Server arbeiten,<br />

mit dem sich der Debugger des Entwicklungssystems<br />

dann verbindet. Was GDB<br />

betrifft, stehen für einige Architekturen<br />

(mit Ausnahme von beispielsweise ARM)<br />

fertige Bibliotheken bereit, die nur ein<br />

geringfügiges Eingreifen des Programmierers<br />

erfordern. Sobald die Routinen<br />

in dem zu untersuchenden Programm<br />

stecken, kann sich der Debugger auf der<br />

Entwicklungsmaschine über eine serielle<br />

RS232-Verbindung mit dem Zielsystem<br />

verbinden.<br />

Diese Variante des Remote Debugging<br />

lässt sich auch für den <strong>Linux</strong>-Kernel einsetzen,<br />

der unter der Bezeichnung KGDB<br />

bereits Routinen mitbringt, die ihn in einen<br />

GDB-Server verwandeln. Aktiviert<br />

man die passenden KGDB-Optionen (zum<br />

Beispiel »CONFIG_KGDB=y« und »CON-<br />

FIG_KGDB_SERIAL_CONSOLE=y«), lässt<br />

er sich über eine serielle Verbindung wie<br />

jedes andere Bare-Metal-Programm untersuchen.<br />

Debugging via JTAG<br />

Sollte auch die Erweiterung des zu untersuchenden<br />

Programms nicht möglich<br />

oder zu aufwändig sein, lässt sich die<br />

Software im Embedded-Bereich auch mit<br />

Hilfe spezieller Debugging-Schnittstellen<br />

der Hardware genauer untersuchen. Als<br />

JTAG<br />

JTAG steht als Kürzel für Joint Test Action<br />

Group und ist die geläufige Bezeichnung für den<br />

IEEE-Standard 1149.1. Dieser implementierte ursprünglich<br />

lediglich einen Boundary-Scan-Test,<br />

mit dem es möglich ist, Zustände von Flipflops<br />

in einer kompletten Schaltung auszulesen. Obwohl<br />

der Standard in der Zwischenzeit wesentlich<br />

erweitert wurde, bleibt der Boundary-Scan-<br />

Test der wichtigste Bestand teil und der Begriff<br />

Abbildung 2: Um ARM-Programme auf einem<br />

herkömmlichen x86-System zu debuggen, hilft der<br />

Einsatz eines Cross-Debuggers.<br />

Standard hierfür hat sich inzwischen die<br />

JTAG-Schnittstelle etabliert (siehe Kasten<br />

„JTAG“).<br />

Diese ermöglicht es, den Prozessor des<br />

Zielsystems an den zur Laufzeit genutzten<br />

Steuerungsmöglichkeiten vorbei zu<br />

dirigieren. Der Entwickler kann ihn anhalten,<br />

die instruktionsweise Ausführung<br />

eines Programms erzwingen, aber<br />

auch die Register- und Speicherinhalte<br />

auslesen und manipulieren. Die JTAG-<br />

Kette akzeptiert sogar mehrere Geräte,<br />

wodurch sich auch Koprozessoren, zum<br />

Beispiel digitale Signalprozessoren, ansteuern<br />

lassen.<br />

Wer auf die JTAG-Schnittstelle zugreifen<br />

möchte, benötigt einen Adapter, den<br />

es für die ARM-Plattformen bereits ab<br />

zirka 25 Euro gibt und den man per USB-<br />

wird von manchen Entwicklern als Synonym für<br />

JTAG verwendet.<br />

Neben dem Auslesen von Flipflops lassen sich<br />

mit JTAG inzwischen auch eingebettete Schaltungen<br />

wie Microcontroller, System-on-Chips<br />

und Field Programmable Gate Arrays (FPGA)<br />

steuern und überwachen. Er basiert auf einem<br />

seriellen Protokoll, welches das entsprechende<br />

Gerät über einen Zustandsautomaten steuert.<br />

oder RS232-Schnittstelle mit dem Entwicklungsrechner<br />

verbindet. Die Nutzer<br />

der Schnittstelle gehen dann nach dem<br />

Schema des Remote-Debugging (Abbildung<br />

3) vor. Dabei stellt der JTAG-Debug-Server<br />

eine Brücke zwischen JTAG-<br />

Schnittstelle und Debugger auf dem Entwicklungssystem<br />

her.<br />

Für den Debugger erscheint die JTAG-<br />

Schnittstelle nun wie ein Remote-Server.<br />

Letzterer übersetzt die Kommandos des<br />

Debuggers (beispielsweise zum Anhalten<br />

der Software oder zum Auslesen von<br />

Registern) in den entsprechenden JTAG-<br />

Befehlsstrom und wandelt die über JTAG<br />

ausgelesenen Werte in ein für den Debugger<br />

verständliches Format. Das erfordert<br />

keine Anpassungen an dem zu untersuchenden<br />

Programm, da die Eingriffe nur<br />

Hardware-seitig stattfinden.<br />

JTAG erweist sich also als sehr bequeme<br />

Möglichkeit zum nicht-invasiven Debugging,<br />

wenn das Zielsystem die entsprechende<br />

Schnittstelle mitbringt. Das ist<br />

jedoch nur bei speziellen Entwicklungsboards<br />

der Fall, während den davon abgeleiteten<br />

Endprodukte diese Schnittstelle<br />

in der Regel aus Kostengründen fehlt. Bei<br />

anderen Geräten sind sie auf der Leiterplatte<br />

vorgesehen, aber nicht bestückt,<br />

sodass sich für Bastler und Hacker interessante<br />

Möglichkeiten [2] ergeben.<br />

Fehlersuche per Emulation<br />

Eine weitere einfache Möglichkeit, um<br />

Fehler in Programmen von eingebetteten<br />

Systemen aufzuspüren, besteht im<br />

Emulieren der Zielplattform. Die Granularität<br />

kann dabei höchst unterschiedlich<br />

sein und reicht von der Emulation<br />

eines API über die Systememulation bis<br />

hin zur vollständigen Simulation. Ein<br />

Anwendungsbeispiel wäre die erwähnte<br />

Entwicklungsumgebung von Google für<br />

Android.<br />

Eine universellere Form der Fehlersuche<br />

per Remote Debugging erlaubt die freie<br />

virtuelle Maschine Qemu. Sie emuliert<br />

komplette Systeme, führt also auch Bare-<br />

Metal-Programme ohne spezielle Anpassung<br />

aus. Sie stellt jedoch zusätzlich eine<br />

GDB-Server-Schnittstelle bereit, die eine<br />

ähnlich umfangreiche Steuerung erlaubt<br />

wie eine JTAG-Schnittstelle und dabei<br />

hilft, die Programmausführung zu manipulieren<br />

und zu untersuchen. Analog zu<br />

Embedded Debugging 09/2013<br />

Know-how<br />

www.linux-magazin.de<br />

87


Know-how<br />

www.linux-magazin.de Embedded Debugging 09/2013<br />

88<br />

Abbildung 3: Der JTAG-Debug-Server baut eine Brücke zwischen der JTAG-Schnittstelle und dem Debugger<br />

auf dem Entwicklungssystem. Anschließend folgt der Entwickler dem bekannten Remote-Debugging-Schema.<br />

JTAG kann der Entwickler die Software<br />

ab der ersten ausgeführten Instruktion<br />

beobachten, benötigt aber keine zusätzliche<br />

Hardware (Abbildung 4).<br />

Genauer gesagt benötigt er theoretisch<br />

nicht einmal Zugriff auf ein physisches<br />

Exemplar des Zielsystems. Da die Emulation<br />

jedoch nicht hundertprozentig so<br />

funktioniert wie die echte Hardware, lässt<br />

sich eine spätere Ausführung auf einem<br />

realen Gerät meist nicht umgehen. Dies<br />

ist insbesondere dann der Fall, wenn man<br />

das Zeitverhalten des Zielsystems untersuchen<br />

möchte.<br />

Eines für alle<br />

Die meisten ARM-basierten SoC-Systeme<br />

unterscheiden sich signifikant im Aufbau,<br />

da ARM keine festen Vorgaben in Sachen<br />

I/O-Geräte oder Speicherlayout macht.<br />

Die Geräte des System-on-Chip lassen<br />

sich etwa über verschiedene Speicheradressen<br />

ansprechen, RAM, ROM und<br />

Flashspeicher befinden sich an unterschiedlichen<br />

Adressen. Bei der Portierung<br />

liegen zwar meist Treiber für die Geräte<br />

vor, da sie häufig bereits von anderen<br />

SoCs bekannt sind, dennoch muss der<br />

Entwickler die Systemsoftware an die andere<br />

Speicherstruktur anpassen.<br />

Für ARM-Systeme weist Qemu beim Entwickeln<br />

von Systemsoftware noch weitere<br />

Vorteile auf, die das Portieren von <strong>Linux</strong><br />

auf neue ARM-Plattformen erleichtern.<br />

So lassen sich in Qemu mit geringem<br />

Programmieraufwand beliebige Speicherlayouts<br />

emulieren, sodass sich der<br />

Programmierer von einer bestehenden<br />

lauffähigen Plattform Schritt für Schritt<br />

zur neuen Plattform bewegen kann. Die<br />

Remote-Debugging-Technik hilft ihm<br />

dabei, die Veränderungen komfortabel<br />

zu verfolgen, was Portierungen massiv<br />

beschleunigt.<br />

Die Außenwelt<br />

Abseits der Suche nach logischen Fehlern<br />

im Programmablauf verstecken sich<br />

im Embedded-Bereich auch Fehler in der<br />

Ansteuerung externer Geräte, die häufig<br />

an Standardschnittstellen wie RS232, I 2 C<br />

oder SPI hängen. Um diese Signale zu<br />

untersuchen, lassen sich so genannte Logic<br />

Analyzer nutzen, welche die Signale<br />

aufzeichnen und die übertragenen Daten<br />

am Entwicklungsrechner anzeigen. Der<br />

Funktionsumfang und die Genauigkeit<br />

der Analyzer ist sehr unterschiedlich und<br />

hängt vom Preis ab. Günstige Geräte wie<br />

etwa den Bus Pirate [3] gibt es bereits für<br />

rund 25 Euro.<br />

Debuggen wie die Profis<br />

tungen erweitern, die das Überwachen<br />

und Beobachten vereinfachen.<br />

Fazit<br />

Obwohl es also auf den ersten Blick komplex<br />

erscheint, bietet das Debugging von<br />

eingebetteten Systemen insgesamt eine<br />

Vielzahl von Lösungsansätzen, zwischen<br />

denen der Entwickler, abhängig von Bedarf<br />

und Zielplattform, auswählt.<br />

Der im Gegensatz zu Standardsystemen<br />

erhöhte Aufwand, den die Trennung von<br />

Entwicklungs- und Zielsystem sowie die<br />

stark eingeschränkten Ressourcen eingebetteter<br />

Systeme verursachen, verbergen<br />

die hier vorgestellten Ansätze meist vor<br />

dem Entwickler. Der Arbeitsablauf unterscheidet<br />

sich bei einer entsprechend<br />

eingerichteten Entwicklungsumgebung<br />

kaum vom Üblichen. (kki) n<br />

Infos<br />

[1] GDB: [http://www.gnu.org/software/gdb/]<br />

[2] Security für ARM: [http://infocenter.arm.<br />

com/help/index.jsp?topic=/com.arm.doc.<br />

prd29-genc-009492c/index.html]<br />

[3] Wikipedia über den Bus-Piraten:<br />

[http://en.wikipedia.org/wiki/Bus_Pirate]<br />

Die Autoren<br />

Anselm Busse ist wissenschaftlicher Mitarbeiter<br />

und Doktorand am Fachgebiet Kommunikationsund<br />

Betriebssysteme an der Technischen Universität<br />

Berlin. Jan Richling ist dort Gastprofessor<br />

für Betriebssysteme und eingebettete Systeme.<br />

Ihr Forschungsschwerpunkt liegt unter anderem<br />

in der Steigerung der Energieeffizienz von Many-<br />

Core-Systemen.<br />

Qemu<br />

Ausführung<br />

Im Profibereich, besonders beim Systemon-Chip-Design,<br />

stehen dem Entwickler<br />

noch weitere Werkzeuge zur Seite. So<br />

zeichnen digitale Speicher-Oszilloskope<br />

den<br />

Zugriff auf externen<br />

Speicher sowie andere<br />

Signale mit einer sehr<br />

hohen Genauigkeit<br />

auf. Da die Entwickler<br />

zudem Zugriff auf exakte<br />

Beschreibungen<br />

ARMder<br />

Chips haben, lässt<br />

Binary<br />

*.c<br />

sich das Ausführen<br />

von Programmen vollständig<br />

im Rechner<br />

Cross-GDB<br />

simulieren. Daneben<br />

kann ein Entwickler<br />

den Chip im Prototyp-<br />

Stadium um Steuerlei-<br />

GDB-<br />

Interface<br />

ARM-<br />

Binary<br />

*.c<br />

Abbildung 4: Mit Qemu, das komplette Systeme emuliert, lassen sich auch<br />

ARM-Systeme ähnlich wie mit JTAG debuggen.


Insecurity Bulletin: Denial-of-Service-Attacken<br />

Kaputtgegangen<br />

Insecurity Bulletin 09/2013<br />

Know-how<br />

Wenn ein Angreifer es nicht schafft, den Rechner zu übernehmen oder Code auszuführen, kann er dennoch Schaden<br />

anrichten: Beim Denial of Service (DoS) fallen Dienste oder das ganze System aus. Mark Vogelsberger, Mathias Huber<br />

www.linux-magazin.de<br />

89<br />

Zahlreiche Softwarepakete sind in<br />

den letzten Wochen Opfer von Denialof-Service-Schwachstellen<br />

geworden.<br />

Was muss passieren, um ein Programm<br />

schachmatt zu setzen? Der Desktop-<br />

Nachrichtendienst Dbus beispielsweise<br />

erledigt seine Arbeit still im Hintergrund.<br />

Über ihn erfährt etwa der Dateimanager,<br />

wenn ein USB-Stick in den Rechner gesteckt<br />

wird.<br />

Die zugrunde liegende Bibliothek Libdbus<br />

weist in den Versionen 1.4.16 bis 1.4.26<br />

und 1.5.8 bis 1.6.12 eine Schwachstelle<br />

auf [1]. Die Bibliotheksfunktion »_dbus<br />

_printf_string_upper_bound()« verwendet<br />

eine »va_list«-Variable falsch. Auf der<br />

Plattform x86_64 kann daher ein lokaler<br />

Anwender den Dbus-Dienst zum Absturz<br />

bringen, wenn er die Funktion über eine<br />

Systemkomponente dazu bringt, genau<br />

1024 Byte zurückzugeben.<br />

Lach-Attacke<br />

Einfacher ist es, den REXML-Parser in<br />

Ruby zum Speicherfresser zu machen.<br />

Um sehr große String-Objekte zu allozieren,<br />

verwendet der Angreifer hier ein<br />

geschickt konstruiertes XML-Dokument.<br />

Es setzt auf eine Reihe von Entities (Abkürzungen),<br />

die jeweils zehnmal ihre<br />

Infos<br />

[1] Libdbus-Schwäche (CVE-2013-2168): [http://​<br />

www. securitytracker. com/ id/ 1028667]<br />

[2] Billion Laughs Attack: [http:// en. wikipedia.​<br />

org/ wiki/ Billion_laughs]<br />

[3] Monkey-Sicherheitslücke (CVE-2013-3724):<br />

[http:// www. securityfocus. com/ archive/ 1/​<br />

526791]<br />

[4] Realplayer-Sicherheitslücke: (CVE-2013-<br />

3299):<br />

[http:// seclists. org/ bugtraq/ 2013/ Jul/ 18]<br />

Vorgängerin enthalten. Nach<br />

zehn Durchgängen ist die ursprüngliche<br />

Zeichenkette eine<br />

Milliarde Mal länger geworden<br />

– ausreichend, um den Arbeitsspeicher<br />

zu erschöpfen.<br />

Da die Programmierer in ihrem<br />

Demo-Exploit die Lach-Silbe<br />

»lol« als Zeichenkette verwenden,<br />

nennt man diesen Angriff<br />

auch Billion Laughs Attack [2].<br />

Betroffen sind die Ruby-Versionen<br />

1.9.3 (Patchlevel 392) und<br />

2.0.0 (Patchlevel 0).<br />

Noch leichter und zudem aus<br />

der Ferne lässt sich Monkey, ein<br />

Webserver für Embedded <strong>Linux</strong>,<br />

aufs Kreuz legen. Er kann<br />

»GET«-Anfragen nicht verarbeiten,<br />

die ein Null-Byte enthalten.<br />

Sie lassen sich recht einfach mit<br />

einer Zeile Ruby oder Perl abschicken<br />

und verursachen eine Speicherverletzung.<br />

Betroffen ist Monkey 1.1.1. [3].<br />

K.o.-Schleife<br />

Realplayer, ein proprietärer Audio- und<br />

Videoplayer, der auch für <strong>Linux</strong> erhältlich<br />

ist, lässt sich durch HTML und Javascript<br />

zum Durchdrehen bringen. Kann jemand<br />

den Anwender veranlassen, eine Datei<br />

mit dem Inhalt von Listing 1 mit dem<br />

Player zu öffnen, verwendet dieser die<br />

Variable »buffer« aus dem enthaltenen<br />

Listing 1: Realplayer-Exploit<br />

01 <br />

02 <br />

03 <br />

04 {<br />

05 var buffer = '\x41'<br />

06 for(i=0; i


Programmieren<br />

www.linux-magazin.de Vala 09/2013<br />

92<br />

Vala, eine Programmiersprache für Gnome- und GTK+-Anwendungen<br />

Voilà Vala!<br />

Wer Programme mit GTK+ oder für Gnome schreibt, greift dabei meist zu C oder Python. Mit Vala gibt es jedoch<br />

eine interessante objektorientierte Alternative. Deren Zauber liegt in sprachlichen Anleihen bei C# und<br />

Java sowie in der Integration der Glib-Bibliothek. Tim Schürmann<br />

© Andriy Popov, 123RF.com<br />

den Vorteil, dass Vala-Programme ähnlich<br />

schnell wie C-Programme ablaufen und<br />

sich zudem auf allen Plattformen übersetzen<br />

lassen, auf denen C-Compiler und<br />

Glib-Bibliothek bereitstehen.<br />

Darüber hinaus kann der Programmierer<br />

in Vala alle vorhandenen C-Bibliotheken<br />

nutzen und umgekehrt in Vala<br />

geschriebenen Programmcode in anderen<br />

C-Programmen einsetzen. Bindungen<br />

existieren bereits zu zahlreichen Gnome-<br />

Bibliotheken, Benutzeroberflächen beispielsweise<br />

entstehen wie bei Shotwell<br />

und Geary häufig mittels GTK+.<br />

2006 begann der Informatikstudent Jürg<br />

Billeter eine neue Programmiersprache<br />

zu entwickeln. Als Ausgangspunkt<br />

wählte er die Gobject-Bibliothek. Diese<br />

soll es eigentlich C-Entwicklern ermöglichen,<br />

objektorientiert zu programmieren.<br />

Das GUI-Toolkit GTK+ und viele Gnome-<br />

Bibliotheken nutzen Gobject. Jürg Billeter<br />

verrührte die Konzepte von Gobject<br />

mit C# und Java und taufte das Ergebnis<br />

Vala [1]. Da Gobject ein Teil der Glib ist,<br />

bekommen Vala-Programmierer diese als<br />

Standardbibliothek gratis ins Haus. Auf<br />

01 // Dies ist ein Kommentar ...<br />

02 /* ... und dies auch */<br />

03 int main() {<br />

04 string hallo = "Hallo Welt!\n";<br />

05 print(hallo);<br />

06 return 0;<br />

07 }<br />

Listing 1: Hallo Welt!<br />

Wunsch kümmert sich Vala sogar um die<br />

Speicherverwaltung.<br />

Bindungswillig<br />

Die Entwicklung von Vala ist noch nicht<br />

vollständig abgeschlossen, zum Redaktionsschluss<br />

war Version 0.20.1 aktuell.<br />

Die Sprachsyntax ist jedoch recht stabil:<br />

Seit Mitte 2011 hat es nur kleinere<br />

Optimierungen, Fehlerkorrekturen im<br />

Compiler sowie Anbindungen an weitere<br />

Gnome-Bibliotheken [2] gegeben.<br />

Die Alltagstauglichkeit der Sprache beweisen<br />

zahlreiche in Vala geschriebene<br />

Anwendungen, darunter die Fotoverwaltung<br />

Shotwell (Abbildung 1, [3]) und der<br />

E-Mail-Client Geary [4].<br />

Vala-Programme übersetzt ein Compiler<br />

in C-Quellcode, den dann wiederum ein<br />

C-Compiler zu einer ausführbaren Binärdatei<br />

verarbeitet (Abbildung 2). Das hat<br />

Hallo Vala!<br />

Ein Hallo-Welt-Programm zeigt Listing 1.<br />

Bei seinem Start ruft Vala automatisch die<br />

»main()«-Funktion auf. In ihr legt das<br />

Listing die Variable »hallo« an, die eine<br />

Zeichenkette (»string«) speichert und den<br />

Text »Hallo Welt!\n« aufnimmt. Vala versteht<br />

die üblichen Escape-Zeichen, »\n«<br />

steht im Beispiel für einen Zeilenumbruch.<br />

Die Funktion »print()« bringt den<br />

Text in der Variablen »hallo« auf den Bildschirm.<br />

Abschließend gibt »return« eine<br />

»0« zurück, womit das Programm den<br />

fehlerfreien Ablauf bestätigt. Jede Anweisung<br />

schließt mit einem Semikolon ab.<br />

Typsache<br />

Von C# und Java geerbt hat Vala die<br />

Kontrollstrukturen (»if«, »while«, »for«),<br />

die Vergleichsoperatoren (wie »==«<br />

und »!=«) sowie die Datentypen (etwa<br />

»int« und »bool«). Wie in C besitzen die<br />

meisten Datentypen allerdings auf verschiedenen<br />

Plattformen unterschiedliche<br />

Größen. Für Integerwerte – und nur für<br />

sie – gibt es deshalb auch Datentypen


mit einer garantierten Größe. So repräsentiert<br />

»int32« immer eine 32-Bit-Zahl.<br />

Soll Vala den Typ einer Variablen selbst<br />

ermitteln (Typinferenz), deklariert man<br />

sie als »var«:<br />

ein Array vor, kann<br />

der Entwickler die besonders<br />

lesefreundliche<br />

»foreach«-Schleife<br />

nutzen. So gibt<br />

Vala 09/2013<br />

Programmieren<br />

var zahl = 1;<br />

Strings nutzen immer die UTF-8-Zeichenkodierung<br />

und sind unveränderbar. Der<br />

nützliche »in«-Operator ergibt einen wahren<br />

Ausdruck, wenn eine Zeichenkette in<br />

einer anderen enthalten ist:<br />

if ("rote" in "Das rote Auto") { [...]<br />

Um berechnete Werte in einen String einzusetzen,<br />

muss der Programmierer wie<br />

in Abbildung 3 nur die Variable hineinschreiben,<br />

ihr ein »$« voranstellen und<br />

vor dem String ein »@« notieren. Das<br />

»$« zeigt Vala an, dass es einen Ausdruck<br />

auswerten soll. In der Abbildung ersetzt<br />

es folglich nicht nur »$a« und »$b« durch<br />

die Variableninhalte, sondern rechnet<br />

auch »a+b« aus.<br />

Eckig geklammert<br />

Mittels eckiger Klammern und Positionsangaben<br />

greift der Programmierer auf<br />

Substrings zu, in Abbildung 3 enthält<br />

»ergebnis« damit die Zeichen »42«. Auf<br />

diese Weise lassen sich auch Arrays teilen,<br />

die man in Vala explizit mit »new«<br />

anlegen muss. In Listing 2 entsteht ein<br />

Array mit drei Elementen, Zeile 2 erstellt<br />

ein zweidimensionales Array mit drei mal<br />

vier Elementen, Zeile 5 weist dem Array<br />

»e« seine Werte direkt zu. Liegt in Vala<br />

foreach(string z in U<br />

zahlen) {print(z);}<br />

alle Elemente des Array<br />

»zahlen« aus:<br />

Mit Methode<br />

Funktionen heißen in Vala Methoden,<br />

es sind C-Funktionen. Sie können daher<br />

immer nur einen einzigen Wert zurückliefern.<br />

Ihre Argumente darf der Programmierer<br />

mit Standardwerten vorbelegen,<br />

zum Beispiel:<br />

int addiere(int x, int y = 1) { [...] }<br />

Abbildung 1: Alltagstauglich: Die Bilderverwaltungsoftware Shotwell ist in Vala programmiert.<br />

Abbildung 2: Der Vala-Compiler »valac« ruft automatisch den C-Compiler<br />

auf, der nicht nur das fertige Programm erstellt, sondern auch für die<br />

Warnmeldung verantwortlich ist.<br />

Hinter der Bezeichnung Delegates verbergen<br />

sich spezielle Methoden, die sich in<br />

Variablen speichern oder an andere Methoden<br />

übergeben lassen. Listing 3 zeigt<br />

dazu ein Beispiel: In Zeile 3 legt zunächst<br />

das Schlüsselwort »delegate« einen neuen<br />

Datentyp namens »RechneTyp« an. Dieser<br />

repräsentiert ab sofort eine Methode,<br />

die einen Integerwert entgegennimmt<br />

und auch einen solchen zurückliefert.<br />

Anschließend kann der Programmierer<br />

eine Variable dieses Typs anlegen (»RechneTyp<br />

a;«). In ihr lässt sich eine Funktion<br />

speichern, die exakt der Signatur von<br />

»RechneTyp« entspricht.<br />

In Listing 3 trifft das auf die Methode<br />

»addiere()« zu. Die in der Variablen gespeicherte<br />

Funktion (»a = addiere;«)<br />

lässt sich dann aufrufen: »a(5)«. Ebenfalls<br />

in diesem Listing zeigt die Funktion<br />

»machwas()« schließlich noch, wie man<br />

einer Methode eine Kollegin übergibt.<br />

Wer »addiere()« nur an einer einzigen<br />

Stelle benötigt, kann sogar auf ihren Namen<br />

verzichten und ihren Rumpf direkt<br />

einer Variablen zuweisen:<br />

RechneTyp a = (x) => {return x+x;};<br />

int b = a(3);<br />

Hier speichert die Variable »a« eine namenlose<br />

Methode, die ein Argument »x«<br />

besitzt und mit diesem »x+x« berechnet.<br />

Vala bezeichnet solche Funktionen als<br />

anonyme Methoden, andere Sprachen<br />

Listing 2: Arrays<br />

01 int[] c = new int[3];<br />

02 int[,] d = new int[3,4];<br />

03 c[1] = 99;<br />

04 d[1,3] = 88;<br />

05 int[] e = {1,2,3};<br />

Listing 3: Delegates<br />

01 int addiere(int x) { return x+x; }<br />

02 <br />

03 delegate int RechneTyp(int x);<br />

04 <br />

05 int machwas(RechneTyp r, int zahl) {<br />

06 return r(zahl); // Aufruf des Delegate<br />

07 }<br />

08 <br />

09 int main() {<br />

10 <br />

11 // Aufruf über Variable:<br />

12 RechneTyp a;<br />

13 a = addiere;<br />

14 int ergebnis = a(5);<br />

15 <br />

16 // Direkter Aufruf der Methode:<br />

17 int ergebnis2 = machwas(addiere, 2);<br />

18 <br />

19 return 0;<br />

20 }<br />

www.linux-magazin.de<br />

93


Programmieren<br />

www.linux-magazin.de Vala 09/2013<br />

94<br />

sprechen von einem Lambda-Ausdruck.<br />

In Vala haben anonyme Methoden sogar<br />

Zugriff auf die Variablen in ihrer direkten<br />

Umgebung, was einer Closure oder einem<br />

Funktionsabschluss entspricht:<br />

int c = 3;<br />

RechneTyp d = (x) => {return x+c;};<br />

int e = d(5); // e ist hier 8<br />

Methodenaufrufe darf der Vala-Programmierer<br />

an beliebig viele Bedingungen<br />

knüpfen (Contract Programming). Die<br />

Bedingungen für die Eingabewerte definiert<br />

»requires«, »ensures« legt jene für<br />

die Rückgabewerte fest, wobei »result«<br />

für den Rückgabewert steht:<br />

int addiere(int x, int y)<br />

requires(x > 0 && y < 10)<br />

ensures(result > 0)<br />

{<br />

return x+y;<br />

}<br />

Listing 4 erstellt eine neue Klasse namens<br />

»Auto«, die von der Gobject-Basisklasse<br />

»GLib.Object« erbt. »Auto« besitzt<br />

ein privates Attribut »farbe«, das sich mit<br />

der öffentliche Methode »lackieren()« ändern<br />

lässt. »this« bezeichnet das aktuelle<br />

Objekt, wie in anderen Sprachen auch.<br />

01 public class Auto : GLib.Object {<br />

02 private string farbe;<br />

03 <br />

04 // Konstruktor:<br />

05 public Auto(string f) {<br />

06 base();<br />

07 this.farbe = f;<br />

08 }<br />

09 <br />

10 // Methode:<br />

11 public void lackieren(string f) {<br />

12 this.farbe = f;<br />

13 }<br />

14 <br />

15 // Destruktor:<br />

16 ~Auto() {print("verschrottet");}<br />

17 }<br />

01 class Auto {<br />

Listing 4: Klassendefinition<br />

02 private string farbe = "rot";<br />

03 <br />

04 public string aussehen {<br />

05 get { return farbe; }<br />

06 set { farbe = value; }<br />

07 }<br />

08 }<br />

Listing 5: Properties<br />

09 <br />

Neben »public« und<br />

»private« kennt Vala<br />

zwei weitere Zugriffsmodifizierer:<br />

Während<br />

bei »private« der Zugriff<br />

nur der Klasse<br />

selbst gestattet ist,<br />

dürfen bei »protected«<br />

auch alle abgeleiteten<br />

Klassen auf das Attribut<br />

oder die Methode<br />

zugreifen. »internal«<br />

wiederum gestattet<br />

allen Klassen den Zugriff,<br />

die sich in derselben<br />

Quellcode-Datei<br />

befinden.<br />

Um eine Klasse außerhalb<br />

der aktuellen<br />

Quellcode-Datei nutzen<br />

zu können, muss der Programmierer<br />

sie wie in Listing 4 als »public« kennzeichnen.<br />

Standardmäßig sind Klassen<br />

nur »internal«. Ein neues »Auto« erstellt<br />

die folgende Zeile:<br />

Auto bmw = new Auto("blau");<br />

Dabei ruft Vala den Konstruktor auf, der<br />

den gleichen Namen trägt wie die Klasse.<br />

Den Konstruktor der Oberklasse aktiviert<br />

»base()«. Erlaubt ist auch ein Destruktor,<br />

den Vala aufruft, bevor es das Objekt<br />

zerstört. Destruktoren tragen den Namen<br />

der Klasse mit vorangestellter Tilde<br />

»~«. Sie sind besonders dann nützlich,<br />

wenn man selbst die Speicherverwaltung<br />

übernimmt, C-Bibliotheken nutzt oder<br />

die Klasse Ressourcen verwalten lässt.<br />

Genau wie bei Java darf auch in Vala die<br />

»main()«-Funktion Teil einer Klasse sein<br />

(Abbildung 4).<br />

Eigenschaften<br />

Private Attribute manipuliert der Entwickler<br />

in der Regel über passende<br />

»get()«- und »set()«-Methoden. Die damit<br />

10 int main() {<br />

11 <br />

12 Auto ferrari = new Auto();<br />

13 ferrari.aussehen = "blau";<br />

14 print(ferrari.aussehen);<br />

15 <br />

16 return 0;}<br />

Abbildung 3: Über den »+=«-Operator lassen sich an Strings weitere Zeichen<br />

anhängen (wie hier der Zeilenumbruch).<br />

einhergehende Tipparbeit reduzieren so<br />

genannte Properties. Listing 5 erstellt<br />

eine Property mit dem Namen »aussehen«,<br />

sie lässt sich wie ein öffentliches<br />

Attribut nutzen. Zeile 13 legt in ihr etwa<br />

den String »blau« ab. Vala ruft dabei im<br />

Hintergrund automatisch die »set()«-Methode<br />

der Property auf, die im Beispiel<br />

den Wert im privaten Attribut »farbe«<br />

speichert. »value« ist ein Schlüsselwort<br />

und steht für den übergebenen Wert. Wer<br />

in »get()« und »set()« nur Werte setzt<br />

beziehungsweise liest, kann sich die Variable<br />

»farbe« sogar sparen:<br />

public string aussehen { get; set;U<br />

default = "rot";}<br />

Sofern eine Klasse von »GLib.Object« erbt,<br />

darf man sie auch wie in Listing 6 definieren.<br />

Den abschließenden »construct«-<br />

Block führt Vala immer aus, wenn sie ein<br />

Objekt der Klasse erzeugt. Im Konstruktor<br />

weist »Object(farbe: f);« dem Attribut<br />

»farbe« den Wert aus dem übergebenen<br />

Parameter »f« zu. Mehrere Zuweisungen<br />

trennt ein Komma: »Object(farbe: f, geschwindigkeit:<br />

kmh);«. Diese Notation<br />

funktioniert jedoch nur, wenn »f« und<br />

»kmh« Properties sind.<br />

Wink mit dem Zaunpfahl<br />

»GLib.Object« bringt zudem Signalbehandlung<br />

ins Spiel: Löst ein Objekt ein<br />

Signal aus, ruft Vala automatisch alle<br />

Methoden auf, die sich für das Signal<br />

interessieren. C#-Programmierer kennen


Abbildung 4: Wie bei Java darf die »main()«-Funktion auch Teil einer Klasse<br />

sein, sofern sie dort als »static« markiert ist.<br />

dieses Konzept als Events, Java-Programmierer<br />

nutzen Event-Listener. In Listing<br />

7 definiert die Klasse »Auto« zunächst<br />

mit dem Schlüsselwort »signal« ein neues<br />

Signal namens »anlassen«. Dieses wiederum<br />

ist nichts anderes als eine Methode<br />

ohne Rumpf.<br />

Sobald er ein Objekt der Klasse angelegt<br />

hat, kann der Programmierer mit »connect()«<br />

eine oder mehrere Methoden<br />

für das Signal registrieren. Das Listing<br />

meldet einfach nur eine anonyme Methode<br />

an. Es genügt dann der Aufruf von<br />

»anlassen()«, um das Signal auszulösen<br />

und so die anonyme Methode zu wecken.<br />

»anlassen()« verlangt dabei nach<br />

einem String, den Vala wiederum an alle<br />

registrierten Methoden weiterleitet. Im<br />

Beispiel nimmt die anonyme Methode<br />

diesen String als »a« entgegen. Zusätzlich<br />

bekommen alle registrierten Methoden<br />

immer auch das Objekt übergeben, das<br />

das Signal gesendet hat.<br />

Schreibblockade<br />

In Vala lassen sich Methoden nicht überschreiben,<br />

Entwickler dürfen folglich<br />

keine Methoden mit gleichen Namen und<br />

unterschiedlichen Parametern definieren.<br />

Bei den Konstruktoren helfen benannte<br />

Konstruktoren aus. Dabei hängt man einfach<br />

wie in Listing 8 einen Punkt mit<br />

einem Namen an.<br />

Abgeleitete Klassen dürfen die Methoden<br />

der Oberklasse sehr wohl überschreiben,<br />

im Listing zeigt dies der »Ferrari«. Der<br />

Code in der letzten Zeile ruft dann jedoch<br />

»starten()« von »Auto« auf. Das lässt sich<br />

verhindern, indem der Entwickler wie in<br />

Listing 9 die Methode<br />

der Oberklasse zu einer<br />

virtuellen macht<br />

und in der Subklasse<br />

der Methode ein<br />

»override« voranstellt.<br />

Soll die Methode in<br />

der Subklasse eine andere<br />

Signatur besitzen,<br />

stellt er ihr ein »new«<br />

voran – wie im Listing<br />

beim »BMW«.<br />

Wie C# und Java kennt<br />

Vala Interfaces. Sie geben<br />

Attribute und Methoden<br />

vor, die eine<br />

Klasse implementieren<br />

muss. Ein Beispiel zeigt Listing 10: Das<br />

»abstract« vor »starten()« weist darauf<br />

hin, dass eine Klasse die Implementierung<br />

übernimmt.<br />

Im Gegensatz zu anderen Sprachen dürfen<br />

Interfaces aber auch eine bestimmte<br />

Implementierung vorgeben (Stichwort:<br />

Mixin). Während Klassen immer nur<br />

von einer Oberklasse erben, dürfen sie<br />

beliebig viele Interfaces implementieren.<br />

Interfaces wiederum dürfen nicht von anderen<br />

Interfaces erben, wohl aber mehrere<br />

Kolleginnen und eine andere Klasse<br />

als Voraussetzung nennen. Im Beispiel<br />

gibt »Auto« die Klasse »GLib.Object« vor,<br />

von der »Ferrari« zwingend erben muss.<br />

Wechselbalg<br />

Eine Garage soll sowohl einen Ferrari als<br />

auch einen BMW aufnehmen können.<br />

Genau dafür bieten sich Generics an: Der<br />

Entwickler legt eine Klasse »Garage« an,<br />

lässt aber wie in Listing 11 den Typ der<br />

zu speichernden Daten zunächst offen.<br />

»A« dient dort als Platzhalter für einen<br />

beliebigen Datentyp. Beim Erstellen eines<br />

konkreten »Garage«-Objekts gibt er dann<br />

den jeweils gewünschten an:<br />

Garage gf = new Garage();<br />

Die neue Garage »gf« speichert damit<br />

Objekte vom Typ »Ferrari« und ist vom<br />

Typ »Garage«. Generics eignen<br />

sich vor allem für Listen und Mengen.<br />

Vala bietet in der Gee-Bibliothek ein paar<br />

häufig benötigte Datenstrukturen an, darunter<br />

etwa mit »Map« ein assoziatives<br />

Array beziehungsweise Dictionary<br />

[5]. Gee ist allerdings eine separate Bibliothek,<br />

Nutzer des fertigen Programms<br />

müssen sie folglich auf ihrem System<br />

nachinstallieren. Da sie die meisten Distributionen<br />

vorhalten, genügt ein Griff<br />

zum Paketmanager, das entsprechende<br />

Paket heißt meist »libgee«.<br />

Namenstag<br />

Mit Namespaces darf man zusammengehörenden<br />

Codeteilen einen Namen geben.<br />

Der Zugriff auf seine Klassen und<br />

Funktionen erfolgt dann über die Punktnotation:<br />

namespace Autos {<br />

class BMW { [...] }<br />

class VW { [...] }<br />

}<br />

[...]<br />

Autos.BMW meinauto = Autos.BMW();<br />

Auch die einzelnen Vala-Bibliotheken<br />

nutzen ausgiebig Namespaces. So besit-<br />

Listing 6: Alternative<br />

Klassendefinition<br />

01 public class Auto : GLib.Object {<br />

02 <br />

03 public string farbe { get; set; }<br />

04 <br />

05 public Auto(string f) {<br />

06 Object(farbe: f);<br />

07 }<br />

08 <br />

09 ~Auto() {print("verschrottet");}<br />

10 <br />

11 public void lackieren(string f) {<br />

12 this.farbe = f;<br />

13 }<br />

14 <br />

15 construct {<br />

16 print("Willkommen");<br />

17 }<br />

18 }<br />

Listing 7: Signalbehandlung<br />

01 class Auto : GLib.Object {<br />

02 public signal void anlassen(string a);<br />

03 }<br />

04 <br />

05 [...]<br />

06 <br />

07 // Signal‐Handler registrieren:<br />

08 Auto vw = new Auto();<br />

09 vw.anlassen.connect( (sender, a) => {print(a);} );<br />

10 <br />

11 vw.anlassen("Brumm"); // Signal auslösen<br />

Vala 09/2013<br />

Programmieren<br />

www.linux-magazin.de<br />

95


Programmieren<br />

www.linux-magazin.de Vala 09/2013<br />

96<br />

zen alle Klassen aus der GTK-Bibliothek<br />

das Präfix »Gtk«, ein Fenster heißt folglich<br />

»Gtk.Window«. Wer die Schreibarbeit<br />

umgehen möchte, importiert mit »using«<br />

einen Namespace und lässt ihn in den<br />

folgenden Zeilen weg:<br />

using Autos;<br />

BMW meinauto = BMW();<br />

Standardmäßig importiert Vala den<br />

Name space »GLib«. Damit stehen alle<br />

Objekte und Methoden der Glib-Bibliothek<br />

direkt bereit. Dazu gehört übrigens<br />

auch die Methode »print()«, die man eigentlich<br />

korrekt mit »GLib.print();« aufrufen<br />

müsste.<br />

Zeig her!<br />

01 // Virtuelle Methoden:<br />

Wenn der Entwickler ein Objekt anlegt,<br />

liefert Vala nur eine Referenz darauf zurück.<br />

Bei einer Zuweisung »b = a;« liegt<br />

01 public class Auto : GLib.Object {<br />

02 private string farbe;<br />

03 <br />

02 public class Auto : GLib.Object {<br />

03 public virtual void starten()<br />

{print("tucker");}<br />

04 }<br />

05 <br />

06 public class Ferrari : Auto {<br />

07 public override void starten()<br />

{print("brumm");}<br />

08 }<br />

01 public interface Auto : GLib.Object {<br />

02 public abstract void starten();<br />

03 }<br />

04 <br />

Listing 8: Überschreiben<br />

04 public Auto() {farbe = "rot";}<br />

05 public Auto.faerben(string f) {farbe<br />

= f;}<br />

06 <br />

07 public void starten()<br />

{print("tucker");}<br />

08 }<br />

09 <br />

Listing 9: Virtuelle Methoden<br />

Listing 10: Interfaces<br />

05 public class Ferrari : GLib.Object, Auto {<br />

06 public void starten() {<br />

print("brumm\n"); }<br />

Die Referenzimplementierung des Vala-<br />

Compilers steht unter der LGPL 2.1 und<br />

ist in den Repositories der meisten großen<br />

Distributionen enthalten. Bei der<br />

Installation sollten Interessenten darauf<br />

achten, möglichst die neueste Fassung<br />

zu nutzen. Wer bei der Frische auf Numin<br />

»b« eine weitere Referenz auf das gleiche<br />

Objekt. Mit dem Schlüsselwort »owned«<br />

lässt sich der Besitzer wechseln:<br />

Foo foo = (owned) bar;<br />

Nach dieser Anweisung hat »bar« den<br />

Wert »null«, während »foo« auf das Objekt<br />

zeigt, das in »bar« war. Des Weiteren<br />

führt Vala im Hintergrund automatisch<br />

Buch darüber, wie viele Referenzen auf<br />

ein Objekt zeigen. Sobald es keine Referenzen<br />

mehr gibt, fliegt das entsprechende<br />

Objekt aus dem Speicher (Referenzzählung).<br />

Wenn sich allerdings zwei Objekte gegenseitig<br />

nutzen, sonst aber keine weiteren<br />

Referenzen auf die beiden existieren, sind<br />

sie zwar überflüssig, ihre Zähler stehen<br />

aber dennoch nicht auf Null. Folglich<br />

bleiben die beiden Objekte für immer im<br />

Speicher. Sieht ein Programmierer solch<br />

eine Situation kommen, sollte er Vala<br />

10 public class Ferrari : Auto {<br />

11 public void starten() {print("brumm");}<br />

12 }<br />

13 <br />

14 [...]<br />

15 <br />

16 Auto bmw = new Auto.faerben("blau");<br />

17 <br />

18 Ferrari f = new Ferrari();<br />

19 Auto a = f;<br />

20 a.starten();<br />

09 <br />

10 public class BMW : Auto {<br />

11 public new void starten(string ton)<br />

{print(ton);}<br />

12 }<br />

13 <br />

14 [...]<br />

15 <br />

16 BMW b = new BMW();<br />

17 b.starten("brumm");<br />

07 }<br />

08 <br />

09 [...]<br />

10 <br />

11 Ferrari f = new Ferrari();<br />

12 Auto meins = f;<br />

13 meins.starten();<br />

mit dem Schlüsselwort »weak« darauf<br />

hinweisen:<br />

class Seite {<br />

public weak Seite vorherige;<br />

public Seite naechste;<br />

}<br />

Wer das Speichermanagement vollkommen<br />

selbst übernehmen möchte, kann<br />

die aus C bekannten Zeiger mit der Pfeilund<br />

Sternchennotation nutzen:<br />

Auto* bmw = new Auto();<br />

bmw‐>starte();<br />

delete bmw;<br />

Neben den vorgestellten Sprachelementen<br />

kennt Vala zahlreiche weitere. So<br />

gibt es unter anderem Annotationen,<br />

abstrakte Klassen sowie die aus C++<br />

bekannten »struct« und »enum«. Zur<br />

Laufzeit lässt sich der Typ eines Objekts<br />

prüfen, während Assertions die Einhaltung<br />

vorgegebener Bedingungen sicherstellen.<br />

Vala selbst bietet jedoch keine<br />

Unterstützung für nebenläufige Verarbeitung,<br />

Threads lassen sich nur mit Hilfe<br />

der Glib-Bibliothek und deren Klasse<br />

»Thread« erstellen.<br />

Übersetzungsdienst<br />

Infos<br />

[1] Vala: [https:// wiki. gnome. org/ Vala]<br />

[2] Vala Release-Notes:<br />

[https:// wiki. gnome. org/ Vala/ Release]<br />

[3] Shotwell:<br />

[http:// www. yorba. org/ projects/ shotwell/]<br />

[4] Geary:<br />

[http:// www. yorba. org/ projects/ geary/]<br />

[5] Libgee: [https:// wiki. gnome. org/ Libgee]<br />

[6] Vala-Tutorial:<br />

[https:// wiki. gnome. org/ Vala/ Tutorial]<br />

[7] „Vala for C# Programmers“:<br />

[https:// wiki. gnome. org/ Vala/​<br />

ValaForCSharpProgrammers]<br />

[8] „Vala for Java Programmers“:<br />

[https:// wiki. gnome. org/ Vala/​<br />

ValaForJavaProgrammers]


mer sicher gehen möchte, schnappt sich<br />

das Quellcode-Archiv aus dem Vala-Wiki<br />

[1]. Für die Übersetzung benötigt er den<br />

C-Compiler, »make«, »flex«, »bison« sowie<br />

die Entwicklerpakete für Glib 2.0<br />

und Gobject 2.0 (unter Ubuntu im Paket<br />

»libglib2.0‐dev«). Die Übersetzung erfolgt<br />

dann mit dem bekannten Dreisprung<br />

»./configure; make; sudo make install«.<br />

Ein »sudo ldconfig« richtet die Bibliothek<br />

»libvala« ein.<br />

Vala-Quellcode liegt gewöhnlich in einer<br />

Textdatei mit der Endung ».vala«. Diese<br />

bekommt der Vala-Compiler mit »valac<br />

hallowelt.vala« vorgesetzt, der daraus<br />

ein Programm erzeugt – im Beispiel namens<br />

»hallowelt«. Wer am produzierten<br />

C-Code interessiert ist, lässt diesen mit<br />

»‐c« erzeugen:<br />

valac ‐c hallowelt.vala<br />

Vala-Bibliotheken, etwa »libgee.so«, sind<br />

immer auch C-Bibliotheken. Um sie<br />

nutzen zu können, benötigt der Vala-<br />

Compiler ein paar Zusatzinformationen<br />

in einer so genannten VAPI-Datei. Sie<br />

verrät, welche Funktionen die C-Bibliothek<br />

bereitstellt. Für die meisten Gnome-<br />

Bibliotheken haben die Vala-Entwickler<br />

bereits passende VAPI-Dateien erzeugt.<br />

Ausführliche Informationen hierzu liefert<br />

das Vala-Wiki [1].<br />

Die Dokumentation ist Valas größte Baustelle.<br />

Als einzige offizielle Quelle ist das<br />

Wiki noch lückenhaft, unvollständig und<br />

teilweise veraltet. Einsteigern sei dennoch<br />

das (lange) Tutorial empfohlen [6].<br />

Für Umsteiger von C# und Java stehen<br />

gesonderte Hinweise bereit ([7], [8]).<br />

Status quo<br />

Vala selbst versucht C# und Java mit<br />

Gobject zu verheiraten. Dabei gelten allerdings<br />

viele kleine Ausnahmen, die der<br />

Programmierer im Hinterkopf behalten<br />

muss. Darüber hinaus besitzt Vala keine<br />

richtige Garbage Collection, sondern nur<br />

eine einfache Referenzzählung. Wer verhindern<br />

will, dass der Speicher überläuft,<br />

muss folglich die Referenzen genau im<br />

Auge behalten.<br />

Häufig führen in Vala gleich mehrere<br />

Wege zum Ziel, etwa bei der Definition<br />

von Klassen. In der Praxis stiftet das<br />

besonders dann Verwirrung, wenn man<br />

Code von verschiedenen Entwicklern lesen<br />

muss. Unter dem Strich bietet sich<br />

Vala vor allem für Umsteiger von C# oder<br />

Java an, die möglichst flott ablaufende<br />

Programme für GTK+ oder Gnome produzieren<br />

möchten, aber die Arbeit mit C<br />

scheuen. (mhu) <br />

n<br />

Listing 11: Generics<br />

01 public class Garage : GLib.Object {<br />

02 private A wagen;<br />

03 <br />

04 public void parke(A auto) {<br />

05 this.wagen = auto;<br />

06 }<br />

07 }<br />

Vala 09/2013<br />

Programmieren<br />

www.linux-magazin.de<br />

97


Programmieren<br />

www.linux-magazin.de HTML-5-DRM 09/2013<br />

98<br />

HTML 5 zwischen Verschlüsselung und DRM<br />

Schlüssel fürs Web<br />

Im Rahmen von HTML 5 erhalten Webbrowser die Fähigkeit, Inhalte zu verschlüsseln. Das Sicherheitsfeature<br />

hat sich nun zum Politikum entwickelt, denn die Anbieter von digitalen Inhalten möchten es für Digital Rights<br />

Management (DRM) verwenden. Hier ein freier Blick auf die Technik. Andreas Möller, Mathias Huber<br />

© feverpitched, 123RF.com<br />

Die modernen Webtechnologien, die<br />

HTML 5 zusammenfasst, stehen eigentlich<br />

für Offenheit. Sie ermöglichen Webanwendungen<br />

in HTML, Javascript und<br />

CSS, die ohne proprietäre Fremdkörper<br />

wie Adobe Flash oder Microsoft Silverlight<br />

auskommen. Doch ausgerechnet<br />

aus der HTML-5-Ecke sehen die Verfechter<br />

des offenen Web nun eine neue Gefahr<br />

heraufziehen.<br />

Im Zuge der Verschlüsselungsfunktionen<br />

in HTML 5 möchten Anbieter, zum<br />

Beispiel der Online-Filmverleih Netflix<br />

oder die britische Rundfunkanstalt BBC,<br />

Digital Rights Management (DRM) für<br />

digitale Inhalte umsetzen. Netflix bezeichnet<br />

den Kopierschutz als „HTML 5<br />

Premium Video Extensions“ [1] und die<br />

BBC sieht es als gerechtfertigt an, ihre<br />

Sendungen nur den britischen Gebührenzahlern<br />

zugänglich zu machen [2].<br />

Der passende Vorschlag beim Standardisierungsgremium<br />

W3C heißt Encrypted<br />

Media Extensions (EME) und befindet<br />

sich im Entwurfsstadium [3].<br />

Technisch fußt das geplante DRM auf<br />

der künftigen Fähigkeit von Webbrowsern,<br />

Anwendungsdaten mit Hilfe von<br />

Javascript zu ver- und entschlüsseln. Die<br />

Programmierschnittstelle dafür ist im<br />

Web Cryptography API [4] spezifiziert,<br />

das ebenfalls als Entwurf beim W3C liegt.<br />

Ergänzend zur Transportsicherung per<br />

HTTPS lassen sich damit Anwendungsdaten<br />

verschlüsseln, etwa vor dem Speichern<br />

in der Cloud oder vor ihrer Übertragung<br />

mittels Websockets oder Web RTC.<br />

Polyfills<br />

Die Implementierung des Web Cryptography<br />

API im Chrome-Browser [5] sowie<br />

im Mozilla Firefox [6] hat bereits<br />

begonnen. Bis die Browser die volle<br />

Unterstützung mitbringen, dienen so genannte<br />

Polyfills dazu, einzelne Features<br />

nachzurüsten. Bei diesen – nach einer<br />

beliebten britischen Spachtelmasse benannten<br />

– Browser-Ausbesserungen handelt<br />

es sich um Javascript-Bibliotheken,<br />

die ein Webbrowser bei Bedarf aus dem<br />

WWW lädt.<br />

Dazu zählt auch Polycrypt [7], das zwar<br />

einen älteren Entwurf des Web Cryptography<br />

API implementiert, sich aber gut<br />

zu Demonstrationzwecken eignet. Seine<br />

Lizenz ist unklar, es steht aber im Web<br />

zur kostenlosen Verwendung bereit. Der<br />

Entwickler bindet Polycrypt wie jede andere<br />

Javascript-Datei in ein HTML-Dokument<br />

ein. Damit das Polyfill funktioniert,<br />

muss er das HTML-Dokument über einen<br />

Webserver laden. Abbildung 1 zeigt<br />

Polycrypt im Einsatz auf der Javascript-<br />

Konsole des Browsers.<br />

Eine weitere Implementierung ist Webcrypto<br />

von Netflix [8]. Im Unterschied<br />

zu Polycrypt ist es aber keine Javascript-<br />

Bibliothek, sondern ein nativ kompiliertes<br />

Browser-Plugin für Google Chrome.<br />

Symmetrische<br />

Verschlüsselung<br />

Zum Schutz von Anwendungsdaten in<br />

einer Cloud ist das symmetrische Verschlüsselungsverfahren<br />

AES [9] geeignet.<br />

Listing 1 zeigt seine Verwendung<br />

zusammen mit dem Web Cryptography<br />

API. Zeile 1 speichert einen (im Listing<br />

gekürzten) Schlüssel zum Ver- und Entschlüsseln<br />

von Anwendungsdaten in der<br />

Variablen »encRawKey« als hexadezimale<br />

Zahlenfolge ab. Die Variable »encAlg« in<br />

den Zeilen 2 bis 9 speichert ein Konfigurationsobjekt.<br />

Dieses wählt im Feld »name« den AES-<br />

Algorithmus im Betriebsmodus GCM mit<br />

dem Initialisierungsvektor aus »iv« und


der Benutzerkennung aus » additional-<br />

Data« für die Verschlüsselung per »encrypt()«<br />

(Zeile 13) und die Entschlüsselung<br />

mit »decrypt()« (Zeile 15).<br />

Die Werte für den Initialisierungsvektor<br />

und die Benutzerkennung muss der Programmierer<br />

als Bytefolge angeben. Die<br />

Konvertierung übernimmt die Funktion<br />

»hex2bin()«. Innerhalb der Encrypt-Funktion<br />

importiert Zeile 11 mit »polycrypt.<br />

importKey()« den Schlüssel aus Zeile 1.<br />

Die Formatangabe »raw« im Aufruf erfordert<br />

es, den Schlüssel in eine Bytefolge<br />

umzuwandeln.<br />

Die Funktion »importKey()« führt der<br />

Browser genauso wie die API-Methoden<br />

Encrypt, Decrypt, Generatekey, Sign oder<br />

Verify asynchron aus. Im Erfolgsfall ruft<br />

er für alle Methoden die angegebene<br />

Rückruffunktion zum Ereignis »oncomplete«<br />

auf. Die Zeilen 11 bis 20 zeigen<br />

diese Rückruffunktion. Sie verwendet<br />

den importierten Schlüssel in der Variablen<br />

»key« im Encrypt-Aufruf (Zeile 13)<br />

zum Verschlüsseln.<br />

Im Aufruf von Decrypt (Zeile 15) dient er<br />

zum Entschlüsseln der Nachricht aus der<br />

Variablen »text« (Zeile 10). Die ver- und<br />

die entschlüsselte Nachricht konvertiert<br />

»bin2str()« vor der Ausgabe auf die Konsole<br />

in eine lesbare Zeichenkette (Zeilen<br />

16, 17). Abbildung 1 zeigt das symmetrische<br />

Verschlüsseln im Einsatz.<br />

Zum Schutz von Anwendungsdaten beim<br />

Übertragen mittels Websockets oder Web<br />

Abbildung 1: Die Konsole im Browser Chrome wertet mit Polycrypt den Aufruf »encrypt("abc")« aus.<br />

RTC eignet sich das asymmetrische Verschlüsselungsverfahren<br />

RSA [10]. Im<br />

Gegensatz zu einem symmetrischen Verfahren<br />

verwendet RSA ein Schlüsselpaar.<br />

Die beiden Kommunikationspartner verwenden<br />

den jeweils fremden öffentlichen<br />

Schlüssel zum Verschlüsseln und ihren<br />

eigenen privaten Schlüssel zum Entschlüsseln<br />

einer Nachricht.<br />

Unterschreiben<br />

Daneben eignet sich RSA dazu, Nachrichten<br />

mit einer Signatur zu unterschreiben,<br />

mit der sich die Echtheit überprüfen<br />

lässt. Listing 2 zeigt die Kombination<br />

von RSA und Web Cryptography API zum<br />

Signieren einer Nachricht. Das Konfigurationsobjekt<br />

in den Zeilen 1 bis 7 macht<br />

Angaben für das Erzeugen eines Schlüsselpaars<br />

im Aufruf von »generateKey()«<br />

(Zeile 14): Das Feld »name« wählt eine<br />

Variante des RSA-Algorithmus, »modulusLength«<br />

das zu verwendende Modul<br />

und »publicExponent« den öffentlichen<br />

Exponenten. Die Zeilen 8 bis 11 speichern<br />

ein Konfigurationsobjekt zur Parametrisierung<br />

der Aufrufe der Methoden<br />

»sign()« (Zeile 16) und »verify()« (Zeile<br />

18). Der Parameter »hash« bestimmt den<br />

Algorithmus SHA-1, der die Prüfsumme<br />

über die Nachricht »text« bildet.<br />

Die Rückruffunktion zum Aufruf von<br />

»generateKey()« und zum Ereignis »oncomplete«<br />

(Zeilen 14 bis 22), verwendet<br />

in Zeile 16 den privaten Schlüssel aus der<br />

HTML-5-DRM 09/2013<br />

Programmieren<br />

www.linux-magazin.de<br />

99


Programmieren<br />

www.linux-magazin.de HTML-5-DRM 09/2013<br />

100<br />

Komponente »privateKey«, um die Signatur<br />

zu bilden. In Zeile 18 benutzt sie den<br />

öffentlichen Schlüssel aus »publicKey«<br />

zum Verifizieren der Signatur. Zeile 19<br />

gibt das Ergebnis der Verifikation auf der<br />

Javascript-Konsole aus.<br />

Mit solchen kryptographischen Funktionen<br />

lässt sich eine Anwendung schreiben,<br />

die beispielsweise das Abspielen<br />

einer verschlüsselten Videodatei nur einem<br />

bestimmten Browser in einer einzigen<br />

Sitzung erlaubt. Das heißt, Anbieter<br />

wie Netflix oder BBC können über diese<br />

HTML-5-Erweiterung effektiv Digital<br />

Rights Management (DRM) betreiben.<br />

Widerstand<br />

Das trifft auf den Widerstand der Electronic<br />

Frontier Foundation (EFF). Die USamerikanische<br />

Organisation für digitale<br />

Bürgerrechte bekämpft seit Jahren DRM.<br />

Im Mai 2013 reichte die EFF daher förmlichen<br />

Einspruch gegen die Statuten der<br />

HTML-Arbeitsgruppe beim W3C ein: Die<br />

Encrypted Media Extensions widersprechen<br />

nach Meinung der Foundation der<br />

Vision des W3C von einem offenen Web<br />

01 var encRawKey = "4ea1...b2bf";<br />

02 var encAlg = {<br />

03 name : "AES‐GCM",<br />

04 params : {<br />

05 iv : hex2bin("534aea17"),<br />

06 additionalData: hex2bin("534aea17"),<br />

07 tagLength: 128<br />

08 }<br />

09 };<br />

10 function encrypt(text) {<br />

Listing 1: Verschlüsselung von Anwendungsdaten<br />

11 polycrypt.importKey("raw",<br />

hex2bin(encRawKey)).oncomplete = function(e) {<br />

12 var key = e.target.result;<br />

01 var sigKeyAlg = {<br />

02 name: "RSASSA‐PKCS1‐v1_5",<br />

03 params: {<br />

04 modulusLength: 512,<br />

Listing 2: Signieren einer Nachricht<br />

05 publicExponent: new Uint8Array([0x01, 0x00,<br />

0x01])<br />

06 }<br />

07 };<br />

08 var sigAlg = {<br />

09 name: "RSASSA‐PKCS1‐v1_5",<br />

10 params: { hash: "SHA‐1" }<br />

11 };<br />

12 function signature(text) {<br />

13 var arr = str2bin(text);<br />

und schlössen bestimmte Browser und<br />

Plattformen vom WWW aus. Die EME<br />

behinderten die Interoperabilität sowie<br />

die Partizipation aller am Web.<br />

Gegen das Hollyweb<br />

13 polycrypt.encrypt(encAlg, key,<br />

str2bin(text)).oncomplete = function(e) {<br />

14 var cipher = e.target.result;<br />

15 polycrypt.decrypt(encAlg, key, cipher).<br />

oncomplete = function(e) {<br />

16 console.log("encrypted: "<br />

+bin2str(cipher));<br />

17 console.log("decrypted: "<br />

+bin2str(e.target.result));<br />

18 };<br />

19 };<br />

20 };<br />

21 }<br />

14 polycrypt.generateKey(sigKeyAlg).oncomplete =<br />

function(e) {<br />

15 var key = e.target.result;<br />

16 polycrypt.sign(sigAlg, key.privateKey,<br />

arr).oncomplete = function(e) {<br />

17 var sign= e.target.result;<br />

18 polycrypt.verify(sigAlg, key.publicKey,<br />

sign, arr).oncomplete = function(e) {<br />

19 console.log("verifyed?: "+e.target.<br />

result);<br />

20 };<br />

21 };<br />

22 };<br />

23 };<br />

ELIMINATE<br />

DRM<br />

DefectiveByDesign.org<br />

Abbildung 2: Die Free Software Foundation<br />

bekämpft Digital Rights Management mit ihrer<br />

Kampagne „Defective by Design“.<br />

Dieser Kritik schließt sich die Free Software<br />

Foundation (FSF) an, die seit jeher<br />

von „Digital Restrictions Management“<br />

spricht und es bekämpft (Abbildung 2).<br />

Für die aktuelle Bedrohung haben die Aktivisten<br />

den Begriff „Hollyweb“ geprägt<br />

und meinen damit ein Internet, das sich<br />

an den Vorstellungen der Filmkonzerne<br />

aus Hollywood orientiert [11]. Am 3. Mai<br />

2013 feierten sie mit internationalen Partnern<br />

einen Tag gegen DRM und überreichten<br />

dem W3C eine Protestnote mit<br />

Zehntausenden Unterschriften.<br />

Förmlichen Einspruch gegen EME hat<br />

auch der Software-Entwickler Andreas<br />

Kuckartz eingelegt [12]. Der Deutsche<br />

ist seit zwei Jahren Invited Expert in der<br />

HTML-Arbeitsgruppe des W3C. Er sieht<br />

bei EME Probleme mit den Lizenzen von<br />

Open-Source-Software: „Seit GPLv3 sind<br />

DRM und freie Software nicht mehr vereinbar.“<br />

Seiner Meinung nach besteht<br />

für das W3C keine Verpflichtung, den<br />

Wünschen der Unterhaltungsindustrie<br />

nach Digital Rights Management nachzukommen.<br />

Der Standardisierungsprozess<br />

werde noch einige Stadien durchlaufen,<br />

erklärt er und hält den Ausgang<br />

für unklar. „Falls das W3C DRM aus den<br />

Standards rauslässt, könnten die Interessenten<br />

auch einen Alleingang machen“,<br />

prognostiziert er vorsichtig. n<br />

Infos<br />

[1] „HTML5 Video at Netflix“:<br />

[http:// techblog. netflix. com/ 2013/ 04/​<br />

html5‐video‐at‐netflix. html]<br />

[2] Unterstützung der BBC für DRM:<br />

[http:// lists. w3. org/ Archives/ Public/​<br />

public‐html‐admin/ 2013Feb/ 0153. html]<br />

[3] Encrypted Media Extensions (EME):<br />

[https:// dvcs. w3. org/ hg/ html‐media/​<br />

raw‐file/ tip/ encrypted‐media/​<br />

encrypted‐media. html]<br />

[4] Web Cryptography API:<br />

[https:// dvcs. w3. org/ hg/ webcrypto‐api/​<br />

raw‐file/ tip/ spec/ Overview. html]<br />

[5] Implementierung in Chrome:<br />

[http:// www. chromestatus. com/ features]<br />

[6] Crypto-API bei Mozilla:<br />

[https:// wiki. mozilla. org/ Privacy/​<br />

Features/ DOMCryptAPISpec/ Latest]<br />

[7] Polycrypt: [http:// polycrypt. net]<br />

[8] Netflix Webcrypto:<br />

[https:// github. com/ Netflix/ NfWebCrypto]<br />

[9] AES: [https:// de. wikipedia. org/ wiki/​<br />

Advanced_Encryption_Standard]<br />

[10] RSA: [http:// de. wikipedia. org/ wiki/​<br />

RSA‐Kryptosystem]<br />

[11] Förmlicher Einspruch der EFF:<br />

[https:// www. eff. org/ pages/ drm/​<br />

w3c‐formal‐objection‐html‐wg]<br />

[12] Förmlicher Einspruch von Andreas Kuckartz:<br />

[http:// lists. w3. org/ Archives/ Public/​<br />

public‐html‐admin/ 2013May/ 0138. html]


MEDIALINX<br />

IT-ACADEMY<br />

IT-Onlinetrainings<br />

Mit Experten lernen.<br />

powered by<br />

n Lernen Sie, wo und wann Sie möchten.<br />

n Sparen Sie Zeit und Kosten.<br />

n Bleiben Sie trotz zeitlicher Engpässe<br />

up-to-date.<br />

LPIC-1 / LPIC-2 Trainings<br />

LPIC-1 (LPI 101 + 102)<br />

mit Ingo Wichmann,<br />

<strong>Linux</strong>hotel<br />

499 €<br />

LPIC-2 (LPI 201 + 202)<br />

mit Marco Göbel,<br />

Com Computertraining GmbH<br />

499 €<br />

– die offiziellen Trainings<br />

mit Marco Welter,<br />

Zarafa Deutschland GmbH<br />

Zarafa Administrator<br />

249 €<br />

Zarafa Engineer<br />

249 €<br />

Effiziente BASH-Skripte<br />

mit Klaus Knopper,<br />

Gründer der Knoppix-Distribution,<br />

knopper.net<br />

199 €<br />

Einfache IMAP-Server mit Dovecot<br />

mit Peer Heinlein,<br />

Heinlein Support GmbH<br />

249 €<br />

Python für Systemadministratoren<br />

mit Rainer Grimm,<br />

science + computing AG<br />

199 €<br />

www.medialinx-academy.de


Programmieren<br />

www.linux-magazin.de Perl-Snapshot 09/2013<br />

102<br />

Splunk filtert verschiedene Logdaten<br />

Meldungen wie Heu<br />

Die Kunst, in einer überbordenden Menge an Logdaten die wirklich relevanten zu finden, scheint Splunk bestens<br />

zu beherrschen. Auch Perlmeister Schilli wirft seine Systemmeldungen dem proprietären Analysewerkzeug<br />

vor, bringt der kostenfreien Variante aber einige Enterprise-Features bei. Michael Schilli<br />

funktionen kombinieren, sodass selbst<br />

Splunk-Neulinge ihre Abfragen nach kurzer<br />

Einarbeitungszeit ähnlich wie echte<br />

Programmierer durch neue Filter erweitern.<br />

Wenn sie eine Weile die Sedimente<br />

im Informationsfluss gewaschen haben,<br />

kommen die handlichen Informations-<br />

Goldklumpen zutage. Vorsicht: Bereits<br />

die kostenlose Basisversion birgt alle Gefahren<br />

eines kapitalen Goldrausches.<br />

Strukturiert importiert<br />

© srapulsar38, 123RF<br />

Um Logdaten gewaltigen Ausmaßes und<br />

noch dazu aus sehr unterschiedlichen<br />

Quel len zu analysieren, bedarf es eines<br />

entsprechend mächtigen Werkzeugs. Es<br />

soll Textmeldungen von Web- und Applikationsservern<br />

sowie von Netzwerkroutern<br />

und anderen Systemen zusammenführen,<br />

indizieren und schnelle Suchabfragen<br />

zulassen.<br />

Das kommerzielle Splunk ([2], [3]) hat<br />

sein Können auf diesem Gebiet selbst in<br />

den Rechenzentren großer Internetfirmen<br />

bewiesen, steht aber in der Basisversion<br />

auch kostenlos für den Hausgebrauch auf<br />

gängigen <strong>Linux</strong>-Plattformen bereit. Nach<br />

der Installation startet »splunk start« den<br />

Daemon sowie das Webinterface, in dem<br />

Online PLUS<br />

In einem Screencast demonstriert<br />

Michael Schilli das Beispiel: [http://​<br />

www.linux-magazin.de/​plus/​2013/09]<br />

der User das System konfigurieren und<br />

Suchabfragen loslassen darf wie auf einer<br />

Internetsuchmaschine (Abbildung 1).<br />

Gold im Fluss<br />

Das Verfahren stellt dem Admin alle verteilt<br />

geloggten Daten zentral und indiziert<br />

bereit. Mit der mächtigen Suchsyntax gelingen<br />

nicht nur Volltextsuchen über den<br />

Datenbestand, sondern auch fundierte<br />

statistische Analysen à la „Welche sind<br />

die zehn häufigsten URLs, die alle meine<br />

Webserver zusammen in den letzten zwei<br />

Stunden ausgeliefert haben?“.<br />

Außerdem dämpft Splunk die Geschwätzigkeit<br />

solcher Logs, bei denen interessante<br />

Nachrichten unterzugehen drohen.<br />

Der Benutzer definiert nach und nach<br />

Ereignistypen, an denen er nicht interessiert<br />

ist, und Splunk blendet sie aus<br />

dem Ergebnis aus. Ereignistypen lassen<br />

sich wiederum in übergeordneten Such-<br />

Die Zeilen einer Logdatei interpretiert<br />

Splunk als Events und jede der Meldungen<br />

besteht aus Feldern (Fields). Steht im<br />

Accesslog eines Webservers zum Beispiel<br />

»GET /index.html«, dann setzt Splunk<br />

das Feld »method« auf »GET« und das<br />

Feld »uri« auf »/index.html« (siehe Abbildung<br />

2).<br />

Es versteht von Haus aus eine Reihe von<br />

Formaten wie Syslog, die Errorlogs von<br />

Webservern oder Json, sodass der User<br />

zum strukturierten Import dieser Daten<br />

keinen Finger rühren muss. Zum Importieren<br />

lokaler Logdateien konfiguriert er<br />

im Menü »Add data« nur ein Verzeichnis<br />

wie »/var/log« (Abbildung 3), woraufhin<br />

sich der Splunk-Indexer alle darunterliegenden<br />

Dateien einverleibt. Ändern<br />

sich diese dynamisch, schnappt sich der<br />

Splunk-Daemon auch die neuen Einträge,<br />

Suchabfragen berücksichtigen ab sofort<br />

die neuen Informationen.<br />

Andere Formate importiert der User,<br />

indem er Splunk zum Beispiel mittels<br />

regulärer Ausdrücke anweist die Felder<br />

aus den Events zu extrahieren. Zu den<br />

im Logeintrag existierenden Feldern fügt<br />

Splunk interne Hinweise hinzu. So definieren<br />

die Felder »source« die Datei,<br />

aus der die Information stammt (falls sie


Perl-Snapshot 09/2013<br />

Programmieren<br />

www.linux-magazin.de<br />

103<br />

Abbildung 1: Mit einem Suchkommando präsentiert Splunk die verzeichneten<br />

Fehler aus allen dynamisch importierten Logdateien.<br />

Abbildung 2: Die Zeilen im Accesslog eines Webservers nimmt Splunk an ihren<br />

Feldgrenzen auseinander.<br />

denn aus einer Datei kommt), und »host«<br />

den Server, der das Event erzeugt, also<br />

den Logeintrag angelegt hat.<br />

Bei mehr als 500 MByte nur<br />

gegen Dollar<br />

In der kostenlosen Version verdaut der<br />

Splunk-Indexer bis zu 500 MByte Rohdaten<br />

pro Tag; wer mehr einfüttert, verstößt<br />

gegen die Lizenzbedingungen, und das<br />

funktioniert höchstens drei Tage im Monat.<br />

Wer’s dennoch riskiert, dem dreht<br />

Splunk die Suchfunktion ab und zwingt<br />

ihn so zum Erwerb einer Enterprise-<br />

Version. Deren Preis ist beachtlich hoch,<br />

insbesondere große Datenmengen reißen<br />

auch große Löcher ins Budget. Im Silicon<br />

Valley ist zu hören, dass Splunk trotzdem<br />

viele Großfirmen als Kunden habe, da der<br />

Nutzen, Nadeln in einem absurd großen<br />

Heuhaufen effizient zu finden, für sie<br />

sehr wertvoll sei.<br />

Stetig verfeinert<br />

Für diesen Snapshot habe ich Splunk zu<br />

Hause auf meinem Ubuntu-Rechner installiert.<br />

Abbildung 1 zeigt, wie ich die<br />

Log daten von »/var/log« und per »rsync«<br />

kopierte Apache-Accesslogs mei nes Hostingproviders<br />

durchsuche. Ohne jeden<br />

Protest verspeist Splunk bei mir auch<br />

rotierte und gezipte Logs.<br />

Als erste Suchabfrage gebe ich »fail* OR<br />

error« ein. Die Volltextsuche springt auf<br />

Meldungen an, die den Begriff »error«<br />

enthalten. (Splunk unterscheidet bei<br />

den Suchstrings Groß- und Kleinschreibung<br />

nicht, erwartet Schlüsselwörter wie<br />

»OR« aber versal.) Der reguläre Ausdruck<br />

»fail*« passt auf alle Begriffe, die mit<br />

„fail“ beginnen, also auch „failed“. Ohne<br />

Schlüsselwörter verbindet Splunk die<br />

Strings mit einem logischen Und, »foo<br />

bar« findet also Logeinträge, die sowohl<br />

„foo“ also auch „bar“ enthalten.<br />

Die Treffer in Abbildung 1 kommen aus<br />

dem Zeitrahmen, der rechts oben mit<br />

»last 7 days« eingestellt ist, sie stammen<br />

allesamt aus dem extrem geschwätzigen<br />

Nagios-Debuglog »nagios.debug«. Um sie<br />

auszufiltern, definiert der Dialog in Abbildung<br />

4 den Eventtyp »nagios‐chatter«<br />

mit der Suchfunktion »source=.../nagios.<br />

debug« (zu sehen im verdunkelten Hintergrund).<br />

Dann verbindet Splunk intern<br />

Abbildung 3: Der einigermaßen intuitiv gestaltete Dialog »Add new« fügt hier<br />

alle Logdateien unter »/var/log« zum Splunk-Index hinzu.<br />

Abbildung 4: Alle Zeilen aus der Logdatei »nagios.debug« (nachzulesen im abgedunkelten<br />

Bereich) bekommen den Eventtyp »nagios‐chatter« zugeordnet.


Programmieren<br />

www.linux-magazin.de Perl-Snapshot 09/2013<br />

104<br />

alle Einträge, die ursprünglich aus der<br />

Datei »nagios.debug« stammen, mit dem<br />

Eventtyp. Hängt einer Suchabfrage der<br />

Ausdruck »NOT eventtype=nagios‐chatter«<br />

an, filtert die Eventsuche das Nagios-<br />

Geplapper aus.<br />

Als Nächstes fallen mir die Logevents aus<br />

einem nächtlich laufenden Backupprozess<br />

auf. Das dabei eingesetzte »rsync«-<br />

Kommando kann offenbar einige Dateien<br />

mangels hinreichender Zugriffsrechte<br />

nicht kopieren, was jede Nacht die Logdatei<br />

»backup.all.log« vollschreibt. Ein<br />

Eventtyp namens »rsync‐chatter« soll sie<br />

ausfiltern.<br />

Um die Suchbefehle kurz zu halten, definiere<br />

ich den Eventtyp »chatter«, der mit<br />

aus »/var/log/messages«, die von fehlgeschlagenen<br />

Passworteingaben berichten<br />

und manueller Analyse bedürfen.<br />

Mit Hadoop skalieren<br />

Klar, es wäre im Einzelfall einfacher, statt<br />

des Datenwusts in »/var/log« gleich die<br />

richtige Datei »/var/log/auth.log« zu lesen.<br />

Der große Vorteil von Splunk aber ist<br />

gerade, dass es alle (!) Logfiles und sogar<br />

die ganzer Serverfarmen speichert und<br />

Suchabfragen darauf zulässt. Damit dies<br />

auch in großen Rechenzentren klappt,<br />

nutzt Splunk im Backend einen Hadoop-<br />

Cluster ([4], [5]), der die aufwändige<br />

Berechnung der Suchergebnisse auf mehrere<br />

Knoten verteilt.<br />

eventtype="nagios‐chatter" OR<br />

eventtype="rsync‐error"<br />

beide Filter kombiniert, sodass Suchanfragen<br />

nur »NOT eventtype=chatter« anhängen<br />

müssen, um mit Hilfe weiterer,<br />

beliebig erweiterbarer Filter Loggeplapper<br />

auszublenden. Übrig bleiben bloß<br />

die in Abbildung 5 gezeigten Meldungen<br />

Abbildung 5: Ohne »nagios‐chatter« und »backup‐rsync‐error« bleiben nur die wichtigen Events übrig.<br />

Listing 1: »daily‐incidents«<br />

01 #!/usr/local/bin/perl ‐w<br />

02 use strict;<br />

03 use XML::Simple;<br />

04 use LWP::UserAgent;<br />

05 use JSON qw( from_json );<br />

06 use Text::ASCIITable;<br />

07 use Net::SMTP;<br />

08 use Email::MIME;<br />

09 use File::Basename;<br />

10<br />

11 my $host = "127.0.0.1";<br />

12 my $port = 8089;<br />

13 my $login_path =<br />

14 "servicesNS/admin/search/auth/login";<br />

15 my $user = "admin";<br />

16 my $password = "changeme";<br />

17 my $from_email = 'm@perlmeister.com';<br />

18 my $to_email = $from_email;<br />

19 my $subject = 'Daily Incidents';<br />

20 my $smtp_server = 'smtp.provider.net';<br />

21<br />

22 my $ua = LWP::UserAgent‐>new( ssl_opts =><br />

23 { verify_hostname => 0 } );<br />

24<br />

25 my $resp = $ua‐>post(<br />

26 "https://$host:$port/$login_path",<br />

27 { username => $user,<br />

28 password => $password } );<br />

29<br />

30 if( $resp‐>is_error() ) {<br />

31 die "Login failed: ", $resp‐>message();<br />

32 }<br />

33<br />

34 my $data = XMLin( $resp‐>content() );<br />

35 my $key = $data‐>{ sessionKey };<br />

36<br />

37 my $header = HTTP::Headers‐>new(<br />

38 Authorization => "Splunk $key" );<br />

39 $ua‐>default_headers( $header );<br />

40<br />

41 $resp = $ua‐>post(<br />

42 "https://$host:$port/servicesNS" .<br />

43 "/admin/search/search/jobs/export",<br />

44 { search => "search fail* OR error " .<br />

45 "NOT eventtype=chatter earliest=‐24h",<br />

46 output_mode => "json",<br />

47 },<br />

48 );<br />

49<br />

50 my $t = Text::ASCIITable‐>new( {<br />

51 headingText => $subject } );<br />

52 $t‐>setCols( "date", "source", "log" );<br />

53 $t‐>setColWidth( "date", 10 );<br />

54 $t‐>setColWidth( "log", 34 );<br />

55<br />

56 for my $line ( split /\n/,<br />

57 $resp‐>content() ) {<br />

58 my $data = from_json( $line );<br />

59 next if !exists $data‐>{ result };<br />

60 my $r = $data‐>{ result };<br />

61 $t‐>addRow( $r‐>{ _time },<br />

62 basename( $r‐>{ source } ),<br />

63 $r‐>{ _raw } );<br />

64 }<br />

65<br />

66 my $smtp = Net::SMTP‐>new( $smtp_server );<br />

67<br />

68 my $email = Email::MIME‐>create(<br />

69 header_str => [<br />

70 From => $from_email,<br />

71 To => $to_email,<br />

72 Subject => $subject,<br />

73 ],<br />

74 parts => [<br />

75 Email::MIME‐>create(<br />

76 attributes => {<br />

77 content_type => "text/html",<br />

78 disposition => "inline",<br />

79 charset => "UTF‐8",<br />

80 encoding => "quoted‐printable",<br />

81 },<br />

82 body_str =><br />

83 "$t",<br />

84 )<br />

85 ],<br />

86 );<br />

87<br />

88 $smtp‐>mail( $from_email );<br />

89 $smtp‐>to( $to_email );<br />

90 $smtp‐>data();<br />

91 $smtp‐>datasend( $email‐>as_string );<br />

92 $smtp‐>dataend();<br />

93 $smtp‐>quit();


Die Weboberfläche lässt Endbenutzer<br />

ohne Programmierabsichten grafisch Felder<br />

auswählen und einschränkende Filter<br />

definieren. Splunk legt alle User eingaben<br />

in Konfigurationsdateien im Splunk-Installationsverzeichnis<br />

unter »etc« dauerhaft<br />

ab (Abbildung 6). Wer seine Definitionen<br />

stetig weiterentwickelt, tut gut<br />

daran, diese Dateien mit einem Source-<br />

Control-System wie Git hin und wieder<br />

zu sichern, damit er sie nach geistigen<br />

Aussetzern zurückrollen kann.<br />

Splunk-Alarm für Arme<br />

Anders als die Enterprise-Version bietet<br />

die kostenlose Splunk-Variante keine<br />

Alarme, die den User benachrichtigen,<br />

falls Suchabfragen eingestellte Grenzwerte<br />

überschreiten. Sparfüchsen hält<br />

das Skript in Listing 1 den Pelz trocken,<br />

das auf demselben Rechner läuft und<br />

Splunks Web-API periodisch anzapft. Die<br />

per Json zurückgelieferten Ergebnisse<br />

verschickt es per E-Mail. So darf Splunk<br />

auch auf dem heimischen Rechner hinter<br />

einer Firewall laufen, während ein Cronjob<br />

periodisch Abfragen abfeuert und die<br />

Ergebnisse ins Internet schickt.<br />

Zunächst muss sich das Skript gegenüber<br />

dem Splunk-REST-API identifizieren. In<br />

einer frischen Installation sind fürs Web-<br />

GUI »admin« (Kennung) und »changeme«<br />

(Passwort) voreingestellt. Das Skript führt<br />

den Login per HTTPS-Request aus. Zeile<br />

11 definiert den »localhost« mit 127.0.0.1,<br />

Zeile 12 den Port des Splunk-Servers mit<br />

8089. Die in Zeile 25 abgesetzte Methode<br />

»post()« schickt die Logindaten<br />

per SSL an Splunk.<br />

Da dem Useragent<br />

LWP::UserAgent keine<br />

Browserzertifikate beiliegen,<br />

setzt Zeile 22<br />

die Option »verify_<br />

hostname« auf 0, was<br />

die Zertifikatprüfung<br />

unterbindet.<br />

Das Ergebnis des Login liefert Splunk als<br />

XML zurück, das die Funktion »XMLin()«<br />

aus dem CPAN-Modul XML::Simple im<br />

Skript in eine Datenstruktur umwandelt.<br />

In ihr liegt nach einer erfolgreichen Anmeldung<br />

ein Schlüssel namens »sessionKey«.<br />

Der enthält eine hexadezimale<br />

Zahl, die jeder folgenden REST-Anfrage<br />

beiliegen muss, damit Splunk sie als einem<br />

angemeldeten User zugehörig erkennt.<br />

Die Useragent-Methode »default_<br />

headers()« erledigt dies für alle folgenden<br />

Anfragen automatisch.<br />

Das Tutorial unter [6] beschreibt die<br />

Details des REST-API. Während dem<br />

Abbildung 6: Splunk speichert auf der Weboberfläche angelegte Definitionen<br />

in lesbaren Konfigurationsdateien ab.<br />

Perl-Snapshot 09/2013<br />

Programmieren<br />

www.linux-magazin.de<br />

105<br />

Alles zum ThemA Android<br />

Die Monatszeitschrift für Android-Fans, Smartphone- und Tablet-Nutzer<br />

DigisuB: nur 39,90 € im Jahr (12 PDFs)<br />

Jetzt bestellen unter:<br />

www.android–user.de/digisub<br />

Telefon 07131 / 2707 274 • Fax 07131 / 2707 78 601 • E-Mail: abo@android-user.de<br />

+<br />

Lesen Sie News und<br />

Artikel schon 1 Woche<br />

vor dem Kiosk-Termin!


Programmieren<br />

www.linux-magazin.de Perl-Snapshot 09/2013<br />

106<br />

Splunk-SDK Client-Libraries für Python,<br />

Java, Javascript, PHP, Ruby und C# beiliegen,<br />

fehlt ihm ein Perl-Kit. Auf dem<br />

CPAN lagert zwar ein Modul, es arbeitet<br />

jedoch nicht mit der Splunk-Version 5 zusammen.<br />

REST-Abfragen sind zum Glück<br />

einfach zu programmieren, deshalb setzt<br />

Listing 1 auf dieser Schicht auf.<br />

Suchen mit Fernbedienung<br />

Die »post()«-Methode in Zeile 41 setzt<br />

eine Suche beim Splunk-Server ab. Im<br />

Gegensatz zum Web-GUI leitet »search«<br />

hier das Kommando an den Server ein.<br />

Neben dem schon erläuterten Filter »NOT<br />

eventtype=chatter« definiert es die Einschränkung<br />

»earliest=‐24h«, fragt also<br />

nur nach Events der letzten 24 Stunden.<br />

Das Ergebnis möge Splunk dem Parameter<br />

»output_mode« gemäß im Json-<br />

Format liefern. Wer ellenlange E-Mails<br />

vermeiden will, sollte die Zahl der Treffer<br />

mit »limit=« auf 50 begrenzen.<br />

Die Funktion »from_json()« aus dem<br />

CPAN-Modul JSON wandelt in Zeile 58<br />

die Ergebnisse zeilenweise in Perl-Datenstrukturen<br />

um. Für die auszusendende<br />

Mail sind drei Felder zentral: Der Zeitstempel<br />

des Logeintrags mit dem Schlüssel<br />

»_time«, die Logdatei unter »source«<br />

und die ursprüngliche Logzeile in »_raw«.<br />

Das CPAN-Modul Net::SMTP schickt die<br />

Mail mit dem Suchergebnis an den unter<br />

»$to_email« eingetragenen Empfänger.<br />

Den SMTP-Server »$smtp_server« hat<br />

Zeile 20 vorher gesetzt.<br />

Für Dinosaurier und Hipster<br />

Aufwändige HTML-Nachrichten verärgern<br />

alte Zausel wie mich, die einen<br />

Abbildung 7: Textbasierte Formatierung für einen ehrwürdigen Mailer wie Alpine.<br />

textbasierten E-Mail-Reader wie Pine verwenden.<br />

Umgekehrt ist für jung-dynamische<br />

Outlook- und Thunderbird-Klicker<br />

eine Plaintext-E-Mail alte Schule.<br />

Um zwischen beiden Welten zu vermitteln,<br />

formatiert Listing 1 das tabellenartige<br />

Ergebnis der Suchanfrage mit Hilfe<br />

des CPAN-Moduls Text::ASCIITable als<br />

Ascii-Text. Damit die Zeitstempel-Spalte<br />

nicht ausufert, sondern umbrochen wird,<br />

begrenzt Zeile 53 ihre Breite auf maximal<br />

zehn Zeichen. Ähnliches gilt für die<br />

Spalte mit dem gefundenen Logeintrag,<br />

die bei einer Zeilenlänge von 34 umbricht,<br />

damit die Nachrichten auf Mobiltelefonen<br />

gut lesbar bleiben.<br />

Moderne Mailmänner und ‐frauen bevorzugen<br />

dagegen HTML, und um sie zu befriedigen,<br />

ruft Zeile 68 das CPAN-Modul<br />

Email::MIME zu Hilfe. Es verpackt den<br />

vorhandenen Ascii-Text als Inline-HTML,<br />

umrankt von einfachen »pre«-Tags. So<br />

sieht das Ergebnis sowohl unter Pine<br />

(Abbildung 7) als auch mit Gmail (Abbildung<br />

8) passabel aus.<br />

Das Skript lässt sich leicht um einige Vergleiche<br />

erweitern, die gefundene Werte<br />

mit dem eingestellten Limit vergleichen<br />

und nur dann eine Mail senden, wenn<br />

der Grenzwert überschritten ist. Das<br />

kann einmal pro Tag als Zusammenfassung<br />

passieren oder im Fünf-Minuten-<br />

Takt für zügige Alarm-E-Mails.<br />

Zu Splunk gibt es einige Open-Source-<br />

Alternativen wie Logstash ([7], [8]) und<br />

Graylog [9], die jedoch in puncto Bedienfreundlichkeit<br />

und Skalierbarkeit bislang<br />

nicht an Splunk heranreichen. (jk) n<br />

Infos<br />

[1] Listings zu diesem Artikel:<br />

[ftp:// www. linux‐magazin. de/ pub/ listings/​<br />

magazin/ 2013/ 09/ Perl]<br />

[2] Splunk: [http:// www. splunk. com]<br />

[3] Konstantin Agouros, „Nicht suchen, finden!“:<br />

<strong>Linux</strong>-<strong>Magazin</strong> 03/​13, S. 60<br />

[4] Hadoop: [http:// hadoop. apache. org]<br />

[5] A. Schätzle, Thomas Hornung, M. Przyjaciel-Zablocki,<br />

„Große Datenmengen mit<br />

Map Reduce und Hadoop verwalten“:<br />

<strong>Linux</strong>-<strong>Magazin</strong> 04/​12, S. 38<br />

[6] „Splunk: Intro REST API Tutorial“:<br />

[http:// dev. splunk. com/ view/ SP‐CAAADQT]<br />

[7] Logstash: [http:// logstash. net]<br />

[8] Martin Loschwitz, „Alle Systeme im Blick“:<br />

<strong>Linux</strong>-<strong>Magazin</strong> 05/​13, S. 68<br />

[9] Graylog2: [http:// graylog2. org]<br />

Abbildung 8: HTML-Formatierung für moderne Mail-Leser, hier dargestellt in Gmail.<br />

Der Autor<br />

Michael Schilli arbeitet<br />

als Software-Engineer bei<br />

Yahoo in Sunnyvale, Kalifornien.<br />

In seiner seit 1997<br />

laufenden Kolumne forscht<br />

er jeden Monat nach praktischen<br />

Anwendungen der Skriptsprache Perl.<br />

Unter [mschilli@perlmeister. com] beantwortet<br />

er gerne Fragen.


JETZT<br />

MIT DVD!<br />

MAGAZIN<br />

Sonderaktion<br />

Testen Sie jetzt<br />

3 Ausgaben<br />

für 3 Euro!<br />

Gewinnen Sie...<br />

einen von drei Spheros,<br />

per Smartphone fernsteuerbare<br />

Roboter-Bälle im Gesamtwert<br />

von 389 Euro<br />

Jetzt schnell bestellen:<br />

• Telefon 07131 / 2707 274<br />

• Fax 07131 / 2707 78 601<br />

• E-Mail: abo@linux-magazin.de<br />

• Web: www.linux-magazin.de/probeabo<br />

Mit großem Gewinnspiel unter:<br />

www.linux-magazin.de/probeabo<br />

gesponsert von:<br />

• wasserfester Kugelroboter, per Bluetooth steuerbar,<br />

Multi-Colour-Changing LEDs, Apps für Android und iOS<br />

.de • induktive Ladestation (3 Std. Ladezeit, 1 Std. Betriebszeit)<br />

Einsendeschluss ist der 16.09.2013


Service<br />

www.linux-magazin.de IT-Profimarkt 09/2013<br />

108<br />

PROFI<br />

MARKT<br />

Sie fragen sich, wo Sie maßgeschneiderte<br />

<strong>Linux</strong>-Systeme und kompetente<br />

Ansprechpartner zu Open-Source-Themen<br />

finden? Der IT-Profimarkt weist Ihnen<br />

als zuverlässiges Nachschlagewerk<br />

den Weg. Die hier gelisteten Unternehmen<br />

beschäftigen Experten auf ihrem<br />

Gebiet und bieten hochwertige Produkte<br />

und Leistungen.<br />

Die exakten Angebote jeder Firma entnehmen<br />

Sie deren Homepage. Der ersten<br />

Orientierung dienen die Kategorien<br />

Hardware, Software, Seminaranbieter,<br />

Systemhaus, Netzwerk/TK und Schulung/Beratung.<br />

Der IT-Profimarkt-Eintrag<br />

ist ein Service von <strong>Linux</strong>-<strong>Magazin</strong><br />

und <strong>Linux</strong>User.<br />

Online-Suche<br />

Besonders bequem finden Sie einen<br />

<strong>Linux</strong>-Anbieter in Ihrer Nähe über die<br />

neue Online-Umkreis-Suche unter:<br />

[http://www.it-profimarkt.de]<br />

Informationen<br />

fordern Sie bitte an bei:<br />

Medialinx AG<br />

Anzeigenabteilung<br />

Putzbrunner Str. 71<br />

D-81739 München<br />

Tel.: +49 (0)89/99 34 11-23<br />

Fax: +49 (0)89/99 34 11-99<br />

E-Mail: anzeigen@linux-magazin.de<br />

IT-Profimarkt – Liste sortiert nach Postleitzahl<br />

1 = Hardware 2 = Netzwerk/TK 3 = Systemhaus<br />

4= Fachliteratur 4= Seminaranbieter 5 = Software 5 = Software 6 = Schulung/Beratung 6 = Firma Anschrift Telefon Web 1 2 3 4 5 6<br />

Schlittermann internet & unix support 01099 Dresden, Tannenstr. 2 0351-802998-1 www.schlittermann.de √ √ √ √<br />

imunixx GmbH UNIX consultants 01468 Moritzburg,<br />

0351-83975-0 www.imunixx.de √ √ √ √ √<br />

Heinrich-Heine-Str. 4<br />

Heinlein Support GmbH 10119 Berlin, Schwedter Straße 8/​9b 030-405051-0 www.heinlein-support.de √ √ √ √ √<br />

TUXMAN Computer 10369 Berlin, Anton-Saefkow-Platz 8 030-97609773 www.tuxman.de √ √ √ √ √<br />

Compaso GmbH 10439 Berlin, Driesener Strasse 23 030-3269330 www.compaso.de √ √ √ √ √<br />

elego Software Solutions GmbH 13355 Berlin, Gustav-Meyer-Allee 25 030-2345869-6 www.elegosoft.com √ √ √ √<br />

verion GmbH<br />

16244 Altenhof,<br />

033363-4610-0 www.verion.de √ √ √<br />

Unter den Buchen 22 e<br />

Logic Way GmbH 19061 Schwerin, Hagenower Str. 73 0385-39934-48 www.logicway.de √ √ √ √<br />

Sybuca GmbH 20459 Hamburg, Herrengraben 26 040-27863190 www.sybuca.de √ √ √ √ √<br />

iTechnology GmbH 22083 Hamburg, Osterbekstrasse 90b 040 / 69 64 37 20 www.itechnology.de √ √ √ √<br />

JEL Ingenieurbuero 23911 Einhaus, Hauptstr. 7 04541-8911-71 www.jeltimer.de √<br />

beitco - Behrens IT-Consulting 26197 Ahlhorn, Lessingstr. 27 04435-9537330-0 www.beitco.de √ √ √ √ √<br />

talicom GmbH<br />

30169 Hannover,<br />

0511-123599-0 www.talicom.de √ √ √ √ √<br />

Calenberger Esplanade 3<br />

primeLine Solutions GmbH<br />

32549 Bad Oeynhausen,<br />

05731/​86940 www.primeline-solutions.de √ √ √ √<br />

Dornenbreite 18a<br />

teuto.net Netzdienste GmbH 33602 Bielefeld, Niedenstr. 26 0521-96686-0 www.teuto.net √ √ √ √ √<br />

MarcanT GmbH 33602 Bielefeld, Ravensberger Str. 10 G 0521-95945-0 www.marcant.net √ √ √ √ √ √<br />

LINET Services GmbH 38118 Braunschweig, Cyriaksring 10a 0531-180508-0 www.linet-services.de √ √ √ √ √ √<br />

OpenIT GmbH<br />

40599 Düsseldorf,<br />

0211-239577-0 www.OpenIT.de √ √ √ √ √<br />

In der Steele 33a-41<br />

<strong>Linux</strong>-Systeme GmbH 45277 Essen, Langenbergerstr. 179 0201-298830 www.linux-systeme.de √ √ √ √ √<br />

<strong>Linux</strong>hotel GmbH 45279 Essen, Antonienallee 1 0201-8536-600 www.linuxhotel.de √<br />

OpenSource Training Ralf Spenneberg 48565 Steinfurt, Am Bahnhof 3-5 02552-638755 www.opensource-training.de √<br />

Intevation GmbH 49074 Osnabrück, Neuer Graben 17 0541-33508-30 osnabrueck.intevation.de √ √ √ √<br />

Sigs Datacom GmbH 53842 Troisdorf, Lindlaustraße 2c 02241-2341-201 sigs-datacom.de √<br />

uib gmbh 55118 Mainz, Bonifaziusplatz 1b 06131-27561-0 www.uib.de √ √ √ √<br />

LISA GmbH 55411 Bingen, Elisenhöhe 47 06721-49960 www.lisa-gmbh.de √ √ √ √ √<br />

GONICUS GmbH 59755 Arnsberg, Moehnestr. 55 02932-9160 www.gonicus.com √ √ √ √ √<br />

saveIP GmbH<br />

64283 Darmstadt,<br />

06151-666266 www.saveip.de √ √ √ √ √<br />

Schleiermacherstr. 23<br />

LAMARC EDV-Schulungen u. Beratung 65193 Wiesbaden,<br />

0611-260023 www.lamarc.com √ √ √ √<br />

GmbH<br />

Sonnenberger Straße 14<br />

ORDIX AG 65205 Wiesbaden, Kreuzberger Ring 13 0611-77840-00 www.ordix.de √ √ √ √ √<br />

<strong>Linux</strong>Haus Stuttgart<br />

70565 Stuttgart,<br />

Hessenwiesenstrasse 10<br />

0711-2851905 www.linuxhaus.de √ √ √ √ √<br />

IT-Profimarkt listet ausschließlich Unternehmen, die Leistungen rund um <strong>Linux</strong> bieten. Alle Angaben ohne Gewähr. <br />

(S.110)


Seminare / Markt


Service<br />

www.linux-magazin.de Markt 09/2013<br />

110<br />

IT-Profimarkt/Markt<br />

IT-Profimarkt – Liste sortiert nach Postleitzahl (Fortsetzung von S. 108)<br />

Firma Anschrift Telefon Web 1 2 3 4 5 6<br />

Manfred Heubach EDV und<br />

Kommunikation<br />

Waldmann EDV Systeme + Service<br />

73728 Esslingen, Hindenburgstr. 47 0711-4904930 www.heubach-edv.de √ √ √ √<br />

74321 Bietigheim-Bissingen,<br />

Pleidelsheimer Str. 25<br />

07142-21516 www.waldmann-edv.de √ √ √ √ √<br />

in-put Das <strong>Linux</strong>-Systemhaus 76133 Karlsruhe, Moltkestr. 49 0721-6803288-0 www.in-put.de √ √ √ √ √ √<br />

Bodenseo 78224 Singen, Pomeziastr. 9 07731-1476120 www.bodenseo.de √ √ √<br />

<strong>Linux</strong> Information Systems AG 81739 München, Putzbrunnerstr. 71 089-993412-0 www.linux-ag.com √ √ √ √ √<br />

<strong>Linux</strong>Land International GmbH 81739 München, Putzbrunnerstr. 71 089-99341441 www.linuxland.de √ √ √ √ √ √<br />

Synergy Systems GmbH 81829 München, Konrad-Zuse-Platz 8 089-89080500 www.synergysystems.de √ √ √ √ √<br />

B1 Systems GmbH 85088 Vohburg, Osterfeldstrasse 7 08457-931096 www.b1-systems.de √ √ √ √ √<br />

ATIX AG 85716 Unterschleißheim, Einsteinstr. 10 089-4523538-0 www.atix.de √ √ √ √ √ √<br />

Tuxedo Computers GmbH 86343 Königsbrunn , Zeppelinstr. 3 0921-16 49 87 87-0 www.linux-onlineshop.de √ √ √ √<br />

OSTC Open Source Training and<br />

Consulting GmbH<br />

90425 Nürnberg,<br />

Waldemar-Klink-Str. 10<br />

0911-3474544 www.ostc.de √ √ √ √ √ √<br />

Dipl.-Ing. Christoph Stockmayer GmbH 90571 Schwaig, Dreihöhenstr. 1 0911-505241 www.stockmayer.de √ √ √<br />

pascom -<br />

94469 Deggendorf, Berger Str. 42 0991-270060 www.pascom.net √ √ √ √ √<br />

Netzwerktechnik GmbH & Co.KG<br />

RealStuff Informatik AG CH-3007 Bern, Chutzenstrasse 24 0041-31-3824444 www.realstuff.ch √ √ √<br />

CATATEC CH-3013 Bern, Dammweg 43 0041-31-3302630 www.catatec.ch √ √ √<br />

Syscon Systemberatungs AG CH-8003 Zürich, Zweierstrasse 129 0041-44-4542010 www.syscon.ch √ √ √ √ √<br />

Würth Phoenix GmbH IT-39100 Bozen, Kravoglstraße 4 0039 0471 56 41 11 www.wuerth-phoenix.com √ √ √ √<br />

IT-Profimarkt listet ausschließlich Unternehmen, die Leistungen rund um <strong>Linux</strong> bieten. Alle Angaben ohne Gewähr. <br />

n


Service<br />

www.linux-magazin.de Inserenten 09/2013<br />

112<br />

Inserentenverzeichnis<br />

1&1 Internet AG http://​www.einsundeins.de 17<br />

ADMIN http://​www.admin-magazin.de 19, 21<br />

Android Apps & Tipps http://​www.android-user.de 97, 105, 110<br />

Android User GY http://​www.android-user.de 53, 105<br />

CANDAN THE WEB COMPANY http://​www.canhost.de 27<br />

ConSol Software GmbH http://​www.consol.de 13<br />

embedded projects GmbH http://​www.embedded-projects.net 110<br />

Fernschule Weber GmbH http://​www.fernschule-weber.de 109<br />

FrOSCon e.V. http://​www.froscon.de 41<br />

Galileo Press http://​www.galileo-press.de 9<br />

Heise Zeitschriften Verlag GmbH & Co. KG http://www.heise.de 65<br />

Ico Innovative Computer GmbH http://​www.ico.de 31<br />

<strong>Linux</strong> <strong>Magazin</strong>e http://www.linux-magazine.com 109<br />

Medialinx AG http://​www.medialinx-gruppe.de 111<br />

Medialinx IT-Academy http://​www.medialinx-academy.de 101, 109<br />

Netways GmbH http://​www.netways.de 45<br />

O’Reilly Verlag GmbH & Co KG http://​www.oreilly.de 15<br />

Open Source Press GmbH http://​www.opensourcepress.de 63<br />

PlusServer AG http://​www.plusserver.de 29, 37, 54,<br />

76, 90<br />

Raspberry Pi Geek http://​www.raspberry-pi-geek.de 81<br />

Spenneberg Training & Consulting http://​www.spenneberg.com 109<br />

Strato AG http://​www.strato.de 1, 2<br />

Thomas Krenn AG http://​www.thomas-krenn.com 116<br />

Tuxedo Computers GmbH http://​www.linux-onlineshop.de 115<br />

<strong>Linux</strong>-Hotel http://​www.linuxhotel.de 11<br />

<strong>Linux</strong>-<strong>Magazin</strong> http://​www.linux-magazin.de 83, 99, 107<br />

<strong>Linux</strong>-<strong>Magazin</strong> Online http://​www.linux-magazin.de 85<br />

<strong>Linux</strong>User http://​www.linuxuser.de 57, 111<br />

MailStore Software GmbH http://www.mailstore.com 7<br />

Ubuntu User http://​www.ubuntu-user.de 73<br />

Webtropia http://​www.webtropia.com 25<br />

Einem Teil dieser Ausgabe liegen Beilagen der Firma Software & Support Verlag<br />

GmbH (http://​www.entwickler.com) bei. Wir bitten unsere Leser um freundliche<br />

Beachtung.<br />

Veranstaltungen<br />

01.-08.08.2013<br />

Guadec 2013<br />

Brno, Czech Republic<br />

http://guadec.org<br />

14.-16.08.2013<br />

USENIX Security ’13<br />

Washington, D.C.<br />

https://www.usenix.org/conference/usenixsecurity13<br />

24.-25.08.2013<br />

FrOSCon 2013<br />

Hochschule Bonn-Rhein-Sieg<br />

53757 Sankt Augustin, Deutschland<br />

http://www.froscon.de<br />

03.-05.09.2013<br />

Uplinq 2013 Mobile CodeFest & Hackathon<br />

San Diego, CA<br />

https://www.uplinq.com<br />

09.09.2013<br />

2013 High Performance Computing for Wall Street<br />

New York, NY, USA<br />

http://www.flaggmgmt.com/hpc/<br />

16.-18.09.2013<br />

CloudOpen North America 2013<br />

New Orleans, LA, US<br />

http://events.linuxfoundation.org/events/cloudopennorth-america<br />

16.-18.09.2013<br />

<strong>Linux</strong>Con North America 2013<br />

New Orleans, LA, US<br />

http://events.linuxfoundation.org/events/linuxconnorth-america<br />

23.-24.09.2013<br />

Data Modeling Zone Europe<br />

Hanover, Germany<br />

http://www.datamodelingzone.com<br />

08.-10.10.2013<br />

Data Modeling Zone America<br />

Baltimore, MD<br />

http://www.datamodelingzone.com<br />

11.-13.10.2013<br />

Ubucon 2013<br />

SRH Berufsförderungswerk Heidelberg<br />

http://www.ubucon.de<br />

14.-19.10.2013<br />

PyCon.DE 2013<br />

KOMED<br />

50670 Köln, Deutschland<br />

https://2013.de.pycon.org<br />

16.-18.10.2013<br />

Medientage München<br />

ICM München<br />

http://www.medientage.de<br />

21.-23.10.2013<br />

CloudOpen Europe 2013<br />

Edinburgh, UK<br />

http://events.linuxfoundation.org/events/cloudopeneurope<br />

21.-23.10.2013<br />

<strong>Linux</strong>Con Europe 2013<br />

Edinburgh, UK<br />

http://events.linuxfoundation.org/events/linuxconeurope<br />

24.-25.10.2013<br />

Embedded <strong>Linux</strong> Conference Europe 2013<br />

Edinburgh, UK<br />

http://events.linuxfoundation.org/events/embeddedlinux-conference-europe<br />

28.-30.10.2013<br />

JAXConf London 2013 with Big Data Con<br />

London, UK<br />

http://jaxlondon.com<br />

03.-08.11.2013<br />

USENIX LISA ’13<br />

Washington, D.C.<br />

https://www.usenix.org/conference/lisa13<br />

17.-22.11.2013<br />

SC13<br />

Denver, CO, USA<br />

http://sc13.supercomputing.org


Impressum<br />

<strong>Linux</strong>-<strong>Magazin</strong> eine Publikation der <strong>Linux</strong> New Media, einem<br />

Geschäftsbereich der Medialinx AG<br />

Redaktionsanschrift Putzbrunner Str. 71<br />

81739 München<br />

Tel.: 089/993411-0<br />

Fax: 089/993411-99 oder -96<br />

Internet<br />

www.linux-magazin.de<br />

E-Mail<br />

redaktion@linux-magazin.de<br />

Geschäftsleitung<br />

Chefredakteur<br />

stv. Chefredakteure<br />

Redaktionsltg. Online<br />

Brian Osborn (Vorstand), bosborn@medialinx-gruppe.de<br />

Hermann Plank (Vorstand), hplank@medialinx-gruppe.de<br />

Jan Kleinert (V.i.S.d.P.), jkleinert@linux-magazin.de (jk)<br />

Markus Feilner, mfeilner@linux-magazin.de (mfe)<br />

Mathias Huber, mhuber@linux-magazin.de (mhu)<br />

Mathias Huber, mhuber@linux-magazin.de (mhu)<br />

Print- und Onlineredaktion<br />

Aktuell, Forum, Software, Kristian Kissling, kkissling@linux-magazin.de (kki)<br />

Programmierung Mathias Huber, mhuber@linux-magazin.de (mhu)<br />

Sysadmin, Know-how Markus Feilner, mfeilner@linux-magazin.de (mfe)<br />

Ständige Mitarbeiter Fred Andresen, Zack Brown, Mela Eckenfels, Heike Jurzik (hej),<br />

Charly Kühnast, Martin Loschwitz, Michael Schilli, Tim<br />

Schürmann, Mark Vogelsberger, Uwe Vollbracht, Arnold<br />

Zimprich (azi)<br />

Schlussredaktion<br />

Grafik<br />

Bildnachweis<br />

DELUG-DVD<br />

Chefredaktionen<br />

International<br />

Produktion<br />

Onlineshop<br />

Abo-Infoseite<br />

Abonnenten-Service<br />

ISSN 1432 – 640 X<br />

Jürgen Manthey<br />

Mike Gajer, Judith Erb (Art Director)<br />

xhoch4, München (Titel-Illustration)<br />

123RF.com, Fotolia.de, Photocase.com, Pixelio.de und andere<br />

Thomas Leichtenstern, tleichtenstern@linux-magazin.de (tle)<br />

<strong>Linux</strong> <strong>Magazin</strong>e International<br />

Joe Casad (jcasad@linux-magazine.com)<br />

<strong>Linux</strong> <strong>Magazin</strong>e Poland<br />

Artur Skura (askura@linux-magazine.pl)<br />

<strong>Linux</strong> <strong>Magazin</strong>e Spain<br />

Paul C. Brown (pbrown@linux-magazine.es)<br />

<strong>Linux</strong> <strong>Magazin</strong>e Brasil<br />

Rafael Peregrino (rperegrino@linuxmagazine.com.br)<br />

Christian Ullrich, cullrich@linux-magazin.de<br />

www.medialinx-shop.de<br />

www.linux-magazin.de/Produkte<br />

A.B.O. Verlagservice GmbH<br />

Gudrun Blanz (Teamleitung)<br />

abo@medialinx-gruppe.de<br />

Tel.: +49-(0)7131-2707-274<br />

Fax: +49-(0)7131-2707-78-601<br />

Preise Print Deutschland Österreich Schweiz Ausland EU<br />

No-Media-Ausgabe 4 6,40 4 7,05 Sfr 12,80 (siehe Titel)<br />

DELUG-DVD-Ausgabe 4 8,50 4 9,35 Sfr 17,— (siehe Titel)<br />

Jahres-DVD (Einzelpreis) 4 14,95 4 14,95 Sfr 18,90 4 14,95<br />

Jahres-DVD (zum Abo 1 ) 4 6,70 4 6,70 Sfr 8,50 4 6,70<br />

Mini-Abo (3 Ausgaben) 4 3,— 4 3,— Sfr 4,50 4 3,—<br />

Jahresabo No Media 4 65,20 4 71,90 Sfr 107,50 4 84,60<br />

Jahresabo DELUG-DVD 4 87,90 4 96,90 Sfr 142,80 4 99,90<br />

Preise Digital Deutschland Österreich Schweiz Ausland EU<br />

Heft-PDF Einzelausgabe 4 6,40 4 6,40 Sfr 8,30 4 6,40<br />

DigiSub (12 Ausgaben) 4 65,20 4 65,20 Sfr 84,80 4 65,20<br />

DigiSub (zum Printabo) 4 12,— 4 12,— Sfr 12,— 4 12,—<br />

HTML-Archiv (zum Abo 1 ) 4 12,— 4 12,— Sfr 12,— 4 12,—<br />

Preise Kombiabos Deutschland Österreich Schweiz Ausland EU<br />

Mega-Kombi-Abo 2 4 143,40 4 163,90 Sfr 199,90 4 173,90<br />

Profi-Abo 3 4 136,60 4 151,70 Sfr 168,90 4 165,70<br />

1<br />

nur erhältlich in Verbindung mit einem Jahresabo Print oder Digital<br />

2<br />

mit <strong>Linux</strong>User-Abo (DVD) und beiden Jahres-DVDs, inkl. DELUG-Mitgliedschaft (monatl.<br />

DELUG-DVD)<br />

3<br />

mit ADMIN-Abo und beiden Jahres-DVDs<br />

Schüler- und Studentenermäßigung: 20 Prozent gegen Vorlage eines Schülerausweises<br />

oder einer aktuellen Immatrikulationsbescheinigung. Der aktuelle Nachweis ist bei<br />

Verlän gerung neu zu erbringen. Andere Abo-Formen, Ermäßigungen im Ausland etc.<br />

auf Anfrage.<br />

Adressänderungen bitte umgehend mitteilen, da Nachsendeaufträge bei der Post nicht<br />

für Zeitschriften gelten.<br />

Pressemitteilungen<br />

Marketing und Vertrieb<br />

Mediaberatung D, A, CH<br />

presse-info@linux-magazin.de<br />

Petra Jaser, pjaser@linux-magazin.de<br />

Tel.: +49 (0)89 / 99 34 11 – 24<br />

Fax: +49 (0)89 / 99 34 11 – 99<br />

Michael Seiter, mseiter@linux-magazin.de<br />

Tel.: +49 (0)89 / 99 34 11 – 23<br />

Mediaberatung USA Ann Jesse, ajesse@linux-magazine.com<br />

und weitere Länder Tel.: +1 785 841 8834<br />

Darrah Buren, dburen@linux-magazine.com<br />

Tel.:+1 785 856 3082<br />

Pressevertrieb<br />

Druck<br />

Es gilt die Anzeigen-Preisliste vom 01.01.2013.<br />

MZV Moderner Zeitschriften Vertrieb GmbH & Co. KG<br />

Ohmstraße 1, 85716 Unterschleißheim<br />

Tel.: 089/31906-0, Fax: 089/31906-113<br />

Vogel Druck GmbH, 97204 Höchberg<br />

Der Begriff Unix wird in dieser Schreibweise als generelle Bezeichnung für die Unixähnlichen<br />

Betriebssysteme verschiedener Hersteller benutzt. <strong>Linux</strong> ist eingetragenes<br />

Marken zeichen von Linus Torvalds und wird in unserem Markennamen mit seiner<br />

Erlaubnis verwendet.<br />

Eine Haftung für die Richtigkeit von Veröffentlichungen kann trotz sorgfältiger Prüfung<br />

durch die Redaktion vom Verlag nicht übernommen werden. Mit der Einsendung von<br />

Manus kripten gibt der Verfasser seine Zustimmung zum Abdruck. Für unverlangt<br />

eingesandte Manuskripte kann keine Haftung übernommen werden.<br />

Das Exklusiv- und Verfügungsrecht für angenommene Manuskripte liegt beim Verlag. Es<br />

darf kein Teil des Inhalts ohne ausdrückliche schriftliche Genehmigung des Verlags in<br />

irgendeiner Form vervielfältigt oder verbreitet werden.<br />

Copyright © 1994 – 2013 Medialinx AG<br />

Impressum 09/2013<br />

Service<br />

www.linux-magazin.de<br />

113<br />

Krypto-Info<br />

GnuPG-Schlüssel der <strong>Linux</strong>-<strong>Magazin</strong>-Redaktion:<br />

pub 1024D/44F0F2B3 2000-05-08 Redaktion <strong>Linux</strong>-<strong>Magazin</strong><br />

<br />

Key fingerprint = C60B 1C94 316B 7F38 E8CC E1C1 8EA6 1F22 44F0 F2B3<br />

Public-Key der DFN-PCA:<br />

pub 2048R/7282B245 2007-12-12,<br />

DFN-PGP-PCA, CERTIFICATION ONLY KEY (DFN-PGP-Policy: 2008-2009)<br />

<br />

Key fingerprint = 39 D9 D7 7F 98 A8 F1 1B 26 6B D8 F2 EE 8F BB 5A<br />

PGP-Zertifikat der DFN-User-CA:<br />

pub 2048R/6362BE8B (2007-12-12),<br />

DFN-PGP-User-CA, CERTIFICATION ONLY KEY (DFN-PGP-Policy: 2008-2009)<br />

<br />

Key fingerprint = 30 96 47 77 58 48 22 C5 89 2A 85 19 9A D1 D4 06<br />

Root-Zertifikat der CAcert:<br />

Subject: O=Root CA, OU=http://www.cacert.org, CN=CA Cert Signing Authority/<br />

Email=support@cacert.org<br />

SHA1 Fingerprint=13:5C:EC:36:F4:9C:B8:E9:3B:1A:B2:70:CD:80:88:46:76:CE:8F:33<br />

MD5 Fingerprint=A6:1B:37:5E:39:0D:9C:36:54:EE:BD:20:31:46:1F:6B<br />

GPG-Schlüssel der CAcert:<br />

pub 1024D/​65D0FD58 2003-07-11 [expires: 2033-07-03]<br />

Key fingerprint = A31D 4F81 EF4E BD07 B456 FA04 D2BB 0D01 65D0 FD58<br />

uid CA Cert Signing Authority (Root CA) <br />

Autoren dieser Ausgabe<br />

Konstantin Agouros Automatisch sauber 22<br />

Fred Andresen Rechtsrat 78<br />

Zack Brown Zacks Kernel-News 18<br />

Anselm Busse Auf der Jagd 84<br />

Mela Eckenfels Sammeln mit Motiv 48<br />

Dr. Harry Knitter Talking Heads 60<br />

Charly Kühnast Ohne Besuchsrecht 59<br />

Martin Loschwitz Klasse Luxusklasse? 38<br />

Martin Loschwitz Fensterstapel 68<br />

Andreas Möller Schlüssel fürs Web 98<br />

Jan Richling Auf der Jagd 84<br />

Michael Schilli Meldungen wie Heu 102<br />

Tim Schürmann Strategiespiel 66<br />

Tim Schürmann Voilà Vala 92<br />

Dr. Udo Seidel Kern-Kompetenz 42<br />

Mark Vogelsberger Kaputt gegangen 89<br />

Michael Vogt Gruppenreise 30<br />

Uwe Vollbracht Tooltipps 56


Service<br />

www.linux-magazin.de <strong>Vorschau</strong> 02/2013 10/2013 09/2013 01/2013<br />

114<br />

<strong>Vorschau</strong><br />

10/2013 Dachzeile<br />

Bewohnte Welten im Vergleich<br />

© Anatoliy Samara, 123RF<br />

Gute Mannschaft, schlechte Mannschaft<br />

Auf Sourceforge lagern über 300 000 Projekte. Die meisten davon<br />

– so viel Ehrlichkeit muss sein – sind im Alphastadium<br />

stecken geblieben. Auf der anderen Seite gibt es sehr, sehr viel<br />

Open-Source-Software, die Millionen Benutzer zählt und proprietären<br />

Programmen qualitativ weit überlegen ist.<br />

Das nächste <strong>Linux</strong>-<strong>Magazin</strong> wird anhand knackiger Beispiele<br />

untersuchen, was erfolgreiche Communitys von versandeten<br />

unterscheidet. Wie sollten sich Akteure organisieren, nach<br />

welchen Entwicklungsmodellen arbeiten? Wie redet und streitet<br />

man miteinander? Wo gibt es Finanzierungsmöglichkeiten?<br />

In Ganzen gilt es zu erfassen, wie Open Source in der täglichen<br />

Praxis funktioniert – oder eben an der Praxis scheitert.<br />

MAGAZIN<br />

Überschrift<br />

Planet-Software nennen sich Aggregatoren, die einen „Planet“<br />

mit thematisch passenden Inhalten fremder Blogs, Pod- und Videocasts,<br />

Newsfeeds oder Webcomics bevölkern. Die nächste<br />

Bitparade richtet ihre Teleskope auf Planet, Moonmoon, Planet<br />

Venus und Tiny Tiny RSS.<br />

Xen Server 6.2<br />

Citrix, nicht gerade die Erfinderin der Open-Source-Idee, öffnete<br />

Ende Juni den Quellcode des Xen Server 6.2. Technisch<br />

gesehen verbessert die Software das Auto-Scaling für RAM und<br />

CPUs, integriert Monitoringtools und bringt eine Clone-on-<br />

Boot-Funktion. Reichlich Gründe für einen <strong>Magazin</strong>-Test.<br />

Kern-Technik<br />

Es ist einfacher als gedacht und macht Spaß, mit dem Raspberry<br />

Pi eine LED oder andere Hardware anzusteuern. Der Zugriff<br />

über das Sys-Filesystem reicht für aussichtsreiche Experimente.<br />

Ein angepasster Gerätetreiber jedoch kann Ein- und<br />

Ausgaben um den Faktor 250 beschleunigen.<br />

Die Ausgabe 10/2013<br />

erscheint am 5. September 2013<br />

© CDWaldi, sxc.hu<br />

<strong>Vorschau</strong><br />

auf 09/2013<br />

Die nächste Ausgabe erscheint am 14.08.2013<br />

Sicher kommunizieren<br />

Die Ereignisse rund um die globalen Lauschangriffe des amerikanischen<br />

Geheimdienstes NSA zeigen: Wer seine Daten<br />

blind der Cloud anvertraut, macht sich zur leichten Beute für<br />

Schnüffel programme – und das ganz unnötig.<br />

<strong>Linux</strong> bietet nämlich eine Reihe wirkungsvoller Schutzmaßnahmen<br />

gegen den Datenklau. Dabei stehen die Verschlüsselung<br />

für Daten und Kommunikation ganz oben auf die Liste.<br />

Mit Anonymisierern verwischen Sie Ihre Spuren im Netz. Eine<br />

eigene Cloud auf schlanker Hardware nimmt zudem wertvolle<br />

Daten der Benutzer auf.<br />

Raspberry Pi tunen<br />

Der Raspi eignet sich zwar prinzipiell für zahlreiche Aufgaben.<br />

In der Praxis geht dem Winzling mitunter aber leicht die Puste<br />

aus. Wir zeigen, wie Sie dem SBC Beine machen, damit Sie<br />

nicht auf anspruchsvolle Projekte verzichten müssen.<br />

Gimp 2.8: Verzerren<br />

Beim Bearbeiten von Fotos glänzt Gimp nicht nur mit Funktionen<br />

zum Korrigieren von Objektivfehlern und stürzenden<br />

Linien: Fortgeschrittene Techniken wie Bumpmapping und Käfigtransformationen<br />

bringen zudem Kreativität ins Spiel.

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!