26.02.2014 Aufrufe

Linux-Magazin Software testen (Vorschau)

Verwandeln Sie Ihre PDFs in ePaper und steigern Sie Ihre Umsätze!

Nutzen Sie SEO-optimierte ePaper, starke Backlinks und multimediale Inhalte, um Ihre Produkte professionell zu präsentieren und Ihre Reichweite signifikant zu maximieren.

08/12<br />

Anzeige:<br />

Die Welt der STRATO Server<br />

Ohne Einrichtungsgebühr! » strato-pro.de siehe Seite 11<br />

STR0712_DE_TKS_DServer_120x17.indd 1<br />

20.06.2012 12:59:17 Uhr<br />

Klonprogramme für<br />

Festplatten im Test<br />

Vier angeblich perfekte Umzugshelfer im<br />

Bitparade-Testlabor S. 56<br />

Sicher löschen<br />

Gar nicht einfach: Daten<br />

auf Fest platten Recoveryfest<br />

zerstören S. 62<br />

Owncloud 4<br />

Freie, aber nicht fehlerfreie<br />

Webstorage-Alterna tive zu<br />

Dropbox & Co S. 72<br />

<strong>Software</strong> <strong>testen</strong><br />

Wie Entwickler und Maintainer ihre<br />

Situation im Handumdrehen verbessern<br />

■ Warum, wann und wie jeder Entwickler<br />

<strong>Software</strong>-Testing betreiben sollte S. 22<br />

■ Tools, die Quelltexte in C, C++, Java und<br />

Python nach Fehlern durchforsten S. 26<br />

■ So geht's: Testdriven Development S. 32<br />

■ Sieben Gebote für das Schreiben sicherer<br />

Webapplikationen S. 38<br />

■ Rollout-Praxis: Wie Red Hat,<br />

Limux & Co. ihre Pakete <strong>testen</strong> S. 42<br />

■ Special: Raspberry Pi S. 61 und S. 75<br />

■ Fünf Webgroupwares, mit denen<br />

man Outlook schnell vergisst S. 46<br />

Rechts-Rat: Was bei der Weitergabe von proprietären Headerfiles zu beachten ist S. 80<br />

www.linux-magazin.de<br />

Deutschland Österreich Schweiz Benelux Spanien Italien<br />

4 5,95 4 6,70 sfr 11,90 4 7,00 4 7,95 4 7,95<br />

4 192587 305954 08


Server<br />

die mitwachsen<br />

Professionelles Hosting<br />

Individuelle Hostinglösungen vom Server<br />

bis zum Clustersystem inklusive Beratung,<br />

Planung und Service 24/7.<br />

Für mehr Performance, Sicherheit und<br />

Verfügbarkeit, jeden Tag, rund um die Uhr.<br />

hostserver.de/server<br />

Sicherheit im Failover-Cluster:<br />

ISO 9001 zertifiziertes<br />

Managed Hosting<br />

Hochsicherheits-Datacenter<br />

in Frankfurt/Main<br />

DE-CIX Direktanbindung<br />

Umfassender Datenschutz<br />

nach BDSG<br />

24/7 Service und Support<br />

0 30 / 420 200 24 hostserver.de<br />

Berlin Marburg Frankfurt am Main<br />

Managed Hosting<br />

zertifiziert nach<br />

ISO 9001 : 2008


Allein die Geste zählt<br />

Login 08/2012<br />

Editorial<br />

Über meinem Fernseher zu Hause steht seit zwei Monaten schwarz und aufrecht<br />

eine so genannte Multimedia-Festplatte. Die gibt auf ihren 1 TByte gespeicherte<br />

Videos wieder und nimmt auch selbst über einen analogen Videoeingang welche<br />

auf. Das schwarze Metallkästchen läuft bei mir meist nur im Stand-by und ersetzt<br />

meinen Videorekorder, den ich vor fünf Jahren auf dem lauschigen Waldfriedhof<br />

meiner persönlichen Technikgeschichte beerdigen musste.<br />

www.linux-magazin.de<br />

3<br />

Mein Plan war, an dem neuen Player nicht groß rumzufummeln, der ja ein Alltagsgegenstand<br />

und letztlich eine Appliance ist. Deswegen ließ ich mich nicht von<br />

der ebenso dämlichen wie inkonsistenten Bedienoberfläche irritieren. Zweifel<br />

kamen auf, als ich ein paar Tage später daran scheiterte, dem Gerät einen (gut zu<br />

meinem Router passenden) WLAN-Stick schmackhaft zu machen. Das Lesen von<br />

rund hundert Forumeinträgen brachte mir die Erkenntnisse, dass auf dem Player<br />

<strong>Linux</strong> läuft, was keine große Überraschung war, und dieser – <strong>Linux</strong>-untypisch – nur<br />

einen einzigen WLAN-Chipsatz unterstützt.<br />

Jan Kleinert, Chefredakteur<br />

Seit diesem Zeitpunkt sitze ich mit einem Holzklasse-Ticket ausgestattet im Bastel-Zug nach Irgendwo. Hier ein<br />

paar Zwischenstopps im Telegrammstil: Neuer WLAN-Stick läuft im Prinzip, aber nur, wenn ich ihn im laufenden<br />

Betrieb einstecke. Zwei wirkungsarme Firmwareupdates eingespielt. Samba-Performance über WLAN<br />

und Ethernet auf Analogmodem-Niveau und darum zum Überspielen von Videos auf den PC und umgekehrt<br />

unbrauchbar.<br />

Da sich keine freie Entwicklercommunity für den Player gebildet hat, und damit keine Aussicht auf vernünftige<br />

<strong>Software</strong> besteht, lud ich vor ein paar Wochen den Quellcode des Players von der Herstellerseite, um selber Hand<br />

anzulegen. Aus dem Archiv konnte ich einen Satz uralter <strong>Linux</strong>-Quellen und eine Handvoll freier Bibliotheken im<br />

Orginalzustand kramen – das wars. Der Rest, und damit die Eigenleistung des Herstellers, ist offenbar proprietär.<br />

Ihn aus der originalen Firmware funktionsfähig herauszupulen, die ja als ein großes Binärfile daherkommt,<br />

kann ich wohl vergessen.<br />

Die etwas ermüdende Geschichte zu erzählen lohnt, weil sie Erzähler und Zuhörer in die Grenzregion proprietär/​<br />

Open Source geleitet. Was aus der Ferne wie ein friedliches Neben- und Miteinander der Systeme erscheint,<br />

erweist sich beim Besuch der Demarkationslinie als großteils vermintes Gelände.<br />

Im konkreten Fall macht der Player-Anbieter lizenzrechtlich nichts falsch, wenn er freie Teile veröffentlicht und<br />

die proprietären zurückhält. Für den Anwender jedoch bleiben die Quellen im doppelten Sinne nutzlos. Wegen<br />

eines ähnlichen Grenzkonfliks platzte dieser Tage Linus Torvalds öffentlich der Kragen. Auslöser war eine Frage<br />

zur Aussicht auf funktionierende <strong>Linux</strong>-Unterstützung bestimmter Nvidia-Chips und die Kooperationsbereitschaft<br />

des Herstellers (siehe Seite 13).<br />

Torvalds nutzte den öffentlichen Auftritt für eine Provokation, indem er der Grafikkartenfirma den Stinkefinger<br />

zeigte. Den Digitus impudicus, den schamlosen Finger, erhoben schon die Römer und Griechen der ausgehenden<br />

Antike als obszöne Phallus-Geste gegen ihre Widersacher. Zuvor jedoch, so die Überlieferung, diente der<br />

Mittelfinger als Digitus medicinalis, mit dem Ärzte den Kranken Salbe auftrugen. So gesehen entfaltet die<br />

aufflammende Diskussion um den Digitus torvaldicus vielleicht eine heilende Wirkung in der Sache Nvidia. Mir<br />

und meiner Multimedia-Platte wird’s wohl nichts nutzen. Fuck you!


Inhalt<br />

www.linux-magazin.de 08/2012 08 /2012<br />

4<br />

Die anspruchsvolle Arbeit, <strong>Software</strong> zu entwickeln ist zugleich eine sehr fehlerträchtige. Die<br />

Folgen von Bugs reichen vom kleinen Ärgernis über den gehackten Webserver bis hin zum Raketenabsturz.<br />

Die einzigen Methoden und Tools dagegen hält das große Sachgebiet des <strong>Software</strong>-Testing<br />

bereit, dem diese Ausgabe fünf aufschlussreiche Artikel widmet.<br />

Aktuell<br />

Titelthema: <strong>Software</strong> <strong>testen</strong><br />

6 N ew s<br />

n Libre Office lernt Corel Draw<br />

n Mobil: UCS@School mit Samba 4<br />

n Klaus Knopper gibt Knoppix 7.0.2 frei<br />

n Google zeigt Chromebook und -box<br />

n <strong>Linux</strong> Mint 13 mit Long Term Support<br />

22 Wo Entwickler ansetzen<br />

Titel<br />

Wann und mit welchen Methoden <strong>testen</strong>.<br />

Initialisierung<br />

Analyse<br />

Entwurf<br />

38 Sichere Webapplikationen<br />

Sieben Gebote, um Sicherheitslücken<br />

beim PHP-Programmieren schon sehr<br />

früh zu erkennen.<br />

Realisierung<br />

Einführung<br />

Nutzung<br />

Opera 12 bringt bunte Themes und Web GL.<br />

12 Zahlen & Trends<br />

n Enquete-Gruppe Open Source startet<br />

n Torvalds zeigt Nvidia Stinkefinger<br />

n Dell setzt auf ARM<br />

n Open Suse verschiebt 12.2<br />

n Microsoft nimmt <strong>Linux</strong> in die Cloud<br />

n Fedoras UEFI-Secure-Boot-Pläne<br />

18 Zacks Kernel-News<br />

n Patch rückgängig? Greg bleibt hart.<br />

20 <strong>Linux</strong> Tag 2012<br />

<strong>Linux</strong>-Roboter, Netzpolitik, Rootcamp: Vier<br />

Tage stand Berlin im Zeichen des Pinguins.<br />

Tanzende Roboter von Aldebaran Robotics bei<br />

der Auftaktveranstaltung des <strong>Linux</strong>tags.<br />

Erweitertes klassisches Wasserfallmodell, das<br />

Tests nur in den letzten Phasen vorsieht.<br />

26 Statische Analyse<br />

Werkzeuge für die statische Analyse<br />

durchkämmen selbst gestrickten Code.<br />

Praktisch: Plugins für IDEs warnen schon bei<br />

der Eingabe von Quellcode vor Problemen.<br />

32 Testdriven Development<br />

Hebt es die <strong>Software</strong>qualität, wenn<br />

Entwickler zuerst den Test schreiben?<br />

DELUG-DVD<br />

Knoppix 7.0.2<br />

TOOL<br />

• Bessere Hardware-Erken nung<br />

• Updates vieler Anwendungen<br />

• Braucht weniger RAM<br />

TOOL<br />

Fedora 17, Mint 13<br />

TOOL<br />

TOOL<br />

Bootswitch wechselt zwischen bei -<br />

den Neuerscheinungen des Monats<br />

Gute Tests hätten ans Licht gebracht, dass die<br />

Login-Maske des Demo-Shops Badstore.net<br />

SQL-Injections ermöglicht.<br />

42 Rollout Testing<br />

Wie Profis <strong>Software</strong> <strong>testen</strong>, bevor sie<br />

diese an ihre User ausrollen: Tipps und<br />

Tricks von Admins und Distributoren.<br />

Das stufenweise Testen (Staging) verlangt Planung<br />

und Ausdauer, schützt aber vor Ausfällen.<br />

Doppelseitige DVD,<br />

TOOL<br />

Details auf S. 45<br />

Berlin und Bozen<br />

<strong>Linux</strong>tag-Video vom Netzpolitik-<br />

Schlagabtausch und 4x Open Source<br />

System Management Conference<br />

Virtual Appliance<br />

VMware-kompatibles Image mit<br />

Egroupware auf Debian-6-Basis


08/2012 08/2012<br />

Inhalt<br />

46 Freier Ausblick<br />

Wer braucht da noch Outlook, wenn die<br />

freie Webgroupware Mails, Adressen,<br />

Termine und das CRM in den Browser<br />

bringt! Fünf Server im Vergleich.<br />

62 Weg damit!<br />

Wenn es darauf ankommt, ist es gar nicht<br />

so einfach, Daten sicher zu löschen.<br />

Dc3dd, DBAN und Bleachbit helfen, Bash-<br />

Tools bei der Erfolgskontrolle.<br />

92 Gutenberg at Home<br />

Ein CPAN-Modul macht's möglich: Perlmeister<br />

Schilli überführt Dokumentationen<br />

ins richtige Format für seinen<br />

E-Book-Reader und sein Smartphone.<br />

www.linux-magazin.de<br />

5<br />

<strong>Software</strong><br />

Sysadmin<br />

Forum<br />

45<br />

Einführung<br />

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

Mint, ein Debian-E-Book und fünf Videos..<br />

61 Einführung<br />

Titel<br />

Aus dem Alltag eines Sysadmin: Charly<br />

bekommt seinen Raspberry Pi.<br />

80 Recht einfach<br />

Titel<br />

Im Ratgeber: Hardware-Upgrades, Privatkopien,<br />

3D-Drucker und Headerdateien.<br />

46 Groupware ohne Outlook<br />

Titel<br />

Egroupware, Tine 2.0, Horde, Simple<br />

Groupware und Feng Office.<br />

Das Tine-2.0-Adressbuch überzeugt durch<br />

einfache Bedienung.<br />

54 Tooltipps<br />

Swet 1.5.16, Aletheia 0.0.9, Monit 5.4, Fish<br />

0.3, Mu 0.9.8.4 und Raider 0.13.1 im Test<br />

56 Bitparade<br />

Titel<br />

Eins-zu-eins-Kopien leicht gemacht mit<br />

vier Tools zum Klonen von Festplatten.<br />

62 Festplatten richtig löschen<br />

Titel<br />

Auf 800 Grad erhitzen, einen Magneten<br />

besorgen oder 35-mal überschreiben.<br />

67 Inventur mit ACMP<br />

Die getestete Suite bietet automatische<br />

Inventarisierung, Helpdesk, Soft ware-,<br />

Lizenz- und Clientmanagement.<br />

Per Drag & Drop schiebt der Administrator ein<br />

Skript in den weißen Kommandobereich. Später<br />

wird es ACMP auf den Clients ausführen.<br />

72 Owncloud 4<br />

Titel<br />

Die neue Version bringt Verschlüsselung,<br />

Ver sio nierung und Ärger, weil das Re lease<br />

eher an eine Alpha oder Beta erinnert.<br />

83 Bücher<br />

Bücher zu KVM<br />

und zur C++-<br />

Standardbibliothek.<br />

84 Leserbriefe<br />

Auf den Punkt gebracht.<br />

Know-how<br />

85 Insecurity Bulletin<br />

Eine Schwachstelle in Xinetd zeigt, wie<br />

wenig bekannte Features und Altlasten<br />

als Einfallstore in <strong>Linux</strong>-Rechner dienen.<br />

Programmieren<br />

88 C++11 – Folge 5<br />

Synchrone Threads mit Hilfe: Wenn der<br />

Chef-Thread seine Mitarbeiter durch<br />

Bedingungsvariablen koordiniert.<br />

Mondo sichert auf CDs, DVDs, Bandlaufwerke,<br />

USB-Medien und fast beliebige Netzmounts.<br />

Service<br />

3 Editorial<br />

98 IT-Profimarkt<br />

99 Stellenanzeigen<br />

104 Veranstaltungen<br />

104 Inserenten<br />

105 Impressum<br />

106 <strong>Vorschau</strong><br />

Hardware<br />

75 Raspberry PI<br />

Titel<br />

Unter der Lupe: Was leistet der Mini-PC?<br />

Im Zeichen der Himbeere vereint der Pi viel<br />

Hardware auf der Fläche einer Scheckkarte.<br />

92 Perl-Snapshot<br />

Ein wenig Perl-Know-how und die richtigen<br />

Module reichen, um kompatible<br />

E-Books selbst zu erstellen.<br />

Auf <strong>Linux</strong> lädt Calibre die Mobi-Datei, Smartphones<br />

holen sie aus dem App-Store.


Aktuell<br />

www.linux-magazin.de News 08/2012<br />

6<br />

News<br />

Nagios-Framework Check_mk 1.2<br />

Beim jüngsten Monitoring-<br />

Workshop der Nagios-portal.<br />

de-Community am 13. Juni in<br />

München konnte Check_mk-<br />

Erfinder Mathias Kettner seine<br />

unzerstörbar gute Laune über<br />

die wenige Tage vorher in<br />

den Final-Status eingetretene<br />

Version 1.2 seiner Monitoring-<br />

<strong>Software</strong> kaum verbergen. Sowohl<br />

während seines Vortrags<br />

auf der Veranstaltung als auch<br />

am Rande im Gespräch mit<br />

dem <strong>Linux</strong>-<strong>Magazin</strong> betonte<br />

Kettner, dass dieser Versionswechsel<br />

„der bisher größte<br />

Meilenstein im Projekt“ sei<br />

und das Potenzial besitze,<br />

„neue Benutzerkreise zu erschließen“.<br />

Kettners knapp drei Jahre<br />

altes Vorhaben benutzt die<br />

Grundfunktionen von Nagios<br />

als Kernkomponente, fügt eigene<br />

intelligente Agenten und<br />

Checks hinzu und arbeitet mit<br />

eigenen Datenbankeinträgen.<br />

Wegen seines teilweise andersartigen<br />

Funktionsprinzips<br />

und der regelbasierten Konfiguration<br />

umschifft Check_mk<br />

laut Kettner in großen Umgebungen<br />

viele Performanceprobleme,<br />

die Nagios und seine<br />

Forks belasten.<br />

Die GPL-<strong>Software</strong> bringt als<br />

weitere Besonderheit eine eigene<br />

Weboberfläche mit, die<br />

das Monitoring grafisch administrierbar<br />

macht – auch<br />

sie ist in Version 1.2 komplett<br />

umgearbeitet.<br />

Beim Monitoring-Workshop<br />

treffen an zwei Tagen Anwender<br />

und Entwickler von<br />

Nagios, Shinken, Icinga und<br />

anderen Monitoring-Suites<br />

aufeinander. Die im Jahresrhythmus<br />

tagende Community-Veranstaltung<br />

wurde in<br />

diesem Jahr von der Münchner<br />

Firma Consol <strong>Software</strong><br />

ausgerichtet.<br />

n<br />

Check_mk 1.2 ist unter [http://​mathias‐kettner.​de/​check_mk_demo.​html] auch als Live-Demo zu besichtigen.<br />

Libre Office importiert Corel-Draw-Text<br />

Der Libre-Office-<br />

Ent wickler Fridrich<br />

Strba meldet, er<br />

habe erstmals Text<br />

aus Corel-Draw-Dokumenten<br />

in die<br />

freie Bürosuite importieren<br />

können.<br />

Die Unterstützung<br />

sei zwar noch rudimentär,<br />

schreibt<br />

Strba weiter in<br />

seinem Blog, aber<br />

Premiere: Importierter Corel-Draw-Text in Libre Office.<br />

dennoch einmalig in<br />

der Open-Source-Welt.<br />

Dank der nun veröffentlichten<br />

Bibliothek<br />

Libcdr 0.0.8 kann ein<br />

Entwickler-Build von<br />

Libre Office Texte aus<br />

Corel-Draw-7-Dokumenten<br />

importieren.<br />

Derzeit unterstützt die<br />

Bibliothek nur einige<br />

Parameter wie Schriftart<br />

und ‐größe, kann<br />

aber auch den Zeichensatz<br />

erkennen und stellt den Text<br />

als UTF-8-Zeichenkette dar.<br />

Viele weitere Schrifteigenschaften<br />

wie beispielsweise<br />

Farbe fehlen dem Programm<br />

aber noch. Fridrich Strba zeigt<br />

in seinem Blogeintrag unter<br />

[http://​fridrich.​blogspot.​de/​2012/​06/​<br />

​libreoffice‐coreldraw‐import‐filter.​<br />

​html] bereits ein Original-Dokument<br />

und die importierte<br />

Version im Vergleich. n


Zwei Plugins und ein Miniserver<br />

Auch wenn sich Linus<br />

Torvalds jüngst abfällig über<br />

Nvidia geäußert hat (siehe<br />

„Zahlen & Tends“), sind die<br />

Chips der Firma weit verbreitet.<br />

Der Thomas-Krenn.AG<br />

zumindest war es pünktlich<br />

bis zum <strong>Linux</strong>tag gelungen,<br />

mit »check_gpu_sensor« ein<br />

Nagios- und Icinga-Plugin<br />

fertigzustellen, das GPU-Temperatur,<br />

Lüfterdrehzahl und<br />

Speicherauslastung auf Nvidias<br />

Grafik- und Tesla-Karten<br />

erfasst. In einer späteren Version<br />

als der auf dem <strong>Linux</strong>tag<br />

gezeigten 1.0 soll das Plugin<br />

auch Grafikspeicherfehler<br />

melden können.<br />

Die Serverentwickler aus Bayern<br />

legten den Besuchern in<br />

Berlin zudem die Version 3<br />

ihres IPMI-Plugins zur Serverüberwachung<br />

vor, das nach<br />

Sabayon <strong>Linux</strong> 9 gehärtet<br />

Die Gentoo-basierte Distribution<br />

Sabayon <strong>Linux</strong> enthält<br />

in Version 9 unter anderem<br />

Kernel 3.4, Gnome 3.2.3, KDE<br />

4.8.3, Xfce 4.10 sowie Libre<br />

Office 3.5.3. Für die 32-Bit-<br />

Version gibt es zudem einen<br />

PAE-Kernel, der mehr als 4<br />

GByte RAM unterstützt. Das<br />

Sabayon 9 bringt einen neuen Anwendungs-Browser<br />

namens Rigo mit.<br />

einer Portierung auf Perl einfacher<br />

bedienbar ist und mehr<br />

Sensoren erkennt.<br />

Auf dem Messestand greifbar<br />

im körperlichen Sinne war ein<br />

selbst entwickelter und auch<br />

selbst gefertigter Low-Energy-Server<br />

im Pocket-Format,<br />

der ohne Lüfter auskommt<br />

und mit seinem Atom Z530,<br />

1 GByte RAM und Gigabit-<br />

Ethernet nur 6 bis 10 Watt<br />

aufnimmt. In den 2,5-Zoll-<br />

Schacht passen Festplatten<br />

ebenso wie SSDs.<br />

Das rund 600 Euro teure Gerät<br />

eignet sich laut Krenn-Spezialist<br />

Werner Fischer besonders<br />

gut für Remote Management,<br />

Monitoring sowie DHCP- und<br />

Log-Server in geräuschsensiblen<br />

Umgebungen. Eine Gehäuseversion<br />

für Hutschienen-<br />

Montage ist in Planung. n<br />

Dateisystem ZFS ist als Technology<br />

Preview in der <strong>Linux</strong>-<br />

Distribution enthalten.<br />

Neu ist auch das Profil „Gentoo<br />

Hardened“ für die Basisinstallation,<br />

das mit gehärteten<br />

Kernelquellen, einer Toolchain<br />

mit Pax sowie SE <strong>Linux</strong> und<br />

RSBAC für erhöhte Sicherheit<br />

sorgt.<br />

Auf dem Desktop<br />

gibt es den neuen<br />

Anwendungs-<br />

Browser Rigo,<br />

der beim Finden,<br />

Aktualisieren und<br />

Deinstallieren von<br />

<strong>Software</strong> hilft. Sabayon<br />

9 steht unter<br />

[http://​www.​sabayon.​<br />

​org/​download] zum<br />

Herunterladen bereit.<br />

n<br />

Remotebox 1.3 hält Verbindung<br />

Remotebox 1.3 – hier unter Ubuntu zu sehen.<br />

Remotebox, ein GUI für<br />

Virtualbox auf lokalen und<br />

entfernten Rechnern, rührt<br />

sich in Version 1.3 in bestimmten<br />

Abständen, verhindert<br />

damit ein Timeout und<br />

sorgt für das Weiterbestehen<br />

der Netzwerkverbindung.<br />

Daneben gibt es weitere Verbesserungen<br />

beim Connection<br />

Handling. USB-Geräte lassen<br />

sich während des Betriebs anschließen<br />

oder entfernen. Außerdem<br />

haben die Entwickler<br />

Storage-Provisionierung ferngesteuert<br />

sich bemüht, das GUI reaktionsfreudiger<br />

zu machen. Weitere<br />

Neuerungen finden sich<br />

in der Ankündigung.<br />

Das in Perl und GTK umgesetzte<br />

Remotebox verwaltet<br />

lokale oder entfernte Virtualbox-Instanzen.<br />

Das Tool kann<br />

Gäste erstellen, konfigurieren,<br />

starten, stoppen und pausieren.<br />

Remotebox steht als Tarball<br />

unter [http://​remotebox.​<br />

​knobgoblin.​org.​uk/​downloads.​cgi]<br />

zum Download.<br />

n<br />

Der Kernelentwickler Andy<br />

Grover arbeitet an einem<br />

Dienst namens Targetd, der<br />

<strong>Linux</strong>-Storage-Server steuern<br />

soll. Grover möchte eine Lösung<br />

schaffen, die Volumes<br />

ferngesteuert per I-SCSI oder<br />

einem anderen Protokoll exportiert.<br />

Sie soll unter anderem<br />

zur Provisionierung von<br />

VM-Images dienen.<br />

Zu diesem Zweck hat er ein<br />

Remote-API auf der Basis von<br />

Json-RPC 2.0 über HTTP definiert<br />

und in einer ersten Python-Implementierung<br />

veröffentlicht.<br />

Ein Github-Repository<br />

enthält den Server und<br />

noch ein einfaches Clientskript<br />

zum Testen, die Lizenz<br />

ist GPLv3.<br />

Der Entwickler bezeichnet<br />

den Code als Prä-Alpha-<br />

<strong>Software</strong>, die man keinesfalls<br />

auf wertvolle Daten loslassen<br />

solle. Hintergründe beschreibt<br />

er in dem Blogeintrag [http://​<br />

​groveronline.​com/​2012/​06/​targetd<br />

‐remote‐storage‐admin/] auf seiner<br />

Homepage.<br />

n<br />

News 08/2012<br />

Aktuell<br />

www.linux-magazin.de<br />

7


Aktuell<br />

www.linux-magazin.de News 08/2012<br />

8<br />

Opera 12 mit Themes, Kamera und Web GL<br />

Themes – zum Teil quietschbunt – zählen zu den Neuerungen in Opera 12. Die<br />

Unterstützung von Web GL ist eine weitere.<br />

Der norwegische Hersteller<br />

Opera hat seinen Webbrowser<br />

in Version 12 veröffentlicht.<br />

Die im Wortsinn augenfälligste<br />

Neuerung sind Themes<br />

zur Gestaltung der Benutzeroberfläche.<br />

Sie stehen auf der<br />

Addon-Seite für den Browser<br />

zuhauf bereit.<br />

Daneben erlaubt Opera nun<br />

den Webanwendungen, auf<br />

die Webcam des Rechners zuzugreifen<br />

– wenn der Benutzer<br />

es zulässt. Spaßprogramme<br />

für Passfotos und Polaroids<br />

sind die ersten Anwendungen<br />

des Features.<br />

In puncto Sicherheit haben<br />

die Entwickler die Symbole<br />

für Privacy-Einstellungen<br />

verbessert und das Do-nottrack-Feature<br />

aktiviert. Die<br />

Performance erfährt ebenfalls<br />

Verbesserungen, etwa indem<br />

Plugins nun in einen eigenen<br />

Prozess verbannt sind. Außerdem<br />

bietet der Browser erstmals<br />

Unterstützung für Web<br />

GL, wenn auch noch als experimentell<br />

bezeichnet. Diese<br />

Hardwarebeschleunigung<br />

für Webgrafiken muss der<br />

Anwender allerdings explizit<br />

aktivieren.<br />

Eine Seite für Webentwickler<br />

beschreibt die neu unterstützten<br />

HTML-5-Features wie<br />

Drag & Drop und CSS-Animation.<br />

Das Changelog [http://​<br />

​www.​opera.​com/​docs/​changelogs/​<br />

​unix/​1200/] fasst die Neuerungen<br />

zusammen.<br />

Der kostenlose Closed-Source-<br />

Browser steht in Paketen für<br />

zahlreiche <strong>Linux</strong>-Distributionen<br />

zum Download bereit.<br />

Daneben sind auch weitere<br />

Ausgaben für Windows, Mac<br />

OS X, Free BSD und Solaris im<br />

Angebot.<br />

n<br />

Monkey HTTP Daemon 1.0 macht Tempo<br />

Monkey HTTP Daemon, ein<br />

Webserver für Embedded-<br />

Systeme, bietet in Version<br />

1.0 bessere Performance. Der<br />

Geschwindigkeitszuwachs ist<br />

dem mittlerweile Lock-freien<br />

Kern der <strong>Software</strong> sowie Verbesserungen<br />

an Scheduler<br />

und Speicherverwaltung zu<br />

verdanken. Daneben haben<br />

die Entwickler den Code bereinigt<br />

und mit GCC 4.7 zum<br />

Kompilieren gebracht. Weitere<br />

Details sind in den Release<br />

Notes [http://​monkey‐project.​<br />

​com/​Announcements/​v1.​0.​0] nachzulesen.<br />

Der Event-gesteuerte Webserver<br />

besitzt eine Plugin-<br />

Schnittstelle und bietet<br />

UCS@school 3.0 mit Samba 4 und Mobil-Integration<br />

Das Unternehmen Univention<br />

hat UCS@school, sein Serverund<br />

Managementprodukt für<br />

Schulen und Bildungseinrichtungen,<br />

als Version 3.0 veröffentlicht.<br />

Die Release bietet<br />

eine überarbeitete Weboberfläche<br />

zur Verwaltung der<br />

Benutzer und Dienste, die<br />

auf Javascript und CSS setzt.<br />

Wegen der Aktualisierung des<br />

Corporate-Servers als Kernstück<br />

kann auch der Schulserver<br />

dank Samba 4 als Domain<br />

Controller für Microsofts<br />

Active Directory dienen.<br />

Die freie Bildschirm-Steuersoftware<br />

Italc für den Lehrer<br />

ist in Version 2 an Bord, die<br />

auch Windows 7 unterstützt.<br />

Embedded-Entwicklern ein<br />

C-API. Daneben unterstützt<br />

die GPL-<strong>Software</strong> auch SSL,<br />

schreibt Protokolle und kann<br />

Verzeichnisinhalte anzeigen.<br />

Die neue Release des Daemon<br />

mit dem Codenamen „Monkey<br />

I/​O“ steht als Quelltext-<br />

Tarball zum Download beim<br />

Projekt bereit.<br />

n<br />

Eine weitere Neuerung ist die<br />

Integration von mobilen Geräten<br />

im WLAN, hier kommt Freeradius<br />

zur Authentifizierung<br />

zum Einsatz. Das kommerziellen<br />

UCS@school 3.0 gibt es<br />

als Testversion auf [http://​www.​<br />

​linux‐magazin.​de/​als%20Testversion]<br />

zum Download nach vorheriger<br />

Registrierung. n<br />

Knoppix 7.0.2<br />

– frische Ware<br />

Reichlich mit <strong>Software</strong>-Updates<br />

versehen hat Klaus<br />

Knopper die Version 7.0.1<br />

seiner beliebten Live-Distribution<br />

Knoppix veröffentlicht.<br />

Zu den Neuerungen zählt laut<br />

der informativen Ankündigung<br />

[http://​knopper.​net/​knoppix/​<br />

​knoppix702.​html] das kürzlich<br />

erschienene Gimp 2.8. Außerdem<br />

sind Libre Office 3.5.3,<br />

Chromium 18.0.1025.168 und<br />

Firefox 10.0 dabei. Wine 1.5.4<br />

integriert nun Windows-Anwendungen,<br />

Virtualbox 4.1.14<br />

dient der Live-DVD als Virtualisierungslösung.<br />

Die Knoppix-spezifischen<br />

Einstellungen finden Anwender<br />

nun wieder – wie einst<br />

– im Knoppix-Untermenü des<br />

Startmenüs. Die Rückkehr an<br />

diese Stelle soll den Nutzern<br />

den Weg in das umfangreiche<br />

Startmenü ersparen. n


Neuheiten von O’Reilly<br />

Lösungen vorprogrammiert<br />

Emacs 24.1 mit Paketmanager<br />

Der programmierbare Editor<br />

GNU Emacs verwendet in der<br />

neuen Major-Version 24.1 das<br />

Paketsystem ELPA für Erweiterungen,<br />

das sich mit »M-x<br />

list-packages« aufrufen lässt.<br />

Das zugehörige Repository ist<br />

[elpa.gnu.org]. Daneben unterstützt<br />

Emacs nun bidirektionalen<br />

Text, also auch Arabisch<br />

und Hebräisch. Themes<br />

lassen sich nun bequem per<br />

»M-x customize-themes« anpassen.<br />

Emacs-Hacker können<br />

lexikalisches Scoping für<br />

einzelne Emacs-Lisp-Dateien<br />

aktivieren. Als Compile-Zeit-<br />

Option steht die Anbindung<br />

einiger Bibliotheken zur Verfügung:<br />

GTK 3, Libxml2, Image<br />

Magick, SE <strong>Linux</strong> sowie Gnu<br />

TLS, das Verschlüsselung für<br />

Netzwerkverbindungen in die<br />

Anwendung einbaut.<br />

Details finden sich in der<br />

News-Datei [http://​www.​gnu.​<br />

​org/​software/​emacs/​NEWS.​24.​1] zu<br />

Emacs 24.1. Die neue Emacs-<br />

Release steht auf den Mirror-<br />

Servern des GNU-Projekts als<br />

Quelltext-Tarball zum Herunterladen<br />

bereit.<br />

n<br />

Clusterbau: Hochverfügbarkeit<br />

mit <strong>Linux</strong>, 3. Auflage<br />

Michael Schwartzkopff, 424 Seiten, 2012, 44,90 €<br />

ISBN 978-3-86899-358-5<br />

Von modernen IT­Diensten wird erwartet,<br />

dass sie ohne wahrnehmbare Ausfallzeit kontinuierlich<br />

zur Verfügung stehen. Wie Systemadministratoren<br />

dies mit Hilfe der Clustersoftware<br />

pacemaker erreichen können, zeigt<br />

Hochverfügbarkeitsexperte Dr. Michael<br />

Schwartzkopff in dieser aktualisierten dritten<br />

Auflage. Er beleuchtet, was Hoch verfügbarkeit<br />

bedeutet, führt in die Grund lagen von<br />

Clustern ein und erklärt praxisnah die<br />

Arbeitsweise der verschiedenen Programme.<br />

Computer-Forensik Hacks<br />

Lorenz Kuhlee & Victor Völzow<br />

344 Seiten, 2012, 34,90 €<br />

ISBN 978-3-86899-121-5<br />

100 Tricks und Tools moderner Computerforsensik<br />

– und alles Open Source! Dieses<br />

Buch zeigt in detailliert beschriebenen Hacks<br />

die State­of­the­Art­Ansätze der modernen<br />

Computerforensik – von der Sicherung und<br />

Wiederherstellung von Daten und Spuren bis<br />

zur Diagnose typischer Angriffszenarien.<br />

Google zeigt Chromebook und Chromebox<br />

Google hat neue Hardware<br />

für sein Browser-zentriertes<br />

Betriebssystem Chrome OS<br />

vorgestellt. Damit gibt es einen<br />

Nachfolger für das Notebook<br />

Chromebook sowie mit<br />

der Chromebox einen neuen<br />

stationären Rechner. Die von<br />

Samsung gefertigten Geräte<br />

bewirbt Google als „The (always)<br />

new computer“. Der<br />

Slogan soll die automatische<br />

Aktualisierung der auf Web<br />

und Cloud fixierten Hardware<br />

unterstreichen.<br />

Das Chromebook ist mit einem<br />

12,1-Zoll-Display ausgestattet,<br />

besitzt einen eingebauten Virenschutz,<br />

ist mit Apps vorbestückt<br />

und nutzt als Speicherplatz<br />

Googles Cloudlösung.<br />

Ausgestattet mit einem Celeron<br />

867 mit 1,3 GHz, 4 GByte<br />

RAM und 16 GByte SSD kostet<br />

das Chromebook bei Amazon<br />

in den USA in der WLAN-Ausführung<br />

450 US-Dollar. Preise<br />

für den deutschen Markt fehlen<br />

noch.<br />

Die ohne Peripherie wie einen<br />

Bildschirm ausgelieferte<br />

Chromebox ist mit 330 US-<br />

Dollar gelistet. Ein 1,9 GHz-<br />

Dualcore-Celeron B840 tut mit<br />

Intels HD-Grafiklösung Dienst<br />

und greift auf 4 GByte RAM<br />

und 16 GByte SSD-Speicherplatz<br />

zurück.<br />

n<br />

Making Things Talk<br />

Tom Igoe, 486 Seiten, 2012, 39,90 €<br />

ISBN 978-3-86899-162-8<br />

Mit 33 leicht nachzubauenden Projekten<br />

zeigt Tom Igoe in diesem Buch, wie man<br />

Mikrocontroller, PCs, Server und Smartphones<br />

zum Kommu nizieren bringt.<br />

Geschrieben für Menschen, die zwar nur<br />

wenig technische Erfahrung, dafür aber umso<br />

mehr geekige Neugier mitbringen.<br />

In den USA in der 1. Auflage DAS Standardwerk<br />

über Physical Computing!<br />

Fitness for Geeks<br />

Bruce W. Perry<br />

331 Seiten, 2012, 29,- €<br />

ISBN 978-1-4493-9989-4<br />

This guide will help you experiment with<br />

one crucial system you usually ignore –<br />

your body and its health. Long hours focusing<br />

on code or circuits tends to stifle<br />

notions of nutrition, but with this educational<br />

and highly useful book you can<br />

approach fitness through science.<br />

Blog:<br />

community.oreilly.de/blog<br />

Google+:<br />

bit.ly/googleplus_oreillyverlag<br />

Facebook:<br />

facebook.com/oreilly.de<br />

Twitter:<br />

twitter.com/oreilly_verlag<br />

Mit der Chromebox (links) startet Google in eine neue Geräteklasse. Das neue<br />

Chromebook (rechts) ist mit WLAN und optional mit zusätzlichem 3G erhältlich.<br />

O’REILLY ®<br />

www.oreilly.de


Aktuell<br />

www.linux-magazin.de News 08/2012<br />

10<br />

Kurznachrichten<br />

Music 21 1.0: Ein Python-Toolkit für Musikwissenschaftler, das von einem<br />

Team am MIT betreut wird. Neu: Die <strong>Software</strong> kann beispielsweise eine Melodie<br />

in Noten setzen, eine Zwölfton-Matrix erstellen, Musik auf Graphen<br />

abbilden oder eine Google-Suche nach Textpassagen anstoßen. Lizenz:<br />

GPL [http://​code.​google.​com/​p/​music21/​downloads/​list]<br />

Gnumed 1.2.0: Ein Open-Source-System für digitale Patientenakten. Neu:<br />

Ein neues Plugin zeigt eine Patientenübersicht, in der Personalverwaltung<br />

lassen sich nun Einträge auch löschen. Weitere Plugins zeigen die aktuelle<br />

Medikation nach Gesundheitsproblemen geordnet an und nehmen<br />

Notizen auf. Das Bundesministerium für Justiz hat ein PDF-Formular<br />

für die Vorsorgevollmacht beigesteuert. Neue Platzhalter machen das<br />

Erzeugen von Berichten einfacher. Gleichzeitig mit dem neuen Client ist<br />

der Gnumed-Server in Version 17.0 erschienen. Lizenz: GPL [http://​wiki.​<br />

​gnumed.​de/​bin/​view/​Gnumed]<br />

Lightspark 0.6.0.1: Die freie Flashplayer-Implementierung Lightspark<br />

erreicht eine Major-Version. Neu: Auf Anwenderseite ist die Unterstützung<br />

für den Videoplayer der britischen Rundfunkgesellschaft BBC dazugekommen.<br />

Daneben verträgt sich der Player mit der Einstellung »flat volumes«<br />

des Soundsystems Pulseaudio. Die Entwickler haben den Speicherbedarf<br />

reduziert sowie das Kompilieren mit LLVM 3.1 ermöglicht und rudimentäre<br />

Unterstützung für Desktopanwendungen auf Basis von Adobe Air eingebaut.<br />

Lizenz: GPLv3 [https://​launchpad.​net/​lightspark]<br />

Chaiscript 5.0.0: Eine freie Skriptsprache zum Einbetten in C++-Anwendungen.<br />

Neu: Die neue Release benötigt die Boost-Bibliotheken nicht<br />

mehr. Dafür ist aber zum Kompilieren ein C++11-fähiger Compiler erforderlich,<br />

also G++ ab Version 4.5 oder Clang ab 3.1. Microsofts Visual-C++-<br />

Compiler eignet sich dagegen nicht. Die Performance hat sich laut den<br />

Entwicklern um ein Viertel verbessert. Die Chai-Standardbibliothek lässt<br />

sich separat übersetzen. Lizenz: BSD-Lizenz mit drei Klauseln [http://​<br />

​www.​chaiscript.​com]<br />

Digikam 2.6.0: Eine freie Programmsuite für die Digitalfotografie. Neu:<br />

Die Suite enthält einen Taskmanager, der alle laufenden Prozesse der<br />

<strong>Software</strong> auflistet, inklusive der Kipi-Plugins. Ebenfalls neu ist das<br />

Maintenance-Tool, das Tätigkeiten für die Pflege von Fotosammlungen<br />

zusammenfasst, etwa das Aufspüren von Duplikaten, das Erzeugen von<br />

Thumbnails oder die Gesichtserkennung. Daneben kann die neue Version<br />

Dateien zum Bilder-Hoster Imageshack hochladen. Digikam verwendet<br />

nun die Bibliothek Little CMS 2 für das Farbmanagement. Lizenz: GPLv2<br />

[http://​sourceforge.​net/​projects/​digikam/​files/​digikam/​2.​6.​0/]<br />

PAC 4.2: PAC ist ein in Perl und GTK umgesetzter GUI-Manager für Telnet-,<br />

SSH- und Remote-Desktop-Verbindungen Neu: Die Release führt Lesezeichen<br />

und Verbindungshistorie als Neuerungen ein. Das Expect-Scripting<br />

erhält neue Optionen. Daneben kann der Anwender pro Terminalfenster<br />

Variablen konfigurieren und Kommandos bei geglückter Verbindung<br />

automatisch ausführen lassen. Lizenz: GPLv3 [http://​sourceforge.​net/​<br />

​projects/​pacmanager/​files/​pac‐4.​0/]<br />

Obnam 1.0: Der finnische <strong>Linux</strong>-Entwickler Lars Wirzenius hat seine freie<br />

Backupsoftware Obnam in der produktionsreifen Version 1.0 veröffentlicht.<br />

Neu: Das Programm erstellt Snapshots, kann Daten deduplizieren<br />

und unterstützt Verschlüsselung mit Gnu PG. Daneben lassen sich Backups<br />

per Push und Pull zwischen Clients und Servern austauschen, was mittels<br />

SFTP erfolgt. Außerdem ist die Python-<strong>Software</strong> mandantenfähig und<br />

kann die Daten mehrerer Kunden in einem einzigen Repository speichern.<br />

Lizenz: GPLv3 [http://​liw.​fi/​obnam/​download/]<br />

Grml 2012.05 mit Sysstat und in Klein<br />

<strong>Linux</strong> Mint 13 mit Long-Term-Support<br />

Das Debian-Derivat Grml ist<br />

in Version 2012.05 mit dem<br />

Codenamen Ponyhof erhältlich.<br />

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

für Kommandozeilen-Benutzer<br />

verwendet Kernel 3.3.7<br />

und liefert <strong>Software</strong>pakete<br />

aus Debian Testing mit Stand<br />

28. Mai. Neu hinzugekommen<br />

ist das Sysstat-Paket, daneben<br />

haben die Entwickler einige<br />

Bugs behoben. Die Bootoption<br />

»ssh« setzt ein angegebenes<br />

Grml 2012.05 mit Fluxbox als Windowmanager.<br />

oder generiertes SSH-Passwort<br />

für die Benutzer Grml und<br />

Root. Das Grml-Feedback-Tool<br />

ist verschwunden, dafür gibt<br />

es die Distribution nun wieder<br />

in der schlanken Ausgabe<br />

„Grml-small“.<br />

Das Ponyhof-Grml steht als<br />

Full-Version mit 350 MByte sowie<br />

als Small-Variante mit 150<br />

MByte für i586 und AMD64<br />

zum Download [http://​grml.​org/​<br />

​download/].<br />

n<br />

Mint 13 mit dem Codenamen „Maya“.<br />

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

<strong>Linux</strong> Mint ist<br />

in Version 13 mit aktualisierter<br />

<strong>Software</strong><br />

erhältlich. Die neue<br />

Release basiert auf<br />

Ubuntu 12.04 und<br />

stellt wie diese Updates<br />

bis April 2017<br />

zur Verfügung.<br />

Mint 13 mit dem<br />

Codenamen „Maya“ gibt es in<br />

zwei Varianten: Die Desktopumgebung<br />

Mate 1.2 führt die<br />

Tradition von Gnome 2.x mit<br />

dem Toolkit GTK 2 weiter, der<br />

modernere Cinnamon-Desktop<br />

1.4 beruht auf Gnome<br />

3.x und GTK 3 und verlangt<br />

3-D-Beschleunigung für seine<br />

Effekte. Daneben kommt der<br />

neue Display Manager MDM<br />

zum Einsatz, der von Gnomes<br />

GDM abstammt. Zudem ist<br />

Maya auf Yahoo als voreingestellte<br />

Web-Suchmaschine<br />

umgestiegen, womit das Projekt<br />

Einnahmen erzielt.<br />

Weitere Informationen zur<br />

neuen Ausgabe stehen in den<br />

Release Notes [http://​linuxmint.​<br />

​com/​rel_maya.​php]. Dort findet<br />

sich auch ein Workaround für<br />

Benutzer von Broadcom-B34-<br />

WLAN-Karten. <strong>Linux</strong> Mint 13<br />

steht in Form von ISO-Images<br />

für x86 und x86_64 zum<br />

Download bereit. (mfe/jk/<br />

mhu/uba)<br />

n


Born to<br />

be ROOT!<br />

keine Mindestvertragslaufzeit<br />

keine Einrichtungsgebühr<br />

Root Server r <strong>Linux</strong><br />

Level<br />

el 1. Der effiziente<br />

ente Sprinter!<br />

SICHERHEIT UND EFFIZIENZ<br />

CPU<br />

Leistung<br />

RAM<br />

HD<br />

Traffic<br />

,00<br />

€/Mon.*<br />

Intel Sandy Bridge G530<br />

2 x 2,4 GHz<br />

4 GB<br />

1000 GB<br />

Unlimited*<br />

r<br />

ie<br />

NaturEnergie<br />

NaturEnerg<br />

Sie gehen keine e Kompromisse omisse<br />

in Sachen Datensicher-<br />

heit ein? Wir<br />

auch nicht! Unsere e Rechenzentren en<br />

entren sind<br />

streng nach<br />

ISO 27001 01<br />

TÜV-zertifiziert. t. Gleichzeitig<br />

eitig<br />

denken n wir<br />

an<br />

die Umwelt und nutzen regenerative<br />

enerativ<br />

Energien.<br />

n.<br />

Der<br />

Root ot<br />

Server <strong>Linux</strong> Level el<br />

1 von STRATO holt das Optimum an<br />

Leistung und Energieeffizienz eeffizienz heraus, was aktuelle e Server-Hard-<br />

ware<br />

hergibt. Was<br />

wir<br />

an<br />

Energie e sparen<br />

geben wir<br />

durch<br />

den<br />

günstigen n Preis gerne an Sie weiter. Profitieren Sie<br />

davon!<br />

* Traffic-Unlimited: Keine zusätzlichen Kosten durch Traffic (bei Traffic-Verbrauch über 1.000 GB/ Monat<br />

und danach je weitere 300 GB erfolgt eine Umstellung der Anbindung auf max. 10 MBit/s. Erneute Freischaltung<br />

der vollen Bandbreit jeweils kostenlos über den Kundenservicebereich). Alle Preise inkl. MwSt.<br />

Info: 0 18 05 - 00 76 77 | strato-pro.de<br />

(0,14€/Min. aus dem dt. Festnetz, Mobilfunk max. 0,42€/Min.)


Aktuell<br />

www.linux-magazin.de Zahlen & Trends 08/2012<br />

12<br />

Zahlen & Trends<br />

Enquete-Gruppe „Open Source“ startet<br />

Die Enquete-Kommission des Deutschen Bundestags ist um die Projektgruppe<br />

„Interoperabilität, Standards, Open Source“ reicher.<br />

Am 11. Juni 2012 und damit<br />

ein halbes Jahr verspätet hat<br />

sich die Projektgruppe „Interoperabilität,<br />

Standards, Open<br />

Source“ der Enquete-Kommission<br />

des Deutschen Bundestags<br />

konstituiert. Der Bundestagsabgeordnete<br />

Jimmy<br />

Schulz (FDP) hat den Vorsitz.<br />

Neben ihm stimmberechtigt<br />

sind Dr. Reinhard Brandl<br />

(CSU), Harald Lemke (Deutsche<br />

Post AG), Dr. Bernhard<br />

Rohleder (Bitkom e.V.), Nicole<br />

Simon (Social-Media-Unternehmensberaterin),<br />

Alvar<br />

Freude (<strong>Software</strong>-Entwickler),<br />

Cornelia Tausch (Bundesverband<br />

Verbraucherzentrale),<br />

Markus Beckedahl (Netzpolitik.org)<br />

und Annette Mühlberg<br />

(Ver.di).<br />

Nicht stimmberechtige Mitglieder<br />

sind: Prof. Dr. Christof<br />

Weinhardt (Uni Karlsruhe),<br />

Dr. Konstantin von Notz und<br />

Tabea Rößner (beide B’90/​Die<br />

Grünen), Padeluun (Künstler<br />

und Netzaktivist), Dr. Jeanette<br />

Hofmann (Humboldt-Institut<br />

für Internet und Gesellschaft)<br />

sowie Halina Wawzyniak<br />

(Linke).<br />

Die Enquete-Kommission organisiert<br />

sich in zwölf Projektgruppen.<br />

Vier davon sind<br />

bereits beendet, vier tagen<br />

noch. Das übrige Drittel, neben<br />

„Interoperabilität, Standards,<br />

Open Source“ sind das<br />

„Kultur, Medien, Öffentlichkeitsarbeit“,<br />

„Verbraucherschutz“<br />

und „Internationales<br />

und Internet Governance“,<br />

starten nun.<br />

Dass die Nachzügler bis zur<br />

parlamentarischen Sommerpause<br />

ihr Beratungspensum<br />

angemessen absolvieren<br />

können und Ergebnisse sowie<br />

Handlungsempfehlungen<br />

vorlegen, gilt als nahezu unmöglich.<br />

Einer Verlängerung<br />

der Enquete-Periode müsste<br />

der Bundestag zustimmen,<br />

in einer der kommenden parlamentarischen<br />

Sitzungswochen<br />

soll das Thema auf die<br />

Tagesordnung gesetzt werden.<br />

Auf dem Portal Enquetebeteiligung.de<br />

sind die Bürger eingeladen,<br />

Ideen und Vorschläge<br />

einzubringen.<br />

Für die Open-Source-Gruppe<br />

verlaufen die Abstimmungen<br />

bislang verhalten. Zum Redaktionsschluss<br />

des <strong>Linux</strong>-<br />

<strong>Magazin</strong>s diskutierten 88<br />

registrierte Basisdemokraten<br />

über acht Themen. Auf<br />

die meiste Zustimmung trifft<br />

die Forderung nach einem<br />

freien Elster-Client und dem<br />

Grundsatz der Nicht-Diskriminierung<br />

bei Formaten und<br />

verpflichtender Interoperabilität.<br />

Wenig Interesse ruft die<br />

im schönen Behördendeutsch<br />

ersehnte „Anordnung der Erstellung<br />

einer Dokumentation<br />

von Kommunikationsschnittstellen“<br />

vor.<br />

n<br />

Mitgliederzuwachs bei der <strong>Linux</strong> Foundation<br />

Die <strong>Linux</strong> Foundation darf<br />

sich über einen weiteren<br />

Sponsor für ihre Aktivitäten<br />

rund um das freie Betriebssystem<br />

freuen. Samsung Electronics<br />

hat sich als so genanntes<br />

Platinum-Mitglied beworben.<br />

Mit Adeneo, Feuerlabs, Omnibond,<br />

Stec und Synopsys<br />

begrüßt die <strong>Linux</strong> Foundation<br />

zudem fünf neue Mitglieder<br />

im Silber-Status.<br />

Samsung, auch wegen seiner<br />

Android- und sonstigen<br />

<strong>Linux</strong>-basierten Geräte einer<br />

der erfolgreichsten Hersteller<br />

weltweit, sieht sich mit der<br />

Mitgliedschaft einen Beitrag<br />

für die Weiterentwicklung von<br />

<strong>Linux</strong> leisten. Der koreanische<br />

Konzern will sich auch an der<br />

Kernelentwicklung beteiligen.<br />

Jim Zemlin, Direktor der<br />

<strong>Linux</strong> Foundation, sieht eine<br />

Win-win-Situation, Samsung<br />

festige damit seine Erfolgsstrategie.<br />

Die sieben Platin-Mitglieder<br />

zahlen einen Jahresbeitrag<br />

von 500 000 US-Dollar und<br />

besetzen einen Sitz im Board<br />

of Directors der Stiftung. Ein<br />

so genanntes Silver Member<br />

zahlt, abhängig von der Firmengröße,<br />

einen Jahresbeitrag<br />

zwischen 5000 und 20 000 US-<br />

Dollar. Ihre Mitglieder stellt<br />

die <strong>Linux</strong> Foundation im Web<br />

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

​about/​members] vor. n


Torvalds Fingerzeig gegen Nvidia<br />

In einem Youtube-Video, das<br />

Linus Torvalds beim Aalto<br />

Center for Entrepreneurship<br />

(ACE) in Otaniemi zeigt, findet<br />

der <strong>Linux</strong>-Gründer deutliche<br />

Worte für die mangelhafte<br />

Kooperationsbereitschaft des<br />

Grafikchipherstellers Nvidia.<br />

Gut eine Stunde dauert das<br />

Interview [https://​www.​youtube.​<br />

​com/​watch?​feature=player_embedded&​v=MShbP3OpASA],<br />

das Gastgeber<br />

Will Caldwell mit Linus<br />

Torvalds führte.<br />

Gegen Ende der Veranstaltung<br />

schildert ihm eine enttäuschte<br />

Zuschauerin ihre Probleme mit<br />

einem Notebook mit Dualgrafik<br />

und berichtet, Nvidia habe<br />

sie einfach abgewiesen und<br />

keinerlei Kooperationsbereitschaft<br />

gezeigt. Die Dame aus<br />

dem Publikum fragt Torvalds,<br />

was sein Kommentar zu solch<br />

Open-Source-feindlichem Verhalten<br />

sei.<br />

Torvalds dazu: „Ich weiß genau,<br />

worüber sie sprechen.<br />

Aber ich bin sehr froh, dass<br />

das eher die Ausnahme als die<br />

Regel ist. Und ich bin auch sehr<br />

froh, dass ich hier öffentlich<br />

sagen darf, dass Nvidia einer<br />

der schlimmsten Brennpunkte<br />

in Sachen Hardwarehersteller<br />

ist, den wir je hatten. Und das<br />

ist umso trauriger, weil Nvidia<br />

versucht sehr, sehr viele<br />

Spontane Meinungsäußerung im gewohnt deutlichen Stil von Linus Torvalds.<br />

Chips auf dem Android-Markt<br />

zu verkaufen. Nvidia ist die<br />

schlimmste Firma, mit der wir<br />

je zu tun hatten.“<br />

© Aalto University<br />

Zur Verdeutlichung seines<br />

Mißfallens reckte Torvalds<br />

dann noch den Mittelfinger in<br />

die Kamera.<br />

n<br />

Zahlen & Trends 08/2012<br />

Aktuell<br />

www.linux-magazin.de<br />

13<br />

Anmeldung für Open-Suse-Konferenz & Co.<br />

Dell setzt auf ARM-Server<br />

2 0 1 2<br />

October 20-23<br />

bostrapping-awesome.org<br />

Die Open-Suse-Konferenz in Prag beheimatet<br />

noch weitere Events rund um Open Source.<br />

Die Anmeldung zur Open-<br />

Suse-Konferenz, die vom 20.<br />

bis 23. Oktober 2012 in Prag<br />

stattfindet, ist eröffnet. Auch<br />

Beiträge zum Programm werden<br />

noch angenommen. Die<br />

technische Universität Prag<br />

beherbergt gleichzeitig weitere<br />

Treffen: Die Gentoo Miniconf,<br />

die tschechischen <strong>Linux</strong><br />

Days, einen Track namens<br />

Future Media sowie die Suse<br />

Labs Conference.<br />

Die kostenlose Registrierung<br />

ist nun per Webformular<br />

möglich. Wer die Veranstaltung<br />

unterstützen möchte,<br />

kann ein Supporter-Paket für<br />

40 Euro oder den Professional-Tarif<br />

für 250<br />

Euro wählen. Förderer<br />

nehmen am Dinner der<br />

Referenten teil, Professionals<br />

treffen sich<br />

zudem mit dem Suse-<br />

Management.<br />

Weitere Informationen<br />

zur Veranstaltung gibt<br />

es auf einer Portalseite<br />

unter [http://​en.​opensuse.​<br />

​org/​Portal:Conference] im<br />

Open-Suse-Wiki. Der<br />

Call for Papers ist noch<br />

nicht abgeschlossen,<br />

interessierte Sprecher<br />

sind eingeladen, Beiträge<br />

einzureichen. n<br />

Der Computerhersteller<br />

Dell hat mit<br />

Tests für Betriebssysteme<br />

und Anwendungen<br />

auf<br />

ARM-Servern begonnen.<br />

Ein Server-<br />

Modell sei unter<br />

dem Namen Copper<br />

[http://​content.​<br />

​dell.​com/​us/​en/​enterprise/​d/​campaigns/​project‐copper.​aspx]<br />

bereits<br />

an ausgewählte<br />

Kunden geliefert<br />

worden, heißt es in einer<br />

Mitteilung. Bei Dell steht<br />

die gesamte ARM-Entwicklung<br />

unter dem Projektnamen<br />

Copper.<br />

Zu diesen ersten Kunden zählen<br />

Canonical und Cloudera.<br />

Zum Test ist unter anderem<br />

der Remote-Zugang zu Copper-Serverclustern<br />

bei Dell<br />

vorgesehen. Zudem will der<br />

Hersteller auch ARM-Versionen<br />

seiner Open-Source-Ma-<br />

Steve Cumings vom Dell Data Center Solutions<br />

präsentiert das Projekt Copper.<br />

nagement-Infrastructure-Soft-<br />

ware ausliefern. Strategisch<br />

sieht Dell die Nachfrage nach<br />

ARM-Installationen in den<br />

Bereichen Webfrontend- und<br />

Hadoop-Umgebungen steigen.<br />

Die meisten Lösungen<br />

seien im Open-Source- und<br />

im nicht-operativen Umfeld<br />

verfügbar, heißt es weiter,<br />

deshalb wolle Dell die Weiterentwicklung<br />

dieses Partnersystems<br />

unterstützen. n


Aktuell<br />

www.linux-magazin.de Zahlen & Trends 08/2012<br />

14<br />

Top 500: Der Viertschnellste steht in München<br />

Im Rahmen der Opening Session<br />

der International Supercomputing<br />

Conference ISC<br />

’12 in Hamburg wurde die<br />

39. Liste der 500 schnellsten<br />

Computer der Welt präsentiert.<br />

Der neue Spitzenreiter,<br />

das Sequoia-System (IBM Blue<br />

Gene/​Q) des Lawrence Livermore<br />

National Laboratory in<br />

den USA, erreicht unter <strong>Linux</strong><br />

mit insgesamt 1 572 864 Cores<br />

einen maximalen Linpack-<br />

Wert von 16 324,8 Teraflops<br />

(16,32 Petaflops).<br />

Auf dem Fuß folgt ihm der<br />

japanische K-Computer mit<br />

Sparc-64-CPUs, der vormalige<br />

Spitzenreiter, mit 10 510<br />

Teraflops. Schon auf Platz<br />

vier findet sich der eben erst<br />

in Betrieb genommene Super<br />

MUC des Leibniz-Rechenzentrums<br />

der TU München, der<br />

schnellste Rechner in Europa,<br />

der immerhin 2897 Teraflops<br />

aufzubieten hat und von IBM<br />

installiert wurde.<br />

IBM dominiert wie in den Jahren<br />

zuvor souverän die Rangfolge<br />

der erfolgreichsten Hersteller<br />

von Supercomputern:<br />

213 der Top 500 stammen von<br />

IBM, was einen Anteil von 43<br />

Prozent ausmacht. Auf Platz<br />

zwei findet sich HP mit 27<br />

Prozent Anteil, andere Hersteller<br />

wie Dell, Fujitsu, Cray<br />

oder Bull erreichen nur einstellige<br />

Prozentwerte.<br />

Untersucht man die Verteilung<br />

der Superrechner nach Regionen,<br />

dann entfällt die Hälfte<br />

der Installationen auf die<br />

USA. Bereits auf dem zweiten<br />

Platz folgt mit 14 Prozent<br />

China, das in den letzten Jahren<br />

sehr stark zugelegt hat.<br />

Deutschland (4 Prozent) spielt<br />

in einer Liga mit Frankreich<br />

(4 Prozent) oder England (5<br />

Prozent), stellt aber mit dem<br />

Ju Queen des Forschungszentrums<br />

Jülich immerhin ein<br />

zweites System unter den Top<br />

10 (Platz 8).<br />

Bei den Prozessoren hat Intel<br />

seit Jahren ebenso unangefochten<br />

die Nase vorn wie IBM<br />

bei den Maschinen: Rechnet<br />

man die verschiedenen Intel-<br />

Prozessortypen zusammen,<br />

kommt man auf einen Anteil<br />

von über 70 Prozent. Dabei<br />

Der Super MUC des Leibniz-Rechenzentrums der TU München ist der schnellste<br />

Rechner in Europa.<br />

© LRZ<br />

sterben Dualcore- und selbst<br />

Quadcore-Systeme langsam<br />

aus, der Trend geht zu acht<br />

bis 16 Kernen pro CPU.<br />

Eines der nach wie vor am<br />

meisten diskutierten Themen<br />

auf der Konferenz war<br />

die Energieeffizienz. Besteht<br />

der gegenwärtige Trend fort,<br />

müsste ein Superrechner zum<br />

Ende der laufenden Dekade,<br />

wenn man den Durchbruch<br />

zum Exaflop-Computing erwartet,<br />

8 bis 9 Megawatt Strom<br />

verbrauchen. Allerdings hoffen<br />

die Anbieter, diesen Wert<br />

bis dahin deutlich senken zu<br />

können, und konzentrieren<br />

große Forschungskapazitäten<br />

auf dieses Ziel.<br />

Die Conference begrüßte Mitte<br />

Juni die Rekordzahl von über<br />

2100 Teilnehmern aus 55 Ländern<br />

in mehr als 30 Sessions<br />

mit über 100 Vortragenden.<br />

Nachdem sie in diesem Jahr<br />

bereits zum vierten Mal in<br />

Hamburg stattfand, wechselt<br />

der nächste Austragungsort<br />

nach Leipzig.<br />

n<br />

Open Suse will Release-Prozess überdenken<br />

Open Suses Release-Manager<br />

Stephan Kulow hat die Projektmitglieder<br />

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

informiert, dass sich<br />

die für Mitte Juli geplanten<br />

Termine für Version 12.2 nicht<br />

halten lassen. In seiner E-Mail<br />

[http://​lists.​opensuse.​org/​opensuse<br />

‐factory/​2012‐06/​msg00468.​html]<br />

schreibt Kulow, die derzeitige<br />

Verspätung sei eine gute Gelegenheit,<br />

den Release-Prozess<br />

zu überdenken. Die gewachsene<br />

Anzahl der Pakete im<br />

Factory-Zweig habe neue Probleme<br />

mit Abhängigkeiten<br />

gebracht, fährt er fort: Nie<br />

habe es in der Entwicklung<br />

von Open Suse 12.2 weniger<br />

als 100 Pakete mit dem Status<br />

„rot“ gegeben.<br />

Kulow regt daher an, mehr<br />

Mitarbeiter in die Integrationsarbeit<br />

einzubeziehen.<br />

Zudem soll es mehr Staging-<br />

Projekte geben, die <strong>Software</strong><br />

zur Reife bringen, und weniger<br />

Entwicklungsprojekte.<br />

Als Konsequenz des gestiegenen<br />

Aufwands schlägt er vor,<br />

entweder die festen Release-<br />

Termine abzuschaffen oder<br />

nur noch einmal im Jahr eine<br />

neue Version zu veröffentlichen.<br />

Er lädt die Community<br />

zu einer offenen Diskussion<br />

ein, um eine neue Vorgehensweise<br />

zu entwickeln.<br />

Jos Poortvliet, Community-<br />

Manager von Open Suse, hat<br />

sich unter [http://news.opensuse.<br />

org/2012/06/14/where-is-my-12-2-my<br />

-kingdom-for-a-12-2/] ebenfalls<br />

zu Wort gemeldet. Poortvliet<br />

spricht dabei im Zusammenhang<br />

mit den kaputten Paketen<br />

von einem Broken-Window-Problem:<br />

Je mehr bereits<br />

kaputt sei, desto weniger würden<br />

sich die Leute darum<br />

kümmern.<br />

n<br />

Lernunterlagen<br />

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

Die Linup Front GmbH hat<br />

kostenlose Lernunterlagen für<br />

die vom <strong>Linux</strong> Professional<br />

Institute neu eingeführte Zertifizierung<br />

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

veröffentlicht. Das Handbuch<br />

steht als PDF im Webshop<br />

von Linup Front [http://​shop.​<br />

​linupfront.​de/​product/​lxes/] zum<br />

Download bereit. Zudem stehen<br />

die Unterlagen auch in<br />

Form einer Android-App zur<br />

Verfügung und lassen sich im<br />

Google-Play-Store finden. Die<br />

Unterlagen sind in deutscher<br />

Sprache verfasst.<br />

n


Microsoft bringt <strong>Linux</strong> in seine Cloud<br />

Als Reaktion auf den häufigsten<br />

Kundenwunsch, wie<br />

es seitens des <strong>Software</strong>riesen<br />

heißt, bietet Microsoft nun<br />

auch <strong>Linux</strong>-Images in seiner<br />

Cloud an. In Microsofts Azure<br />

genanntem Cloudsystem stehen<br />

damit virtuelle Maschinen<br />

mit Open Suse 12.1, Centos,<br />

Ubuntu und auch Suse <strong>Linux</strong><br />

Enterprise Server bereit.<br />

Suse zufolge soll das komplett<br />

mit Open Suse Studio<br />

integrierte <strong>Linux</strong> preislich<br />

zwischen 1,3 und 64 US-Cent<br />

pro Stunde Nutzungsgebühr<br />

kosten, in Abhängigkeit von<br />

der Größe des Image. Die genannte<br />

Suse-Kalkulation wäre<br />

damit den Preisen bei Amazons<br />

Cloudangebot ungefähr<br />

vergleichbar.<br />

Auf der eigens eingerichteten<br />

Webseite [http://​www.​suse.​com/​<br />

​promo/​suse‐linux‐enterprise‐server<br />

‐on‐azure.​html] können sich interessierte<br />

Suse-Anwender<br />

bereits jetzt ein Bild vom<br />

Funktionsumfang machen.<br />

Ubuntu-Anhängern zeigt das<br />

Youtube-Video [http://​www.​<br />

​youtube.​com/​watch?​feature=player_<br />

embedded&​v=bDAyI0imqGE#!], wie<br />

Canonicals Spross und Microsofts<br />

Cloud miteinander<br />

arbeiten. Laut Canonical-Blog<br />

können Kunden „ab Herbst<br />

2012“ Support für die Azure-<br />

Images von Mark Shuttleworths<br />

Firma erwerben. n<br />

IPv6: Netcraft sichtet 7 Millionen Hosts<br />

Die monatliche Statistik des<br />

Internetspezialisten Netcraft<br />

kann pünktlich zum IPv6-Tag<br />

am 6. Juni auf Antworten von<br />

sieben Millionen Hostnamen<br />

mit IPv6-Adressen verweisen.<br />

Die Mehrheit der IPv6-Hosts<br />

Unter der Adresse [http://​www.​<br />

​worldipv6launch.​org] gibt es Informationen<br />

zum IPv6-Tag.<br />

läuft unter dem Apache-Webserver<br />

(6,2 Millionen), Nginx<br />

folgt mit rund 400 000 Hostnamen.<br />

Insgesamt hat Netcraft [http://<br />

www.netcraft.​com] in seiner<br />

Webserverstatistik den Apache-Server<br />

im Juni stark an<br />

Marktanteilen zulegen sehen.<br />

Fast 23 Millionen Hostnamen<br />

mehr als im Vormonat sind<br />

auf Apache gehostet. Microsofts<br />

Webserver hat zwar<br />

3,5 Millionen Hostnamen<br />

hinzugewonnen, verliert aber<br />

trotzdem an Marktanteilen<br />

gegenüber der Konkurrenz.<br />

Nginx hat nach neun Monaten<br />

Wachstum im Juni leicht<br />

an Anteilen verloren. n<br />

Zahlen & Trends 08/2012<br />

Aktuell<br />

www.linux-magazin.de<br />

15<br />

Kann eine<br />

Schulungseinrichtung<br />

für mehr als EINEN<br />

Themenbereich<br />

berühmt werden?<br />

Das <strong>Linux</strong>hotel ist bekannt für erstklassige Open-Source-Schulungen. In den letzten Jahren kamen Java<br />

und andere Programmiersprachen hinzu - wie immer in Kooperation mit führenden Spezialisten, und in<br />

abgeschiedener, konzentrierter, aber auch ziemlich verspielter Umgebung. Es ist so naheliegend, auch<br />

Entwicklerthemen bei den OpenSource‘lern zu lernen, weil man dort schon immer sehr „unter die<br />

Haube“ guckte und mit viel Freude intensivst arbeitet. Das weiss ein Großteil der deutschen Admins, nur<br />

unter Entwicklern hat's sich noch nicht so ganz herumgesprochen.<br />

Mehr siehe www.linuxhotel.de


Aktuell<br />

www.linux-magazin.de Zahlen & Trends 08/2012<br />

16<br />

Mandriva sucht Freunde<br />

Sinkt der Stern von Mandriva?<br />

Das durch Finanznöte abermals<br />

ins Trudeln gekommene<br />

Unternehmen Mandriva SA<br />

plant nach einer Finanzierungsrunde<br />

einen Neuanfang<br />

und sucht Kooperationspartner<br />

und Helfer, unter anderem<br />

beim Mageia-Projekt. Beim<br />

Mandriva-Ableger Mageia ist<br />

offenbar darüber niemand in<br />

Jubel ausgebrochen.<br />

Im Mandriva-Blog schreibt<br />

der Leiter des operativen<br />

Geschäfts, Jean-Manuel Croset,<br />

dass das französische<br />

Unternehmen sich künftig<br />

von der bislang praktizierten<br />

One-size-fits-all-Strategie abwenden<br />

will, hin zu einem<br />

differenzierten Angebot. Das<br />

bestehe dann aus Desktop<br />

und OEM-Produkten, die man<br />

mit dem in Gründung befindlichen<br />

Mandriva <strong>Linux</strong> stemmen<br />

will.<br />

Die Server-Produkte wiederum<br />

sollen in enger Zusammenarbeit<br />

mit dem Mageia-<br />

Projekt entstehen. Die von<br />

Croset genannten Kooperationen<br />

will Mandriva regelmäßig<br />

auf ihre wirtschaftlichen,<br />

technischen und strategischen<br />

Aspekte abgeklopfen.<br />

Die zu gründende Organisation<br />

Mandriva <strong>Linux</strong> soll als<br />

eine Art organisatorischer<br />

Arm der Firma Mandriva SA<br />

dienen. Das Unternehmen<br />

hatte sich kürzlich den Fortbestand<br />

durch eine Finanzierungsrunde<br />

gesichert.<br />

Mandriva SA hat während<br />

der Querelen um die Finanzierung<br />

seine <strong>Linux</strong>-Distribution<br />

stark vernachlässigt. Der<br />

Schritt in Richtung Mageia,<br />

einem Mandriva-Fork, dürfte<br />

deshalb in der Anfangsphase<br />

wohl eher ein Nehmen als ein<br />

Geben sein.<br />

Mageia hat sich dazu geäußert<br />

und lehnt eine Zusammenarbeit<br />

in Form der Organisation<br />

Mandriva <strong>Linux</strong> ab. Über<br />

den genauen Inhalt der Gespräche<br />

mit Croset habe man<br />

Stillschweigen bewahrt, heißt<br />

es im Mageia-Blog [http://​blog.​<br />

​mageia.​org/​de/​2012/​05/​21/​mageia<br />

‐der‐kreis‐schliest‐sich/]. Fest<br />

stehe aber: Man wolle unabhängig<br />

von kommerziellen<br />

und strategischen Belangen<br />

arbeiten.<br />

Dem Ansinnen Mandrivas, einen<br />

Server-Ableger auf Mageia<br />

aufzubauen, steht das Projekt<br />

hingegen wohlwollend gegenüber.<br />

Es betont, dass es dafür<br />

Regeln gäbe: „Mageia hat eine<br />

fest definierte Führungsstruktur<br />

und Organisation und es<br />

gibt keine Pläne, diese zu ändern!<br />

Mageia ist unabhängig<br />

von jeglicher Firma!“ n<br />

Fedora will Secure Boot und UEFI meistern<br />

Der Entwickler Matthew Garrett<br />

hat einen Plan vorgestellt,<br />

der die kommende Fedora-Release<br />

18 auch auf Rechnern<br />

mit UEFI und Secure Boot<br />

zum Laufen bringen soll. Dabei<br />

betont der Red-Hat-Angestellte,<br />

dass er nicht für seinen<br />

Arbeitgeber spricht, sondern<br />

lediglich den Diskussionsstand<br />

des Fedora-Projekts<br />

wiedergibt.<br />

Garrett erwartet, dass mit der<br />

voraussichtlichen Veröffentlichung<br />

von Windows 8 im<br />

Herbst 2012 fast alle handelsüblichen<br />

Computer Secure<br />

Boot verwenden werden – auf<br />

jeden Fall jene mit vorinstalliertem<br />

Windows. Mit in der<br />

Firmware hinterlegten Schlüsseln<br />

stellt das System sicher,<br />

dass nur das vorgesehene Betriebssystem<br />

starten darf.<br />

Es werde zwar die Möglichkeit<br />

geben, in der Firmware Secure<br />

Boot zu deaktivieren oder eigene<br />

Schlüssel zu hinterlegen,<br />

diesen heiklen Eingriff möchte<br />

Matt Garrett aber nicht allen<br />

Fedora-Nutzern zumuten.<br />

Ein mögliches Vorgehen für<br />

Fedora wäre es, selbst einen<br />

Schlüssel bei Herstellern zu<br />

hinterlegen. Das wäre aber<br />

aufwändig und würde die<br />

Wahl der <strong>Linux</strong>-Distribution<br />

auf Fedora einschränken, referiert<br />

der Entwickler. Die Alternative,<br />

einen gemeinsamen<br />

Schlüssel für alle <strong>Linux</strong>-Distributionen<br />

zu vereinbaren,<br />

sei aber organisatorisch fast<br />

unmöglich.<br />

Daneben besteht eine weitere<br />

Möglichkeit, für die sich das<br />

Fedora-Projekt wahrscheinlich<br />

entscheiden wird: Die<br />

erste Stufe des <strong>Linux</strong>-Bootloaders<br />

von Microsoft signieren<br />

zu lassen. Das sei über das<br />

Systementwickler-Portal des<br />

Herstellers für rund 100 US-<br />

Dollar möglich. Die erste Stufe<br />

soll dann den <strong>Linux</strong>-üblichen<br />

Bootloader Grub 2 starten, der<br />

den <strong>Linux</strong>-Kernel lädt.<br />

Das Prinzip ist einfach, der<br />

Teufel steckt aber im Detail:<br />

Damit das Secure-Boot-<br />

Prinzip greift, muss auch der<br />

<strong>Linux</strong>-Kernel signiert sein und<br />

darf nur signierte Module<br />

nachladen. Die Grafiktreiber<br />

müssen aus dem Userspace in<br />

den Kernel wandern. Garret<br />

und Kollegen haben also noch<br />

viel Arbeit vor sich.<br />

Was tun Anwender, die einen<br />

selbst kompilierten Kernel einsetzen<br />

möchten? Sie müssten<br />

sich vermutlich die Mühe machen,<br />

den Betriebssystemkern<br />

selbst zu signieren und ihre<br />

Schlüssel irgendwie in die<br />

Firmware einzuspielen. Oder<br />

sie treten selbst Microsofts<br />

Entwicklerprogramm bei, um<br />

ihren Kernel signieren zu lassen.<br />

Ansonsten bleibt nur die<br />

Möglichkeit, Secure Boot zu<br />

deaktivieren. Bei ARM-Rechnern<br />

und Embedded-Hardware<br />

mit Windows-Logo geht<br />

das allerdings nicht.<br />

Das alles sei noch nicht in<br />

Stein gemeißelt, schreibt<br />

Matthew Garrett. Die Entwickler<br />

möchten den Plan<br />

aber für Fedora 18 umsetzen,<br />

sofern nicht wichtige Gründe<br />

für Änderungen sprechen.<br />

Garrett setzt sich außerdem<br />

mit der erwarteten Kritik an<br />

dem geplanten Vorgehen auseinander.<br />

(jcb/jk/mhu/uba)n


BUCHEN SIE BIS ZU<br />

VIRTUELLE<br />

99 MASCHINEN!<br />

1&1 DYNAMIC CLOUD SERVER: BLITZSCHNELL<br />

MEHR POWER NUTZEN!<br />

Jetzt 100 und heute Abend 1.000 Kunden?<br />

Kein Problem!<br />

■ NEU! Leistungserhöhung und Leistungsreduktion<br />

jederzeit flexibel nach Bedarf einstellbar<br />

■ NEU! Performance Features: bis zu 6 CPU, bis zu<br />

24 GB RAM und bis zu 800 GB HDD<br />

■ NEU! Jederzeit weitere Virtuelle Maschinen zubuchbar<br />

■ NEU! Stundengenaue Abrechnung<br />

■ NEU! Management und Monitoring Ihrer Server-<br />

Dienste im Browser oder per Mobile-App<br />

■ Hosting in den sicheren 1&1 Hochleistungs-Rechenzentren<br />

■ <strong>Linux</strong>- oder Windows-Betriebssystem,<br />

bei Bedarf Parallels Plesk Panel 10 unlimited vorinstalliert<br />

■ Eigene dedizierte Server-Umgebung mit vollem Root-Zugriff<br />

■ Eigenes SSL-Zertifikat<br />

■ 24/7 Hotline und Support<br />

1&1 DYNAMIC CLOUD SERVER<br />

3 MONATE FÜR<br />

0,–€/Monat, danach<br />

ab 39,99 €/Monat*<br />

Infos und<br />

Bestellung:<br />

0 26 02 / 96 91<br />

0800 / 100 668 www.1und1.info<br />

* 1&1 Dynamic Cloud Server Basiskonfi guration 3 Monate 0,– €/Monat, danach 39,99 €/Monat. Performance Features ab 0,01 € pro Stunde und Einheit zubuchbar. Konfi guration und<br />

Leistungsberechnung jeweils stundengenau. Einmalige Einrichtungsgebühr 39,– €. 12 Monate Mindestvertragslaufzeit. Preise inkl. MwSt.


Aktuell<br />

www.linux-magazin.de Kernel-News 08/2012<br />

18<br />

Zacks Kernel-News<br />

Warum ein Bugfix nicht sofort im stabilen Kernel landet<br />

Manchmal offenbart eine einzige<br />

Diskussionen auf der<br />

Kernel-Mailingliste ein interessantes<br />

Problem der <strong>Linux</strong>-<br />

Entwicklung im Ganzen. Das<br />

geschah zuletzt im Review-<br />

Zyklus für die stabile Kernelversion<br />

3.3.2. Während dieser<br />

Phase diskutieren die Entwickler,<br />

welche Patches in die<br />

Version eingehen.<br />

Bei Kernel 3.3.1 hatten einige<br />

Anwender Systemabstürze<br />

beobachtet, die mit einem<br />

Patch für den Suspend-Resume-Code<br />

zusammenhingen.<br />

Der Crash ließ sich beheben,<br />

indem man das Patch rückgängig<br />

machte, also den verursachenden<br />

Code entfernte.<br />

Folglich bat der mexikanische<br />

Nokia-Entwickler Felipe Contreras<br />

den Stable-Maintainer<br />

Greg Kroah-Hartman, das<br />

Patch für Version 3.3.2 rückgängig<br />

zu machen.<br />

Das stellte sich aber als problematischer<br />

heraus, als er<br />

dachte: Greg antwortete, das<br />

gehe gemäß der üblichen Prozedur<br />

nur, wenn das Patch<br />

auch upstream im Torvaldsschen<br />

Kernelzweig zurückgeholt<br />

werde. Tatsächlich<br />

ist diese Regel in der Datei<br />

»Documentation/stable_kernel<br />

_rules.txt« im <strong>Linux</strong>-Quelltext<br />

festgehalten.<br />

Diese Antwort schmeckte<br />

Felipe gar nicht. Er schrieb,<br />

Greg halte sich zu sehr an<br />

den Buchstaben irgendwelcher<br />

Regeln, wo es doch ganz<br />

offensichtlich eine praktische<br />

Lösung gäbe, um hängende<br />

Der US-Amerikaner Greg Kroah-<br />

Hartman schaut freundlich drein –<br />

als Maintainer des stabilen <strong>Linux</strong>-<br />

Kernels bleibt er unnachgiebig.<br />

© <strong>Linux</strong> Foundation<br />

Rechner wieder flott zu machen.<br />

Doch Greg blieb hart.<br />

Einige Diskussionsteilnehmer<br />

stärkten ihm den Rücken,<br />

beispielsweise Adrian Chadd<br />

vom Free-BSD-Projekt. Er unterstrich,<br />

dass gerade die kritisierte<br />

Regel unverzichtbar für<br />

einen ordentlichen Entwicklungsprozess<br />

sei. Lasse man<br />

den stabilen Versionszweig<br />

vom Upstream abweichen, gerate<br />

man in eine unübersichtliche<br />

Situation: Dann würden<br />

Distributoren und Endanwender<br />

Bugmeldungen und Wünsche<br />

einschicken, die sich auf<br />

den stabilen Zweig bezögen,<br />

aber wenig mit der Version zu<br />

tun hätten, die sich gerade in<br />

Entwicklung befindet.<br />

Selbst Linus Torvalds schaltete<br />

sich ein und fragte: „Wenn<br />

Stable plötzlich Patches rückgängig<br />

macht, Upstream aber<br />

nicht, wie wird der nächste<br />

Kernel wohl aussehen? Die<br />

Regeln für Stable existieren<br />

aus gutem Grund. Bevor es<br />

sie gab, haben wir ständig<br />

Bugs im stabilen Kernel behoben,<br />

aber den Upstream<br />

vergessen.“ Nur wenig später<br />

meldete Linus, die von Felipe<br />

angeregte Änderung habe seinen<br />

Git-Zweig erreicht – nun<br />

könne Greg sie ebenfalls anwenden.<br />

Das alles überzeugte Felipe<br />

offenbar immer noch nicht.<br />

Er sei ja dafür, die Fehler auch<br />

upstream zu beheben, schrieb<br />

er, er finde es nur überflüssig,<br />

dass der stabile Kernel<br />

deshalb warten müsse. Könne<br />

man die beiden Vorgänge<br />

denn nicht entkoppeln?<br />

Hier meldete sich David S.<br />

Miller: Das habe sich in der<br />

Praxis nicht bewährt. Die Fixes<br />

landeten zwar im stabilen<br />

Kernel, gingen dann aber erst<br />

einmal verloren und es dauerte<br />

oft lange, bis sie endlich in<br />

den Upstream-Kernel fanden.<br />

Erst die geltende, recht restriktive<br />

Regelung habe für Besserung<br />

gesorgt, weil sie die<br />

Entwickler zwinge, sich um<br />

Upstream zu kümmern.<br />

Ein ähnliches Phänomen gab<br />

es bereits früher in der <strong>Linux</strong>-<br />

Geschichte. Ursprünglich hatten<br />

die Entwickler einfach vor<br />

sich hin programmiert, ohne<br />

besonderen Wert auf Stabilisierung<br />

zu legen. Ab 1997<br />

mit <strong>Linux</strong> 2.1 dienten dann<br />

die Versionen mit ungerader<br />

Minor-Nummer der Entwicklung,<br />

die mit gerader Nummer<br />

galten als stabil. Diesen<br />

Ansatz ließ Linus Torvalds<br />

ab Kernel 2.6 wieder fallen<br />

und die fortwährende Entwicklung<br />

wurde wieder zum<br />

Normalfall.<br />

Greg Kroah-Hartman und<br />

Kollegen entwickelten daher<br />

den neuen Ansatz für stabile<br />

Kernel: Sie nahmen jede Release<br />

von Torvalds und pflegten<br />

sie eine Weile. Im Laufe<br />

der Zeit etablierten sie zudem<br />

Regeln – wie jene, an der Felipe<br />

Contreras Anstoß nahm.<br />

(Zack Brown/​mhu) n<br />

Aus dem Kernel-Quelltext: Die Regeln für den stabilen Zweig schreiben vor, dass<br />

die Änderungen auch im Upstream-Kernel erfolgen müssen.


Projektteams aufgepasst!<br />

Thomas Krenn unterstützt Euch mit<br />

Serverhardware bei Eurem Open-Source-Projekt.<br />

Thomas Krenn Open-Source-Förderung<br />

Neu: Bewerbung der Projekte zu<br />

jeder Zeit und das ganze Jahr über!<br />

Auswahl erfolgt alle drei Monate<br />

Budget wird über das neue<br />

Feedbackprogramm bereit gestellt<br />

Förderungsbeitrag erhöht sich bei Teilnahme<br />

am Thomas Krenn Feedbackprogramm<br />

Für die Thomas Krenn Open-Source-Förderung<br />

können sich alle Projektteams per E-Mail unter<br />

open-source-sponsorship@thomas-krenn.com<br />

bewerben.<br />

Zusätzlich unterstützen viele Beiträge auf Sozial-<br />

Media-Plattformen Open-Source-Projekte bei der<br />

Anschaffung von neuer Hardware.<br />

Mehr Informationen unter: www.thomas-krenn.com/osf<br />

Thomas Krenn<br />

Gründer<br />

Made in Germany!<br />

Server individuell konfi gurieren unter 08551 9150-0 oder www.thomas-krenn.com


Aktuell<br />

www.linux-magazin.de <strong>Linux</strong>tag 2012 08/2012<br />

20<br />

<strong>Linux</strong>tag 2012 in Berlin<br />

Tradiertes Tanzparkett<br />

Der <strong>Linux</strong>tag ist für die Freunde freier <strong>Software</strong> im deutschsprachigen Raum ein Pflichttermin. Dies bestätigte<br />

sich im Mai 2012 mit einem bunten Programm. Mit dem Etablieren neuer Attraktionen tat sich der traditionelle<br />

Open-Source-Treff aber schwer. Mathias Huber<br />

© <strong>Linux</strong>tag<br />

Abbildung 1: Die tanzenden Nao-Roboter von Aldebaran Robotics zeigten zum<br />

Auftakt der Veranstaltung, dass <strong>Linux</strong> Spaß macht.<br />

Mit gelenkig tanzenden Robotern<br />

begann der 18. <strong>Linux</strong>tag<br />

am 23. Mai in Berlin. Auch<br />

auf den Maschinen der französischen<br />

Firma Aldebaran Robotics<br />

läuft – wen wundert's<br />

– <strong>Linux</strong> (Abbildung 1). Anlass<br />

zur Freude gab es für Martin<br />

Schobert, der anschließend<br />

den Absolventenpreis<br />

des deutschen <strong>Software</strong>herstellers<br />

Univention für seine<br />

Abschlussarbeit bekam. Für<br />

seine Diplomarbeit „<strong>Software</strong>gestütztes<br />

Reverse-Engineering<br />

von Logik-Gattern<br />

in integrierten Schaltkreisen“<br />

erhielt er den mit 2500 Euro<br />

dotierten ersten Preis.<br />

Rund 200 Vorträge sowie<br />

120 Firmen und Projekte in<br />

der Ausstellung gestalteten<br />

die vier Veranstaltungstage.<br />

In den Messehallen mischten<br />

sich Neuheiten wie die<br />

Stofftiere von Stricktux.de<br />

oder das Präsentationssystem<br />

Open Slides mit Stammgästen<br />

wie Open Suse und Fedora.<br />

Als Urgestein darf man getrost<br />

die Typografie-Liebhaber vom<br />

Tex-Anwenderverein Dante<br />

sowie die Forth Gesellschaft<br />

bezeichnen, die auch dieses<br />

Jahr zeigte, wie man in wenigen<br />

KByte Mikrocontroller<br />

programmiert (Abbildung 2).<br />

Cloud und SSD<br />

Das Vortragsprogramm behandelte<br />

aktuelle Themen wie<br />

Cloud Computing mit Open<br />

Stack Essex oder das Caching<br />

mittels SSDs. Manche der<br />

Vorträge, etwa zu den No-<br />

SQL-Datenbanken Mongo DB<br />

und Couch DB, blieben leider<br />

im Grundwissen stecken.<br />

Andere, etwa der Beitrag von<br />

Markus Zapke-Gründemann<br />

über das Python-Framework<br />

Django, packten erstaunlich<br />

viel Know-how in die beschränkte<br />

Sprechzeit.<br />

Über das Verhältnis von freier<br />

<strong>Software</strong> und Politik diskutierten<br />

Parteienvertreter, der<br />

Netzaktivist Markus Beckedahl<br />

und der <strong>Linux</strong>-<strong>Magazin</strong>-<br />

Redakteur Markus Feilner. So<br />

gut wie alle möchten Open<br />

Source fördern, haben damit<br />

aber keinen leichten Stand in<br />

ihren Fraktionen.<br />

Der Glibc-Maintainer Ulrich<br />

Drepper sagte in seiner Keynote<br />

dem Locking den Kampf<br />

an: Hardware Lock Elison<br />

(HLE) und Transactional Memory<br />

sollen dafür sorgen,<br />

dass die vielen Kerne moderner<br />

Computer nicht aufeinander<br />

warten, sondern arbeiten.<br />

Thematisch nicht neu, dafür<br />

aber humorvoll und praxisnah<br />

fiel die Sitzung mit Harald König<br />

zum Tracing mit dem Tool<br />

Strace aus. Er demonstrierte<br />

auf seinem Xterm <strong>Linux</strong>-Interna<br />

zum Anfassen.<br />

Daneben gab es etliche Programmpunkte,<br />

die längst zur<br />

<strong>Linux</strong>tag-Tradition gehören:<br />

den Hacking-Contest in der<br />

Open-Source-Arena und das<br />

Kernel-Kwestioning mit bekannten<br />

deutschen Kernelhackern<br />

wie Wolfram Sang und<br />

Alexander Graf.<br />

Neue Impulse versuchte das<br />

Rootcamp zu setzen, das im<br />

Rahmen des <strong>Linux</strong>tags stattfand.<br />

Als zeitgemäße Unconference<br />

oder Barcamp lud es<br />

<strong>Linux</strong>-Admins dazu ein, selbst<br />

ein Workshop-Programm<br />

auf die Beine zu stellen. Die<br />

rund 30 Besucher verteilten<br />

sich am <strong>Linux</strong>tag-Samstag<br />

auf mehrere Programmpunkte<br />

und ließen die Sitzungsräume<br />

damit recht leer aussehen.<br />

Gefühlssache<br />

Obwohl die Veranstalter mit<br />

über 12 000 Personen eine<br />

um 10 Prozent gestiegene<br />

Besucherzahl meldeten, zeigten<br />

sich viele Aussteller und<br />

Besucher nicht so begeistert:<br />

Bescheiden besuchte Vorträge<br />

und viel Platz in den Gängen<br />

der Ausstellungshallen hinterließen<br />

eher den Eindruck einer<br />

kleinen Flaute. Unverdrossen<br />

tagt der <strong>Linux</strong>tag auch 2013<br />

wieder in Berlin, und auch<br />

das Rootcamp soll eine neue<br />

Chance bekommen. n<br />

Abbildung 2: Klassiker: Die Forth<br />

Gesellschaft zeigt seit Jahren an<br />

kleinen Maschinen, wie man effizient<br />

Controller programmiert.<br />

© <strong>Linux</strong>tag


WEBHOSTING · SCHULUNGEN · SUPPORT<br />

Professionelle Hostinglösungen<br />

Performance & Verfügbarkeit<br />

auf höchstem Niveau<br />

Managed Server Lösungen vom Profi<br />

„Ich setze auf <strong>Linux</strong> –<br />

genau wie mein Webhoster!“<br />

Der Open Source Gedanke ist mir wichtig<br />

und ich finde es großartig, dass Mittwald<br />

sich so aktiv für die Communitys einsetzt.<br />

Hinzukommt, dass Performance und Verfügbarkeit<br />

einfach stimmen und ich mich<br />

auf das 24/7-Monitoring und den kompetenten<br />

Service vollkommen verlassen kann.<br />

Ich fühle mich rundum wohl!<br />

Performance-Hungrige nutzen z. B.<br />

Managed Server Lösungen 6.0<br />

Hochwertige Server-Hardware<br />

300 % Magento-Performance<br />

Bis zu 24 Prozessorkerne<br />

Bis zu 128 GB Arbeitsspeicher<br />

Leistungsstarke Server-HDDs<br />

Hardware-RAID 1/10 (optional)<br />

Individuell konfigurierbar<br />

Bereits ab monatlich:<br />

€ 99,99*<br />

zzgl. MwSt.<br />

Alle Angebote richten sich ausschließlich an Gewerbetreibende<br />

Alle Hostinglösungen unter: www.mittwald.de<br />

Rufen Sie uns kostenlos an: 0800 / 440 3000<br />

* Alle genannten Preise verstehen sich monatlich zzgl. MwSt. Die einmalige Einrichtungsgebühr<br />

für die Managed Server 6.0 beträgt 149,- €. Die Vertragslaufzeiten und Abrechnungszeiträume<br />

betragen für die Managed Server 6.0 zwischen 12 und 36 Monate. Automatische<br />

Vertragsverlängerung um 12 Monate, wenn der Vertrag nicht mit einer Frist von<br />

30 Tagen zum Ende der jeweiligen Vertragslaufzeit gekündigt wird.<br />

www.mittwald.de


Titelthema<br />

www.linux-magazin.de Grundlagen 08/2012<br />

22<br />

Wie Entwickler und Maintainer ihre Situation im Handumdrehen verbessern<br />

<strong>Software</strong> <strong>testen</strong><br />

Alle Programmierer auf der Welt machen Fehler. Darum, trotzdem funktionsfähige und sichere Programme zu<br />

bekommen, kümmert sich das deswegen so wichtige Sachgebiet „<strong>Software</strong>-Testing“. Zu diesem gehören Code-<br />

Reviews genauso wie dynamische Black-Box-Tests. Jan Kleinert, Tim Schürmann<br />

Experten schätzen, dass gängige <strong>Software</strong><br />

im Mittel 25 Fehler pro 1000 Programmzeilen<br />

enthält und gute Programme<br />

zwei Fehler pro 1000 Zeilen. <strong>Software</strong>, die<br />

in der Raumfahrt zum Einsatz kommt, soll<br />

noch eine Größenordnung weniger Bugs<br />

Inhalt<br />

22 Grundlagen<br />

Warum, wann und wie jeder Entwickler<br />

<strong>Software</strong>-Testing betreiben sollte.<br />

26 Statisches Testen<br />

Tools, die Quelltexte in C, C++, Java und<br />

Python nach Fehlern durchforsten.<br />

32 Testdriven Development<br />

Zu Beginn das Testprogramm schreiben,<br />

dann erst die Applikation.<br />

38 Nicht die Hacker sind das Problem ...<br />

Sieben Gebote für das Schreiben sicherer<br />

Webapplikationen.<br />

42 Der lange Weg zum Development<br />

Rollout-Praxis: Wie Red Hat, Limux & Co.<br />

ihre Pakete <strong>testen</strong>.<br />

aufweisen. Ob das für die<br />

<strong>Software</strong> der Ariane-5-Rakete<br />

(Abbildung 1) zutraf,<br />

die am 4. Juni 1996 in<br />

den Himmel von Fran zösisch-Guayana<br />

aufstieg,<br />

darf man bezweifeln.<br />

Das an Bord befindliche<br />

Trägheitsnavigationssystem<br />

jedenfalls stürzte<br />

36,7 Sekunden nach dem<br />

Start ab, als es versuchte,<br />

den Wert der horizontalen<br />

Geschwindigkeit von<br />

einer 64-Bit-Gleitkommadarstellung<br />

in einen vorzeichenbehafteten<br />

16-Bit-<br />

Integer umzuwandeln.<br />

Hier die Ada-Codezeile:<br />

P_M_DERIVE(T_ALG.E_BH) := UC_16S_EN_16NSU<br />

(TDB.T_ENTIER_16S ((1.0/C_M_LSB_BH) *U<br />

G_M_INFO_DERIVE(T_ALG.E_BH)))<br />

Die betreffende Zahl war schlicht größer<br />

als 215 und erzeugte einen Overflow der<br />

Variablen »E_BH«. Anschließende brach<br />

das Lenksystem der Rakete zusammen<br />

und gab die Kontrolle an eine zweite<br />

identische Einheit ab. Da der Backuprechner<br />

das exakt gleiche Programm verwendete,<br />

stürzte auch er ab. Der Hauptcomputer<br />

interpretierte die Nonsens-Werte<br />

als Flugbahnabweichung und versuchte<br />

diese zu kompensieren. Nach 40 Sekunden<br />

Flugzeit löste eine Automatik die<br />

Selbstzerstörung des ganzen Stolzes der<br />

europäischen Raumfahrt aus. Materieller<br />

Sofortschaden: 370 Millionen Dollar.<br />

Als wäre das nicht ärgerlich genug, förderte<br />

die Untersuchung des Vorfalls pikante<br />

Details [1] zu Tage:<br />

n Die Typumwandlung war nicht abgesichert,<br />

da die Programmierer glaub-<br />

ten, die übergebene Geschwindigkeit<br />

könne nie so groß werden.<br />

n Die Annahme war für die Ariane 4<br />

richtig, für die das Programm ursprünglich<br />

gedacht war. Die Ariane 5<br />

besitzt aber ein anderes Flugprofil.<br />

n Ariane 4 brauchte das Programm nur<br />

während des Countdown, Ariane 5<br />

braucht es eigentlich überhaupt nicht.<br />

n Die Entscheidung, den Ariane-4-Code<br />

ungetestet auf der Ariane 5 zu benutzen,<br />

hatte das Management des <strong>Software</strong>entwicklerteams<br />

gefällt.<br />

n Die Entwicklung der Ariane 5 kostete<br />

geschätzt sieben Milliarden Dollar.<br />

Aus dieser wahren Anekdote lassen sich<br />

eine Menge Erkenntnisse über falsche<br />

Annahmen, die Wirksamkeit von Redundanzen,<br />

unerwartete Folgekosten und die<br />

Wichtigkeit von <strong>Software</strong>tests ziehen.<br />

Notweniges Übel<br />

Obwohl die Notwendigkeit des Testens<br />

selbst geschriebener <strong>Software</strong> unstreitig<br />

ist, gehört es wohl zu den meist gehassten<br />

Aufgaben eines Entwicklers. Es ist<br />

umständlich, zeitaufwändig, und am<br />

Ende weiß er nie, ob er wirklich alle Fehler<br />

erwischt hat. Stehen die Programmierer<br />

auch noch unter Zeitdruck, schieben<br />

diese die Tests immer weiter auf.<br />

Das Ergebnis ist die berühmt-berüchtigte<br />

Bananensoftware, die beim Anwender<br />

reift – Patches kann man schließlich immer<br />

noch nachschieben. Diese Strategie<br />

rächt sich jedoch in unzufriedenen Benutzern<br />

und hohen Supportkosten. Letzteres<br />

gilt auch für Open-Source-<strong>Software</strong><br />

und für Hobbyentwickler: Bis sich der<br />

Programmautor durch die zahlreichen<br />

Fehlermeldungen gefräst hat, ist sein<br />

schöner Feierabend hinüber.


© ESA<br />

Abbildung 1: Eine Ariane-5-Rakete wenige Sekunden<br />

nach dem Start. Beim Jungfernflug ging die Sache<br />

36,6 Sekunden lang gut.<br />

Folglich kommt niemand um Tests herum,<br />

schlauerweise plant man sie schon<br />

während der Entwicklung fest ein und<br />

führt sie nicht erst ganz am Ende durch.<br />

Zu den gesicherten Erkenntnissen gehört,<br />

dass je später ein Fehler im Entwicklungszyklus<br />

auffällt, desto teurer seine Behebung<br />

kommt. In diesem Licht offenbart<br />

das sowieso recht antiquierte Wasserfallmodell<br />

(Abbildung 2), das Tests nur in<br />

den letzten Phasen vorsieht, seinen uneffizienten<br />

Charakter. Das ganze Gegenteil<br />

praktiziert das Test Driven Development<br />

(TDD), ein Gray-Box-Testverfahren, das<br />

vor dem Schreiben des Programmcodes<br />

ansetzt (siehe den eigenen Schwerpunkt-<br />

Artikel zu diesem Thema).<br />

Egal mit welcher Methodik, wichtig ist<br />

es, planvoll vorzugehen. Es nützt nichts,<br />

das Programm zu starten und auf drei<br />

Knöpfe zu klicken. Das bringt nur die<br />

Gewissheit, dass die drei Knöpfe gelegentlich<br />

funktionieren. Hinzu kommt der<br />

psychologische Effekt, dass der Programmierer<br />

einer <strong>Software</strong> davon ausgeht,<br />

dass sein Code genau das macht, was er<br />

sich erhofft hatte. Ein Zeichen für das Erwartungstäuschung<br />

genannte Phänomen<br />

sind Gedanken wie: „Wieso gibt er denn<br />

jetzt diesen merkwürdigen Wert aus?!“<br />

Weil Blauäugigkeit beim Thema <strong>Software</strong>-<br />

Testing unangebracht ist, sollten sich<br />

Projekte formale Strategien und Vorgehensweisen<br />

zu Eigen machen. Abbildung<br />

3 zeigt aus einiger Entfernung ein paar<br />

Platzierungsmöglichkeiten für Tests.<br />

Reviews und statische<br />

Codeanalyse<br />

Der Oberbegriff für eine wichtige Disziplin<br />

lautet „Statische Analysen“. Das sind<br />

White-Box-Testverfahren, deren Kennzeichen<br />

es ist, dass sie das Programm nicht<br />

ausführen. Code-Reviews und statische<br />

Codeanalysen zählen dazu. Die einfachste<br />

Variante des Quellcode-Studiums besteht<br />

darin, selbst oder noch besser im<br />

Team den Code mit eigenen Augen zu begutachten<br />

und zu untersuchen. Es geht<br />

da rum, funktionale und formelle Fehler<br />

zu finden. Der Arbeitsablauf ist dreistufig:<br />

Identifizieren, konsolidieren, korrigieren.<br />

Die Bedeutung von Code-Reviews hat in<br />

letzter Zeit in dem Maße wieder zugenommen,<br />

wie die agilen Entwicklungsmethoden<br />

begannen, sich durchzusetzen<br />

(Stichwort: Scrum).<br />

Ein Review kann nicht nur die Befehle<br />

betrachten, sondern auch den Fluss der<br />

(Eingabe-)Daten durch das Programm verfolgen<br />

(siehe auch den Artikel zum Thema<br />

Sicherheit von Webapplikationen).<br />

Bei dieser Datenflussanomalie-Analyse<br />

pickt sich der Tester eine Variable heraus<br />

und untersucht, wann und wie die folgenden<br />

Anweisungen sie erzeugen, verändern<br />

und zerstören. Stellt er etwa fest,<br />

dass der Algorithmus die Variable liest,<br />

bevor sie erzeugt wurde, liegt zwingend<br />

ein Fehler vor – die so genannte UR-Anomalie<br />

(Undefined Referencing).<br />

Initialisierung<br />

Analyse<br />

Entwurf<br />

Wer den Quellcode in den Fingern hält,<br />

kann gleich noch eine Stil analyse durchführen,<br />

also feststellen, ob der Quellcode<br />

entsprechend den Vorgaben formatiert<br />

ist oder unbotmäßige Sprachkonstrukte<br />

verwendet – etwa Gotos. Obendrein lassen<br />

sich ein paar Maße und Statistiken<br />

ermitteln, wie etwa die Anzahl der selbst<br />

geschriebenen Klassen. Alle diese Untersuchungen<br />

lassen sich von Menschen auf<br />

Papier durchführen.<br />

Solche manuellen Inspektionen oder Reviews<br />

sind allerdings recht zeitaufwändig.<br />

Zumindest bei einigen Prüfungen, wie<br />

der Stilanalyse, bei den Metriken oder der<br />

Datenflussanalyse, helfen zum Glück<br />

Werkzeuge. Hier ist auch die Grenze zur<br />

statischen Codeanalyse (formale Verifikation)<br />

erreicht. Ein Artikel im Schwerpunkt<br />

stellt ein paar solcher Anwendungen<br />

vor. Ein wichtiger Spieler in diesem<br />

Markt ist zudem die Firma Coverity [2].<br />

Dynamische Tests<br />

Um festzustellen, ob die selbst geschriebene<br />

Anwendung funktioniert, kommt<br />

man jedoch nicht umhin, sie auch auszuführen<br />

und mit Testdaten zu füttern,<br />

also so genannte dynamische Testtechniken<br />

einzusetzen. Dabei stellt sich die<br />

Frage, welche und wie viele Testdaten<br />

der Entwickler an sein Programm verfüttern<br />

muss, um sicherzugehen, dass es<br />

reibungslos funktioniert.<br />

Die Testdaten sollten so gewählt sein,<br />

dass der Programmablauf jede einzelne<br />

Anweisung zumindest ein Mal ausführt.<br />

Realisierung<br />

Einführung<br />

Nutzung<br />

Abbildung 2: Erweitertes klassisches Wasserfallmodell, das Tests nur in den letzten Phasen vorsieht.<br />

© Maciej Jaros, CC-by-sa<br />

Grundlagen 08/2012<br />

Titelthema<br />

www.linux-magazin.de<br />

23


Titelthema<br />

www.linux-magazin.de Grundlagen 08/2012<br />

24<br />

© Vörby, Wikipedia<br />

Abbildung 3: Ganzheitlicher Ansatz: Testen nach einer weitergehenden Definition umfasst alle Prüfmaßnahmen<br />

in der <strong>Software</strong>entwicklung.<br />

Einen solchen Test bezeichnet man als<br />

Anweisungsüberdeckungstest, kurz C0-<br />

Test. Ein Problem wird erkennbar, wenn<br />

der Entwickler sich den Programmablauf<br />

aufmalt. Dabei zeichnet er jede Anweisung<br />

als Kreis (Knoten) und zieht dann<br />

von einer Anweisung Pfeile zu allen prinzipiell<br />

direkt auf sie nachfolgenden Anweisungen.<br />

Im Ergebnis entsteht ein so<br />

genannter Kontrollflussgraph. Bei einem<br />

C0-Test würde im dem Beispiel<br />

if(i!=10) then a=a+1;<br />

nicht der Fall getestet, in dem »i« gleich<br />

10 ist. Es wäre besser, wenn mindestens<br />

ein Mal alle Zweige des Programms ausgeführt<br />

würden. Aber auch die Bedingung<br />

ist zu lasch: Der Zweigüberdeckungstest<br />

(C1-Test) durchliefe Schleifen nur einmal,<br />

und bei If-Abfragen der Art:<br />

if((A || B) && (C || D)) ...<br />

reicht es aus, wenn die gesamte Bedingung<br />

einmal wahr und einmal falsch ist.<br />

Zumindest der letzte Test nimmt sich der<br />

Bedingungsüberdeckung an. Er verlangt,<br />

je nach Schärfegrad, dass alle einzelnen<br />

Teilentscheidungen der Bedingungen beziehungsweise<br />

alle möglichen Kombinationen<br />

je ein Mal wahr und falsch sind.<br />

Abschließend gibt es noch den Pfadüberdeckungstest,<br />

der restlos alle Programmpfade<br />

durchlaufen muss. Er gilt jedoch<br />

als extrem aufwändig, weil er entsprechend<br />

viele Testdaten benötigt. Alternativ<br />

zu den Anweisungen kann ein dynamischer<br />

Test den Fluss der (Eingabe-)Daten<br />

durch das Programm betrachten. Dazu<br />

schreibt der Entwickler im Kontrollflussgraph<br />

an die Knoten alle Variablen, die<br />

dieser Knoten benutzt oder verändert.<br />

Geht die Variable an einem Knoten in<br />

eine Berechnung ein oder schreibt die<br />

entsprechende Anweisung einen neuen<br />

Wert in die Variable, heißt der Fall C-<br />

Use (von Computational Use). Kommt ihr<br />

Wert in einer Entscheidung zum Einsatz,<br />

etwa in einer If-Abfrage, spricht man von<br />

P-Use (Predicate-Use).<br />

Geeignete Testdaten finden<br />

Um nun konkrete Testdaten zu finden,<br />

bildet man auf den möglichen Eingaben<br />

und Ausgaben Äquivalenzklassen. Das<br />

klingt kompliziert, die meisten Programmierer<br />

machen das bereits intuitiv. Zunächst<br />

stellen sie die Eingabe bereiche des<br />

Programm fest. Beispielsweise könnte es<br />

Werte zwischen 1 und 99 entgegennehmen.<br />

Der Bereich bildet eine so genannte<br />

gültige Äquivalenzklasse.<br />

Als Nächstes umreißt man die Eingaben,<br />

die nicht vorkommen dürfen. Im Beispiel<br />

sind das alle Zahlen kleiner als 1 und alle<br />

Zahlen über 99. Diese beiden Bereiche<br />

bilden die so genannten ungültigen Äquivalenzklassen.<br />

Jetzt wählt der Entwickler<br />

aus jeder der drei Äquivalenzklassen jeweils<br />

einen beliebigen Wert, etwa ‐2, 34<br />

und 145. Dazu sollte er noch die Grenzen<br />

hinzunehmen, hier also 0, 1, 99 und 100.<br />

Damit sind passende Testfälle gefunden.<br />

Für sie gilt es nun (per Hand) die korrekten<br />

Ausgaben zu berechnen.<br />

Das ist erst eine Hälfte der Testdaten: Für<br />

alle möglichen Ausgaben muss der Entwickler<br />

ebenfalls gültige und ungültige<br />

Äquivalenzklassen bilden und die dazu<br />

passenden Eingaben finden. Abschließend<br />

prüft er, ob die gefundenen Testdaten<br />

auch die erwähnten Kriterien abdecken,<br />

also beispielsweise einmal alle Anweisungen<br />

ausführen. Wenn nicht, muss<br />

er weitere Testdaten hinzunehmen.<br />

Das Gegenteil veranstalten Smoketests:<br />

Hier bestimmt der Programmierer die<br />

Testdaten nicht mit systematischen Methoden,<br />

sondern wählt sie bewusst zufällig.<br />

Smoketests kommen meist in frühen<br />

Entwicklungsphasen zum Einsatz. Sie<br />

klären, ob das Programm funktioniert<br />

ohne abzurauchen – daher der Name.<br />

Die Praxis zeigt, dass diesem Stochern im<br />

Nebel witzigerweise oft eine ganz passable<br />

Testabdeckung gelingt.<br />

Überhaupt sind die Ausprägungen, Spielarten<br />

und deren Kategorisierungsmöglichkeiten<br />

beim <strong>Software</strong>-Testing offenbar<br />

unendlich. Wer sich der Wikipedia-Seite<br />

[3] und den dort verzeichneten Verlinkungen<br />

widmet, verliert schnell den Überblick.<br />

Es gibt objektorientiertes Testen,<br />

zustandsbasiertes, Klassentests, Modulund<br />

Unittests, Regressionstests, Integrationstests,<br />

Datenkonsistenztests, Systemtests,<br />

Akzeptanztests … Letztlich geht es<br />

aber immer darum, Fehler zu finden.<br />

Fehl ohne Tadel<br />

Auch wenn die wenigsten Programmierer<br />

Ada-Code für Trägerraketen entwickeln,<br />

sollten sie sich selbstbewusst ihrer eigenen<br />

Fehlbarkeit stellen – wo Menschen<br />

arbeiten, machen sie auch Fehler. Das ist<br />

kein Beinbruch, solange man die rchtigen<br />

Schlüsse daraus zieht: Mit Köpfchen<br />

und Verantwortung geplante und durchgeführte<br />

<strong>Software</strong>tests machen den Bugs<br />

wirksam den Garaus. Das Sachgebiet ist<br />

viel zu umfangreich, als dass ein <strong>Magazin</strong>-Schwerpunkt<br />

es komplett zu würdigen<br />

vermag. Die folgenden Artikel setzen<br />

aber Spots auf einige Teildisziplinen, die<br />

manchem <strong>Software</strong>-Manager der Ariane 5<br />

zur Erleuchtung hätten verhelfen können<br />

– und nicht nur dem. n<br />

Infos<br />

[1] Ken Garlington, „Critique of ‚Put it in the<br />

contract: The lessons of Ariane‘“: [http://​<br />

lore. ua. ac. be/ Teaching/ SE3BAC/ ariane. html]<br />

[2] Coverity: [http:// www. coverity. com/ de/]<br />

[3] „<strong>Software</strong>test“ bei Wikipedia:<br />

[http:// de. wikipedia. org/ wiki/ <strong>Software</strong>test]


Admin-MAGAZIN<br />

im Jahres-Abo<br />

Jede Ausgabe des Admin-<strong>Magazin</strong>s bietet praktisch anwendbares Wissen<br />

von ausgewiesenen Experten und ausführliche Hintergrundberichte für alle<br />

Systemverwalter von <strong>Linux</strong>, Unix und Windows. Die Schwerpunkte reichen von<br />

Storage und Backup bis hin zu Netzwerk-Themen und Security.<br />

Ein Sonderteil hilft Admins heterogener Welten.<br />

15 % sparen<br />

Jetzt bestellen unter:<br />

www.admin-magazin.de/abo<br />

sichern Sie Sich Ihr<br />

gratis ADMIN T-Shirt!<br />

• Telefon 07131 / 2707 274 • Fax 07131 / 2707 78 601 • E-Mail: abo@admin-magazin.de<br />

Mit dem Jahres-Abo erhalten Sie 6 Ausgaben des Admin-<strong>Magazin</strong>s zum Vorzugspreis von E 49,90 * statt E 58,80 *<br />

(Lieferung frei Haus).<br />

* Preise gelten für Deutschland. Schweiz: SFr 82,32; Österreich: E 54,90; anderes Europa: E 59,90


Titelthema<br />

www.linux-magazin.de Statische Analyse 08/2012<br />

26<br />

Werkzeuge zur statischen Codeanalyse<br />

Fusselfreier Code<br />

Tools zur statischen Analyse durchkämmen selbst gestrickten Code nach Fusseln und Knötchen. Was Open-<br />

Source-Werkzeuge für C, C++, Java und Python leisten, beschreibt dieser Artikel. Tim Schürmann<br />

Codeanalyse gehört (siehe Grundlagenartikel<br />

in diesem Schwerpunkt).<br />

Welche Fehler sich damit prinzipiell aufdecken<br />

lassen, fasst der Kasten „Fundstücke“<br />

zusammen. Manche Werkzeuge<br />

prüfen allerdings nur auf einen Teil dieses<br />

Katalogs. Einige erlauben es dem Entwickler<br />

immerhin, nachträglich weitere<br />

Prüfregeln hinzuzufügen. Häufig muss<br />

er sich dabei jedoch in eine kryptische<br />

Beschreibungssprache einarbeiten oder<br />

selbst entsprechende Prüfroutinen programmieren.<br />

© Suzanne Tucker, 123RF.com<br />

Beim Testen von <strong>Software</strong> hilft der Compiler<br />

nur eingeschränkt. Er prangert meist<br />

lediglich Tipp- und Syntaxfehler an. Speicherlecks,<br />

endlos laufende Schleifen oder<br />

Race Conditions dagegen erkennt der Entwickler<br />

erst, wenn das Programm läuft<br />

und mit den zuvor aufwändig erdachten<br />

Testdaten gegen die Wand fährt.<br />

Zumindest einen Teil der aufgezählten<br />

Probleme kann entdecken, wer den<br />

Quellcode genau unter die Lupe nimmt.<br />

Das Paradebeispiel zeigt, wie in C und<br />

C++ aus dem Vergleich<br />

if ( a == b ) ...<br />

ein vergessenes Gleichheitszeichen eine<br />

Zuweisung macht:<br />

if ( a = b ) ...<br />

Gerade bei schwer lesbarem und umfangreichem<br />

Quellcode stößt der Mensch<br />

dabei jedoch an seine Grenzen. Ein falsch<br />

gesetztes Semikolon entdecken ist ähnlich<br />

schwierig, wie eine Nadel im Heuhaufen<br />

zu finden – wenn man denn überhaupt<br />

daran denkt, alle Strichpunkte zu<br />

überprüfen. Zudem kostet eine solche<br />

manuelle Inspektion extrem viel Zeit.<br />

Automatische Assistenten<br />

Glücklicherweise gibt es zahlreiche Werkzeuge,<br />

die eine solche statische Codeanalyse<br />

in Sekundenbruchteilen durchführen.<br />

In der Regel parsen sie zunächst den<br />

Quellcode ähnlich wie der Compiler. Mit<br />

dem dabei aufgebauten Wissen können<br />

sie dann nicht nur den Programmablauf<br />

auf Probleme abklopfen, sondern<br />

auch eine aufwändige Datenflussanalyse<br />

durchführen.<br />

In seltenen Fällen starten sie sogar selbst<br />

generierten Objektcode – auch wenn<br />

das eigentlich nicht mehr zur statischen<br />

Stil und Statistik<br />

Wenn solch ein Tool schon mal den<br />

Quellcode in den Fingern hat, kann es<br />

gleich noch ein paar andere Dinge damit<br />

anstellen. So begutachten manche Werkzeuge<br />

die Formatierung des Quellcodes<br />

und übernehmen damit die Aufgaben<br />

eines Style-Checkers. Andere legen sogar<br />

umfangreiche Statistiken über den<br />

Quellcode an.<br />

Fast jedes Werkzeug bewertet oder klassifiziert<br />

die entdeckten Probleme. Im einfachsten<br />

Fall unterscheidet ein Tool nur<br />

Fehler und Warnungen, differenzierter<br />

sind die ebenfalls beliebten Punktesysteme<br />

oder Noten. Besonders kritische<br />

Stellen erhalten einen höheren Punktwert<br />

als weniger gefährliche.<br />

Da Werkzeuge zur statischen Codeanalyse<br />

direkt den Quellcode inspizieren,<br />

müssen sie die Eigenheiten der jeweiligen<br />

Programmiersprache und deren typische<br />

Problemzonen kennen. Während<br />

Online PLUS<br />

Informationen zur statischen Codeanalyse<br />

für PHP finden Sie unter [http://​<br />

www. linux‐magazin. de/ plus/ 2012/​08].


Abbildung 1: Das Werkzeug Splint entdeckt in Listing 1 viele zumindest problematische Codeteile. GCC in der<br />

Standardeinstellung dagegen übersetzt den Code ohne Beanstandung.<br />

der Program mierer etwa in C und C++<br />

manuell den Speicher verwalten muss,<br />

greift ihm in Java die Garbage Collection<br />

unter die Arme. Meist beschränken sich<br />

Werkzeuge daher auf eine einzige Programmiersprache.<br />

Schlüpfrige Typen<br />

Bei dynamisch typisierten (Skript-)Sprachen<br />

wie Python gestaltet sich die statische<br />

Codeanalyse etwas schwieriger.<br />

Dort steht der Typ einer Variablen erst<br />

zu Laufzeit fest und darf sich je nach<br />

Programmiersprache sogar während der<br />

Ausführung ändern. In der Folge warnen<br />

die Werkzeuge zwangsweise häufiger vor<br />

Stellen, die eigentlich korrekt sind – sie<br />

erzeugen so genannte False Positives. Übrigens<br />

sind auch statisch typisierte Programmiersprachen<br />

nicht vor Fehlalarmen<br />

gefeit. Bessere Werkzeuge erlauben deshalb,<br />

bestimmte Tests oder Codepassagen<br />

von der Prüfung auszunehmen.<br />

Fundstücke<br />

Einige typische problematische Konstrukte, die<br />

eine statische Codeanalyse aufdecken kann:<br />

n Nicht initialisierte oder deklarierte Variablen<br />

n Nie verwendete Variablen, Funktionen und<br />

Klassen<br />

n Variablen, die zwischen zwei Zuweisungen<br />

nicht verwendet werden<br />

n Zeiger ins Nichts, Zugriff auf nicht existierende<br />

Objekte<br />

n Überschrittene Array- oder Listengrenzen<br />

n Probleme bei der Speicherverwaltung<br />

einschließlich Speicherlecks und Buffer<br />

Overflows<br />

n Code, der niemals erreicht werden kann<br />

n Überflüssige If-Abfragen<br />

n Endlos laufende Schleifen<br />

Werkzeuge zur statischen Codeanalyse<br />

haben durchweg die Form von Kommandozeilen-Programmen,<br />

die der Programmierer<br />

auf den Quellcode ansetzt und<br />

dann umgehend die Verbesserungsvorschläge<br />

und Warnungen erhält. Für einige<br />

gibt es auch eine grafische Benutzeroberfläche.<br />

Deren Entwickler behandeln sie<br />

jedoch meist recht stiefmütterlich, viele<br />

GUIs nutzen zudem das eigentlich nicht<br />

mehr ganz zeitgemäße Tk-Toolkit. Nützlicher<br />

sind da schon Plugins für bekannte<br />

IDEs wie Eclipse: Im Idealfall sieht der<br />

Coder dann schon beim Tippen, wo ein<br />

Programm klemmt.<br />

Flusensiebe<br />

Eines der ersten Werkzeuge zur statischen<br />

Codeanalyse war Lint [1]. Es entstand<br />

bereits Ende der 70er Jahre und<br />

kümmerte sich ausschließlich um C-<br />

Programme. Sein Name leitet sich vom<br />

englischen Wort für Fusseln ab. Es fängt<br />

n Ergebnisse einer Funktion oder Methode<br />

werden nicht verwendet<br />

n Probleme beim Überladen von Methoden<br />

und Funktionen<br />

n Fehlende oder falsch verwendete Konstruktoren<br />

oder Destruktoren<br />

n Doppelte Codepassagen (unbedarftes<br />

Copy & Paste)<br />

n Probleme in den Vererbungsbeziehungen<br />

(zum Beispiel Zyklen)<br />

n Inkorrekte Implementierung von Schnittstellen<br />

n Inkorrektes Werfen und Fangen von Exceptions<br />

n Falsche Anzahl von Parametern und Parametertypen,<br />

insbesondere bei schwach<br />

typisierten Sprachen wie Python<br />

gewissermaßen lose Partikel aus einem<br />

Programm wie ein Flusensieb im Wäschetrockner.<br />

Lint war so bekannt, dass<br />

auch ähnlich arbeitende Werkzeuge für<br />

andere Sprachen diesen Namen erhielten.<br />

So findet man etwa im Paketmanager von<br />

Ubuntu 12.04 ein Lint für Java (namens<br />

Jlint), Python (Pylint) und sogar Haskell<br />

(Hlint). Diese Werkzeuge sind jedoch weder<br />

verschwägert noch verwandt mit dem<br />

ursprünglichen Lint.<br />

E C und C++<br />

Eine moderne Fassung für C-Programme<br />

heißt Splint. Listing 1 zeigt ein mit zahlreichen<br />

trivialen Fehlern behaftetes,<br />

leicht verständliches C-Programm. Wie<br />

Abbildung 1 beweist, entdeckt Splint<br />

darin stolze elf Probleme. Der Compiler<br />

dagegen übersetzt in Standardeinstellung<br />

denselben Code, ohne zu murren. Lässt<br />

man »gcc« wie in Abbildung 2 jedoch<br />

etwas penibler zu Werke gehen, bemerkt<br />

auch dieser sechs Probleme.<br />

Wie das Beispiel zeigt, führen heute fast<br />

alle Compiler selbst eine statische Code-<br />

Listing 1: Fehlerhaftes »test.c«<br />

01 #include <br />

02 <br />

03 printtext(text)<br />

04 {<br />

05 printf("%d", text); /* Rückgabewert von<br />

printf nicht genutzt */<br />

06 }<br />

07 <br />

08 int main ()<br />

09 {<br />

10 int a;<br />

11 char* c;<br />

12 <br />

13 /* Nutzung von a ohne vorherige Zuweisung: */<br />

14 while (a != 0); /* Falsches Semikolon,<br />

dadurch Endlosschleife */<br />

15 {<br />

16 a=a‐1;<br />

17 }<br />

18 <br />

19 if(a=1) /* Zuweisung statt Vergleich */<br />

20 {<br />

21 /* Zeiger ins Nichts übergeben */<br />

22 /* falsche Parameteranzahl */<br />

23 printtext(c, 2);<br />

24 }<br />

25 <br />

26 /* Kein Rückgabewert für main() */<br />

27 }<br />

Statische Analyse 08/2012<br />

Titelthema<br />

www.linux-magazin.de<br />

27


Titelthema<br />

www.linux-magazin.de Statische Analyse 08/2012<br />

28<br />

Abbildung 2: Die Arbeitsteilung ist nicht so streng: Auch Compiler, wie hier der GCC, führen eine mehr oder<br />

weniger umfangreiche statische Analyse durch.<br />

analyse durch. Meist kommen sie jedoch<br />

nicht an die speziellen Prüfwerkzeuge<br />

heran. Beim GCC-Compiler sind die Fehlermeldungen<br />

zudem teilweise verklausuliert<br />

oder nichtssagend.<br />

Ganz anders sein Konkurrent Clang: Das<br />

C- und C++-Frontend für den modernen<br />

Compiler-Unterbau LLVM enthält bereits<br />

einen äußerst mächtigen statischen Code-<br />

Analysierer namens »scan‐build« (Abbildung<br />

3). Der nimmt aber nur C- und<br />

Objective-C-Code unter die Lupe und<br />

legt den Fokus zudem auf die Mac-OS-X-<br />

Entwicklung. Doch kann es sich lohnen,<br />

einen Blick auf die verfügbaren Compiler<br />

und Interpreter zu werfen.<br />

Neben Splint existieren zahlreiche weitere<br />

statische Code-Analysierer für<br />

C und C++, die sich ebenfalls in den<br />

Repositories der Distributionen finden.<br />

Dabei stößt man erstaunlich oft auf ziemlich<br />

betagte Tools. Beispielsweise erschien<br />

die aktuelle Splint-Version bereits am 12.<br />

Juli 2007, die letzten Änderungen in der<br />

Entwicklerversion fanden 2009 statt. Die<br />

Dokumentation ist sogar auf das Jahr<br />

2003 datiert.<br />

Der Konkurrent Flawfinder wirbt zwar<br />

mit C++-Unterstützung, weist aber ein<br />

ähnlich hohes Alter wie Splint auf und<br />

kennt daher noch nicht den neuen C++11-<br />

Standard. Dafür stammt die aktuelle Version<br />

von Frama-C aus dem Oktober 2011,<br />

doch wie sein Name schon andeutet,<br />

analysiert das Werkzeug ausschließlich<br />

C-Programme, lässt sich aber über Plugins<br />

um weitere Funktionen ergänzen, Anwender<br />

können zudem kostenpflichtigen<br />

Support erwerben.<br />

Ein echter Lichtblick ist das derzeit äußerst<br />

populäre Cppcheck, das angeblich<br />

schon Fehler in <strong>Linux</strong>-Kernel und Mplayer<br />

aufgedeckt hat. Das Werkzeug kennt bereits<br />

C++11, nimmt sich der STL an und<br />

prüft sogar, ob der Quellcode vielleicht<br />

auf 64-Bit-Systemen Probleme bereitet.<br />

Seine Meldungen kann Cppcheck nicht<br />

nur auf die Konsole schreiben, sondern<br />

sie auch in anderen Formaten ausgeben,<br />

etwa in XML (Abbildung 4). Das ist besonders<br />

nützlich, wenn der Entwickler<br />

die Meldungen in anderen Programmen<br />

weiterverarbeiten möchte.<br />

Cppcheck lässt sich online ausprobieren<br />

[2]: Einfach den Quellcode in das Webformular<br />

eintippen und checken lassen.<br />

Die Entwickler haben sich das ehrgeizige<br />

Ziel gesetzt, alle ein bis zwei Monate<br />

eine neue Version herauszubringen. In<br />

den IDEs Code::Blocks und Code Lite ist<br />

Cppcheck bereits enthalten. Plugins für<br />

Eclipse, Hudson, Jenkins und sogar Gedit<br />

stehen auf der Homepage bereit.<br />

Apropos Eclipse: Zu CDT, der Erweiterung<br />

für die C-Entwicklung, gehört ab<br />

Version 7.0 eine statische Codeanalyse<br />

namens Codan. Sie bekrittelt, wie in Abbildung<br />

5 gezeigt, potenzielle Fehler bereits<br />

bei der Eingabe. Darüber hinaus darf<br />

der Anwender in den Einstellungen ganz<br />

bequem selbst entscheiden, ob ein Prüfkriterium<br />

nur eine Warnung oder gleich<br />

einen schwerwiegenden Fehler auslöst.<br />

Außerdem kann Codan einen einheitlichen<br />

Codestil sicherstellen. Tabelle 1<br />

fasst eine kleine Auswahl freier Werkzeuge<br />

für C und C++ zusammen.<br />

E Java<br />

Wer in Java programmiert, deckt mit einem<br />

guten Compiler schon eine ganze<br />

Reihe typischer Fehler auf. Beispielsweise<br />

bemängelt die Variante aus dem<br />

Open JDK fehlende Rückgabewerte und<br />

nicht initialisierte Variablen. Dennoch<br />

bleiben genügend Baustellen aus dem<br />

Kasten „Fundstücke“ übrig, etwa endlos<br />

laufende Schleifen und unerreichbare<br />

Zweige. Bekannte kostenfreie Werkzeuge<br />

für Java stellt Tabelle 2 vor.<br />

Besonders beliebt ist das Tool PMD, bei<br />

dem die Entwickler übrigens offen lassen,<br />

was die Abkürzung bedeuten soll.<br />

Es prangert auch umständlich aufgebaute<br />

Codeteile an, etwa komplexe Schleifen,<br />

die sich in schnellere »while«-Blöcke<br />

umwandeln ließen. Alle Tests unterteilt<br />

PMD thematisch in so genannte Regelsätze<br />

(Rulesets).<br />

Tabelle 1: Werkzeuge für C und C++ (Auswahl)<br />

Name Versionsnummer Homepage Lizenz Typ Sprachen Prüfungen erweiterbar<br />

Codan CDT 8.1 (April 2012) [http:// wiki. eclipse. org/​ EPL 1.0 Plugin für Eclipse C, C++ ja<br />

CDT/ designs/ StaticAnalysis]<br />

Cppcheck 1.54 (vom 25.4.2012) [http:// cppcheck.​<br />

GPLv3 Kommandozeile, GUI C, C++ nein<br />

sourceforge. net]<br />

Flawfinder 1.27 (vom 17.1.2007) [http:// www. dwheeler. com/​ GPLv2 Kommandozeile C, C++ nein<br />

flawfinder/]<br />

Frama-C 20111001 (vom [http:// frama‐c. com] LGPLv2 Kommandozeile, GUI C ja<br />

01.10.2011)<br />

Scan-build 3.1 (vom 22.5.2012) [http:// clang‐analyzer.​ LLVM Kommandozeilen, C, Objective-C nein<br />

llvm. org]<br />

Release<br />

License<br />

Teil von Clang<br />

Splint 3.1.2 (vom 12.7.2007) [http:// www. splint. org] GPLv2 Kommandozeile C nein


Statische Analyse 08/2012<br />

Titelthema<br />

Abbildung 3: Das Tool »scan‐build« von LLVM zeigt sogar auf kritische Anweisungen<br />

und nennt nicht nur die Zeilennummer.<br />

Beim Aufruf muss der Benutzer eine<br />

Liste mit den anzuwendenden Regelsätzen<br />

angeben. Dummerweise gibt es<br />

standardmäßig keinen Regelsatz, der alle<br />

Prüfungen einschließt. Damit erhält der<br />

Anwender entweder an der Kommandozeile<br />

einen ziemlichen Bandwurmbefehl<br />

oder muss erst umständlich einen<br />

eigenen Regelsatz erstellen. Andererseits<br />

kennt PMD auch Tests, die auf Eigenheiten<br />

des Android-SDK oder J2EE eingehen.<br />

Gefundene Fehler gibt das Werkzeug<br />

nicht nur als reinen Text aus, sondern<br />

auch in anderen Formaten, etwa in XML<br />

oder HTML.<br />

Checkstyle überwacht eigentlich die Einhaltung<br />

von Stilvorgaben. So meckert es,<br />

wenn Javadoc-Kommentare fehlen oder<br />

Namen von den Schreibkonventionen abweichen<br />

[3]. Seit Version 3 finden aber<br />

auch immer mehr andere Prüfungen<br />

Eingang in das Werkzeug. So prangert<br />

es mittlerweile duplizierte Codeteile an,<br />

prüft die Sichtbarkeit von Klassenmethoden<br />

und spürt leere Anweisungsblöcke<br />

auf. Ähnlich wie PMD startet Checkstyle<br />

nur, wenn der Anwender ihm eine Konfigurationsdatei<br />

mit den durchzuführenden<br />

Prüfungen an die Hand gibt.<br />

Die <strong>Software</strong> Hammurapi rühmt sich<br />

damit, für besonders große Projekte geeignet<br />

zu sein. Das Werkzeug lässt sich<br />

entweder als Ant-Task oder über ein<br />

mitgeliefertes Eclipse-Plugin verwenden.<br />

Letztgenanntes dürfen nur nichtkommerzielle<br />

Projekte kostenlos nutzen.<br />

Außerdem wollte es in den Tests der<br />

Redaktion nicht mehr mit der aktuellen<br />

Eclipse-Version zusammenarbeiten. Generell<br />

verlangt Hammurapi eine im Hintergrund<br />

laufende HSQLDB-Datenbank<br />

sowie Apache Tomcat.<br />

Bytecode<br />

Zu den zahlreichen Werkzeugen für Java,<br />

die anstelle des Quellcodes den Bytecode<br />

inspizieren, zählt unter anderem Jlint.<br />

Es führt eine Datenflussanalyse durch<br />

und deckt auch Synchronisationsprobleme<br />

auf. Witzigerweise analysiert es<br />

zwar Java-Code, ist aber selbst in C++ geschrieben.<br />

Dem Jlint-Paket liegt noch das<br />

Werkzeug Anti C bei, das einfache Fehler<br />

und Probleme in C- und C++-Quellcode<br />

entdeckt.<br />

Ebenfalls nur Bytecode betrachtet Findbugs.<br />

Es startet von Haus aus mit einer<br />

schicken Benutzeroberfläche. Die<br />

verlangt, dass der Anwender zunächst<br />

ein Projekt anlegt, dem er dann alle<br />

Bytecode-Dateien hinzufügt. Das macht<br />

Abbildung 4: Cppcheck nennt immer nur den ersten Fehler im Programm, gibt<br />

diesen auf Wunsch aber auch im XML-Format aus.<br />

das Testen in komplexen Projekten zwar<br />

bequem, ist aber umständlich, wenn man<br />

nur eine einzelne Datei prüfen möchte.<br />

Glücklicherweise arbeitet Findbug auch<br />

auf der Kommandozeile.<br />

Für fast alle in Tabelle 2 genannten Java-<br />

Werkzeuge existieren passende Plugins<br />

für Eclipse, häufig sind auch noch Pendants<br />

für weitere Entwicklungsumgebungen<br />

wie Intelli J und Netbeans zu<br />

haben. Hier muss man allerdings etwas<br />

auf die Versionsnummern achten, insbesondere<br />

wenn die Plugins nicht von<br />

den Werkzeugentwicklern selbst stammen.<br />

Beispielsweise waren die Plugins<br />

für Checkstyle zum Redaktionsschluss<br />

weitgehend veraltet.<br />

E Python<br />

Unter Python-Programmierern sind drei<br />

Werkzeuge besonders beliebt (Tabelle<br />

3). Sie liegen auch den meisten großen<br />

<strong>Linux</strong>-Distributionen bei. Neben den üblichen<br />

Fehlern aus dem Kasten „Fundstücke“<br />

weisen sie auch auf Python-typische<br />

Probleme hin, etwa wenn wegen<br />

falscher Einrückungen eine Funktion<br />

scheinbar doppelt definiert ist.<br />

Pychecker lässt sich sogar direkt in eigene<br />

Python-Programme einbinden. Dann<br />

www.linux-magazin.de<br />

29<br />

Tabelle 2: Werkzeuge für Java (Auswahl)<br />

Name Versionsnummer Homepage Lizenz Typ Sprachen Prüfungen erweiterbar<br />

Checkstyle 5.5 (vom [http://​ LGPLv2.1 Kommandozeile Java ja<br />

5.11.2011) checkstyle.​<br />

sourceforge. net]<br />

Findbugs 2.0.1-rc2 (vom<br />

11.5.2012)<br />

[http:// findbugs.​<br />

sourceforge. net]<br />

LGPL<br />

Kommandozeile,<br />

GUI<br />

Java<br />

nein<br />

Hammurapi 5.7.0 [http:// www.​<br />

hammurapi. biz]<br />

Jlint<br />

PMD<br />

3.1.2 (vom<br />

11.1.2011)<br />

5.0.0 (vom<br />

1.5.2012)<br />

[http:// jlint.​<br />

sourceforge. net]<br />

[http:// pmd.​<br />

sourceforge. net]<br />

Apache-Lizenz 2.0,<br />

LGPL, Hammurapi Group<br />

Community License<br />

Eclipse-Plugin,<br />

Ant-Task<br />

Java<br />

GPLv2 Kommandozeile Java (Anti C: C, nein<br />

C++, Objective-C)<br />

eigene (BSD-ähnlich) Kommandozeile Java ja<br />

ja


Titelthema<br />

www.linux-magazin.de Statische Analyse 08/2012<br />

30<br />

Abbildung 5: Praktisch: Plugins für integrierte Entwicklungsumgebunden, hier Codan in Eclipse, warnen<br />

schon bei der Eingabe von Quellcode vor Problemen.<br />

len, die eigentlich korrekt ablaufen (False<br />

Positives). Erschwerend kommt hinzu,<br />

dass die Entwickler fast nie verraten,<br />

welche Code-Anomalien ihre Werkzeuge<br />

prüfen und wann sie diese bemängeln.<br />

Häufig findet man auf der Projekt-Homepage<br />

nur eine Liste mit den wichtigsten<br />

Problemen, die das Programm abklopft.<br />

Ausführliche Erläuterungen wie bei Splint<br />

und Jlint sind selten.<br />

Ebenfalls häufig im Unklaren bleibt, welche<br />

Sprachversion das Werkzeug unterstützt<br />

– dabei gibt es etwa zwischen C++<br />

in der Fassung von 1998 und dem brandneuen<br />

C++11 gravierende Unterschiede.<br />

Es bietet sich folglich an, den Quellcode<br />

von mehreren Werkzeugen analysieren<br />

zu lassen. Was übrigens passieren kann,<br />

wenn man eines der Werkzeuge auf einen<br />

Konkurrenten ansetzt, zeigt ein amüsanter<br />

Blogeintrag unter [5]. (mhu) n<br />

prüft es automatisch alle Module, die<br />

nach der entsprechenden »import«-Zeile<br />

folgen. Doch übersetzt Py checker das zu<br />

untersuchende Programm in Bytecode<br />

und führt diesen sogar aus. Das ist eher<br />

unerwünscht, weil das Programm dann<br />

schon bei der vorbeugenden Analyse<br />

abläuft und dabei vielleicht Nutzdaten<br />

ändert. Daneben gibt es eine GUI-Version<br />

des Programms (Abbildung 6)<br />

Hier gibt’s Noten<br />

Als Alternative bietet sich das bereits erwähnte<br />

Pylint an. Neben den üblichen<br />

Tests prüft es auch, ob der Quellcode dem<br />

PEP8-Styleguide folgt [4]. Darüber hinaus<br />

generiert Pylint zahlreiche Statistiken<br />

und vergibt sogar eine Gesamtnote für<br />

die Codequalität. Interessant ist das mitgelieferte<br />

Werkzeug »pyreverse«, das aus<br />

dem Quellcode ein UML-Diagramm im<br />

Dot-Format von Graphviz erstellt. Pylint<br />

importiert die zu analysierenden Dateien,<br />

was unter Umständen einige ungewollte<br />

Nebenwirkungen auslöst. Der Konkurrent<br />

Pyflakes liest hingegen die Datei nur<br />

ein, bietet dafür aber keine Stilprüfung.<br />

Eines reicht selten<br />

Werkzeuge zur statischen Codeanalyse<br />

sorgen nicht automatisch für fehlerfreien<br />

Code. Sie zeigen lediglich potenzielle<br />

Gefahrenquellen beziehungsweise Anomalien<br />

auf. Die Hinweise müssen zudem<br />

nicht immer stimmen: Gerade bei komplexem<br />

Code melden die Werkzeuge Stel-<br />

Infos<br />

[1] Wikipedia-Eintrag zu Lint:<br />

[http:// de. wikipedia. org/ wiki/​<br />

Lint_%28Programmierwerkzeug%29]<br />

[2] Online-Angebot von Cppcheck:<br />

[http:// cppcheck. sourceforge. net/ demo/]<br />

[3] Wikipedia-Eintrag zu Javadoc:<br />

[http:// de. wikipedia. org/ wiki/ Javadoc]<br />

[4] PEP8-Styleguide: [http:// www. python. org/​<br />

dev/ peps/ pep‐0008/]<br />

[5] Luke Plant, „Pychecker vs Pylint vs<br />

Django“: [http:// lukeplant. me. uk/ blog/​<br />

posts/ pychecker‐vs‐pylint‐vs‐django/]<br />

Abbildung 6: Pychecker bringt eine kleinteilige grafische Oberfläche mit, die auf Python-Tk basiert und noch<br />

deutlich in den Kinderschuhen steckt.<br />

Tabelle 3: Werkzeuge für Python (Auswahl)<br />

Name Versionsnummer Homepage Lizenz Typ Sprachen Prüfungen erweiterbar<br />

Pychecker 0.8.19 (vom [http:// pychecker.​ eigene (BSD-ähnlich) Kommandozeile, GUI Python nein<br />

8.1.2011)<br />

sourceforge. net]<br />

Pyflakes 0.5.0 (vom [https:// launchpad.​ MIT-Lizenz Kommandozeile Python nein<br />

6.9.2011) net/ pyflakes]<br />

Pylint 0.25.1 (vom<br />

8.12.2011)<br />

[http:// pypi. python.​<br />

org/ pypi/ pylint]<br />

GPLv2 Kommandozeile, GUI Python ja


www.kamp.de<br />

In der IT setzt man besser<br />

auf einen starken Partner!<br />

IT-Lösungen – stark und individuell. Mehr unter www.kamp.de


Titelthema<br />

www.linux-magazin.de TDD 08/2012<br />

32<br />

Testgetriebene <strong>Software</strong>-Entwicklung<br />

Präziser Antrieb<br />

Das Credo des Test Driven Development (TDD): Wer zuerst Tests schreibt und dann erst programmiert, erzeugt<br />

sauberen Code und geprüfte Programme. Wie das in Java und weiteren Sprachen geht, zeigt dieser Artikel, der<br />

auch die Vor- und Nachteile der Methode abwägt. Gunnar Wrobel<br />

© koi88, 123RF<br />

diskutiert dieser Artikel gegen Ende noch<br />

einmal ausführlich. Zunächst soll ein<br />

praktisches Beispiel die Vorgehensweise<br />

anschaulich machen.<br />

Das Beispiel verwendet so genannte<br />

Unit-Tests. Dabei handelt es sich um sehr<br />

kleinteilige Tests, die nah am Code nur<br />

Bruchstücke oder Einheiten (Units) des<br />

Programms <strong>testen</strong>. Der Begriff testgetriebene<br />

Entwicklung bezieht sich so gut wie<br />

immer auf Units.<br />

Werkzeuge für Unit-Testing existieren für<br />

praktisch jede Programmiersprache. Das<br />

folgende Beispiel könnte sich also jeder<br />

beliebigen Sprache bedienen. Da Java<br />

jedoch sehr verbreitet ist und für viele<br />

Entwickler gut lesbar, demonstrieren die<br />

folgenden Zeilen testgetriebene Entwicklung<br />

in dieser Sprache.<br />

Programmieren macht Spaß. Der Entwickler<br />

schreibt ein paar Zeilen Code,<br />

und schon erscheint eine Grafik auf dem<br />

Bildschirm oder ein Roboter bewegt seinen<br />

Arm. Besonders im Bereich freier<br />

<strong>Software</strong> ist das die Herangehensweise<br />

fast jedes Programmier-Einsteigers.<br />

Rot und Grün<br />

Die Verfechter testgetriebener Programmierung<br />

predigen jedoch seit Jahren, dass<br />

so <strong>Software</strong> entsteht, die keine hohe Qualität<br />

aufweist. Die neue Lehre propagiert<br />

das Mantra „red, green, refactor“ [1]. Diesem<br />

folgend schreibt der Programmierer<br />

erst einen Test. Der schlägt natürlich fehl<br />

– und weist damit gemäß Konvention den<br />

Status Rot auf. Im zweiten Schritt fügt<br />

der Entwickler den eigentlichen Code<br />

hinzu. Erfüllt dieser den vorher erstellten<br />

Test, wechselt der Status auf Grün. Dabei<br />

muss der Code zum Erfüllen der Testbedingung<br />

nicht zwingend bereits sauber<br />

geschrieben sein. Der letzte Schritt besteht<br />

aus Geradeziehen der Codestruktur,<br />

Umstrukturieren und Refactoring.<br />

Er muss allerdings unter Beachtung der<br />

geschriebenen Tests erfolgen: Der Status<br />

darf durch Refactoring nicht von Grün<br />

auf Rot wechseln.<br />

Das angestrebte Ziel dieses Verfahrens:<br />

sauberer Code mit hoher Qualität. Der<br />

Entwickler hat nicht mehr einfach nur<br />

Ideen oder Ziele vor Augen, die er sofort<br />

in Code umsetzt. Stattdessen treibt<br />

ein mit Hilfe der Tests definiertes Korsett<br />

den eigentliche Code. Entsprechend heißt<br />

diese Vorgehensweise testgetriebene Entwicklung.<br />

Die Überlegungen hinter diesem Verfahren,<br />

die Vorteile und auch die Nachteile,<br />

Schritt für Schritt<br />

Die Programmieraufgabe besteht darin,<br />

mit dem Avatar-Service Gravatar zu kommunizieren<br />

und einer E-Mail-Adresse ein<br />

Avatar-Bild zuzuordnen. Das Verfahren<br />

ist unter [2] beschrieben. Ein sehr ähnliches<br />

Beispiel hat der Autor bereits in<br />

einem früheren <strong>Linux</strong>-<strong>Magazin</strong> in der<br />

Sprache PHP umgesetzt [3]. Unter Java<br />

ist Junit [4] die Referenz in Sachen Unit-<br />

Testing. Wer die folgenden Schritte selbst<br />

durchführen möchte, installiert also das<br />

Paket in der <strong>Linux</strong>-Distribution seiner<br />

Wahl. Unter Ubuntu liefert das Paket »junit4«<br />

das Testwerkzeug.<br />

Der Entwickler sollte an dieser Stelle erst<br />

einmal das grundlegende Setup prüfen.<br />

Zu diesem Zweck schreibt er einen ersten<br />

Test in die Datei »GravatarTest.java«<br />

(Listing 1). Stimmt alles, kompiliert der<br />

Java-Compiler den Testfall, der sich anschließend<br />

fehlerfrei ausführen lässt. Der


Abbildung 1: Der erste Test ist erfolgreich, bestätigt aber lediglich die<br />

korrekte Installation von Junit.<br />

folgende Befehl kompiliert den Test in der<br />

Java-Quelldatei zu Bytecode:<br />

javac ‐cp /usr/share/java/junit4.jar:.U<br />

GravatarTest.java<br />

Danach sollte sich eine Datei »Gravatar-<br />

Test.class« im Verzeichnis befinden. Der<br />

nächste Befehl startet Junits »TestRunner«<br />

(»org.junit.runner.JUnitCore«) mit<br />

»GravatarTest« als Testfall:<br />

java ‐cp /usr/share/java/junit4.jar:.U<br />

org.junit.runner.JUnitCore GravatarTest<br />

Der einzige definierte Test (»public void<br />

testTrue«) prüft mit »assertTrue(true)«<br />

nur, ob »true« auch wirklich wahr ist.<br />

Läuft der Test wie in Abbildung 1 ab,<br />

funktioniert die Junit-Installation wie erwartet.<br />

In beiden Befehlszeilen legt die Option<br />

»‐cp« die Pfade fest, in denen Java-Klassen<br />

zu finden sind. Dieser Klassenpfad<br />

nimmt an, dass das Jar-Archiv für Junit<br />

unter »/usr/share/java/junit4.jar« installiert<br />

ist. Jeder Ort, an dem benötigte<br />

Bibliotheken liegen, muss hinter »‐cp«<br />

angegeben sein, auch das aktuelle Verzeichnis,<br />

kurz ».«.<br />

Listing 2 erweitert die<br />

einzelne Prüfung zu<br />

einer Testsuite, die<br />

mehrere Tests aufnimmt.<br />

In der Praxis<br />

würde der Programmierer<br />

langsamer vorgehen<br />

und nur einen<br />

oder zwei Tests hinzufügen,<br />

dann den passenden<br />

Code schreiben,<br />

weitere Tests hinzufügen und so<br />

weiter. Bei Skriptsprachen ließe sich eine<br />

solche Testsuite schon ausführen.<br />

Java ist etwas anspruchsvoller: Ohne eine<br />

Klasse »Gravatar« weigert sich der Compiler,<br />

die Suite in Bytecode zu konvertieren.<br />

Schließlich verwendet die Testsuite diese<br />

Klasse und ruft die Funktionen »getId()«<br />

sowie »getAvatarUrl()« auf. So muss der<br />

Entwickler die Klasse in der Datei »Gravatar.java«<br />

zumindest mit ein bisschen<br />

Code ausstatten (Listing 3).<br />

Alles auf Rot<br />

Der folgende Befehl auf der Kommandozeile<br />

sollte nun sowohl Code als auch<br />

Testsuite fehlerfrei kompilieren:<br />

javac ‐cp /usr/share/java/junit4.jar:.U<br />

Gravatar.java GravatarTest.java<br />

Das folgende Kommando führt die Tests<br />

der Suite aus:<br />

java ‐cp /usr/share/java/junit4.jar:.U<br />

org.junit.runner.JUnitCore GravatarTest<br />

Das endet aber im Desaster: Alle fünf<br />

Tests schlagen wegen der unvollständigen<br />

Implementierung der »Gravatar«-<br />

Klasse fehl (Abbildung 2).<br />

Es ist an der Zeit, den eigentlichen Code<br />

zu schreiben, und zwar getrieben durch<br />

die Tests. Den ersten Test, nämlich ob die<br />

E-Mail-Adresse »test@example.org« den<br />

Hash »0c17bf66e649070167701d2d3cd71<br />

711« ergibt, erfüllt der Entwickler auf<br />

ganz naive Art und Weise:<br />

public String getId(String mail) {<br />

return "0c17bf66e649070167701d2d3cd71711";<br />

}<br />

Dabei geht es wirklich nur darum, dass<br />

der Code den Test erfüllt. Solange der<br />

Entwickler keinen zweiten Test definiert<br />

hat, der eine komplexere Lösung erzwingt,<br />

spricht nichts dagegen, zunächst<br />

die einfachste Form der Implementierung<br />

zu wählen.<br />

Das ist einer der zentralen Aspekte testgetriebener<br />

Entwicklung: Die <strong>Software</strong><br />

sollte nur so komplex wie nötig sein.<br />

Verzichtet der Entwickler auf die testgetriebene<br />

Entwicklung, ist dies selten der<br />

Fall. Spontane Ideen beim Coden führen<br />

schnell zu zusätzlichen Features, neuen<br />

Abstraktionsebenen oder unnötiger Modularität.<br />

Daraus ergibt sich fast zwangsläufig<br />

unnötige Komplexität, die sich in<br />

Listing 1: Der erste Test<br />

01 import junit.framework.TestCase;<br />

02 <br />

03 public class GravatarTest extends TestCase {<br />

04 public void testTrue() {<br />

05 assertTrue(true);<br />

06 }<br />

07 }<br />

TDD 08/2012<br />

Titelthema<br />

www.linux-magazin.de<br />

33<br />

Listing 2: Testsuite<br />

01 import junit.framework.TestCase;<br />

02 <br />

03 public class GravatarTest extends TestCase {<br />

04 <br />

05 public void testAddressesOne()<br />

06 {<br />

07 Gravatar g = new Gravatar();<br />

08 assertEquals("0c17bf66e649070167701d2<br />

d3cd71711", g.getId("test@example.org"));<br />

09 }<br />

10 <br />

11 public void testAddressesTwo()<br />

12 {<br />

13 Gravatar g = new Gravatar();<br />

14 assertEquals("ae46d8cbbb834a85db7287f<br />

8342d0c42", g.getId("x@example.org"));<br />

15 }<br />

16 <br />

17 public void testIgnoreCase()<br />

18 {<br />

19 Gravatar g = new Gravatar();<br />

20 assertEquals(<br />

21 "55502f40dc8b7c769880b10874abc9d0",<br />

22 g.getId("Test@EXAMPLE.com")<br />

23 );<br />

24 }<br />

25 <br />

26 public void testTrimming()<br />

27 {<br />

28 Gravatar g = new Gravatar();<br />

29 assertEquals(<br />

30 "55502f40dc8b7c769880b10874abc9d0",<br />

31 g.getId(" Test@Example.com ")<br />

32 );<br />

33 }<br />

34 <br />

35 public void testAvatarUrl()<br />

36 {<br />

37 Gravatar g = new Gravatar();<br />

38 assertEquals(<br />

39 "http://www.gravatar.com/avatar/<br />

0c17bf66e649070167701d2d3cd71711",<br />

40 g.getAvatarUrl(" Test@<br />

Example.orG ")<br />

41 );<br />

42 }<br />

43 }


Titelthema<br />

www.linux-magazin.de TDD 08/2012<br />

34<br />

der weiteren Entwicklung der <strong>Software</strong><br />

als hinderlich erweisen kann.<br />

Für den zweiten Test der Testsuite in<br />

Listing 2 reicht der naive Ansatz schon<br />

nicht mehr aus. Um den Rückgabewert<br />

einer zweiten E-Mail-Adresse zu ermitteln,<br />

muss der Entwickler tatsächlich die<br />

MD5-Prüfsumme berechnen. Die Bibliothek<br />

»org.apache.commons.codec.digest.<br />

DigestUtils« bietet sich an, um das unter<br />

Java zu erledigen. Unter Ubuntu <strong>Linux</strong><br />

findet sie sich im Paket »libcommonscodec‐java«.<br />

Listing 4 erfüllt als Inhalt der Datei »Gravatar.java«<br />

die beiden ersten Tests. Der<br />

Entwickler kompiliert erneut, diesmal<br />

01 public class Gravatar {<br />

02 public String getId(String mail) {<br />

03 return "";<br />

04 }<br />

05 <br />

06 public String getAvatarUrl(String mail) {<br />

07 return "";<br />

08 }<br />

09 }<br />

Listing 3: »Gravatar.java«<br />

01 import org.apache.commons.codec.digest.DigestUtils;<br />

02 <br />

03 public class Gravatar {<br />

04 public String getId(String mail) {<br />

05 return DigestUtils.md5Hex(mail);<br />

06 }<br />

07 <br />

08 public String getAvatarUrl(String mail) {<br />

09 return "";<br />

10 }<br />

11 }<br />

Listing 4: Weitere Methoden<br />

01 import org.apache.commons.codec.digest.DigestUtils;<br />

02 <br />

03 public class Gravatar {<br />

Listing 5: Die fertige Klasse<br />

04 private final static String URL = "http://www.<br />

gravatar.com/avatar/";<br />

05 <br />

06 public String getId(String mail) {<br />

07 return DigestUtils.md5Hex(mail.toLowerCase().<br />

trim());<br />

08 }<br />

09 <br />

10 public String getAvatarUrl(String mail) {<br />

11 return URL + getId(mail);<br />

12 }<br />

13 }<br />

mit erweitertem Klassenpfad, damit die<br />

neue Bibliothek verfügbar ist:<br />

javac ‐cp /usr/share/java/junit4.jar:U<br />

/usr/share/java/commons‐codec.jar:.U<br />

Gravatar.java GravatarTest.java<br />

Anschließend lässt er die Tests laufen:<br />

java ‐cp /usr/share/java/junit4.jar:U<br />

/usr/share/java/commons‐codec.jar:.U<br />

org.junit.runner.JUnitCore GravatarTest<br />

Das ergibt aber immer noch drei gescheiterte<br />

Prüfungen.<br />

Der dritte Test fordert, dass die <strong>Software</strong><br />

den Hash unabhängig von Groß- und<br />

Kleinschreibung der E-Mail-Adresse bildet.<br />

Das ist mit »toLowerCase()« rasch<br />

implementiert, wie die Zeilen 6 bis 8 in<br />

Listing 5 zeigen. Wie vom vierten Test<br />

gefordert, ignoriert der Code mit »trim()«<br />

zudem Leerzeichen vor oder nach der E-<br />

Mail-Adresse. Der fünfte Test schließt das<br />

Beispiel ab und fordert eine Methode, die<br />

dem Aufrufenden die komplette Avatar-<br />

URL für eine E-Mail-Adresse zurückgibt<br />

(Zeilen 10 bis 12).<br />

Sind alle Verbesserungen schließlich wie<br />

in Listing 5 eingearbeitet, wechselt der<br />

Status der Testsuite von Rot auf Grün:<br />

Alle Tests laufen durch (Abbildung 3).<br />

Andere Sprachen, andere<br />

Sitten<br />

Java mag das Standardbeispiel sein, doch<br />

Unit-Test-Werkzeuge gibt es für praktisch<br />

jede Programmiersprache. Das Tool Junit<br />

[4] ist nicht Teil von Java, sondern ein<br />

separates Programm. Wer es nicht mag<br />

oder sich nicht nur auf Unit-Tests beschränken<br />

möchte, findet für Java auch<br />

alternative Ansätze. Eine sehr gute, Sprachen-unabhängige<br />

Referenz zu Unit-Tests<br />

liefert die Wikipedia-Seite [5].<br />

Bei C ist die Situation nicht ganz so einfach.<br />

Hier existiert eine ganze Reihe alternativer<br />

Werkzeuge mit<br />

unterschiedlicher Ausrichtung,<br />

da die Sprache<br />

C in sehr verschiedenen<br />

Szenarien zum<br />

Einsatz kommt. Das<br />

Werkzeug Check (Abbildung<br />

4) bietet sich<br />

für viele Standardsituationen<br />

an [6].<br />

Ähnliche Vielfalt bietet<br />

auch C++. Cppunit [7] ist hier ein<br />

häufig verwendetes Werkzeug. Eine gute<br />

Alternative stellt die Testbibliothek von<br />

Boost [8] dar. Da die Standardbibliothek<br />

von C++ immer mehr Boost-Bestandteile<br />

aufnimmt, könnte sich auch die entsprechende<br />

Testbibliothek zum Standard entwickeln.<br />

Unter PHP ist die <strong>Software</strong> PHP Unit [9]<br />

der Standard in Sachen Unit-Testing. Gelegentlich<br />

verwenden Projekte auch Simple<br />

Test [10]. Die restlichen Alternativen<br />

im PHP-Land rangieren derzeit jedoch<br />

unter ferner liefen.<br />

Ruby, Python, Javascript<br />

Ruby liefert das Unit-Testing schon als<br />

Element der Sprache in der Bibliothek<br />

Test::Unit [11] mit. Auch bei Ruby gibt<br />

es externe Alternativen, doch die Standardausstattung<br />

ist der unangefochtene<br />

Platzhirsch. Außerdem ist Test::Unit sehr<br />

gut erlern- und bedienbar.<br />

Ähnlich sieht es bei Python aus: Hier<br />

kommt die Bibliothek Unittest [12] gleich<br />

mit der Programmiersprache mit und darüber<br />

hinaus sogar noch Doctest [13].<br />

Während Unittest eher die standardmäßigen<br />

Unit-Tests bedient, bietet Doctest die<br />

interessante Möglichkeit, solche Tests in<br />

die Dokumentation einzelner Methoden<br />

zu schreiben.<br />

Bei Javascript ist die Situation weniger<br />

übersichtlich. Hier sind allerdings auch<br />

die Einsatzgebiete sehr heterogen. Wer<br />

gerne überprüfen möchte, ob eine Bibliothek<br />

sauber in allen Browsern läuft,<br />

braucht naheliegenderweise ein Testwerkzeug,<br />

das diese mit in die Tests<br />

einbeziehen kann, beispielsweise Js-testdriver<br />

[14]. Gerade weil es verschiedene<br />

Engines gibt, die Javascript verarbeiten,<br />

erweist sich in diesem Bereich das Unit-<br />

Testing als besonders hilfreich. Wer dagegen<br />

Server-seitigen Javascript-Code für<br />

Abbildung 2: Der Programmierer hat noch viel zu tun. Alle fünf Tests der<br />

Suite schlagen zunächst fehl.


TDD 08/2012<br />

Titelthema<br />

Abbildung 3: Alle Tests sind bestanden: Der Entwickler hat die Java-Klasse für<br />

den Gravatar-Client testgetrieben fertiggestellt.<br />

Abbildung 4: Unit-Test-Werkzeuge gibt es für fast alle Sprachen. Das Tool Check<br />

erledigt Unit-Tests für C-Programme.<br />

www.linux-magazin.de<br />

35<br />

Node.js <strong>testen</strong> möchte, greift passenderweise<br />

zu Nodeunit [15].<br />

Für die meisten Programmiersprachen<br />

existiert eine Auswahl an Werkzeugen.<br />

Es bleibt die Aufgabe des Entwicklers, die<br />

Vor- und Nachteile abzuwägen und das<br />

passende für das jeweilige Einsatzszenario<br />

auszuwählen. Das Feld des Unit-<br />

Testing besitzt zahlreiche Facetten und<br />

lässt sich nicht in eine universell gültige<br />

Herangehensweise packen.<br />

Das große Ganze<br />

Unit-Tests drängen sich für die testgetriebene<br />

Entwicklung geradezu auf.<br />

Schließlich steht jeder Code-Einheit der<br />

entsprechende Test-Code gegenüber. Und<br />

derselbe Programmierer kann im Entwicklungsprozess<br />

Code und Tests parallel<br />

bearbeiten. Umfangreichere Codeblöcke,<br />

Klassen oder Module deckt das Unit-Testing<br />

jedoch im Normalfall nicht ab. Arbeiten<br />

die Schnittstellen von zwei Klassen<br />

sauber zusammen? Diese Frage sollten<br />

Unit-Tests an sich nicht stellen, für das<br />

Zusammenspiel der <strong>Software</strong>komponenten<br />

ist sie aber essenziell.<br />

Man spricht bei Tests auf dieser Ebene<br />

eher von integrativen Tests oder Modultests.<br />

Auch diese lassen sich vielfach noch<br />

mit den gleichen Unit-Test-Werkzeugen<br />

erledigen. Allerdings sind die dafür formulierten<br />

Tests umfangreicher, da nicht<br />

selten eine Vielzahl von Komponenten<br />

erforderlich ist, um das Zusammenspiel<br />

überhaupt prüfen zu können.<br />

Wäre noch zu klären, was passiert,<br />

wenn der Entwickler die Grenzen einer<br />

Komponente verlässt und beispielsweise<br />

Service-übergreifend <strong>testen</strong> möchte.<br />

Auch hierbei lauern Fehler, die sich dank<br />

testgetriebener Entwicklung vermeiden<br />

lassen, falls die Tests auch diese Kommunikation<br />

einbeziehen. Man spricht<br />

dann von Systemtests. Im einfachsten<br />

Fall einer Applikation, die mit einer Datenbank<br />

spricht, lassen sich diese Tests<br />

häufig auch noch im Rahmen der Unit-<br />

Test-Werkzeuge abhandeln.<br />

Das Problem bei derartigen Tests: Sie<br />

laufen nur bei verfügbarer Datenbank.<br />

Dazu benötigen sie im Normalfall eine<br />

Konfiguration und sind insgesamt fragiler<br />

als der herkömmliche Unit-Test. Die<br />

Anzahl denkbarer Fehler, die zur Testzeit<br />

zur Unerreichbarkeit der Datenbank führen<br />

können, ist sehr hoch.<br />

Sobald es um Systemtests einer Architektur<br />

mit mehreren Komponenten geht,<br />

die zum Beispiel via REST miteinander<br />

reden, passt der Kontext eines Unit-Testorientierten<br />

Testwerkzeugs häufig nicht<br />

mehr. Sinnvoller ist es, ein anderes Werkzeug<br />

zu verwenden, das beispielsweise<br />

ganz speziell auf REST-Schnittstellen zugeschnitten<br />

ist.<br />

Oberflächentests<br />

In die Kategorie Systemtests fallen auch<br />

Oberflächentests. Für die verschiedenen<br />

Desktopumgebungen gibt es hier häufig<br />

spezialisierte Werkzeuge. Von zunehmendem<br />

Interesse sind aber natürlich<br />

DEUTSCHE PYTHON KONFERENZ<br />

EINE PROGRAMMIERSPRACHE VERÄNDERT DIE WELT<br />

Sechs Tage Python mit Vorträgen, Tutorials und Sprints – http://pycon.de<br />

PyCon DE<br />

29.10. – 3.11.12<br />

Leipzig


Titelthema<br />

www.linux-magazin.de TDD 08/2012<br />

36<br />

Abbildung 5: Das Werkzeug Behat formuliert verhaltensgetriebene Tests.<br />

die Tests von Weboberflächen. Hier ist<br />

die herausragende Referenz das Testen<br />

mit Selenium [16].<br />

Ähnlich breit angelegte Systemtests bestehen<br />

in fachlichen Tests, die der Kunde<br />

oder das Produktmanagement formulieren<br />

oder die die Entwicklungsabteilung<br />

zusammen mit dem Kunden aufstellt.<br />

Treiben solche Tests die Entwicklung an,<br />

spricht man von Behaviour Driven Development<br />

(BDD, verhaltensgetriebener<br />

Entwicklung, [17]).<br />

Wer? Was? Wozu?<br />

Der Kunde könnte beispielsweise formulieren,<br />

dass „die Nutzerin Lieselotte<br />

Müller den Knopf »Absenden« drücken<br />

möchte, damit ihre Nachricht an den<br />

Support verschickt wird“. Diese Formulierung<br />

nach dem Schema „Wer? – Was?<br />

– Wozu?“ lässt sich in BDD-Werkzeugen<br />

recht einfach in eine vorgegebene Form<br />

pressen:<br />

ausführbarer Test entsteht. Dieser schlägt<br />

anfänglich fehl und kann dann mit dem<br />

eigentlichen Code zum Funktionieren gebracht<br />

werden.<br />

Unit-Testing, Modultests, Systemtests,<br />

Oberflächentests und BDD – wo fängt<br />

der normale Entwickler an, wo hört er<br />

auf? Eine Einordnung ermöglicht die so<br />

genannte Testpyramide [19]: Die überwiegende<br />

Mehrzahl der Tests sollten<br />

Unit-Tests sein, mit zunehmender Zahl<br />

der in die Tests einbezogenen Komponenten<br />

sollte die Menge der Tests abnehmen.<br />

An der Spitze der Pyramide steht damit<br />

eine geringe Anzahl an Gesamtsystem-,<br />

Oberflächen- und Fachtests. Der Grund<br />

dafür ist die zunehmende Komplexität<br />

der Tests an der Spitze der Pyramide (Abbildung<br />

6). Solche Tests sind in der Regel<br />

fragiler, rechenintensiver und schwerer<br />

zu erstellen und zu warten.<br />

Kontra und Pro<br />

An dieser Stelle sei ein Aufseufzen gestattet.<br />

Es ergibt sich die schöne Gelegenheit,<br />

einen realen Satz aus einem Projekt zu<br />

zitieren – gesprochen von einem Entwickler<br />

mit hochrotem Kopf und halb<br />

erstickter Stimme: „Ich habe in zwei Wochen<br />

vier Zeilen realen Code geschrieben!<br />

Das ist doch völlig absurd!“ Wer den<br />

vollen Testaufwand betreibt, auf allen<br />

Ebenen testet und diese Tests mit jedem<br />

Code-Commit automatisiert durchlaufen<br />

lässt, der kommt nicht umhin, einen guten<br />

Teil der Arbeitszeit in die Tests zu<br />

investieren.<br />

Schon auf der Ebene der Unit-Tests ist<br />

in einer Pro-und-Kontra-Diskussion der<br />

Zeitbedarf ein naheliegendes Argument<br />

gegen die testgetriebene Entwicklung.<br />

Der Entwickler schreibt offensichtlich die<br />

doppelte Menge Code: den Test, dann die<br />

eigentliche Funktionalität. Je komplexer<br />

die getestete Funktionalität und das Testsetup,<br />

desto mehr Zeit kosten die Tests.<br />

Das Gegenargument der Testverfechter:<br />

given: a user Lieselotte Müller<br />

when: the user presses the button 'Send'<br />

then: the message is being sent to support<br />

Die Einführung in das in PHP geschriebene<br />

Werkzeug Behat [18] demonstriert<br />

diese Form der Testfalldefinition sehr<br />

schön (Abbildung 5). Nachdem der<br />

Kunde seine Erwartung formuliert hat,<br />

ist es am Entwickler, die natürliche Sprache<br />

mit Code zu hinterlegen, sodass ein<br />

Abbildung 6: Am Fußende der Testpyramide stehen viele Unit-Tests, in der Mitte die Dienste und an der<br />

Spitze wenige komplexe Tests wie die der Benutzeroberfläche (UI).


Tel. 0 64 32 / 91 39-749<br />

Fax 0 64 32 / 91 39-711<br />

vertrieb@ico.de<br />

www.ico.de/linux<br />

SEIT 1982<br />

Den Zeitaufwand für Tests wiegt die erhöhte<br />

Codequalität wieder auf. Testen reduziert<br />

Fehler und spart daher Zeit beim<br />

Ausbessern. Darüber hinaus resultiert<br />

testgetriebene Entwicklung in saubereren<br />

Codestrukturen, die sich besser warten<br />

und weiterentwickeln lassen.<br />

Ein weiterer Punkt, der das Testen erschwert:<br />

Es ist natürlich auch beim<br />

Schrei ben von Tests möglich, gravierende<br />

Fehler zu machen. Eine gut wartbare Testsite,<br />

die problemlos mit der Entwicklung<br />

der <strong>Software</strong> mitgeht und keinen hohen<br />

Wartungsaufwand einfordert, erfordert<br />

Erfahrung mit der Testentwicklung. Genauso<br />

wie sich eine <strong>Software</strong> strukturell<br />

vor die Wand fahren lässt, ist dies bei<br />

einer Testsuite möglich.<br />

Fazit<br />

Testgetriebene Entwicklung ist kein Allheilmittel,<br />

das plötzlich alle Komplexität<br />

aus der <strong>Software</strong>-Entwicklung eliminiert.<br />

Sie hilft aber dabei, überlegter an die<br />

Entwicklung heranzugehen, und liefert<br />

im Schnitt die bessere Codequalität.<br />

Jeder Entwickler, der sich noch nicht<br />

mit der Thematik beschäftigt hat, sollte<br />

dies nachholen. Vor allem in größeren<br />

Unternehmen gehört die testgetriebene<br />

Entwicklung zum erwarteten Standardrepertoire.<br />

Wer aber behauptet, nur testgetrieben<br />

entwickelter Code sei guter Code, der<br />

lehnt sich allerdings zu weit aus dem<br />

Fenster, besonders bei freier <strong>Software</strong>.<br />

Letztlich lebt ein gutes Projekt in erster<br />

Linie von den guten Ideen der Entwickler<br />

und der Begeisterung, mit der sie bei der<br />

Sache sind. Ein Großkonzern mag mit<br />

viel Geld eine neue <strong>Software</strong> in hoher<br />

Qualität konzipieren und testgetrieben<br />

entwickeln. Bei reinen Open-Source-Projekten<br />

dagegen schreibt ein Programmierer<br />

schon mal ein Feature rein aus Spaß<br />

und präsentiert es dann den Anwendern<br />

zum Ausprobieren.<br />

Dass die ersten Versionen von Google<br />

oder Facebook testgetrieben entwickelt<br />

wurden, darf man bezweifeln. Heute<br />

bieten beide Unternehmen aber Musterumgebungen<br />

dieses Entwicklungstyps.<br />

Neuentwicklungen werden an Millionen<br />

von Nutzern ausgeliefert, ohne dass zum<br />

Schluss ein Heer von Testern jedes Mal<br />

die Gesamtumfang der <strong>Software</strong> getestet<br />

hätte oder jedes neue Deployment die<br />

Produktivumgebung regelmäßig lahmlegt<br />

[20]. Das ist nur dank testgetriebener<br />

Entwicklung möglich. (mhu) n<br />

Infos<br />

[1] Beck, K., „Test-Driven Development by<br />

Example“: Addison-Wesley/​Vaseem, 2003<br />

[2] Gravatar, „Creating the Hash“: [http://​<br />

de. gravatar. com/ site/ implement/ hash/]<br />

[3] Gunnar Wrobel, „Erfolgreich getestet“:<br />

<strong>Linux</strong> <strong>Magazin</strong> 08/​11, S. 96<br />

[4] Junit: [http:// www. junit. org]<br />

[5] Übersicht zum Unit-Testing:<br />

[http:// en. wikipedia. org/ wiki/ List_of_<br />

unit_testing_frameworks]<br />

[6] Check: [http:// check. sourceforge. net]<br />

[7] Cppunit: [http:// cppunit. sourceforge. net]<br />

[8] Boost Test Library:<br />

[http:// www. boost. org/ doc/ libs/ 1_42_0/​<br />

libs/ test/ doc/ html/ index. html]<br />

[9] PHP Unit: [http:// www. phpunit. de]<br />

[10] Simple Test: [http:// simpletest. org]<br />

[11] Test::Unit in Ruby:<br />

[http:// ruby‐doc. org/ stdlib‐1. 9. 3/ libdoc/​<br />

test/ unit/ rdoc/ Test/ Unit. html]<br />

[12] Unit Testing in Python: [http:// docs.​<br />

python. org/ library/ unittest. html]<br />

[13] Doctest in Python: [http:// docs. python.​<br />

org/ library/ doctest. html]<br />

[14] Js-test-driver: [http:// code. google. com/​<br />

p/ js‐test‐driver/]<br />

[15] Nodeunit:<br />

[https:// github. com/ caolan/ nodeunit]<br />

[16] Selenium: [http:// seleniumhq. org]<br />

[17] BDD: [http:// de. wikipedia. org/ wiki/​<br />

Behavior_Driven_Development]<br />

[18] Behat:<br />

[http:// docs. behat. org/ quick_intro. html]<br />

[19] Testpyramide: [http:// martinfowler. com/​<br />

bliki/ TestPyramid. html]<br />

[20] Video zu Facebook-Engineering:<br />

[http:// www. facebook. com/ video/ video.​<br />

php? v=10100259101684977& oid=<br />

9445547199& comments]<br />

[21] Listings zum Artikel:<br />

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

listings/ magazin/ 2012/ 08/ tdd]<br />

Der Autor<br />

Gunnar Wrobel ist PHP-Entwickler<br />

und Teilhaber der<br />

Horde LLC, einem Unternehmen,<br />

das für PHP-Entwicklung<br />

im und um das Horde Project<br />

herum gegründet wurde.<br />

Innovative Computer • Zuckmayerstr. 15 • 65582 Diez<br />

Neueste Intel<br />

®<br />

Xeon<br />

® E5 Prozes-<br />

soren. Jetzt mit<br />

bis zu 8 Kernen/16<br />

Threads pro CPU<br />

und bis zu 80%<br />

mehr Leistung!<br />

XANTHOS 153 1HE SERVER<br />

INTEL ® XEON ® E5<br />

Alle Preise in Euro<br />

inkl. Mwst.<br />

GmbH<br />

Performanter 1HE Datenbankserver mit<br />

optional redundantem Netzteil.<br />

• 2x Intel ® Xeon ® E5-2403 1,8GHz 6,4GT 10MB 4C<br />

• 24 GB DDR3 FSB1600 RAM<br />

• 2x 1TB 24x7 SATA HDD<br />

• 300W Green Netzteil<br />

inkl. Mwst.<br />

exkl. Mwst.<br />

1938, 51 1629,-<br />

Art.Nr. bto-2961652<br />

XANTHOS R25C 2HE SERVER<br />

INTEL ® XEON ® E5<br />

Extrem leistungsstarke 2HE Serverlösung<br />

mit Intel Xeon Technologie und bis zu 6<br />

® ®<br />

Festplatten.<br />

• 2x Intel Xeon E5-2407 2,2GHz 6,4GT 10MB 4C<br />

® ®<br />

• 24 GB DDR3 FSB1600 Ram<br />

• 1x Adaptec 6405E 4 Port Raidcontroller<br />

• 4x 1TB 24x7 SATA HDD<br />

• DVD-Brenner<br />

• 500W Netzteil EPS 80+<br />

exkl. Mwst.<br />

2497, 81 2099,-<br />

Art.Nr. Bto-2961653<br />

XANTHOS R35C 3HE SERVER<br />

INTEL ® XEON ® E5<br />

Flexible, skalierbare Intel Xeon Lösung im<br />

® ®<br />

3HE Gehäuse mit bis zu 8 Festplatten.<br />

• 2x Intel Xeon E5-2407 2,2GHz 6,4GT 10MB 4C<br />

® ®<br />

• 24 GB DDR3 FSB1600 Ram<br />

• 1x Adaptec 6805 8 Port Raidcontroller<br />

mit Nand-BBU<br />

• 8x 1TB 24x7 SATA HDD<br />

• DVD-Brenner<br />

• 500W Netzteil EPS 80+<br />

inkl. Mwst.<br />

exkl. Mwst.<br />

3497, 41 2939,-<br />

Art.Nr. Bto-2961654<br />

Intel ® , Intel ® Logo, Intel ® Inside, Intel ® Inside Logo, Atom, Atom Inside,<br />

Xeon und Xeon Inside sind Marken der Intel Corporation in den USA und<br />

anderen Ländern.<br />

wir liefern auch<br />

nach Österreich<br />

u. in die Schweiz


Titelthema<br />

www.linux-magazin.de Webapplikationen 08/2012<br />

38<br />

Sieben Gebote, um Sicherheitslücken beim PHP-Programmieren zu erkennen<br />

Löcher für Schweine<br />

Ursächlich für die Kompromittierung eines Webservers sind entgegen landläufiger Meinung nicht fiese Angreifer,<br />

sondern jene, die die <strong>Software</strong> für das Gerät entwickeln und betreiben. Schlampig getesteter Code bohrt<br />

die Löcher, durch die Fremde einsteigen – folgende sieben Gebote helfen. Tobias Eggendorfer<br />

als günstig erwiesen. Wer die hat, erspart<br />

es sich, später das Rad neu zu erfinden.<br />

1. Nichts zweimal erfinden<br />

© sajola, photocase.com<br />

Angriffe auf Websysteme erfolgen heute<br />

kaum mehr durch Schwächen in Netzwerkprotokollen,<br />

sondern wegen der Fehler<br />

in Anwendungen. Viele der spektakulären<br />

Hacks der letzten Jahre, etwa der<br />

ins Sony-Playstation-Netzwerk, nutzten<br />

Programmierfehler in Webanwendungen<br />

aus. Die Löcher sind selten exotisch und<br />

lassen sich ganz wenigen Kategorien<br />

zuordnen, der Sony-Hack zum Beispiel<br />

gelang mit einer SQL-Injection. In loser<br />

Folge hatte das <strong>Linux</strong>-<strong>Magazin</strong> an produktiven<br />

Sites Angriffsvektoren und die<br />

ursächlichen Programmierfehler herausgearbeitet<br />

([1], [2]).<br />

Zwar stellen moderne Betriebssysteme<br />

aufwändige Schutzmaßnahmen gegen<br />

Schwachstellen bereit, etwa die Address<br />

Space Layout Randomization. Aber auch<br />

die hebeln versierte Angreifer mit ein<br />

paar Tricks aus. Bleibt allein übrig, die<br />

Webapplikationen selbst ohne Sicherheitslücken<br />

zu entwickeln. Programmfehler<br />

systematisch zu vermeiden ist darum<br />

hehres Ziel jedes ernst zu nehmenden<br />

<strong>Software</strong>-Qualitätsmanagements.<br />

Das beginnt lange vor der ersten Programmzeile:<br />

Schon in der Konzeptionsphase<br />

muss das Projekt überlegen,<br />

welche Sicherheitsprobleme auftreten<br />

können, welche Sicherheitsanforderung<br />

es einhalten will und unter welchen<br />

Bedingungen die <strong>Software</strong> zum Einsatz<br />

kommen wird. Spä<strong>testen</strong>s hier sollte das<br />

Projekt Codingstandards vereinbaren,<br />

damit bei Tests und Codereviews alle die<br />

gleiche Sprache sprechen.<br />

Ingenieure wissen, dass Qualität ein Ergebnis<br />

des Herstellungsprozesses ist und<br />

nicht nach dem Abschluss hineinprüfbar.<br />

Open BSD als Positivbeispiel gilt dank<br />

klarer Qualitätsstandards und Tests vielen<br />

als sicherstes Betriebssystem. Von<br />

Anfang an müssen alle an einem Projekt<br />

beteiligten Entwickler auf sicheren und<br />

fehlerfreien Code achten. Neben regelmäßiger<br />

Fortbildung hat sich eine Sammlung<br />

von fertigen Routinen für Standardfälle<br />

Neue Räder und neue <strong>Software</strong> laufen zu<br />

Beginn längst nicht so rund wie erprobte.<br />

Bei Sessionmanagement und Login-Prüfungen<br />

schreiben viele Entwick ler ihre<br />

eigenen Routinen und öffnen damit Session-Surfing<br />

oder SQL-Injections Tür und<br />

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

Zwei ganz einfache Maßnahme schützen<br />

vor solchen Neuerfindungen: Zum einen<br />

helfen Absprachen innerhalb des Projekts,<br />

wer welche Routinen aus welchen<br />

Bibliotheken übernimmt. Zum anderen<br />

hebt das gegenseitige Code-Auditieren<br />

zweier Entwickler die Qualität. Absprachen<br />

senken die Wahrscheinlichkeit für<br />

Doppelerfindungen, weil oft einer der Beteiligten<br />

eine Lösung für ein Standardproblem<br />

schon kennt.<br />

Gleichzeitig führen solche Absprachen<br />

zu einem zweiten qualitätssichernden<br />

Effekt: Wer seinen Code einem anderen<br />

erläutern muss, wird ihn besser dokumentieren<br />

und auch gründlicher durchdenken,<br />

um gut dazustehen. Außerdem<br />

lassen sich die Ergebnisse der gegenseitigen<br />

Code-Vorstellungen direkt für die<br />

Dokumentation verwenden – eine Sparte,<br />

die oft stiefmütterlich behandelt wird.<br />

2. Code-Review betreiben<br />

Solche Absprachen sind weit entfernt von<br />

systematischen Code-Reviews, bei denen<br />

ein zweiter Entwickler oder ein ganzes<br />

Team sich Zeile für Zeile durch das Programm<br />

eines Kollegen tastet. Dieses sehr<br />

zeitaufwändige Testverfahren bietet –<br />

ein gutes Team vorausgesetzt – eine sehr


Webapplikationen 08/2012<br />

Titelthema<br />

www.linux-magazin.de<br />

39<br />

Abbildung 1: Gute Tests hätten ans Licht gebracht, dass die Login-Maske des<br />

(Security-Lehr-)Shops Badstore.net SQL-Injections ermöglicht …<br />

Abbildung 2: … und so jeden sehen lässt, was Kunden zuvor bestellt haben. Die<br />

harmlose Trockenübung funktioniert bei erschreckend vielen echten Shops auch.<br />

hohe Erfolgsaussicht, Fehler zu finden.<br />

Open BSD betreibt diesen Aufwand.<br />

3. Datenflussanalyse prüft<br />

Eingabedaten<br />

Auf der Suche nach Sicherheitslöchern<br />

hilft eine Datenflussanalyse im Rahmen<br />

des Code-Review. Dabei gilt es, für jedes<br />

eingegebene Datum zu prüfen, ob und<br />

wie es Einfluss auf welche anderen Programmaktionen<br />

hat. Das ist für einfache<br />

Mailformulare simpel, bei Datenbankanwendungen<br />

aber sehr zeitintensiv.<br />

Aber nur so lassen sich mit etwas Erfahrung<br />

Cross Site Scripting, Code-Injections<br />

und vergleichbare Angriffsstellen schnell<br />

lokalisieren.<br />

Interessant bei solchen Datenfluss analysen<br />

sind immer Grenzwerte: Überschreitet<br />

etwa eine Integervariable den Wert<br />

»PHP_INT_MAX«, führt PHP einen automatischen<br />

Typecast nach Float durch. Das<br />

kann zu Überraschungen führen, wenn<br />

der Wert in ein Datenbankfeld vom Typ<br />

Integer wandert. Insbesondere bei Datenbanksystemen<br />

wie MySQL, die auch Datentypen<br />

wie »tinyint« kennen, geschehen<br />

Integer-Overflows schnell.<br />

Bei einer Datenflussanalyse behalten die<br />

Entwickler außerdem alle Berechnungen<br />

und Manipulationen von Eingabendaten<br />

im Programm in Bezug auf Grenzwerte<br />

im Auge und erkennen entsprechende<br />

Fehler daher frühzeitig.<br />

Mehr noch als Absprachen haben intensive<br />

Reviews und Datenflussanalysen den<br />

Effekt, dass die Entwickler nicht nur Fehler<br />

finden, sondern sich als Team sensibilisieren<br />

für kritische Programmierfehler<br />

und sich die Dokumentation verbessert.<br />

Die Lerneffekte führen mittelfristig zu höherer<br />

Codequalität und weniger Fehlern.<br />

4. Testsysteme richtig<br />

konfigurieren<br />

Im Zuge einer Datenflussanalyse fallen<br />

fehlende URL-Encodings oder doppeltes<br />

Escaping von SQL-Statements auf. Multiple<br />

Escapes können übrigens auch durch<br />

die kleine Unachtsamkeit entstehen, dass<br />

in der eigenen Testumgebung PHP mit<br />

deaktivierten Magic Quotes läuft und auf<br />

dem Produktivsystem mit aktivierten.<br />

Deshalb sollte man Produktiv- und Testsystem<br />

konsequent mit gleichen Versionen<br />

und Konfigurationsdateien betreiben.<br />

Ein Cronjob, der ein einfaches Diff über<br />

eine SSH-Verbindung laufen lässt, kann<br />

dies prüfen.<br />

5. An Debug- und<br />

Fehlermeldungen denken<br />

Ein gewisses Sicherheitsproblem bilden<br />

vergessene Debugmeldungen. Je detaillierter<br />

sie ausfallen, desto mehr nutzen<br />

sie dem Angreifer. So erfährt er zum Beispiel<br />

Datenbank- und Tabellennamen,<br />

auch der in [1] beschriebene Angriff lief<br />

über diese Schiene. Gegen vergessene<br />

Debugmeldungen hilft ein vereinbartes,<br />

vorangestelltes Schlüsselwort, das sich<br />

über Grep leicht finden lässt. Alternativ<br />

binden Entwickler auf ihrem Testsystem<br />

eine spezielle Debugausgabe-Funktion<br />

per Include ein, die auf dem Produktivsystem<br />

leer bleibt.<br />

Wie Debug- helfen Angreifern auch Fehlermeldungen,<br />

die nach außen dringen.<br />

Normale Benutzer verwirren technische<br />

Meldung außerdem, was die Usability<br />

beeinträchtigt. Besser sind detaillierte<br />

Logeinträge oder automatische Mails an<br />

den Admin. In eine gute Dokumentation,<br />

sie ist eine Voraussetzung für <strong>Software</strong>tests,<br />

gehört eine Liste möglicher<br />

Fehlermeldungen und unter welchen<br />

Bedingungen die Webapplikation sie erreicht.<br />

Damit kann ein Tester gezielt Fehler<br />

provozieren und so das Verhältnis von<br />

Nutzerfreundlichkeit und Sicherheitsrisiko<br />

einschätzen.<br />

6. Testfälle konstruieren<br />

Anhand der bisherig gewonnen Erkenntnisse<br />

lassen sich Testfälle beschreiben.<br />

Das sind Kombinationen aus definierten<br />

Ausgangssituationen und einem bestimmten<br />

vorhersagbaren Verhalten, das ein<br />

Programm daraufhin zeigen soll. So wäre<br />

ein Testcase für einen Taschenrechner<br />

»2+2« mit der erwarteten Ausgabe »4«.


Titelthema<br />

www.linux-magazin.de Webapplikationen 08/2012<br />

40<br />

Abbildung 3: Das in Listing 2 angegebene Testprogramm loggt sich auf Facebook ein, zählt die Links und<br />

stellt ein aktiviertes HTTPS fest.<br />

Die Addition ist für Tester ebenso naheliegend<br />

wie schnell ausgeführt, aber wer<br />

addiert (2 31 -1)+1 und prüft so, ob ein<br />

32-Bit-Signed-Integer überläuft?<br />

Ein organisierter Test beinhaltet also,<br />

die Grenzen des Systems zu bestimmen<br />

und zu prüfen. Dabei ist es in der Regel<br />

nicht zielführend, wenn jene Entwickler<br />

die Testfälle definieren, die auch die Anwendung<br />

geschrieben haben – ihre große<br />

Nähe zum Code macht es wahrscheinlich,<br />

dass sie betriebsblind sind und ihre<br />

eigenen Fehler übersehen.<br />

Tests sind umfangreich, für jede Funktion<br />

selbst, für jedes Modul und für das fertige<br />

System gibt es Testfälle. Sie sollten bewusst<br />

auch Grenzsituationen abdecken.<br />

Ebenso sollten Entwickler Tests für jeden<br />

bekannten Bug integrieren. Hat also der<br />

Taschenrechner früher irgendwann wegen<br />

eines Programmierfehlers die Punktvor-Strich-Regel<br />

missachtet, so sollte<br />

dieser Bug in einen Testcase münden.<br />

Das gilt erst recht für sicherheitsrelevante<br />

Programmierfehler.<br />

Als Maß für die Güte der Tests gilt der<br />

Anteil des berücksichtigen Codes. Eine<br />

100-Prozent-Überdeckung ist wünschenswert,<br />

aber nicht immer möglich. In ereignisgesteuerten<br />

Programmen oder bei<br />

Exception-Handlern für schwer provozierbare<br />

Fehler, bleibt mancher Zweig<br />

praktisch unerreichbar.<br />

7. Testprogramme benutzen<br />

Das alles zeigt: Neben manuellen werden<br />

automatisierte Tests unumgänglich.<br />

Je nach System lassen sich diese unterschiedlich<br />

realisieren. So reicht für eine<br />

einzelne Funktion oft ein selbst geschriebenes<br />

Testprogramm, das eine Menge<br />

von Eingabewerten und zugeordneten<br />

Ausgabewerten kennt und mit den realen<br />

Ergebnissen vergleicht.<br />

Sobald das zu <strong>testen</strong>dene Programm ein<br />

bisschen umfangreicher wird, lohnen eigene<br />

Testprogramme nicht mehr. Für PHP<br />

gibt es zum Glück viele Testsysteme, zum<br />

Beispiel PHP Unit [3], Simple Test [4]<br />

oder Testplan [5]. (Siehe auch Artikel<br />

über testgetriebene Entwicklung.)<br />

PHP Unit und Simple Test dienen beide<br />

dazu, die einzelnen Funktionen und Instruktionen<br />

des Programms zu überprüfen,<br />

beispielsweise ob Variablenwerte gültig<br />

sind oder Funktionen oder Funktionsblöcke<br />

korrekte Werte zurückliefern. Daher<br />

sind beide Umgebungen nur für PHP geeignet.<br />

Das Handbuch [6] zu PHP Unit<br />

bietet eine sehr gute Einführung in das<br />

automatisierte Testen – Wissen, das problemlos<br />

auf Simple Test übertragbar ist,<br />

dessen Dokumentation deutlich magerer<br />

ist. Funktional und konzeptionell sind<br />

beide vergleichbar.<br />

Testplan dagegen prüft, ob das Programm<br />

auf vorgegebene Nutzereingaben erwartete<br />

Werte zurückgibt; es testet also die<br />

Testplan in der Praxis<br />

Die Installation von Testplan ist relativ simpel<br />

und auf der Homepage [5] gut erklärt.<br />

Nur fehlt der Hinweis, die Umgebungsvariable<br />

»TESTPLAN_HOME« korrekt zu setzen, im Beispiel<br />

zu diesem Artikel mit:<br />

export TESTPLAN_HOME=~/testplan‐1‐0‐r6/<br />

Auf dem Fedora-Testrechner des Autors war es<br />

nicht notwendig, »JAVA_HOME« zu setzen.<br />

Der erste, einfache Test in Listing 1 prüft die<br />

Zahl der Links auf der Homepage des Autors und<br />

demonstriert dabei gleich mehrere Elemente<br />

von Testplans Skriptsprache: Sie beherrscht<br />

Schleifen, kann zählen, Dinge aus der Ausgabe<br />

extrahieren und selbst Ausgaben erzeugen. So<br />

selektiert Zeile 5 die Links aus der Antwort<br />

(»%Response%«) über den Parameter »a«,<br />

das entspricht dem HTML-Tag für einen Link. Der<br />

»href«-Parameter in Zeile 6 zeigt auf die URL,<br />

die Zeile 7 ausgibt.<br />

Das Listing 2 enthält den einfachen Zähltest aus<br />

Listing 1, arbeitet aber komplexer: Hier meldet<br />

sich Testplan für den Autor bei Facebook an<br />

und überprüft, ob HTTPS für Facebook aktiviert<br />

ist. Das geschieht zweistufig: Zunächst stellt<br />

die Funktion »Check« sicher, dass auch der gewünschte<br />

Text auf der Seite steht. Im Erfolgsfall<br />

läuft das Testskript weiter. Es liest dann die<br />

Meldung aus, entfernt das HTML daraus und<br />

prüft mit einer Regular Expression, ob dort<br />

»aktiviert« steht.<br />

Wenn ja, meldet das Skript diesen Test wie in<br />

Abbildung 3 als bestanden (»Pass«). Andernfalls<br />

versucht der Test, HTTPS selbsttätig nachzuaktivieren<br />

(Abbildung 4). Dazu ist ein kleiner<br />

Kunstgriff nötig, denn Facebook verpasst den<br />

Formularen bei jedem Zugriff eine neue, scheinbar<br />

zufällige ID. Dem Xpath-Ausdruck in Zeile<br />

30 gelingt es, die ID zu lesen. Das Ergebnis<br />

wandert in die lokale Variable »%id%«. Ebenso<br />

wie der Inhalt eines verdeckten Eingabefelds in<br />

Zeile 31. Mit diesen gewonnenen Werten lässt<br />

sich das gewünschte Formular auf der Seite<br />

adressieren (Zeile 33) und korrekt ausgefüllt<br />

an Facebook posten.<br />

HTTPS oder nicht HTTPS – das ist die Frage<br />

Wer nun noch automatisch <strong>testen</strong> möchte, ob<br />

Facebook HTTPS auch wirklich eingeschaltet<br />

hat – was notwendig ist, wenn der Test anschließend<br />

weiterlaufen soll –, muss noch einen<br />

kleinen Test schreiben, ob Facebook den Nutzer<br />

wieder ausgeloggt hat. Abhängig von dessen<br />

Ausgang muss sich das Skript gegebenenfalls<br />

erneut einloggen und nochmals prüfen. Praktischeweise<br />

bietet die Testplan-Sprache die<br />

Möglichkeit, externe Testmodule aufzurufen.<br />

Es reicht also, einmal den HTTPS-Test zu implementieren<br />

– das eigene Testskript ruft das<br />

Modul dann an mehreren Stellen auf. Das erleichtert<br />

die Pflege des Tests.<br />

Grundsätzlich zeigt sich die Testplan-eigene<br />

Sprache mächtig und als leicht zu erlernen, ist<br />

aber schlecht dokumentiert. Das macht anfangs<br />

einiges an Experimentieren nötig, bis ein Test<br />

wunschgemäß abläuft.<br />

Wiederholung – Täter?<br />

Häufige Versuche in Form von Listing 2 nimmt<br />

Facebook übrigens übel und verhängt beim<br />

Log in einen Captcha – auch die Gegenseite testet<br />

also. Testplan einzusetzen lohnt sich wegen<br />

seiner Flexibilität übrigens nicht nur für eigene<br />

Webanwendungen, sondern auch für kleine (natürlich<br />

legale) Angriffe.


Auftritt oder den Webshop übernommen<br />

haben, fragt niemand mehr nach Zeit<br />

und Budgets. Selbst wer im Vorfeld den<br />

Verlust an Umsatz und Reputation nicht<br />

einrechnen will, sollte bedenken, dass,<br />

sobald geeignete Testprozesse etabliert<br />

sind, mittelfristig der Mehraufwand überschaubar<br />

bleibt. Und wer systematisch<br />

testet, prüft die Qualität seiner Arbeit.<br />

Das Mehr an Erkenntnis vermeidet künftig<br />

gleichartige Fehler und die Qualität<br />

späterer Arbeitsergebnisse steigt. (jk) n<br />

Webapplikationen 08/2012<br />

Titelthema<br />

www.linux-magazin.de<br />

41<br />

Abbildung 4: Dieser Lauf ergibt, dass HTTPS nicht eingeschaltet ist. Das Programm versucht daraufhin, das<br />

Protokoll selbst anzuschalten.<br />

Reaktion auf bestimmte Eingaben. Dazu<br />

verfügt es über eine eigene Skriptsprache,<br />

die dafür optimiert ist, Grundinteraktionen<br />

auf Webseiten zu tätigen, etwa Daten<br />

in Formulare eintragen oder Links anklicken.<br />

Die Ausgabe kann der Programmierer<br />

dann nach Schlagwörtern oder<br />

Zeichenfolgen durchsucht lassen. Damit<br />

kann er leicht prüfen, ob die Anwendung<br />

Der Autor<br />

Tobias Eggendorfer ist Professor für IT-Forensik<br />

in Hamburg. Aus seiner Arbeit mit kompromittierten<br />

Systemen kennt er die Folgen schlechter Programmierung<br />

nur zu gut. Für Qualität kämpft er<br />

zurzeit noch an ganz anderer Stelle: Mit seinem<br />

Blog [http:// www. meilenschwund. de] will er die<br />

Lufthansa daran erinnern, dass auch Kundenbindung<br />

Qualität braucht.<br />

aus Nutzersicht funktioniert. Wer die Eingabewerten<br />

geschickt wählt, kann auch<br />

kritische Fälle abfangen (siehe Kasten<br />

„Testplan in der Praxis“).<br />

Allen Verfahren ist gemein, dass der<br />

Entwickler sich darüber klar sein muss,<br />

unter welchen Rahmenbedingungen das<br />

Programm korrekt abläuft, wo die Grenzen<br />

liegen und welche Eingaben es nicht<br />

toleriert. Dieses Wissen wandert in die<br />

Tests – und wird dadurch explizit. Das<br />

reduziert die Fehlerwahrscheinlichkeit.<br />

Lohnt das alles?<br />

Webapplikationen systematisch zu <strong>testen</strong><br />

ist leider (noch?) zu wenig verbreitet.<br />

Kosten- und Zeitdruck seien die Gründe,<br />

so ist oft zu hören. Das ist seltsam, denn<br />

sobald Angreifer den eigene Online-<br />

Infos<br />

[1] Tobias Eggendorfer, „SQL-Injection legt<br />

Newsletter lahm“: <strong>Linux</strong>-<strong>Magazin</strong> 02/​11,<br />

S. 108<br />

[2] Tobias Eggendorfer, diverse Artikel über<br />

Schwachstellen in Webapplikationen:<br />

<strong>Linux</strong>-<strong>Magazin</strong> 12/​08, S. 78; 01/​09, S. 100;<br />

12/​10, S. 100; 01/​12, S. 48<br />

[3] PHP Unit: [http:// www. phpunit. de]<br />

[4] Simple Test: [http:// simpletest. org]<br />

[5] Testplan: [http:// testplan. brainbrain. net]<br />

[6] PHP-Unit-Handbuch: [http:// www. phpunit.​<br />

de/ manual/ 3. 7/ en/ index. html]<br />

Listing 1: Links zählen<br />

01 default %Cmds.Site% http://www.eggendorfer.info/<br />

02 GotoURL %Cmds.Site%<br />

03 <br />

04 set %Count% 1<br />

05 foreach %Link% in %Response://a%<br />

06 set %URL% as selectIn %Link% @href<br />

07 Notice %Count% Link: %Link% %URL%<br />

08 set %Count% as binOp %Count% + 1<br />

09 end<br />

Listing 2: Facebook <strong>testen</strong><br />

01 default %Cmds.Site% https://www.facebook.com<br />

02 GotoURL %Cmds.Site%<br />

03 <br />

04 SubmitForm with<br />

05 %Form% id:login_form<br />

06 %Params:email% someone@somewhere.com<br />

07 %Params:pass% somesecurepassword<br />

08 %Submit% key:enter<br />

09 end<br />

10 <br />

11 set %Count% 1<br />

12 foreach %Link% in %Response://a%<br />

13 set %URL% as selectIn %Link% @href<br />

14 set %Count% as binOp %Count% + 1<br />

15 end<br />

16 <br />

17 Notice %Count% Links auf Facebook Startseite.<br />

18 GotoURL https://www.facebook.com/<br />

settings?tab=security<br />

19 <br />

20 Notice Pruefe ob HTTPS aktiviert.<br />

21 Check //span[contains(text(),'Das sichere<br />

Durchstöbern ist derzeit')]<br />

22 set %alles% %Response://span[contains(text(),<br />

'Das sichere Durchstöbern ist derzeit')]%<br />

23 if strMatches %alles% ^(Das sichere<br />

Durchstöbern ist derzeit).* (aktiviert)\.$<br />

24 Pass HTTPS aktiviert<br />

25 else<br />

26 Notice HTTPS deaktiviert<br />

27 Notice Versuche HTTPS zu aktivieren.<br />

28 Notice Anschliessend Test neu starten.<br />

29 GotoURL https://www.facebook.com/settings?<br />

tab=security&section=browsing&view<br />

30 set %id% %Response://form[@action=<br />

'/ajax/settings/security/browsing.php']/@id%<br />

31 set %fb_dtsg% %Response://form[@action=<br />

'/ajax/settings/security/browsing.php']<br />

/input[@name='fb_dtsg']/@value%<br />

32 SubmitForm with<br />

33 %Form% id:%id%<br />

34 %Params:secure_browsing% 1<br />

35 %Params:fb_dtsg% %fb_dtsg%<br />

36 %Submit% value:Änderungen speichern<br />

37 end<br />

38 Notice HTTPS neu <strong>testen</strong><br />

39 Fail HTTPS<br />

40 end


Titelthema<br />

www.linux-magazin.de Rollout Testing 08/2012<br />

42<br />

<strong>Software</strong> vor dem Rollout <strong>testen</strong>: Was Profis empfehlen<br />

Endlose Stufen<br />

Sicherheitslücken, Bugs und technischer Fortschritt bringen Distributionen jeden Tag in Bewegung. Admins,<br />

die fürs Deployment der Pakete die Verantwortung tragen, bleibt nichts als <strong>testen</strong>, <strong>testen</strong>, <strong>testen</strong> ... Markus Feilner<br />

© Igor Negovelov, 123RF.com<br />

Wer die Qualität neuer <strong>Software</strong> bereits<br />

vor dem Einspielen (dem Rollout) auf<br />

Servern oder Clients <strong>testen</strong> muss (Quality<br />

Assurance, QA), sieht sich schnell einer<br />

recht komplexen Materie gegenüber. Experten<br />

empfehlen, die <strong>Software</strong> in mehreren<br />

Stufen (Stages) zu prüfen und sicherzustellen,<br />

dass jederzeit ein Zurück<br />

(Backout) zum Stand vor der Migration<br />

möglich ist.<br />

Stages, Backout, Rollout, Rollback und<br />

Qua lity Assurance: Das <strong>Linux</strong>-<strong>Magazin</strong><br />

hat fünf Experten gebeten, ihre <strong>Software</strong>-<br />

Teststrategien zu offenbaren. Zwei Dienstleister<br />

(B1 Systems und die LIS AG, zwei<br />

Distributoren (Univention und Red Hat)<br />

sowie der Test-Analyst des Münchner Limux-Projekts<br />

(Kasten „Limux im Test“)<br />

standen Rede und Antwort.<br />

Große Einigkeit herrscht in einem Punkt:<br />

Essenziell ist es, neben der Produktionsumgebung<br />

eine Test- und Integrationsumgebung<br />

vorzuhalten. Dort lässt sich nicht<br />

nur feststellen, ob eine <strong>Software</strong>kombination<br />

auch nach dem Update einer Komponente<br />

läuft, sondern auch überprüfen, ob<br />

der neue Release-Stand alle Workflows<br />

der Firma weiterhin erlaubt.<br />

Ralf Lang von B1 Systems (Abbildung 1)<br />

kann ein Lied davon singen: „Immer wieder<br />

entfernen Entwickler bei Versionsupdates<br />

Features oder verändern Plugin-Schnittstellen,<br />

die dann nicht mehr<br />

kompatibel sind. Viele Testszenarien lassen<br />

sich zwar mit Ant-Skripten [1] oder<br />

mit Jenkins [2] automatisieren. Aber der<br />

Rollout selbst erfordert detaillierte Vorausplanung,<br />

zu der auch das Abschätzen des<br />

nötigen Zeitfensters und das Entwickeln<br />

eines Rollback- oder Backout-Szenarios<br />

gehört, falls etwas schiefläuft.“<br />

Wartungsfenster, Rollback<br />

und Stages<br />

Gelegentlich lösen Updates auch bisher<br />

völlig unbekannte Fehler aus. „Deshalb<br />

muss die IT-Abteilung das Wartungsfenster<br />

ausreichend groß planen, damit sie an<br />

seinem Ende ein funktionierendes System<br />

– alt oder neu – garantieren kann. In größeren<br />

Umgebungen bietet es sich an, mit<br />

Pilotsystemen oder -anwendern die neue<br />

<strong>Software</strong> zu <strong>testen</strong>.“<br />

In ähnlicher Richtung argumentiert Supportleiter<br />

Jürgen Schulz von der LIS AG:<br />

Stets „einen Schritt voraus“ ist für ihn<br />

ein Unternehmen, das auf den Rechnern<br />

seiner Admins die neueste <strong>Software</strong>generation<br />

verwendet, bevor es diese in die<br />

Produktivumgebung loslässt, sowohl auf<br />

dem Desktop als auch bei Serverprogrammen.<br />

„In unserem Staging erhalten die<br />

Arbeitsplätze der Mitarbeiter nicht immer<br />

automatisch alle Updates, so haben die<br />

Admins die Möglichkeit, frühzeitig Fehler<br />

und Probleme zu identifizieren und zu<br />

beheben“, erklärt Schulz.<br />

Dabei ist jedoch viel organisatorische<br />

Vorarbeit zu leisten: „Die Operationen<br />

Guides und Workflows müssen klar definiert,<br />

schriftlich festgehalten und regelmäßig<br />

auf ihre Gültigkeit geprüft werden.<br />

Nur so lässt sich sicherstellen, dass die<br />

Herangehensweisen immer gleich sind.<br />

Das Vereinheitlichen der Systeme und der<br />

Infrastruktur muss das Ziel sein.“<br />

Abbildung 1: Ralf Lang ist <strong>Linux</strong> Consultant und<br />

Developer bei B1 Systems.


Einig sind sich die Spezialisten auch darin,<br />

dass Admins in Firmen immer danach<br />

trachten, die „Komplexität gering zu<br />

halten und standardisierte Verfahren und<br />

APIs zu verwenden. Nicht zaubern oder<br />

tricksen, das kann bei Updates ein böses<br />

Erwachen geben, wenn die <strong>Software</strong> in<br />

einem Update die Arbeitsweise ändert.<br />

Dann beginnt alles von vorn.“<br />

Das von Schulz beschriebene Staging-<br />

Konzept hat zwei, idealerweise sogar drei<br />

Stufen: „Stage 0 ist ,Leading Edge’, also<br />

die neueste <strong>Software</strong>version. Auf Stage 1<br />

arbeiten die Tester mit einem von Stufe<br />

0 abgeleiteten, bereits eingefrorenen Zustand.<br />

Stufe 2 sind die Produktivsysteme,<br />

die erst die <strong>Software</strong> bekommen, wenn<br />

die Tester grünes Licht geben. Dann wird<br />

Stage 1 zu 2 und Stage 0 zu 1 – und das<br />

Testing beginnt von vorn, im Idealfall als<br />

kontinuierlicher Prozess.“<br />

Red Hat bietet Produkte<br />

Auch Red Hat schwört auf ein gut geplantes<br />

Staging, sieht das Ganze aber<br />

auch stark in Organisationsstrukturen<br />

eingebettet (Abbildung 2): „Neben dem<br />

Einteilen der Abschnitte des jeweiligen<br />

<strong>Software</strong>lebenszyklus-Schritts (Stage) in<br />

Entwicklung (Dev), Qualitätssicherung<br />

(QA) und Produktion (Prod) ist es wichtig,<br />

Übergänge und Rollen zu definieren.<br />

Release and Deployment Management,<br />

Change Management und Service Validation<br />

and Testing sind die Schlagworte,<br />

mit denen sich IT-Leiter auseinandersetzen<br />

müssen“, erklärt Dirk Hermann (Abbildung<br />

3, Senior Solution Architect bei<br />

Red Hat). „Funktionalitäts-, Integrations-,<br />

Last-, Sicherheits- sowie Endanwender-<br />

Akzeptanz-Tests müssen die vier Szenarien<br />

(Install, Upgrade, Downgrade, Remove)<br />

sowie den stets mit zu <strong>testen</strong>den<br />

Backoutplan berücksichtigen.“<br />

Der Nachteil an all diesen Vorgaben ist<br />

offensichtlich: Admins und Tester müssen<br />

die Arbeitsweise ihrer User sehr genau<br />

kennen, weil sonst für die Kollegen<br />

elementare Funktionen eventuell unter<br />

den Tisch fallen. Jürgen Schulz: „Sehr<br />

wichtig ist es, Testszenarien zu entwickeln,<br />

in denen wichtige Abläufe und<br />

Keyfunktionen des Unternehmens vorkommen.<br />

Auf einer Testinstanz validiert<br />

ein Admin, ob das jeweilige Kriterium<br />

auch mit der neuen <strong>Software</strong> funktioniert.<br />

Dazu braucht es aber klare Vorgaben<br />

und exakte Definitionen.“<br />

Hinzu kommt, dass eine Enterprise-Distribution<br />

wie RHEL oder SLES zwar zertifizierte<br />

Middleware anbietet, manche<br />

<strong>Software</strong> aber zusätzliche Komponenten<br />

für den Betrieb braucht. „Da ist die IT-<br />

Abteilung selbst gefragt, Paketieren ist<br />

angesagt“, berichtet Ralf Lang. Für ihn ist<br />

ein typisches Beispiel „die Kombination<br />

aus PHP und Memcache: Die Distribution<br />

bietet PHP und Memcache, aber die PHP-<br />

Memcache-Erweiterung selbst muss ein<br />

Dienstleister wie wir pflegen. Hilfreich<br />

für uns ist ein eigener, interner Buildservice<br />

wie Suses OBS [3], der Pakete für<br />

verschiedene Distributionen und Architekturen<br />

baut.“<br />

Binär-Kompatibilität<br />

Über die erwähnten Garantien der Konkurrenz<br />

hinaus hat Red Hat eine weitere<br />

wichtige Zusage im Angebot: „Unsere<br />

KABI/​API-Garantie [4] verspricht hierbei<br />

die Stabilität der Schnittstelle zwischen<br />

dem Betriebssystem und dem darüberliegenden<br />

Binary oder Programming-Interface.<br />

Dies beinhaltet die Stabilität über<br />

Minor Releases hinweg sowie Stabilität<br />

und Unabhängigkeit von der darunterliegenden<br />

Hardware- oder Virtualisierungsplattform,<br />

also Bare Metal, VMware,<br />

Red Hat Enterprise Virtualization oder<br />

Microsoft Hyper-V.“ Offensichtlich versuchen<br />

die roten Hüte hier, einen der größten<br />

Vorteile von Microsoft aufzugreifen:<br />

Auf den Redmonder Systemen bekommt<br />

der findige Anwender auch heute noch<br />

uralte Dos-Programme zum Laufen, während<br />

bei <strong>Linux</strong> die Abwärtskompatibilität<br />

in vielen Fällen hinterherhinkt.<br />

Moritz Mühlenhoff, Debian-Entwickler<br />

und beim Bremer Distributor Univention<br />

für die Security-Maintenance des Univen-<br />

Rollout Testing 08/2012<br />

Titelthema<br />

www.linux-magazin.de<br />

43<br />

Middleware-SOE<br />

Infrastruktur-SOE<br />

Custom-<strong>Software</strong><br />

Open-Source-<br />

Repository<br />

Design<br />

Develop<br />

Release<br />

definieren<br />

Release<br />

erstellen<br />

JEE-<br />

Anwendungen<br />

SDE<br />

JBoss Middleware<br />

(Red Hat)<br />

Open-Source-<br />

Repository<br />

Release<br />

Test<br />

<strong>Software</strong> von<br />

Drittanbietern<br />

Download-<br />

Portal<br />

<strong>Software</strong>-<br />

Repository<br />

Build-Host<br />

Backout<br />

<strong>testen</strong><br />

Release<br />

<strong>testen</strong><br />

Middleware<br />

Stack (JBoss)<br />

<strong>Software</strong> von<br />

Red Hat<br />

Red Hat<br />

Network<br />

Release<br />

deployen<br />

Reporting<br />

Betriebssystem<br />

Extern Stage „Development" Stage „QA" Stage „Production"<br />

Abbildung 2: Reichlich komplex wirkt Red Hats Vorstellung einer Test-Infrastruktur für große Enterprise-Kunden im Standard Operating Environment (SOE).


Titelthema<br />

www.linux-magazin.de Rollout Testing 08/2012<br />

44<br />

tion Corporate Server zuständig, spricht<br />

sich für standardisierte Verfahren aus –<br />

und die Kombination mit der privaten<br />

Cloud. Schon die Testumgebung lasse<br />

sich ja ideal in einer Virtualisierung betreiben.<br />

„Dabei muss nicht die komplette<br />

Firmen-IT reproduziert werden, das lässt<br />

sich auch auf relevante und unerlässliche<br />

Dienste beschränken, zum Beispiel das<br />

LDAP-Verzeichnis.“<br />

Univention: Ucs-Test<br />

Univention verwendet ein selbst geschriebenes<br />

Framework namens Ucs-Test, das<br />

über Jenkins regelmäßig die Codebasis<br />

der Distribution überprüft. Die aus<br />

Debian importierten Pakete <strong>testen</strong> die<br />

Bremer darüber hinaus mit Tools wie<br />

Lintian [5] oder Piuparts [6]. „Für die<br />

Fachanwendungen vor Ort empfiehlt sich<br />

die enge Zusammenarbeit von Kunden,<br />

Dienstleiter und Anwender, bei kritischen<br />

Systemen eine Testfreigabe nach<br />

dem Vier-Augen-Prinzip“, erklärt Mühlenhoff.<br />

Und er nennt noch einen menschlichen<br />

Aspekt, den OSI-Layer 8 sozusagen. Wer<br />

Desktopumgebungen auf neue Releasestände<br />

bringt, stolpert oft über Veränderungen<br />

in Usability oder Funktionsweise<br />

der GUIs, die für Benutzer in mehrerer<br />

Limux im Test<br />

Im Limux-Projekt der öffentlichen Verwaltung<br />

der Stadt München stellt ein mehrstufiges<br />

Testkonzept die Funktionsfähigkeit der<br />

Komponenten mit spezifischen Anpassungen<br />

sicher, berichtet der dafür in der bayrischen<br />

Landeshauptstadt München verantwortliche<br />

Stefan Koehler: „Eine separate Testumgebung<br />

und ‐mannschaft, führt unter Produktivbedingungen<br />

Tests durch und stellt so vor dem<br />

Rollout einer jeden Major-Release die korrekte<br />

Funktion des Limux-Basisclients sicher. Danach<br />

kommen innerhalb der einzelnen Referate die<br />

Systemintegrationstests an die Reihe, wo den<br />

vielfältigen Fachanwendungen auf den Zahn<br />

gefühlt wird.“ Weil dafür im Referat lokale Infrastruktur<br />

nötig ist, muss das in München im<br />

Produktivsystem geschehen.<br />

Die Strategie des Limux-Qualitätsmanagements<br />

in der Landeshauptstadt hängt stark<br />

von der Umgebung und den jeweiligen Anforderungen<br />

ab. Im Projekt hat sich ein mehrstufiger<br />

Testablauf über die Stufen Entwicklung,<br />

Systemintegrationstest, Integrationstest in<br />

den Referaten oder Fachabteilungen bis zum<br />

Abbildung 3: Dirk Herrmann, Senior Solution<br />

Archi tect mit Schwerpunkt System Management,<br />

Prozessintegration und Cloud bei Red Hat.<br />

Hinsicht erklärungsbedürftig sind. „Hier<br />

helfen Pilotgruppen zu entscheiden, in<br />

welchem Umfang zusätzliche Dokumentation,<br />

Schulungen oder andere Unterstützungsmaßnahmen<br />

notwendig sind.<br />

Oft bedarf es auch individueller Erweiterungen,<br />

die wir über die Univention<br />

Management Console (UMC) in die Benutzerverwaltung<br />

integrieren.“<br />

Ganz anders ist die Situation bei Firmen<br />

mit eigener <strong>Software</strong>-Enwicklung, die<br />

unter Red-Hat-Kunden häufiger zu finden<br />

sind: „Für diese Umgebungen deckt<br />

Continous Integration neben der automatisiert<br />

erzeugten Releases auch einen<br />

umfangreichen und wertvollen Teil des<br />

Qualitätsmanagements ab“, meint Dirk<br />

User-Acceptance-Test bewährt. „Vor dem Rollout<br />

des <strong>Linux</strong>-Basisclients ist in jedem Referat<br />

der Administratoren Handarbeit gefragt, da<br />

immer wieder referatspezifische Anpassungen<br />

erforderlich sind. Die Aktualisierung von<br />

Serverkomponenten ist zwar kritischer, was<br />

die Auswirkungen angeht, in der Sache aber<br />

weitaus weniger komplex.<br />

Das Limux-Projekt setzt überall, wo es irgendwie<br />

möglich ist, Standardkomponenten ein: Open Office,<br />

Ubuntu, Firefox und Thunderbird. Diese Produkte<br />

<strong>testen</strong> wir nicht mehr umfassend, sondern<br />

nur die bisweilen umfangreichen Anpassungen<br />

und Bugfixes. Für uns ist also die Qualität der<br />

Arbeit des Distributors oder der Community sehr<br />

wichtig. Lösungen für Fehler, die wir finden, geben<br />

wir upstream weiter.<br />

Sehr wichtig ist uns auch das Patchmanagement,<br />

das es erlaubt, innerhalb eines Releasezyklus<br />

kleinere Bugfixes auszuliefern. Limux<br />

bietet seinen Admins in den Referaten einen<br />

Mechanismus an, mit dem sie Patches und Fixes<br />

auswählen und diese auch vorab auf Testund<br />

Produktivrechnern installieren können.“<br />

Hermann. „In der Java-<strong>Software</strong>-Entwicklung<br />

haben sich Maven, Ant, Jenkins<br />

und Nexus etabliert, erweitert um<br />

Tools wie Sonar oder das Framework for<br />

Integrated Test (FIT).<br />

Viele der unter [7] gelisteten Werkzeuge<br />

lassen sich auch für <strong>Software</strong>-Entwicklung<br />

jenseits von Java nutzen. Wichtig<br />

ist, dass der Output der CI-Toolchain<br />

gleichzeitig den Input für ein zentrales<br />

<strong>Software</strong> Repository bildet, eine Definitive<br />

<strong>Software</strong> Library. Einen parallelen<br />

Stream für selbst erstellte <strong>Software</strong> sollten<br />

Admins in jedem Fall vermeiden“,<br />

empfiehlt Herrmann.<br />

Viele Stolpersteine<br />

Rollout Testing sinnvoll zu implementieren<br />

erfordert offenbar Weitsicht und<br />

Planung. Wer da nicht von vornherein<br />

sowohl die IT-Abteilung als auch die<br />

organisatorische Seite einbezieht, kann<br />

sich bei Updates auf Probleme gefasst<br />

machen. Auf Servern und mit virtuellen<br />

Desktop-Infrastrukturen lassen sich<br />

viele Testabläufe automatisieren, und der<br />

Trend, mehr und mehr Anwendungen ins<br />

Web zu bringen, macht in Zukunft für<br />

den Admin sicher vieles einfacher. Trotzdem<br />

muss er dafür sorgen, dass seine<br />

IT-Abteilung fortwährend den Stand kommender<br />

<strong>Software</strong>versionen testet. Sonst<br />

riskiert er, dass eines Tages die gesamte<br />

Produktion steht, nur weil er eine Zeile<br />

im Changelog übersehen hat. n<br />

Infos<br />

[1] Ant: [http:// ant. apache. org]<br />

[2] Jenkins: [http:// maven. apache. org]<br />

[3] Suse Open Build Service: [http:// de.​<br />

opensuse. org/ Portal:Build_Service]<br />

[4] : Red Hat KABI/​API Kompatibilitätsgarantie:<br />

[http:// www. redhat. com/ f/ pdf/ rhel/ RHEL6_<br />

App_Compatibility_WP. pdf]<br />

[5] Lintian: [http:// lintian. debian. org]<br />

[6] Piuparts: [http:// piuparts. debian. org]<br />

[7] Open-Source-Testtools: [http:// www.​<br />

opensourcetesting. org/ functional. php]<br />

<strong>Linux</strong> <strong>Magazin</strong> Online PLUS<br />

Auf <strong>Linux</strong>-<strong>Magazin</strong> Online Plus finden<br />

Sie einen Artikel über Open QA, ein<br />

Testtool für Distributionen und Appliances,<br />

das Suse entwickelt hat.


In eigener Sache: DELUG-DVD<br />

Knoppix, Fedora, Mint, Debian<br />

Einführung 08/2012 12/2010<br />

<strong>Software</strong><br />

Auch diesen Monat bekommen die DELUG-Käufer die doppelte Datenmenge zum einfachen Preis: Von der einen<br />

Seite der DVD bootet Klaus Knoppers neuestes <strong>Linux</strong>, von der anderen wahlweise Fedora 17 oder Mint 13. Dazu<br />

ein Debian-E-Book, jede Menge Videos, <strong>Software</strong> und eine virtuelle Maschine mit Egroupware. Markus Feilner<br />

www.linux-magazin.de<br />

45<br />

Inhalt<br />

46 Groupware ohne Outlook<br />

Egroupware, Tine 2.0, Horde, Simple<br />

Groupware und Feng Office: Fünf Webgroupwares<br />

im Vergleichstest.<br />

54 Tooltipps<br />

Swet 1.5.16, Aletheia 0.0.9, Monit 5.4,<br />

Fish 0.3, Mu 0.9.8.4 und Raider 0.13.1.<br />

56 Bitparade<br />

Eins-zu-eins-Kopien leicht gemacht mit<br />

vier Tools zum Klonen von Festplatten.<br />

Neben einem 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 gibt es von<br />

der Redaktion besonders empfohlene<br />

<strong>Software</strong> – alles gebündelt unter einer<br />

HTML-Oberfläche.<br />

Knoppix 7.0.2<br />

Gerade erst erschienen – schon bootet<br />

von der einen Seite der DVD Klaus Knoppers<br />

neuester Spross, die Version 7.0.2.<br />

Der bewährte Debian-Remix bringt viele<br />

aktuelle Desktop-Programme aus Testing<br />

und Unstable und verwendet Kernel 3.3.7<br />

sowie X.org 7.6, das vor allem mit neuerer<br />

Computerhardware besser zurechtkommt.<br />

Außerdem nennt das Changelog<br />

[1] zwei neue Bootparameter für 64-Bit-<br />

Systeme (»knoppix64« und »chroot« für<br />

die Systemreparatur).<br />

Libre Office, der Browser Chromium,<br />

LXDE, KDE, Gnome, Wine und Virtualbox:<br />

Die Liste erneuerter Programme ließe<br />

sich noch verlängern (Ab bil dung 1). Auch<br />

für ältere Rechner mit wenig Hauptspei-<br />

cher hat Knopper etwas zu<br />

bieten: Dank der »zram«-<br />

Kompression für den Hauptspeicher<br />

soll Knoppix jetzt<br />

auch auf Maschinen mit<br />

wenig RAM flotter laufen.<br />

Fedora und Mint<br />

Wer die DVD umdreht und<br />

dann bootet, kann unter<br />

zwei weiteren topaktuellen<br />

Distributionen wählen:<br />

Fedora gilt unter <strong>Linux</strong>-Spezialisten<br />

als die Distribution<br />

mit der besten Hardware-<br />

Unterstützung und dem<br />

aktuellsten <strong>Software</strong>stand.<br />

Aber auch <strong>Linux</strong> Mint<br />

13 hat etwas zu bieten: Es basiert auf<br />

Ubuntu 12.04 und ist laut Distrowatch<br />

[2] auf dem Weg zur belieb<strong>testen</strong> <strong>Linux</strong>-<br />

Variante im Web. Ob das nur am Cinnamon-Desktop<br />

liegt, der das ungeliebte<br />

Unity-Interface von Ubuntu ersetzt, können<br />

DELUG-Leser hier selbst <strong>testen</strong>.<br />

E-Book und Videos<br />

Auf derselben Seite der DVD findet sich<br />

auch ein HTML-Menü. Wer mit dem<br />

Browser darauf zugreift, findet hier zahlreiche<br />

exklusive Inhalte: Kostenlos gibt<br />

es das E-Book „Debian Administrators<br />

Handbook“ von Raphaël Hertzog und Roland<br />

Mas. Das Werk vermittelt auf knapp<br />

500 Seiten geballtes Debian-Know-how.<br />

Vorbildlich daran ist auch, dass die Autoren<br />

das Buch mit Hilfe einer Crowd-<br />

Funding-Initiative, bei der fast 25 000<br />

Dollar zusammenkamen, selbst aus dem<br />

Französischen übersetzt haben.<br />

Neben der <strong>Software</strong> aus den Tooltipps<br />

sowie Owncloud 4 und dem Artikel über<br />

Abbildung 1: Viel aktuelle <strong>Software</strong>, besseren Support für neue und<br />

ältere Hardware verspricht Knoppix 7.0.2.<br />

sicheres Löschen liegt auf der DVD auch<br />

eine virtuelle Maschine mit einem Demosystem<br />

von Egroupware auf der Basis<br />

von Debian 6.<br />

<strong>Linux</strong>tag- und OSMC-Videos<br />

Damit nicht genug, der Datenträger enthält<br />

noch Hunderte Megabyte an <strong>Linux</strong>-<br />

Videos: zum einen von der sehr gut besuchten<br />

Diskussionsrunde zum Thema<br />

Open Source und Netzpolitik auf dem<br />

<strong>Linux</strong>tag mit zwei Bundestagsabgeordneten<br />

und drei Mitgliedern der Enquete-<br />

Kommission, zum anderen vier Videos<br />

von der Open Source System Management<br />

Conference (OSMC) in Bozen über<br />

Monitoring mit Nagios, Systemmanagement<br />

und Cloud Computing. n<br />

Infos<br />

[1] Changelog zu Knoppix 7.0.2: [http://​<br />

knopper. net/ knoppix/ knoppix702. html]<br />

[2] Distrowatch: [http:// distrowatch. com]


<strong>Software</strong><br />

www.linux-magazin.de Web-Groupware 08/2012<br />

46<br />

Fünf Webgroupware-Tools ohne Outlook<br />

Freier Ausblick<br />

Seine Verbreitung macht Outlook nicht automatisch zum besten Groupware-Client der Welt. Dem begrüßenswerten<br />

Trend zu Webapplikationen folgend, bestehen nämlich für Suites, die lediglich einen Javascript-fähigen<br />

Browser auf dem Endgerät voraussetzen, in Funktionalität und Bedienbarkeit beste Aussichten. Andrej Radonic<br />

deshalb finden sie sich im Web unter so<br />

verschiedenen Titeln wie Collaboration,<br />

Groupware, Projektmanagement oder<br />

Web-Coworking. Bereits in dieser Einordnung<br />

deutet sich an, dass der Admin<br />

schon bei der Auswahl und Evaluation<br />

der <strong>Software</strong> für den eigenen Server genau<br />

hinschauen sollte.<br />

E Egroupware 1.8<br />

© buffaloboy, 123RF.com<br />

Ein Mangel an guten Alternativen zum<br />

Outlook-Exchange-Einerlei ist wahrlich<br />

nicht zu beklagen [1]. Plattformübergreifendes,<br />

Browser-gestütztes Arbeiten im<br />

Team, transparent vernetzt mit der zunehmenden<br />

Anzahl mobiler Arbeitsnomaden<br />

liegt im Trend – und die Welt der<br />

freien <strong>Software</strong> bedient die Nachfrage.<br />

Keine Diätkost<br />

Große Enterprise-Lösungen wie Zimbra,<br />

Scalix und Zarafa [2] verlangen häufig<br />

umfassendes Know-how und detaillierte<br />

Planung, vor allem wenn es um die Integration<br />

oder Ablösung des Gespanns<br />

aus Outlook und Exchange geht. Gerade<br />

kleine und mittelgroße Firmen schauen<br />

verstärkt nach schlanken Lösungen, die<br />

durch einfache Installation und wenig<br />

Wartungsaufwand glänzen.<br />

Dass sie dabei nicht automatisch über<br />

weniger Möglichkeiten und Flexibilität<br />

verfügen, beweisen auf diesem Feld<br />

gleich mehrere Kombattanten: Egroupware<br />

und sein Fork Tine 2.0, aber auch<br />

Horde sind seit Langem auf dem Markt,<br />

Simple Groupware und Feng Office noch<br />

etwas jünger. Alle treten an mit umfassenden<br />

Werkzeugen für Projektmanagement,<br />

Gruppenkalender, Webmail und<br />

vielen anderen Features.<br />

Sie kosten nichts, laufen out of the Box<br />

und lassen sich meist schnell an eigene<br />

Bedürfnisse anpassen. In Tabelle 1 hat<br />

das <strong>Linux</strong>-<strong>Magazin</strong> eine umfangreiche<br />

Liste der Funktionen der fünf Kandidaten<br />

in einer Übersicht zusammengestellt.<br />

Allen gemeinsam ist ein modulares Konzept,<br />

das PHP-Innenleben, Unterstützung<br />

für gängige Datenbanken, IMAP und<br />

SMTP-Protokoll. Ebenso bringt jeder ein<br />

funktionierendes Berechtigungskonzept<br />

und passende Admin-GUIs mit.<br />

Die Schwerpunkte setzen die Programmpakete<br />

jedoch sehr unterschiedlich. Auch<br />

Das Groupware-Urgestein Egroupware<br />

[3] war stets einer der Pioniere für teamübergreifendes<br />

Arbeiten und Kommunizieren.<br />

Bereits seit 1999 – damals noch<br />

als PHP Groupware – gibt es die <strong>Software</strong>,<br />

die mit Datenbank-Backends wie MySQL,<br />

Max DB, PostgreSQL sowie Microsofts<br />

SQL-Server arbeitet. Selbst rudimentärer<br />

Oracle-Zugriff ist vorhanden.<br />

Die Kernanwendungen der aktuellen Version<br />

1.8 stellen das zentrale Adressbuch,<br />

den der Terminplanung im Team dienenden<br />

Kalender, einen Webmail-Client,<br />

die Dateiverwaltung (mit Samba/​CIFS-<br />

Anbindung) sowie das Projektmanagement<br />

mit Zeiterfassung (Stundenzettel<br />

und Gantt-Darstellung) bereit. Ergänzen<br />

lässt sich das alles durch Aufgabenverwaltung<br />

(Infolog), Wissensdatenbank,<br />

Ressourcenverwaltung, Wiki, Content<br />

Management System (CMS, Sitemgr),<br />

Nachrichten, Workflow-Engine und viele<br />

weitere, teilweise exotische Module.<br />

Egroupware<br />

‚ Großer Funktionsumfang<br />

‚ Gute Integration der Groupwarefunktionen<br />

und zahlreicher Module<br />

„ Veraltete Oberflächen-Technik<br />

„ Schleppende Weiterentwicklung der<br />

Community Edition


Abbildung 1: Die Terminverwaltung von Egroupware ist mit allen Modulen vernetzt. Ob CRM, Projektmanagement<br />

oder Aufgabenverwaltung – immer entsteht ein Termin auch im Kalender der Groupware.<br />

Via POP und IMAP kommuniziert Egroupware<br />

mit einschlägigen Mailservern wie<br />

Cyrus, Courier, UW IMAP, aber auch mit<br />

Exchange. Neben dem Webclient lassen<br />

sich auch gängige Groupwareclients wie<br />

Kontact, Evolution und auch Outlook verwenden,<br />

allerdings mit unterschiedlicher<br />

Tiefe und Qualität der Anbindung.<br />

30 Sprachen<br />

Neben einigen (der langen Geschichte<br />

von Egroupware zu verdankenden) Annehmlichkeiten<br />

wie der in 30 Sprachen<br />

lokalisierten Oberfläche, einer ordentlichen<br />

Dokumentation sowie einer Berechtigungsvergabe,<br />

die sich an Access<br />

Control Lists (ACLs) orientiert, zeichnet<br />

Egroupware vor allem die enge Integration<br />

der Kernanwendungen untereinander<br />

aus: So erlaubt es die Suite beispielsweise,<br />

Termine direkt im Projektmanager<br />

anzulegen, wobei sie die Verabredungen<br />

auch sofort im Kalender anzeigt (Abbildung<br />

1) – eine naheliegende Lösung,<br />

die Anwender aber selbst bei größeren<br />

Enterprise-Lösungen vergeblich suchen.<br />

Analog gilt das auch für die Zeiterfassung,<br />

Notizen und das Zuweisen von<br />

personengebundenen Aufgaben.<br />

Allerdings wirkt die Oberfläche mittlerweile<br />

etwas angestaubt. Ajax sucht der<br />

Anwender vergebens, Popups für Dialoge<br />

bestimmen das Bild, die Konfiguration<br />

erledigt er stets in langen HTML-Formularen<br />

(Abbildung 2).<br />

IMAP, LDAP, Ical, Sync ML<br />

Generell legen die Egroupware-Entwickler<br />

den Schwerpunkt auf das Thema Integration.<br />

Usermanagement und Authentisierung<br />

lassen sich außer mit dem integrierten<br />

Benutzermanager auf SQL-Basis auch<br />

über einen LDAP-Server bewerkstelligen,<br />

Active Directory reicht ebenfalls. Gängige<br />

Schnittstellen wie XML-RPC, SOAP, Webdav<br />

und Ical sind auch an Bord.<br />

Dem mobilen Trend folgend verfügt<br />

Egroup ware zudem über einen Sync-ML-<br />

Synchronisationsserver. Damit lassen<br />

sich Kalender- und Adressdaten unter anderem<br />

mit Microsoft Outlook sowie Evolution<br />

abgleichen und viele Smartphones<br />

mit den Daten versorgen. Alternativ dient<br />

eine Implementierung des Ical-Standards<br />

dazu, den Abgleich von Kalendereinträgen<br />

aus Apple Ical oder Mozilla Lightning/​Sunbird<br />

mit dem Groupwareserver<br />

vorzunehmen. Der derzeitige Synchronisationsstandard<br />

Active Sync fehlt der<br />

Community-Ausgabe allerdings noch.<br />

Unter <strong>Linux</strong> erfolgt die Installation als<br />

RPM- oder Deb-Paket aus den Standardrepositories<br />

oder manuell über ein Tar-<br />

Archiv. Danach gelangen Admins in zwei<br />

Schritten zum lauffähigen System: Nach<br />

Aufruf des Setup-Skripts im Browser<br />

prüft der Installer zunächst die vorhandenen<br />

Komponenten und Einstellungen,<br />

vor allem in der Datei »php.ini«. Dann<br />

legt die Installationsroutine die Datenbanktabellen<br />

an und fragt die Konfigurationsparameter<br />

für Mailserver, LDAP und<br />

andere Anbindungen ab.<br />

Obwohl Entwickler in Egroupware ein<br />

umfassendes Plugin-API finden, über das<br />

sie vorhandene oder neue Applikationen<br />

in die Groupwareplattform nahtlos integrieren<br />

können, sind Community-seitig<br />

dafür bisher eher wenige Plugins entstanden.<br />

Insgesamt erweckt das Projekt den<br />

Eindruck, dass der Fokus der Entwicklung<br />

seit einiger Zeit stark zur kostenpflichtigen<br />

Enterprise-Edition gewandert<br />

ist, die inzwischen einen wesentlich größeren<br />

Funktionsumfang aufweist als die<br />

Community-Variante [4].<br />

E Horde 4.07<br />

Kronolith, Turba, Ansel und Gollem – dies<br />

sind nicht Helden aus einer nordischen<br />

Saga, sondern die Namen zentraler Komponenten,<br />

die den Funktionsumfang des<br />

modularen Horde-Systems ausmachen<br />

[5]. Die auf dem PHP-Framework aufgebaute<br />

Groupwarelösung ist ein weiterer<br />

altgedienter Vertreter der Web-Collaboration-Szene<br />

und erfreut sich nicht nur<br />

eines großen Funktionsumfangs, sondern<br />

auch einer großen Fan- und Entwickler-<br />

Web-Groupware 08/2012<br />

<strong>Software</strong><br />

www.linux-magazin.de<br />

47<br />

Abbildung 2: Wie viele Menüs präsentiert sich auch der Konfigurationsdialog von Egroupware eher altbacken.<br />

Horde<br />

‚ Für mobile Geräte optimiertes Web-GUI<br />

‚ Umfassender Synchronisationssupport<br />

‚ Mailverschlüsselung<br />

„ Modulsammlung unübersichtlich


<strong>Software</strong><br />

www.linux-magazin.de Web-Groupware 08/2012<br />

48<br />

Gemeinde, was nicht zuletzt an der Vielzahl<br />

modularer Erweiterungen liegt, den<br />

so genannten Apps.<br />

Diese werden, um die Installation zu vereinfachen,<br />

zu verschiedenen Distributionen<br />

gebündelt. Die umfassendste davon<br />

ist die Horde Groupware Webmail Edition<br />

in Version 4 (Abbildung 3). Sie enthält<br />

alle wichtigen Einzelapplikationen wie<br />

Kronolith, Turba und Mnemo und stellt<br />

so eine umfassende Groupwarelösung<br />

mit einem leistungsfähigen Webmailer<br />

(als einziger inklusive Mailverschlüsselung),<br />

Gruppenkalender, Aufgabenverwaltung,<br />

Supportanwendung, Notizen,<br />

Dateiverwaltung bereit.<br />

Hordes Installationsvorgang gehört zu<br />

den aufwändigeren, gelingt aber über ein<br />

PHP-CLI-Skript recht sicher. PHP ab 5.2.0<br />

ist Pflicht, ebenso die PHP-Module Xml,<br />

Domxml sowie Gettext. Die <strong>Software</strong><br />

unterstützt eine Vielzahl von Datenbanken<br />

bis hin zu Oracle. Anwender wählen<br />

beim Login aus mehreren Oberflächenva-<br />

Tabelle 1: Fünf Webgroupwares im Vergleich<br />

Egroupware Horde Tine 2.0 Simple Groupware Feng Office<br />

Basis<br />

Version 1.8 4.07 2012-03 (Milan) 0.745 2.0<br />

Varianten<br />

Community,<br />

Enterprise (EPL)<br />

Community<br />

Community,<br />

Appliance<br />

Community Community,<br />

Enterprise (Cloud)<br />

SaaS-Modell ja nein ja nein ja, Feng Sky<br />

Architektur PHP PHP PHP, Ext JS PHP, Ext JS PHP, Ext JS<br />

Clients<br />

Webclient klassisches HTML Ajax Ajax klassisches HTML Ajax<br />

Native Clients nein nein nein nein nein<br />

Mobile Webclients nein ja nein ja nein<br />

Synchronisation Sync ML,<br />

Sync ML, Active Sync Active Sync Sync ML (Funambol), nein<br />

Groupware-Protokolle<br />

Active Sync (EPL)<br />

Webdav, Groupdav,<br />

Caldav, Icalendar, Vcard<br />

Webdav, Groupdav,<br />

Caldav, Icalendar,<br />

Vcard<br />

Webdav, Groupdav,<br />

Caldav, Icalendar,<br />

Vcard<br />

Active Sync<br />

Webdav, Icalendar,<br />

Vcard<br />

Collaboration-Funktionen<br />

Mailprotokolle POP3, IMAP POP3, IMAP POP3, IMAP POP3, IMAP POP3, IMAP<br />

Webmail ja ja ja ja ja<br />

Kalender Gruppen, privat Gruppen, privat Gruppen, privat Gruppen, privat Gruppen, privat<br />

Adressen ja ja ja ja ja<br />

Projekte, Aufgaben ja ja ja ja ja<br />

Zeitverfolgung ja ja ja nein ja<br />

Dokument- und Dateimanagement<br />

ja ja ja ja ja<br />

Messaging und ​Chat nein nein nein ja nein<br />

Ticketing-System nein ja nein ja nein<br />

Integriertes Forum ja ja nein ja nein<br />

Wiki ja ja nein ja nein<br />

Universelle Suchfunktiodulen<br />

ja<br />

in den meisten Mo-<br />

ja ja ja<br />

Sonstiges<br />

News, Umfragen, Lesezeichen,<br />

CMS<br />

Reports, Lesezeichen<br />

Lesezeichen, FAQ,<br />

RSS, Fotogalerie, Tastaturnavigation<br />

und<br />

vieles mehr<br />

CRM, VoIP,<br />

Egroupware-Migrationstool<br />

CMS, FAQ, Bildergalerie,<br />

Tastaturnavigation,<br />

Sgs ML und<br />

vieles mehr<br />

Integration<br />

Directory-Integration LDAP LDAP LDAP NTLM, LDAP, MS-AD LDAP<br />

Lokalisierung über 30 Sprachen über 40 Sprachen über 15 Sprachen über 27 Sprachen über 25 Sprachen<br />

E-Mail-Sicherheit SSL SSL, S/​Mime, PGP SSL SSL/​TLS SSL/​TLS<br />

Antivirus-Schnittstellspiel<br />

diverse Clam AV nein diverse, zum Bei-<br />

nein<br />

MC-Afee<br />

Antispam diverse Spamassassin nein nein nein<br />

APIs SOAP, XML-RPC SOAP, XML-RPC Json-RPC SOAP, XML-RPC REST/​Json<br />

Schnittstellen zu VoIP (Asterisk, Agis), Frontend für Kolab ​VoIP (Asterisk) - -<br />

Dritt-Applikationen ERP (Project ERP)<br />

Administration<br />

Web-GUI ja ja ja ja ja<br />

CLI nein ja ja ja nein<br />

GUI mit eigenen Feldern<br />

im GUI konfigurierbar im GUI konfigurierbar im Backend möglich im Backend möglich im GUI konfigurierbar<br />

erweiterbar<br />

Backup und ​Restore ja nein nein nein nein<br />

Skins, ​Themes ja ja ja ja ja<br />

keine


aber auch Active-Sync-Support für den<br />

Abgleich mit Microsoft-Produkten vorhanden.<br />

Er ist implementiert über die<br />

freie, PHP-basierte Zpush-Schnittstelle<br />

(bekannt von Zarafa, [6]) und gleicht<br />

Adressen, Termine und Aufgaben ab. Active<br />

Sync verfügt darüber hinaus aber<br />

auch über Funktionen fürs Provisioning<br />

und den Remote Wipe mobiler Endgeräte,<br />

was dem Admin im Unternehmen<br />

die Wartung seiner mobilen Herde deutlich<br />

zu erleichtern vermag.<br />

Web-Groupware 08/2012<br />

<strong>Software</strong><br />

www.linux-magazin.de<br />

49<br />

E Tine 2.0 (Milan)<br />

Abbildung 3: Horde besteht aus vielen Komponenten, deren Namen an Fabelwesen erinnern, etwa der Mailclient<br />

Imp. Andere Komponenten tragen jedoch beschreibende Namen wie der Terminplaner Kronolith.<br />

rianten, darunter auch einem für mobile<br />

Geräte optimierten GUI (Abbildung 4).<br />

Ajax-Web-GUI<br />

Das Standard-GUI ist Ajax-getrieben<br />

und bietet Drag & Drop, zum Beispiel<br />

für Kalendereinträge. Eine kontextsensitive<br />

Toolbar blendet alle zum gewählten<br />

Modul gehörigen Werkzeuge ein,<br />

beispielsweise den Import oder Export<br />

der Adressbuchdaten. Die meisten Apps<br />

sind sinnvoll miteinander verbunden, so<br />

haben die Entwickler Aufgaben und Tickets<br />

im Kalender integriert, terminierte<br />

Aufgaben sowie offene Tickets listet er<br />

automatisch auf.<br />

Die modulare und flexible Natur der <strong>Software</strong><br />

zeigt sich vor allem in der Option,<br />

Horde als Webfrontend für den Kolab-<br />

Groupwareserver einzusetzen, wo Horde<br />

alle Funktionen unterstützt. Das Webframework<br />

ist einer der drei Referenzclients<br />

für den vom BSI unterstützten<br />

freien Groupwareserver, neben Outlook<br />

und dem KDE-Programm Kontact mit seinen<br />

Akonadi-Tools.<br />

Horde ist insgesamt sehr offen gestaltet<br />

und bietet sich als Backend für eine Reihe<br />

externer Clients an. Zum einen unterstützt<br />

es praktisch alle gängigen Groupwareschnittstellen<br />

wie Webdav und<br />

Caldav, mit denen sich Programme wie<br />

Thunderbird andocken. Zum anderen<br />

bietet das integrierte Sync-ML-Protokoll<br />

automatisierten Abgleich mit älteren mobilen<br />

Geräten.<br />

Wer Outlook und Blackberry-Geräte synchronisieren<br />

will, muss jedoch zusätzlich<br />

einen Funambol-Server installieren<br />

und konfigurieren. Zusätzlich dazu ist<br />

Tine 2.0 ist eines der jüngeren Groupwareprojekte<br />

und fällt dementsprechend<br />

angenehm durch seine moderne, Ajaxgetriebene<br />

Oberfläche auf. Die soll auch<br />

den Anspruch der Entwickler unterstreichen,<br />

Tine besonders benutzerfreundlich<br />

zu gestalten.<br />

Ursprünglich als Teil von Egroupware<br />

entstanden – der Name ist ein Akronym<br />

aus This Is Not Egroupware 2.0 – mauserte<br />

sich Tine 2.0 zu einem modernen<br />

und gefälligen Tool für Web-basiertes<br />

Arbeiten in Gruppen und hat sich dabei<br />

in besonderer Weise dem Thema Customer<br />

Relationship Management (CRM)<br />

verschrieben [7].<br />

Das Entwicklerteam, das im Wesentlichen<br />

der deutschen Firma Metaways<br />

angehört, legt Wert auf professionelle<br />

und kontinuierliche Entwicklung. Dementsprechend<br />

veröffentlicht das Projekt<br />

mehrmals im Jahr neue Versionen, in<br />

denen Anwender eine aufgeräumte,<br />

übersichtliche und sehr einfach zu bedienende<br />

Oberfläche vorfinden. Allerdings<br />

reagiert diese manchmal auf Klicks etwas<br />

zäh, und recht viele Dialoge öffnen sich<br />

Abbildung 4: Optional bringt Horde auch einen<br />

mobilen Webclient mit, hier auf dem iPhone.<br />

Abbildung 5: Das Tine-2.0-Adressbuch überzeugt durch einfache Bedienung.


<strong>Software</strong><br />

www.linux-magazin.de Web-Groupware 08/2012<br />

50<br />

Abbildung 6: Wie sein Vorgänger Egroupware hat auch Tine 2.0 einen klaren Schwerpunkt in dem für Vertrieb<br />

und Marketing wichtigen umfangreichen Customer-Relationship-Modul.<br />

als Popups, was zuweilen lästig ist. Das<br />

GUI beherrscht Drag & Drop und ordnet<br />

die Funktionsmodule übersichtlich auf<br />

Reitern an (Abbildung 5).<br />

Im Kern umfasst Tine 2.0 einen IMAP-<br />

Webmail-Client, eine Aufgabenverwaltung,<br />

eine Zeitverfassung und ein Adressbuch.<br />

Die aktuelle Version bringt zudem<br />

den lang erwarteten Filemanager mit,<br />

der eine zentrale Dateiablage mit direkter<br />

Verknüpfung in die entsprechenden<br />

Tine-Module bereitstellt.<br />

Vor allem die Aufgaben und die Adressen<br />

sind eng mit dem CRM-Modul verzahnt<br />

(Abbildung 6), das die Verwaltung und<br />

Wiedervorlage von Leads erlaubt. Leider<br />

haben sich die Entwickler bei der Konzeption<br />

der Datenstrukturen hier einen<br />

ärgerlichen Patzer erlaubt: Das Adressensystem<br />

unterscheidet nicht zwischen<br />

Adressen und Kontakten oder Ansprechpartnern,<br />

was Anwender dazu zwingt,<br />

Firmenadressen redundant (für jeden<br />

Kontaktperson) anzulegen.<br />

Ansonsten ermöglicht Tine 2.0 flottes Arbeiten,<br />

bietet eine übergreifende Suche,<br />

deren Ergebnisse sich als persönliche Favoriten<br />

ablegen lassen. Administratoren<br />

haben wenig Arbeit mit der Groupware:<br />

Die Installation der PHP-basierten <strong>Software</strong><br />

(Zend Framework und Ext JS) ist<br />

schnell erledigt, die Basis-Konfiguration<br />

erfolgt über ein spartanisches GUI. Updates<br />

sind per Skript durchzuführen.<br />

Mobile Daten mit Sync ML<br />

und Active Sync<br />

Ein Highlight für mobile Anwender dürften<br />

die Synchronisationsfähigkeiten mit<br />

Smartphones aller Couleur darstellen, die<br />

Tine 2.0 seiner Active-Sync-Schnittstelle<br />

verdankt, die den Groupwareserver nach<br />

außen als Microsoft-System erscheinen<br />

lässt. Anwender, die eher auf Desktop-<br />

Programme wie Thunderbird, Apple Ical<br />

oder I-OS-Systeme setzen, können auch<br />

per Caldav- und Carddav-Protokoll auf<br />

ihre Daten zugreifen.<br />

Unter der Haube finden sich für findige<br />

Administratoren weitreichende Anpassungs-<br />

und Erweiterungsmöglichkeiten,<br />

sei es bei der Erstellung von individuel-<br />

len Themes, Export- oder Importprofilen<br />

oder bei der Integration mit nahezu beliebigen<br />

Anwendungen über das bereitgestellte<br />

Json-RPC-API oder über Groupdav-<br />

Schnittstellen. Der Community-Support<br />

über das Forum funktioniert dem Vernehmen<br />

nach sehr gut und schnell.<br />

E Simple Groupware 0.745<br />

Auch jenseits der ausgetretenen Web-Collaboration-Pfade<br />

findet sich so manches<br />

nützliche und leistungsfähige Kleinod:<br />

Simple Groupware [8] aus der Feder des<br />

deutschen Entwicklers Thomas Bley ist<br />

so eine <strong>Software</strong>. Es kommt daher als<br />

sehr umfassende, in PHP geschriebene<br />

Groupwarelösung, die neben den Standards<br />

wie Mailclient, Kalender (Abbildung<br />

7) Aufgaben, Notizen und Dateiverwaltung<br />

eine Fülle weiterer Programme<br />

wie CMS, Wiki, Chat, Forum und Lesezeichen<br />

mitbringt.<br />

Der Entwickler setzt dabei konsequent<br />

auf Quellcode-Freiheit und verzichtet auf<br />

kostenpflichtige Modelle. Dabei zeichnet<br />

sich die Lösung vor allem durch viel<br />

Liebe zum Detail aus. So ist das Dokumentmodul<br />

nicht nur eine schnöde Dateiverwaltung<br />

zum Ablegen von Files,<br />

sondern verfügt auch über einen integrierten<br />

Viewer, der eine Vielzahl von<br />

Dokumentformaten bis hin zu Microsoft<br />

Office interpretiert.<br />

Der Philosophie zugrunde liegt ein hierarchisches<br />

Konzept, das sich zunächst im<br />

Explorer-artigen Baum spiegelt, in dem<br />

alle für den Anwender verfügbaren und<br />

Tine 2.0<br />

‚ Moderne Oberfläche<br />

‚ Umfassendes Modul fürs Customer Relationship<br />

Management<br />

‚ Synchronisationsfunktionen<br />

‚ Kontinuierliche Weiterentwicklung<br />

„ Fehlende Hierarchie in Adressdaten<br />

„ Kein mobiler Webclient<br />

Abbildung 7: Viel Liebe zum Detail haben die Entwickler in Simple Groupware gesteckt. Selbst beim Anlegen<br />

eines Termins im Kalender verliert der Anwender nie den omnipräsenten Verzeichnisbaum aus den Augen.


opensourcepress.de<br />

BÜCHER<br />

Neuauflage<br />

Neuauflage<br />

ISBN 978-3-941841-67-3 mit CD<br />

248 Seiten · brosch. · 24,90 [D]<br />

ISBN 978-3-941841-25-3<br />

736 Seiten · brosch. · 49,90 [D]<br />

Abbildung 8: Simple Groupware ist auf Massenverwaltung ausgelegt. Viele Datensätze lassen sich in einem<br />

Anlauf bearbeiten. Dank der eigenen Programmiersprache Sgs ML gelingt das sehr einfach.<br />

freigeschalteten Applikationen verlinkt<br />

sind. Module lassen sich zu beliebigen<br />

Ordnern in dieser Struktur hinzufügen,<br />

der Baum kann die Organisationsstruktur<br />

eines Unternehmens wiedergeben.<br />

Eingebaut: Explorer und die<br />

Skriptsprache Sgs ML<br />

Auch Berechtigungen lassen sich darauf<br />

abbilden, und jeder Anwender kann sich<br />

seine eigene Ordnerstruktur anlegen, individuelle<br />

Übersichtsseiten erstellen und<br />

öffentliche mit persönlichen Ordnern<br />

verbinden. Eine übergreifende Suche im<br />

Volltext und mit phonetischem Abgleich<br />

gewährt gezielten Zugriff auf alle relevanten<br />

Inhalte im System, inklusive der<br />

hinterlegten Dokumente.<br />

Diese auf Organisationen und Unternehmen<br />

ausgerichtete Philosophie<br />

manifestiert sich unter einer Oberfläche,<br />

die aber zumindest anfangs etwas<br />

gewöhnungsbedürftig ist. Im Gegensatz<br />

zu anderen Group warelösungen erschließen<br />

sich die grundlegenden Anwendungskonzepte<br />

nicht intuitiv, sondern erst nach<br />

ein wenig Einarbeiten.<br />

Auch die Gestaltung der anpassbaren<br />

Oberfläche trägt zu dem Eindruck bei,<br />

dass die Form der Funktion folgt. Dafür<br />

geht das Arbeiten sehr schnell, alle Seiten<br />

laden äußerst flott und ohne Verzug. Die<br />

Ausrichtung auf Effizienz zeigt sich in<br />

Funktionen wie der Massenpflege, mit<br />

DELUG-DVD<br />

Auf der DELUG-DVD dieses<br />

DELUG-DVD<br />

<strong>Magazin</strong>s finden Sie eine virtuelle Maschine<br />

mit einem Debian-<strong>Linux</strong> und installiertem<br />

Egroupware-Server inklusive Webclient.<br />

der sich viele Datensätze in einem Rutsch<br />

editieren lassen (Abbildung 8).<br />

Auch die Installation haben die Entwickler<br />

sehr effizient gelöst. Der Administrator<br />

lädt lediglich das Installationsskript,<br />

entpackt es im Document Root seines<br />

Webservers und ruft im Browser die URL<br />

»sgs_installer.php« auf. Dies startet den<br />

Installationsassistenten, der den benötigten<br />

Sourcecode herunterlädt und die Bestandteile<br />

der Applikation installiert. Als<br />

Datenbank verlangt Simple Groupware<br />

MySQL, PostgreSQL oder SQlite.<br />

Neben dem üblichen LDAP für die Authentisierung<br />

und Userverwaltung darf<br />

sich Simple Groupware auch auf Microsofts<br />

Active Directory stützen und<br />

sogar NTLM verwenden. Durch umfassende<br />

Schnittstellen erreichen auch externe<br />

Clients auf Desktops und Smartphones<br />

die Groupwaredaten: Neben den<br />

gewohnten Groupdav-Protokollen steht<br />

Sync ML als Synchronisationsmechanismus<br />

zur Verfügung, mit dem SOAP-API<br />

können Programmierer Drittapplikationen<br />

und Clients integrieren. Ein Plugin-<br />

API ermöglicht es der Community, eigene<br />

Module beizusteuern.<br />

Simple Groupware ermöglicht es auch<br />

Nicht-Programmierern, zum Beispiel ver-<br />

Simple Groupware<br />

‚ Großer Funktionsumfang<br />

‚ Flexibilität durch hierarchische Struktur<br />

und Kategorien-System<br />

‚ Für mobile Geräte optimierte Oberfläche<br />

‚ Sehr kontinuierliche Pflege und Weiterentwicklung<br />

‚ Eigene simple Skriptsprache Sgs ML<br />

„ Oberfläche gewöhnungsbedürftig<br />

„ Kein Drag & Drop für Termine<br />

Neu<br />

ISBN 978-3-941841-41-3 mit DVD<br />

447 Seiten · brosch. · 44,90 [D]<br />

opensourceschool.de<br />

TRAINING<br />

Programmierung<br />

ISBN 978-3-941841-45-1<br />

551 Seiten · brosch. · 44,90 [D]<br />

20. – 22.08. Qt für Einsteiger<br />

20. – 22.08. Git<br />

03. – 04.09. C++: STL und Boost<br />

03. – 05.09. SCJP/OCP Java 6 Programmer<br />

03. – 05.09. iPhone & iPad Entwicklung<br />

06. – 08.08. TYPO3 für Webdesigner<br />

08. – 10.08. ExtJS<br />

27. – 28.08. jQuery<br />

03. – 05.09. HTML5<br />

06. – 07.09. CSS3<br />

Webentwicklung<br />

Administration<br />

06. – 10.08. Vorbereitung auf LPIC-1<br />

13. – 15.08. Bacula Grundlagen<br />

27. – 29.08. Administration von OTRS<br />

27. – 31.08. Virtualisierung mit Xen<br />

03. – 04.09. TCP/IP-Analyse mit Wireshark<br />

weitere Themen und Termine:<br />

opensourceschool.de/kurstermine


<strong>Software</strong><br />

www.linux-magazin.de Web-Groupware 08/2012<br />

52<br />

sierten Administratoren, eigene Module<br />

und Views zu erstellen. Dazu dient die<br />

integrierte XML-Auszeichnungs-Sprache<br />

Sgs ML (Simple Groupware Solutions<br />

Markup Language). Über bloße Deklarationen<br />

in Form von XML-Dateien können<br />

Simple-Groupware-Verwalter damit Komponenten<br />

erstellen.<br />

Listing 1 zeigt ein simples Modul namens<br />

»myaddresses.xml«, das eine neue View<br />

auf die Kontakte bietet, mit der Option,<br />

Adressen hinzuzufügen oder bestehende<br />

Adressen zu löschen. Hat es der Admin<br />

unter »src/modules/schema/myaddresses.xml«<br />

abgelegt, steht es sofort in Simple<br />

Groupware zur Verfügung.<br />

E Feng Office 2.0<br />

Feng Office (ehemals Opengoo) ist ein<br />

weiterer Vertreter der jungen Generation<br />

von Webgroupware-Lösungen [9]. Dies<br />

manifestiert sich sichtbar in der modernen,<br />

dank konsequentem Ajax-Einsatz<br />

zumeist sehr intuitiv reagierenden und<br />

ansprechend gestalteten Oberfläche.<br />

Feng Office erweist sich als die einzige<br />

<strong>Software</strong> im Vergleich, die konsequent<br />

modale Dialoge implementiert und es<br />

schafft, diese zum Nutzen des Anwenders<br />

einzusetzen.<br />

Bei Feng Office sind alle Komponenten<br />

miteinander verzahnt – von dem sehr<br />

einfachen Mailclient, über Termine, Aufgaben,<br />

Dokumente und Kontakte bis hin<br />

zur Zeiterfassung. Jeder Eintrag in einem<br />

dieser Module lässt sich wie ein eigenes<br />

Objekt behandeln – und entsprechend<br />

mit anderen verknüpfen, einem Kontakt<br />

zuordnen oder in einem der Workspaces<br />

kategorisieren.<br />

Listing 1: »myaddresses.xml«<br />

01 <br />

02 <br />

03 <br />

04 <br />

05 <br />

06 <br />

07 <br />

Abbildung 9: Eine Aufgabe in Feng Office mit Beschreibung, Zuständigkeiten und Kommentaren.<br />

Auf diesem Wege bietet sich Feng Office<br />

auf fast natürliche Weise zur Abbildung<br />

von Workflows an: Aufgabe erstellen, einem<br />

Kontakt zuordnen, Dokumente und<br />

Notizen verknüpfen – dies geschieht in<br />

einem Rutsch. Jedem Objekt können die<br />

Nutzer Kommentare hinzufügen, wobei<br />

alle Anwender, die das Objekt abonniert<br />

haben, eine Benachrichtigung per Mail<br />

erhalten und so über alle Geschehnisse<br />

auf dem Laufenden bleiben, zum Beispiel<br />

bei Aufgaben (Abbildung 9).<br />

Versionskontrolle und<br />

Wysiwyg-Editor<br />

Dokumente lassen sich hochladen, der<br />

Server versioniert sie dabei – sofern gewünscht<br />

– auf eine gut handhabbare<br />

Weise (Abbildung 10). HTML-Dokumente<br />

können Anwender mittels Wysiwyg-Editor<br />

direkt inline anlegen und editieren.<br />

Ein Reportingtool erlaubt es, interaktiv<br />

eigene Berichte zu definieren, um beispielsweise<br />

eine Übersicht offener Aufgaben,<br />

die Entwicklung von Meilensteinen,<br />

oder für die Abrechnung von Leistungen<br />

zu generieren.<br />

Während Feng Office für sich genommen<br />

einiges an Glanz verbreitet, gebärdet es<br />

Feng Office<br />

‚ Hohe Produktivität durch durchdachtes<br />

Konzept und effektive Oberfläche<br />

‚ Flexible Anwendungsmöglichkeiten<br />

„ Kein mobiler Webclient<br />

„ Keine Synchronisation<br />

„ Plugin-Schnittstelle unausgereift<br />

„ API noch in Entwicklung, daher individuelle<br />

Anpassungen noch schwierig<br />

„ Kalender und Mailclient mit spärlichem<br />

Funktionsumfang<br />

sich zugleich als Insel, bei der Konnektivität<br />

sieht es derzeit mau aus: Es gibt keine<br />

Synchronisation für Mobilgeräte, selbst<br />

der Webzugriff von Smartphones scheitert<br />

an der fehlenden Optimierung des<br />

Web-GUI für solche Clients. Das Fehlen<br />

verbreiteter Groupware-Standardschnittstellen<br />

wie Webdav, Ical oder Vcard verschlimmert<br />

diese Situation noch. Erst mit<br />

der soeben erschienenen Version 2.0 wird<br />

ernsthaft an einem REST-API gearbeitet<br />

und das unausgereifte Plugin-System auf<br />

neue Beine gestellt.<br />

Auf Outlook verzichten<br />

muss kein Verlust sein<br />

Mit den vorgestellten Tools ist Webbasiertes<br />

Arbeiten in der Gruppe auch<br />

ohne einen fetten Client wie Outlook<br />

bestens möglich. Auf den ersten Blick<br />

scheinen sich die freien Webgroupware-<br />

Suiten dabei sehr ähnlich zu sein. In<br />

den Einzelheiten offenbaren sich jedoch<br />

beträchtliche Unterschiede beim Funktionsumfang,<br />

dem Schwerpunkt oder der<br />

Systemphilosophie.<br />

Hier ist es gut, seine eigenen Anforderungen<br />

zu kennen und sie mit den Lösungen<br />

abzugleichen. Die meisten Projekte bieten<br />

dafür freundlicherweise Online-Demos<br />

Der Autor<br />

Andrej Radonic ist IT-Journalist<br />

und außerdem als<br />

Vorstand der Intersales AG<br />

in Köln tätig sowie Autor<br />

des Buches „Xen 3.2“. Seine<br />

Spezialgebiete sind die<br />

Virtualisierung, Open-Source-Unternehmenslösungen<br />

sowie der Bereich E-Commerce.


und die Möglichkeit, eigene Anpassungen<br />

vorzunehmen. Egroupware glänzt mit einem<br />

besonderes breiten Modulangebot,<br />

eignet sich aber nur für Anwender ohne<br />

besondere Ansprüche an Oberfläche und<br />

Konnektivität. (mfe) <br />

n<br />

Web-Groupware 08/2012<br />

<strong>Software</strong><br />

Abbildung 10: Die eingebaute Dokumentverwaltung in Feng Office kommt bereits mit Versionskontrolle und<br />

einem einfachen Editor für HTML-Dateien.<br />

an, sodass sich Admins und Anwender<br />

teilweise sogar die Testinstallation sparen<br />

können.<br />

Feng Office bietet sich für Projekt- und<br />

Aufgabenverwaltung im wei<strong>testen</strong> Sinne<br />

an, auch wenn externe Personenkreise,<br />

etwa Kunden oder Lieferanten, anzubinden<br />

sind. Tine 2.0 legt den Schwerpunkt<br />

aufs CRM und glänzt durch die Synchronisation<br />

mit Smartphones. Horde und<br />

Simple Groupware liegen vorn, wenn es<br />

um den schieren Funktionsumfang geht<br />

Infos<br />

[1] Überblick Groupware-<strong>Software</strong> bei Wikipedia:<br />

[http:// en. wikipedia. org/ wiki/​<br />

List_of_collaborative_software]<br />

[2] Dirk Ahrnke, „Gut geplant“: <strong>Linux</strong>-<strong>Magazin</strong><br />

09/​11, S. 68<br />

[3] Egroupware: [http:// www. egroupware. org]<br />

[4] Egroupware Community Edition: [http://​<br />

www. egroupware. org/ community_edition]<br />

[5] Horde: [http:// www. horde. org]<br />

[6] Zpush: [http:// z‐push. sourceforge. net]<br />

[7] Tine 2.0: [http:// www. tine20. org]<br />

[8] Simple Groupware:<br />

[http:// www. simple‐groupware. de]<br />

[9] Feng Office Suite:<br />

[http:// www. fengoffice. com]<br />

www.linux-magazin.de<br />

53<br />

MAGAZIN<br />

SondErAkTion<br />

Testen Sie jetzt<br />

3 Ausgaben<br />

für 3 Euro!<br />

nUr<br />

MiT dVd!<br />

Coupon senden an: <strong>Linux</strong>-<strong>Magazin</strong> Leser-Service A.B.O.<br />

Postfach 1165, 74001 Heilbronn<br />

JA,<br />

ich möchte die nächsten 3 <strong>Linux</strong>-<strong>Magazin</strong>-Ausgaben für nur E 3*, statt<br />

E 17,40*, <strong>testen</strong>. Wenn mich das <strong>Linux</strong>-<strong>Magazin</strong> überzeugt und ich 14 Tage<br />

nach Erhalt der dritten Ausgabe nicht schriftlich abbestelle, erhalte ich das <strong>Linux</strong>-<strong>Magazin</strong> jeden<br />

Monat zum Vorzugspreis von nur E 5,13* statt E 5,80* im Einzelverkauf, bei jährlicher Verrechnung.<br />

Ich gehe keine langfristige Verpflichtung ein. Möchte ich das <strong>Linux</strong>-<strong>Magazin</strong> nicht mehr beziehen,<br />

kann ich jederzeit schriftlich kündigen. Mit der Geld-zurück-Garantie für bereits bezahlte,<br />

aber nicht gelieferte Ausgaben.<br />

Name, Vorname<br />

Straße, Nr.<br />

PLZ<br />

Ort<br />

Datum<br />

Unterschrift<br />

Gleich bestellen, am besten mit dem Coupon<br />

oder per<br />

• Telefon: 07131 / 2707 274 • Fax 07131 / 2707 78 601<br />

• E-Mail: abo@linux-magazin.de<br />

Mit großem Gewinnspiel (Infos unter: www.linux-magazin.de/probeabo)<br />

*Preis gilt für Deutschland<br />

Mein Zahlungswunsch: Bequem per Bankeinzug Gegen Rechnung<br />

BLZ<br />

Konto-Nr.<br />

Bank<br />

Beliefern Sie mich bitte ab der Ausgabe Nr.<br />

LM1124M


<strong>Software</strong><br />

www.linux-magazin.de Tooltipps 08/2012<br />

54<br />

Werkzeuge im Kurztest<br />

Tooltipps<br />

Swet 1.5.16<br />

Systemgeschwindigkeit auf Herz und Nieren<br />

prüfen<br />

Quelle: [http:// swet. sourceforge. net]<br />

Lizenz: GPLv3<br />

Alternativen: keine<br />

Aletheia 0.0.9 Beta<br />

Webseiten nach fehlerhaftem Code durchsuchen<br />

Quelle: [http:// aletheia. k42b3. com]<br />

Lizenz: GPLv3<br />

Alternativen: Modify Header, Yawet<br />

Monit 5.4<br />

Schlanke Monitoringlösung<br />

Quelle: [http:// mmonit. com/ monit]<br />

Lizenz: GPlv3<br />

Alternativen: Atop, Filemonitor<br />

Sustained Workload and Efficiency Test,<br />

so der volle Name dieses praktischen Helfers,<br />

ist ein Benchmarktool, das Prozessoren<br />

und Arbeitsspeicher unter Last setzt<br />

und die Ergebnisse in mehreren Formaten<br />

anschaulich aufbereitet.<br />

Der Anwender legt vor dem Start fest,<br />

wie oft die Tests durchlaufen und wie<br />

viele davon als eigene Prozesse oder eigene<br />

Threads gelten. Swet unterscheidet<br />

zwischen den vier Szenarien Basic,<br />

Quick, Slow und Whole. Nach getaner<br />

Arbeit zeigt Swet an, welche Tests es<br />

auf welchen Komponenten abgearbeitet<br />

hat (»loop++«, »fill«, »switch«), welche<br />

Datentypen zum Einsatz kamen (»int«,<br />

»long«, »double« und so weiter) und wie<br />

lange alles gedauert hat.<br />

Die Ergebnisse präsentiert Swet in mehreren<br />

Ausgabeformaten, darunter HTML<br />

und CSV. Die Auswertung muss der Benutzer<br />

danach aber selbst vornehmen.<br />

Hierzu empfiehlt es sich, das Tool auf<br />

mehreren Systemen mit unterschiedlichen<br />

Konfigurationen zu nutzen und die Ergebnisse<br />

miteinander zu vergleichen.<br />

★★★★★ Swet nimmt die Leistungsfähigkeit<br />

der CPU und des Arbeitsspeichers<br />

unter die Lupe. Dazu bietet das Tool eine<br />

Reihe von Optionen und besticht dabei<br />

vor allem durch seine gut formatierte<br />

Ausgabe, <br />

n<br />

Das Java-Programm Aletheia unterstützt<br />

Webentwickler bei der Fehlersuche und<br />

beim Aufdecken von Sicherheitslücken.<br />

Dazu sendet es einen einfachen HTTP-<br />

Request an die angegebene Adresse und<br />

zeigt den vom Webserver zurückgelieferten<br />

HTML-Code an. Voraussetzung<br />

für den Test ist ein uneingeschränkter<br />

Internetzugang, da Aletheia Proxys nicht<br />

unterstützt.<br />

In der Voreinstellung verwendet das Tool<br />

Lynx als Browserkennung. Über die Filtereinstellungen<br />

im Requestbereich kann<br />

der Anwender jedoch auch andere Identifikationen<br />

festlegen. Außerdem ist hier<br />

der richtige Ort, um Benutzername und<br />

Kennwort für Webseiten einzutragen, die<br />

eine Authentifizierung erfordern.<br />

Aletheia kann mehrere Requests parallel<br />

absetzen. Wer ein Webformular prüfen<br />

möchte, der kann mit dem HTML-<br />

Formularparser die Formularfelder mit<br />

Standardwerten ausfüllen. Ein Linkparser<br />

listet auf Wunsch alle Verweise auf einer<br />

Webseite auf.<br />

★★★★★ Aletheia schickt ohne großen<br />

Installations- und Konfigurationsaufwand<br />

einfach HTTP-Requests an Webserver<br />

und hilft so bei der Fehlersuche. Dank<br />

Formular- und Linkparser untersuchen<br />

Benutzer auch größere Sites. n<br />

Monit ist eine Monitoringlösung für alle,<br />

die auf einen Boliden wie Nagios verzichten<br />

können, aber mehr Funktionalität als<br />

bei Atop oder Filemonitor wünschen. Das<br />

Tool überwacht die Systemressourcen<br />

oder einzelne ausgewählte Dienste.<br />

Der Anwender steuert es entweder mit<br />

Kommandozeilen-Parametern oder über<br />

eine Weboberfläche. Monit ist netzwerkfähig<br />

und kann die Verfügbarkeit von<br />

Diensten auf entfernten Systemen prüfen.<br />

Welche Bereiche Monit beaufsichtigt, legt<br />

der Anwender in der Datei »~/.monitrc«<br />

fest. Für jeden Dienst gibt er an, was das<br />

Tool überwachen soll, welche Schwellenwerte<br />

existieren und wie es reagiert,<br />

wenn ein solcher erreicht wird.<br />

Das Tool kennt drei Betriebsarten. Im<br />

Aktivmodus (Standardeinstellung) observiert<br />

es einen vorgegebenen Dienst,<br />

alarmiert per Mail im Problemfall und<br />

führt dann eine definierte Aktion aus.<br />

Im passiven Modus hingegen benachrichtigt<br />

Monit nur. Der manuelle Modus<br />

schließlich ist für Cluster gedacht und<br />

überwacht Dienste nur dann, wenn sie<br />

mit Monit gestartet wurden.<br />

★★★★★ Monit beaufsichtigt Systeme zuverlässig<br />

auf der Shell oder per Browser.<br />

Das schlanke Tool füllt damit eine Lücke<br />

zwischen großen Monitoringlösungen<br />

und kleinen Kommandozeilentools. n


Fish 0.3<br />

Synchronisationslösung für viele Systeme<br />

Quelle: [http:// fishsync. sourceforge. net]<br />

Lizenz: GPLv2<br />

Alternativen: Rsync, Super Flexible File Synchronizer<br />

Mu 0.9.8.4<br />

Maildir-Verzeichnisse effizient verwalten<br />

Quelle: [http:// www. djcbsoftware. nl/ code/​<br />

mu]<br />

Lizenz: GPLv3<br />

Alternativen: Mairix, Recoll<br />

Raider 0.13.1<br />

<strong>Software</strong>-Raids automatisch konvertieren<br />

Quelle: [http:// raider. sourceforge. net]<br />

Lizenz: GPLv2<br />

Alternativen: Mdadm<br />

Tooltipps 08/2012<br />

<strong>Software</strong><br />

www.linux-magazin.de<br />

55<br />

Fish gleicht Dateien und Ordner auf<br />

mehreren Systemen miteinander ab.<br />

Das Tool besteht aus dem Dienst »fish«,<br />

der die Synchronisationsprozesse steuert,<br />

und einer einfachen Qt-4-basierten<br />

Oberfläche. Im Hintergrund werkeln Programme<br />

wie Open SSH, Rsync und SSH-<br />

FS. Diese müssen auf jedem angeschlossenen<br />

Rechner installiert sein, während<br />

Fish nur auf dem System erforderlich ist,<br />

das die Synchronisation steuert.<br />

Vor dem ersten Einsatz verteilt der Benutzer<br />

auf allen Systemen die SSH-Hostkeys.<br />

Sich einmalig per SSH anzumelden genügt<br />

dazu vollauf. Außerdem erzeugen Nutzer<br />

noch einen privaten SSH-Schlüssel. Nach<br />

dem Start zeigen zwei Fortschrittsbalken<br />

im Hauptfenster den aktuellen Status an.<br />

Vor dem Abgleich richten Anwender die<br />

angeschlossenen Rechner ein. Neben einem<br />

Hostnamen oder einer IP erwartet<br />

das Tool die Logindaten und eine Liste<br />

der abzugleichenden Dateien und Verzeichnisse.<br />

Die allgemeine Konfiguration zeigt alle<br />

Pfade zu den externen Helfertools an.<br />

Hier definieren Nutzer auch das Synchronisationsintervall,<br />

das in der Voreinstellung<br />

bei 60 Minuten liegt. Sämtliche Einstellungen<br />

und Protokolle speichert das<br />

Programm im versteckten Verzeichnis<br />

»~/.fish« der Benutzer. Fish bewältigt<br />

keine Synchronisationskonflikte. Da das<br />

Tool auf Rsync zurückgreift, muss der<br />

Anwender auf dessen Standardfunktionen<br />

vertrauen.<br />

★★★★★ Fish bietet eine intuitive Oberfläche,<br />

um die Synchronisation zwischen<br />

mehreren Systemen zu verwalten. n<br />

Mu findet und verwaltet elektronische<br />

Post in Maildir-Verzeichnissen, das<br />

schnelle Wiederfinden steht dabei klar im<br />

Vordergrund. Zusätzlich kann das Konsolenprogramm<br />

aber auch Mailanhänge<br />

entpacken, neue Maildir-Verzeichnisse<br />

anlegen oder den Inhalt der Nachrichten<br />

anzeigen.<br />

Vor dem Einsatz erzeugen Benutzer mit<br />

»mu index« einen Index der Nachrichten;<br />

es empfiehlt sich, diesen regelmäßig<br />

zu aktualisieren. Er landet als Xapian-<br />

Datenbank im Verzeichnis »~/.mu« der<br />

Anwender. Dort speichert das Tool auch<br />

seine Logdateien. Eine eigene Konfigurationsdatei<br />

besitzt es nicht, Benutzer<br />

steuern es ausschließlich über Kommandozeilen-Parameter<br />

beim Aufruf.<br />

Neben dem erwähnten Befehl »index«<br />

kennt Mu weitere so genannte Subcommands,<br />

etwa »find« und »cfind«, die bei<br />

jedem Aufruf auf die Indexdatenbank<br />

zugreifen. Anders »mkdir«, »view« und<br />

»extract«, die mit den Mails direkt arbeiten<br />

und daher theoretisch auch mit<br />

Nachrichten umgehen können, die nicht<br />

im Maildir-Verzeichnis liegen.<br />

Für alle Subcommands existieren eigene<br />

Manpages, welche die Anwender über<br />

»mu‐Subcommand« finden. Die Hilfeseiten<br />

verraten, welche Parameter und Optionen<br />

für das jeweilige Kommando zur<br />

Verfügung stehen, und liefern detaillierte<br />

Beispiele. Wer nach einer allgemeine Einführung<br />

sucht, wird in der Manpage zu<br />

»mu‐easy« fündig.<br />

★★★★★ Mu ist ein praktischer Helfer<br />

für alle Anwender, die ihre Post in Maildir-Verzeichnissen<br />

aufbewahren und mit<br />

einem flotten Kommandozeilentool anstelle<br />

eines Mailclients die Nachrichten<br />

verwalten möchten. <br />

n<br />

Wer hat beim Kauf einer zweiten Festplatte<br />

nicht schon mal mit dem Gedanken<br />

gespielt, ein <strong>Software</strong>-Raid aufzubauen?<br />

Ein bestehendes System mit einer Platte<br />

entsprechend umzuwandeln, ist zwar<br />

möglich, aber nicht unbedingt trivial.<br />

Raider tritt an, um Benutzern diese Arbeit<br />

zu erleichtern.<br />

Dabei erfindet das Bash-Skript das Rad<br />

nicht neu, sondern greift auf bewährte<br />

Konsolenprogramme wie Mdadm, Parted,<br />

Sfdisk, Hdparm und Rsync zurück.<br />

Eine Liste aller Abhängigkeiten verrät die<br />

Readme-Datei. Hier erfahren Anwender<br />

zudem, welche Dateisysteme und Raid-<br />

Level Raider unterstützt. Verschlüsselte<br />

Dateisysteme bleiben außen vor.<br />

Vor der Konvertierung sollten sich Anwender<br />

mit dem Parameter »‐d« einen<br />

Überblick über die verfügbaren Platten<br />

und Partitionen verschaffen. Danach<br />

rufen sie Raider mit dem gewünschten<br />

Raid-Level und dem Namen der neuen<br />

Festplatte auf. Bei höheren Raid-Leveln<br />

sind mehrere Platten möglich. Wer auf<br />

Nummer sicher gehen möchte, der startet<br />

mit »‐t« einen Testlauf. Um eine Platte<br />

aus einem Verbund herauszulösen, setzen<br />

Benutzer »‐e« ein.<br />

Eine Datensicherung ist Pflicht vor dem<br />

Einsatz des Konvertierungstools. Ebenso<br />

empfiehlt sich eine gründliche Lektüre<br />

der Dokumentation. Sie enthält eine verständliche<br />

Schritt-für-Schritt-Anleitung,<br />

eine Liste aller unterstützten Distributionen<br />

sowie einige Tipps für den Fall, dass<br />

etwas schiefgeht.<br />

★★★★★ Raider erleichtert die Umwandlung<br />

eines Einzelplattensystems in einen<br />

Raid-Verbund. Das Tool nutzt bewährte<br />

Werkzeuge und bietet eine gute Anleitung.<br />

(U. Vollbracht/​hej)<br />

n


<strong>Software</strong><br />

www.linux-magazin.de Bitparade 08/2012<br />

56<br />

Vier Tools zum Klonen von Festplatten<br />

Die Dolly-Macher<br />

Die Festplatte gibt schlechte SMART-Werte oder seltsame Geräusche von sich? Es stehen größere Hardware-<br />

Umbauten an? Dann ist es Zeit, die Platte(n) zu klonen. Vier Tools helfen <strong>Linux</strong>-Anwendern und Systemadministratoren<br />

dabei, ihre Daten umzuziehen und Eins-zu-eins-Kopien zu erstellen. Mela Eckenfels<br />

© sandrobrezger, photocase.com<br />

Egal ob Otto Normaluser Bastelarbeiten<br />

zu Hause plant oder ein <strong>Linux</strong>-Admin<br />

eine Serverfarm mit identischen virtualisierten<br />

Installationen aus dem Boden<br />

stampfen muss – früher oder später stehen<br />

beide vor der Herausforderung, Festplatten<br />

zu spiegeln. Wer »dd« mit Respekt<br />

begegnet, beweist gesunden Menschenverstand.<br />

Das Tool steht zwar allseits bereit,<br />

aber eine Unachtsamkeit genügt, um<br />

irreparablen Schaden anzurichten. Wer<br />

dann keine guten Backups hat, der weint<br />

seinen Daten hinterher, während er das<br />

System neu aufsetzt.<br />

Das muss nicht sein, denn es gibt Lösungen<br />

mit Halteseil und Fangnetz. Zuverlässige<br />

Hilfe beim Klonen versprechen die<br />

beiden Live-CDs Clonezilla [1] und Ping<br />

[2]. Alternativ installieren Anwender<br />

Mondo Rescue [3] oder den kommerziellen<br />

Konkurrenten Storix System Backup<br />

Administrator [4].<br />

Auf dem Prüfstand stehen Benutzerfreundlichkeit<br />

und das Angebot an unterstützten<br />

Dateisystemen. Die Kandidaten<br />

mussten auch zeigen, ob sie Images für<br />

virtuelle Maschinen erstellen können und<br />

ob ein Multiboot-System nach dem Klonen<br />

noch alle Betriebssysteme startet.<br />

E Clonezilla<br />

Der erste Testkandidat ist unter der<br />

GPLv2 veröffentlicht und kommt gleich<br />

im Doppelpack. Anwender dürfen zwischen<br />

einer Debian- und einer Ubuntu-<br />

Variante auswählen. Im Downloadbereich<br />

auf der Projektseite stehen jeweils<br />

Stable- und Testing-Images für verschiedene<br />

Architekturen zur Verfügung. Ent-<br />

scheidungshilfe bietet die FAQ [5]. Im<br />

Test trat Version 2.1.12-37 in der Ubuntu-<br />

Ausführung an. Das 118 MByte große<br />

Image basiert auf Oneiric Ocelot; nach<br />

Redaktionsschluss erschien eine neue<br />

Fassung mit Precise Pangolin.<br />

Zum schnellen Einstieg bieten die Clonezilla-Macher<br />

eine Referenzkarte unter [6]<br />

an, die Schritt für Schritt durch die wichtigen<br />

Funktionen führt. Unter der Haube<br />

arbeiten bewährte Tools wie Partclone<br />

[7], Partimage [8], »dd« und »ntfsclone«<br />

aus dem Paket Ntfsprogs.<br />

Clone zilla kennt die Dateisysteme Ext 2,<br />

Ext 3, Ext 4, Reiser-FS, Reiser 4, XFS und<br />

JFS sowie FAT, NTFS, HFS+ (Mac OS<br />

X) und UFS (Free/​Net/​Open BSD). Stößt<br />

das Kloningtool auf ein unbekanntes<br />

Filesystem, kopiert es dieses blockweise<br />

mit »dd«. LVM beherrscht das Programm<br />

erst ab Version 2, und mit <strong>Software</strong>- und<br />

Fake-/​Host-Raids (also Raids, deren Rechenleistung<br />

von der Haupt-CPU statt<br />

vom Controller geleistet wird) kommt es<br />

gar nicht klar.<br />

Nach dem Booten der Live-CD darf der<br />

Anwender die Sprache und die Tastaturbelegung<br />

auswählen – das ist angenehm,<br />

gestattet es doch das Arbeiten mit deutschem<br />

Layout. Danach steht die Entscheidung<br />

zwischen den beiden Optionen »device‐image«<br />

und »device‐device« (siehe<br />

Abbildung 1). Gilt es, eine Maschine auf<br />

eine andere zu spiegeln, oder soll der<br />

Klon einen Snapshot des aktuellen Zustands<br />

speichern, ist Ersteres die richtige<br />

Wahl. Steht indes ein Umzug auf eine<br />

größere Festplatte an, ist »device‐device«<br />

das Mittel zum Zweck.<br />

Die Tester entschieden sich für »device‐image«<br />

und wählten dann den Speicherort<br />

für das Abbild aus. Clone zilla<br />

bietet als Ablageort lokale Geräte wie


Abbildung 1: Clonezilla bietet zwei Modi an. Um das Image einer Platte oder Partition zu erstellen, wählen<br />

Anwender »device‐image« aus. Dagegen ist »devive‐device« das Mittel der Wahl, wenn ein Umzug auf eine<br />

größere Festplatte ansteht.<br />

interne und externe Platten sowie USB-<br />

Sticks an, arbeitet aber auch mit Datenspeichern<br />

zusammen, die über das Netzwerk<br />

erreichbar sind. Dazu unterstützt<br />

das Programm SSH, Samba und NFS. Die<br />

Netzwerkkonfiguration verlangt jedoch<br />

ein angeschlossenes Ethernet-Kabel oder<br />

eine händische Konfiguration der WLAN-<br />

Karte mit »iwconfig« & Co.<br />

Letzteres ist nur ratsam, wenn es die<br />

Umstände gar nicht anders erlauben. Das<br />

Klonen einer gut gefüllten Festplatte auf<br />

dem 250 GByte großen Dualboot-Testsystem<br />

benötigte schon mit einem lokal angeschlossenen<br />

Gerät rund acht Stunden.<br />

Das gleiche Setup über das Netzwerk<br />

zu spiegeln, hätte der zuverlässigen Anzeige<br />

nach mehrere Tage in Anspruch<br />

genommen.<br />

Nachdem der Anwender das Speicherziel<br />

festgelegt hat, darf er zwischen dem Anfänger-<br />

und dem Expertenmodus wählen.<br />

Der Anfängermodus bietet die Möglichkeit,<br />

die gesamte Platte oder auch nur<br />

einzelne Partitionen zu klonen. Und bei<br />

<strong>Linux</strong>-Dateisystemen lässt sich erst ein<br />

Filesystemcheck durchführen und das<br />

frische Image anschließend auf Fehler<br />

überprüfen.<br />

Die Option, das Image auf einem anderen<br />

System wiederherzustellen, steht nur<br />

im Expertenmenü zur Verfügung, wo der<br />

Anwender auch selbst beschließen darf,<br />

welches Tool im Hintergrund bevorzugt<br />

die eigentliche Arbeit erledigt. Experten<br />

vorbehalten ist ebenfalls die Entscheidung,<br />

ob und welche Kompression zum<br />

Einsatz kommt und wie groß eine einzelne<br />

Datei des Image maximal sein darf<br />

(voreingestellt ist 2 GByte).<br />

Auf den ersten Blick wirkt Clonezilla<br />

somit recht klar strukturiert. Der Teufel<br />

steckt aber im Detail. Hat sich der<br />

Anwender an einer Stelle im Menü vertan,<br />

hilft meist nur, ganz von vorne zu<br />

beginnen. Problematisch ist auch die<br />

vierte Option im Menü »Neustart«, bei<br />

der Clonezilla ein bereits eingehängtes<br />

Laufwerk nicht entfernt. Einen sauberen<br />

Neubeginn garantiert nur »Start over« mit<br />

der Nummer 3.<br />

Exaktes Ebenbild?<br />

Um ein Image wiederherzustellen, booten<br />

Benutzer die Live-CD auf dem Zielrechner<br />

und wählen im Expertenmodus<br />

»restoredisk« beziehungsweise »restoreparts«.<br />

Danach gilt es, die Feinabstimmung<br />

vorzunehmen (siehe Abbildung<br />

2). Clonezilla bietet unter anderem an,<br />

den MBR zu restaurieren und Windows-<br />

Hostnamen automatisch anzupassen.<br />

Außerdem dürfen Anwender bestimmen,<br />

dass die neue Partitionstabelle sich an der<br />

aktuellen Größe der Festplatte orientieren<br />

soll. Fortgeschrittene Nutzer definieren<br />

zudem Skripte, die vor oder nach der<br />

Installation laufen sollen.<br />

Es ist nicht möglich, beim Klonen einer<br />

Partition zu einem anderen Dateisystem<br />

zu wechseln oder aus einer physischen<br />

Festplatte ein Laufwerk zu generieren,<br />

das direkt in einer virtuelle Maschine arbeitet.<br />

EFI-basierte Computer mit GUID-<br />

Partitionstabellen unterstützt Clonezilla<br />

hingegen seit dem Frühjahr 2011.<br />

Die Adminregel Nummer 1 besagt, dass<br />

die meisten Daten beim Wiederherstellen<br />

von Backups verloren gehen. Clonezilla<br />

machte hier im Test leider keine<br />

Ausnahme. Beim Umzug des Dualboot-<br />

Systems mit Windows und <strong>Linux</strong> kam<br />

es mitunter vor, dass der Restore nicht<br />

bootete. Hinweise zur Rettung bietet die<br />

erwähnte Referenzkarte.<br />

Selbst wenn auf den ersten Blick alles<br />

glatt gelaufen zu sein scheint, bedeutet<br />

das nicht, dass das Image auch brauchbar<br />

ist. Auch wenn es schnell gehen muss<br />

oder soll: Es ist besser, die diversen Optionen<br />

zur Prüfung der Dateisysteme und<br />

der fertigen Klone aktiviert zu lassen.<br />

E Ping<br />

Auch der zweite Testkandidat ist eine<br />

bootbare Live-CD. Ping aus dem französischen<br />

IT-Haus Effitek basiert auf <strong>Linux</strong><br />

from Scratch. Der Hersteller bietet das<br />

Tool als kostenfreie Community-Edition<br />

(GPL) und als Enterprise-Version für 30<br />

Euro an, die mit Mail- und Telefonsupport<br />

lockt. Das Standard-ISO ist 35 MByte<br />

groß, eine erweiterte Variante mit Clam<br />

AV umfasst 70 MByte. Im Test trat Version<br />

3.02 an.<br />

Ping steht für „Partimage is not Ghost“<br />

und bezieht sich damit auf die kommer-<br />

Abbildung 2: Die Clonezilla-Wiederherstellungsoptionen im Expertenmodus sind in der Tat nichts für Einsteiger.<br />

Dafür ist hier eine gezielte Feinabstimmung und sogar der Einsatz externer Skripte möglich.<br />

Bitparade 08/2012<br />

<strong>Software</strong><br />

www.linux-magazin.de<br />

57


<strong>Software</strong><br />

www.linux-magazin.de Bitparade 08/2012<br />

58<br />

zielle Windows-Backuplösung Norton<br />

Ghost [9], von der es sich abheben will.<br />

Dennoch erleben <strong>Linux</strong>-Fans eventuell<br />

den einen oder anderen befremdlichen<br />

Moment, denn Pings Oberfläche erinnert<br />

eher an ein Windows- als an ein <strong>Linux</strong>-<br />

Programm. Hinter den Kulissen arbeiten<br />

die beiden Werkzeuge Partimage und<br />

Partclone. Somit beherrscht das Tool alle<br />

Dateisysteme, die beide bearbeiten: Ext<br />

2/​3/​4, Reiser-FS, FAT 16/​32, HPFS, JFS,<br />

XFS, UFS, HFS und NTFS.<br />

Nach dem Booten erinnert Ping bei der<br />

Bedienung an Clonezilla. Allerdings haben<br />

Anwender beim zweiten Kandidaten<br />

nicht die Möglichkeit, die Tastaturbelegung<br />

auszuwählen, und müssen daher<br />

mit der US-amerikanischen Variante leben.<br />

Ping bietet ebenfalls an, auf ein<br />

lokales Laufwerk oder übers Netzwerk<br />

(Samba, NFS und FTP) zu sichern. In<br />

weiteren Untermenüs legen die Anwender<br />

fest, ob sie ein komprimiertes Image<br />

wünschen und ob anstelle von Partimage<br />

(Voreinstellung) die Anwendung Partclone<br />

oder doch das altbewährte Tar an<br />

den Start geht. Danach geht’s los – einen<br />

Expertenmodus stellt das Tool nicht zur<br />

Verfügung.<br />

Etwas sparsam präsentiert sich die Anwendung<br />

auch bei der Wiederherstellung<br />

der Images (siehe Abbildung 3).<br />

Die Oberfläche präsentiert sich somit<br />

äußerst übersichtlich und ist auch für<br />

Einsteiger geeignet. Dafür fehlen aber<br />

auch Funktionen, die es erlauben, direkt<br />

auf ein anderes Laufwerk zu klonen, den<br />

Dateisystemtyp zu wechseln oder Device-<br />

Images für virtuelle Maschinen anzufertigen.<br />

Moderne EFI-Systeme unterstützt<br />

Ping gar nicht.<br />

Pluspunkte sammelte Ping jedoch im<br />

Test, weil es mit dem Dualboot-System<br />

besser zurechtkam als Clonezilla. Den-<br />

noch lief auch hier nicht alles glatt – ein<br />

Eingriff in den Bootmanager über die<br />

Grub-Shell war nötig, um beide Betriebssysteme<br />

sauber zu starten.<br />

E Mondo Rescue<br />

Abbildung 3: Ping überfordert den Anwender nicht mit großen Auswahlmöglichkeiten.<br />

Erweiterte Optionen zum direkten Klonen auf andere Partitionen,<br />

zu Änderungen am Dateisystem und Ähnliches fehlen.<br />

Anders als bei den ersten beiden Testkandidaten<br />

heißt es hier nicht einlegen,<br />

booten und los. Das unter der GPL veröffentlichte<br />

Mondo Rescue installieren<br />

Anwender auf dem PC, dessen Platten sie<br />

spiegeln wollen. Das Tool benötigt unter<br />

den meisten Distributionen zusätzlich die<br />

Pakete »afio«, »mkisofs«, »mindi‐busybox«<br />

und »mindi«. Hinweise zur Einrichtung<br />

auf verschiedenen <strong>Linux</strong>-Systemen<br />

gibt die Downloadseite. Ubuntu-Nutzer<br />

bewahrt die Anleitung unter [10] vor<br />

frustrierenden Frickeleien. Im Test kam<br />

Version 3.0.1 zum Einsatz.<br />

Mondo Rescue unterstützt unter <strong>Linux</strong><br />

verfügbare Dateisysteme (LVM 1 und 2,<br />

Raid, Ext 2/3/4, JFS, XFS, Reiser-FS und<br />

VFAT) und berücksichtigt Windows-Partitionen<br />

auf Dualboot-Rechnern. Anwender<br />

starten das Tool mit Rootrechten von der<br />

Kommandozeile aus. Besser noch ist der<br />

Betrieb im Runlevel 1. So müssen Nutzer<br />

nicht händisch Datenbanken oder Ähnliches<br />

herunterfahren, um später eventuell<br />

mit einem unbrauchbaren Klon dazustehen.<br />

Die Option »mondoarchive« spiegelt<br />

lokale Platten, »mondorestore« stellt sie<br />

wieder her.<br />

Die Benutzerführung ist schnörkellos und<br />

handlich. Mondo Rescue leitet den Benutzer<br />

Schritt für Schritt durch die Konfiguration<br />

bis zu einem funktionierenden<br />

Backup. Gleich im ersten Menü zeigt sich<br />

der kleine Vorsprung vor den ersten beiden<br />

Kandidaten. Zu den Möglichkeiten,<br />

die auch die Livesysteme bieten, gesellen<br />

sich CDs, DVDs und Bandlaufwerke als<br />

Zielmedien (siehe Abbildung<br />

4).<br />

Steht das Ziellaufwerk<br />

fest, wählt der Anwender<br />

die Komprimierung<br />

und entscheidet, welche<br />

Bestandteile das<br />

Backup berücksichtigen<br />

soll. Außerdem<br />

ist es möglich, gezielt<br />

Bereiche auszuschließen.<br />

Produktivsysteme<br />

klont Mondo Rescue<br />

auf diese Weise ohne überflüssigen Ballast,<br />

etwa voluminöse Logfiles.<br />

Für Multiboot-Systeme gelten andere<br />

Spielregeln als bei den Live-CDs. Im Gegensatz<br />

zu Clonezilla und Ping arbeitet<br />

Mondo Rescue mit eingehängten Partitionen.<br />

Möchte ein Anwender einen<br />

Rechner mit einem <strong>Linux</strong>- und einem<br />

Windows-Betriebssystem klonen, muss<br />

er die Windows-Partition vorher in »/etc/<br />

fstab« eintragen und mounten. Handelt<br />

es sich um ein NTFS, hakt Mondo Rescue<br />

nach, ob es die Partition im Backup<br />

berücksichtigen soll. Bestätigt der Nutzer<br />

dies, behandelt das Tool die gesamte<br />

NTFS-Partition wie eine einzelne große<br />

Datei (»biggiefile«).<br />

Kleine Umwege<br />

Nachdem Ziel und Inhalt feststehen,<br />

geht’s los. Egal welches Speichermedium<br />

zum Einsatz kommt – das Tool legt<br />

mittels Mindi <strong>Linux</strong> immer zusätzlich<br />

ein bootfähiges Image an, mit dem der<br />

Anwender die spätere Wiederherstellung<br />

startet (siehe Abbildung 5). Das Abbild<br />

beherbergt den Kernel, Module, Tools<br />

und Bibliotheken sowie alle Informationen<br />

über das jeweils verwendete Backupmedium.<br />

Vorsicht ist geboten, wenn ein<br />

Anwender in ein lokales Netzwerkverzeichnis<br />

gespiegelt hat und versucht<br />

dieses auf einem Rechner in einem anderen<br />

Netzwerk wiederherzustellen. Das<br />

Vorhaben wird scheitern, da die auf dem<br />

ISO hinterlegten Netzwerkeinstellungen<br />

nicht mehr zutreffen.<br />

Hat »mondoarchive« seine Arbeit beendet,<br />

kann der Nutzer die Integrität des<br />

Backups überprüfen, indem er das Rescue-Medium<br />

bootet und auf der Shell<br />

»Lilo: compare« eingibt. Auch die Wiederherstellung<br />

startet mit dem Rescue-<br />

Medium. Das Tool kennt drei Modi: »interactive«<br />

(führt den Anwender durch<br />

die einzelnen Schritte), »nuke« (stellt<br />

das System ohne Benutzereingriffe wieder<br />

her) und »expert« (bietet zusätzliche<br />

Optionen und Tools).<br />

Letzteres legt Werkzeuge für jene Nutzer<br />

bereit, die Partitionen oder die Plattengeometrie<br />

verändern, auf ein Raid-System<br />

umziehen oder zu einem neuen Dateisystem<br />

wechseln wollen. Mondo Rescue<br />

passt dabei selbstständig die Einträge in<br />

der »/etc/fstab« an, nur bei Raid gilt es,


Bitparade 08/2012<br />

<strong>Software</strong><br />

Abbildung 4: Mondo sichert nicht nur auf CDs und DVDs, sondern auch auf Bandlaufwerke,<br />

auf andere Festplatten (auch externe Datenträger), USB-Sticks und<br />

auf Netzwerk-Shares (Samba und NFS).<br />

Abbildung 5: Mindi <strong>Linux</strong> erstellt ein bootfähiges Image, das Mondo benötigt.<br />

Nach dem Start von dem Rescue-Medium stellt das Tool das System wahlweise<br />

mit oder ohne Interaktion wieder her.<br />

www.linux-magazin.de<br />

59<br />

von Hand nachzuarbeiten [11]. Mondo-<br />

Rescue-Backups wandeln Anwender<br />

problemlos in virtuelle Maschinen um.<br />

Dazu starten sie das Bootmedium und<br />

stellen das gesicherte System innerhalb<br />

der VM wieder her. Dass Mondo in manchen<br />

Punkten bereits etwas angestaubt<br />

ist, verrät nicht nur der Einsatz von Lilo.<br />

Mit GUID Partition Tables kann dieser<br />

Testkandidat nicht umgehen.<br />

E Storix<br />

Das kommerzielle Backup- und Cloning-<br />

Tool verfolgt einen ähnlichen Ansatz wie<br />

Mondo Rescue. Anwender installieren<br />

Storix System Backup Administrator – so<br />

der volle Name – auf dem System, das<br />

sie klonen möchten. Drei verschiedene<br />

Ausgaben hat der Hersteller für <strong>Linux</strong> (32<br />

und 64 Bit), AIX und Solaris im Angebot.<br />

Die Preise für die Workstation Edition<br />

beginnen bei rund 500 US-Dollar für die<br />

<strong>Linux</strong>-Variante und steigern sich bis auf<br />

ADMIN<br />

Netzwerk & Security<br />

Online-Archiv<br />

Rund 2.000 Seiten Artikel,<br />

Studien und Workshops aus<br />

fünf Jahren Technical Review<br />

+<br />

nur<br />

4,-e*<br />

im Monat<br />

Onlinezugriff auf alle<br />

Heftartikel aus dem<br />

ADMIN-<strong>Magazin</strong><br />

der Jahrgänge<br />

2009 bis 2011!<br />

Volltextsuche<br />

Praxisrelevante Themen<br />

für alle IT-Administratoren<br />

* Angebot gültig nur<br />

für Abonnenten eines<br />

Print- oder vollen<br />

digitalen ADMIN Abos<br />

Bestellen Sie unter: www.admin-magazin.de/archiv


<strong>Software</strong><br />

www.linux-magazin.de Bitparade 08/2012<br />

60<br />

Abbildung 6: Storix System Backup Administrator bietet eine grafische Benutzeroberfläche, wenn auch<br />

in etwas altbackenem Look. Alle hier gelisteten Menüs finden Anwender auch im Webinterface, das über<br />

»http://localhost:8080« erreichbar ist.<br />

riert der Nutzer im Menü »Configure«<br />

zunächst die »System Backup Disks«<br />

und entscheidet sich danach für einen<br />

»Backup Job«. Als Backuptyp wählt<br />

er »System Backup«. Die Option »Run<br />

Backup Job« aus dem Menü »Actions«<br />

startet den Vorgang. Wählt der Nutzer<br />

hingegen ein »Filesystem Backup« auf<br />

ein Netz- oder ein Bandlaufwerk, erstellt<br />

er anschließend unter »Utilities«<br />

ein Bootmedium. Damit funktioniert die<br />

Wiederherstellung ganz ähnlich wie bei<br />

Mondo Rescue.<br />

Auch Storix System Backup Administrator<br />

kann über die gleichen Umwege<br />

wie Mondo Rescue einen Klon in eine<br />

virtuelle Maschine umwandeln. Anwender<br />

booten die VM mit dem Wiederherstellungs-Bootmedium,<br />

greifen damit auf<br />

das Backup zu und stellen das System<br />

innerhalb der virtuellen Maschine wieder<br />

her. Zusätzlich bietet das Tool an, Dateisysteme<br />

beim Restore zu verändern, also<br />

den Typ zu wechseln oder Partitionsgrößen<br />

anzupassen. Der vierte Testkandidat<br />

unterstützt auch EFI-Systeme und GUID<br />

Partitionstabellen.<br />

Ein Alleinstellungsmerkmal hat Storix<br />

System Backup Administrator in diesem<br />

Testfeld zu bieten und macht damit nochmals<br />

deutlich, dass es sich vornehmlich<br />

an Unternehmen richtet: Dank einer integrierten<br />

Benutzerverwaltung können<br />

Admins auch nicht privilegierten Benut-<br />

820 US-Dollar für Solaris Sparc. Für eine<br />

Verschlüsselungs-Lizenz (AES bis 256<br />

Bit) werden die Anwender zusätzlich zur<br />

Kasse gebeten. Sie kostet zwischen 300<br />

und 380 US-Dollar.<br />

Für den Einsatz auf Servern bietet der<br />

Hersteller eine Network Edition, während<br />

die TSM Edition für das IBM-System<br />

Tivoli Storage Manager gedacht ist. Die<br />

Preise dieser beiden Varianten stehen<br />

nicht auf der Webseite; der Hersteller<br />

berechnet sie anhand des konkreten Bedarfs<br />

eines Kunden.<br />

Storix arbeitet mit allen relevanten Dateisystemtypen,<br />

LVMs und Raid-Systemen<br />

zusammen. Möglich machen das die<br />

verschiedenen Klontypen, die das Tool<br />

im Angebot hat: System Backup, Logical<br />

Volume Backup, Filesystem Backup,<br />

Directory Backup oder Partition Backup.<br />

Im Test trat eine 30-Tage-Testversion<br />

(7.2.4.4) an, die Anwender im Downloadbereich<br />

als Tar-Ball finden.<br />

Nach dem Start der Installationsroutine<br />

auf der Konsole entscheidet sich der Benutzer<br />

zunächst zwischen der Workstation-<br />

oder der Netzwerk-Variante. Ist Storix<br />

eingerichtet, startet ein Dienst im Hintergrund,<br />

auf den Nutzer entweder per<br />

Webinterface (»http://localhost:8080«)<br />

oder X11-GUI (Start über »sbadmin«) zugreifen<br />

(siehe Abbildung 6).<br />

Um ein komplettes System mit einer oder<br />

mehreren Platten zu klonen, konfiguzern<br />

die Aufsicht über die regelmäßige<br />

Datensicherung übertragen.<br />

Wie ein Schaf<br />

Alle Kandidaten klonten im Test ordentlich.<br />

Unterschiede offenbarten sich allerdings<br />

bei der Wiederherstellung des<br />

Dualboot-Testsystems – einer Aufgabe,<br />

die Clonezilla nicht immer meisterte. Bei<br />

den Live-CDs hat Ping daher die Nase<br />

vorn, auch wenn das Tool zu oft an eine<br />

Windows-Anwendung erinnert.<br />

Bei den anderen beiden Lösungen sind<br />

Einsatzort und ‐zweck abzuwägen. Storix<br />

System Backup Administrator ist komplex<br />

und zeigt eine steile Lernkurve. Für den<br />

Hausgebrauch erscheint die kommerzielle<br />

Lösung darüber hinaus vollkommen<br />

überdimensioniert. Funktionsumfang<br />

und Preise richten sich eindeutig auf den<br />

Einsatz im Unternehmen, aber auch dort<br />

ist die Anwendung nur dann sinnvoll,<br />

wenn die vielfältigen Konvertierungseigenschaften<br />

gewünscht sind.<br />

Für Heimanwender empfiehlt sich Mondo<br />

Rescue. Es punktet mit Benutzerfreundlichkeit<br />

und ist besonders dann hilfreich,<br />

wenn die Maschine nicht für einige Stunden<br />

abgeschaltet sein kann. Allerdings arbeitet<br />

das Tool auf aktiven Filesystemen.<br />

So bleiben ein gewisses Restmisstrauen<br />

und alle Nachteile, die Anwender beim<br />

Sichern von eingehängten Dateisystemen<br />

in Kauf nehmen. (hej) <br />

n<br />

Infos<br />

[1] Clonezilla: [http:// www. clonezilla. org]<br />

[2] Ping: [http:// ping. windowsdream. com]<br />

[3] Mondo Rescue:<br />

[http:// www. mondorescue. org]<br />

[4] Storix System Backup Administrator:<br />

[http:// www. storix. com]<br />

[5] Clonezilla-FAQ: [http:// drbl. org/ faq/]<br />

[6] Clonezilla-Referenzkarte:<br />

[http:// clonezilla. org/ downloads/ doc/​<br />

clonezilla‐live‐stable‐doc. php]<br />

[7] Partclone: [http:// partclone. org]<br />

[8] Partimage: [http:// www. partimage. org]<br />

[9] Norton Ghost:<br />

[http:// de. norton. com/ ghost]<br />

[10] Mondo unter Ubuntu installieren: [https://​<br />

help. ubuntu. com/ community/ MondoMindi]<br />

[11] Mit Mondo auf ein Raid umziehen:<br />

[http:// www. mondorescue. org/ docs/​<br />

mondorescue‐howto. html# AEN951]


Aus dem Alltag eines Sysadmin: Raspberry Pi<br />

Beerenstark<br />

Einführung 08/2012<br />

Sysadmin<br />

Ob Zufall oder die krude Lieferpraxis des Raspberry-Pi-Produzenten die Ursache ist, dass in diesem <strong>Linux</strong>-<br />

<strong>Magazin</strong> gleich zwei Artikel über den mit Vorschusslorbeeren vollständig bedeckten Einplatinen-Computer zu<br />

finden sind? Egal. Kolumnist Charly jedenfalls ist voll auf Himbeere. Charly Kühnast<br />

www.linux-magazin.de<br />

61<br />

Inhalt<br />

62 Festspeicher löschen<br />

Wer Platten oder SSDs wegwirft oder<br />

ver kauft, muss die Daten gut schreddern.<br />

67 Clientmanagement per ACMP<br />

Die neue Version inventarisiert neben<br />

Windows-PCs auch Arbeitsplatzrechner<br />

mit Mac OS X und <strong>Linux</strong>.<br />

72 Test: Owncloud 4<br />

Owncloud will Anwendern so etwas wie<br />

Dropbox oder Hidrive bieten, aber mit<br />

Open Source und auf dem eigenen Server.<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.<br />

Als Mutterpflanze des Raspberry Pi fungiert<br />

eine britische Stiftung. Im Sinn hatte<br />

sie einen sehr preisgünstigen Einplatinen-<br />

Computer, der an Schulen den Informatikunterricht<br />

praxisorientierter gestaltet<br />

sollte. Den Bedarf an „Raspis“ schätzten<br />

die Erfinder auf eine niedrige vierstellige<br />

Anzahl. Weit gefehlt – der Ansturm ist<br />

ge waltig. Für umgerechnet knapp 40<br />

Euro inklusive Versand erhält man einen<br />

ARM-Minicomputer mit 256 MByte RAM<br />

– wenn er kommt. Auf meinen Raspi<br />

(Abbildung 1) habe ich mehr als drei<br />

Monate gewartet und damit noch Glück<br />

gehabt, denn die Zahl der Vorbestellungen<br />

soll gut sechsstellig sein.<br />

Kein Wunder, denn aus dem Winzgerät<br />

wächst alles, was auch ein PC braucht:<br />

Zwei USB-Ports, einmal Ethernet, Sound,<br />

HDMI, ein Composite-Ausgang für den<br />

Notfall und eine Reihe frei programmierbarer<br />

I/​O-Ports für<br />

Hardware-Basteleien,<br />

wie ich sie vom Arduino<br />

kenne. Als Massenspeicher<br />

dient eine<br />

SDHC-Karte.<br />

Aus Kostengründen<br />

fehlt eine Echtzeituhr,<br />

auch ein Netzteil<br />

liegt dem Raspi nicht<br />

bei. Bevor man eines<br />

erwirbt, lohnt es, im<br />

Bestand ausgedienter<br />

Handy-Netzteile zu<br />

kramen: Ist eins mit<br />

5-Volt-Micro-USB-Anschluss<br />

dabei, das<br />

rund 1 Ampere liefert,<br />

taugt es für den<br />

Raspberry Pi. Später<br />

soll eine weitere Raspberry-Version ohne<br />

USB und Ethernet für weniger als 30 Euro<br />

rauskommen.<br />

Auf meinem Raspi läuft jede Distribution,<br />

die sich für die ARMv6-Architektur kompilieren<br />

lässt. Fertige Images für Debian<br />

6 und Arch <strong>Linux</strong> gibt es unter [1], eines<br />

mit Fedora ist angekündigt. Das Image ist<br />

per »dd« schnell auf eine 2 GByte große<br />

SDHC-Karte geschrieben, die in der Fotoequipment-Grabbelkiste<br />

eigentlich dem<br />

Ruhestand entgegendämmerte.<br />

Auf den ARM nehmen<br />

Im Betrieb benimmt sich der Raspi exakt<br />

so, wie ich es von einem 700 MHz<br />

schnellen PC erwarten würde: Kompilieren<br />

macht keinen Spaß, aber die Arbeit<br />

auf der Kommandozeile geht gut von der<br />

Hand. Einfache Serverdienste laufen ausreichend<br />

flott, wenn sie in die 256 MByte<br />

RAM passen. Der Kernel 3.1.9 des Debian-Image<br />

unterstützt leider kein IPv6 –<br />

Abbildung 1: Klein, günstig und sehr begehrt: Der Raspberry Pi mit ARM-<br />

Controller und viel Peripherie.<br />

vermutlich schlicht ein Versehen, das die<br />

Entwickler hoffentlich bald korrigieren.<br />

Sogar eine grafische Oberfläche könnte<br />

ich starten, denn das Debian-Image beheimatet<br />

auch ein LXDE.<br />

Meine Pläne gehen aber eher dahin, die<br />

Bastelprojekte auf den Raspi zu bringen,<br />

für die ich momentan andere Server missbrauche.<br />

So liest gerade die Firewall im<br />

Ab stellraum den Stromzähler aus, und<br />

der VDR im Wohnzimmer poolt Daten aus<br />

meiner Wetterstation – alles Aufgaben<br />

wie geschaffen für den Raspberry Pi. Sie<br />

verlangen wenig Performance und der<br />

Stromverbrauch des Raspi fällt mit unter<br />

5 Watt nicht weiter ins Gewicht. Die pure<br />

Vernunft muss aber noch warten. Es<br />

macht mir viel zu viel Spaß, mit dem<br />

Raspi herumzuspielen. (jk) n<br />

Infos<br />

[1] Raspberry Pi:<br />

[http:// www. raspberrypi. org/ downloads]


Sysadmin<br />

www.linux-magazin.de Sicherer löschen 08/2012<br />

62<br />

Festplatten mit <strong>Linux</strong>-Tools sicher löschen<br />

Weg damit!<br />

Angesichts hoher Festplattenpreise sind gebrauchte Disks ein Renner bei Ebay. Aber der Wert der unbedacht<br />

darauf hinterlassenen Daten ist oft viel höher als der Kaufpreis. Wer seine Platte nur formatiert, bevor er sie<br />

entsorgt, wähnt sich in trügerischer Sicherheit. Hans-Peter Merkel, Markus Feilner<br />

© Achim Prill, 123RF<br />

Wer eine alte Festplatte sicher entsorgen<br />

und vorher die Daten darauf endgültig<br />

löschen will, sollte gängige Anweisungen<br />

von Behörden oder Militär konsultieren.<br />

Doch beim Studium der Dokumente aus<br />

US-Institutionen erwacht auch im geduldigsten<br />

Admin schnell das Verlangen,<br />

zum Baumarkt zu fahren und dort nach<br />

einem Schweißbrenner oder einem extra<br />

starken Magneten zu fragen und seine<br />

Datenträger anschließend mit derlei destruktiver<br />

Hardware zu verwöhnen. Hohe<br />

Temperaturen und starke Magnetfelder<br />

sind Experten zufolge das einzige Mittel,<br />

DELUG-DVD<br />

Auf der DVD dieser Ausgabe<br />

DELUG-DVD<br />

finden Sie das Slack-Tool Bmap als statisch<br />

kompilierte Binärdatei, das EWF-Image eines<br />

USB-Sticks zum Testen sowie die DBAN-Distribution<br />

zum Wipen und sicheren Löschen von<br />

Festplatten als ISO-Image.<br />

um innerhalb kurzer Zeit Daten auf Festplatten<br />

zuverlässig zu löschen.<br />

Oder 7- bis 35-mal<br />

überschreiben<br />

Die Anweisungen legen dem sicherheitsbewussten<br />

Anwender nämlich nahe,<br />

seine Festplatten mehrfach zu überschreiben,<br />

die Empfehlungen von Gutman [1]<br />

oder des US-Militärs (Department of<br />

Defense, DoD 5220.22-M) sprechen von<br />

sage und schreibe sieben- bis 35-fachem<br />

Typ<br />

Gesamtzahl<br />

Dateien<br />

Anzahl Festplatten mit<br />

Dateien dieses Typs<br />

Überschreiben mit unterschiedlichen<br />

Mustern als einzig sicherer Lösung.<br />

Wer schon einmal eine 2-TByte-Festplatte<br />

gewipet hat, weiß, dass so ein Vorgehen<br />

dauert. Doch der Aufwand lohnt, behaupten<br />

Studien, die wahllos entsorgte Festplatten<br />

unter die Lupe nahmen und dabei<br />

Erschreckendes zu Tage gefördert haben<br />

(Tabelle 1). Dieser Artikel zeigt, wie viele<br />

Daten sich von vermeintlich gelöschten<br />

Datenträgern problemlos wiederherstellen<br />

lassen, und gibt Admins Tipps und<br />

Werkzeuge an die Hand, die ihre Festplatten<br />

gezielt und sicher löschen.<br />

Aus zweiter Hand<br />

Word 675 23 183<br />

Outlook 20 6 12<br />

Powerpoint 566 14 196<br />

Excel 274 18 67<br />

Legendär ist in diesem Zusammenhang<br />

die Studie [2], die der heutige kalifornische<br />

Navy-Professor Simson Garfinkel<br />

[3] über die Entsorgungspraktiken von<br />

PC-Besitzern erstellte. In einem von ihm<br />

durchgeführten Experiment hat sich der<br />

Experte 158 Festplatten aus verschiedenen<br />

Secondhand-Quellen besorgt. Einige<br />

Disks, teilweise über Reseller bezogen,<br />

hatten die Vorbesitzer offensichtlich vorwiegend<br />

im Small-Business-Bereich eingesetzt.<br />

Der weitaus größte Teil stammte<br />

aber aus Ebay-Versteigerungen direkt von<br />

privaten Anwendern.<br />

Von den Platten fertigte Garfinkel forensische<br />

Abbilder, die er mit simplen<br />

<strong>Linux</strong>-Bordmitteln wie den Kommandos<br />

Tabelle 1: Wiederherstellbare Dateien auf 158 gebrauchten Festplatten<br />

Maximale Anzahl wiederherstellbarer<br />

Dateien pro Platte<br />

© Simson Garfinkel, Computer.org


Abbildung 1: Fast immer findet Bulk Extractor allerlei Daten auf einer vermeintlich<br />

gelöschten Festplatte.<br />

»strings« oder »grep« auswertete. Mit erschreckendem<br />

Erfolg: Lediglich 9 Prozent<br />

der Festplatten befanden sich in einem<br />

Zustand, der keine Datenrekonstruktion<br />

mit <strong>Software</strong>tools ermöglichte. Auf 64<br />

Prozent der Platten war entweder noch<br />

ein intaktes Dateisystem vorhanden, das<br />

sich direkt mounten ließ, oder die Vorbesitzer<br />

hatten die Platten nur formatiert,<br />

was es erlaubte, sie mit wenigen<br />

forensischen Kniffen wieder komplett zu<br />

rekonstruieren.<br />

MBR löschen reicht nicht<br />

Die Anleitung im Kasten „Übung mit<br />

USB-Stick“ zeigt, dass auch der verbreitete<br />

Mythos, es reiche, die Partitionstabelle<br />

oder den ganzen<br />

MBR zu zerstören,<br />

schlichtweg falsch ist.<br />

Die richtigen Tools<br />

stellen alle Daten problemlos<br />

wieder her.<br />

Wer das selbst ausprobieren<br />

will, findet<br />

auf der DELUG-DVD<br />

das zum Testen geeignete<br />

Image eines USB-<br />

Sticks.<br />

Garfinkel stellte außerdem<br />

fest, dass der<br />

Großteil der lesbaren<br />

Daten aus den üblichen<br />

Office-Anwendungen<br />

stammte (Tabelle<br />

1). Auf 42 der<br />

Festplatten fand der Forensiker sogar<br />

Kreditkartennummern (CCNs).<br />

Diese Daten eignen sich besonders gut<br />

für die Rohdatensuche mit geeigneten<br />

regulären Ausdrücken. Das Forensikprogramm<br />

Bulk Extractor [5] erledigt die Arbeit<br />

sehr komfortabel – weil automatisch<br />

– und sucht dabei auch gleich noch alle<br />

IP-, E-Mail- Adressen und Telefonnummern<br />

(Abbildung 1).<br />

Bulk Extractor, Foremost<br />

und Sleuthkit<br />

Als Testmedium für die Fähigkeiten von<br />

Bulk Extractor kann ebenfalls das Image<br />

des USB-Sticks von der DELUG-DVD dienen,<br />

der mit dem für USB-Sticks typischen<br />

FAT 32 formatiert ist. Bulk Extractor<br />

soll nun so viele sensible Informationen<br />

wie möglich wiederherstellen. Dafür<br />

arbeitet er zwar wie andere File Carver,<br />

sucht aber anhand eingebauter regulärer<br />

Ausdrücke nach den erwähnten Kriterien<br />

und listet diese zusammen mit dem<br />

ermittelten Offset auf, eine Gruppierung<br />

nach Häufigkeit in Histogrammdateien<br />

gibt es gratis dazu:<br />

bulk_extractor /dev/loop0 ‐o bulk<br />

Zur Rekonstruktion von Dateien setzt der<br />

interessierte Anwender oder Forensiker<br />

üblicherweise Tools wie Foremost [6]<br />

oder Scalpel [7] ein. Nach dem Bulk-<br />

Extactor-Lauf finden sich in »ccn.txt«<br />

Hinweise zu fünf Kreditkartennummern<br />

(Listing 1).<br />

Da die Offsets sehr nahe beieinander liegen,<br />

ist zu vermuten, es handele sich<br />

um eine einzige Datei. Jetzt liefert »dd«<br />

Auskunft über den Inhalt der ersten 1000<br />

Bytes nach dem ersten Offset (Listing 2).<br />

Diese CCN stammen aus einer öffentlichen<br />

Webseite mit Testnummern gängiger<br />

Anbieter. Doch die Histogrammdateien<br />

»url‐histogram.txt« enthalten oft<br />

auch interessante Informationen über<br />

besuchte Webseiten (Listing 3).<br />

Solange die Dateien unfragmentiert vorliegen,<br />

liefert Bulk Extractor brauchbare<br />

Ergebnisse, die Darstellung von benachbartem<br />

Text wird mit Hilfe von Dd und<br />

passendem Offset zum Kinderspiel, wenn<br />

auch zu einem langen: Bei den derzeit<br />

gängigen Festplattengrößen ist eine War-<br />

Sicherer löschen 08/2012<br />

Sysadmin<br />

www.linux-magazin.de<br />

63<br />

Übung mit USB-Stick<br />

Das Image »stick.E01« (auf der DELUG-DVD)<br />

lässt sich über Xmount [4] als Loopback-Device<br />

mit der (Raw-)Größe 1 GByte mounten:<br />

xmount ‐‐in ewf ‐‐out dd ‐‐cache /tmp/U<br />

stick.ovl stick.E01 /ewf<br />

Dann wird der MBR absichtlich zerstört:<br />

losetup /dev/loop0 /ewf/stick.dd<br />

dd if=/dev/zero of=/dev/loop0 count=1<br />

fdisk ‐lu /dev/loop0<br />

Platte /dev/loop0: 977 MByte, 977534976U<br />

Byte<br />

255 Köpfe, 63 Sektoren/Spur, 118 Zylinder,U<br />

zusammen 1909248 Sektoren<br />

Einheiten = Sektoren von 1 ◊ 512 = 512U<br />

Bytes<br />

Sector size (logical/physical): 512 bytesU<br />

/ 512 bytes<br />

I/O size (minimum/optimal): 512 bytes / U<br />

512 bytes<br />

Disk identifier: 0x00000000<br />

Die Festplatte »/dev/loop0« enthält nach dieser<br />

Operation keine gültige Partitionstabelle<br />

mehr. Anschließend lassen sich forensische<br />

Programme, zum Beispiel das im Artikel näher<br />

erklärte »bulk_extractor«, auf »/dev/loop0«<br />

anwenden.<br />

Rekonstruktion mit Sigfind<br />

Vor dem Hardcore-File-Carving kann der Anwender<br />

auch eine Rekonstruktion der Daten mit<br />

»sigfind« aus dem Sleuthkit versuchen:<br />

sigfind ‐o 510 55AA /dev/loop0<br />

Block size: 512 Offset: 510 Signature:U<br />

55AA<br />

Block: 61 (‐)<br />

Block: 62 (+1)<br />

Block: 63 (+1)<br />

Block: 67 (+4)<br />

Block: 68 (+1)<br />

Block: 69 (+1)<br />

Block: 73 (+4)<br />

Hier deutet die Zeile »Block: 61 (‐)« auf eine<br />

Partition bei Sektor 61 hin, die sich mit Losetup<br />

auf Verdacht mounten lässt:<br />

losetup ‐o $((61*512)) /dev/loop1 U<br />

/dev/loop0<br />

mount /dev/loop1 /mnt<br />

Wenn dieser Befehl ohne Fehlermeldung funktioniert,<br />

dann liegt jetzt unter »/mnt« das komplette<br />

Dateisystem vor – und zwar genau so,<br />

wie der Anwender es vor dem Löschen des MBR<br />

hinterlassen hat.


Sysadmin<br />

www.linux-magazin.de Sicherer löschen 08/2012<br />

64<br />

tezeit von einem kompletten Wochenende<br />

durchaus möglich.<br />

Übersichtlichere Ergebnisse liefert in<br />

vielen Fällen das Forensiktool Foremost,<br />

weil es gleich komplette Dateien rekonstruiert.<br />

Doch Bulk Extractor kümmert<br />

sich dafür auch um den Slack-Bereich<br />

([8], [9]). Noch genauer analysieren<br />

ihn Fsstat aus dem Sleuthkit [10] und<br />

Bmap [11] (Listing 4). Weil die Webseite<br />

des zweiten Tools [12] bis zum Redaktionsschluss<br />

nicht erreichbar war, haben<br />

die Autoren des <strong>Linux</strong>-<strong>Magazin</strong>s Bmap<br />

statisch kompiliert und stellen es auf der<br />

DELUG-DVD zur Verfügung.<br />

Der Ausschuss: Slack<br />

Der so genannte Slack resultiert aus der<br />

Aufteilung eines Dateisystems in Cluster:<br />

Beim Schreiben in eine Datei wird das<br />

Medium aus Listing 4 immer Vielfache<br />

von 4096 Bytes belegen. Ist eine Datei<br />

19 353 Byte groß, belegt sie fünf Cluster.<br />

Während die ersten vier komplett<br />

gefüllt sind, bleiben beim letzten noch<br />

Listing 1: »ccn.txt«<br />

01 # Feature File Version: 1.1<br />

02 2152094 378282246310005 class=CellBody><br />

378282246310005\012<<br />

03 2152294 371449635398431 class=CellBody><br />

371449635398431\012<<br />

04 2152504 378734493671000 class=CellBody><br />

378734493671000\012<<br />

05 2152707 5610591081018250 class=CellBody><br />

5610591081018250\012<<br />

06 2153481 6011000990139424 class=CellBody><br />

6011000990139424\012<<br />

01 378282246310005<br />

02 <br />

03 American Express<br />

04 <br />

05 371449635398431<br />

06 <br />

07 American Express Corporate<br />

<br />

08 <br />

09 378734493671000<br />

10 <br />

11 Australian BankCard<br />

1127 Bytes frei. Ist das Dokument unter<br />

Libre Office mit <strong>Linux</strong> als Betriebssystem<br />

angelegt, finden sich lediglich 0x00<br />

Pattern als Füllinformationen in diesem<br />

Restbereich (Slack).<br />

Ein Windows-XP-Betriebssystem legt allerdings<br />

unter Umständen verräterische<br />

Informationen auch in diesem Bereich<br />

ab. Befinden sich im benachbarten Bereich<br />

des noch im Arbeitspeicher liegenden<br />

OO-Dokuments beispielsweise Bytes<br />

eines gerade geöffneten Mailclients, so<br />

greift das Betriebssystem ohne Rücksicht<br />

auf Verluste in den Arbeitsspeicher<br />

und holt sich ab Beginn des Dokuments<br />

20 480 Bytes, das heißt 1127 Bytes aus<br />

der benachbarten E-Mail, genug Platz für<br />

eine Mail adresse.<br />

Für den Benutzer ist diese Information<br />

zwar komplett unsichtbar, sie verbleibt<br />

aber so lange im Slack-Bereich auf der<br />

Platte, bis die Originaldatei komplett<br />

überschreiben ist. Listing 5 zeigt, wie<br />

sich Datei-Slack mit Bmap auslesen, testweise<br />

beschreiben und verifizieren lässt.<br />

Sicheres Löschen mit Convert<br />

and Copy und Dc3dd<br />

Einfachste Abhilfe schafft der klassische<br />

»dd«-Befehl. Die landläufige Meinung,<br />

der Name des Programms laute „Disc<br />

Dump“ oder „Disc Duplicate“, ist übrigens<br />

falsch. Die Manpage weiß es besser:<br />

„dd ‐ convert and copy a file“ steht da.<br />

Kein d, aber zwei c in der Auflösung?<br />

Eigentlich wäre die passende Abkürzung<br />

„cc“, aber die war schon für einen bekannten<br />

Compiler vergeben.<br />

Listing 2: »dd if=/dev/loop0 skip=2152094 bs=1 count=1000«<br />

12 <br />

13 5610591081018250<br />

14 <br />

15 Diners Club<br />

16 <br />

17 30569309025904<br />

18 <br />

19 Diners Club<br />

20 <br />

21


Abbildung 2: Kurz, schmerzlos und bewährt: Darik’s Boot And Nuke alias<br />

DBAN löscht die ausgewählten Festplatten unwiederbringlich.<br />

Auch zur Erfolgskontrolle bietet sich<br />

ein Dd-Befehl an: »dd if=test.dd | xxd«<br />

sollte dem Anwender keine anderen Muster<br />

mehr ausgeben, als jenes, das er im<br />

vorherigen Befehl eingegeben hatte. Um<br />

die Datenflut auf dem Bildschirm und<br />

das damit verbundene Scrollen zu minimieren,<br />

lässt sich die Suche nach nicht<br />

gelöschten Bytes auch mit Awk und Grep<br />

filtern:<br />

dd if=test.dd | xxd | awk '{print $2,$3,$4,U<br />

$5,$6,$7,$8,$9}' | grep ‐v 0000<br />

<strong>Software</strong>mäßig bleibt so schon nach einmaligem<br />

Wipen nichts mehr übrig. Ein<br />

teures Expertenlabor könnte eventuell<br />

noch Daten wiederherstellen, derartige<br />

Auswertungen stellen aber die absolute<br />

Ausnahme dar, die sich nur finanzkräftige<br />

Angreifer leisten.<br />

Wipe, Shred und Journals<br />

Doch Dd und Dc3dd sind nicht die einzigen<br />

Bordmittel zum Wipen von Speichermedien.<br />

Die Programme »wipe«<br />

und »shred« sind ebenfalls auf gängigen<br />

Distributionen vorinstalliert. Auch sie<br />

ermöglichen das sichere, unwiederbringliche<br />

Löschen von Verzeichnissen und<br />

sogar einzelnen Dateien.<br />

Doch auch hier ist höchste Vorsicht angesagt:<br />

Die meisten modernen Dateisysteme<br />

nutzen Journale. Ausnahmen<br />

sind da FAT und FAT 32 oder Ext 2. Der<br />

Wipe-Vorgang kümmert sich aber nur um<br />

die Datei selbst, nicht<br />

aber um den Inhalt des<br />

Journals. Auch wenn<br />

danach erfolgende<br />

Schreibvorgänge alles<br />

wieder überschreiben,<br />

können Spuren<br />

bleiben, die beispielsweise<br />

Bulk Extractor<br />

ganz leicht findet. Ein<br />

simpler »string« Befehl mit dem Device<br />

als Parameter macht solche Rückstände<br />

jedoch schnell sichtbar.<br />

Alles anders bei SSDs<br />

Hohe Festplattenpreise und die in vielen<br />

Fällen bessere Performance der Solid<br />

State Discs (SSD) machen die elektronischen<br />

Speichermedien schon heute immer<br />

beliebter. Ein Performancetest aus<br />

der Juli-Ausgabe des <strong>Linux</strong>-<strong>Magazin</strong>s<br />

[13] zeigt, dass bei der richtigen Wahl<br />

des Dateisystems die Festplatten nicht<br />

mehr mithalten können.<br />

Doch ein großes Problem bleibt: Michael<br />

Wei und seine Kollegen widmen sich in<br />

einer Studie [14] dem Thema „Sicheres<br />

Löschen von SSDs“ und kommen zu dem<br />

Schluss, dass die traditionellen Löschmechanismen<br />

von Festplatten bei Solid State<br />

Disks nicht mehr greifen. Die eingebaute<br />

Elektronik schreibt nämlich zugunsten einer<br />

längeren Lebensdauer des Speichers<br />

alle Schreibkommandos um und leitet<br />

diese beispielsweise auf bisher weniger<br />

benutzte Sektoren um.<br />

Nur Hdparm nutzt Low-Level-Befehle wie<br />

ATA Secure Erase [15], um mit Kommandos<br />

wie »hdparm ‐‐user‐master u ‐‐security‐erase<br />

Passwort /dev/sdb« sicheres<br />

und gezieltes Löschen zu erreichen. Doch<br />

damit das klappt, muss auch das Bios<br />

mitspielen und es erlauben, ein Security<br />

Password auf der SSD zu setzen – was<br />

aber meist nicht der Fall ist. Dennoch<br />

könnte diese Methode dazu beitragen,<br />

auch auf SSDs kritische Spuren zu beseitigen.<br />

Aber leider unterstützen auch nicht<br />

alle Hersteller von SSDs diese Befehle.<br />

Das Ata-Wiki [15] ist auch dafür erste<br />

Anlaufstelle.<br />

Schnell und kompromisslos<br />

Wer nach einer komfortablen und schnellen<br />

Lösung sucht, um Platten zu wipen,<br />

Listing 3: »url_histogram.txt«<br />

01 # Histogram File Version: 1.1<br />

02 n=6 http://feeds.feedburner.com/<br />

Regexlibcom‐RecentPatterns<br />

03 n=4 http://purl.org/dc/elements/1.1/<br />

04 n=3 http://openoffice.org/2004/office<br />

05 n=3 http://www.w3.org/1999/xlink<br />

06 n=3 http://www.w3.org/2003/g/data‐view#<br />

07 n=2 http://aspadvice.com/lists/SignUp/<br />

list.aspx?l=68&c=16<br />

08 n=2 http://aspalliance.com/<br />

09 n=2 http://de.wikipedia.org/wiki/<br />

Liste_der_Postleitbereiche_Deutschland<br />

10 n=2 http://de.wikipedia.org/wiki/<br />

Postleitzahl_%28Deutschland%29<br />

Listing 4: »fsstat ‐o 61 /dev/loop0«<br />

01 FILE SYSTEM INFORMATION<br />

02 ‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐<br />

03 File System Type: FAT32<br />

04 <br />

05 OEM Name: MSDOS5.0<br />

06 Volume ID: 0x948335be<br />

07 Volume Label (Boot Sector): NO NAME<br />

08 Volume Label (Root Directory): HPMSTICK<br />

09 File System Type Label: FAT32<br />

10 Next Free Sector (FS Info): 5256<br />

11 Free Sector Count (FS Info): 1903928<br />

12 <br />

13 Sectors before file system: 61<br />

14 <br />

15 CONTENT INFORMATION<br />

16 ‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐<br />

17 Sector Size: 512<br />

18 Cluster Size: 4096<br />

19 Total Cluster Range: 2 ‐ 238179<br />

Sicherer löschen 08/2012<br />

Sysadmin<br />

www.linux-magazin.de<br />

65<br />

Listing 5: »bmap«-Beispiel<br />

01 # bmap ‐‐mode slack ccn.odt<br />

02 getting from block 661<br />

03 file size was: 19353<br />

04 slack size: 103<br />

05 block size: 512<br />

06 <br />

07 # echo "Hier könnte etwas vertrauliches<br />

gespeichert sein" | bmap ‐‐mode putslack<br />

ccn.odt<br />

08 stuffing block 661<br />

09 file size was: 19353<br />

10 slack size: 103<br />

11 block size: 512<br />

12 <br />

13 # bmap ‐‐mode slack ccn.odt<br />

14 getting from block 661<br />

15 file size was: 19353<br />

16 slack size: 103<br />

17 block size: 512<br />

18 Hier könnte etwas vertrauliches gespeichert<br />

sein<br />

19 <br />

20 # bmap ‐‐mode wipeslack ccn.odt<br />

21 stuffing block 661<br />

22 file size was: 19353<br />

23 slack size: 103<br />

24 block size: 512


Sysadmin<br />

www.linux-magazin.de Sicherer löschen 08/2012<br />

66<br />

Abbildung 3: Einfache Bedienung und viele Funktionen bringt das Universal-Löschtool Bleachbit, und zwar<br />

sowohl für <strong>Linux</strong> als auch auf Windows.<br />

wird Darik’s Boot And Nuke [16] schätzen.<br />

Hinter dem Kürzel DBAN steckt eine<br />

<strong>Linux</strong>-Live-CD (als ISO-Image auf der<br />

DELUG-DVD, Abbildung 2).<br />

Doch Vorsicht ist geboten: Wer seinen PC<br />

von dieser CD bootet und im Bootprompt<br />

»quick« eingibt, löscht Festplatten ohne<br />

Rückfrage. Erschwerend kommt hinzu,<br />

dass DBAN alle erkannten Drives automatisch<br />

einbindet. Anstelle von »quick«<br />

kann der Anwender hier die Gutman-<br />

[1] oder die vom amerikanischen Militär<br />

(DoD) empfohlene eingangs erwähnte<br />

Methode auswählen.<br />

Bleachbit<br />

Paranoide Anwender hören aber nicht<br />

beim Löschen der Festplatten auf, sondern<br />

benutzen auch noch Tools, die die<br />

vermeintlich flüchtigen Daten des Arbeitsspeichers<br />

entfernen, die mitunter<br />

ebenfalls sensible Daten enthalten. Um<br />

diesen Angriffsvektor auszunutzen, muss<br />

ein Angreifer aber erst einmal Zugriff auf<br />

ein laufendes System bekommen. Nichtsdestotrotz<br />

löscht der sicherheitsbewusste<br />

Admin mit dem Programm Bleachbit<br />

(Abbildung 3, [17]) auch die Daten in<br />

seinem RAM zuverlässig (Kasten „Auf<br />

der Flucht mit Bleachbit“).<br />

Installieren lässt sich Bleachbit aus den<br />

gängigen Repositories, in den Menüs<br />

der Desktops landet es meist unter dem<br />

Eintrag »Systemwerkzeuge«. Aus einer<br />

Vielzahl von Möglichkeiten kann der Anwender<br />

dann auswählen, welche seiner<br />

vielen Spuren er entfernen will, die Funktionen<br />

reichen von Cookies über Festplatten-Wipes<br />

bis zur Browser-History.<br />

Fazit<br />

Schon das Bordpersonal eines normalen<br />

<strong>Linux</strong>-Systems bietet genügend Möglichkeiten,<br />

Datenspeicher sicher zu löschen,<br />

bevor sie der Admin in die Tonne tritt<br />

oder meistbietend versteigert. Auch die<br />

Erfolgskontrolle lässt sich mit Standardtools<br />

der Bash automatisieren. Die stundenlange<br />

Wartezeit verliert damit einigen<br />

Schrecken. Wer sich nicht an die Kommandos<br />

wagt oder einfach lieber ein GUI<br />

bedient, greift zu DBAN. <br />

n<br />

Auf der Flucht mit Bleachbit<br />

Flüchtige Daten sind auch dem Forensiker ein<br />

Begriff. Als „volatile Data“ versteht er Daten,<br />

die nach dem Abschalten des Systems nicht<br />

mehr vorhanden sind und deshalb zuvor gespeichert<br />

werden sollten. Darunter fallen beispielsweise<br />

die Erfassung des Arbeitsspeichers<br />

oder aktive Netzwerkverbindungen.<br />

Bleachbit macht genau das Gegenteil. Es liest<br />

und löscht auf Wunsch diese Spuren, beispielsweise<br />

aus dem Arbeitsspeicher. Das Honeynet-<br />

Infos<br />

[1] Gutmann-Methode zum sicheren Löschen<br />

von Festplatten: [http:// en. wikipedia. org/​<br />

wiki/ Gutmann_method]<br />

[2] Simson Garfinkel, „Remembrance of<br />

Data Passed: A Study of Disk Sanitization<br />

Practices“: [http:// www. computer. org/​<br />

csdl/ mags/ sp/ 2003/ 01/ j1017‐abs. html]<br />

[3] Simson Garfinkel: [http:// simson. net]<br />

[4] Hans-Peter Merkel, Markus Feilner, „Kreuz<br />

und Quer“: <strong>Linux</strong>-<strong>Magazin</strong> 10/​09, S. 90<br />

[5] Bulk Extractor: [https:// github. com/​<br />

simsong/ bulk_extractor/ wiki]<br />

[6] Foremost:<br />

[http:// foremost. sourceforge. net]<br />

[7] Scalpel: [http:// www.​<br />

digitalforensicssolutions. com/ Scalpel/]<br />

[8] File-Slack: [http:// de. wikipedia. org/ wiki/​<br />

Slack_%28Dateisystem%29]<br />

[9] Hans-Peter Merkel, Markus Feilner,<br />

„Fenster-Kit“: <strong>Linux</strong>-<strong>Magazin</strong> 06/​08, S. 38<br />

[http:// www. linux‐magazin. de/ Heft‐Abo/​<br />

Ausgaben/ 2008/ 06/ Fenster‐Kit]<br />

[10] Hans-Peter Merkel, Markus Feilner,<br />

„Wider das Vergessen“: <strong>Linux</strong>-<strong>Magazin</strong><br />

03/​11, S. 90<br />

[11] <strong>Linux</strong> Security über Bmap:<br />

[http:// www. linuxsecurity. com/ content/​<br />

view/ 117638/ 49/]<br />

[12] Bmap: [ftp:// ftp. scyld. com/ pub/<br />

forensic_computing/ bmap/]<br />

[13] Michael Kromer, „Formel Storage“:<br />

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

[14] Michael Wei, Laura Grupp, Frederick Spada<br />

und Steven Swanson, „Reliably Erasing<br />

Data from Flash-Based Solid State Drives“:<br />

[http:// cseweb. ucsd. edu/ users/ m3wei/]<br />

[15] ATA Secure Erase: [https:// ata. wiki. kernel.​<br />

org/ index. php/ ATA_Secure_Erase]<br />

[16] DBAN: [http:// www. dban. org]<br />

[17] Bleachbit:<br />

[http:// bleachbit. sourceforge. net]<br />

[18] Übungs-VM für Bleachbit:<br />

[http:// old. honeynet. org/ scans/ scan29/]<br />

Projekt stellt in einer seiner bekann<strong>testen</strong> Aktionen<br />

ein VMware-Image bereit [18], in dem<br />

sich unter anderem die flüchtigen Daten eines<br />

Livesystems sammeln lassen.<br />

Im Übungsbeispiel erstellt Bleachbit aus dem<br />

Arbeitsspeicher eine Wordlist, die der Anwender<br />

anschließend via Netcat (Nc) dem Passwortcracker<br />

John übergibt. Wer das <strong>testen</strong> will: Das<br />

Passwort »h0cusp0cus« kommt im Arbeitsspeicher<br />

des Systems gleich siebenmal vor.


Inventarisierung und <strong>Software</strong>verteilung mit ACMP<br />

Zeit für eine Inventur<br />

ACMP 08/2012<br />

Sysadmin<br />

Es gibt schönere Aufgaben, als Ausstattungslisten des eigenen Rechnerpools zu pflegen. Eine zentrale Inventarisierungssoftware<br />

wie ACMP automatisiert das stupide Erfassen von Windows-, <strong>Linux</strong>- und Mac-Computern<br />

und deren <strong>Software</strong>. Konstantin Agouros<br />

www.linux-magazin.de<br />

67<br />

Die ACMP-Suite von Aagon Consulting<br />

[1] aus dem nordrhein-westfälischen<br />

Soest besteht aus einer Inventarisierungskomponente,<br />

einer <strong>Software</strong>verteilung,<br />

einem Helpdesk-Modul, Lizenzmanagement<br />

und dem Client Command Center,<br />

mit dem der Systemverantwortliche Befehle<br />

auf ausgewählten oder allen Clients<br />

ausführt. Außerdem überwacht ACMP Sicherheitskomponenten<br />

wie Virenscanner<br />

und Patchstände.<br />

Stammesgeschichtlich siedelt ACMP ganz<br />

klar im Windows-Dorf: Bis vor Kurzem<br />

erfasste es nur Rechner mit Microsoft-<br />

Betriebssystemen, die Suite selbst ließ<br />

und lässt sich nur auf einem Windows-<br />

Server installieren. Die neueste „Pro“-<br />

Version 3.8.10 berücksichtigt jedoch auch<br />

<strong>Linux</strong>- und OS-X-Clients, die sie mittels<br />

SSH ansteuert [2]. Dies – und auch weil<br />

Windows-PCs noch recht verbreitet sind<br />

– lässt Raum für die Betrachtung des<br />

Produkts. Als <strong>Linux</strong>-Clients unterstützt<br />

ACMP offiziell Debian ab 6.0.3, Ubuntu<br />

ab 12.04, Open Suse ab 11.4 und Fedora<br />

ab Version 16. Bei Apple-Rechnern markiert<br />

OS X Leopard die Einstiegshürde.<br />

Scannen ohne Agenten<br />

Neu in der Version 3.8.10 ist der Agentless<br />

Scanner, der andere Datenquellen anzapft,<br />

etwa das Active Directory. Zu dieser Komponente<br />

gehört auch der XML Importer,<br />

der als Dienst periodisch in Netzwerkfreigaben<br />

nach neuen XML-Dateien sucht,<br />

die Inventory-Daten enthalten, und sie in<br />

ACMP importiert. Für <strong>Linux</strong>- und OS-X-<br />

Clients gibt’s ein Bündel Python-Skripte,<br />

die solche XML-Files erzeugen und auf einer<br />

der CIFS-Freigaben ablegen. Im Sinne<br />

einer zentralen Administration bietet der<br />

Server im Client Command Center die<br />

Möglichkeit, Shellkommandos zu hinterlegen,<br />

die per SSH die <strong>Linux</strong>- oder OS-X-<br />

Clients ausführen.<br />

Der mengengestaffelte Preis des proprietären<br />

Produkts bemisst sich pro Jahr<br />

und Clients, egal ob diese mit <strong>Linux</strong>,<br />

Mac OS oder Windows laufen. Bei 100<br />

Clients kostet die Grundlizenz rund 40<br />

Euro pro Client und Jahr. Dazu kommen<br />

Lizenzgebühren für Zusatzfunktionen<br />

wie <strong>Software</strong>-Erfassung oder Helpdesk.<br />

Server und Clients<br />

installieren<br />

Die neueste Demoversion müssen Interessierte<br />

direkt beim Hersteller [1] anfordern,<br />

das auf der Homepage hinterlegte<br />

Zip-File beinhaltet nämlich nur die nicht<br />

updatefähige Version 3.8.0, die noch<br />

keine <strong>Linux</strong>-Unterstützung besitzt (Stand<br />

Mitte Juni 2012).<br />

Die Suite benötigt einen MS-SQL-Server<br />

als Datenbank. Eine bestehende Installa-<br />

tion eignet sich dafür genauso wie eine<br />

neu aufgesetzte Ex press-Version. Passend<br />

zur ACMP-Serversoftware gibt es eine<br />

Konsole, um die <strong>Software</strong> zu steuern. Die<br />

darf der Admin auch auf einem anderen<br />

Rechner im Netz installieren, ebenso einen<br />

Agenten auf den verwalteten Windows-Clients.<br />

Den Agent less Scan ner<br />

muss er nach Updates manuell installieren.<br />

Er benötigt die Windows-Komponente<br />

Message Queueing.<br />

Auf allen einzubindenden <strong>Linux</strong>-Systemen<br />

müssen Python 2.6 oder höher und<br />

folgende Tools installiert sein: »hdparm«,<br />

»dmidecode«, »lsb_release« und »aptitude«<br />

für Debian und Derivate. Die Dokumentation<br />

des Produkts verschweigt<br />

tückischerweise, dass »unzip« ebenso obligatorisch<br />

ist. Im Test anlässlich dieses<br />

Artikels mit Ubuntu Server 12.04 führte<br />

das Fehlen des Entpackers anfänglich zu<br />

mysteriösen Effekten.<br />

Sind Server und Clients mit der nötigen<br />

<strong>Software</strong> bestückt, darf der Admin begin-<br />

© Marcin Balcerzak, 123RF


Sysadmin<br />

www.linux-magazin.de ACMP 08/2012<br />

68<br />

Abbildung 1: Die Konsole von ACMP unmittelbar nach dem Einloggen zeigt sich<br />

gut strukturiert und bei aller Detaildichte übersichtlich.<br />

Abbildung 2: Der Dialog dient zur Datenerfassung von <strong>Linux</strong>- und Mac-OS-<br />

Clients. Hier will ACMP beispielsweise die Benutzerkennung wissen.<br />

nen <strong>Linux</strong>-Clients anzubinden. Im Test<br />

mussten zwei virtuelle Maschinen mit<br />

Ubuntu Server 12.04 und Fedora 16 als<br />

Testkandidaten herhalten.<br />

Erfassen von <strong>Linux</strong>-Clients<br />

Abbildung 1 zeigt die Konsole von ACMP<br />

nach dem Einloggen. Im Menü »Client<br />

Commands | Erweiterte Inventarisierung«<br />

findet sich der Eintrag »<strong>Linux</strong> und Mac OS<br />

Inventarisierung«. Ein Doppelklick darauf<br />

(oder Rechtsklick und »Execute«)<br />

führt zum nächsten Dialog mit weiteren<br />

Client-Kommandos.<br />

Ein Klick auf »Next« bringt den Admin<br />

zur Wahl des Clients, was ein wenig verwirrend<br />

ist, da er ja erst einen oder mehrere<br />

Clients erfassen will und nicht mit<br />

einem vorhandenen arbeiten. Er wählt<br />

hier den Client, der die SSH-Logins ausführt,<br />

um andere Clients zu erfassen, also<br />

den ACMP-Server oder den Rechner, auf<br />

dem die Konsole läuft.<br />

Danach erscheint der Dialog in Abbildung<br />

2. Hier gibt der Admin die Anmelde-<br />

Informationen für die CIFS-Freigabe an,<br />

die Benutzerkennung, mit der sich das<br />

Tool einloggt (Root oder ein Benutzer, der<br />

»sudo« ausführen darf), sowie entweder<br />

einen IP-Bereich, den ACMP durchprobieren<br />

soll, oder eine Liste mit einzelnen<br />

IP-Adressen. Nun loggt sich das Skript<br />

auf allen Systemen ein, zu denen es Zugang<br />

erlangt, kopiert das Archiv mit den<br />

Python-Skripten hinüber und führt das<br />

Registrierskript aus. Ein Parameter weist<br />

es dabei an, das erzeugte XML-File auf<br />

dem CIFS-Share abzulegen.<br />

Das alles passiert asynchron, da das<br />

Skript eine Weile auf den Systemen beschäftigt<br />

ist, um alle Informationen einzusammeln.<br />

Daher meldet sich das GUI<br />

zügig zurück, doch die Systeme tauchen<br />

noch nicht in der Datenbank auf. Der<br />

Administrator kann aber kontrollieren,<br />

ob die erzeugten Daten sich bereits auf<br />

dem Share befinden.<br />

Freigaben konfigurieren<br />

Bevor der Import gelingt, muss der Admin<br />

den Agentless Scanner konfigurieren. Für<br />

den XML Importer sind die CIFS-Freigabe<br />

(der UNC-Pfad in der Form »\\Servername\Freigabe«),<br />

die Domain (im LDAP-<br />

FQDN-Format »dc=Example,dc=com«),<br />

Username und Passwort sowie das Intervall<br />

in Sekunden nötig, mit dem ACMP<br />

in diesem Share nach neuen Daten suchen<br />

soll. Es lassen sich zudem mehrere<br />

Share s angeben.<br />

Wenn der XML-Importer dann auf das<br />

Share zugreift, liest ACMP die Daten aus<br />

und löscht die Dateien. Im Gegenzug<br />

taucht das System in der Datenbank auf.<br />

Das Whitepaper zur Konfiguration des<br />

Agentless Scanner [1] beinhaltet eine<br />

Übersicht der Kommandozeilen-Optionen<br />

und empfiehlt, das Skript regelmäßig per<br />

Cronjob laufen zu lassen. Das wiederholte<br />

Starten des Skripts aktualisiert die<br />

Datenbankeinträge, erzeugt aber zum<br />

Glück keine Dubletten.<br />

Die Inventarisierung erfasst die Festplatten<br />

jedes Clients, das CPU-Modell, Bios-<br />

Informationen (sofern »dmidecode« sie<br />

auslesen kann), Speicher und weitere<br />

Hardware (Abbildung 3). Dazu kommen<br />

Abbildung 3: Lohn der Mühe: Auch ohne Agent auf<br />

dem Client trägt ACMP alle wichtigen Informationen<br />

über die Hosts im Netz zusammen.


ACMP 08/2012<br />

Sysadmin<br />

www.linux-magazin.de<br />

69<br />

Abbildung 4: Per Drag & Drop schiebt der Administrator das »Execute Shellscript«-Kommando in<br />

den weißen Kommandobereich.<br />

Abbildung 5: Spartanisch, aber seiner Aufgabe gewachsen: Der<br />

Editor für Shellskripte im Client Command Center.<br />

Netzwerk-IP, MAC-Adresse(n) und Netzmaske.<br />

Installierte <strong>Software</strong> erforscht<br />

ACMP mit »rpm« beziehungsweise<br />

»dpkg«, was auf Debian-Systemen offenbar<br />

etwas länger dauert als auf RPMbasierten.<br />

Außerhalb des Paketmechanismus<br />

installierte <strong>Software</strong> bleibt damit<br />

naturgemäß unberücksichtigt.<br />

Kommandos ausführen<br />

Das offensichtlich primär für Windows-<br />

Clients entwickelte Client Command Center<br />

unterstützt den Admin beim Anlegen,<br />

Testen und Ausrollen von Skripten. Dabei<br />

hat der Hersteller auch an eine Skript-<br />

Versionierung gedacht. Ein Kommando<br />

legt der Admin im Client Command Center<br />

mit »Create« an. Daraufhin erscheint<br />

ein Fenster wie in Abbildung 4.<br />

Per Drag & Drop schiebt der Admin ein<br />

SSH-Kommando, im Beispiel »Execute<br />

Shellscript«, in den weißen Kommandobereich.<br />

Dann editiert er es im Sinne<br />

eines Shellskripts (Abbildung 5), das<br />

ACMP später ausführt. Die Standardausgabe<br />

und den Exitcode des Skripts bekommt<br />

ACMP zurückgeliefert, sie lassen<br />

sich hier weiterverarbeiten.<br />

Zur Skript-Definition gehören auch Benutzerdaten<br />

für den Client. Hier liegt der<br />

Security-Hase ein bisschen im Pfeffer:<br />

ACMP sieht vor, dass die Logins aller<br />

Hosts gleich sind. Es ist zwar möglich,<br />

mit einer SSH-Schlüsseldatei zu arbeiten,<br />

jedoch empfiehlt es sich, auf den<br />

verwalteten Systemen einen Benutzer anzulegen,<br />

der mittels Sudo administrative<br />

Tätigkeiten ausführen darf.<br />

»Release« stellt das Client-Kommando in<br />

dieser Version verwendbar bereit, jede<br />

Änderung erfordert eine neue Version des<br />

Kommandos. Als praktisch erweist sich<br />

die Möglichkeit, Client-Kommandos auf<br />

Gruppen von Rechnern anzuwenden.<br />

Die <strong>Software</strong>verteilung<br />

Eine <strong>Software</strong>-Installation ist ein spezielles<br />

Client-Kommando, das die Installationsroutine<br />

in einen Wrapper packt. Ein<br />

GUI-Wizard erleichtert den Vorgang: Der<br />

Admin klickt im Client Command Center<br />

auf »Create«, woraufhin in der Leiste über<br />

dem Navigationsbaum ein <strong>Linux</strong>-Pinguin<br />

erscheint. Dieser führt zu dem genannten<br />

<strong>Software</strong> Packet Wizard.<br />

Der Admin wählt nun zwischen RPMund<br />

Deb-Paketen oder benennt ein eigenes<br />

Installskript. Für die Paketinstalltion<br />

zieht ACMP das »rpm«- beziehungsweise<br />

»dpkg«-Kommando heran, das Abhängigkeiten<br />

allerdings nicht automatisch<br />

auflöst. Aagon prüft derzeit, wie eine<br />

spätere Version das Problem mit »yum«<br />

oder »apt‐get« lösen könnte.<br />

Der Administrator lädt die für die Clients<br />

vorgesehene <strong>Software</strong> auf den Aagon-<br />

Server hoch oder spezifiziert eine Download-URL.<br />

Bei den Parametern lässt sich<br />

auch hier nur ein einziges Benutzerkonto<br />

angeben. Das macht eine einheitliche<br />

Kennung mit identischen Passwörtern<br />

auf allen Systemen erforderlich.<br />

Geht auf den Clients beim Ausrollen von<br />

<strong>Software</strong> etwas schief, bekommt ACMP<br />

und damit der Admin davon nichts mit<br />

– Fehlermeldungen des Clients erscheint<br />

nicht in der Konsole, bei Verdacht muss<br />

der Admin in den Logdateien suchen.<br />

Zumindest ein Indikator in der grafischen<br />

Konsole wäre wüschenswert.<br />

Für Landschaften mit<br />

Farbflecken<br />

In einer homogenen <strong>Linux</strong>-Umgebung<br />

ergibt es keinen Sinn, ausgerechnet einen<br />

Windows-Server hinzustellen, um<br />

die <strong>Linux</strong>-Rechner zentral zu verwalten.<br />

Wer aber ein Windows-lastiges Netz mit<br />

ein paar <strong>Linux</strong>- oder Mac-OS-Systemen<br />

zu verwaltet hat, fährt mit ACMP sicher<br />

besser als mit allen selbst gestrickten Lösungen<br />

– auch wenn im Test die eine oder<br />

andere Funktion gefehlt hat.<br />

Der Anbieter Aagon betont, dass die vorliegende<br />

Version die erste mit Nicht-Windows-Unterstützung<br />

ist, und versichert,<br />

in diese Richtung weiter zu entwickeln.<br />

Positiv fiel der Herstellersupport auf, der<br />

die Tester nach Kräften unterstützte und<br />

alle aufgetretenen Probleme aus dem<br />

Weg zu räumen half. (jk)<br />

n<br />

Infos<br />

[1] Aagon Consulting: [http:// www. aagon. de]<br />

[2] ACMP Pro: [http:// www. aagon. de/ de/​<br />

produkte/ acmp‐suite/ pro. html]<br />

Der Autor<br />

Konstantin Agouros arbeitet bei der N.runs AG<br />

als Berater für Netzwerksicherheit. Dabei liegt<br />

sein Schwerpunkt im Bereich Telekommunikationsanbieter.<br />

Sein Buch „DNS/​DHCP“ ist bei Open<br />

Source Press erschienen.


Sysadmin<br />

www.linux-magazin.de Owncloud 4 08/2012<br />

72<br />

Owncloud 4 bringt Verschlüsselung, Versionierung – und Ärger<br />

Wolke mit Ladung<br />

Kommerzielle Onlinespeicher wie Dropbox oder Hidrive legen Anwenderdaten zentral und von überall erreichbar<br />

ab. Owncloud will Anwendern das Gleiche bieten, aber mit Open Source und auf dem eigenen Server. Die<br />

mit vielen Features aufgeladene Version 4 erzeugte jedoch bei den <strong>Linux</strong>-<strong>Magazin</strong>-Testern Groll. Andrej Radonic<br />

© leksustuss, 123RF.com<br />

Die Ankündigung klang gut: Mit der aktuellen<br />

Version 4.01 stellt das Owncloud-<br />

Projekt (OC, [1], [2]) ein umfassendes<br />

<strong>Software</strong>paket bereit, mit dem fast jeder<br />

Anwender kinderleicht seine eigene private<br />

Cloud ins Netz stellen kann, um<br />

komfortabel wie bei der proprietären oder<br />

kostenpflichtigen Konkurrenz Dateien<br />

und Dokumente zentral zu verwalten,<br />

auf PCs, Notebooks und Smartphones zu<br />

schieben und mit anderen zu teilen.<br />

Das ist rund<br />

Der Zugriff auf die Owncloud-Services<br />

erfolgt mittels Webdav oder über den OC-<br />

Webclient. Um das Paket abzurunden,<br />

haben die Entwickler vor allem für die<br />

mobilen Arbeitsnomaden etliche praktische<br />

Helfer integriert. Neben der reinen<br />

Dateienverwaltung finden sich ein zentraler<br />

Kalender sowie ein gehostetes Adressbuch,<br />

das zentral Termine und Kontakte<br />

aufnimmt und ähnlich wie Apples<br />

I-Cloud das Bearbeiten derselben über<br />

den Webbrowser erlaubt.<br />

In Version 4 haben diese Apps, die sich<br />

über die Plugin-Schnittstelle leicht um<br />

weitere Applikationen ergänzen lassen,<br />

diverse verschiedene Verbesserungen<br />

erfahren: Anwender können Kalender<br />

jetzt innerhalb von Gruppen teilen, Dateien<br />

lassen sich im Webbrowser per<br />

Drag & Drop hochladen. Der Admin darf<br />

manuell mittels Themes die Fassade seiner<br />

Wolkenburg den eigenen Wünschen<br />

Steckbrief Owncloud<br />

Owncloud ist in PHP implementiert und nutzt als<br />

Datenbank MySQL, SQlite oder PostgreSQL. Die<br />

in der Cloud abgelegten Daten können Admins<br />

mittels Webdav oder über den OC-Webclient<br />

erreichen und verwalten.<br />

Zusätzlich stehen dedizierte Clients für Windows<br />

und <strong>Linux</strong> zur Verfügung. Die Protokolle<br />

Caldav und Carddav bauen Brücken zu Programmen<br />

für Termin- und Adressenverwaltung auch<br />

und gerade auf Mobilgeräten.<br />

anpassen. Überall gibt der Benutzer Daten<br />

jetzt differenzierter ein, zum Beispiel<br />

unterteilt er Kontakte in Gruppen. Der<br />

neue Viewer für Open-Office-Dateien<br />

stellt deren Inhalte direkt im Web-Dateimanager<br />

dar.<br />

Wichtiger als der Webclient, der leider<br />

nicht über eine für Smartphones optimierte<br />

Oberfläche verfügt, sind die dedizierten<br />

Clients. Die Entwickler haben die<br />

bereits bekannten Mirall-Clients für <strong>Linux</strong><br />

und Windows [3] kräftig überarbeitet,<br />

der im <strong>Linux</strong>-Land beliebte Browser<br />

Rekonq gleicht auf Wunsch seine Lesezeichen<br />

mit Owncloud ab. Ein nativer<br />

Android-Client [4] ist bereits am Start<br />

und bietet Support für Dateisynchronisation<br />

sowie den Austausch von Terminen,<br />

Kontakten und Bildern (Abbildung 1).<br />

Die I-OS-Variante für Apple-Geräte soll<br />

in Kürze folgen.<br />

Dateiver­schlüs­selung mit<br />

Blowfish<br />

Nichts geändert hat sich hingegen an der<br />

Philosophie des Projekts: Communityund<br />

Enterprise-Ausgabe basieren auf<br />

demselben Code. Bei der Funktionalität<br />

des Back end hat sich hingegen einiges<br />

getan. Mit der neuen Verschlüsselungs-<br />

Im Kern verfügt Owncloud über die Applikationen:<br />

Dokumente, Kalender, Kontakte, Musikplayer.<br />

Weitere Funktionen lassen sich über<br />

Plug ins ergänzen, beispielsweise eine Aufgaben-<br />

oder die Lesezeichen-Verwaltung inklusive<br />

Bookmarklet für den Browser.<br />

Erhältlich ist Owncloud in der (Kosten-)freien<br />

Community Edition sowie als Enterprise Edition<br />

unter dem Namen Owncloud Enterprise 2012,<br />

für die der Hersteller auch Support leistet.


Abbildung 1: Mit der Android-App gleichen<br />

Owncloud-Anwender ihre Dateien auch mit mobilen<br />

Geräten ab.<br />

funktion bedienen die Entwickler Verteidiger<br />

der Datensicherheit, ein Aspekt,<br />

der viele Anwender überhaupt erst dazu<br />

motiviert, über eine eigene Wolke nachzudenken.<br />

Hier kann Owncloud gegenüber<br />

der Konkurrenz durchaus punkten,<br />

Dropbox verschlüsselt beispielsweise erst<br />

mit externen Tools.<br />

Schon die Vorgängerversionen sicherten<br />

den Datenverkehr zwischen Client und<br />

Server per SSL. Jetzt verschlüsselt die<br />

Owncloud-Wolke zusätzlich alle Dateien<br />

(optional) vollautomatisch nach der<br />

Ablage im Storage. Zum Erzeugen des<br />

Schlüssels dient das Passwort des Anwenders,<br />

die Dateien encryptet der Blowfish-<br />

Algorithmus (Abbildung 2).<br />

Äußerst praktisch für alle, die aktiv Dokumente<br />

produzieren, ist im Zusammenhang<br />

mit der wolkigen Datei-Ablage die<br />

neue Versionsverwaltung (Abbildung<br />

3). Im Zweifel kann jeder Anwender so<br />

schnell auf die letzte oder eine andere<br />

Vorgängerversion einer geänderten Datei<br />

zurückgreifen, ein Feature, das in vielen<br />

Dokumentenmanagement-Systemen in<br />

Teams hilfreiche Dienste leistet.<br />

Mit Vorsicht zu genießen<br />

Doch Vorsicht ist geboten: Diese neue<br />

Fähigkeit berücksichtigt nicht einen etwaigen<br />

erneuten Upload derselben Datei<br />

über den Webclient, sie verfolgt nur jene<br />

Änderungen, die Anwender im Client<br />

oder vor einer Synchronisierung über<br />

Webdav vorgenommen haben.<br />

Ambitionierte Cloudverwalter mounten<br />

in Version 4 endlich auch externe<br />

Storage-Bereiche – und das völlig transparent.<br />

Samba ist noch in Vorbereitung,<br />

aber FTP, Webdav und Open Stack Swift<br />

sind bereits dabei. Der Kasten „Externen<br />

Storage konfigurieren“ hilft beim<br />

Einrichten.<br />

Weitere Neuerungen finden sich im Inneren<br />

der Wolke, wo die Entwickler die<br />

Kompatibilität der zentralen Protokolle<br />

Webdav, Caldav und Carddav optimierten<br />

oder dem Owncloud-Server das<br />

Syslog-Protokoll beibrachten. Die Userdaten<br />

lassen sich jetzt importieren und<br />

exportieren.<br />

Installation unter SLES,<br />

RHEL, Univention<br />

Die Installation von Owncloud ist schnell<br />

erledigt und gelingt auf <strong>Linux</strong> und der<br />

BSD-Familie genauso gut wie unter<br />

Windows. Der Webdav-Stack ist fester<br />

Bestandteil des Owncloud-Service und<br />

verlangt keine Sonderbehandlung. Neben<br />

der manuellen Installation stehen für<br />

die gängigen <strong>Linux</strong>-Derivate wie Debian,<br />

Ubuntu, Open Suse, RHEL, SLES und<br />

Fedora Binärpakete bereit.<br />

Neu ist das Paket für den Univention<br />

Corporate Server (UCS), das Owncloud<br />

automatisch mit dem LDAP des UCS Directory<br />

Server verbindet. Dies bietet laut<br />

Univention-Geschäftsführer Peter Ganten<br />

einen strategischen Vorteil für die<br />

Anwender: „Wir empfehlen Owncloud<br />

Externen Storage konfigurieren<br />

Um einen externen Storage in Owncloud einzubinden,<br />

aktiviert der Systemverwalter im<br />

Admin-GUI zunächst die entsprechende App,<br />

öffnet danach die Datei »config/mount.php«<br />

und definiert hier die benötigte Konfiguration<br />

als PHP-Array:<br />


Sysadmin<br />

www.linux-magazin.de Owncloud 4 08/2012<br />

74<br />

Cloudlösung eher als zumindest in einigen<br />

Teilen unfertige <strong>Software</strong>, die eigentlich<br />

das Etikett Beta oder gar Alpha<br />

tragen müsste. Den ersten Hinweis darauf<br />

gibt schon die Release-Ankündigung für<br />

4.01. Hier heißt es: „Für den Einsatz unter<br />

Produktionsbedingungen empfehlen<br />

wir weiterhin Owncloud 3.x oder Owncloud<br />

2012, während wir verschiedene,<br />

von Usern benannte Fehler jagen.“ Zwar<br />

ist solch eine Empfehlung durchaus legitim.<br />

Aber sie finden sich eher in Betaversionen<br />

oder Release Candidates, nicht<br />

aber bei Final Releases.<br />

Wer die <strong>Software</strong> installiert, stößt bereits<br />

nach kurzer Zeit auf erste Indizien, dass<br />

der Warnhinweis durchaus berechtigt ist:<br />

In weiten Teilen finden sich recht offensichtliche<br />

Fehler. Die Weboberfläche<br />

nervt mit zahlreichen Bugs und Darstellungsproblemen.<br />

Durchgängig bedienbar<br />

ist sie offenbar nur mit Mozilla Firefox.<br />

Mit Chrome scheitern selbst einfache<br />

Operationen wie das Hinzufügen eines<br />

Bildes zu einem Kontakt. Der Internet<br />

Explorer lässt sich gar nicht zuverlässig<br />

verwenden, was aber auch an dessen<br />

HTML-5-Support liegen könnte.<br />

Der Test offenbart eine<br />

lange Liste von Fehlern<br />

Auch der Webclient zeigt Schwächen, vor<br />

allem bei der Bedienung: Sortieren der<br />

Dateien ist nicht vorgesehen. Hat der Anwender<br />

einmal Dateien freigegeben, kann<br />

er später nicht mehr nachvollziehen, wer<br />

darauf Zugriff hat.<br />

Die Mängelliste lässt sich beliebig lange<br />

fortführen: Im Dateimanager kann der<br />

Anwender zwar interaktiv Textdateien<br />

anlegen, jedoch verweigert es der Webclient,<br />

diese später inline zu editieren.<br />

Die Freigabe (Sharing) von Dateien auf<br />

User-Ebene funktioniert<br />

nur bedingt, in<br />

unseren Tests wurden<br />

nachträglich hinzugefügte<br />

Benutzer nicht<br />

als mögliche Kandidaten<br />

gelistet. Dafür zerstörte<br />

das Verschlüsselungssystem<br />

erfolgreich<br />

und irreversibel<br />

Dateien von Microsoft<br />

Office.<br />

Viele Anwender der<br />

Version 3 berichten,<br />

dass die Updateprozedur<br />

auf die aktuelle<br />

Release zum vollständigen Verlust der<br />

Dateien führte. Der Windows-Sync-Client<br />

stürzt regelmäßig und reproduzierbar ab.<br />

<strong>Software</strong> für den Produktivbetrieb sieht<br />

anders aus. Umso befremdlicher wirkt<br />

die Ankündigung, bereits im August dieses<br />

Jahres käme Version 5.<br />

So ein Releasekonzept sollte man mit<br />

Vorsicht genießen. Gerade im Open-<br />

Source-Umfeld kündigen Firmen und<br />

Projekte gerne frühzeitig Alpha- und<br />

Beta-Versionen an, bereiten Releases mit<br />

Release Candidates vor und holen ausgiebig<br />

Feedback der Community ein, bevor<br />

sie eine Version zur Final Release küren.<br />

Das Owncloud-Team hingegen hat wohl<br />

auf die Überholspur gesetzt und kann<br />

durch die unreife Ware viele der abgegebenen<br />

Versprechungen nicht einhalten.<br />

Die Enttäuschung wiegt so schwer, weil<br />

das Konzept und die Ansätze sehr vielversprechend<br />

sind.<br />

Codequalität und Verschlüsselung:<br />

Mangelhaft<br />

In dieses Bild passen manche Hinweise<br />

auf mangelhafte Qualität des Codes und<br />

Abbildung 2: Owncloud unterstützt seit Version 4 auch das automatische<br />

Verschlüsseln von Dateien.<br />

der Implementierung. So hat der Kryptographie-Spezialist<br />

Pascal Junod die Verschlüsselungsmechanismen<br />

von Owncloud<br />

analysiert [5] und kommt zu dem<br />

Ergebnis, dass von sicherer Kryptographie<br />

keine Rede sein kann. Wer derzeit<br />

eine robuste Verschlüsselung will, muss<br />

sich mit Enc-FS behelfen und dieses für<br />

seinen OC-Server aufsetzen.<br />

Wolke mit Potenzialunterschieden<br />

Owncloud trifft mit der Idee, eigene<br />

Clouds simpel aufsetzen und selbst betreiben<br />

zu können, den Nerv der Zeit.<br />

Das Featureset entwickelt sich mit der<br />

aktuellen Version 4 in die richtige Richtung,<br />

das Konzept kann in weiten Teilen<br />

überzeugen.<br />

Der Reifegrad entspricht jedoch höchstens<br />

dem einer Betaversion, und genau<br />

so sollten die Entwickler ihr Kind fairerweise<br />

auch nennen. Es wäre an der Zeit,<br />

eine ganze Reihe zentraler Punkte der<br />

Stabilität und Sicherheit anzupacken, damit<br />

Owncloud für den produktiven Einsatz<br />

bereit wird. (mfe)<br />

n<br />

Abbildung 3: Owncloud 4 bringt auf Wunsch auch eine Versionskontrolle für die Dokumente mit – aber nur für<br />

Clients und Webdav-Sync. Benutzer anderer Clients bleiben außen vor.<br />

Infos<br />

[1] Owncloud: [http:// owncloud. org]<br />

[2] Ahmad Hammad, Ariel Garcia, „Eigenes<br />

Quellwölkchen“: <strong>Linux</strong>-<strong>Magazin</strong> 12/​11, S. 52<br />

[3] Mirall:<br />

[https:// gitorious. org/ owncloud/ mirall]<br />

[4] Owncloud auf Android:<br />

[http:// owncloud. org/ support/ android/]<br />

[5] Owncloud-Verschlüsselung ist wirkungslos:<br />

[http:// crypto. junod. info/ 2012/ 05/ 24/​<br />

owncloud‐4‐0‐and‐encryption/]


Der Raspberry Pi im Praxistest<br />

Leckeres Törtchen<br />

Raspberry Pi 08/2012<br />

Hardware<br />

Raspberry Pi heißt ein scheckkartengroßer Mini-PC für gut 30 Euro, der unter <strong>Linux</strong>-Fans für Furore sorgt.<br />

Wer trotz des verunglückten Herstellervertriebs einen bekommen hat, ein wenig Geduld und die richtige SD-<br />

Karte mitbringt, dem schmeckt das Himbeertörtchen. Franz Kinader, Markus Feilner<br />

www.linux-magazin.de<br />

75<br />

Ein schmuckloser Himbeerkuchen ohne<br />

Sahne, Schokostreusel oder Fruchtsoße<br />

ist der Raspberry Pi [1]. Aus der Schachtel<br />

rutscht eine Platine ohne Zubehör<br />

– keine SD-Karte, kein Stromkabel – als<br />

Ergebnis einer Bestellung, die Monate<br />

Wartezeit, unzählige E-Mails, Telefonate<br />

und Nerven gekostet hat.<br />

Am Preis (knapp 40 Euro inklusive 6 Euro<br />

Versand und 20 Prozent UK-Tax) gibt’s<br />

dagegen nichts zu bemängeln: Das aufgeräumte<br />

Mini-Board (Abbildung 1) beeindruckt<br />

mit vielen Anschlussmöglichkeiten<br />

auf einer kreditkartengroßen Fläche.<br />

Neben HDMI, Composite, 3,5-mm-Klinke<br />

für den Audio-Ausgang und SD-Slot verfügt<br />

das Raspberry Pi auch über zwei<br />

USB-Schnittstellen. Das klingt nach Hightech<br />

für die Hemdtasche.<br />

Torte sucht Anschluss<br />

Auch eine 100-MBit-Ethernet-Schnittstelle<br />

ist auf dem Modell B des Pi verbaut (das<br />

angekündigte, noch günstigere Modell A<br />

soll später kommen). Zu den GPIO-Pins<br />

(General Purpose I/O) für Hardware-Basteleien<br />

und Erweiterungen gesellt sich<br />

ein CSI-Port für Zusatzgeräte wie Kameras.<br />

Doch Vorsicht: Die Anschlüsse ragen<br />

über das Board hinaus, sodass schnell ein<br />

Pin abbricht.<br />

Auch die Chips auf dem Board haben so<br />

ihre Eigenheiten: Als besonders ärgerlich<br />

für <strong>Linux</strong>-Puristen erweist sich die<br />

Broadcom-GPU (Video-Core IV). Sowohl<br />

Hardware als auch Treiber sind proprietär.<br />

Ob der Hersteller langfristigen Support<br />

bietet, ist also fraglich. Anders der<br />

Hauptprozessor: Die Spezifikationen des<br />

ARM1176JZF-S mit 700 MHz, der sich<br />

mit der GPU den System on a Chip (SoC)<br />

teilt, liegen offen.<br />

Um die Kosten niedrig zu halten, haben<br />

die Entwickler auf einige Details verzichtet,<br />

etwa auf eine Echtzeituhr. Dank der<br />

GPIO-Pins lässt sich die aber nachrüsten.<br />

VGA oder DVI hält der Hersteller<br />

offensichtlich für überholt, daher findet<br />

sich nur je ein HDMI- und Composite-<br />

Anschluss auf dem Board. Tabelle 1 zeigt<br />

die technischen Details des Törtchens,<br />

auf <strong>Linux</strong>-<strong>Magazin</strong> Online Plus lässt sich<br />

nachlesen, welche Klimmzüge die Autoren<br />

machen mussten, um in den Genuss<br />

des Geräts zu kommen.<br />

Wer den Raspberry Pi starten will,<br />

braucht zunächst eine SD-Karte mit 4<br />

GByte Speicher für das Betriebssystem.<br />

Weil die im Lieferumfang nicht enthalten<br />

ist, führt den stolzen Besitzer der nächste<br />

Weg zum Elektronikhändler. Wer kein<br />

USB-Ladegerät eines alten Handys mehr<br />

übrig hat, kann dort auch gleich eins mitbestellen.<br />

Das übers Micro-USB-Ladekabel<br />

angeschlossene Ladegerät sollte aber<br />

mindestens 700 Millampere bei 5 Volt<br />

bringen, besser mehr, doch dazu später.<br />

Dann noch USB-Tastatur und Maus, falls<br />

eine grafische Oberfläche geplant ist, ein<br />

HDMI- oder Composit-Kabel – und schon<br />

kann’s losgehen.<br />

Im Web finden sich auch schon Gehäuse<br />

zum Kauf und Templates für 3-D-Drucker<br />

zum Download. Findigen Bastlern<br />

reichen vielleicht ein paar Legosteine,<br />

um selbst ein Gehäuse zu gestalten. Aufgrund<br />

der geringen Wärmeentwicklung<br />

des Pi ist das kein Problem.<br />

Die Auswahl der SD-Karte, die im eingesteckten<br />

Zustand die Platine um fast<br />

einen Zentimeter überragt (Abbildung<br />

1,) verlangt viel Aufmerksamkeit. Zwar<br />

Online PLUS<br />

Auf <strong>Linux</strong>-<strong>Magazin</strong> Online Plus lesen<br />

Sie ausführlich die abenteuerliche Geschichte<br />

des kleinen Raspberry PI und seines<br />

beschwerlichen Weges in die Redaktion des<br />

<strong>Linux</strong>-<strong>Magazin</strong>s.<br />

© Ruth Black, 123RF


Hardware<br />

www.linux-magazin.de Raspberry Pi 08/2012<br />

76<br />

2<br />

5<br />

1<br />

funktioniert fast jede Class-4-Card (mit<br />

Übertragungsrate 4 MByte/​s), aber richtig<br />

flott ist der Pi damit nicht.<br />

Besser wären Karten höher als Class 6<br />

– hätte nicht der Kartenleser etwas dagegen<br />

[2]. Pete Lomas, der das Raspberry<br />

Pi mit designt hat, fand heraus<br />

[3], dass sich der Herstellungsprozess<br />

der SD-Karten geändert hat, weshalb der<br />

Bootloader der Broadcom-Karten die Kooperation<br />

verweigert.<br />

Das Pi-Problem: SD-Karten<br />

Ob die eigene SD-Karte funktioniert, lässt<br />

sich leider ohne Test nicht erkennen, da<br />

die Hersteller das Produktionsdatum<br />

nicht darauf vermerken. Aber Hilfe ist in<br />

der Kompatibilitätsliste der Community<br />

[4] zu finden. Ob irgendwann ein Firmware-Update<br />

[5] das Problem lösen kann,<br />

war zu Redaktionsschluss unbekannt,<br />

Broadcom untersucht das Problem noch.<br />

Falls das Board eine Karte erkennt, zeigt<br />

sich das an den LEDs auf dem Board:<br />

Bleibt die Power-LED rot und als einzige<br />

Leuchte aktiv, dann funktioniert die<br />

Karte leider nicht.<br />

Auf der Homepage des Raspberry Pi liegen<br />

fertige Images und eine Anleitung<br />

für Windows, <strong>Linux</strong> und Mac OS X [6].<br />

Unter Windows landet das Debian-Image<br />

mit dem Win32 Disk Imager auf der SD-<br />

Karte, unter <strong>Linux</strong> reicht »dd« mit dem<br />

Parameter »bs=1M«:<br />

dd bs=1M if=debian.img of=/dev/sdx><br />

3<br />

Abbildung 1: Als Schwachstellen am Pi gelten der Kartenleser 1, der nur auserlesene SD-Cards 2 akzeptiert,<br />

die Pins 3 für Erweiterungen, die allzu leicht abbrechen, und der ins SoC 4 integrierte Grafikchip von<br />

Broadcom, für den es keinen freien Treiber gibt. Ebenfalls gewöhnungsbedürftig: Es existiert kein Bios und<br />

kein Ein-/​Aus-Schalter. Darum einfach ein USB-Netzgerät 5 anstecken – los geht’s.<br />

4<br />

3<br />

Das Debian mit LXDE funktionierte im<br />

Test problemlos, außerdem stehen Images<br />

eines Arch <strong>Linux</strong> sowie von Qton<br />

Pi, das mit einem optimierten SDK zum<br />

Entwickeln von Qt-Anwendungen ausgestattet<br />

ist. Der Fedora-Remix ist jüngst<br />

von der Homepage verschwunden, wohl<br />

weil er noch auf Fedora 14 basierte und<br />

ein Update auf Fedora 17 ansteht.<br />

Ohne Bios, ohne Uhr<br />

Zum Einschalten des Geräts steckt der<br />

stolze Besitzer einfach das USB-Stromkabel<br />

in die USB-Buchse des Raspberry Pi.<br />

Beim Ausstecken ist daher Vorsicht angebracht.<br />

Das Betriebssystem sollte korrekt<br />

heruntergefahren sein. Zumindest ein<br />

»sync« auf den Dateisystemen ist nötig,<br />

sonst droht Datenverlust.<br />

Tabelle 1: Hardware<br />

Modell A<br />

Auch auf ein Bios haben die Entwickler<br />

verzichtet, das <strong>Linux</strong> startet direkt von<br />

der SD-Karte, mit diversen Einstellungen<br />

als Bootparameter. Als Filesystem nutzt<br />

das Debian-Image Ext 4. Beim ersten<br />

Start ist der Gebietsschema-Parameter auf<br />

Großbritannien (»gb«) eingestellt, was<br />

zu lästigen Problemen beim Login führt,<br />

weil der Pi das UK-Keyboard-Layout verwendet<br />

und die voreingestellten Credentials<br />

(Benutzername »pi« und Passwort<br />

»raspberry«) ein y enthalten.<br />

Nach dem Login erhält der Benutzer mit<br />

»sudo su« Rootzugang. Zuerst ändert er<br />

das Gebietsschema in der Datei »/etc/<br />

default/keyboard«, zum Beispiel mit dem<br />

Editor Nano, zu »XKBLAYOUT="de"«.<br />

Anschließend erledigt »dpkg‐reconfigure<br />

locales« das für den Rest des Systems.<br />

Wer hier in der Liste »de_DE.UTF‐8« via<br />

Leertaste auswählt und bestätigt, beschäftigt<br />

die kleine Hardware gleich mal<br />

einige Minuten.<br />

Nach dem fälligen Neustart des Systems<br />

liegt ein deutschsprachiges Debian vor,<br />

und das SoC sollte trotzdem keinen nennenswerten<br />

Temperaturanstieg aufweisen.<br />

Der Raspberry blieb im Test mit den<br />

Standardeinstellungen stets handwarm.<br />

Zu wenig RAM<br />

Aber nicht nur die langsamen SD-Karten<br />

erschweren dem Benutzer den Weg<br />

zum schnellen Desktop, sondern auch<br />

der knappe Hauptspeicher. Der reicht für<br />

Modell B<br />

Maße<br />

86 mm x 54 mm x 17 mm<br />

Gewicht<br />

45 Gramm<br />

SoC<br />

Broadcom BCM2835<br />

Prozessor<br />

ARM11 76JZF-S, 700 MHz<br />

Grafikprozessor<br />

Broadcom Video Core IV<br />

Arbeitsspeicher<br />

256 MByte SDRAM<br />

USB-2.0-Anschlüsse 1 2<br />

Netzwerk - 10/​100 MBit RJ45<br />

Bussysteme<br />

I 2 C, UART, SPI, 16 GPIO-Pins<br />

Ton-/Video-Ausgabe<br />

3,5-mm-Klinkenstecker, Composite, HDMI<br />

Massenspeicher<br />

SD/​MMC-Card- oder SDIO-Kartenleser<br />

Stromquelle<br />

5-Volt-Micro-USB<br />

Stromverbrauch 500 mA (2,5 Watt) 750 mA (3,5 Watt)<br />

Betriebssysteme<br />

Debian 6, Arch <strong>Linux</strong>, Qton Pi, Open ELEC (XBMC)<br />

Preis 25 Euro 34 Euro


nahme sollte der Besitzer vorsichtig sein<br />

und eher ein Netzteil kaufen, das höhere<br />

Stromstärke erlaubt. Offizielle Vorraussetzung<br />

beim Modell B sind 750 mA.<br />

Im Unterzucker<br />

Raspberry Pi 08/2012<br />

Hardware<br />

Abbildung 2: Per SSH auf dem Pi angemeldet findet der Anwender ein auf den ersten Blick vollständiges<br />

<strong>Linux</strong>-System. Der Debian-Kernel erkennt die ARM6-Architektur.<br />

Chrome oder Firefox nicht, besser arbeitet<br />

der Ressourcen-schonende Browser<br />

Midori, der zwar kein HTML 5, Flash<br />

und Java kann, aber mit flottem Surfen<br />

belohnt. Bei komplexeren Seiten ist die<br />

CPU jedoch schnell ausgelastet.<br />

Die Auswahl weiterer Desktop-<strong>Software</strong><br />

gestaltet sich eher schwierig, da es sich<br />

beim Pi um ein ARM-System handelt. Die<br />

Installation von Paketen aus dem Raspberry-Pool<br />

ist zwar kein Problem, aber<br />

so umfassend wie ein i386- oder x64-Repository<br />

ist der bei Weitem nicht. Richtig<br />

problematisch wird es für Anwender, die<br />

proprietäre <strong>Software</strong> einsetzen wollen,<br />

denn ohne Quelltext ist auch der Weg<br />

übers Cross-Compiling verbaut.<br />

Geduld ist gefragt<br />

Die Single-Core-CPU des Himbeertörtchens<br />

gehört erwartungsgemäß nicht zu<br />

den schnellen Zeitgenossen (Abbildung<br />

2). Ihre Namensgeberin, die Kreiszahl Pi,<br />

auf 4000 Stellen zu berechnen, beschäftigt<br />

sie über zwei Minuten:<br />

time echo "scale=4000; a(1)*4" | bc ‐l<br />

real 2m11.914s<br />

user 2m11.720s<br />

sys 0m0.010s<br />

Ein aktueller Intel i5 und ein AMD Phenom<br />

schaffen das Gleiche in 15 Sekunden.<br />

Der Shell-Taschenrechner »bc« nutzt<br />

dabei immer nur einen Kern, daher ist es<br />

egal, dass die beiden Desktop-Rechner<br />

vier Cores bereitstellen.<br />

In der Praxis reicht die Leistung meist<br />

dennoch: Der Raspberry Pi ist mit einem<br />

Full-HD-fähigem Grafikchip ausgestattet,<br />

der im Test 1080p30-H.264-Videos ohne<br />

Probleme mit XBMC (Open ELEC Image)<br />

auf einen 47-Zoll-Fernseher wiedergeben<br />

konnte, zumindest wenn als Datenquelle<br />

ein NAS den Film „Big Buck Bunny“ [7]<br />

bereitstellt. Die gleiche Videodatei von<br />

der SD-Karte abzuspielen bereitet jedoch<br />

kein Vergnügen: Mit der Class-4-Card<br />

ruckelt der Film dauerhaft, mit funktionierenden<br />

Class-10-Karten sind bessere<br />

Ergebnisse möglich.<br />

Himbeeren, flambiert<br />

Wem die Leistung nicht reicht, der macht<br />

sich ans Übertakten. Der ARM-Prozessor<br />

läuft mit 700 MHz, der Hauptspeicher<br />

mit 400 MHz und der Grafikprozessor<br />

mit 250 MHz. Im Testlabor des <strong>Linux</strong>-<br />

<strong>Magazin</strong>s ließ sich die CPU auch mit 800<br />

MHz betreiben, wobei der Raspberry Pi<br />

aber sehr warm wurde, weshalb die Tester<br />

von weiteren Steigerungen absahen.<br />

Nach Berichten im Web gibt es Geräte,<br />

die stabil mit 900 MHz laufen.<br />

Aber weil der Pi keine Ventilatoren besitzt,<br />

sollte ein Besitzer das Übertakten<br />

ohne Extrakühlung nicht dauerhaft erwägen.<br />

Außerdem hat der Broadcom-Chip<br />

eine interne Sicherung, anhand derer der<br />

Hersteller im Schadensfall die Übertaktung<br />

nachweisen kann. Wen das nicht<br />

abschreckt: Die Parameter für Takt und<br />

Spannung (für CPU, GPU sowie RAM)<br />

lassen sich einfach in der (neu zu erstellenden)<br />

Datei »/boot/config.txt« eintragen.<br />

Eine Liste erlaubter Werte findet<br />

sich auf [8].<br />

Auch bei den Angaben des Herstellers<br />

rund ums Netzteil und die Stromauf-<br />

Auch das erweist sich bald als zu knapp<br />

bemessen, wenn der Benutzer USB-Hardware<br />

anschließt. In Tests traten bereits<br />

mit einem USB-Hub, zwei angeschlossenen<br />

USB-Sticks, Maus und Tastatur wegen<br />

akuter Unterversorgung einige Probleme<br />

auf. Neben Read/​Write-Fehlern auf der<br />

SD-Karte, Eingabeproblemen (die Tastatur<br />

arbeitete nur sporadisch oder wiederholte<br />

die Eingabe endlos) schafften<br />

es die Tester sogar, mit vier angesteckten<br />

Standard-USB-Sticks, die Ethernet-<br />

Schnittstelle lahmzulegen.<br />

Trotzdem erhält der Besitzer einen günstigen,<br />

stromsparenden Computer, der<br />

für kleine Aufgaben im 24/​7-Betrieb wie<br />

etwa als Webserver oder VPN-Gateway<br />

bestens gerüstet ist. Allzu rechenintensiv<br />

sollte das aber nicht sein, lieber mit wenigen<br />

Lese- oder Schreibzugriffen auskommen<br />

oder sich auf Daten aus einem NAS<br />

oder SAN stützen. Dann taugt der kleine<br />

Himbeerkuchen auch als Mediaplayer für<br />

den HD-Fernseher. Als Desktopersatz ist<br />

er aufgrund des geringen Hauptspeichers,<br />

fehlender ARM-<strong>Software</strong> und langsamer<br />

Hardware aber nicht zu gebrauchen. n<br />

Infos<br />

[1] Raspberry Pi: [http:// www. raspberrypi. org]<br />

[2] Warum funktioniert meine SD-Karte nicht?:<br />

[http:// raspberrycenter. de/ handbuch/<br />

warum‐funktioniert‐meine‐sd‐karte‐nicht<br />

‐raspberry‐pi]<br />

[3] Pete Lomas zum SD-Kartenproblem:<br />

[http:// www. raspberrypi. org/ archives/ 837]<br />

[4] SD-Karten-Kompatibilitätsliste:<br />

[http:// elinux. org/ RPi_VerifiedPeripherals#<br />

SD_cards]<br />

[5] Neue Pi-Kernel auf Github:<br />

[https:// github. com/ raspberrypi/ firmware/​<br />

tree/ master/ boot]<br />

[6] Image-Anleitung: [http:// elinux. org/​<br />

RPi_Easy_SD_Card_Setup]<br />

[7] Big Buck Bunny in HD:<br />

[http:// www. bigbuckbunny. org]<br />

[8] Boot-Parameter:<br />

[http:// raspberrycenter. de/ handbuch/​<br />

configtxt‐konfigurationsdatei]<br />

www.linux-magazin.de<br />

77


Forum<br />

www.linux-magazin.de Rechts-Rat 08/2012<br />

80<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 />

© David Crockett, 123RF.com<br />

Abbildung 1: Wer eigentlich <strong>Software</strong> schreibt<br />

und nur als Dreingabe die PC-Hardware aufrüstet,<br />

braucht keinen Meisterbrief.<br />

In dieser Ausgabe geht’s um „meisterhaftes“<br />

Festplatten-Aufrüsten, exotische<br />

Rechtsfragen für IT-Dienstleister, Lizenzprobleme<br />

bestimmter Headerdateien sowie<br />

3-D-Raubkopien.<br />

Meisterbrief für <br />

iHardware-Upgrade?<br />

Ich habe mich nebenberuflich, aber mit Gewerbeschein<br />

darauf spezialisiert, für Gaststätten<br />

Musik-Abspielprogramme (Playlist-Tools) zu<br />

entwickeln beziehungsweise Zusatzsoftware<br />

zu bestehenden Programmen zu schreiben, die<br />

eine genaue Auswertung der abgespielten Musikstücke<br />

erlaubt. Weil des Öfteren schon die<br />

Kunden zugleich neue Festplatten und andere<br />

Hardware installiert haben wollten, hat mein<br />

Partner diese Arbeiten für mich übernommen.<br />

Nun habe ich gehört, dass man für solche Konfigurationstätigkeiten<br />

einen Meisterbrief benötigt<br />

und in der Handwerkskammer Mitglied sein<br />

muss. Darf ich weiterhin Festplatten, Soundkarten<br />

und andere Hardware in die PCs meiner Kunden<br />

einbauen oder muss ich sie wegen so etwas<br />

zu einem anderen Betrieb schicken?<br />

Steffi K.<br />

Wenn Sie, wie Sie angeben, die Hardware-Umbauten<br />

nur in unwesentlichem<br />

Umfang neben der Tätigkeit der <strong>Software</strong>-<br />

Installation und Programmerstellung ausführen,<br />

dürfte es sich dabei um hilfsbetriebliche<br />

Tätigkeiten oder minderhandwerkliche<br />

Nebentätigkeiten handeln, die<br />

Sie im Rahmen Ihres Gewerbebetriebs als<br />

Systemdienstleister ausüben.<br />

Für derartige Tätigkeiten besteht keine<br />

Eintragungspflicht in die Handwerksrolle,<br />

keine Meisterpflicht und keine besondere<br />

Voraussetzung bei der Qualifizierung. Sie<br />

dürfen sie unbesorgt auch künftig selbst<br />

oder durch Mitarbeiter anbieten und<br />

durchführen oder durchführen lassen.<br />

Berufsrechtliche Vor-<br />

ischriften<br />

Wir verhandeln mit einer Arztpraxis über einen<br />

Installations- und Wartungsvertrag für deren<br />

EDV-Installation. Die Praxis betreibt ein schon älteres<br />

EDV-Netzwerk mit einer Ärztesoftware, für<br />

die noch ein Einrichtungs- und Wartungsvertrag<br />

mit dem Lieferanten dieser <strong>Software</strong> besteht.<br />

Die Ärzte verlangen im Vertrag eine Klausel, die<br />

uns dazu verpflichtet, die berufsrechtlichen Vorschriften<br />

einzuhalten.<br />

Wir möchten den Auftrag gerne übernehmen,<br />

befürchten aber, dass uns derartige Klauseln benachteiligen.<br />

Welche Lösung bietet sich an?<br />

G. P.<br />

Eine Formulierung, nach der Sie „die berufsrechtlichen<br />

Vorschriften“ (wohl der<br />

Ärzte) einhalten sollen, ist viel zu weit<br />

gefasst, als dass Sie als Vertragspartner<br />

absehen könnten, worauf Sie dabei zu<br />

achten hätten. Neben allgemeinen und<br />

eventuell besonderen datenschutzrechtlichen<br />

Bestimmungen, Verschwiegenheitsoder<br />

Aufbewahrungspflichten bezüglich<br />

betroffener Daten oder der Zugangsberechtigungen<br />

zum System einschließlich<br />

der Kontrollmaßnahmen könnten auch<br />

Bestimmungen des Medizinproduktegesetzes<br />

oder anderer spezieller Normen<br />

heranzuziehen sein. Eine detaillierte<br />

Prüfung im Einzelfall wird schwierig. So<br />

etwas kann nur ein Spezialist kostenintensiv<br />

erstellen. Ihr potenzieller Kunde<br />

möchte diesen Aufwand offenbar auf Sie<br />

abwälzen.<br />

Aufgrund der unabsehbaren rechtlichen<br />

Konsequenzen kann lediglich die umgekehrte<br />

Vertragsgestaltung in Ihrem Interesse<br />

liegen: Statt dieser Generalklausel<br />

sollten Sie eine Vereinbarung treffen,<br />

nach der der Auftraggeber (die Praxisgemeinschaft)<br />

konkret darlegt, welche besonderen<br />

berufsrechtlichen Anforderungen<br />

Sie als Systemdienstleister erfüllen<br />

müssen – am besten in Form einer de-<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 <strong>Software</strong> 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.


zidierten Auflistung. Schließlich sollten<br />

sich Ihre Vertragspartner als Ärzte besser<br />

mit den für sie einschlägigen Bestimmungen<br />

auskennen.<br />

Meine <strong>Software</strong>, deine<br />

iHeaderdatei<br />

Ich habe eine Bibliothek unter der LGPL geschrieben.<br />

Via »dlopen()« kann sie Backends<br />

laden, die ich ebenfalls selbst geschrieben habe.<br />

Die Backends können wiederum Plugins laden.<br />

Das API für diese Plugins liegt als Headerfile<br />

in rund 370 Zeilen C++ vor. Die Benutzung des<br />

Headerfiles ist frei, wenn ein Entwickler Plugins<br />

schreibt, jedoch lizenzpflichtig, wenn man einen<br />

Plugin-Host programmiert. Ich besitze eine<br />

Lizenz für die Nutzung des Headerfiles für mein<br />

Plugin-Host-Backend.<br />

Nun stellt sich mir die Frage, ob ich das Backend<br />

unter der LGPL veröffentlichen kann oder –<br />

falls nicht – welche Lizenz in Frage käme? Das<br />

Header file hat ja eine proprietäre Lizenz und<br />

ohne die Datei lässt sich die Backend-Bibliothek<br />

nicht übersetzen. Andere Projekte können zwar<br />

gern den Quelltext meiner Bibliothek im Rahmen<br />

der LGPL nutzen, das fragliche Headerfile dürfen<br />

sie jedoch nicht ohne Lizenz verwenden.<br />

Stefan S.<br />

Sie können nicht mehr Rechte weitergeben,<br />

als Sie selbst haben: In keinem Fall<br />

sind Sie daher berechtigt, die von Ihrem<br />

Code eingebundenen Header unter einer<br />

neuen Lizenz weiterzuvertreiben. Wenn<br />

Sie schreiben, Sie hätten eine Lizenz für<br />

die Nutzung der Headerdatei für Ihren<br />

Plugin-Host, gehe ich davon aus, dass<br />

in dieser Lizenz lediglich das Nutzungsrecht,<br />

nicht aber das Recht der Weitergabe<br />

enthalten ist – mit anderen Worten:<br />

Sie dürfen für die Erstellung eines lauffähigen<br />

Programms das Headerfile einbinden<br />

und dürften das erstellte Executable<br />

dann auch beliebig oft weitergeben oder<br />

verkaufen, dürfen es aber nicht in Quellform<br />

an Dritte weitergeben.<br />

An der Quelle<br />

Man könnte auf den Gedanken kommen:<br />

„Wenn ich den Code ohnehin in ausführbarer<br />

Form weitergeben dürfte, warum<br />

dann nicht auch gleich im Quelltext?“<br />

Das ließe aber einen wichtigen Umstand<br />

außer Acht, nämlich die Lesbarkeit des<br />

Quelltextes und damit das enthaltene<br />

Know-how. Weil das Urheberrecht dem<br />

Programmierer unter anderem auch die<br />

Verfügungsfreiheit lässt, wer dessen<br />

Quellcode lesen darf und wer nicht,<br />

ist das Weitergaberecht bezüglich des<br />

Quellcodes nicht vergleichbar mit dem<br />

Weitergaberecht bezüglich ausführbarer<br />

Programme.<br />

Auf der anderen Seite berührt die Lizenz<br />

des Headerfiles Ihren Code nicht: Ihre<br />

Quellen binden den Headercode ja nur<br />

mittels einer Präprozessor-Direktive ein<br />

und enthalten selbst keine Zeile davon.<br />

Damit steht Ihnen für Ihren gesamten<br />

Quellcode die Wahl zwischen allen möglichen<br />

Lizenzformen und ‐inhalten frei.<br />

Die Wahl der LGPL ist damit keinesfalls<br />

zu beanstanden.<br />

Problematische Weitergabe<br />

Das eigentliche Problem ist wohl, ob und<br />

wie Sie den Code, den das Headerfile<br />

deklariert, zusammen mit Ihrem Code<br />

als Paket weitergeben können. Denn vielleicht<br />

dürfen Sie die Header frei weitergeben,<br />

wenn diese für reine Plugin- und<br />

nicht für Host-Programmierung genutzt<br />

werden. Das könnte dazu verleiten, die<br />

Header einfach mit ins Paket zu legen<br />

und nur in einer möglicherweise sogar<br />

„versteckten“ Readme-Datei darauf hinzuweisen,<br />

dass deren Verwendung nicht<br />

legal wäre. Was aber der Anwender, der<br />

einfach nur einen Make-Durchlauf startet,<br />

gar nicht mitbekäme.<br />

Ich will Ihnen das keinesfalls unterstellen,<br />

nur sei der Hinweis gestattet, dass<br />

dergleichen sehr wahrscheinlich als Lizenzverletzung<br />

zu werten wäre. Aber<br />

vielleicht dürfen Sie die Quellen ja auch<br />

gar nicht selbst weitergeben – nicht einmal<br />

für die freie Benutzung im Rahmen<br />

der Plugin-Programmierung.<br />

Programmbestandteile aus verschiedenen<br />

Quellen einzusetzen, für die unterschiedliche<br />

Lizenzbedingungen zu beachten<br />

sind, ist im reinen Anwender-Bereich<br />

zwar unüblich, im professionellen Bereich<br />

aber nichts Neues, gerade unter<br />

den Unix-Betriebssystemen. Ein weiterer,<br />

durchaus üblicher Ansatz ist es, vorkompilierte<br />

Header zu verwenden: Prüfen<br />

Sie gegebenenfalls anhand der konkreten<br />

Lizenzbedingungen, ob die Weitergabe<br />

vorkompilierter Header erlaubt ist.<br />

17.-18. OCT. 2012<br />

NUREMBERG<br />

REGISTER NOW!<br />

Die internationale Plattform für freie<br />

Monitoringlösungen, Austausch und<br />

Wissenserweiterung rund um das<br />

Thema<br />

Open Source Monitoring<br />

INTENSIV-WORKSHOPS<br />

am Vortag der Konferenz<br />

·Pacemaker<br />

·Config.-Management mit Puppet<br />

·Icinga Kickstart<br />

www.netways.de/osmc<br />

[Deutschland-Premiere]<br />

[Puppet Camp]<br />

[19. October 2012]<br />

www.netways.de/puppetcamp<br />

presented by<br />

Möglicherweise können Sie diese dann<br />

NETWAYS ®<br />

NETWAYS ®


Forum<br />

www.linux-magazin.de Rechts-Rat 08/2012<br />

82<br />

einfach in das Paket Ihres Plugin-Host-<br />

Backend legen. Auch dabei ist allerdings<br />

zu beachten, dass Ihre Abnehmer nicht<br />

automatisch das Recht erwerben, diese<br />

vorkompilierten Header ihrerseits weiterzugeben,<br />

sodass das Paket mit den<br />

vollständigen Quellen nicht durchgängig<br />

freie <strong>Software</strong> wäre.<br />

Der sicherste Weg ist es, ein „unvollständiges“<br />

Paket unter der LGPL anzubieten<br />

und den Abnehmern eine URL<br />

zu nennen, unter der sie das benötigte<br />

Headerpaket beziehen können, um es<br />

vor dem Compiler-Durchlauf in Ihr Paket<br />

einzufügen. Damit ist allen Lizenzbedingungen<br />

entsprochen. Um die Lizenztreue<br />

der Abnehmer brauchen Sie sich nicht zu<br />

kümmern – und Ihr Paket bleibt in jedem<br />

Fall echte LGPL-<strong>Software</strong>.<br />

Fremde Körper als<br />

iDruckauftrag<br />

Wir planen, Dienstleistungen im Bereich 3-D-<br />

Druck anzubieten: Auf einer Internetseite können<br />

Kunden Dateien in einem bestimmten Format<br />

einstellen (in späteren Ausbaustufen auch online<br />

konstruieren), nach denen wir Objekte mit einem<br />

3-D-Drucker fertigen und den Kunden zustellen.<br />

Müssen wir auch bei körperlichen Produkten ans<br />

Urheberrecht oder andere Rechte denken oder<br />

ist das unproblematisch?<br />

Anonym<br />

Bei dem von Ihnen beschriebenen Verfahren<br />

könnten bestimmte Figuren oder<br />

das Design von Gebrauchsgegenständen<br />

nachgeahmt beziehungsweise kopiert<br />

werden. Bei Skulpturen oder Figuren<br />

insbesondere künstlerischer Art, zu denen<br />

etwa auch Comicfiguren oder dreidimensionale<br />

Nachbildungen von Personen<br />

oder Figuren der Literatur oder des Films<br />

gehören, kommt eine Verletzung des Urheberrechts<br />

in Betracht.<br />

Bei anderen Gegenständen des täglichen<br />

Gebrauchs geht es um Design, das aber<br />

auch ohne besonderen künstlerischen<br />

Wert rechtlich geschützt sein kann:<br />

Nach dem Geschmacksmustergesetz<br />

sind auch Entwurf und Formgebung von<br />

Gebrauchsgegenständen schutzfähig, die<br />

keine überdurchschnittliche oder „künstlerische“<br />

Gestaltung aufweisen.<br />

Während nach deutschem Geschmacksmusterrecht<br />

eine Eintragung in ein Register<br />

erfolgen muss, gibt es nach europäi-<br />

Abbildung 2: Beim Herstellen und Kopieren dreidimensionaler Objekte sind Urheberrecht und Geschmacksmusterschutz<br />

zu beachten.<br />

schem Recht zusätzlich die Möglichkeit,<br />

Geschmacksmusterschutz mit Wirkung<br />

für die gesamte EU zu erlangen – sogar<br />

ohne dass eine Eintragung in ein zentrales<br />

Register erfolgen muss [1].<br />

Wegen dieser fehlenden Registrierungspflicht<br />

im Bereich des Urheberrechts und<br />

des Gemeinschaftsgeschmacksmusters<br />

lässt sich nicht vorab wirksam prüfen, ob<br />

ein 3-D-Auftragsdruck fremde Rechte verletzt.<br />

Daher sollten Sie sicherstellen, dass<br />

vor Durchführung eine Freistellungserklärung<br />

Ihrer jeweiligen Auftraggeber<br />

vorliegt, nach der keine Rechte Dritter<br />

an den übermittelten oder erstellten Entwürfen<br />

bestehen, und dass die Auftraggeber<br />

Sie von jeder Haftung freistellen,<br />

die infolge bestehender konkurrierender<br />

Rechte Dritter eintritt.<br />

Privatkopie?<br />

Beachten Sie auch, dass die Rechtsgrundlagen<br />

über die Privatkopie, nach denen<br />

eine Vervielfältigung urheberrechtlich<br />

geschützter Werke für den privaten oder<br />

eigenen Gebrauch auch durch Dritte zulässig<br />

ist [2], nur dann gelten, wenn die<br />

Vervielfältigung unentgeltlich oder auf<br />

Papier oder einem ähnlichen Träger mittels<br />

beliebiger fotomechanischer Verfahren<br />

oder anderer Verfahren mit ähnlicher<br />

Wirkung erfolgt.<br />

Da nicht davon auszugehen ist, dass<br />

Sie den 3-D-Druck kostenfrei anbieten<br />

können, wird es für die Anwendung der<br />

Privatkopie-Regelungen darauf ankommen,<br />

ob die Rechtsprechung den 3-D-<br />

Druck gleichwertig zur Papierkopie ansieht:<br />

Selbst wenn man das physische<br />

Ergebnis eines 3-D-Drucks als prinzipiell<br />

vergleichbar zu einer 2-D-Papierkopie ansieht,<br />

insbesondere weil es sich hier um<br />

eine nicht digitale, sondern körperliche<br />

Vervielfältigung handelt, ist doch anzunehmen,<br />

dass mit der Entwicklung neuer<br />

technischer Verfahren auch die Rechtslage<br />

an die wirtschaftlichen Interessen<br />

angeglichen wird.<br />

Ich gehe davon aus, dass künftig entweder<br />

die Rechtsprechung den 3-D-Druck<br />

nicht als „anderes Verfahren mit ähnlicher<br />

Wirkung“ im Sinne der Vorschrift<br />

ansehen oder dass der Gesetzgeber die<br />

Norm entsprechend umgestalten wird,<br />

sodass billige 3-D-Druck-Nachahmungen<br />

auch bei der Privatkopie „mittels Dritter“<br />

künftig verboten werden. (mhu) n<br />

Infos<br />

[1] Gemeinschaftsgeschmacksmusterverordnung<br />

(GGV): [http:// oami. europa. eu/ de/​<br />

design/ pdf/ reg‐2002‐3687. pdf]<br />

[2] Paragraf 53 UrhG: [http:// www.​<br />

gesetze‐im‐internet. de/ urhg/]<br />

Der Autor<br />

RA Fred Andresen ist Mitglied der Rechtsanwaltskammer<br />

München und der Arbeitsgemeinschaft<br />

Informationstechnologie im Deutschen Anwaltverein<br />

(DAVIT).<br />

© Kristijan Zontar, 123RF.com


Bücher über KVM sowie zur C++-Standardbibliothek<br />

Tux liest<br />

Bücher 08/2012<br />

Forum<br />

Die Bücherseite stellt diesmal ein Buch über die Virtualisierung mit KVM vor. Der zweite Titel ist die überarbeitete<br />

Neuauflage des dicken Wälzers von Nicolai Josuttis zur C++-Standardbibliothek. Udo Seidel, Reiner Grimm<br />

www.linux-magazin.de<br />

83<br />

Die Autoren Michael Kofler und Ralf<br />

Spenneberg haben sich mit ihren Fachbüchern<br />

einen Namen gemacht. Mit „KVM<br />

für die Server-Virtualisierung“ liegt nun<br />

ihre erste gemeinsame Arbeit vor.<br />

Kernel Virtual Machine<br />

Sie haben das Thema KVM ausgezeichnet<br />

und umfassend recherchiert. Der Leser<br />

muss keine Vorkenntnisse zum Thema<br />

Virtualisierung besitzen, sollte aber ein<br />

erfahrener <strong>Linux</strong>-Kenner sein. Am Anfang<br />

stehen eine kurze Einführung ins Thema<br />

Virtualisierung und eine Einordnung von<br />

KVM in das <strong>Software</strong>-Angebot.<br />

Kofler und Spenneberg schaffen es, einige<br />

Sachverhalte aus der Vogelperspektive<br />

darzustellen und bei anderen tief ins<br />

technische Detail zu gehen. Im Kapitel<br />

„Virtuelle Datenträger“ lernt der Leser<br />

etwa, wie er mit Dritt-Tools Festplatten,<br />

Dateisysteme und Dateien der Gäste von<br />

außen ausliest oder gar bearbeitet. Die<br />

einzelnen Kapitel sind weitgehend in sich<br />

geschlossen und erlauben dem Leser eine<br />

eigene Reihenfolge der Themenabhandlung.<br />

Ist Wissen aus anderen Kapiteln<br />

nötig, findet er klare Verweise auf die<br />

entsprechenden Seiten.<br />

Das Buch ist garniert mit vielen nützlichen<br />

Tipps und Verweisen auf zusätzliche<br />

Dokumentationen. Die kleine<br />

Schriftgröße der angegebenen URLs<br />

Info<br />

Michael Kofler, Ralf Spenneberg:<br />

KVM für die Server-Virtualisierung<br />

Addison-Wesley, 2012<br />

350 Seiten<br />

40 Euro<br />

ISBN: 978-3-8273-3149-6<br />

ist gewöhnungsbedürftig, hat aber den<br />

Charme, dass es fast keine hässlichen<br />

Zeilenumbrüche gibt. Sehr gut gelungen<br />

ist die Unterscheidung von Root und normalen<br />

Benutzern bei den dargestellten<br />

Kommandobeispielen.<br />

Wer Kofler- oder Spenneberg-Bücher<br />

kennt, findet auch im KVM-Buch den<br />

angenehmen Schreibstil wieder. Obwohl<br />

nur rund 350 Seiten dick, lässt das Buch<br />

nichts vermissen. Wer KVM halbwegs<br />

professionell betreiben möchte, kann den<br />

Kaufpreis kaum besser investieren.<br />

C++-Bibliotheksführer<br />

Gut zwölf Jahre nach der ersten Auflage<br />

von Nicolai Josuttis’ englischsprachigem<br />

Standardwerk „The C++ Standard Library:<br />

A Tutorial and Reference“ ist die<br />

überarbeitete Neuauflage erschienen. Das<br />

ist kein Zufall, wurde doch vor gut einem<br />

halben Jahr der neue C++11-Standard<br />

verabschiedet. Entsprechend deutlich hat<br />

das Werk an Umfang zugelegt: von 800<br />

auf mehr als 1100 Seiten.<br />

Josuttis erklärt souverän und detailliert<br />

die Standardbibliothek der Programmiersprache<br />

C++. Dabei beschreibt er<br />

die klassische Bibliothek, erweitert um<br />

die neue C++11-Funktionalität. Bevor der<br />

Autor in die Tiefe geht, führt er zunächst<br />

die neuen Features in kompakter Form<br />

ein. Damit legt er die Basis, um sich dann<br />

der näheren Vorstellung zu widmen. Dabei<br />

bleibt der Autor seiner bewährten<br />

Strategie aus der ersten Auflage treu: Zuerst<br />

erklärt er die Konzepte, zeigt dann<br />

mit vielen Quelltext-Beispielen deren<br />

Anwendung und bietet zum Abschluss<br />

eine Referenz.<br />

Das Werk beschreibt unter anderem die<br />

nützlichen Werkzeuge des neuen Sprachstandards.<br />

Dies sind die bekannten Paare,<br />

aber insbesondere auch die neuen Tupel,<br />

Smart Pointer und Type Traits. Neben den<br />

bekannten sequenziellen und assoziativen<br />

Containern widmet sich der Autor<br />

auch den neuen Containern – dem Array<br />

und den lang vermissten ungeordneten<br />

Containern, besser bekannt unter dem<br />

Namen assoziative Arrays oder auch<br />

Hashtabellen.<br />

Es folgen Kapitel zu den Algorithmen der<br />

Standard Template Library (STL), Iteratoren,<br />

Strings, zur Ein- und Ausgabe mit<br />

Streams und zur Internationalisierung.<br />

Obwohl diese Abschnitte im Grunde auf<br />

der ersten Auflage basieren, vergisst der<br />

Autor auch hier die neuen Features nicht.<br />

Exemplarisch seien die Lambda-Funktionen<br />

und ihr Einsatz in den Algorithmen<br />

der STL genannt. Die verbleibenden drei<br />

Kapitel hingegen sind ausschließlich<br />

C++11 gewidmet.<br />

Nicolai Josuttis Buch liest sich gewohnt<br />

flüssig und ist genau das, was es verspricht:<br />

Tutorial und Referenz zugleich.<br />

Trotz seines beeindruckenden Umfanges<br />

ist es sehr kurzweilig zu lesen. Lediglich<br />

die sich zu häufig wiederholenden Textbausteine<br />

stören die Lesefreude ein wenig.<br />

Kombiniert mit den vielen Beispielprogrammen<br />

ist es ein idealer Startpunkt,<br />

um sich mit der C++-Standardbibliothek<br />

besser vertraut zu machen. Diese Neuauflage<br />

ist ein Muss für den professionellen<br />

C++-Entwickler. (mhu) n<br />

Info<br />

Nicolai M. Josuttis:<br />

The C++ Standard Library,<br />

2nd ed.<br />

Addison-Wesley, 2012<br />

1130 Seiten<br />

55 Euro<br />

ISBN: 978-0-3216-2321-8


Forum<br />

www.linux-magazin.de Leserbriefe 08/2012<br />

84<br />

Auf den Punkt gebracht<br />

Leserbriefe<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 />

Kindle-Clippings<br />

05/​12, S. 92: Den Perl-Snapshot „Datensauger“<br />

fand ich ausgezeichnet. Ich habe<br />

eine kleine Anmerkung zum Format der<br />

Datei »My Clippings.txt«. Mein Kindle<br />

Touch mit der Firmware-Version 5.1 fügt<br />

ein weiteres Wort zwischen »‐« und dem<br />

Typ (Markierung, Notiz, Lesezeichen)<br />

ein. Das geschieht sowohl bei deutscher<br />

als auch bei englischer Menüführung.<br />

Nach einer kleinen Änderung in »ClippingsParser.pm«<br />

wird die Datei wieder<br />

richtig geparst und die SQlite-Datenbank<br />

korrekt befüllt.<br />

Peter Lidauer, per E-Mail<br />

Dateisystem-Details<br />

07/​12, S. 22: Vor lauter Detailwissen ist<br />

dem Autor Udo Seidel in der Dateisystemübersicht<br />

ein Schnitzer unterlaufen:<br />

Dateinamen sind eigentlich Namen von<br />

Verweisen auf Inodes, und davon kann<br />

es natürlich beliebig viele geben. Bei Verzeichnissen<br />

ist das sogar immer so, denn<br />

der Name sowie die Einträge ».« und »..«<br />

in allen Unterverzeichnissen zeigen alle<br />

auf denselben Inode. Durch etwas Zauberei<br />

wird dieser Anschein bei Einhängepunkten<br />

sogar dateisystemübergreifend<br />

erweckt. Das führt dazu, dass Inode-<br />

Nummern scheinbar mehrfach vergeben<br />

sind. Auf meinem Rechner haben etwa<br />

»/«, »/.« und »/..«, aber auch »/home«<br />

alle die Nummer 2.<br />

Bei normalen Dateien ist es mit der Einszu-eins-Beziehung<br />

vorbei, wenn man<br />

ihnen mit »ln« weitere Namen gibt. Witzigerweise<br />

existiert auch die Eins-zu-null-<br />

Beziehung, wenn eine noch geöffnete Datei<br />

gelöscht wird. Dateien an sich kann<br />

man gar nicht löschen, nur deren Namen.<br />

Den Inode samt Daten räumt der Kernel<br />

erst weg, wenn weder Namen noch zugreifende<br />

Prozesse existieren.<br />

Was die Zeitstempel und Userland-Tools<br />

betrifft, so ist der Befehl »stat« auskunftsfreudig.<br />

Seit Perl 5.8.8 eignet sich außerdem<br />

Time::HiRes, das allerdings auf fünf<br />

Nachkommastellen rundet, als Ersatz für<br />

die Funktion »stat()«. Aus dem schlichten<br />

»ls« lässt sich mehr Genauigkeit mit der<br />

Option »‐‐time‐style« herauskitzeln. Ich<br />

empfehle folgende Aliase:<br />

alias lln='ls ‐l ‐‐time‐style="+%F %T.%N"'<br />

alias llm='ls ‐l ‐‐time‐style="+%F %T.%03N"'<br />

Dabei füllen aber leider ältere »ls«-Versionen<br />

»%03N« mit Leerzeichen auf.<br />

Daniel Pfeiffer, per E-Mail<br />

Der Fokus des Artikels liegt auf dem Problem,<br />

dass das System ohne freie Inodes<br />

keine neuen Dateien mehr anlegen kann.<br />

Dieses Problem ist in meiner Praxis tatsächlich<br />

schon aufgetreten.<br />

Danke für den Hinweis zum Auslesen der<br />

Nanosekunden-Information mit Perl. Es<br />

ist richtig, dass Glibc die Information seit<br />

einiger Zeit bereitstellt. Dies trifft insbesondere<br />

für den Systemaufruf »stat()« zu,<br />

den die Programme »stat« und »ls« verwenden.<br />

Das Nanosekunden-genaue Setzen<br />

eines Zeitstempels mit »touch« schlägt<br />

jedoch fehl, wenn man keine Referenzdatei<br />

verwendet. Auch beim Transport über<br />

das Netzwerk geht die Nanosekunden-<br />

Information verloren. (Udo Seidel)<br />

Incron<br />

07/​12, S. 56: Eine klitzekleine Korrektur<br />

zu den Informationen über Incron, das<br />

ich seit Jahren benutze und schätze: Das<br />

Tool eignet sich auch dazu, auf Verände-<br />

rungen in Dateien zu reagieren. Auf meinem<br />

System beobachtet es beispielsweise<br />

Änderungen von »/etc/passwd«.<br />

Helmut Hullen, per E-Mail<br />

07/​12, S. 56: Eine interessante Alternative<br />

zu Incron ist das Programm Iwatch<br />

[http://​­iwatch.​­sourceforge.​­net]. Es kann<br />

nämlich auch rekursiv arbeiten, was ich<br />

als sehr nützliches Feature empfinde.<br />

Allerdings, und das sehe ich eher als<br />

Nachteil, verwendet es eine XML-Datei<br />

zur Konfiguration.<br />

Christoph Kaminski, per E-Mail<br />

Bash Bashing<br />

07/​12, S. 92: Im Bash Bashing ist Herrn<br />

Bablok ein Fehler unterlaufen. Erst weist<br />

er im Zusammenhang mit Grep und<br />

Backticks auf das Problem mit Leerzeichen<br />

in Dateinamen hin, und dann das:<br />

find . ‐type f ‐printf "%T@ %p\n"U<br />

| sort ‐n | cut ‐d" " ‐f2<br />

Diese Konstellation zeigt die gefundenen<br />

Dateinamen nur bis zum ersten Space<br />

an. Besser ist:<br />

find . ‐type f ‐printf "%T@ %p\n"U<br />

| sort ‐n | sed 's#[^\ ]* ##'<br />

Oder einfach:<br />

find . ‐type f ‐printf "%T@ %p\n"U<br />

| sort ‐n | cut ‐d" " ‐f2‐<br />

Götz Babin-Ebell, per E-Mail<br />

Erratum<br />

06/​12, S. 71: Auf der Bücherseite „Tux liest“<br />

haben wir den Namen eines Rezensenten<br />

bedauerlicherweise zu „Mölle“ verkürzt. Er<br />

heißt korrekt Andreas Möller und hat das<br />

Video-Training zu HTML 5 besprochen.


Insecurity Bulletin: Schwachstelle in Xinetd<br />

Tückische Vermittlung<br />

Insecurity Bulletin 08/2012<br />

Know-how<br />

Wenig bekannte Features und Unix-Altlasten können als Einfallstore in einen <strong>Linux</strong>-Rechner dienen. Wer kennt<br />

beispielsweise einen Dienst namens Tcpmux? Mark Vogelsberger<br />

www.linux-magazin.de<br />

85<br />

Der Superserver Xinetd [1] ist der um<br />

zahlreiche Sicherheitsfeatures erweiterte<br />

Nachfolger des Daemons Inetd. Seine<br />

Hauptaufgabe besteht darin, nach Verbindungen<br />

auf bestimmten Netzwerkports<br />

zu lauschen. Geht eine Anfrage<br />

ein, so startet Xinetd das konfigurierte<br />

Serverprogramm. Einige sehr einfache<br />

Netzwerkprotokolle sind auch direkt in<br />

Xinetd implementiert. Dazu gehören beispielsweise<br />

die Daytime-, Discard- oder<br />

Echo-Dienste. Da Xinetd alle Netzwerkdienste<br />

verwaltet, lassen sich über den<br />

Superserver auch Zugangsbeschränkungen<br />

realisieren, etwa per TCP-Wrapper.<br />

Multiplexer verbindet<br />

Unter den zahlreichen von Xinetd unterstützten<br />

Protokollen findet sich auch<br />

der Dienst Tcpmux beziehungsweise Tcpmuxplus<br />

[2]. Dieser in RFC 1078 spezifizierte<br />

Dienst lauscht auf Port 1. Genauso<br />

einzigartig wie die Portnummer ist auch<br />

seine Aufgabe: Tcpmux, der „TCP Port<br />

Service Multiplexer“, dient lediglich als<br />

Vermittler.<br />

Der Client sendet an den Daemon eine<br />

Anfrage mit dem Namen des Dienstes,<br />

mit dem er eine Verbindung aufbauen<br />

möchte. Der Tcpmux-Server antwortet<br />

hierauf entweder mit »+« oder mit »‐«,<br />

je nachdem, ob der angefragte Dienst<br />

Abbildung 1: Tcpmux vermittelt einen Angreifer auf Wunsch an den FTP-<br />

Server weiter, der eigentlich gar nicht zugänglich sein dürfte.<br />

auf dem System vorhanden ist. Bei einer<br />

positiven Antwort startet der Daemon<br />

den angeforderten Dienst bereitwillig<br />

sofort. Andernfalls schließt er nur die<br />

Verbindung.<br />

Unterstützt Xinetd auf einem System Tcpmux,<br />

verbietet aber bestimmte andere<br />

Dienste, so kann ein Angreifer mit einem<br />

Umweg über Tcpmux trotzdem auf diese<br />

zugreifen. Xinetd lässt Tcpmux zu – der<br />

Angreifer kann über den Multiplexer Zugriff<br />

auf das andere, eigentlich verbotene<br />

Protokoll erlangen.<br />

Damit die Attacke erfolgreich ist, muss<br />

Tcpmux aktiviert sein, was ein Absatz<br />

in der Konfigurationsdatei »/etc/xinetd.<br />

conf« oder eine eigene Datei im Verzeichnis<br />

»/etc/xinetd.d/« erledigt. Die meisten<br />

<strong>Linux</strong>-Distributionen aktivieren den Multiplexer-Dienst<br />

in der Standardeinstellung<br />

allerdings nicht.<br />

Die Attacke erfolgt, indem der Angreifer<br />

sich mit dem Kommando »telnet Host 1«<br />

mit dem Tcpmux-Dienst verbindet. Gibt<br />

er anschließend den Namen eines Dienstes<br />

ein, etwa »ftp«, startet dieser – egal ob<br />

deaktiviert oder nicht (Abbildung 1). Das<br />

funktioniert selbstverständlich nur, wenn<br />

in Xinetd unter diesem Namen ein Dienst<br />

registriert ist.<br />

Diese Sicherheitslücke hat Thomas Swan<br />

von Federal Express entdeckt [3], der<br />

auch ein Patch für diese unter CVE-<br />

2012-0862 registrierte<br />

Schwachstelle bereitgestellt<br />

hat [4]. Nach<br />

Begutachtung durch<br />

einen früheren Xinetd-<br />

Entwickler und den<br />

Maintainer des Red-<br />

Hat-Pakets ging die<br />

Nachbesserung in die<br />

Xinetd-Version 2.3.15<br />

ein. (mhu) n<br />

Infos<br />

[1] Xinetd: [http:// www. xinetd. org]<br />

[2] „TCP Port Service Multiplexer (Tcpmux)“,<br />

RFC 1078: [http:// tools. ietf. org/ html/​<br />

rfc1078]<br />

[3] Eintrag in Red Hats Bugzilla:<br />

[https:// bugzilla. redhat. com/<br />

show_bug. cgi? id=790940]<br />

[4] Patch von Thomas Swan: [https:// bugzilla.​<br />

redhat. com/ attachment. cgi? id=583311]<br />

Der Autor<br />

Mark Vogelsberger ist derzeit wissenschaftlicher<br />

Mitarbeiter am Institute for Theory and Computation<br />

der Harvard University. Er war bis 2010 Autor<br />

der „Insecurity News“ des <strong>Linux</strong>-<strong>Magazin</strong>s und<br />

schreibt nun auf [http:// www. linux‐magazin. de]<br />

die Online-Ausgabe des „Insecurity Bulletin“.<br />

© David Morrison, 123RF


Programmieren<br />

www.linux-magazin.de C++11 08/2012<br />

Modernes C++ in der Praxis – Folge 5<br />

Im Gleichtakt<br />

88<br />

Die C++11-Reihe beschäftigt sich weiter mit dem Synchronisieren von Threads. Diesmal setzt der Chef-Thread<br />

Bedingungsvariablen ein, um die Tätigkeit seiner Mitarbeiter-Threads zu koordinieren. Rainer Grimm<br />

C++11<br />

asynchrone Aktionen<br />

override<br />

decltype Das eigentliche Tagwerk beginnt für den<br />

Arbeiter-Thread in der »while«-Schleife<br />

Move-Semantik<br />

Neue Container<br />

auto<br />

(Zeilen 12 bis 18). Solange der Wahr-<br />

Variadic Templates<br />

heitswert »notified« nicht »true« ist, führt<br />

bind er immer den gleichen monotonen Job<br />

Type Traits<br />

aus: Er gibt den Mutex frei, schläft für 1<br />

C++11<br />

Alias Templates<br />

Tuple Sekunde und bindet den Mutex wieder.<br />

Zum einen achtet er darauf, dass selbst<br />

default<br />

function<br />

das Lesen des Wahrheitswerts »notified«<br />

Range-basierte<br />

C++11<br />

durch den Mutex »notifiedMutex« ge-<br />

nullptr<br />

For-Schleife<br />

schützt ist, zum anderen darauf, dass<br />

Zufallszahlen<br />

Zeitbibliothek er den Mutex in Zeile 15 für 1 Sekunde<br />

delete<br />

final<br />

freigibt, damit der Boss den Wert auf<br />

Benutzerdefinierte Literale<br />

Smart Pointer »true« setzen kann.<br />

Hashtabellen<br />

static_assert<br />

reguläre Ausdrücke<br />

Obwohl der Boss alles richtig gemacht<br />

Threads hat (Abbildung 1), ist er mit seinem Pro-<br />

Lambda-Funktionen<br />

Array<br />

totyp nicht zufrieden. Ihn stört, dass bis<br />

zu einer ganzen Sekunde vergeht, bis<br />

der Arbeiter auf eine Benachrichtigung<br />

Multicore-Rechner und Multithreading<br />

der Wahrheitswert auf »true« gesetzt reagiert. Der Arbeiter fühlt sich hingegen<br />

gehören zum modernen IT-Alltag.<br />

Doch die Arbeit mehrerer Threads will<br />

koordiniert sein. Dieser Artikel greift<br />

das Programmierbeispiel aus der vorigen<br />

Folge wieder auf, in dem ein Chef-<br />

Thread sechs Mitarbeiter per Zuruf zu<br />

koordinieren versuchte. Zunächst riefen<br />

sie alle durcheinander – erst als der Boss<br />

die Regel ausgab, dass jeder Arbeiter seinen<br />

Kollege zuerst ausreden lassen soll,<br />

kehrte Ordnung ein. Dabei repräsentierte<br />

je ein Thread einen Arbeiter, und der<br />

Ausgabekanal »std::cout« stand für die<br />

gemeinsam genutzte Variable, die es zu<br />

schützen gilt [1].<br />

Synchronisation per<br />

Wahrheitswert<br />

Statt mit Zurufen möchte der Boss seine<br />

Mitarbeiter nun mit Hilfe eines Wahrheitswerts<br />

synchronisieren. Er hat sich<br />

das ganz einfach vorgestellt: Ein Arbeiter<br />

beginnt genau dann zu arbeiten, wenn<br />

ist. Da dieser Wert zu Anfang den Wert<br />

»false« besitzt, kann der Boss seinen Arbeitern<br />

das Startsignal geben. Der erste<br />

Prototyp eines kleinen Arbeitsablaufs<br />

geht in C++11 schnell von der Hand,<br />

wie Listing 1 zeigt. Die Codebeispiele<br />

sind aus Platzgründen gekürzt, unter<br />

[2] steht der vollständige Quelltext zum<br />

Download bereit.<br />

Das war einfach, denkt der Boss. In Zeile<br />

27 verpackt er den Mutex »notifiedMutex«<br />

in einen »lock_guard«. Dies stellt sicher,<br />

dass nur ein einziger Thread die kritische<br />

Region in Zeile 28 betreten darf.<br />

Der Arbeiter-Thread in den Zeilen 6 bis<br />

22 hat wesentlich mehr zu tun. In Zeile<br />

10 sperrt er den Mutex »notified_mutex«<br />

mit einem »unique_lock«. Dies ist notwendig,<br />

da ein »unique_lock« mehrmals<br />

freigeben wie auch sperren kann. Damit<br />

ist der »unique_lock« deutlich mächtiger<br />

als der »lock_guard«, den der Chef in<br />

Zeile 27 einsetzt, denn dieser bindet den<br />

Mutex im Konstruktoraufruf.<br />

für seinen Job überqualifiziert, da<br />

er seine ganze Arbeitsenergie auf das<br />

immerwährende Kontrollieren des Wahrheitswerts<br />

verschwenden muss.<br />

Hinsichtlich der Threads hat der Vorgesetzte<br />

bei seiner Implementierung folgende<br />

zwei Anforderungen an einen Benachrichtigungsmechanismus<br />

nicht gut<br />

bedient:<br />

n Die Zeit zwischen dem Senden und<br />

dem Empfangen der Benachrichtigung<br />

soll möglichst kurz sein.<br />

n Der wartende Thread soll möglichst<br />

wenig CPU-Zeit beanspruchen.<br />

Abbildung 1: Die erste Implementierung: Die Synchronisation<br />

über einen gemeinsamen Wahrheitswert<br />

funktioniert.


Der Boss ist wieder in der Pflicht und<br />

sieht sich die Bedingungsvariablen in<br />

C++11 genauer an, denn diese setzen<br />

die beiden Anforderungen deutlich besser<br />

um. Einerseits wacht der Empfänger<br />

bei Benachrichtigung sofort auf, andererseits<br />

verwendet er wenig CPU-Zeit auf<br />

das Warten.<br />

Bedingungsvariablen<br />

Herb<br />

Scott<br />

Bjarne<br />

Andrei<br />

Andrew<br />

David<br />

Worker Boss<br />

Worker Boss<br />

Worker<br />

»prepared«<br />

»prepared«<br />

»prepared«<br />

»prepared«<br />

»prepared«<br />

»prepared«<br />

Bedingungsvariablen bieten zwei Typen<br />

von Operationen: Sie erlauben es, wahlweise<br />

ein Signal zu senden oder auf eins<br />

zu warten. Dabei kann der Adressat einer<br />

Benachrichtigung ein einzelner (»notify_one()«)<br />

oder mehrere Threads (»notify_all()«)<br />

sein, die sich im wartenden<br />

Zustand (»wait()«) befinden. Sendet ein<br />

Thread eine Benachrichtigung an einen<br />

wartenden Thread, so wacht der Empfänger-Thread<br />

auf und fährt mit seiner<br />

Arbeit fort. Der Empfänger muss dabei<br />

die gleiche Bedingungsvariable benützen<br />

wie der Sender-Thread.<br />

Mit dem Arbeitsablauf in Listing 2 sind<br />

der Arbeiter und der Boss deutlich zufriedener.<br />

Zuerst zum Boss: Durch den<br />

Aufruf »condVar.notify_one()« in Zeile<br />

21 schickt er seine Benachrichtigung an<br />

einen Arbeiter. Dieser wartet in Zeile 11<br />

darauf und fährt genau dann mit seiner<br />

Arbeit fort, wenn er die Nachricht erhält.<br />

Dabei verwenden beide den gleichen<br />

Mutex »notifiedMutex«.<br />

Etwas befremdlich wirkt, dass der Boss<br />

und der Arbeiter weiter den Wahrheitswert<br />

»notified« verwenden. Tatsächlich<br />

erhält der Arbeiter nicht nur die Benachrichtigung,<br />

sondern versichert sich<br />

zusätzlich im »wait()«-Aufruf (Zeile 11)<br />

durch die Lambda-Funktion »[]{return<br />

notified;}« [3], dass der Wert auf »true«<br />

gesetzt ist. Das ist notwendig, weil es<br />

vorkommt, dass der Arbeiter irrtümlich<br />

eine Benachrichtigung erhält. Dieses<br />

Phänomen ist unter dem Namen Spurious<br />

Wakeups [4] bekannt. Der Wahrheitswert<br />

»notified« verhindert, dass der<br />

Thread wegen eines solchen Fehlalarms<br />

seine Arbeit aufnimmt.<br />

Synchronisation der<br />

Arbeiterschaft<br />

»START<br />

YOUR WORK«<br />

Die weiteren Details rund um Bedingungsvariablen<br />

hat der Boss unter [5]<br />

nachgelesen. Nun will er sie im großen<br />

Stil für die Koordination seiner Arbeiter<br />

einsetzen. In Abbildung 2 ist sein Plan<br />

dargestellt. Jeder Arbeiter bereitet zuerst<br />

seine Arbeit vor und gibt dem Boss<br />

Bescheid, sobald er fertig ist. Sind alle<br />

»done«<br />

»done«<br />

»done«<br />

»done«<br />

»done«<br />

»done«<br />

»GO HOME«<br />

Abbildung 2: Mit Hilfe von Benachrichtigungen lässt sich der Arbeitsablauf effizient gestalten: Die Arbeiter<br />

geben Bescheid, wenn sie bereit oder fertig sind, der Chef gibt das Kommmando für Arbeit und Feierabend.<br />

Arbeiter mit der Vorbereitung fertig, signalisiert<br />

der Boss allen gleichzeitig, dass<br />

sie mit ihrem Tagwerk beginnen können.<br />

Nun gilt es für den Boss, zu warten,<br />

bis jeder Arbeiter ihm zurückgemeldet<br />

hat, dass er sein Arbeitspaket erledigt<br />

hat. Zum Schluss schickt er Herb, Scott,<br />

Bjarne, Andrei, Andrew und David mit<br />

»GO HOME« in den Feierabend. Der Boss<br />

hat es geschafft. Der komplexe Arbeitsablauf<br />

seiner Arbeiter läuft geordnet ab<br />

(Abbildung 3).<br />

Ein Blick auf den Sourcecode in Listing 3<br />

zeigt: Um die sechs Arbeiter zu koordinieren,<br />

muss der Boss einiges an Buchhaltung<br />

erledigen. Neben Bedingungsvariablen<br />

kommen Locks, Mutexe und<br />

auch atomare Variablen zum Einsatz.<br />

Atomare Variablen bieten atomare Leseund<br />

Schreib-Operationen an, sodass<br />

sie von mehreren Threads gleichzeitig<br />

ohne weiteren Schutzmechanismus<br />

modifiziert werden dürfen. Sie sind Bestandteil<br />

es neuen C++11-Standards [6].<br />

C++11 08/2012<br />

Programmieren<br />

www.linux-magazin.de<br />

89<br />

Listing 1: Synchronisation per Wahrheitswert<br />

01 [...]<br />

02 <br />

03 mutex notifiedMutex;<br />

04 bool notified;<br />

05 <br />

06 void worker(){<br />

07 <br />

08 cout


Programmieren<br />

www.linux-magazin.de C++11 08/2012<br />

90<br />

01 [...]<br />

02 <br />

03 mutex notifiedMutex;<br />

Dabei stehen nicht nur Wahrheitswerte<br />

(»std::atomic_bool«), sondern auch Zeichen<br />

(»std::atomic_char«) und natürliche<br />

Zahlen (»std::atomic_int«) in verschiedenen<br />

Variationen als atomare Datentypen<br />

zu Verfügung.<br />

Mit Hilfe des neuen Klassentemplates<br />

»std::atomic« kann der erfahrene<br />

C++-Entwickler zudem einen eigenen<br />

Datentyp definieren, der den Datentyp<br />

»T« um atomare Eigenschaften erweitert.<br />

Datenstrukturen, die durch den Einsatz<br />

von atomaren Datentypen gänzlich ohne<br />

Locks und Mutexe auskommen, werden<br />

als Lock-free bezeichnet. Tiefere Einsichten<br />

vermittelt der Artikel [7] von Anthony<br />

Williams.<br />

In Listing 3 initiiert der Boss den Arbeitsablauf,<br />

indem er seine Arbeiter ab Zeile<br />

04 condition_variable condVar;<br />

05 bool notified;<br />

06 <br />

07 void worker(){<br />

08 <br />

Abbildung 3: Dank Bedingungsvariablen klappt der Arbeitsablauf wie am<br />

Schnürchen. Die Arbeiter warten auf den Boss und dieser auf die Arbeiter.<br />

09 cout


den Mutex. Damit harren die anderen<br />

Arbeiter vergeblich auf den Mutex und<br />

der ganze Arbeitsablauf klemmt. Die zunächst<br />

vergessenen künstlichen Bereiche<br />

in den Zeilen 25 bis 31 und 40 bis 46<br />

lösen das Problem: »unique_lock« verliert<br />

seine Gültigkeit und gibt automatisch seinen<br />

Mutex frei.<br />

Wie geht’s weiter?<br />

Die anfängliche Euphorie des Chefs ist<br />

allmählich der Skepsis gewichen. Zwar<br />

hat sich sein Programm zur Koordination<br />

der Arbeiter in den letzten Wochen im<br />

Großen und Ganzen bewährt – sieht man<br />

von dem Vorfall ab, als die Arbeiter ihre<br />

»prepared«-Nachricht schon verschickten,<br />

bevor sich der Boss in den Wartezustand<br />

begeben hatte. Das<br />

Ergebnis war, dass die<br />

Arbeiter vergeblich auf<br />

ihre Benachrichtigung<br />

zum Arbeitsbeginn<br />

warteten.<br />

Den Boss stört aber<br />

vor allem, dass die<br />

ganze Koordination<br />

der Arbeiter viel zu<br />

komplex ist. Sie erfordert<br />

Sychronisationsmittel<br />

wie etwa Bedingungsvariablen,<br />

Locks,<br />

Mutexe, ja sogar atomare Variablen. Kein<br />

Wunder, dass sich Fehler einschleichen.<br />

Da entdeckt er beim Schmökern im neuen<br />

C++11-Standard die Futures. Sie erlauben<br />

es, in Programmen auf die Vollendung<br />

Abbildung 4: Die Arbeiter blockieren sich gegenseitig, weil der erste noch<br />

den steuernden Mutex hält.<br />

einer Aufgabe zu warten. Die nächste<br />

Folge dieser Artikelserie wird zeigen, ob<br />

es dem Boss mit Futures tatsächlich leichter<br />

von der Hand geht, seine sechs Mitarbeiter<br />

zu koordinieren. (mhu) n<br />

C++11 08/2012<br />

Programmieren<br />

www.linux-magazin.de<br />

91<br />

Listing 3: Synchronisieren mit Bedingungsvariablen<br />

01 [...]<br />

02 <br />

03 int getRandomTime(int start, int end){<br />

04 <br />

05 random_device seed;<br />

06 mt19937 engine(seed());<br />

07 uniform_int_distribution<br />

dist(start,end);<br />

08 <br />

09 return dist(engine);<br />

10 };<br />

11 <br />

12 class Worker{<br />

13 public:<br />

14 Worker(string n):name(n){};<br />

15 <br />

16 void operator() (){<br />

17 <br />

18 // prepare the work and notfiy the boss<br />

19 int prepareTime= getRandomTime<br />

(500,2000);<br />

20 sleep_for(milliseconds(prepareTime));<br />

21 preparedCount++;<br />

22 cout


Programmieren<br />

www.linux-magazin.de Perl-Snapshot 08/2012<br />

92<br />

E-Books im Eigenbau<br />

Gutenberg at Home<br />

Fertige E-Books für den Kindle leicht gemacht: Das CPAN-Modul »EBook::MOBI« überführt das bewährte POD-<br />

Format für Perl-Dokumentation per Tastendruck in das digitale Mobi-Format für unterschiedliche mobile Endgeräte<br />

der Kindle-Familie und ihrer Ableger. Michael Schilli<br />

Image-Tag, aber »EBook::MOBI« versteht<br />

das Pseudo-Tag<br />

=image /Pfad/Image.jpg Beschreibung<br />

und fügt die Bilddatei mit Bildtext in<br />

das E-Book ein. Doch wie wurde aus<br />

der POD-Datei ein digitales E-Book im<br />

Amazon-Format?<br />

Listing 1 benötigt drei CPAN-Module,<br />

»Sysadm::Install«, »Pod::Parser« und<br />

»EBook::MOBI«, die der Aufruf<br />

perl ‐MCPAN ‐e 'install Sysadm::Install,<br />

EBook::MOBI, Pod::Parser'<br />

© Olga Yastremska, 123RF.com<br />

Meine Arbeiten an der Perl-Snapshot-<br />

Reihe beginnen regelmäßig mit einem<br />

Manuskript im POD-Format (Abbildung<br />

1). Schließlich ist das bewährte<br />

Dokumen tationsformat einfach zu tippen<br />

und zu lesen, und eine Reihe von Tools<br />

wandelt es problemlos um: in HTML, in<br />

Manual-Seiten, in Latex (und damit in<br />

PDF oder Postscript) oder in das vom<br />

<strong>Linux</strong>-<strong>Magazin</strong>s gewünschte Format [2].<br />

Mit dem CPAN-Modul »EBook::MOBI« ist<br />

es sogar möglich, aus POD Mobi-Dateien<br />

zu erzeugen und private Erzeugnisse als<br />

E-Books für Kindle-Lesegeräte und ‐Apps<br />

zu veröffentlichen.<br />

Cloud teilt aus<br />

Dank einer Reihe von Mechanismen zur<br />

Verbreitung von E-Book-Dateien innerhalb<br />

Amazons Cloud und daran angeschlossener<br />

Endgeräte dauert es nicht<br />

lange, bis nach der Transformation in<br />

das proprietäre HTML-ähnliche Format<br />

selbst gefertigte E-Books auf Kindle und<br />

Android-Geräten, iPads oder iPhones erscheinen.<br />

Kurz: auf jeder Plattform, auf<br />

der Amazons Kindle-App läuft.<br />

Die Abbildung 2 präsentiert das Android-<br />

Modell Galaxy 4.0 – ein telefonloses<br />

Smartphone, das einem iPod Touch nicht<br />

unähnlich aussieht – mit einer Neuerscheinung<br />

im Kindle-Store: dem aus<br />

dem Manuskript-POD der aktuellen Perl-<br />

Snapshot-Folge generierten E-Book. Die<br />

zugehörige Text ansicht in Abbildung 3<br />

zeigt, wie die Kindle-App die Mobi-Datei<br />

in ein ansprechendes digitales Layout<br />

verwandelt.<br />

Ein Blick auf das Original-Manuskript in<br />

Abbildung 1 offenbart, dass die Redakteure<br />

meine Titelvorschläge oft umschreiben:<br />

Aus „Das feuerrote Kindle-Mobil“<br />

wurde so ein konservatives „Gutenberg<br />

at Home“. Noch etwas fällt auf: Das POD-<br />

Format verfügt von Haus aus über kein<br />

vom CPAN-Mirror auf den Rechner holt<br />

und installieren lässt. Damit ist das Handwerkszeug<br />

vorhanden, um aus einer auf<br />

der Kommandozeile übergebenen POD-<br />

Datei ein E-Book für Kindle-Apps namens<br />

»book.mobi« zu generieren.<br />

Parser-Klasse sucht Titel<br />

Eigentlich benötigt »EBook::MOBI« in<br />

Listing 1 nur die Zeilen ab »package<br />

main«. Da aber »pod2mobi« den Inhalt<br />

der ersten »=head1«-Zeile des POD extrahiert<br />

und mit »set_title()« zum Titel des<br />

E-Books erhebt, definiert »package MyParser«<br />

ab Zeile 4 eine von »Pod::Parser« abgeleitete<br />

Klasse. Ihre einzige Aufgabe ist<br />

es, im Callback »command« ab Zeile 17<br />

zu überprüfen, ob es sich beim aktuellen<br />

POD-Kommando um die erste Hauptüberschrift<br />

vom Typ »=head1« handelt,<br />

und falls ja, deren Inhalt in der Instanzvariablen<br />

»__title« zu sichern.<br />

Online PLUS<br />

In einem Screencast demonstriert Michael<br />

Schilli das Beispiel: [http://​www.<br />

linux-magazin.de/​plus/​2012/08]


Android User<br />

im Abo<br />

Die Monatszeitschrift für Android-Fans,<br />

Smartphone- und Tablet-Nutzer<br />

Neu mit Prämie!<br />

15% sparen beim<br />

Print- oder Digital-Abo<br />

und exklusive Prämie<br />

sichern!<br />

Abbildung 1: Die POD-Datei mit dem Originalmanuskript dieses Artikels.<br />

Die Methode »title()« ab Zeile 9 spielt<br />

diesen Inhalt dann etwa dem Hauptprogramm<br />

zu. Dieses ruft die Methode<br />

»parse_from_file()« des Parsers auf und<br />

übergibt den Namen der POD-Datei und<br />

die Datei »/​dev/​null«, damit beim Durchforsten<br />

des POD-Codes keine Ausgaben<br />

auf »Stdout« erfolgen.<br />

Die Methoden »set_author()« und »set_<br />

title()« der Klasse »EBook::MOBI« setzen<br />

Autor und Titel des Mobi-Dokuments.<br />

Damit Umlaute des UTF-8-kodierten POD-<br />

Textes im E-Book ordentlich erscheinen,<br />

setzt Zeile 55 die Kodierung mit »set_encoding()«<br />

auf »UTF-8«. Fehlt noch, den<br />

POD-Code mit »add_pod_content()« zum<br />

E-Book hinzuzufügen. Der zweite Parameter<br />

»pagemode« veranlasst den Konverter<br />

nach jeder »=head1«-Überschrift<br />

zum Seitenumbruch. Ein »make()« generiert<br />

das Mobi-Format. Die in Zeile 59<br />

aufgerufene Methode »save()« sichert es<br />

unter dem Namen »book.mobi«.<br />

Portables E-Book<br />

Nun ist zu klären, wie das frisch erzeugte<br />

E-Book auf die Endgeräte gelangt, die das<br />

tasche ist nicht im Handel erhältlich.<br />

Angebot gilt nur solange der Vorrat reicht.<br />

Abbildung 2: Die selbst gestrickte Mobi-Datei in der<br />

Rubrik „Neuerscheinungen“ in der Kindle-App auf<br />

einem Galaxy 4.0 Android.<br />

Abbildung 3: Der Text der Mobi-Datei ist hier in der<br />

Kindle-App auf dem Galaxy 4.0 Android im angepassten<br />

Layout zu sehen.<br />

Jetzt bestelleN!<br />

www.android–user.de/abo<br />

Telefon 07131 / 2707 274<br />

Fax 07131 / 2707 78 601<br />

E-Mail: abo@android-user.de


Programmieren<br />

www.linux-magazin.de Perl-Snapshot 08/2012<br />

94<br />

Abbildung 4: Auf <strong>Linux</strong> lädt das Programm Calibre die Mobi-Datei.<br />

Format lesefreundlich anzeigen. Die unter<br />

<strong>Linux</strong> und anderen Betriebssystemen<br />

verfügbare Applikation Calibre stellt das<br />

generierte E-Book zwar dar (Abbildung<br />

4), kommt aber mit den Abbildungen<br />

durcheinander und scheint allgemein<br />

mit dem Mobi-Format auf Kriegsfuß zu<br />

stehen. Bei meinen Tests brachte Calibre<br />

einige Male Kindle-Geräte beim Hochladen<br />

der offiziell unterstützen Dateien<br />

zum Absturz.<br />

SSH auf dem Android<br />

Das im Test verwendete Android-Gerät<br />

Galaxy 4.0 hat die kostenpflichtige<br />

proprietäre App Quick SSHd installiert<br />

(Abbildung 5), die einen SSH-Server star-<br />

tet, mit dem sich das »ssh«-Programm auf<br />

einem Laptop übers WLAN verbindet.<br />

User authentisieren sich per Passwort<br />

oder Private-/​Public-Key-Kombination.<br />

Experimentierfreudige können so, ohne<br />

das Gerät rooten zu müssen, das dortige<br />

Dateisystem erforschen.<br />

Abbildung 6 zeigt, wie das Kommando<br />

»scp« vom Laptop aus die Mobi-Datei<br />

in das Verzeichnis »/mnt/sdcard/kindle«<br />

kopiert, einem Ordner auf der im Android<br />

steckenden SD-Speicherkarte, den die installierte<br />

Kindle-Applikation überwacht.<br />

Findet sie eine neue Mobi-Datei, erscheint<br />

sie in den Bereichen »Home« und »On Device«<br />

der Kindle-Applikation (Abbildung<br />

2). Wenn ein Kindle am USB-Port einer<br />

<strong>Linux</strong>-Box steckt, lässt sich die Datei<br />

Abbildung 5: Die App Quick SSHd startet einen<br />

SSH-Server, der per »scp« die Mobi-Datei im Kindle-<br />

Verzeichnis speichert.<br />

auch ins lokal gemountete Verzeichnis<br />

»/media/Kindle/documents« kopieren.<br />

Ab die Post<br />

Listing 2 nutzt stattdessen die Mail-<br />

Schnittstelle von Amazon, um die Mobi-<br />

Datei an ein Endgerät zu senden. Die<br />

Übertragung ist kostenlos, solange das jeweilige<br />

Gerät über eine Wireless-Verbin-<br />

Listing 1: »pod2mobi«<br />

01 #!/usr/local/bin/perl ‐w<br />

02<br />

03 ###################<br />

04 package MyParser;<br />

05 ###################<br />

06 our @ISA = qw(Pod::Parser);<br />

07<br />

08 ###########################################<br />

09 sub title {<br />

10 ###########################################<br />

11 my( $self ) = @_;<br />

12<br />

13 return $self‐>{ __title };<br />

14 }<br />

15<br />

16 ###########################################<br />

17 sub command {<br />

18 ###########################################<br />

19 my ($parser, $command,<br />

20 $paragraph, $line_num) = @_;<br />

21<br />

22 $paragraph =~ s/\n+$//;<br />

23<br />

24 if( $command eq "head1" ) {<br />

25 $parser‐>{ __title } = $paragraph if<br />

26 !defined $parser‐>{ __title };<br />

27 }<br />

28 }<br />

29<br />

30 ###################<br />

31 package main;<br />

32 ###################<br />

33 use strict;<br />

34 use Sysadm::Install qw( slurp );<br />

35 use EBook::MOBI;<br />

36 use Pod::Parser;<br />

37<br />

38 my( $pod_file ) = @ARGV;<br />

39<br />

40 if( !defined $pod_file ) {<br />

41 die "usage: $0 file.pod";<br />

42 }<br />

43<br />

44 my $parser = MyParser‐>new();<br />

45 $parser‐>parse_from_file(<br />

46 $pod_file, "/dev/null" );<br />

47<br />

48 my $book = EBook::MOBI‐>new();<br />

49 my $pod = slurp ( $pod_file,<br />

50 { utf8 => 1 } );<br />

51<br />

52 $book‐>set_author( "Mike Schilli" );<br />

53 $book‐>set_title( $parser‐>title() );<br />

54<br />

55 $book‐>set_encoding(':encoding(UTF‐8)');<br />

56<br />

57 $book‐>add_pod_content($pod, 'pagemode');<br />

58 $book‐>make();<br />

59 $book‐>save();


Abbildung 6: Das »scp«-Kommando kopiert die Mobi-Datei in den Ordner<br />

der Kindle-Applikation auf dem Android-Gerät.<br />

Abbildung 7: Das selbst gefertigte E-Book erscheint in der persönlichen<br />

Kindle-Library auf dem Amazon-Service.<br />

dung erreichbar ist. Empfängt der Service<br />

eine Mail mit Mobi-Datei als Attachment,<br />

schickt er diese ans angegebene Zielgerät.<br />

Zudem sind diese E-Books über die<br />

Kindle-Cloud auf jedem damit verlinkten<br />

Gerät verfügbar (Abbildung 7).<br />

Das Skript in Listing 2 erwartet den Namen<br />

der zu übertragenden Mobi-Datei<br />

auf der Kommandozeile, zum Beispiel<br />

»mail‐to‐kindle book.mobi«, und erzeugt<br />

mit dem CPAN-Moduls MIME::Lite eine<br />

Mail mit Attachment. Die schickt es an<br />

einen SMTP-Mailserver, der sie zur Amazon-Adresse<br />

weiterleitet. Der Name des<br />

SMTP-Servers in Zeile 33 ist an den verwendeten<br />

Mail-Provider anzupassen.<br />

Der Autor<br />

Michael Schilli arbeitet<br />

als <strong>Software</strong>-Engineer bei<br />

Yahoo in Sunnyvale, Kalifornien.<br />

In seinen seit 1997<br />

erscheinenden Snapshots<br />

forscht er jeden Monat<br />

nach praktischen Anwendungen der Skriptsprache<br />

Perl. Unter [mschilli@perlmeister. com] beantwortet<br />

er gerne Fragen.<br />

Jedes Kindle-Gerät und<br />

jede Kindle-App zeigt<br />

im Menü »Settings«<br />

eine personalisierte E-<br />

Mail-Adresse unter »@<br />

Kindle.com« an. Dort<br />

nimmt Amazon Mobi<br />

und andere Formate<br />

entgegen, jedoch kein<br />

».epub«, und leitet sie<br />

an das via Cloud angeschlossene<br />

Lesegerät.<br />

Die Empfängeradresse<br />

in Zeile 14 ist also im<br />

Skript an das Endgerät<br />

anzupassen.<br />

Vorsicht: Nur über WLAN ist die Übertragung<br />

kostenlos, in Amazons Handy-<br />

Netzwerk Whispernet fallen Gebühren<br />

an. Von der Kindle-Library (Abbildung<br />

7) darf jedes Gerät des Users das E-Book<br />

herunterladen. Abbildung 8 zeigt das<br />

Manuskript auf einem iPad 2.<br />

Noch nicht ganz perfekt<br />

Aber der Teufel steckt wie immer im Detail:<br />

Damit ein E-Book schön formatiert<br />

daherkommt, muss oft<br />

ein Layouter manuell<br />

eingreifen. So dürfen<br />

etwa Abbildungen<br />

nicht zu dicht hintereinander<br />

stehen, damit<br />

sie den Textfluss nicht<br />

unterbrechen, und zu<br />

viele lange Wörter<br />

stören den Zeilenumbruch.<br />

Insgesamt ist das proprietäre<br />

Mobi-Format<br />

weniger durch eine<br />

vollständige Spezifikation<br />

definiert als<br />

dadurch, was auf den jeweiligen Readern<br />

gut ankommt. So erfordern unterschiedliche<br />

Reader oft auch unterschiedliche<br />

Auflösungen für Grafiken. Der Kindle-<br />

Shop ist daher voll mit entsprechenden<br />

Praxisratgebern.<br />

Das CPAN-Modul »EBook::MOBI« baut<br />

auf dem betagten Mobi-Perl-Code [3] auf<br />

und unterstützt, anders als das Original,<br />

leider keine Abbildung des Covers. Der<br />

Code verträgt durchaus noch einige Verbesserungen,<br />

wer mag, sollte sich an dem<br />

Projekt beteiligen. (uba)<br />

n<br />

Infos<br />

[1] Listings zu diesem Artikel:<br />

[ftp:// www. linux‐magazin. de/ pub/ listings/​<br />

magazin/ 2012/ 08/ Perl]<br />

[2] <strong>Linux</strong>-<strong>Magazin</strong>: Hinweise für Autoren:<br />

[http:// www. linux‐magazin. de/ Heft‐Abo/​<br />

Kontakt/ Autor‐werden# textformat]<br />

[3] Mobiperl-VN-Repository: [https:// dev.​<br />

mobileread. com/ svn/ mobiperl/]<br />

[4] Kindle Personal Documents Service:<br />

[http:// www. amazon. com/ gp/<br />

help/ customer/ display. html?​<br />

nodeId=200767340]<br />

Abbildung 8: Das fertige E-Book in der Kindle-Applikation auf dem iPad.<br />

Perl-Snapshot 08/2012<br />

Programmieren<br />

www.linux-magazin.de<br />

95<br />

Listing 2: »mail-to-kindle«<br />

01 #!/usr/local/bin/perl ‐w<br />

02 use strict;<br />

03 use MIME::Lite;<br />

04<br />

05 my( $file ) = @ARGV;<br />

06<br />

07 if( !defined $file ) {<br />

08 die "usage: $0 file.mobi";<br />

09 }<br />

10<br />

11 my $msg = MIME::Lite‐>new(<br />

12 From => 'm@perlmeister.com',<br />

13 To =><br />

14 'Gaxy Galaxy xxx@Kindle.com>',<br />

15 Subject => 'My Ebook',<br />

16 Type => 'multipart/mixed'<br />

17 );<br />

18<br />

19 my $part = MIME::Lite‐>new(<br />

20 Type => 'text/plain',<br />

21 Data => "some text\n",<br />

22 );<br />

23<br />

24 $msg‐>attach( $part );<br />

25<br />

26 $msg‐>attach(<br />

27 Type => 'application/mobi',<br />

28 Path => $file,<br />

29 Filename => $file,<br />

30 Disposition => 'attachment',<br />

31 );<br />

32<br />

33 $msg‐>send( 'smtp', 'mail.some‐smtp.com' );


Service<br />

www.linux-magazin.de IT-Profimarkt 08/2012<br />

98<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, <strong>Software</strong>, 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 />

<strong>Linux</strong> New Media 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 />

1 = Hardware 2 = Netzwerk/TK 3 = Systemhaus<br />

IT-Profimarkt – Liste sortiert nach Postleitzahl<br />

4= Fachliteratur 4= Seminaranbieter 5 = <strong>Software</strong> 5 = <strong>Software</strong> 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 3 3 3 3<br />

imunixx GmbH UNIX consultants 01468 Moritzburg, Heinrich-Heine-Str. 4 0351-83975-0 www.imunixx.de 3 3 3 3 3<br />

Heinlein Professional <strong>Linux</strong> Support GmbH 10119 Berlin, Schwedter Straße 8/​9b 030-405051-0 www.heinlein-support.de 3 3 3 3 3<br />

TUXMAN Computer 10369 Berlin, Anton-Saefkow-Platz 8 030-97609773 www.tuxman.de 3 3 3 3 3<br />

Hostserver GmbH 10405 Berlin, Winsstraße 70 030-47375550 www.hostserver.de 3<br />

Compaso GmbH 10439 Berlin, Driesener Strasse 23 030-3269330 www.compaso.de 3 3 3 3 3<br />

<strong>Linux</strong> Information Systems AG Berlin 12161 Berlin, Bundesallee 93 030-818686-03 www.linux-ag.com 3 3 3 3 3<br />

elego <strong>Software</strong> Solutions GmbH 13355 Berlin, Gustav-Meyer-Allee 25 030-2345869-6 www.elegosoft.com 3 3 3 3<br />

verion GmbH 16244 Altenhof, Unter den Buchen 22 e 033363-4610-0 www.verion.de 3 3 3<br />

Logic Way GmbH 19061 Schwerin, Hagenower Str. 73 0385-39934-48 www.logicway.de 3 3 3 3<br />

Sybuca GmbH 20459 Hamburg, Herrengraben 26 040-27863190 www.sybuca.de 3 3 3 3 3<br />

iTechnology GmbH 20537 Hamburg, Normannenweg 28 0)40 20 22 62 10 www.itechnology.de 3 3 3 3<br />

JEL Ingenieurbuero 23911 Einhaus, Hauptstr. 7 04541-8911-71 www.jeltimer.de 3<br />

beitco - Behrens IT-Consulting 26197 Ahlhorn, Lessingstr. 27 04435-9537330-0 www.beitco.de 3 3 3 3 3<br />

talicom GmbH 30169 Hannover, Calenberger Esplanade 3 0511-123599-0 www.talicom.de 3 3 3 3 3<br />

teuto.net Netzdienste GmbH 33602 Bielefeld, Niedenstr. 26 0521-96686-0 www.teuto.net 3 3 3 3 3<br />

MarcanT GmbH 33602 Bielefeld, Ravensberger Str. 10 G 0521-95945-0 www.marcant.net 3 3 3 3 3 3<br />

Hostserver GmbH 35037 Marburg, Biegenstr. 20 06421-175175-0 www.hostserver.de 3<br />

LINET Services GmbH 38122 Braunschweig, Am alten Bahnhof 4b 0531-180508-0 www.linet-services.de 3 3 3 3 3 3<br />

OpenIT GmbH 40599 Düsseldorf, In der Steele 33a-41 0211-239577-0 www.OpenIT.de 3 3 3 3 3<br />

<strong>Linux</strong>-Systeme GmbH 45277 Essen, Langenbergerstr. 179 0201-298830 www.linux-systeme.de 3 3 3 3 3<br />

<strong>Linux</strong>hotel GmbH 45279 Essen, Antonienallee 1 0201-8536-600 www.linuxhotel.de 3<br />

OpenSource Training Ralf Spenneberg 48565 Steinfurt, Am Bahnhof 3-5 02552-638755 www.opensource-training.de 3<br />

Intevation GmbH 49074 Osnabrück, Neuer Graben 17 0541-33508-30 osnabrueck.intevation.de 3 3 3 3<br />

Sigs Datacom GmbH 53842 Troisdorf, Lindlaustraße 2c 02241-2341-201 sigs-datacom.de 3<br />

uib gmbh 55118 Mainz, Bonifaziusplatz 1b 06131-27561-0 www.uib.de 3 3 3 3<br />

LISA GmbH 55411 Bingen, Elisenhöhe 47 06721-49960 www.lisa-gmbh.de 3 3 3 3 3<br />

saveIP GmbH 64283 Darmstadt, Schleiermacherstr. 23 06151-666266 www.saveip.de 3 3 3 3 3<br />

LAMARC EDV-Schulungen u. Beratung GmbH 65193 Wiesbaden, Sonnenberger Straße 14 0611-260023 www.lamarc.com 3 3 3 3<br />

ORDIX AG 65205 Wiesbaden, Kreuzberger Ring 13 0611-77840-00 www.ordix.de 3 3 3 3 3<br />

<strong>Linux</strong>Haus Stuttgart 70565 Stuttgart, Hessenwiesenstrasse 10 0711-2851905 www.linuxhaus.de 3 3 3 3 3<br />

Manfred Heubach EDV und Kommunikation 73728 Esslingen, Hindenburgstr. 47 0711-4904930 www.heubach-edv.de 3 3 3 3<br />

Waldmann EDV Systeme + Service 74321 Bietigheim-Bissingen, Pleidelsheimer Str. 25 07142-21516 www.waldmann-edv.de 3 3 3 3 3<br />

IT-Profimarkt listet ausschließlich Unternehmen, die Leistungen rund um <strong>Linux</strong> bieten. Alle Angaben ohne Gewähr. <br />

(S.100)


Service<br />

www.linux-magazin.de Markt 08/2012<br />

100<br />

IT-Profimarkt / Markt<br />

IT-Profimarkt – Liste sortiert nach Postleitzahl (Fortsetzung von S. 98)<br />

1 = Hardware 2 = Netzwerk/TK 3 = Systemhaus<br />

4= Seminaranbieter 5 = <strong>Software</strong> 6 = Beratung<br />

Firma Anschrift Telefon Web 1 2 3 4 5 6<br />

in-put Das <strong>Linux</strong>-Systemhaus 76133 Karlsruhe, Moltkestr. 49 0721-6803288-0 www.in-put.de 3 3 3 3 3 3<br />

Bodenseo 78224 Singen, Pomeziastr. 9 07731-1476120 www.bodenseo.de 3 3 3<br />

<strong>Linux</strong> Information Systems AG 81739 München, Putzbrunnerstr. 71 089-993412-0 www.linux-ag.com 3 3 3 3 3<br />

<strong>Linux</strong>Land International GmbH 81739 München, Putzbrunnerstr. 71 089-99341441 www.linuxland.de 3 3 3 3 3 3<br />

Synergy Systems GmbH 81829 München, Konrad-Zuse-Platz 8 089-89080500 www.synergysystems.de 3 3 3 3 3<br />

B1 Systems GmbH 85088 Vohburg, Osterfeldstrasse 7 08457-931096 www.b1-systems.de 3 3 3 3 3<br />

ATIX AG 85716 Unterschleißheim, Einsteinstr. 10 089-4523538-0 www.atix.de 3 3 3 3 3 3<br />

OSTC Open Source Training and Consulting<br />

GmbH<br />

90425 Nürnberg, Waldemar-Klink-Str. 10 0911-3474544 www.ostc.de 3 3 3 3 3 3<br />

Dipl.-Ing. Christoph Stockmayer GmbH 90571 Schwaig, Dreihöhenstr. 1 0911-505241 www.stockmayer.de 3 3 3<br />

pascom - Netzwerktechnik GmbH & Co.KG 94469 Deggendorf, Berger Str. 42 0991-270060 www.pascom.net 3 3 3 3 3<br />

fidu.de IT KG 95448 Bayreuth, Ritter-v.-Eitzenb.-Str. 19 09208-657638 www.linux-onlineshop.de 3 3 3 3<br />

Computersysteme Gmeiner 95643 Tirschenreuth, Fischerhüttenweg 4 09631-7000-0 www.gmeiner.de 3 3 3 3 3<br />

RealStuff Informatik AG CH-3007 Bern, Chutzenstrasse 24 0041-31-3824444 www.realstuff.ch 3 3 3<br />

CATATEC CH-3013 Bern, Dammweg 43 0041-31-3302630 www.catatec.ch 3 3 3<br />

Syscon Systemberatungs AG CH-8003 Zürich, Zweierstrasse 129 0041-44-4542010 www.syscon.ch 3 3 3 3 3<br />

Würth Phoenix GmbH IT-39100 Bozen, Kravoglstraße 4 +39 0471 56 41 11 www.wuerth-phoenix.com 3 3 3 3<br />

IT-Profimarkt listet ausschließlich Unternehmen, die Leistungen rund um <strong>Linux</strong> bieten. Alle Angaben ohne Gewähr. <br />

n<br />

3 AusgAben für nur 5,90 E<br />

Jetzt bestellen: 3 Hefte zum Preis von einem. Sie sparen 66 %!<br />

Neu!<br />

Kennenlernangebot:<br />

3 AusgAben<br />

für nur 5,90 E<br />

Jetzt bestellen unter:<br />

www.android–user.de/miniabo<br />

Telefon 07131 / 2707 274 • Fax 07131 / 2707 78 601 • E-Mail: abo@android-user.de


Max-Planck-Institut für Kernphysik<br />

Heidelberg<br />

Wir, das Studentenwerk München, sind eine Anstalt<br />

des öffentlichen Rechts und laut Bayerischem Hochschulgesetz<br />

zuständig für die wirtschaftliche Förderung und soziale<br />

Betreuung der Studenten der staatlichen Hochschulen in<br />

München, Garching, Freising und Rosenheim.<br />

Wir betreiben dazu mit rund 650 Mitarbeitern unter anderem<br />

32 Mensen und Cafeterien, zahlreiche Studentenwohnheime<br />

mit insgesamt etwa 11.000 Wohnplätzen, sowie Kindertagesstätten<br />

und Beratungsstellen.<br />

Für unsere IT-Abteilung suchen wir ab 1.Oktober 2012,<br />

spä<strong>testen</strong>s bis zum 1. Januar 2013 einen<br />

<strong>Software</strong>-Entwickler /<br />

IT-Administrator (m/w)<br />

in Vollzeit (40,1 Stunden wöchentlich).<br />

Ihre Aufgaben:<br />

▪ Entwicklung und Pflege eigener Anwendungen,<br />

vor allem von Web-Services<br />

▪ Administration von Servern und Anwendungen, insbesondere<br />

auch Apache, PostgreSQL, MySQL, JBoss, verschiedene<br />

Fachanwendungen und <strong>Linux</strong>-Servern allgemein<br />

▪ Administration von Netzwerken<br />

▪ Fachberatung und Unterstützung von Beschäftigten<br />

Das Institut ist eine Einrichtung der Max-Planck-Gesellschaft zur Förderung der<br />

Wissenschaften e.V. Es betreibt mit derzeit ca. 400 Mitarbeiter/innen physikalische<br />

Grundlagenforschung auf den Gebieten Atom- und Molekülphysik sowie<br />

Teilchen- und Astroteilchenphysik (http://www.mpi-hd.mpg.de/).<br />

Für die Abteilung Theorie suchen wir zum nächstmöglichen Zeitpunkt eine/n<br />

engagierte/n und motivierte/n<br />

Systemadministrator/in<br />

Sie erwartet eine interessante und abwechslungsreiche Tätigkeit in einem wissenschaftlichen<br />

Institut mit internationalem Umfeld. Zu Ihren Aufgaben gehören<br />

insbesondere die Rechneradministration und Anwenderbetreuung der theoretischen<br />

Abteilung des Instituts. Daneben sind Sie mitverantwortlich für den<br />

Betrieb der Netzwerk-Servicedienste (Web-Server, Mail-Server usw.).<br />

Wir erwarten ein abgeschlossenes technisches Studium (vorzugsweise Informatik)<br />

oder eine abgeschlossene informationstechnische Ausbildung. Erforderlich<br />

sind fundierte Kenntnisse und Erfahrungen auf dem Gebiet der Administration<br />

von <strong>Linux</strong>-Servern und <strong>Linux</strong>-Desktops, Kenntnisse von Microsoft<br />

Windows sowie Erfahrungen im Server-Hardware und PC-Hardware Bereich.<br />

Vorteilhaft wären eigene Programmiererfahrungen in der Wissenschaft und<br />

gute Englischkenntnisse.<br />

Die Tätigkeit ist zunächst auf zwei Jahre befristet mit der Möglichkeit der Übernahme<br />

in ein unbefristetes Arbeitsverhältnis. Die Vergütung erfolgt nach TVöD<br />

einschließlich zusätzlicher Altersversorgung (VBL).<br />

Die Max-Planck Gesellschaft ist bemüht, mehr schwerbehinderte Menschen zu<br />

beschäftigen. Bewerbungen Schwerbehinderter sind ausdrücklich erwünscht.<br />

Die Max-Planck-Gesellschaft will den Anteil von Frauen in den Bereichen erhöhen,<br />

in denen Sie unterrepräsentiert sind. Frauen werden deshalb ausdrücklich<br />

aufgefordert, sich zu bewerben.<br />

Bitte richten Sie Ihre Bewerbung unter der Kennziffer 24/2012 bis zum<br />

16.07.2012 an die Personalverwaltung des<br />

Max-Planck-Instituts für Kernphysik, Postfach 10 39 80, 69029 Heidelberg<br />

Online-Bewerbungen richten Sie bitte ausschließl. im PDF-Format, möglichst<br />

in einer Datei, unter Angabe der Kennziffer 24/2012 im Betreff an:<br />

personal@mpi-hd.mpg.de<br />

Ihr Profil / Voraussetzungen:<br />

▪<br />

▪<br />

▪<br />

▪<br />

▪<br />

▪<br />

▪<br />

▪<br />

▪<br />

ein abgeschlossenes (Diplom / Master) Hochschulstudium<br />

(Informatik, Mathematik oder vergleichbar)<br />

Erfahrung mit Netzwerkprotokollen auf Basis TCP/IP<br />

sehr gute Kenntnisse in Perl, SQL, JSON<br />

gute Kenntnisse in C<br />

gute Kenntnisse in Java (insbes. JDBC)<br />

Grundkenntnisse in PHP<br />

Sie arbeiten gerne im Team<br />

ausgeprägte Analyse- und Abstraktionsfähigkeit<br />

Vorteilhaft sind Kenntnisse im Bereich Mason, LDAP,<br />

Kerberos, JBoss, Debian, Nagios<br />

Wir bieten einen verantwortungsvollen und vielseitigen<br />

Arbeitsplatz mit großzügiger Gleitzeitregelung. Die Entlohnung<br />

richtet sich nach dem Tarifvertrag der Länder (TV-L Bayern)<br />

mit den sozialen Leistungen des öffentlichen Dienstes.<br />

Wir freuen uns auf Ihre vollständigen Bewerbungsunterlagen,<br />

die Sie bitte bis spä<strong>testen</strong>s zum 27. Juli 2012 einreichen.<br />

Nähere Informationen dazu finden Sie auf unserer Webseite:<br />

www.studentenwerk-muenchen.de/stelle-a54<br />

Ansprechpartner:<br />

Wolfgang Walter, Abteilungsleiter IT<br />

wolfgang.walter@stwm.de, Telefon: 089 38196-1519<br />

stwm_anzeige_ct-linuxmag_103x297_120612.indd 1 12.06.2012 19:32:38


u<br />

Service<br />

www.linux-magazin.de Seminare/Markt 08/2012<br />

102<br />

OpenSource Training Ralf Spenneberg<br />

Schulungen direkt vom Autor<br />

Am Bahnhof 3­5<br />

48565 Steinfurt<br />

Tel.: 02552 638755<br />

Fax: 02552 638757<br />

Seminare/Markt<br />

<strong>Linux</strong> Firewall Lösungen<br />

5 Tage 03.09. ­ 07.09.2012<br />

DHCP, DNS und DNSSEC<br />

3 Tage 18.09. ­ 20.09.2012<br />

Advanced Monitoring<br />

4 Tage 17.09. ­ 20.09.2012<br />

LPIC­3<br />

5 Tage 08.10. ­ 12.10.2012<br />

Virtualisierung mit KVM<br />

3 Tage 09.10. ­ 11.10.2012<br />

Hacking Webapplications<br />

4 Tage 16.10. ­ 19.10.2012<br />

SE<strong>Linux</strong> Administration<br />

2 Tage 06.11. ­ 07.11.2012<br />

<strong>Linux</strong> System Administration / LPIC­1<br />

5 Tage 12.11. ­ 16.11.2012<br />

IPv6 mit <strong>Linux</strong><br />

3 Tage 13.11. ­ 15.11.2012<br />

Freie Distributionswahl:<br />

Opensuse, Fedora, Debian Squeeze,<br />

CentOS oder Ubuntu LTS<br />

Ergonomische Arbeitsplätze<br />

Umfangreiche Schulungsunterlagen mit<br />

Übungen<br />

Weitere Informationen unter www.os­t.de<br />

UNIX-C-C++ Java<br />

Seminare<br />

in Nürnberg<br />

(oder inhouse)<br />

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

UNIX/<strong>Linux</strong>-Aufbau<br />

C, C-Aufbau<br />

C++<br />

OOA/OOD (mit UML)<br />

Java<br />

Perl, XML<br />

weitere Kurse auf Anfrage, Telephonhotline<br />

Teststudium<br />

ohne Risiko!<br />

Dipl.-Ing.<br />

Christoph Stockmayer GmbH<br />

90571 Schwaig/Nbg • Dreihöhenstraße 1<br />

Tel.: 0911/505241 • Fax 0911/5009584<br />

EMail: sto@stockmayer.de<br />

http://www.stockmayer.de<br />

Fernstudium<br />

IT-Sicherheit<br />

Aus- und Weiterbildung zur Fachkraft für<br />

IT-Sicherheit. Ein Beruf mit Zukunft. Kostengünstiges<br />

und praxisgerechtes Studium<br />

ohne Vorkenntnisse. Beginn jederzeit.<br />

NEU:PC-Techniker, Netzwerk-Techniker,<br />

<strong>Linux</strong>-Administrator LPI, Webmaster<br />

Teststudium ohne Risiko.<br />

GRATIS-Infomappe<br />

gleich anfordern!<br />

FERNSCHULE WEBER<br />

-seit 1959-<br />

Postfach 21 61<br />

Abt. C25<br />

26192 Großenkneten<br />

Tel. 0 44 87 / 263<br />

Fax 0 44 87 / 264<br />

www.fernschule-weber.de<br />

tl<br />

a<br />

ta<br />

s<br />

•<br />

n<br />

c<br />

i<br />

e<br />

s<br />

h<br />

a<br />

g<br />

el<br />

e<br />

p<br />

g<br />

rü<br />

Fernstudium<br />

s<br />

f<br />

t<br />

n<br />

d<br />

z<br />

u<br />

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

ACADEMY<br />

Online-Training<br />

mit Hans-Georg Esser, Chefredakteur Easy<strong>Linux</strong><br />

OpenOffice -<br />

Arbeiten mit Vorlagen<br />

Erleichtern Sie sich Ihre<br />

tägliche Arbeit mit (Auszug):<br />

❚ einheitlichen Dokumentenvorlagen<br />

❚ automatischen Formatierungen<br />

❚ generierten Inhaltsverzeichnissen<br />

20%<br />

Treue-Rabatt für<br />

Abonnenten<br />

Mit vielen<br />

Praxisbeispielen<br />

DiD you<br />

know?<br />

Treue-Rabatt für<br />

Abonnenten<br />

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

ACADEMY<br />

Online-Training<br />

Erfolgreicher Einstieg in<br />

WordPress 3<br />

mit Hans-Georg Esser, Chefredakteur Easy<strong>Linux</strong><br />

Ansprechende Webseiten, Blogs und<br />

Shops einfach selber erstellen<br />

❚ Installation in 5 Minuten<br />

❚ Designs ändern<br />

❚ Optimieren für Suchmaschinen<br />

❚ Funktionen erweitern<br />

❚ Benutzerrechte festlegen<br />

❚ Geld verdienen mit Werbung<br />

❚ Besucher analysieren<br />

❚ Sicherheit und Spam-Schutz<br />

20%<br />

Treue-Rabatt für<br />

Abonnenten<br />

Informationen und Anmeldung unter:<br />

academy.linux-magazin.de/openoffice<br />

Informationen und Anmeldung unter:<br />

academy.linux-magazin.de/wordpress<br />

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

LM_Academy_1-9h_Anzeige_openoffice-Mike.indd 1<br />

ACADEMY<br />

Online-Training<br />

Prüfungsvorbereitung<br />

für LPIC 1 & 2<br />

Besorgen Sie sich Brief und<br />

Siegel für Ihr <strong>Linux</strong>-<br />

Knowhow mit der<br />

LPI-Zertifizierung.<br />

- Training für die Prüfungen<br />

LPI 101 und 102<br />

- Training für die Prüfungen<br />

LPI 201 und 202<br />

Sparen Sie mit<br />

paketpreiSen!<br />

12.04.2011 15:08:54 Uhr<br />

20%<br />

Treue-Rabatt für<br />

Abonnenten<br />

WusstEn siE’s?<br />

<strong>Linux</strong>-<strong>Magazin</strong> und <strong>Linux</strong>User haben<br />

ein englisches Schwester magazin!<br />

Am besten, Sie informieren gleich<br />

Ihre <strong>Linux</strong>-Freunde in aller Welt...<br />

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

1-9h_Anzeige_wordpress_v02.indd 1<br />

©mipan, fotolia<br />

ACADEMY<br />

20%<br />

18.04.2011 11:18:15 Uh<br />

Treue-Rabatt für<br />

Abonnenten<br />

Online-Training<br />

IT-Sicherheit<br />

Grundlagen<br />

mit Tobias Eggendorfer<br />

Themen:<br />

- physikalische Sicherheit<br />

- logische Sicherheit<br />

• Betriebssystem<br />

• Netzwerk<br />

- Sicherheitskonzepte<br />

- Sicherheitsprüfung<br />

Inklusive Benutzer- und<br />

Rechteverwaltung, Authentifizierung,<br />

ACLs sowie wichtige<br />

Netzwerkprotokolle und mehr!<br />

Informationen und Anmeldung unter:<br />

academy.linux-magazin.de/lpic<br />

www.linux-magazine.com<br />

Informationen und Anmeldung unter:<br />

academy.linux-magazin.de/sicherheit<br />

LM-Academy_1-9h_Anzeige_LPIC-Mike_v2.indd 1<br />

22.02.2012 LMI_german_2-9h_black_1906-2012.indd 17:12:54 Uhr<br />

1<br />

LM-Academy_1-9h_Security-Mike.indd 1<br />

20.06.2012 14:54:43 Uhr<br />

12.04.2011 14:00:35 Uh


… alles nur eine Frage der Lastverteilung !<br />

BalanceNG ®<br />

●<br />

Der <strong>Software</strong> Load-Balancer für <strong>Linux</strong> und Solaris<br />

●<br />

Voll virtualisierbar<br />

●<br />

Keine zusätzliche Hardware erforderlich<br />

●<br />

Security made in Germany:<br />

Garantiert frei von versteckten “Backdoors”<br />

Alle Informationen unter: www.BalanceNG.net<br />

Inlab <strong>Software</strong> GmbH<br />

Josef-Würth-Str. 3<br />

82031 Grünwald<br />

Tel: 089 / 64911420<br />

http://www.inlab.de<br />

Probelesen ohne risiko<br />

Und Gewinnen!<br />

eines von sieBen „seCU4Bags“<br />

elektronisChes siCherheitssystem für<br />

handys, taBlets Und laptops mit BlUetooth<br />

20g leiCht, Bis zU 100 stUnden akkUlaUfzeit<br />

alarm Bis zU 100dB, sChUtzdistanz 5 Bis 30m<br />

gesponsert von<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<br />

und Österreichs. In der Schweiz: SFr 4,50.<br />

Weitere Preise: www.linux-user.de/produkte


Service<br />

www.linux-magazin.de Inserenten 08/2012<br />

104<br />

Inserentenverzeichnis<br />

1&1 Internet AG http://​www.einsundeins.de 17<br />

ADMIN http://​www.admin-magazin.de 59<br />

aktivoptok http://​www.aktivoptik.de 99<br />

Android User GY http://​www.android-user.de 93, 100<br />

Deutsche Python Konferenz - PyCon http://​de.pycon.org​ 35<br />

embedded projects GmbH http://​www.embedded-projects.net 103<br />

Fernschule Weber GmbH http://​www.fernschule-weber.de 102<br />

Hetzner Online AG http://​www.hetzner.de 108<br />

Hostserver GmbH http://​www.hostserver.de 2<br />

Ico Innovative Computer GmbH http://​www.ico.de 37<br />

Inlab <strong>Software</strong> GmbH http://​www.inlab.de 103<br />

Kamp Netzwerkdienste GmbH http://​www.kamp.net 31<br />

<strong>Linux</strong>-<strong>Magazin</strong> Academy http://​academy.linux-magazin.de 102<br />

<strong>Linux</strong>User http://​www.linux-user.de 103<br />

Max-Planck- Institut für Kernphysik http://www.mpi-hd.mpg.de 101<br />

Mittwald CM Service GmbH & Co. KG http://​www.mittwald.de 21<br />

Netways GmbH http://​www.netways.de 81<br />

O’Reilly Verlag GmbH & Co KG http://​www.oreilly.de 9<br />

Open Source Press GmbH http://​www.opensourcepress.de 51<br />

PlusServer AG http://​www.plusserver.de 70, 78, 86, 96<br />

Schlittermann internet & unix support http://​schlittermann.de 101<br />

secunet AG http://​www.secunet.com 99<br />

Spenneberg Training & Consulting http://​www.spenneberg.com 102<br />

Stockmayer GmbH http://​www.stockmayer.de 102<br />

Strato AG http://​www.strato.de 1, 11<br />

Studentenwerk München<br />

http://​www.studentenwerk-muenchen.de<br />

101<br />

<strong>Linux</strong> <strong>Magazin</strong>e http://​www.linux-magazine.com 102<br />

<strong>Linux</strong>-Hotel http://​www.linuxhotel.de 15<br />

<strong>Linux</strong>-<strong>Magazin</strong> http://​www.linux-magazin.de 53, 107<br />

Thomas Krenn AG http://​www.thomas-krenn.com 19<br />

Einem Teil dieser Ausgabe liegt eine Beilage der Firma HACKATTACK IT SECURITY<br />

GmbH (http://​www.hackattack.com ) bei. Wir bitten unsere Leser um freundliche<br />

Beachtung.<br />

Veranstaltungen<br />

30.06.-06.07.2012<br />

Akademy 2012<br />

Tallinn, Estonia<br />

http://akademy.kde.org<br />

05.-07.07.2012<br />

Spain.js<br />

Madrid, Spain<br />

http://spainjs.org<br />

08.-14.07.2012<br />

DebConf12<br />

Managua, Nicaragua<br />

http://debconf.org<br />

10.-15.07.2012<br />

Wikimania 2012<br />

Washington, DC, USA<br />

http://wikimania2012.wikimedia.org<br />

16.-18.07.2012<br />

HostingCon<br />

Boston, MA, USA<br />

http://www.hostingcon.com<br />

26.-29.07.2012<br />

HaxoGreen 2012<br />

Dudelange, Luxemburg<br />

http://www.haxogreen.lu<br />

26.07.-01.08.2012<br />

Guadec 2012<br />

A Coruña, Spain<br />

http://www.guadec.org<br />

08.-10.08.2012<br />

USENIX Security ’12<br />

Bellevue, WA<br />

http://www.usenix.org/events/sec12/<br />

29.-31.08.2012<br />

<strong>Linux</strong>Con North America<br />

San Diego, CA, USA<br />

https://events.linuxfoundation.org/events/linuxcon<br />

08.-09.09.2012<br />

Barcelona Ruby Conference<br />

Barcelona, Spain<br />

http://baruco.org<br />

08.-10.10.2012<br />

OSDI ’12<br />

Hollywood, CA<br />

http://www.usenix.org/events/osdi12/<br />

18.-19.10.2012<br />

Libre <strong>Software</strong> World Conference 2012<br />

Santiago de Compostela, Spain<br />

http://www.libresoftwareworldconference.com/<br />

20.-23.10.2012<br />

OpenSuse Conference 2012<br />

Prag, Tschechien<br />

http://en.opensuse.org/Portal:Conference<br />

23.-25.10.2012<br />

Strata Conference 2012<br />

New York City, NY, USA<br />

http://strataconf.com/stratany2012/public/<br />

con tent/home<br />

03.11.2012<br />

9. Brandenburger <strong>Linux</strong>-Infotag 2012<br />

Universität Potsdam<br />

14482 Potsdam<br />

http://blit.org<br />

16.-20.07.2012<br />

OSCON<br />

Portland, OR, USA<br />

http://www.oscon.com/oscon2012<br />

20.-22.07.2012<br />

OpenSUSE Collaboration Summer Camp 2012<br />

Olympiaki Akti, Greece<br />

http://www.os-el.gr<br />

19.09.2012<br />

2012 High Performance Computing for Wall Street<br />

New York City, NY<br />

http://www.flaggmgmt.com/hpc/<br />

02.-03.10.2012<br />

Apps World<br />

London, UK<br />

http://www.apps-world.net/europe/<br />

07.-09.11.2012<br />

<strong>Linux</strong>con Europe<br />

Barcelona, Spain<br />

https://events.linuxfoundation.org/events/linuxconeurope<br />

09.-14.12.2012<br />

LISA ’12<br />

San Diego, CA<br />

http://www.usenix.org/events/lisa12/


Impressum<br />

<strong>Linux</strong>-<strong>Magazin</strong> eine Publikation der <strong>Linux</strong> New Media 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 />

Chefredakteure<br />

stv. Chefredakteure<br />

Brian Osborn (Vorstand), bosborn@linuxnewmedia.de<br />

Hermann Plank (Vorstand), hplank@linuxnewmedia.de<br />

Jan Kleinert (V.i.S.d.P.), jkleinert@linux-magazin.de (jk)<br />

Ulrich Bantle (Online), ubantle@linux-magazin.de (uba)<br />

Markus Feilner, mfeilner@linux-magazin.de (mfe)<br />

Mathias Huber, mhuber@linux-magazin.de (mhu)<br />

Print- und Onlineredaktion<br />

Aktuell, Forum Ulrich Bantle, ubantle@linux-magazin.de (uba)<br />

Mathias Huber, mhuber@linux-magazin.de (mhu)<br />

<strong>Software</strong>, 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 (fan), Zack Brown, Mela Eckenfels, Peter<br />

Kreußel, Tim Schürmann, Heike Jurzik (hej), Charly Kühnast,<br />

Martin Loschwitz, Michael Schilli, Mark Vogelsberger, Uwe<br />

Vollbracht, Arnold 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 />

Judith Erb (Art Director), Mike Gajer,<br />

xhoch4, München (Titel-Illustration)<br />

123RF.com, Fotolia.de, Photocase.com, Pixelio.de und andere<br />

Thomas Leichtenstern, tleichtenstern@linuxnewmedia.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@linuxnewmedia.de<br />

shop.linuxnewmedia.de<br />

www.linux-magazin.de/Produkte<br />

Lea-Maria-Schmitt<br />

abo@linux-magazin.de<br />

Tel.: 07131/27 07 274<br />

Fax: 07131/27 07 78 601<br />

CH-Tel: +41 43 816 16 27<br />

Preise Print Deutschland Österreich Schweiz Ausland EU<br />

No-Media-Ausgabe 4 5,95 4 6,70 Sfr 11,90 (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 63,20 4 71,50 Sfr 99,96 4 75,40<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 5,95 4 5,95 Sfr 7,70 4 5,95<br />

DigiSub (12 Ausgaben) 4 63,20 4 63,20 Sfr 78,50 4 63,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, anzeigen@linuxnewmedia.de<br />

Tel.: +49 (0)89 / 99 34 11 – 24<br />

Fax: +49 (0)89 / 99 34 11 – 99<br />

Mediaberatung USA Ann Jesse, ajesse@linuxnewmedia.com<br />

und weitere Länder Tel.: +1 785 841 8834<br />

Eric Henry, ehenry@linuxnewmedia.com<br />

Tel.:+1 785 917 0990<br />

Pressevertrieb<br />

Druck<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 und Medienservice 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 – 2012 <strong>Linux</strong> New Media AG<br />

Impressum 08/2012<br />

Service<br />

www.linux-magazin.de<br />

105<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 Zeit für eine Inventur 67<br />

Fred Andresen Recht einfach 80<br />

Zack Brown Zacks Kernel-News 18<br />

Mela Eckenfels Die Dolly-Macher 56<br />

Tobias Eggendorfer Löcher für Schweine 38<br />

Rainer Grimm Im Gleichtakt 88<br />

Rainer Grimm Tux liest 83<br />

Franz Kinader Günstiges Törtchen 75<br />

Charly Kühnast Beerenstark 61<br />

Hans-Peter Merkel Weg damit! 62<br />

Andrej Radonic Freier Ausblick 46<br />

Andrej Radonic Wolke mit Ladung 72<br />

Michael Schilli Gutenberg at Home 92<br />

Tim Schürmann <strong>Software</strong> <strong>testen</strong> 22<br />

Tim Schürmann Fusselfreier Code 26<br />

Dr. Udo Seidel Tux liest 83<br />

Mark Vogelsberger Tückische Vermittlung 85<br />

Uwe Vollbracht Tooltipps 54<br />

Gunnar Wrobel Präziser Antrieb 32


Service<br />

www.linux-magazin.de <strong>Vorschau</strong> 09/2012 1/2011 08/2012 12/2010<br />

106<br />

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

09/2012 Dachzeile<br />

CMS mit schnellen Resultaten<br />

Beliebte Mitbringsel<br />

Die meisten Angestellte haben zu Hause einen schnelleren und<br />

besser ausgestatteten PC stehen als in der Firma. Trotzdem<br />

bleibt es die Ausnahme, dass jemand mit seinem Heim-PC unterm<br />

Arm im Büro einläuft. Die Admins dort würden ihm auch<br />

was husten zu den Themen Konfigurations- und Updateprobleme,<br />

Malware und Sicherheitsrisiken.<br />

Mit dem Siegeszug privater Tablets und Smartphones, insbesondere<br />

in den Händen weisungsbefugter Manager, fällt der Ei ser -<br />

ne Vorhang zwischen Firmen- und Privat-Computern allerorten.<br />

Das <strong>Linux</strong>-<strong>Magazin</strong> stellt sich an die Seite der vom „Bring your<br />

own Device“-Virus gebeutelten IT-Abteilungen und stellt Strategien<br />

und Tools vor, die das Unvermeidliche erträglich machen.<br />

© Taylor Olsen, 123RF<br />

MAGAZIN<br />

Überschrift<br />

Wer bei seinem Webauftritt oben links nicht „Spiegel Online“<br />

stehen hat, sondern vielleicht „Bäckerei Mehlinger“, schaut bei<br />

der Wahl seines Content Management System wohl mehr nach<br />

Features, die einfach zu verstehen sind und schnell sichtbare<br />

Erfolg bringen. Das nächste <strong>Magazin</strong> testet fünf Enterprise-ferne<br />

CMS auf tatsächliche Praxistauglichkeit.<br />

Flotter hochkommen dank Analyse<br />

Mit ein paar Anpassungen bootet der <strong>Linux</strong>-Kernel sowohl auf<br />

Desktop- als auch auf Embedded-Systemen schneller. Die „Kern-<br />

Technik“ erläutert die Mechanismen und empfiehlt die Werkzeuge<br />

Boot Tracer und Boot Chart für eine Gastrolle.<br />

Mit Three.js ins Web-GL-Land<br />

Auch ohne Spezial-Plugins oder ‐Viewer zaubern die aktuellen<br />

Versionen von Firefox, Opera und Google Chrome mit Web GL<br />

dreidimensionale Welten. Wer dabei mitmischen will: Mit der<br />

Javascript-Bibliothek Three.js ist es so einfach wie nie zuvor,<br />

eigene 3D-Anwendungen zu programmieren.<br />

Die Ausgabe 09/2012<br />

erscheint am 2. August 2012<br />

Ausgabe 08/2012<br />

erscheint am 19.07.2012<br />

© Thoursie, sxc.hu<br />

Ahnenforschung<br />

Die pfiffige Genealogie-<strong>Software</strong> Gramps<br />

hilft Ihnen nicht nur dabei, viele Daten<br />

zu Ihren Ahnen zu erfassen, sie bietet zusätzlich<br />

die Möglichkeit, einer Person Dokumente,<br />

Bildmaterial, Audio/Video und<br />

Daten von Ereignissen zuzuordnen. So<br />

entsteht im Laufe der Zeit ein lebendiges<br />

Bild der Familiengeschichte, aus dem Sie<br />

auf Knopfdruck ein eindrucksvolles Familienbuch<br />

erstellen.<br />

Webdesign mit HTML5 und CSS3<br />

Mit HTML5 und CSS3 erhält der Kommunikationsweg Web eine neue<br />

Teerschicht, die alte Schlaglöcher überdeckt. Damit vereinfacht sich<br />

das Programmieren von Formularen sowie das Anbinden an Backends.<br />

Wir untersuchen, welche Tools Sie unter <strong>Linux</strong> vorfinden, um<br />

die neuen Standards zu implementieren. Dazu stellen wir Applikationen<br />

vor, die Ihrem Webauftritt zu einem soliden Unterbau verhelfen.<br />

Bildbearbeitung<br />

Wie ein Schweizer Taschenmesser bringt das ImageMagick-Paket<br />

eine beachtliche Reihe von Tools mit, die das Bearbeiten und Montieren<br />

von Bildern erlauben. Was simpel klingt, erweist sich in der<br />

Praxis als umfangreicher Werkzeugkasten, der für fast jeden Einsatz<br />

das richtige Tool mitbringt.<br />

Günstiger All-in-One-Drucker<br />

Der Hersteller verspricht eine exzellente<br />

Unterstützung für <strong>Linux</strong>, das Datenblatt<br />

eine Vielzahl an Funktionen, und das<br />

Web nennt einen vergleichsweise günstigen<br />

Straßenpreis. Das prädestiniert<br />

den Samsung CLX-6220FX eigentlich zu<br />

einem idealen Partner für kleine Bürogemeinschaften.<br />

Unser Test in der kommenden Ausgabe<br />

wird genau untersuchen, ob die Hardware<br />

den Erwartungen gerecht wird.


JETZT<br />

MIT DVD!<br />

MAGAZIN<br />

Sonderaktion<br />

Testen Sie jetzt<br />

3 Ausgaben<br />

für 3 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 />

Gewinnen Sie...<br />

eines von Sieben „SECU4Bags“<br />

Einsendeschluss ist der 15.09.2012<br />

zur Verfügung gestellt von


Hetzner Online unterstützt mit der<br />

Verwendung von 100% regenerativem<br />

Strom aktiv den Umweltschutz.<br />

Entscheiden Sie sich gemeinsam<br />

mit uns für eine saubere Zukunft.

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!