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.