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 ITDiensten 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 StateoftheArtAnsä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§ion=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 />
Dateiverschlüsselung 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 35<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 />
LPIC3<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 / LPIC1<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.ost.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.