Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.
YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.
08/12
Anzeige:
Die Welt der STRATO Server
Ohne Einrichtungsgebühr! » strato-pro.de siehe Seite 11
STR0712_DE_TKS_DServer_120x17.indd 1
20.06.2012 12:59:17 Uhr
Klonprogramme für
Festplatten im Test
Vier angeblich perfekte Umzugshelfer im
Bitparade-Testlabor S. 56
Sicher löschen
Gar nicht einfach: Daten
auf Fest platten Recoveryfest
zerstören S. 62
Owncloud 4
Freie, aber nicht fehlerfreie
Webstorage-Alterna tive zu
Dropbox & Co S. 72
Software testen
Wie Entwickler und Maintainer ihre
Situation im Handumdrehen verbessern
■ Warum, wann und wie jeder Entwickler
Software-Testing betreiben sollte S. 22
■ Tools, die Quelltexte in C, C++, Java und
Python nach Fehlern durchforsten S. 26
■ So geht's: Testdriven Development S. 32
■ Sieben Gebote für das Schreiben sicherer
Webapplikationen S. 38
■ Rollout-Praxis: Wie Red Hat,
Limux & Co. ihre Pakete testen S. 42
■ Special: Raspberry Pi S. 61 und S. 75
■ Fünf Webgroupwares, mit denen
man Outlook schnell vergisst S. 46
Rechts-Rat: Was bei der Weitergabe von proprietären Headerfiles zu beachten ist S. 80
www.linux-magazin.de
Deutschland Österreich Schweiz Benelux Spanien Italien
4 5,95 4 6,70 sfr 11,90 4 7,00 4 7,95 4 7,95
4 192587 305954 08
Server
die mitwachsen
Professionelles Hosting
Individuelle Hostinglösungen vom Server
bis zum Clustersystem inklusive Beratung,
Planung und Service 24/7.
Für mehr Performance, Sicherheit und
Verfügbarkeit, jeden Tag, rund um die Uhr.
hostserver.de/server
Sicherheit im Failover-Cluster:
ISO 9001 zertifiziertes
Managed Hosting
Hochsicherheits-Datacenter
in Frankfurt/Main
DE-CIX Direktanbindung
Umfassender Datenschutz
nach BDSG
24/7 Service und Support
0 30 / 420 200 24 hostserver.de
Berlin Marburg Frankfurt am Main
Managed Hosting
zertifiziert nach
ISO 9001 : 2008
Allein die Geste zählt
Login 08/2012
Editorial
Über meinem Fernseher zu Hause steht seit zwei Monaten schwarz und aufrecht
eine so genannte Multimedia-Festplatte. Die gibt auf ihren 1 TByte gespeicherte
Videos wieder und nimmt auch selbst über einen analogen Videoeingang welche
auf. Das schwarze Metallkästchen läuft bei mir meist nur im Stand-by und ersetzt
meinen Videorekorder, den ich vor fünf Jahren auf dem lauschigen Waldfriedhof
meiner persönlichen Technikgeschichte beerdigen musste.
www.linux-magazin.de
3
Mein Plan war, an dem neuen Player nicht groß rumzufummeln, der ja ein Alltagsgegenstand
und letztlich eine Appliance ist. Deswegen ließ ich mich nicht von
der ebenso dämlichen wie inkonsistenten Bedienoberfläche irritieren. Zweifel
kamen auf, als ich ein paar Tage später daran scheiterte, dem Gerät einen (gut zu
meinem Router passenden) WLAN-Stick schmackhaft zu machen. Das Lesen von
rund hundert Forumeinträgen brachte mir die Erkenntnisse, dass auf dem Player
Linux läuft, was keine große Überraschung war, und dieser – Linux-untypisch – nur
einen einzigen WLAN-Chipsatz unterstützt.
Jan Kleinert, Chefredakteur
Seit diesem Zeitpunkt sitze ich mit einem Holzklasse-Ticket ausgestattet im Bastel-Zug nach Irgendwo. Hier ein
paar Zwischenstopps im Telegrammstil: Neuer WLAN-Stick läuft im Prinzip, aber nur, wenn ich ihn im laufenden
Betrieb einstecke. Zwei wirkungsarme Firmwareupdates eingespielt. Samba-Performance über WLAN
und Ethernet auf Analogmodem-Niveau und darum zum Überspielen von Videos auf den PC und umgekehrt
unbrauchbar.
Da sich keine freie Entwicklercommunity für den Player gebildet hat, und damit keine Aussicht auf vernünftige
Software besteht, lud ich vor ein paar Wochen den Quellcode des Players von der Herstellerseite, um selber Hand
anzulegen. Aus dem Archiv konnte ich einen Satz uralter Linux-Quellen und eine Handvoll freier Bibliotheken im
Orginalzustand kramen – das wars. Der Rest, und damit die Eigenleistung des Herstellers, ist offenbar proprietär.
Ihn aus der originalen Firmware funktionsfähig herauszupulen, die ja als ein großes Binärfile daherkommt,
kann ich wohl vergessen.
Die etwas ermüdende Geschichte zu erzählen lohnt, weil sie Erzähler und Zuhörer in die Grenzregion proprietär/
Open Source geleitet. Was aus der Ferne wie ein friedliches Neben- und Miteinander der Systeme erscheint,
erweist sich beim Besuch der Demarkationslinie als großteils vermintes Gelände.
Im konkreten Fall macht der Player-Anbieter lizenzrechtlich nichts falsch, wenn er freie Teile veröffentlicht und
die proprietären zurückhält. Für den Anwender jedoch bleiben die Quellen im doppelten Sinne nutzlos. Wegen
eines ähnlichen Grenzkonfliks platzte dieser Tage Linus Torvalds öffentlich der Kragen. Auslöser war eine Frage
zur Aussicht auf funktionierende Linux-Unterstützung bestimmter Nvidia-Chips und die Kooperationsbereitschaft
des Herstellers (siehe Seite 13).
Torvalds nutzte den öffentlichen Auftritt für eine Provokation, indem er der Grafikkartenfirma den Stinkefinger
zeigte. Den Digitus impudicus, den schamlosen Finger, erhoben schon die Römer und Griechen der ausgehenden
Antike als obszöne Phallus-Geste gegen ihre Widersacher. Zuvor jedoch, so die Überlieferung, diente der
Mittelfinger als Digitus medicinalis, mit dem Ärzte den Kranken Salbe auftrugen. So gesehen entfaltet die
aufflammende Diskussion um den Digitus torvaldicus vielleicht eine heilende Wirkung in der Sache Nvidia. Mir
und meiner Multimedia-Platte wird’s wohl nichts nutzen. Fuck you!
Inhalt
www.linux-magazin.de 08/2012 08 /2012
4
Die anspruchsvolle Arbeit, Software zu entwickeln ist zugleich eine sehr fehlerträchtige. Die
Folgen von Bugs reichen vom kleinen Ärgernis über den gehackten Webserver bis hin zum Raketenabsturz.
Die einzigen Methoden und Tools dagegen hält das große Sachgebiet des Software-Testing
bereit, dem diese Ausgabe fünf aufschlussreiche Artikel widmet.
Aktuell
Titelthema: Software testen
6 N ew s
n Libre Office lernt Corel Draw
n Mobil: UCS@School mit Samba 4
n Klaus Knopper gibt Knoppix 7.0.2 frei
n Google zeigt Chromebook und -box
n Linux Mint 13 mit Long Term Support
22 Wo Entwickler ansetzen
Titel
Wann und mit welchen Methoden testen.
Initialisierung
Analyse
Entwurf
38 Sichere Webapplikationen
Sieben Gebote, um Sicherheitslücken
beim PHP-Programmieren schon sehr
früh zu erkennen.
Realisierung
Einführung
Nutzung
Opera 12 bringt bunte Themes und Web GL.
12 Zahlen & Trends
n Enquete-Gruppe Open Source startet
n Torvalds zeigt Nvidia Stinkefinger
n Dell setzt auf ARM
n Open Suse verschiebt 12.2
n Microsoft nimmt Linux in die Cloud
n Fedoras UEFI-Secure-Boot-Pläne
18 Zacks Kernel-News
n Patch rückgängig? Greg bleibt hart.
20 Linux Tag 2012
Linux-Roboter, Netzpolitik, Rootcamp: Vier
Tage stand Berlin im Zeichen des Pinguins.
Tanzende Roboter von Aldebaran Robotics bei
der Auftaktveranstaltung des Linuxtags.
Erweitertes klassisches Wasserfallmodell, das
Tests nur in den letzten Phasen vorsieht.
26 Statische Analyse
Werkzeuge für die statische Analyse
durchkämmen selbst gestrickten Code.
Praktisch: Plugins für IDEs warnen schon bei
der Eingabe von Quellcode vor Problemen.
32 Testdriven Development
Hebt es die Softwarequalität, wenn
Entwickler zuerst den Test schreiben?
DELUG-DVD
Knoppix 7.0.2
TOOL
• Bessere Hardware-Erken nung
• Updates vieler Anwendungen
• Braucht weniger RAM
TOOL
Fedora 17, Mint 13
TOOL
TOOL
Bootswitch wechselt zwischen bei -
den Neuerscheinungen des Monats
Gute Tests hätten ans Licht gebracht, dass die
Login-Maske des Demo-Shops Badstore.net
SQL-Injections ermöglicht.
42 Rollout Testing
Wie Profis Software testen, bevor sie
diese an ihre User ausrollen: Tipps und
Tricks von Admins und Distributoren.
Das stufenweise Testen (Staging) verlangt Planung
und Ausdauer, schützt aber vor Ausfällen.
Doppelseitige DVD,
TOOL
Details auf S. 45
Berlin und Bozen
Linuxtag-Video vom Netzpolitik-
Schlagabtausch und 4x Open Source
System Management Conference
Virtual Appliance
VMware-kompatibles Image mit
Egroupware auf Debian-6-Basis
08/2012 08/2012
Inhalt
46 Freier Ausblick
Wer braucht da noch Outlook, wenn die
freie Webgroupware Mails, Adressen,
Termine und das CRM in den Browser
bringt! Fünf Server im Vergleich.
62 Weg damit!
Wenn es darauf ankommt, ist es gar nicht
so einfach, Daten sicher zu löschen.
Dc3dd, DBAN und Bleachbit helfen, Bash-
Tools bei der Erfolgskontrolle.
92 Gutenberg at Home
Ein CPAN-Modul macht's möglich: Perlmeister
Schilli überführt Dokumentationen
ins richtige Format für seinen
E-Book-Reader und sein Smartphone.
www.linux-magazin.de
5
Software
Sysadmin
Forum
45
Einführung
Auf der DELUG-DVD: Knoppix, Fedora,
Mint, ein Debian-E-Book und fünf Videos..
61 Einführung
Titel
Aus dem Alltag eines Sysadmin: Charly
bekommt seinen Raspberry Pi.
80 Recht einfach
Titel
Im Ratgeber: Hardware-Upgrades, Privatkopien,
3D-Drucker und Headerdateien.
46 Groupware ohne Outlook
Titel
Egroupware, Tine 2.0, Horde, Simple
Groupware und Feng Office.
Das Tine-2.0-Adressbuch überzeugt durch
einfache Bedienung.
54 Tooltipps
Swet 1.5.16, Aletheia 0.0.9, Monit 5.4, Fish
0.3, Mu 0.9.8.4 und Raider 0.13.1 im Test
56 Bitparade
Titel
Eins-zu-eins-Kopien leicht gemacht mit
vier Tools zum Klonen von Festplatten.
62 Festplatten richtig löschen
Titel
Auf 800 Grad erhitzen, einen Magneten
besorgen oder 35-mal überschreiben.
67 Inventur mit ACMP
Die getestete Suite bietet automatische
Inventarisierung, Helpdesk, Soft ware-,
Lizenz- und Clientmanagement.
Per Drag & Drop schiebt der Administrator ein
Skript in den weißen Kommandobereich. Später
wird es ACMP auf den Clients ausführen.
72 Owncloud 4
Titel
Die neue Version bringt Verschlüsselung,
Ver sio nierung und Ärger, weil das Re lease
eher an eine Alpha oder Beta erinnert.
83 Bücher
Bücher zu KVM
und zur C++-
Standardbibliothek.
84 Leserbriefe
Auf den Punkt gebracht.
Know-how
85 Insecurity Bulletin
Eine Schwachstelle in Xinetd zeigt, wie
wenig bekannte Features und Altlasten
als Einfallstore in Linux-Rechner dienen.
Programmieren
88 C++11 – Folge 5
Synchrone Threads mit Hilfe: Wenn der
Chef-Thread seine Mitarbeiter durch
Bedingungsvariablen koordiniert.
Mondo sichert auf CDs, DVDs, Bandlaufwerke,
USB-Medien und fast beliebige Netzmounts.
Service
3 Editorial
98 IT-Profimarkt
99 Stellenanzeigen
104 Veranstaltungen
104 Inserenten
105 Impressum
106 Vorschau
Hardware
75 Raspberry PI
Titel
Unter der Lupe: Was leistet der Mini-PC?
Im Zeichen der Himbeere vereint der Pi viel
Hardware auf der Fläche einer Scheckkarte.
92 Perl-Snapshot
Ein wenig Perl-Know-how und die richtigen
Module reichen, um kompatible
E-Books selbst zu erstellen.
Auf Linux lädt Calibre die Mobi-Datei, Smartphones
holen sie aus dem App-Store.
Aktuell
www.linux-magazin.de News 08/2012
6
News
Nagios-Framework Check_mk 1.2
Beim jüngsten Monitoring-
Workshop der Nagios-portal.
de-Community am 13. Juni in
München konnte Check_mk-
Erfinder Mathias Kettner seine
unzerstörbar gute Laune über
die wenige Tage vorher in
den Final-Status eingetretene
Version 1.2 seiner Monitoring-
Software kaum verbergen. Sowohl
während seines Vortrags
auf der Veranstaltung als auch
am Rande im Gespräch mit
dem Linux-Magazin betonte
Kettner, dass dieser Versionswechsel
„der bisher größte
Meilenstein im Projekt“ sei
und das Potenzial besitze,
„neue Benutzerkreise zu erschließen“.
Kettners knapp drei Jahre
altes Vorhaben benutzt die
Grundfunktionen von Nagios
als Kernkomponente, fügt eigene
intelligente Agenten und
Checks hinzu und arbeitet mit
eigenen Datenbankeinträgen.
Wegen seines teilweise andersartigen
Funktionsprinzips
und der regelbasierten Konfiguration
umschifft Check_mk
laut Kettner in großen Umgebungen
viele Performanceprobleme,
die Nagios und seine
Forks belasten.
Die GPL-Software bringt als
weitere Besonderheit eine eigene
Weboberfläche mit, die
das Monitoring grafisch administrierbar
macht – auch
sie ist in Version 1.2 komplett
umgearbeitet.
Beim Monitoring-Workshop
treffen an zwei Tagen Anwender
und Entwickler von
Nagios, Shinken, Icinga und
anderen Monitoring-Suites
aufeinander. Die im Jahresrhythmus
tagende Community-Veranstaltung
wurde in
diesem Jahr von der Münchner
Firma Consol Software
ausgerichtet.
n
Check_mk 1.2 ist unter [http://mathias‐kettner.de/check_mk_demo.html] auch als Live-Demo zu besichtigen.
Libre Office importiert Corel-Draw-Text
Der Libre-Office-
Ent wickler Fridrich
Strba meldet, er
habe erstmals Text
aus Corel-Draw-Dokumenten
in die
freie Bürosuite importieren
können.
Die Unterstützung
sei zwar noch rudimentär,
schreibt
Strba weiter in
seinem Blog, aber
Premiere: Importierter Corel-Draw-Text in Libre Office.
dennoch einmalig in
der Open-Source-Welt.
Dank der nun veröffentlichten
Bibliothek
Libcdr 0.0.8 kann ein
Entwickler-Build von
Libre Office Texte aus
Corel-Draw-7-Dokumenten
importieren.
Derzeit unterstützt die
Bibliothek nur einige
Parameter wie Schriftart
und ‐größe, kann
aber auch den Zeichensatz
erkennen und stellt den Text
als UTF-8-Zeichenkette dar.
Viele weitere Schrifteigenschaften
wie beispielsweise
Farbe fehlen dem Programm
aber noch. Fridrich Strba zeigt
in seinem Blogeintrag unter
[http://fridrich.blogspot.de/2012/06/
libreoffice‐coreldraw‐import‐filter.
html] bereits ein Original-Dokument
und die importierte
Version im Vergleich. n
Zwei Plugins und ein Miniserver
Auch wenn sich Linus
Torvalds jüngst abfällig über
Nvidia geäußert hat (siehe
„Zahlen & Tends“), sind die
Chips der Firma weit verbreitet.
Der Thomas-Krenn.AG
zumindest war es pünktlich
bis zum Linuxtag gelungen,
mit »check_gpu_sensor« ein
Nagios- und Icinga-Plugin
fertigzustellen, das GPU-Temperatur,
Lüfterdrehzahl und
Speicherauslastung auf Nvidias
Grafik- und Tesla-Karten
erfasst. In einer späteren Version
als der auf dem Linuxtag
gezeigten 1.0 soll das Plugin
auch Grafikspeicherfehler
melden können.
Die Serverentwickler aus Bayern
legten den Besuchern in
Berlin zudem die Version 3
ihres IPMI-Plugins zur Serverüberwachung
vor, das nach
Sabayon Linux 9 gehärtet
Die Gentoo-basierte Distribution
Sabayon Linux enthält
in Version 9 unter anderem
Kernel 3.4, Gnome 3.2.3, KDE
4.8.3, Xfce 4.10 sowie Libre
Office 3.5.3. Für die 32-Bit-
Version gibt es zudem einen
PAE-Kernel, der mehr als 4
GByte RAM unterstützt. Das
Sabayon 9 bringt einen neuen Anwendungs-Browser
namens Rigo mit.
einer Portierung auf Perl einfacher
bedienbar ist und mehr
Sensoren erkennt.
Auf dem Messestand greifbar
im körperlichen Sinne war ein
selbst entwickelter und auch
selbst gefertigter Low-Energy-Server
im Pocket-Format,
der ohne Lüfter auskommt
und mit seinem Atom Z530,
1 GByte RAM und Gigabit-
Ethernet nur 6 bis 10 Watt
aufnimmt. In den 2,5-Zoll-
Schacht passen Festplatten
ebenso wie SSDs.
Das rund 600 Euro teure Gerät
eignet sich laut Krenn-Spezialist
Werner Fischer besonders
gut für Remote Management,
Monitoring sowie DHCP- und
Log-Server in geräuschsensiblen
Umgebungen. Eine Gehäuseversion
für Hutschienen-
Montage ist in Planung. n
Dateisystem ZFS ist als Technology
Preview in der Linux-
Distribution enthalten.
Neu ist auch das Profil „Gentoo
Hardened“ für die Basisinstallation,
das mit gehärteten
Kernelquellen, einer Toolchain
mit Pax sowie SE Linux und
RSBAC für erhöhte Sicherheit
sorgt.
Auf dem Desktop
gibt es den neuen
Anwendungs-
Browser Rigo,
der beim Finden,
Aktualisieren und
Deinstallieren von
Software hilft. Sabayon
9 steht unter
[http://www.sabayon.
org/download] zum
Herunterladen bereit.
n
Remotebox 1.3 hält Verbindung
Remotebox 1.3 – hier unter Ubuntu zu sehen.
Remotebox, ein GUI für
Virtualbox auf lokalen und
entfernten Rechnern, rührt
sich in Version 1.3 in bestimmten
Abständen, verhindert
damit ein Timeout und
sorgt für das Weiterbestehen
der Netzwerkverbindung.
Daneben gibt es weitere Verbesserungen
beim Connection
Handling. USB-Geräte lassen
sich während des Betriebs anschließen
oder entfernen. Außerdem
haben die Entwickler
Storage-Provisionierung ferngesteuert
sich bemüht, das GUI reaktionsfreudiger
zu machen. Weitere
Neuerungen finden sich
in der Ankündigung.
Das in Perl und GTK umgesetzte
Remotebox verwaltet
lokale oder entfernte Virtualbox-Instanzen.
Das Tool kann
Gäste erstellen, konfigurieren,
starten, stoppen und pausieren.
Remotebox steht als Tarball
unter [http://remotebox.
knobgoblin.org.uk/downloads.cgi]
zum Download.
n
Der Kernelentwickler Andy
Grover arbeitet an einem
Dienst namens Targetd, der
Linux-Storage-Server steuern
soll. Grover möchte eine Lösung
schaffen, die Volumes
ferngesteuert per I-SCSI oder
einem anderen Protokoll exportiert.
Sie soll unter anderem
zur Provisionierung von
VM-Images dienen.
Zu diesem Zweck hat er ein
Remote-API auf der Basis von
Json-RPC 2.0 über HTTP definiert
und in einer ersten Python-Implementierung
veröffentlicht.
Ein Github-Repository
enthält den Server und
noch ein einfaches Clientskript
zum Testen, die Lizenz
ist GPLv3.
Der Entwickler bezeichnet
den Code als Prä-Alpha-
Software, die man keinesfalls
auf wertvolle Daten loslassen
solle. Hintergründe beschreibt
er in dem Blogeintrag [http://
groveronline.com/2012/06/targetd
‐remote‐storage‐admin/] auf seiner
Homepage.
n
News 08/2012
Aktuell
www.linux-magazin.de
7
Aktuell
www.linux-magazin.de News 08/2012
8
Opera 12 mit Themes, Kamera und Web GL
Themes – zum Teil quietschbunt – zählen zu den Neuerungen in Opera 12. Die
Unterstützung von Web GL ist eine weitere.
Der norwegische Hersteller
Opera hat seinen Webbrowser
in Version 12 veröffentlicht.
Die im Wortsinn augenfälligste
Neuerung sind Themes
zur Gestaltung der Benutzeroberfläche.
Sie stehen auf der
Addon-Seite für den Browser
zuhauf bereit.
Daneben erlaubt Opera nun
den Webanwendungen, auf
die Webcam des Rechners zuzugreifen
– wenn der Benutzer
es zulässt. Spaßprogramme
für Passfotos und Polaroids
sind die ersten Anwendungen
des Features.
In puncto Sicherheit haben
die Entwickler die Symbole
für Privacy-Einstellungen
verbessert und das Do-nottrack-Feature
aktiviert. Die
Performance erfährt ebenfalls
Verbesserungen, etwa indem
Plugins nun in einen eigenen
Prozess verbannt sind. Außerdem
bietet der Browser erstmals
Unterstützung für Web
GL, wenn auch noch als experimentell
bezeichnet. Diese
Hardwarebeschleunigung
für Webgrafiken muss der
Anwender allerdings explizit
aktivieren.
Eine Seite für Webentwickler
beschreibt die neu unterstützten
HTML-5-Features wie
Drag & Drop und CSS-Animation.
Das Changelog [http://
www.opera.com/docs/changelogs/
unix/1200/] fasst die Neuerungen
zusammen.
Der kostenlose Closed-Source-
Browser steht in Paketen für
zahlreiche Linux-Distributionen
zum Download bereit.
Daneben sind auch weitere
Ausgaben für Windows, Mac
OS X, Free BSD und Solaris im
Angebot.
n
Monkey HTTP Daemon 1.0 macht Tempo
Monkey HTTP Daemon, ein
Webserver für Embedded-
Systeme, bietet in Version
1.0 bessere Performance. Der
Geschwindigkeitszuwachs ist
dem mittlerweile Lock-freien
Kern der Software sowie Verbesserungen
an Scheduler
und Speicherverwaltung zu
verdanken. Daneben haben
die Entwickler den Code bereinigt
und mit GCC 4.7 zum
Kompilieren gebracht. Weitere
Details sind in den Release
Notes [http://monkey‐project.
com/Announcements/v1.0.0] nachzulesen.
Der Event-gesteuerte Webserver
besitzt eine Plugin-
Schnittstelle und bietet
UCS@school 3.0 mit Samba 4 und Mobil-Integration
Das Unternehmen Univention
hat UCS@school, sein Serverund
Managementprodukt für
Schulen und Bildungseinrichtungen,
als Version 3.0 veröffentlicht.
Die Release bietet
eine überarbeitete Weboberfläche
zur Verwaltung der
Benutzer und Dienste, die
auf Javascript und CSS setzt.
Wegen der Aktualisierung des
Corporate-Servers als Kernstück
kann auch der Schulserver
dank Samba 4 als Domain
Controller für Microsofts
Active Directory dienen.
Die freie Bildschirm-Steuersoftware
Italc für den Lehrer
ist in Version 2 an Bord, die
auch Windows 7 unterstützt.
Embedded-Entwicklern ein
C-API. Daneben unterstützt
die GPL-Software auch SSL,
schreibt Protokolle und kann
Verzeichnisinhalte anzeigen.
Die neue Release des Daemon
mit dem Codenamen „Monkey
I/O“ steht als Quelltext-
Tarball zum Download beim
Projekt bereit.
n
Eine weitere Neuerung ist die
Integration von mobilen Geräten
im WLAN, hier kommt Freeradius
zur Authentifizierung
zum Einsatz. Das kommerziellen
UCS@school 3.0 gibt es
als Testversion auf [http://www.
linux‐magazin.de/als%20Testversion]
zum Download nach vorheriger
Registrierung. n
Knoppix 7.0.2
– frische Ware
Reichlich mit Software-Updates
versehen hat Klaus
Knopper die Version 7.0.1
seiner beliebten Live-Distribution
Knoppix veröffentlicht.
Zu den Neuerungen zählt laut
der informativen Ankündigung
[http://knopper.net/knoppix/
knoppix702.html] das kürzlich
erschienene Gimp 2.8. Außerdem
sind Libre Office 3.5.3,
Chromium 18.0.1025.168 und
Firefox 10.0 dabei. Wine 1.5.4
integriert nun Windows-Anwendungen,
Virtualbox 4.1.14
dient der Live-DVD als Virtualisierungslösung.
Die Knoppix-spezifischen
Einstellungen finden Anwender
nun wieder – wie einst
– im Knoppix-Untermenü des
Startmenüs. Die Rückkehr an
diese Stelle soll den Nutzern
den Weg in das umfangreiche
Startmenü ersparen. n
Neuheiten von O’Reilly
Lösungen vorprogrammiert
Emacs 24.1 mit Paketmanager
Der programmierbare Editor
GNU Emacs verwendet in der
neuen Major-Version 24.1 das
Paketsystem ELPA für Erweiterungen,
das sich mit »M-x
list-packages« aufrufen lässt.
Das zugehörige Repository ist
[elpa.gnu.org]. Daneben unterstützt
Emacs nun bidirektionalen
Text, also auch Arabisch
und Hebräisch. Themes
lassen sich nun bequem per
»M-x customize-themes« anpassen.
Emacs-Hacker können
lexikalisches Scoping für
einzelne Emacs-Lisp-Dateien
aktivieren. Als Compile-Zeit-
Option steht die Anbindung
einiger Bibliotheken zur Verfügung:
GTK 3, Libxml2, Image
Magick, SE Linux sowie Gnu
TLS, das Verschlüsselung für
Netzwerkverbindungen in die
Anwendung einbaut.
Details finden sich in der
News-Datei [http://www.gnu.
org/software/emacs/NEWS.24.1] zu
Emacs 24.1. Die neue Emacs-
Release steht auf den Mirror-
Servern des GNU-Projekts als
Quelltext-Tarball zum Herunterladen
bereit.
n
Clusterbau: Hochverfügbarkeit
mit Linux, 3. Auflage
Michael Schwartzkopff, 424 Seiten, 2012, 44,90 €
ISBN 978-3-86899-358-5
Von modernen ITDiensten wird erwartet,
dass sie ohne wahrnehmbare Ausfallzeit kontinuierlich
zur Verfügung stehen. Wie Systemadministratoren
dies mit Hilfe der Clustersoftware
pacemaker erreichen können, zeigt
Hochverfügbarkeitsexperte Dr. Michael
Schwartzkopff in dieser aktualisierten dritten
Auflage. Er beleuchtet, was Hoch verfügbarkeit
bedeutet, führt in die Grund lagen von
Clustern ein und erklärt praxisnah die
Arbeitsweise der verschiedenen Programme.
Computer-Forensik Hacks
Lorenz Kuhlee & Victor Völzow
344 Seiten, 2012, 34,90 €
ISBN 978-3-86899-121-5
100 Tricks und Tools moderner Computerforsensik
– und alles Open Source! Dieses
Buch zeigt in detailliert beschriebenen Hacks
die StateoftheArtAnsätze der modernen
Computerforensik – von der Sicherung und
Wiederherstellung von Daten und Spuren bis
zur Diagnose typischer Angriffszenarien.
Google zeigt Chromebook und Chromebox
Google hat neue Hardware
für sein Browser-zentriertes
Betriebssystem Chrome OS
vorgestellt. Damit gibt es einen
Nachfolger für das Notebook
Chromebook sowie mit
der Chromebox einen neuen
stationären Rechner. Die von
Samsung gefertigten Geräte
bewirbt Google als „The (always)
new computer“. Der
Slogan soll die automatische
Aktualisierung der auf Web
und Cloud fixierten Hardware
unterstreichen.
Das Chromebook ist mit einem
12,1-Zoll-Display ausgestattet,
besitzt einen eingebauten Virenschutz,
ist mit Apps vorbestückt
und nutzt als Speicherplatz
Googles Cloudlösung.
Ausgestattet mit einem Celeron
867 mit 1,3 GHz, 4 GByte
RAM und 16 GByte SSD kostet
das Chromebook bei Amazon
in den USA in der WLAN-Ausführung
450 US-Dollar. Preise
für den deutschen Markt fehlen
noch.
Die ohne Peripherie wie einen
Bildschirm ausgelieferte
Chromebox ist mit 330 US-
Dollar gelistet. Ein 1,9 GHz-
Dualcore-Celeron B840 tut mit
Intels HD-Grafiklösung Dienst
und greift auf 4 GByte RAM
und 16 GByte SSD-Speicherplatz
zurück.
n
Making Things Talk
Tom Igoe, 486 Seiten, 2012, 39,90 €
ISBN 978-3-86899-162-8
Mit 33 leicht nachzubauenden Projekten
zeigt Tom Igoe in diesem Buch, wie man
Mikrocontroller, PCs, Server und Smartphones
zum Kommu nizieren bringt.
Geschrieben für Menschen, die zwar nur
wenig technische Erfahrung, dafür aber umso
mehr geekige Neugier mitbringen.
In den USA in der 1. Auflage DAS Standardwerk
über Physical Computing!
Fitness for Geeks
Bruce W. Perry
331 Seiten, 2012, 29,- €
ISBN 978-1-4493-9989-4
This guide will help you experiment with
one crucial system you usually ignore –
your body and its health. Long hours focusing
on code or circuits tends to stifle
notions of nutrition, but with this educational
and highly useful book you can
approach fitness through science.
Blog:
community.oreilly.de/blog
Google+:
bit.ly/googleplus_oreillyverlag
Facebook:
facebook.com/oreilly.de
Twitter:
twitter.com/oreilly_verlag
Mit der Chromebox (links) startet Google in eine neue Geräteklasse. Das neue
Chromebook (rechts) ist mit WLAN und optional mit zusätzlichem 3G erhältlich.
O’REILLY ®
www.oreilly.de
Aktuell
www.linux-magazin.de News 08/2012
10
Kurznachrichten
Music 21 1.0: Ein Python-Toolkit für Musikwissenschaftler, das von einem
Team am MIT betreut wird. Neu: Die Software kann beispielsweise eine Melodie
in Noten setzen, eine Zwölfton-Matrix erstellen, Musik auf Graphen
abbilden oder eine Google-Suche nach Textpassagen anstoßen. Lizenz:
GPL [http://code.google.com/p/music21/downloads/list]
Gnumed 1.2.0: Ein Open-Source-System für digitale Patientenakten. Neu:
Ein neues Plugin zeigt eine Patientenübersicht, in der Personalverwaltung
lassen sich nun Einträge auch löschen. Weitere Plugins zeigen die aktuelle
Medikation nach Gesundheitsproblemen geordnet an und nehmen
Notizen auf. Das Bundesministerium für Justiz hat ein PDF-Formular
für die Vorsorgevollmacht beigesteuert. Neue Platzhalter machen das
Erzeugen von Berichten einfacher. Gleichzeitig mit dem neuen Client ist
der Gnumed-Server in Version 17.0 erschienen. Lizenz: GPL [http://wiki.
gnumed.de/bin/view/Gnumed]
Lightspark 0.6.0.1: Die freie Flashplayer-Implementierung Lightspark
erreicht eine Major-Version. Neu: Auf Anwenderseite ist die Unterstützung
für den Videoplayer der britischen Rundfunkgesellschaft BBC dazugekommen.
Daneben verträgt sich der Player mit der Einstellung »flat volumes«
des Soundsystems Pulseaudio. Die Entwickler haben den Speicherbedarf
reduziert sowie das Kompilieren mit LLVM 3.1 ermöglicht und rudimentäre
Unterstützung für Desktopanwendungen auf Basis von Adobe Air eingebaut.
Lizenz: GPLv3 [https://launchpad.net/lightspark]
Chaiscript 5.0.0: Eine freie Skriptsprache zum Einbetten in C++-Anwendungen.
Neu: Die neue Release benötigt die Boost-Bibliotheken nicht
mehr. Dafür ist aber zum Kompilieren ein C++11-fähiger Compiler erforderlich,
also G++ ab Version 4.5 oder Clang ab 3.1. Microsofts Visual-C++-
Compiler eignet sich dagegen nicht. Die Performance hat sich laut den
Entwicklern um ein Viertel verbessert. Die Chai-Standardbibliothek lässt
sich separat übersetzen. Lizenz: BSD-Lizenz mit drei Klauseln [http://
www.chaiscript.com]
Digikam 2.6.0: Eine freie Programmsuite für die Digitalfotografie. Neu:
Die Suite enthält einen Taskmanager, der alle laufenden Prozesse der
Software auflistet, inklusive der Kipi-Plugins. Ebenfalls neu ist das
Maintenance-Tool, das Tätigkeiten für die Pflege von Fotosammlungen
zusammenfasst, etwa das Aufspüren von Duplikaten, das Erzeugen von
Thumbnails oder die Gesichtserkennung. Daneben kann die neue Version
Dateien zum Bilder-Hoster Imageshack hochladen. Digikam verwendet
nun die Bibliothek Little CMS 2 für das Farbmanagement. Lizenz: GPLv2
[http://sourceforge.net/projects/digikam/files/digikam/2.6.0/]
PAC 4.2: PAC ist ein in Perl und GTK umgesetzter GUI-Manager für Telnet-,
SSH- und Remote-Desktop-Verbindungen Neu: Die Release führt Lesezeichen
und Verbindungshistorie als Neuerungen ein. Das Expect-Scripting
erhält neue Optionen. Daneben kann der Anwender pro Terminalfenster
Variablen konfigurieren und Kommandos bei geglückter Verbindung
automatisch ausführen lassen. Lizenz: GPLv3 [http://sourceforge.net/
projects/pacmanager/files/pac‐4.0/]
Obnam 1.0: Der finnische Linux-Entwickler Lars Wirzenius hat seine freie
Backupsoftware Obnam in der produktionsreifen Version 1.0 veröffentlicht.
Neu: Das Programm erstellt Snapshots, kann Daten deduplizieren
und unterstützt Verschlüsselung mit Gnu PG. Daneben lassen sich Backups
per Push und Pull zwischen Clients und Servern austauschen, was mittels
SFTP erfolgt. Außerdem ist die Python-Software mandantenfähig und
kann die Daten mehrerer Kunden in einem einzigen Repository speichern.
Lizenz: GPLv3 [http://liw.fi/obnam/download/]
Grml 2012.05 mit Sysstat und in Klein
Linux Mint 13 mit Long-Term-Support
Das Debian-Derivat Grml ist
in Version 2012.05 mit dem
Codenamen Ponyhof erhältlich.
Die Linux-Distribution
für Kommandozeilen-Benutzer
verwendet Kernel 3.3.7
und liefert Softwarepakete
aus Debian Testing mit Stand
28. Mai. Neu hinzugekommen
ist das Sysstat-Paket, daneben
haben die Entwickler einige
Bugs behoben. Die Bootoption
»ssh« setzt ein angegebenes
Grml 2012.05 mit Fluxbox als Windowmanager.
oder generiertes SSH-Passwort
für die Benutzer Grml und
Root. Das Grml-Feedback-Tool
ist verschwunden, dafür gibt
es die Distribution nun wieder
in der schlanken Ausgabe
„Grml-small“.
Das Ponyhof-Grml steht als
Full-Version mit 350 MByte sowie
als Small-Variante mit 150
MByte für i586 und AMD64
zum Download [http://grml.org/
download/].
n
Mint 13 mit dem Codenamen „Maya“.
Die Linux-Distribution
Linux Mint ist
in Version 13 mit aktualisierter
Software
erhältlich. Die neue
Release basiert auf
Ubuntu 12.04 und
stellt wie diese Updates
bis April 2017
zur Verfügung.
Mint 13 mit dem
Codenamen „Maya“ gibt es in
zwei Varianten: Die Desktopumgebung
Mate 1.2 führt die
Tradition von Gnome 2.x mit
dem Toolkit GTK 2 weiter, der
modernere Cinnamon-Desktop
1.4 beruht auf Gnome
3.x und GTK 3 und verlangt
3-D-Beschleunigung für seine
Effekte. Daneben kommt der
neue Display Manager MDM
zum Einsatz, der von Gnomes
GDM abstammt. Zudem ist
Maya auf Yahoo als voreingestellte
Web-Suchmaschine
umgestiegen, womit das Projekt
Einnahmen erzielt.
Weitere Informationen zur
neuen Ausgabe stehen in den
Release Notes [http://linuxmint.
com/rel_maya.php]. Dort findet
sich auch ein Workaround für
Benutzer von Broadcom-B34-
WLAN-Karten. Linux Mint 13
steht in Form von ISO-Images
für x86 und x86_64 zum
Download bereit. (mfe/jk/
mhu/uba)
n
Born to
be ROOT!
keine Mindestvertragslaufzeit
keine Einrichtungsgebühr
Root Server r Linux
Level
el 1. Der effiziente
ente Sprinter!
SICHERHEIT UND EFFIZIENZ
CPU
Leistung
RAM
HD
Traffic
,00
€/Mon.*
Intel Sandy Bridge G530
2 x 2,4 GHz
4 GB
1000 GB
Unlimited*
r
ie
NaturEnergie
NaturEnerg
Sie gehen keine e Kompromisse omisse
in Sachen Datensicher-
heit ein? Wir
auch nicht! Unsere e Rechenzentren en
entren sind
streng nach
ISO 27001 01
TÜV-zertifiziert. t. Gleichzeitig
eitig
denken n wir
an
die Umwelt und nutzen regenerative
enerativ
Energien.
n.
Der
Root ot
Server Linux Level el
1 von STRATO holt das Optimum an
Leistung und Energieeffizienz eeffizienz heraus, was aktuelle e Server-Hard-
ware
hergibt. Was
wir
an
Energie e sparen
geben wir
durch
den
günstigen n Preis gerne an Sie weiter. Profitieren Sie
davon!
* Traffic-Unlimited: Keine zusätzlichen Kosten durch Traffic (bei Traffic-Verbrauch über 1.000 GB/ Monat
und danach je weitere 300 GB erfolgt eine Umstellung der Anbindung auf max. 10 MBit/s. Erneute Freischaltung
der vollen Bandbreit jeweils kostenlos über den Kundenservicebereich). Alle Preise inkl. MwSt.
Info: 0 18 05 - 00 76 77 | strato-pro.de
(0,14€/Min. aus dem dt. Festnetz, Mobilfunk max. 0,42€/Min.)
Aktuell
www.linux-magazin.de Zahlen & Trends 08/2012
12
Zahlen & Trends
Enquete-Gruppe „Open Source“ startet
Die Enquete-Kommission des Deutschen Bundestags ist um die Projektgruppe
„Interoperabilität, Standards, Open Source“ reicher.
Am 11. Juni 2012 und damit
ein halbes Jahr verspätet hat
sich die Projektgruppe „Interoperabilität,
Standards, Open
Source“ der Enquete-Kommission
des Deutschen Bundestags
konstituiert. Der Bundestagsabgeordnete
Jimmy
Schulz (FDP) hat den Vorsitz.
Neben ihm stimmberechtigt
sind Dr. Reinhard Brandl
(CSU), Harald Lemke (Deutsche
Post AG), Dr. Bernhard
Rohleder (Bitkom e.V.), Nicole
Simon (Social-Media-Unternehmensberaterin),
Alvar
Freude (Software-Entwickler),
Cornelia Tausch (Bundesverband
Verbraucherzentrale),
Markus Beckedahl (Netzpolitik.org)
und Annette Mühlberg
(Ver.di).
Nicht stimmberechtige Mitglieder
sind: Prof. Dr. Christof
Weinhardt (Uni Karlsruhe),
Dr. Konstantin von Notz und
Tabea Rößner (beide B’90/Die
Grünen), Padeluun (Künstler
und Netzaktivist), Dr. Jeanette
Hofmann (Humboldt-Institut
für Internet und Gesellschaft)
sowie Halina Wawzyniak
(Linke).
Die Enquete-Kommission organisiert
sich in zwölf Projektgruppen.
Vier davon sind
bereits beendet, vier tagen
noch. Das übrige Drittel, neben
„Interoperabilität, Standards,
Open Source“ sind das
„Kultur, Medien, Öffentlichkeitsarbeit“,
„Verbraucherschutz“
und „Internationales
und Internet Governance“,
starten nun.
Dass die Nachzügler bis zur
parlamentarischen Sommerpause
ihr Beratungspensum
angemessen absolvieren
können und Ergebnisse sowie
Handlungsempfehlungen
vorlegen, gilt als nahezu unmöglich.
Einer Verlängerung
der Enquete-Periode müsste
der Bundestag zustimmen,
in einer der kommenden parlamentarischen
Sitzungswochen
soll das Thema auf die
Tagesordnung gesetzt werden.
Auf dem Portal Enquetebeteiligung.de
sind die Bürger eingeladen,
Ideen und Vorschläge
einzubringen.
Für die Open-Source-Gruppe
verlaufen die Abstimmungen
bislang verhalten. Zum Redaktionsschluss
des Linux-
Magazins diskutierten 88
registrierte Basisdemokraten
über acht Themen. Auf
die meiste Zustimmung trifft
die Forderung nach einem
freien Elster-Client und dem
Grundsatz der Nicht-Diskriminierung
bei Formaten und
verpflichtender Interoperabilität.
Wenig Interesse ruft die
im schönen Behördendeutsch
ersehnte „Anordnung der Erstellung
einer Dokumentation
von Kommunikationsschnittstellen“
vor.
n
Mitgliederzuwachs bei der Linux Foundation
Die Linux Foundation darf
sich über einen weiteren
Sponsor für ihre Aktivitäten
rund um das freie Betriebssystem
freuen. Samsung Electronics
hat sich als so genanntes
Platinum-Mitglied beworben.
Mit Adeneo, Feuerlabs, Omnibond,
Stec und Synopsys
begrüßt die Linux Foundation
zudem fünf neue Mitglieder
im Silber-Status.
Samsung, auch wegen seiner
Android- und sonstigen
Linux-basierten Geräte einer
der erfolgreichsten Hersteller
weltweit, sieht sich mit der
Mitgliedschaft einen Beitrag
für die Weiterentwicklung von
Linux leisten. Der koreanische
Konzern will sich auch an der
Kernelentwicklung beteiligen.
Jim Zemlin, Direktor der
Linux Foundation, sieht eine
Win-win-Situation, Samsung
festige damit seine Erfolgsstrategie.
Die sieben Platin-Mitglieder
zahlen einen Jahresbeitrag
von 500 000 US-Dollar und
besetzen einen Sitz im Board
of Directors der Stiftung. Ein
so genanntes Silver Member
zahlt, abhängig von der Firmengröße,
einen Jahresbeitrag
zwischen 5000 und 20 000 US-
Dollar. Ihre Mitglieder stellt
die Linux Foundation im Web
[http://www.linuxfoundation.org/
about/members] vor. n
Torvalds Fingerzeig gegen Nvidia
In einem Youtube-Video, das
Linus Torvalds beim Aalto
Center for Entrepreneurship
(ACE) in Otaniemi zeigt, findet
der Linux-Gründer deutliche
Worte für die mangelhafte
Kooperationsbereitschaft des
Grafikchipherstellers Nvidia.
Gut eine Stunde dauert das
Interview [https://www.youtube.
com/watch?feature=player_embedded&v=MShbP3OpASA],
das Gastgeber
Will Caldwell mit Linus
Torvalds führte.
Gegen Ende der Veranstaltung
schildert ihm eine enttäuschte
Zuschauerin ihre Probleme mit
einem Notebook mit Dualgrafik
und berichtet, Nvidia habe
sie einfach abgewiesen und
keinerlei Kooperationsbereitschaft
gezeigt. Die Dame aus
dem Publikum fragt Torvalds,
was sein Kommentar zu solch
Open-Source-feindlichem Verhalten
sei.
Torvalds dazu: „Ich weiß genau,
worüber sie sprechen.
Aber ich bin sehr froh, dass
das eher die Ausnahme als die
Regel ist. Und ich bin auch sehr
froh, dass ich hier öffentlich
sagen darf, dass Nvidia einer
der schlimmsten Brennpunkte
in Sachen Hardwarehersteller
ist, den wir je hatten. Und das
ist umso trauriger, weil Nvidia
versucht sehr, sehr viele
Spontane Meinungsäußerung im gewohnt deutlichen Stil von Linus Torvalds.
Chips auf dem Android-Markt
zu verkaufen. Nvidia ist die
schlimmste Firma, mit der wir
je zu tun hatten.“
© Aalto University
Zur Verdeutlichung seines
Mißfallens reckte Torvalds
dann noch den Mittelfinger in
die Kamera.
n
Zahlen & Trends 08/2012
Aktuell
www.linux-magazin.de
13
Anmeldung für Open-Suse-Konferenz & Co.
Dell setzt auf ARM-Server
2 0 1 2
October 20-23
bostrapping-awesome.org
Die Open-Suse-Konferenz in Prag beheimatet
noch weitere Events rund um Open Source.
Die Anmeldung zur Open-
Suse-Konferenz, die vom 20.
bis 23. Oktober 2012 in Prag
stattfindet, ist eröffnet. Auch
Beiträge zum Programm werden
noch angenommen. Die
technische Universität Prag
beherbergt gleichzeitig weitere
Treffen: Die Gentoo Miniconf,
die tschechischen Linux
Days, einen Track namens
Future Media sowie die Suse
Labs Conference.
Die kostenlose Registrierung
ist nun per Webformular
möglich. Wer die Veranstaltung
unterstützen möchte,
kann ein Supporter-Paket für
40 Euro oder den Professional-Tarif
für 250
Euro wählen. Förderer
nehmen am Dinner der
Referenten teil, Professionals
treffen sich
zudem mit dem Suse-
Management.
Weitere Informationen
zur Veranstaltung gibt
es auf einer Portalseite
unter [http://en.opensuse.
org/Portal:Conference] im
Open-Suse-Wiki. Der
Call for Papers ist noch
nicht abgeschlossen,
interessierte Sprecher
sind eingeladen, Beiträge
einzureichen. n
Der Computerhersteller
Dell hat mit
Tests für Betriebssysteme
und Anwendungen
auf
ARM-Servern begonnen.
Ein Server-
Modell sei unter
dem Namen Copper
[http://content.
dell.com/us/en/enterprise/d/campaigns/project‐copper.aspx]
bereits
an ausgewählte
Kunden geliefert
worden, heißt es in einer
Mitteilung. Bei Dell steht
die gesamte ARM-Entwicklung
unter dem Projektnamen
Copper.
Zu diesen ersten Kunden zählen
Canonical und Cloudera.
Zum Test ist unter anderem
der Remote-Zugang zu Copper-Serverclustern
bei Dell
vorgesehen. Zudem will der
Hersteller auch ARM-Versionen
seiner Open-Source-Ma-
Steve Cumings vom Dell Data Center Solutions
präsentiert das Projekt Copper.
nagement-Infrastructure-Soft-
ware ausliefern. Strategisch
sieht Dell die Nachfrage nach
ARM-Installationen in den
Bereichen Webfrontend- und
Hadoop-Umgebungen steigen.
Die meisten Lösungen
seien im Open-Source- und
im nicht-operativen Umfeld
verfügbar, heißt es weiter,
deshalb wolle Dell die Weiterentwicklung
dieses Partnersystems
unterstützen. n
Aktuell
www.linux-magazin.de Zahlen & Trends 08/2012
14
Top 500: Der Viertschnellste steht in München
Im Rahmen der Opening Session
der International Supercomputing
Conference ISC
’12 in Hamburg wurde die
39. Liste der 500 schnellsten
Computer der Welt präsentiert.
Der neue Spitzenreiter,
das Sequoia-System (IBM Blue
Gene/Q) des Lawrence Livermore
National Laboratory in
den USA, erreicht unter Linux
mit insgesamt 1 572 864 Cores
einen maximalen Linpack-
Wert von 16 324,8 Teraflops
(16,32 Petaflops).
Auf dem Fuß folgt ihm der
japanische K-Computer mit
Sparc-64-CPUs, der vormalige
Spitzenreiter, mit 10 510
Teraflops. Schon auf Platz
vier findet sich der eben erst
in Betrieb genommene Super
MUC des Leibniz-Rechenzentrums
der TU München, der
schnellste Rechner in Europa,
der immerhin 2897 Teraflops
aufzubieten hat und von IBM
installiert wurde.
IBM dominiert wie in den Jahren
zuvor souverän die Rangfolge
der erfolgreichsten Hersteller
von Supercomputern:
213 der Top 500 stammen von
IBM, was einen Anteil von 43
Prozent ausmacht. Auf Platz
zwei findet sich HP mit 27
Prozent Anteil, andere Hersteller
wie Dell, Fujitsu, Cray
oder Bull erreichen nur einstellige
Prozentwerte.
Untersucht man die Verteilung
der Superrechner nach Regionen,
dann entfällt die Hälfte
der Installationen auf die
USA. Bereits auf dem zweiten
Platz folgt mit 14 Prozent
China, das in den letzten Jahren
sehr stark zugelegt hat.
Deutschland (4 Prozent) spielt
in einer Liga mit Frankreich
(4 Prozent) oder England (5
Prozent), stellt aber mit dem
Ju Queen des Forschungszentrums
Jülich immerhin ein
zweites System unter den Top
10 (Platz 8).
Bei den Prozessoren hat Intel
seit Jahren ebenso unangefochten
die Nase vorn wie IBM
bei den Maschinen: Rechnet
man die verschiedenen Intel-
Prozessortypen zusammen,
kommt man auf einen Anteil
von über 70 Prozent. Dabei
Der Super MUC des Leibniz-Rechenzentrums der TU München ist der schnellste
Rechner in Europa.
© LRZ
sterben Dualcore- und selbst
Quadcore-Systeme langsam
aus, der Trend geht zu acht
bis 16 Kernen pro CPU.
Eines der nach wie vor am
meisten diskutierten Themen
auf der Konferenz war
die Energieeffizienz. Besteht
der gegenwärtige Trend fort,
müsste ein Superrechner zum
Ende der laufenden Dekade,
wenn man den Durchbruch
zum Exaflop-Computing erwartet,
8 bis 9 Megawatt Strom
verbrauchen. Allerdings hoffen
die Anbieter, diesen Wert
bis dahin deutlich senken zu
können, und konzentrieren
große Forschungskapazitäten
auf dieses Ziel.
Die Conference begrüßte Mitte
Juni die Rekordzahl von über
2100 Teilnehmern aus 55 Ländern
in mehr als 30 Sessions
mit über 100 Vortragenden.
Nachdem sie in diesem Jahr
bereits zum vierten Mal in
Hamburg stattfand, wechselt
der nächste Austragungsort
nach Leipzig.
n
Open Suse will Release-Prozess überdenken
Open Suses Release-Manager
Stephan Kulow hat die Projektmitglieder
der Linux-Distribution
informiert, dass sich
die für Mitte Juli geplanten
Termine für Version 12.2 nicht
halten lassen. In seiner E-Mail
[http://lists.opensuse.org/opensuse
‐factory/2012‐06/msg00468.html]
schreibt Kulow, die derzeitige
Verspätung sei eine gute Gelegenheit,
den Release-Prozess
zu überdenken. Die gewachsene
Anzahl der Pakete im
Factory-Zweig habe neue Probleme
mit Abhängigkeiten
gebracht, fährt er fort: Nie
habe es in der Entwicklung
von Open Suse 12.2 weniger
als 100 Pakete mit dem Status
„rot“ gegeben.
Kulow regt daher an, mehr
Mitarbeiter in die Integrationsarbeit
einzubeziehen.
Zudem soll es mehr Staging-
Projekte geben, die Software
zur Reife bringen, und weniger
Entwicklungsprojekte.
Als Konsequenz des gestiegenen
Aufwands schlägt er vor,
entweder die festen Release-
Termine abzuschaffen oder
nur noch einmal im Jahr eine
neue Version zu veröffentlichen.
Er lädt die Community
zu einer offenen Diskussion
ein, um eine neue Vorgehensweise
zu entwickeln.
Jos Poortvliet, Community-
Manager von Open Suse, hat
sich unter [http://news.opensuse.
org/2012/06/14/where-is-my-12-2-my
-kingdom-for-a-12-2/] ebenfalls
zu Wort gemeldet. Poortvliet
spricht dabei im Zusammenhang
mit den kaputten Paketen
von einem Broken-Window-Problem:
Je mehr bereits
kaputt sei, desto weniger würden
sich die Leute darum
kümmern.
n
Lernunterlagen
Linux Essentials
Die Linup Front GmbH hat
kostenlose Lernunterlagen für
die vom Linux Professional
Institute neu eingeführte Zertifizierung
Linux Essentials
veröffentlicht. Das Handbuch
steht als PDF im Webshop
von Linup Front [http://shop.
linupfront.de/product/lxes/] zum
Download bereit. Zudem stehen
die Unterlagen auch in
Form einer Android-App zur
Verfügung und lassen sich im
Google-Play-Store finden. Die
Unterlagen sind in deutscher
Sprache verfasst.
n
Microsoft bringt Linux in seine Cloud
Als Reaktion auf den häufigsten
Kundenwunsch, wie
es seitens des Softwareriesen
heißt, bietet Microsoft nun
auch Linux-Images in seiner
Cloud an. In Microsofts Azure
genanntem Cloudsystem stehen
damit virtuelle Maschinen
mit Open Suse 12.1, Centos,
Ubuntu und auch Suse Linux
Enterprise Server bereit.
Suse zufolge soll das komplett
mit Open Suse Studio
integrierte Linux preislich
zwischen 1,3 und 64 US-Cent
pro Stunde Nutzungsgebühr
kosten, in Abhängigkeit von
der Größe des Image. Die genannte
Suse-Kalkulation wäre
damit den Preisen bei Amazons
Cloudangebot ungefähr
vergleichbar.
Auf der eigens eingerichteten
Webseite [http://www.suse.com/
promo/suse‐linux‐enterprise‐server
‐on‐azure.html] können sich interessierte
Suse-Anwender
bereits jetzt ein Bild vom
Funktionsumfang machen.
Ubuntu-Anhängern zeigt das
Youtube-Video [http://www.
youtube.com/watch?feature=player_
embedded&v=bDAyI0imqGE#!], wie
Canonicals Spross und Microsofts
Cloud miteinander
arbeiten. Laut Canonical-Blog
können Kunden „ab Herbst
2012“ Support für die Azure-
Images von Mark Shuttleworths
Firma erwerben. n
IPv6: Netcraft sichtet 7 Millionen Hosts
Die monatliche Statistik des
Internetspezialisten Netcraft
kann pünktlich zum IPv6-Tag
am 6. Juni auf Antworten von
sieben Millionen Hostnamen
mit IPv6-Adressen verweisen.
Die Mehrheit der IPv6-Hosts
Unter der Adresse [http://www.
worldipv6launch.org] gibt es Informationen
zum IPv6-Tag.
läuft unter dem Apache-Webserver
(6,2 Millionen), Nginx
folgt mit rund 400 000 Hostnamen.
Insgesamt hat Netcraft [http://
www.netcraft.com] in seiner
Webserverstatistik den Apache-Server
im Juni stark an
Marktanteilen zulegen sehen.
Fast 23 Millionen Hostnamen
mehr als im Vormonat sind
auf Apache gehostet. Microsofts
Webserver hat zwar
3,5 Millionen Hostnamen
hinzugewonnen, verliert aber
trotzdem an Marktanteilen
gegenüber der Konkurrenz.
Nginx hat nach neun Monaten
Wachstum im Juni leicht
an Anteilen verloren. n
Zahlen & Trends 08/2012
Aktuell
www.linux-magazin.de
15
Kann eine
Schulungseinrichtung
für mehr als EINEN
Themenbereich
berühmt werden?
Das Linuxhotel ist bekannt für erstklassige Open-Source-Schulungen. In den letzten Jahren kamen Java
und andere Programmiersprachen hinzu - wie immer in Kooperation mit führenden Spezialisten, und in
abgeschiedener, konzentrierter, aber auch ziemlich verspielter Umgebung. Es ist so naheliegend, auch
Entwicklerthemen bei den OpenSource‘lern zu lernen, weil man dort schon immer sehr „unter die
Haube“ guckte und mit viel Freude intensivst arbeitet. Das weiss ein Großteil der deutschen Admins, nur
unter Entwicklern hat's sich noch nicht so ganz herumgesprochen.
Mehr siehe www.linuxhotel.de
Aktuell
www.linux-magazin.de Zahlen & Trends 08/2012
16
Mandriva sucht Freunde
Sinkt der Stern von Mandriva?
Das durch Finanznöte abermals
ins Trudeln gekommene
Unternehmen Mandriva SA
plant nach einer Finanzierungsrunde
einen Neuanfang
und sucht Kooperationspartner
und Helfer, unter anderem
beim Mageia-Projekt. Beim
Mandriva-Ableger Mageia ist
offenbar darüber niemand in
Jubel ausgebrochen.
Im Mandriva-Blog schreibt
der Leiter des operativen
Geschäfts, Jean-Manuel Croset,
dass das französische
Unternehmen sich künftig
von der bislang praktizierten
One-size-fits-all-Strategie abwenden
will, hin zu einem
differenzierten Angebot. Das
bestehe dann aus Desktop
und OEM-Produkten, die man
mit dem in Gründung befindlichen
Mandriva Linux stemmen
will.
Die Server-Produkte wiederum
sollen in enger Zusammenarbeit
mit dem Mageia-
Projekt entstehen. Die von
Croset genannten Kooperationen
will Mandriva regelmäßig
auf ihre wirtschaftlichen,
technischen und strategischen
Aspekte abgeklopfen.
Die zu gründende Organisation
Mandriva Linux soll als
eine Art organisatorischer
Arm der Firma Mandriva SA
dienen. Das Unternehmen
hatte sich kürzlich den Fortbestand
durch eine Finanzierungsrunde
gesichert.
Mandriva SA hat während
der Querelen um die Finanzierung
seine Linux-Distribution
stark vernachlässigt. Der
Schritt in Richtung Mageia,
einem Mandriva-Fork, dürfte
deshalb in der Anfangsphase
wohl eher ein Nehmen als ein
Geben sein.
Mageia hat sich dazu geäußert
und lehnt eine Zusammenarbeit
in Form der Organisation
Mandriva Linux ab. Über
den genauen Inhalt der Gespräche
mit Croset habe man
Stillschweigen bewahrt, heißt
es im Mageia-Blog [http://blog.
mageia.org/de/2012/05/21/mageia
‐der‐kreis‐schliest‐sich/]. Fest
stehe aber: Man wolle unabhängig
von kommerziellen
und strategischen Belangen
arbeiten.
Dem Ansinnen Mandrivas, einen
Server-Ableger auf Mageia
aufzubauen, steht das Projekt
hingegen wohlwollend gegenüber.
Es betont, dass es dafür
Regeln gäbe: „Mageia hat eine
fest definierte Führungsstruktur
und Organisation und es
gibt keine Pläne, diese zu ändern!
Mageia ist unabhängig
von jeglicher Firma!“ n
Fedora will Secure Boot und UEFI meistern
Der Entwickler Matthew Garrett
hat einen Plan vorgestellt,
der die kommende Fedora-Release
18 auch auf Rechnern
mit UEFI und Secure Boot
zum Laufen bringen soll. Dabei
betont der Red-Hat-Angestellte,
dass er nicht für seinen
Arbeitgeber spricht, sondern
lediglich den Diskussionsstand
des Fedora-Projekts
wiedergibt.
Garrett erwartet, dass mit der
voraussichtlichen Veröffentlichung
von Windows 8 im
Herbst 2012 fast alle handelsüblichen
Computer Secure
Boot verwenden werden – auf
jeden Fall jene mit vorinstalliertem
Windows. Mit in der
Firmware hinterlegten Schlüsseln
stellt das System sicher,
dass nur das vorgesehene Betriebssystem
starten darf.
Es werde zwar die Möglichkeit
geben, in der Firmware Secure
Boot zu deaktivieren oder eigene
Schlüssel zu hinterlegen,
diesen heiklen Eingriff möchte
Matt Garrett aber nicht allen
Fedora-Nutzern zumuten.
Ein mögliches Vorgehen für
Fedora wäre es, selbst einen
Schlüssel bei Herstellern zu
hinterlegen. Das wäre aber
aufwändig und würde die
Wahl der Linux-Distribution
auf Fedora einschränken, referiert
der Entwickler. Die Alternative,
einen gemeinsamen
Schlüssel für alle Linux-Distributionen
zu vereinbaren,
sei aber organisatorisch fast
unmöglich.
Daneben besteht eine weitere
Möglichkeit, für die sich das
Fedora-Projekt wahrscheinlich
entscheiden wird: Die
erste Stufe des Linux-Bootloaders
von Microsoft signieren
zu lassen. Das sei über das
Systementwickler-Portal des
Herstellers für rund 100 US-
Dollar möglich. Die erste Stufe
soll dann den Linux-üblichen
Bootloader Grub 2 starten, der
den Linux-Kernel lädt.
Das Prinzip ist einfach, der
Teufel steckt aber im Detail:
Damit das Secure-Boot-
Prinzip greift, muss auch der
Linux-Kernel signiert sein und
darf nur signierte Module
nachladen. Die Grafiktreiber
müssen aus dem Userspace in
den Kernel wandern. Garret
und Kollegen haben also noch
viel Arbeit vor sich.
Was tun Anwender, die einen
selbst kompilierten Kernel einsetzen
möchten? Sie müssten
sich vermutlich die Mühe machen,
den Betriebssystemkern
selbst zu signieren und ihre
Schlüssel irgendwie in die
Firmware einzuspielen. Oder
sie treten selbst Microsofts
Entwicklerprogramm bei, um
ihren Kernel signieren zu lassen.
Ansonsten bleibt nur die
Möglichkeit, Secure Boot zu
deaktivieren. Bei ARM-Rechnern
und Embedded-Hardware
mit Windows-Logo geht
das allerdings nicht.
Das alles sei noch nicht in
Stein gemeißelt, schreibt
Matthew Garrett. Die Entwickler
möchten den Plan
aber für Fedora 18 umsetzen,
sofern nicht wichtige Gründe
für Änderungen sprechen.
Garrett setzt sich außerdem
mit der erwarteten Kritik an
dem geplanten Vorgehen auseinander.
(jcb/jk/mhu/uba)n
BUCHEN SIE BIS ZU
VIRTUELLE
99 MASCHINEN!
1&1 DYNAMIC CLOUD SERVER: BLITZSCHNELL
MEHR POWER NUTZEN!
Jetzt 100 und heute Abend 1.000 Kunden?
Kein Problem!
■ NEU! Leistungserhöhung und Leistungsreduktion
jederzeit flexibel nach Bedarf einstellbar
■ NEU! Performance Features: bis zu 6 CPU, bis zu
24 GB RAM und bis zu 800 GB HDD
■ NEU! Jederzeit weitere Virtuelle Maschinen zubuchbar
■ NEU! Stundengenaue Abrechnung
■ NEU! Management und Monitoring Ihrer Server-
Dienste im Browser oder per Mobile-App
■ Hosting in den sicheren 1&1 Hochleistungs-Rechenzentren
■ Linux- oder Windows-Betriebssystem,
bei Bedarf Parallels Plesk Panel 10 unlimited vorinstalliert
■ Eigene dedizierte Server-Umgebung mit vollem Root-Zugriff
■ Eigenes SSL-Zertifikat
■ 24/7 Hotline und Support
1&1 DYNAMIC CLOUD SERVER
3 MONATE FÜR
0,–€/Monat, danach
ab 39,99 €/Monat*
Infos und
Bestellung:
0 26 02 / 96 91
0800 / 100 668 www.1und1.info
* 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
Leistungsberechnung jeweils stundengenau. Einmalige Einrichtungsgebühr 39,– €. 12 Monate Mindestvertragslaufzeit. Preise inkl. MwSt.
Aktuell
www.linux-magazin.de Kernel-News 08/2012
18
Zacks Kernel-News
Warum ein Bugfix nicht sofort im stabilen Kernel landet
Manchmal offenbart eine einzige
Diskussionen auf der
Kernel-Mailingliste ein interessantes
Problem der Linux-
Entwicklung im Ganzen. Das
geschah zuletzt im Review-
Zyklus für die stabile Kernelversion
3.3.2. Während dieser
Phase diskutieren die Entwickler,
welche Patches in die
Version eingehen.
Bei Kernel 3.3.1 hatten einige
Anwender Systemabstürze
beobachtet, die mit einem
Patch für den Suspend-Resume-Code
zusammenhingen.
Der Crash ließ sich beheben,
indem man das Patch rückgängig
machte, also den verursachenden
Code entfernte.
Folglich bat der mexikanische
Nokia-Entwickler Felipe Contreras
den Stable-Maintainer
Greg Kroah-Hartman, das
Patch für Version 3.3.2 rückgängig
zu machen.
Das stellte sich aber als problematischer
heraus, als er
dachte: Greg antwortete, das
gehe gemäß der üblichen Prozedur
nur, wenn das Patch
auch upstream im Torvaldsschen
Kernelzweig zurückgeholt
werde. Tatsächlich
ist diese Regel in der Datei
»Documentation/stable_kernel
_rules.txt« im Linux-Quelltext
festgehalten.
Diese Antwort schmeckte
Felipe gar nicht. Er schrieb,
Greg halte sich zu sehr an
den Buchstaben irgendwelcher
Regeln, wo es doch ganz
offensichtlich eine praktische
Lösung gäbe, um hängende
Der US-Amerikaner Greg Kroah-
Hartman schaut freundlich drein –
als Maintainer des stabilen Linux-
Kernels bleibt er unnachgiebig.
© Linux Foundation
Rechner wieder flott zu machen.
Doch Greg blieb hart.
Einige Diskussionsteilnehmer
stärkten ihm den Rücken,
beispielsweise Adrian Chadd
vom Free-BSD-Projekt. Er unterstrich,
dass gerade die kritisierte
Regel unverzichtbar für
einen ordentlichen Entwicklungsprozess
sei. Lasse man
den stabilen Versionszweig
vom Upstream abweichen, gerate
man in eine unübersichtliche
Situation: Dann würden
Distributoren und Endanwender
Bugmeldungen und Wünsche
einschicken, die sich auf
den stabilen Zweig bezögen,
aber wenig mit der Version zu
tun hätten, die sich gerade in
Entwicklung befindet.
Selbst Linus Torvalds schaltete
sich ein und fragte: „Wenn
Stable plötzlich Patches rückgängig
macht, Upstream aber
nicht, wie wird der nächste
Kernel wohl aussehen? Die
Regeln für Stable existieren
aus gutem Grund. Bevor es
sie gab, haben wir ständig
Bugs im stabilen Kernel behoben,
aber den Upstream
vergessen.“ Nur wenig später
meldete Linus, die von Felipe
angeregte Änderung habe seinen
Git-Zweig erreicht – nun
könne Greg sie ebenfalls anwenden.
Das alles überzeugte Felipe
offenbar immer noch nicht.
Er sei ja dafür, die Fehler auch
upstream zu beheben, schrieb
er, er finde es nur überflüssig,
dass der stabile Kernel
deshalb warten müsse. Könne
man die beiden Vorgänge
denn nicht entkoppeln?
Hier meldete sich David S.
Miller: Das habe sich in der
Praxis nicht bewährt. Die Fixes
landeten zwar im stabilen
Kernel, gingen dann aber erst
einmal verloren und es dauerte
oft lange, bis sie endlich in
den Upstream-Kernel fanden.
Erst die geltende, recht restriktive
Regelung habe für Besserung
gesorgt, weil sie die
Entwickler zwinge, sich um
Upstream zu kümmern.
Ein ähnliches Phänomen gab
es bereits früher in der Linux-
Geschichte. Ursprünglich hatten
die Entwickler einfach vor
sich hin programmiert, ohne
besonderen Wert auf Stabilisierung
zu legen. Ab 1997
mit Linux 2.1 dienten dann
die Versionen mit ungerader
Minor-Nummer der Entwicklung,
die mit gerader Nummer
galten als stabil. Diesen
Ansatz ließ Linus Torvalds
ab Kernel 2.6 wieder fallen
und die fortwährende Entwicklung
wurde wieder zum
Normalfall.
Greg Kroah-Hartman und
Kollegen entwickelten daher
den neuen Ansatz für stabile
Kernel: Sie nahmen jede Release
von Torvalds und pflegten
sie eine Weile. Im Laufe
der Zeit etablierten sie zudem
Regeln – wie jene, an der Felipe
Contreras Anstoß nahm.
(Zack Brown/mhu) n
Aus dem Kernel-Quelltext: Die Regeln für den stabilen Zweig schreiben vor, dass
die Änderungen auch im Upstream-Kernel erfolgen müssen.
Projektteams aufgepasst!
Thomas Krenn unterstützt Euch mit
Serverhardware bei Eurem Open-Source-Projekt.
Thomas Krenn Open-Source-Förderung
Neu: Bewerbung der Projekte zu
jeder Zeit und das ganze Jahr über!
Auswahl erfolgt alle drei Monate
Budget wird über das neue
Feedbackprogramm bereit gestellt
Förderungsbeitrag erhöht sich bei Teilnahme
am Thomas Krenn Feedbackprogramm
Für die Thomas Krenn Open-Source-Förderung
können sich alle Projektteams per E-Mail unter
open-source-sponsorship@thomas-krenn.com
bewerben.
Zusätzlich unterstützen viele Beiträge auf Sozial-
Media-Plattformen Open-Source-Projekte bei der
Anschaffung von neuer Hardware.
Mehr Informationen unter: www.thomas-krenn.com/osf
Thomas Krenn
Gründer
Made in Germany!
Server individuell konfi gurieren unter 08551 9150-0 oder www.thomas-krenn.com
Aktuell
www.linux-magazin.de Linuxtag 2012 08/2012
20
Linuxtag 2012 in Berlin
Tradiertes Tanzparkett
Der Linuxtag ist für die Freunde freier Software im deutschsprachigen Raum ein Pflichttermin. Dies bestätigte
sich im Mai 2012 mit einem bunten Programm. Mit dem Etablieren neuer Attraktionen tat sich der traditionelle
Open-Source-Treff aber schwer. Mathias Huber
© Linuxtag
Abbildung 1: Die tanzenden Nao-Roboter von Aldebaran Robotics zeigten zum
Auftakt der Veranstaltung, dass Linux Spaß macht.
Mit gelenkig tanzenden Robotern
begann der 18. Linuxtag
am 23. Mai in Berlin. Auch
auf den Maschinen der französischen
Firma Aldebaran Robotics
läuft – wen wundert's
– Linux (Abbildung 1). Anlass
zur Freude gab es für Martin
Schobert, der anschließend
den Absolventenpreis
des deutschen Softwareherstellers
Univention für seine
Abschlussarbeit bekam. Für
seine Diplomarbeit „Softwaregestütztes
Reverse-Engineering
von Logik-Gattern
in integrierten Schaltkreisen“
erhielt er den mit 2500 Euro
dotierten ersten Preis.
Rund 200 Vorträge sowie
120 Firmen und Projekte in
der Ausstellung gestalteten
die vier Veranstaltungstage.
In den Messehallen mischten
sich Neuheiten wie die
Stofftiere von Stricktux.de
oder das Präsentationssystem
Open Slides mit Stammgästen
wie Open Suse und Fedora.
Als Urgestein darf man getrost
die Typografie-Liebhaber vom
Tex-Anwenderverein Dante
sowie die Forth Gesellschaft
bezeichnen, die auch dieses
Jahr zeigte, wie man in wenigen
KByte Mikrocontroller
programmiert (Abbildung 2).
Cloud und SSD
Das Vortragsprogramm behandelte
aktuelle Themen wie
Cloud Computing mit Open
Stack Essex oder das Caching
mittels SSDs. Manche der
Vorträge, etwa zu den No-
SQL-Datenbanken Mongo DB
und Couch DB, blieben leider
im Grundwissen stecken.
Andere, etwa der Beitrag von
Markus Zapke-Gründemann
über das Python-Framework
Django, packten erstaunlich
viel Know-how in die beschränkte
Sprechzeit.
Über das Verhältnis von freier
Software und Politik diskutierten
Parteienvertreter, der
Netzaktivist Markus Beckedahl
und der Linux-Magazin-
Redakteur Markus Feilner. So
gut wie alle möchten Open
Source fördern, haben damit
aber keinen leichten Stand in
ihren Fraktionen.
Der Glibc-Maintainer Ulrich
Drepper sagte in seiner Keynote
dem Locking den Kampf
an: Hardware Lock Elison
(HLE) und Transactional Memory
sollen dafür sorgen,
dass die vielen Kerne moderner
Computer nicht aufeinander
warten, sondern arbeiten.
Thematisch nicht neu, dafür
aber humorvoll und praxisnah
fiel die Sitzung mit Harald König
zum Tracing mit dem Tool
Strace aus. Er demonstrierte
auf seinem Xterm Linux-Interna
zum Anfassen.
Daneben gab es etliche Programmpunkte,
die längst zur
Linuxtag-Tradition gehören:
den Hacking-Contest in der
Open-Source-Arena und das
Kernel-Kwestioning mit bekannten
deutschen Kernelhackern
wie Wolfram Sang und
Alexander Graf.
Neue Impulse versuchte das
Rootcamp zu setzen, das im
Rahmen des Linuxtags stattfand.
Als zeitgemäße Unconference
oder Barcamp lud es
Linux-Admins dazu ein, selbst
ein Workshop-Programm
auf die Beine zu stellen. Die
rund 30 Besucher verteilten
sich am Linuxtag-Samstag
auf mehrere Programmpunkte
und ließen die Sitzungsräume
damit recht leer aussehen.
Gefühlssache
Obwohl die Veranstalter mit
über 12 000 Personen eine
um 10 Prozent gestiegene
Besucherzahl meldeten, zeigten
sich viele Aussteller und
Besucher nicht so begeistert:
Bescheiden besuchte Vorträge
und viel Platz in den Gängen
der Ausstellungshallen hinterließen
eher den Eindruck einer
kleinen Flaute. Unverdrossen
tagt der Linuxtag auch 2013
wieder in Berlin, und auch
das Rootcamp soll eine neue
Chance bekommen. n
Abbildung 2: Klassiker: Die Forth
Gesellschaft zeigt seit Jahren an
kleinen Maschinen, wie man effizient
Controller programmiert.
© Linuxtag
WEBHOSTING · SCHULUNGEN · SUPPORT
Professionelle Hostinglösungen
Performance & Verfügbarkeit
auf höchstem Niveau
Managed Server Lösungen vom Profi
„Ich setze auf Linux –
genau wie mein Webhoster!“
Der Open Source Gedanke ist mir wichtig
und ich finde es großartig, dass Mittwald
sich so aktiv für die Communitys einsetzt.
Hinzukommt, dass Performance und Verfügbarkeit
einfach stimmen und ich mich
auf das 24/7-Monitoring und den kompetenten
Service vollkommen verlassen kann.
Ich fühle mich rundum wohl!
Performance-Hungrige nutzen z. B.
Managed Server Lösungen 6.0
Hochwertige Server-Hardware
300 % Magento-Performance
Bis zu 24 Prozessorkerne
Bis zu 128 GB Arbeitsspeicher
Leistungsstarke Server-HDDs
Hardware-RAID 1/10 (optional)
Individuell konfigurierbar
Bereits ab monatlich:
€ 99,99*
zzgl. MwSt.
Alle Angebote richten sich ausschließlich an Gewerbetreibende
Alle Hostinglösungen unter: www.mittwald.de
Rufen Sie uns kostenlos an: 0800 / 440 3000
* Alle genannten Preise verstehen sich monatlich zzgl. MwSt. Die einmalige Einrichtungsgebühr
für die Managed Server 6.0 beträgt 149,- €. Die Vertragslaufzeiten und Abrechnungszeiträume
betragen für die Managed Server 6.0 zwischen 12 und 36 Monate. Automatische
Vertragsverlängerung um 12 Monate, wenn der Vertrag nicht mit einer Frist von
30 Tagen zum Ende der jeweiligen Vertragslaufzeit gekündigt wird.
www.mittwald.de
Titelthema
www.linux-magazin.de Grundlagen 08/2012
22
Wie Entwickler und Maintainer ihre Situation im Handumdrehen verbessern
Software testen
Alle Programmierer auf der Welt machen Fehler. Darum, trotzdem funktionsfähige und sichere Programme zu
bekommen, kümmert sich das deswegen so wichtige Sachgebiet „Software-Testing“. Zu diesem gehören Code-
Reviews genauso wie dynamische Black-Box-Tests. Jan Kleinert, Tim Schürmann
Experten schätzen, dass gängige Software
im Mittel 25 Fehler pro 1000 Programmzeilen
enthält und gute Programme
zwei Fehler pro 1000 Zeilen. Software, die
in der Raumfahrt zum Einsatz kommt, soll
noch eine Größenordnung weniger Bugs
Inhalt
22 Grundlagen
Warum, wann und wie jeder Entwickler
Software-Testing betreiben sollte.
26 Statisches Testen
Tools, die Quelltexte in C, C++, Java und
Python nach Fehlern durchforsten.
32 Testdriven Development
Zu Beginn das Testprogramm schreiben,
dann erst die Applikation.
38 Nicht die Hacker sind das Problem ...
Sieben Gebote für das Schreiben sicherer
Webapplikationen.
42 Der lange Weg zum Development
Rollout-Praxis: Wie Red Hat, Limux & Co.
ihre Pakete testen.
aufweisen. Ob das für die
Software der Ariane-5-Rakete
(Abbildung 1) zutraf,
die am 4. Juni 1996 in
den Himmel von Fran zösisch-Guayana
aufstieg,
darf man bezweifeln.
Das an Bord befindliche
Trägheitsnavigationssystem
jedenfalls stürzte
36,7 Sekunden nach dem
Start ab, als es versuchte,
den Wert der horizontalen
Geschwindigkeit von
einer 64-Bit-Gleitkommadarstellung
in einen vorzeichenbehafteten
16-Bit-
Integer umzuwandeln.
Hier die Ada-Codezeile:
P_M_DERIVE(T_ALG.E_BH) := UC_16S_EN_16NSU
(TDB.T_ENTIER_16S ((1.0/C_M_LSB_BH) *U
G_M_INFO_DERIVE(T_ALG.E_BH)))
Die betreffende Zahl war schlicht größer
als 215 und erzeugte einen Overflow der
Variablen »E_BH«. Anschließende brach
das Lenksystem der Rakete zusammen
und gab die Kontrolle an eine zweite
identische Einheit ab. Da der Backuprechner
das exakt gleiche Programm verwendete,
stürzte auch er ab. Der Hauptcomputer
interpretierte die Nonsens-Werte
als Flugbahnabweichung und versuchte
diese zu kompensieren. Nach 40 Sekunden
Flugzeit löste eine Automatik die
Selbstzerstörung des ganzen Stolzes der
europäischen Raumfahrt aus. Materieller
Sofortschaden: 370 Millionen Dollar.
Als wäre das nicht ärgerlich genug, förderte
die Untersuchung des Vorfalls pikante
Details [1] zu Tage:
n Die Typumwandlung war nicht abgesichert,
da die Programmierer glaub-
ten, die übergebene Geschwindigkeit
könne nie so groß werden.
n Die Annahme war für die Ariane 4
richtig, für die das Programm ursprünglich
gedacht war. Die Ariane 5
besitzt aber ein anderes Flugprofil.
n Ariane 4 brauchte das Programm nur
während des Countdown, Ariane 5
braucht es eigentlich überhaupt nicht.
n Die Entscheidung, den Ariane-4-Code
ungetestet auf der Ariane 5 zu benutzen,
hatte das Management des Softwareentwicklerteams
gefällt.
n Die Entwicklung der Ariane 5 kostete
geschätzt sieben Milliarden Dollar.
Aus dieser wahren Anekdote lassen sich
eine Menge Erkenntnisse über falsche
Annahmen, die Wirksamkeit von Redundanzen,
unerwartete Folgekosten und die
Wichtigkeit von Softwaretests ziehen.
Notweniges Übel
Obwohl die Notwendigkeit des Testens
selbst geschriebener Software unstreitig
ist, gehört es wohl zu den meist gehassten
Aufgaben eines Entwicklers. Es ist
umständlich, zeitaufwändig, und am
Ende weiß er nie, ob er wirklich alle Fehler
erwischt hat. Stehen die Programmierer
auch noch unter Zeitdruck, schieben
diese die Tests immer weiter auf.
Das Ergebnis ist die berühmt-berüchtigte
Bananensoftware, die beim Anwender
reift – Patches kann man schließlich immer
noch nachschieben. Diese Strategie
rächt sich jedoch in unzufriedenen Benutzern
und hohen Supportkosten. Letzteres
gilt auch für Open-Source-Software
und für Hobbyentwickler: Bis sich der
Programmautor durch die zahlreichen
Fehlermeldungen gefräst hat, ist sein
schöner Feierabend hinüber.
© ESA
Abbildung 1: Eine Ariane-5-Rakete wenige Sekunden
nach dem Start. Beim Jungfernflug ging die Sache
36,6 Sekunden lang gut.
Folglich kommt niemand um Tests herum,
schlauerweise plant man sie schon
während der Entwicklung fest ein und
führt sie nicht erst ganz am Ende durch.
Zu den gesicherten Erkenntnissen gehört,
dass je später ein Fehler im Entwicklungszyklus
auffällt, desto teurer seine Behebung
kommt. In diesem Licht offenbart
das sowieso recht antiquierte Wasserfallmodell
(Abbildung 2), das Tests nur in
den letzten Phasen vorsieht, seinen uneffizienten
Charakter. Das ganze Gegenteil
praktiziert das Test Driven Development
(TDD), ein Gray-Box-Testverfahren, das
vor dem Schreiben des Programmcodes
ansetzt (siehe den eigenen Schwerpunkt-
Artikel zu diesem Thema).
Egal mit welcher Methodik, wichtig ist
es, planvoll vorzugehen. Es nützt nichts,
das Programm zu starten und auf drei
Knöpfe zu klicken. Das bringt nur die
Gewissheit, dass die drei Knöpfe gelegentlich
funktionieren. Hinzu kommt der
psychologische Effekt, dass der Programmierer
einer Software davon ausgeht,
dass sein Code genau das macht, was er
sich erhofft hatte. Ein Zeichen für das Erwartungstäuschung
genannte Phänomen
sind Gedanken wie: „Wieso gibt er denn
jetzt diesen merkwürdigen Wert aus?!“
Weil Blauäugigkeit beim Thema Software-
Testing unangebracht ist, sollten sich
Projekte formale Strategien und Vorgehensweisen
zu Eigen machen. Abbildung
3 zeigt aus einiger Entfernung ein paar
Platzierungsmöglichkeiten für Tests.
Reviews und statische
Codeanalyse
Der Oberbegriff für eine wichtige Disziplin
lautet „Statische Analysen“. Das sind
White-Box-Testverfahren, deren Kennzeichen
es ist, dass sie das Programm nicht
ausführen. Code-Reviews und statische
Codeanalysen zählen dazu. Die einfachste
Variante des Quellcode-Studiums besteht
darin, selbst oder noch besser im
Team den Code mit eigenen Augen zu begutachten
und zu untersuchen. Es geht
da rum, funktionale und formelle Fehler
zu finden. Der Arbeitsablauf ist dreistufig:
Identifizieren, konsolidieren, korrigieren.
Die Bedeutung von Code-Reviews hat in
letzter Zeit in dem Maße wieder zugenommen,
wie die agilen Entwicklungsmethoden
begannen, sich durchzusetzen
(Stichwort: Scrum).
Ein Review kann nicht nur die Befehle
betrachten, sondern auch den Fluss der
(Eingabe-)Daten durch das Programm verfolgen
(siehe auch den Artikel zum Thema
Sicherheit von Webapplikationen).
Bei dieser Datenflussanomalie-Analyse
pickt sich der Tester eine Variable heraus
und untersucht, wann und wie die folgenden
Anweisungen sie erzeugen, verändern
und zerstören. Stellt er etwa fest,
dass der Algorithmus die Variable liest,
bevor sie erzeugt wurde, liegt zwingend
ein Fehler vor – die so genannte UR-Anomalie
(Undefined Referencing).
Initialisierung
Analyse
Entwurf
Wer den Quellcode in den Fingern hält,
kann gleich noch eine Stil analyse durchführen,
also feststellen, ob der Quellcode
entsprechend den Vorgaben formatiert
ist oder unbotmäßige Sprachkonstrukte
verwendet – etwa Gotos. Obendrein lassen
sich ein paar Maße und Statistiken
ermitteln, wie etwa die Anzahl der selbst
geschriebenen Klassen. Alle diese Untersuchungen
lassen sich von Menschen auf
Papier durchführen.
Solche manuellen Inspektionen oder Reviews
sind allerdings recht zeitaufwändig.
Zumindest bei einigen Prüfungen, wie
der Stilanalyse, bei den Metriken oder der
Datenflussanalyse, helfen zum Glück
Werkzeuge. Hier ist auch die Grenze zur
statischen Codeanalyse (formale Verifikation)
erreicht. Ein Artikel im Schwerpunkt
stellt ein paar solcher Anwendungen
vor. Ein wichtiger Spieler in diesem
Markt ist zudem die Firma Coverity [2].
Dynamische Tests
Um festzustellen, ob die selbst geschriebene
Anwendung funktioniert, kommt
man jedoch nicht umhin, sie auch auszuführen
und mit Testdaten zu füttern,
also so genannte dynamische Testtechniken
einzusetzen. Dabei stellt sich die
Frage, welche und wie viele Testdaten
der Entwickler an sein Programm verfüttern
muss, um sicherzugehen, dass es
reibungslos funktioniert.
Die Testdaten sollten so gewählt sein,
dass der Programmablauf jede einzelne
Anweisung zumindest ein Mal ausführt.
Realisierung
Einführung
Nutzung
Abbildung 2: Erweitertes klassisches Wasserfallmodell, das Tests nur in den letzten Phasen vorsieht.
© Maciej Jaros, CC-by-sa
Grundlagen 08/2012
Titelthema
www.linux-magazin.de
23
Titelthema
www.linux-magazin.de Grundlagen 08/2012
24
© Vörby, Wikipedia
Abbildung 3: Ganzheitlicher Ansatz: Testen nach einer weitergehenden Definition umfasst alle Prüfmaßnahmen
in der Softwareentwicklung.
Einen solchen Test bezeichnet man als
Anweisungsüberdeckungstest, kurz C0-
Test. Ein Problem wird erkennbar, wenn
der Entwickler sich den Programmablauf
aufmalt. Dabei zeichnet er jede Anweisung
als Kreis (Knoten) und zieht dann
von einer Anweisung Pfeile zu allen prinzipiell
direkt auf sie nachfolgenden Anweisungen.
Im Ergebnis entsteht ein so
genannter Kontrollflussgraph. Bei einem
C0-Test würde im dem Beispiel
if(i!=10) then a=a+1;
nicht der Fall getestet, in dem »i« gleich
10 ist. Es wäre besser, wenn mindestens
ein Mal alle Zweige des Programms ausgeführt
würden. Aber auch die Bedingung
ist zu lasch: Der Zweigüberdeckungstest
(C1-Test) durchliefe Schleifen nur einmal,
und bei If-Abfragen der Art:
if((A || B) && (C || D)) ...
reicht es aus, wenn die gesamte Bedingung
einmal wahr und einmal falsch ist.
Zumindest der letzte Test nimmt sich der
Bedingungsüberdeckung an. Er verlangt,
je nach Schärfegrad, dass alle einzelnen
Teilentscheidungen der Bedingungen beziehungsweise
alle möglichen Kombinationen
je ein Mal wahr und falsch sind.
Abschließend gibt es noch den Pfadüberdeckungstest,
der restlos alle Programmpfade
durchlaufen muss. Er gilt jedoch
als extrem aufwändig, weil er entsprechend
viele Testdaten benötigt. Alternativ
zu den Anweisungen kann ein dynamischer
Test den Fluss der (Eingabe-)Daten
durch das Programm betrachten. Dazu
schreibt der Entwickler im Kontrollflussgraph
an die Knoten alle Variablen, die
dieser Knoten benutzt oder verändert.
Geht die Variable an einem Knoten in
eine Berechnung ein oder schreibt die
entsprechende Anweisung einen neuen
Wert in die Variable, heißt der Fall C-
Use (von Computational Use). Kommt ihr
Wert in einer Entscheidung zum Einsatz,
etwa in einer If-Abfrage, spricht man von
P-Use (Predicate-Use).
Geeignete Testdaten finden
Um nun konkrete Testdaten zu finden,
bildet man auf den möglichen Eingaben
und Ausgaben Äquivalenzklassen. Das
klingt kompliziert, die meisten Programmierer
machen das bereits intuitiv. Zunächst
stellen sie die Eingabe bereiche des
Programm fest. Beispielsweise könnte es
Werte zwischen 1 und 99 entgegennehmen.
Der Bereich bildet eine so genannte
gültige Äquivalenzklasse.
Als Nächstes umreißt man die Eingaben,
die nicht vorkommen dürfen. Im Beispiel
sind das alle Zahlen kleiner als 1 und alle
Zahlen über 99. Diese beiden Bereiche
bilden die so genannten ungültigen Äquivalenzklassen.
Jetzt wählt der Entwickler
aus jeder der drei Äquivalenzklassen jeweils
einen beliebigen Wert, etwa ‐2, 34
und 145. Dazu sollte er noch die Grenzen
hinzunehmen, hier also 0, 1, 99 und 100.
Damit sind passende Testfälle gefunden.
Für sie gilt es nun (per Hand) die korrekten
Ausgaben zu berechnen.
Das ist erst eine Hälfte der Testdaten: Für
alle möglichen Ausgaben muss der Entwickler
ebenfalls gültige und ungültige
Äquivalenzklassen bilden und die dazu
passenden Eingaben finden. Abschließend
prüft er, ob die gefundenen Testdaten
auch die erwähnten Kriterien abdecken,
also beispielsweise einmal alle Anweisungen
ausführen. Wenn nicht, muss
er weitere Testdaten hinzunehmen.
Das Gegenteil veranstalten Smoketests:
Hier bestimmt der Programmierer die
Testdaten nicht mit systematischen Methoden,
sondern wählt sie bewusst zufällig.
Smoketests kommen meist in frühen
Entwicklungsphasen zum Einsatz. Sie
klären, ob das Programm funktioniert
ohne abzurauchen – daher der Name.
Die Praxis zeigt, dass diesem Stochern im
Nebel witzigerweise oft eine ganz passable
Testabdeckung gelingt.
Überhaupt sind die Ausprägungen, Spielarten
und deren Kategorisierungsmöglichkeiten
beim Software-Testing offenbar
unendlich. Wer sich der Wikipedia-Seite
[3] und den dort verzeichneten Verlinkungen
widmet, verliert schnell den Überblick.
Es gibt objektorientiertes Testen,
zustandsbasiertes, Klassentests, Modulund
Unittests, Regressionstests, Integrationstests,
Datenkonsistenztests, Systemtests,
Akzeptanztests … Letztlich geht es
aber immer darum, Fehler zu finden.
Fehl ohne Tadel
Auch wenn die wenigsten Programmierer
Ada-Code für Trägerraketen entwickeln,
sollten sie sich selbstbewusst ihrer eigenen
Fehlbarkeit stellen – wo Menschen
arbeiten, machen sie auch Fehler. Das ist
kein Beinbruch, solange man die rchtigen
Schlüsse daraus zieht: Mit Köpfchen
und Verantwortung geplante und durchgeführte
Softwaretests machen den Bugs
wirksam den Garaus. Das Sachgebiet ist
viel zu umfangreich, als dass ein Magazin-Schwerpunkt
es komplett zu würdigen
vermag. Die folgenden Artikel setzen
aber Spots auf einige Teildisziplinen, die
manchem Software-Manager der Ariane 5
zur Erleuchtung hätten verhelfen können
– und nicht nur dem. n
Infos
[1] Ken Garlington, „Critique of ‚Put it in the
contract: The lessons of Ariane‘“: [http://
lore. ua. ac. be/ Teaching/ SE3BAC/ ariane. html]
[2] Coverity: [http:// www. coverity. com/ de/]
[3] „Softwaretest“ bei Wikipedia:
[http:// de. wikipedia. org/ wiki/ Softwaretest]
Admin-MAGAZIN
im Jahres-Abo
Jede Ausgabe des Admin-Magazins bietet praktisch anwendbares Wissen
von ausgewiesenen Experten und ausführliche Hintergrundberichte für alle
Systemverwalter von Linux, Unix und Windows. Die Schwerpunkte reichen von
Storage und Backup bis hin zu Netzwerk-Themen und Security.
Ein Sonderteil hilft Admins heterogener Welten.
15 % sparen
Jetzt bestellen unter:
www.admin-magazin.de/abo
sichern Sie Sich Ihr
gratis ADMIN T-Shirt!
• Telefon 07131 / 2707 274 • Fax 07131 / 2707 78 601 • E-Mail: abo@admin-magazin.de
Mit dem Jahres-Abo erhalten Sie 6 Ausgaben des Admin-Magazins zum Vorzugspreis von E 49,90 * statt E 58,80 *
(Lieferung frei Haus).
* Preise gelten für Deutschland. Schweiz: SFr 82,32; Österreich: E 54,90; anderes Europa: E 59,90
Titelthema
www.linux-magazin.de Statische Analyse 08/2012
26
Werkzeuge zur statischen Codeanalyse
Fusselfreier Code
Tools zur statischen Analyse durchkämmen selbst gestrickten Code nach Fusseln und Knötchen. Was Open-
Source-Werkzeuge für C, C++, Java und Python leisten, beschreibt dieser Artikel. Tim Schürmann
Codeanalyse gehört (siehe Grundlagenartikel
in diesem Schwerpunkt).
Welche Fehler sich damit prinzipiell aufdecken
lassen, fasst der Kasten „Fundstücke“
zusammen. Manche Werkzeuge
prüfen allerdings nur auf einen Teil dieses
Katalogs. Einige erlauben es dem Entwickler
immerhin, nachträglich weitere
Prüfregeln hinzuzufügen. Häufig muss
er sich dabei jedoch in eine kryptische
Beschreibungssprache einarbeiten oder
selbst entsprechende Prüfroutinen programmieren.
© Suzanne Tucker, 123RF.com
Beim Testen von Software hilft der Compiler
nur eingeschränkt. Er prangert meist
lediglich Tipp- und Syntaxfehler an. Speicherlecks,
endlos laufende Schleifen oder
Race Conditions dagegen erkennt der Entwickler
erst, wenn das Programm läuft
und mit den zuvor aufwändig erdachten
Testdaten gegen die Wand fährt.
Zumindest einen Teil der aufgezählten
Probleme kann entdecken, wer den
Quellcode genau unter die Lupe nimmt.
Das Paradebeispiel zeigt, wie in C und
C++ aus dem Vergleich
if ( a == b ) ...
ein vergessenes Gleichheitszeichen eine
Zuweisung macht:
if ( a = b ) ...
Gerade bei schwer lesbarem und umfangreichem
Quellcode stößt der Mensch
dabei jedoch an seine Grenzen. Ein falsch
gesetztes Semikolon entdecken ist ähnlich
schwierig, wie eine Nadel im Heuhaufen
zu finden – wenn man denn überhaupt
daran denkt, alle Strichpunkte zu
überprüfen. Zudem kostet eine solche
manuelle Inspektion extrem viel Zeit.
Automatische Assistenten
Glücklicherweise gibt es zahlreiche Werkzeuge,
die eine solche statische Codeanalyse
in Sekundenbruchteilen durchführen.
In der Regel parsen sie zunächst den
Quellcode ähnlich wie der Compiler. Mit
dem dabei aufgebauten Wissen können
sie dann nicht nur den Programmablauf
auf Probleme abklopfen, sondern
auch eine aufwändige Datenflussanalyse
durchführen.
In seltenen Fällen starten sie sogar selbst
generierten Objektcode – auch wenn
das eigentlich nicht mehr zur statischen
Stil und Statistik
Wenn solch ein Tool schon mal den
Quellcode in den Fingern hat, kann es
gleich noch ein paar andere Dinge damit
anstellen. So begutachten manche Werkzeuge
die Formatierung des Quellcodes
und übernehmen damit die Aufgaben
eines Style-Checkers. Andere legen sogar
umfangreiche Statistiken über den
Quellcode an.
Fast jedes Werkzeug bewertet oder klassifiziert
die entdeckten Probleme. Im einfachsten
Fall unterscheidet ein Tool nur
Fehler und Warnungen, differenzierter
sind die ebenfalls beliebten Punktesysteme
oder Noten. Besonders kritische
Stellen erhalten einen höheren Punktwert
als weniger gefährliche.
Da Werkzeuge zur statischen Codeanalyse
direkt den Quellcode inspizieren,
müssen sie die Eigenheiten der jeweiligen
Programmiersprache und deren typische
Problemzonen kennen. Während
Online PLUS
Informationen zur statischen Codeanalyse
für PHP finden Sie unter [http://
www. linux‐magazin. de/ plus/ 2012/08].
Abbildung 1: Das Werkzeug Splint entdeckt in Listing 1 viele zumindest problematische Codeteile. GCC in der
Standardeinstellung dagegen übersetzt den Code ohne Beanstandung.
der Program mierer etwa in C und C++
manuell den Speicher verwalten muss,
greift ihm in Java die Garbage Collection
unter die Arme. Meist beschränken sich
Werkzeuge daher auf eine einzige Programmiersprache.
Schlüpfrige Typen
Bei dynamisch typisierten (Skript-)Sprachen
wie Python gestaltet sich die statische
Codeanalyse etwas schwieriger.
Dort steht der Typ einer Variablen erst
zu Laufzeit fest und darf sich je nach
Programmiersprache sogar während der
Ausführung ändern. In der Folge warnen
die Werkzeuge zwangsweise häufiger vor
Stellen, die eigentlich korrekt sind – sie
erzeugen so genannte False Positives. Übrigens
sind auch statisch typisierte Programmiersprachen
nicht vor Fehlalarmen
gefeit. Bessere Werkzeuge erlauben deshalb,
bestimmte Tests oder Codepassagen
von der Prüfung auszunehmen.
Fundstücke
Einige typische problematische Konstrukte, die
eine statische Codeanalyse aufdecken kann:
n Nicht initialisierte oder deklarierte Variablen
n Nie verwendete Variablen, Funktionen und
Klassen
n Variablen, die zwischen zwei Zuweisungen
nicht verwendet werden
n Zeiger ins Nichts, Zugriff auf nicht existierende
Objekte
n Überschrittene Array- oder Listengrenzen
n Probleme bei der Speicherverwaltung
einschließlich Speicherlecks und Buffer
Overflows
n Code, der niemals erreicht werden kann
n Überflüssige If-Abfragen
n Endlos laufende Schleifen
Werkzeuge zur statischen Codeanalyse
haben durchweg die Form von Kommandozeilen-Programmen,
die der Programmierer
auf den Quellcode ansetzt und
dann umgehend die Verbesserungsvorschläge
und Warnungen erhält. Für einige
gibt es auch eine grafische Benutzeroberfläche.
Deren Entwickler behandeln sie
jedoch meist recht stiefmütterlich, viele
GUIs nutzen zudem das eigentlich nicht
mehr ganz zeitgemäße Tk-Toolkit. Nützlicher
sind da schon Plugins für bekannte
IDEs wie Eclipse: Im Idealfall sieht der
Coder dann schon beim Tippen, wo ein
Programm klemmt.
Flusensiebe
Eines der ersten Werkzeuge zur statischen
Codeanalyse war Lint [1]. Es entstand
bereits Ende der 70er Jahre und
kümmerte sich ausschließlich um C-
Programme. Sein Name leitet sich vom
englischen Wort für Fusseln ab. Es fängt
n Ergebnisse einer Funktion oder Methode
werden nicht verwendet
n Probleme beim Überladen von Methoden
und Funktionen
n Fehlende oder falsch verwendete Konstruktoren
oder Destruktoren
n Doppelte Codepassagen (unbedarftes
Copy & Paste)
n Probleme in den Vererbungsbeziehungen
(zum Beispiel Zyklen)
n Inkorrekte Implementierung von Schnittstellen
n Inkorrektes Werfen und Fangen von Exceptions
n Falsche Anzahl von Parametern und Parametertypen,
insbesondere bei schwach
typisierten Sprachen wie Python
gewissermaßen lose Partikel aus einem
Programm wie ein Flusensieb im Wäschetrockner.
Lint war so bekannt, dass
auch ähnlich arbeitende Werkzeuge für
andere Sprachen diesen Namen erhielten.
So findet man etwa im Paketmanager von
Ubuntu 12.04 ein Lint für Java (namens
Jlint), Python (Pylint) und sogar Haskell
(Hlint). Diese Werkzeuge sind jedoch weder
verschwägert noch verwandt mit dem
ursprünglichen Lint.
E C und C++
Eine moderne Fassung für C-Programme
heißt Splint. Listing 1 zeigt ein mit zahlreichen
trivialen Fehlern behaftetes,
leicht verständliches C-Programm. Wie
Abbildung 1 beweist, entdeckt Splint
darin stolze elf Probleme. Der Compiler
dagegen übersetzt in Standardeinstellung
denselben Code, ohne zu murren. Lässt
man »gcc« wie in Abbildung 2 jedoch
etwas penibler zu Werke gehen, bemerkt
auch dieser sechs Probleme.
Wie das Beispiel zeigt, führen heute fast
alle Compiler selbst eine statische Code-
Listing 1: Fehlerhaftes »test.c«
01 #include
02
03 printtext(text)
04 {
05 printf("%d", text); /* Rückgabewert von
printf nicht genutzt */
06 }
07
08 int main ()
09 {
10 int a;
11 char* c;
12
13 /* Nutzung von a ohne vorherige Zuweisung: */
14 while (a != 0); /* Falsches Semikolon,
dadurch Endlosschleife */
15 {
16 a=a‐1;
17 }
18
19 if(a=1) /* Zuweisung statt Vergleich */
20 {
21 /* Zeiger ins Nichts übergeben */
22 /* falsche Parameteranzahl */
23 printtext(c, 2);
24 }
25
26 /* Kein Rückgabewert für main() */
27 }
Statische Analyse 08/2012
Titelthema
www.linux-magazin.de
27
Titelthema
www.linux-magazin.de Statische Analyse 08/2012
28
Abbildung 2: Die Arbeitsteilung ist nicht so streng: Auch Compiler, wie hier der GCC, führen eine mehr oder
weniger umfangreiche statische Analyse durch.
analyse durch. Meist kommen sie jedoch
nicht an die speziellen Prüfwerkzeuge
heran. Beim GCC-Compiler sind die Fehlermeldungen
zudem teilweise verklausuliert
oder nichtssagend.
Ganz anders sein Konkurrent Clang: Das
C- und C++-Frontend für den modernen
Compiler-Unterbau LLVM enthält bereits
einen äußerst mächtigen statischen Code-
Analysierer namens »scan‐build« (Abbildung
3). Der nimmt aber nur C- und
Objective-C-Code unter die Lupe und
legt den Fokus zudem auf die Mac-OS-X-
Entwicklung. Doch kann es sich lohnen,
einen Blick auf die verfügbaren Compiler
und Interpreter zu werfen.
Neben Splint existieren zahlreiche weitere
statische Code-Analysierer für
C und C++, die sich ebenfalls in den
Repositories der Distributionen finden.
Dabei stößt man erstaunlich oft auf ziemlich
betagte Tools. Beispielsweise erschien
die aktuelle Splint-Version bereits am 12.
Juli 2007, die letzten Änderungen in der
Entwicklerversion fanden 2009 statt. Die
Dokumentation ist sogar auf das Jahr
2003 datiert.
Der Konkurrent Flawfinder wirbt zwar
mit C++-Unterstützung, weist aber ein
ähnlich hohes Alter wie Splint auf und
kennt daher noch nicht den neuen C++11-
Standard. Dafür stammt die aktuelle Version
von Frama-C aus dem Oktober 2011,
doch wie sein Name schon andeutet,
analysiert das Werkzeug ausschließlich
C-Programme, lässt sich aber über Plugins
um weitere Funktionen ergänzen, Anwender
können zudem kostenpflichtigen
Support erwerben.
Ein echter Lichtblick ist das derzeit äußerst
populäre Cppcheck, das angeblich
schon Fehler in Linux-Kernel und Mplayer
aufgedeckt hat. Das Werkzeug kennt bereits
C++11, nimmt sich der STL an und
prüft sogar, ob der Quellcode vielleicht
auf 64-Bit-Systemen Probleme bereitet.
Seine Meldungen kann Cppcheck nicht
nur auf die Konsole schreiben, sondern
sie auch in anderen Formaten ausgeben,
etwa in XML (Abbildung 4). Das ist besonders
nützlich, wenn der Entwickler
die Meldungen in anderen Programmen
weiterverarbeiten möchte.
Cppcheck lässt sich online ausprobieren
[2]: Einfach den Quellcode in das Webformular
eintippen und checken lassen.
Die Entwickler haben sich das ehrgeizige
Ziel gesetzt, alle ein bis zwei Monate
eine neue Version herauszubringen. In
den IDEs Code::Blocks und Code Lite ist
Cppcheck bereits enthalten. Plugins für
Eclipse, Hudson, Jenkins und sogar Gedit
stehen auf der Homepage bereit.
Apropos Eclipse: Zu CDT, der Erweiterung
für die C-Entwicklung, gehört ab
Version 7.0 eine statische Codeanalyse
namens Codan. Sie bekrittelt, wie in Abbildung
5 gezeigt, potenzielle Fehler bereits
bei der Eingabe. Darüber hinaus darf
der Anwender in den Einstellungen ganz
bequem selbst entscheiden, ob ein Prüfkriterium
nur eine Warnung oder gleich
einen schwerwiegenden Fehler auslöst.
Außerdem kann Codan einen einheitlichen
Codestil sicherstellen. Tabelle 1
fasst eine kleine Auswahl freier Werkzeuge
für C und C++ zusammen.
E Java
Wer in Java programmiert, deckt mit einem
guten Compiler schon eine ganze
Reihe typischer Fehler auf. Beispielsweise
bemängelt die Variante aus dem
Open JDK fehlende Rückgabewerte und
nicht initialisierte Variablen. Dennoch
bleiben genügend Baustellen aus dem
Kasten „Fundstücke“ übrig, etwa endlos
laufende Schleifen und unerreichbare
Zweige. Bekannte kostenfreie Werkzeuge
für Java stellt Tabelle 2 vor.
Besonders beliebt ist das Tool PMD, bei
dem die Entwickler übrigens offen lassen,
was die Abkürzung bedeuten soll.
Es prangert auch umständlich aufgebaute
Codeteile an, etwa komplexe Schleifen,
die sich in schnellere »while«-Blöcke
umwandeln ließen. Alle Tests unterteilt
PMD thematisch in so genannte Regelsätze
(Rulesets).
Tabelle 1: Werkzeuge für C und C++ (Auswahl)
Name Versionsnummer Homepage Lizenz Typ Sprachen Prüfungen erweiterbar
Codan CDT 8.1 (April 2012) [http:// wiki. eclipse. org/ EPL 1.0 Plugin für Eclipse C, C++ ja
CDT/ designs/ StaticAnalysis]
Cppcheck 1.54 (vom 25.4.2012) [http:// cppcheck.
GPLv3 Kommandozeile, GUI C, C++ nein
sourceforge. net]
Flawfinder 1.27 (vom 17.1.2007) [http:// www. dwheeler. com/ GPLv2 Kommandozeile C, C++ nein
flawfinder/]
Frama-C 20111001 (vom [http:// frama‐c. com] LGPLv2 Kommandozeile, GUI C ja
01.10.2011)
Scan-build 3.1 (vom 22.5.2012) [http:// clang‐analyzer. LLVM Kommandozeilen, C, Objective-C nein
llvm. org]
Release
License
Teil von Clang
Splint 3.1.2 (vom 12.7.2007) [http:// www. splint. org] GPLv2 Kommandozeile C nein
Statische Analyse 08/2012
Titelthema
Abbildung 3: Das Tool »scan‐build« von LLVM zeigt sogar auf kritische Anweisungen
und nennt nicht nur die Zeilennummer.
Beim Aufruf muss der Benutzer eine
Liste mit den anzuwendenden Regelsätzen
angeben. Dummerweise gibt es
standardmäßig keinen Regelsatz, der alle
Prüfungen einschließt. Damit erhält der
Anwender entweder an der Kommandozeile
einen ziemlichen Bandwurmbefehl
oder muss erst umständlich einen
eigenen Regelsatz erstellen. Andererseits
kennt PMD auch Tests, die auf Eigenheiten
des Android-SDK oder J2EE eingehen.
Gefundene Fehler gibt das Werkzeug
nicht nur als reinen Text aus, sondern
auch in anderen Formaten, etwa in XML
oder HTML.
Checkstyle überwacht eigentlich die Einhaltung
von Stilvorgaben. So meckert es,
wenn Javadoc-Kommentare fehlen oder
Namen von den Schreibkonventionen abweichen
[3]. Seit Version 3 finden aber
auch immer mehr andere Prüfungen
Eingang in das Werkzeug. So prangert
es mittlerweile duplizierte Codeteile an,
prüft die Sichtbarkeit von Klassenmethoden
und spürt leere Anweisungsblöcke
auf. Ähnlich wie PMD startet Checkstyle
nur, wenn der Anwender ihm eine Konfigurationsdatei
mit den durchzuführenden
Prüfungen an die Hand gibt.
Die Software Hammurapi rühmt sich
damit, für besonders große Projekte geeignet
zu sein. Das Werkzeug lässt sich
entweder als Ant-Task oder über ein
mitgeliefertes Eclipse-Plugin verwenden.
Letztgenanntes dürfen nur nichtkommerzielle
Projekte kostenlos nutzen.
Außerdem wollte es in den Tests der
Redaktion nicht mehr mit der aktuellen
Eclipse-Version zusammenarbeiten. Generell
verlangt Hammurapi eine im Hintergrund
laufende HSQLDB-Datenbank
sowie Apache Tomcat.
Bytecode
Zu den zahlreichen Werkzeugen für Java,
die anstelle des Quellcodes den Bytecode
inspizieren, zählt unter anderem Jlint.
Es führt eine Datenflussanalyse durch
und deckt auch Synchronisationsprobleme
auf. Witzigerweise analysiert es
zwar Java-Code, ist aber selbst in C++ geschrieben.
Dem Jlint-Paket liegt noch das
Werkzeug Anti C bei, das einfache Fehler
und Probleme in C- und C++-Quellcode
entdeckt.
Ebenfalls nur Bytecode betrachtet Findbugs.
Es startet von Haus aus mit einer
schicken Benutzeroberfläche. Die
verlangt, dass der Anwender zunächst
ein Projekt anlegt, dem er dann alle
Bytecode-Dateien hinzufügt. Das macht
Abbildung 4: Cppcheck nennt immer nur den ersten Fehler im Programm, gibt
diesen auf Wunsch aber auch im XML-Format aus.
das Testen in komplexen Projekten zwar
bequem, ist aber umständlich, wenn man
nur eine einzelne Datei prüfen möchte.
Glücklicherweise arbeitet Findbug auch
auf der Kommandozeile.
Für fast alle in Tabelle 2 genannten Java-
Werkzeuge existieren passende Plugins
für Eclipse, häufig sind auch noch Pendants
für weitere Entwicklungsumgebungen
wie Intelli J und Netbeans zu
haben. Hier muss man allerdings etwas
auf die Versionsnummern achten, insbesondere
wenn die Plugins nicht von
den Werkzeugentwicklern selbst stammen.
Beispielsweise waren die Plugins
für Checkstyle zum Redaktionsschluss
weitgehend veraltet.
E Python
Unter Python-Programmierern sind drei
Werkzeuge besonders beliebt (Tabelle
3). Sie liegen auch den meisten großen
Linux-Distributionen bei. Neben den üblichen
Fehlern aus dem Kasten „Fundstücke“
weisen sie auch auf Python-typische
Probleme hin, etwa wenn wegen
falscher Einrückungen eine Funktion
scheinbar doppelt definiert ist.
Pychecker lässt sich sogar direkt in eigene
Python-Programme einbinden. Dann
www.linux-magazin.de
29
Tabelle 2: Werkzeuge für Java (Auswahl)
Name Versionsnummer Homepage Lizenz Typ Sprachen Prüfungen erweiterbar
Checkstyle 5.5 (vom [http:// LGPLv2.1 Kommandozeile Java ja
5.11.2011) checkstyle.
sourceforge. net]
Findbugs 2.0.1-rc2 (vom
11.5.2012)
[http:// findbugs.
sourceforge. net]
LGPL
Kommandozeile,
GUI
Java
nein
Hammurapi 5.7.0 [http:// www.
hammurapi. biz]
Jlint
PMD
3.1.2 (vom
11.1.2011)
5.0.0 (vom
1.5.2012)
[http:// jlint.
sourceforge. net]
[http:// pmd.
sourceforge. net]
Apache-Lizenz 2.0,
LGPL, Hammurapi Group
Community License
Eclipse-Plugin,
Ant-Task
Java
GPLv2 Kommandozeile Java (Anti C: C, nein
C++, Objective-C)
eigene (BSD-ähnlich) Kommandozeile Java ja
ja
Titelthema
www.linux-magazin.de Statische Analyse 08/2012
30
Abbildung 5: Praktisch: Plugins für integrierte Entwicklungsumgebunden, hier Codan in Eclipse, warnen
schon bei der Eingabe von Quellcode vor Problemen.
len, die eigentlich korrekt ablaufen (False
Positives). Erschwerend kommt hinzu,
dass die Entwickler fast nie verraten,
welche Code-Anomalien ihre Werkzeuge
prüfen und wann sie diese bemängeln.
Häufig findet man auf der Projekt-Homepage
nur eine Liste mit den wichtigsten
Problemen, die das Programm abklopft.
Ausführliche Erläuterungen wie bei Splint
und Jlint sind selten.
Ebenfalls häufig im Unklaren bleibt, welche
Sprachversion das Werkzeug unterstützt
– dabei gibt es etwa zwischen C++
in der Fassung von 1998 und dem brandneuen
C++11 gravierende Unterschiede.
Es bietet sich folglich an, den Quellcode
von mehreren Werkzeugen analysieren
zu lassen. Was übrigens passieren kann,
wenn man eines der Werkzeuge auf einen
Konkurrenten ansetzt, zeigt ein amüsanter
Blogeintrag unter [5]. (mhu) n
prüft es automatisch alle Module, die
nach der entsprechenden »import«-Zeile
folgen. Doch übersetzt Py checker das zu
untersuchende Programm in Bytecode
und führt diesen sogar aus. Das ist eher
unerwünscht, weil das Programm dann
schon bei der vorbeugenden Analyse
abläuft und dabei vielleicht Nutzdaten
ändert. Daneben gibt es eine GUI-Version
des Programms (Abbildung 6)
Hier gibt’s Noten
Als Alternative bietet sich das bereits erwähnte
Pylint an. Neben den üblichen
Tests prüft es auch, ob der Quellcode dem
PEP8-Styleguide folgt [4]. Darüber hinaus
generiert Pylint zahlreiche Statistiken
und vergibt sogar eine Gesamtnote für
die Codequalität. Interessant ist das mitgelieferte
Werkzeug »pyreverse«, das aus
dem Quellcode ein UML-Diagramm im
Dot-Format von Graphviz erstellt. Pylint
importiert die zu analysierenden Dateien,
was unter Umständen einige ungewollte
Nebenwirkungen auslöst. Der Konkurrent
Pyflakes liest hingegen die Datei nur
ein, bietet dafür aber keine Stilprüfung.
Eines reicht selten
Werkzeuge zur statischen Codeanalyse
sorgen nicht automatisch für fehlerfreien
Code. Sie zeigen lediglich potenzielle
Gefahrenquellen beziehungsweise Anomalien
auf. Die Hinweise müssen zudem
nicht immer stimmen: Gerade bei komplexem
Code melden die Werkzeuge Stel-
Infos
[1] Wikipedia-Eintrag zu Lint:
[http:// de. wikipedia. org/ wiki/
Lint_%28Programmierwerkzeug%29]
[2] Online-Angebot von Cppcheck:
[http:// cppcheck. sourceforge. net/ demo/]
[3] Wikipedia-Eintrag zu Javadoc:
[http:// de. wikipedia. org/ wiki/ Javadoc]
[4] PEP8-Styleguide: [http:// www. python. org/
dev/ peps/ pep‐0008/]
[5] Luke Plant, „Pychecker vs Pylint vs
Django“: [http:// lukeplant. me. uk/ blog/
posts/ pychecker‐vs‐pylint‐vs‐django/]
Abbildung 6: Pychecker bringt eine kleinteilige grafische Oberfläche mit, die auf Python-Tk basiert und noch
deutlich in den Kinderschuhen steckt.
Tabelle 3: Werkzeuge für Python (Auswahl)
Name Versionsnummer Homepage Lizenz Typ Sprachen Prüfungen erweiterbar
Pychecker 0.8.19 (vom [http:// pychecker. eigene (BSD-ähnlich) Kommandozeile, GUI Python nein
8.1.2011)
sourceforge. net]
Pyflakes 0.5.0 (vom [https:// launchpad. MIT-Lizenz Kommandozeile Python nein
6.9.2011) net/ pyflakes]
Pylint 0.25.1 (vom
8.12.2011)
[http:// pypi. python.
org/ pypi/ pylint]
GPLv2 Kommandozeile, GUI Python ja
www.kamp.de
In der IT setzt man besser
auf einen starken Partner!
IT-Lösungen – stark und individuell. Mehr unter www.kamp.de
Titelthema
www.linux-magazin.de TDD 08/2012
32
Testgetriebene Software-Entwicklung
Präziser Antrieb
Das Credo des Test Driven Development (TDD): Wer zuerst Tests schreibt und dann erst programmiert, erzeugt
sauberen Code und geprüfte Programme. Wie das in Java und weiteren Sprachen geht, zeigt dieser Artikel, der
auch die Vor- und Nachteile der Methode abwägt. Gunnar Wrobel
© koi88, 123RF
diskutiert dieser Artikel gegen Ende noch
einmal ausführlich. Zunächst soll ein
praktisches Beispiel die Vorgehensweise
anschaulich machen.
Das Beispiel verwendet so genannte
Unit-Tests. Dabei handelt es sich um sehr
kleinteilige Tests, die nah am Code nur
Bruchstücke oder Einheiten (Units) des
Programms testen. Der Begriff testgetriebene
Entwicklung bezieht sich so gut wie
immer auf Units.
Werkzeuge für Unit-Testing existieren für
praktisch jede Programmiersprache. Das
folgende Beispiel könnte sich also jeder
beliebigen Sprache bedienen. Da Java
jedoch sehr verbreitet ist und für viele
Entwickler gut lesbar, demonstrieren die
folgenden Zeilen testgetriebene Entwicklung
in dieser Sprache.
Programmieren macht Spaß. Der Entwickler
schreibt ein paar Zeilen Code,
und schon erscheint eine Grafik auf dem
Bildschirm oder ein Roboter bewegt seinen
Arm. Besonders im Bereich freier
Software ist das die Herangehensweise
fast jedes Programmier-Einsteigers.
Rot und Grün
Die Verfechter testgetriebener Programmierung
predigen jedoch seit Jahren, dass
so Software entsteht, die keine hohe Qualität
aufweist. Die neue Lehre propagiert
das Mantra „red, green, refactor“ [1]. Diesem
folgend schreibt der Programmierer
erst einen Test. Der schlägt natürlich fehl
– und weist damit gemäß Konvention den
Status Rot auf. Im zweiten Schritt fügt
der Entwickler den eigentlichen Code
hinzu. Erfüllt dieser den vorher erstellten
Test, wechselt der Status auf Grün. Dabei
muss der Code zum Erfüllen der Testbedingung
nicht zwingend bereits sauber
geschrieben sein. Der letzte Schritt besteht
aus Geradeziehen der Codestruktur,
Umstrukturieren und Refactoring.
Er muss allerdings unter Beachtung der
geschriebenen Tests erfolgen: Der Status
darf durch Refactoring nicht von Grün
auf Rot wechseln.
Das angestrebte Ziel dieses Verfahrens:
sauberer Code mit hoher Qualität. Der
Entwickler hat nicht mehr einfach nur
Ideen oder Ziele vor Augen, die er sofort
in Code umsetzt. Stattdessen treibt
ein mit Hilfe der Tests definiertes Korsett
den eigentliche Code. Entsprechend heißt
diese Vorgehensweise testgetriebene Entwicklung.
Die Überlegungen hinter diesem Verfahren,
die Vorteile und auch die Nachteile,
Schritt für Schritt
Die Programmieraufgabe besteht darin,
mit dem Avatar-Service Gravatar zu kommunizieren
und einer E-Mail-Adresse ein
Avatar-Bild zuzuordnen. Das Verfahren
ist unter [2] beschrieben. Ein sehr ähnliches
Beispiel hat der Autor bereits in
einem früheren Linux-Magazin in der
Sprache PHP umgesetzt [3]. Unter Java
ist Junit [4] die Referenz in Sachen Unit-
Testing. Wer die folgenden Schritte selbst
durchführen möchte, installiert also das
Paket in der Linux-Distribution seiner
Wahl. Unter Ubuntu liefert das Paket »junit4«
das Testwerkzeug.
Der Entwickler sollte an dieser Stelle erst
einmal das grundlegende Setup prüfen.
Zu diesem Zweck schreibt er einen ersten
Test in die Datei »GravatarTest.java«
(Listing 1). Stimmt alles, kompiliert der
Java-Compiler den Testfall, der sich anschließend
fehlerfrei ausführen lässt. Der
Abbildung 1: Der erste Test ist erfolgreich, bestätigt aber lediglich die
korrekte Installation von Junit.
folgende Befehl kompiliert den Test in der
Java-Quelldatei zu Bytecode:
javac ‐cp /usr/share/java/junit4.jar:.U
GravatarTest.java
Danach sollte sich eine Datei »Gravatar-
Test.class« im Verzeichnis befinden. Der
nächste Befehl startet Junits »TestRunner«
(»org.junit.runner.JUnitCore«) mit
»GravatarTest« als Testfall:
java ‐cp /usr/share/java/junit4.jar:.U
org.junit.runner.JUnitCore GravatarTest
Der einzige definierte Test (»public void
testTrue«) prüft mit »assertTrue(true)«
nur, ob »true« auch wirklich wahr ist.
Läuft der Test wie in Abbildung 1 ab,
funktioniert die Junit-Installation wie erwartet.
In beiden Befehlszeilen legt die Option
»‐cp« die Pfade fest, in denen Java-Klassen
zu finden sind. Dieser Klassenpfad
nimmt an, dass das Jar-Archiv für Junit
unter »/usr/share/java/junit4.jar« installiert
ist. Jeder Ort, an dem benötigte
Bibliotheken liegen, muss hinter »‐cp«
angegeben sein, auch das aktuelle Verzeichnis,
kurz ».«.
Listing 2 erweitert die
einzelne Prüfung zu
einer Testsuite, die
mehrere Tests aufnimmt.
In der Praxis
würde der Programmierer
langsamer vorgehen
und nur einen
oder zwei Tests hinzufügen,
dann den passenden
Code schreiben,
weitere Tests hinzufügen und so
weiter. Bei Skriptsprachen ließe sich eine
solche Testsuite schon ausführen.
Java ist etwas anspruchsvoller: Ohne eine
Klasse »Gravatar« weigert sich der Compiler,
die Suite in Bytecode zu konvertieren.
Schließlich verwendet die Testsuite diese
Klasse und ruft die Funktionen »getId()«
sowie »getAvatarUrl()« auf. So muss der
Entwickler die Klasse in der Datei »Gravatar.java«
zumindest mit ein bisschen
Code ausstatten (Listing 3).
Alles auf Rot
Der folgende Befehl auf der Kommandozeile
sollte nun sowohl Code als auch
Testsuite fehlerfrei kompilieren:
javac ‐cp /usr/share/java/junit4.jar:.U
Gravatar.java GravatarTest.java
Das folgende Kommando führt die Tests
der Suite aus:
java ‐cp /usr/share/java/junit4.jar:.U
org.junit.runner.JUnitCore GravatarTest
Das endet aber im Desaster: Alle fünf
Tests schlagen wegen der unvollständigen
Implementierung der »Gravatar«-
Klasse fehl (Abbildung 2).
Es ist an der Zeit, den eigentlichen Code
zu schreiben, und zwar getrieben durch
die Tests. Den ersten Test, nämlich ob die
E-Mail-Adresse »test@example.org« den
Hash »0c17bf66e649070167701d2d3cd71
711« ergibt, erfüllt der Entwickler auf
ganz naive Art und Weise:
public String getId(String mail) {
return "0c17bf66e649070167701d2d3cd71711";
}
Dabei geht es wirklich nur darum, dass
der Code den Test erfüllt. Solange der
Entwickler keinen zweiten Test definiert
hat, der eine komplexere Lösung erzwingt,
spricht nichts dagegen, zunächst
die einfachste Form der Implementierung
zu wählen.
Das ist einer der zentralen Aspekte testgetriebener
Entwicklung: Die Software
sollte nur so komplex wie nötig sein.
Verzichtet der Entwickler auf die testgetriebene
Entwicklung, ist dies selten der
Fall. Spontane Ideen beim Coden führen
schnell zu zusätzlichen Features, neuen
Abstraktionsebenen oder unnötiger Modularität.
Daraus ergibt sich fast zwangsläufig
unnötige Komplexität, die sich in
Listing 1: Der erste Test
01 import junit.framework.TestCase;
02
03 public class GravatarTest extends TestCase {
04 public void testTrue() {
05 assertTrue(true);
06 }
07 }
TDD 08/2012
Titelthema
www.linux-magazin.de
33
Listing 2: Testsuite
01 import junit.framework.TestCase;
02
03 public class GravatarTest extends TestCase {
04
05 public void testAddressesOne()
06 {
07 Gravatar g = new Gravatar();
08 assertEquals("0c17bf66e649070167701d2
d3cd71711", g.getId("test@example.org"));
09 }
10
11 public void testAddressesTwo()
12 {
13 Gravatar g = new Gravatar();
14 assertEquals("ae46d8cbbb834a85db7287f
8342d0c42", g.getId("x@example.org"));
15 }
16
17 public void testIgnoreCase()
18 {
19 Gravatar g = new Gravatar();
20 assertEquals(
21 "55502f40dc8b7c769880b10874abc9d0",
22 g.getId("Test@EXAMPLE.com")
23 );
24 }
25
26 public void testTrimming()
27 {
28 Gravatar g = new Gravatar();
29 assertEquals(
30 "55502f40dc8b7c769880b10874abc9d0",
31 g.getId(" Test@Example.com ")
32 );
33 }
34
35 public void testAvatarUrl()
36 {
37 Gravatar g = new Gravatar();
38 assertEquals(
39 "http://www.gravatar.com/avatar/
0c17bf66e649070167701d2d3cd71711",
40 g.getAvatarUrl(" Test@
Example.orG ")
41 );
42 }
43 }
Titelthema
www.linux-magazin.de TDD 08/2012
34
der weiteren Entwicklung der Software
als hinderlich erweisen kann.
Für den zweiten Test der Testsuite in
Listing 2 reicht der naive Ansatz schon
nicht mehr aus. Um den Rückgabewert
einer zweiten E-Mail-Adresse zu ermitteln,
muss der Entwickler tatsächlich die
MD5-Prüfsumme berechnen. Die Bibliothek
»org.apache.commons.codec.digest.
DigestUtils« bietet sich an, um das unter
Java zu erledigen. Unter Ubuntu Linux
findet sie sich im Paket »libcommonscodec‐java«.
Listing 4 erfüllt als Inhalt der Datei »Gravatar.java«
die beiden ersten Tests. Der
Entwickler kompiliert erneut, diesmal
01 public class Gravatar {
02 public String getId(String mail) {
03 return "";
04 }
05
06 public String getAvatarUrl(String mail) {
07 return "";
08 }
09 }
Listing 3: »Gravatar.java«
01 import org.apache.commons.codec.digest.DigestUtils;
02
03 public class Gravatar {
04 public String getId(String mail) {
05 return DigestUtils.md5Hex(mail);
06 }
07
08 public String getAvatarUrl(String mail) {
09 return "";
10 }
11 }
Listing 4: Weitere Methoden
01 import org.apache.commons.codec.digest.DigestUtils;
02
03 public class Gravatar {
Listing 5: Die fertige Klasse
04 private final static String URL = "http://www.
gravatar.com/avatar/";
05
06 public String getId(String mail) {
07 return DigestUtils.md5Hex(mail.toLowerCase().
trim());
08 }
09
10 public String getAvatarUrl(String mail) {
11 return URL + getId(mail);
12 }
13 }
mit erweitertem Klassenpfad, damit die
neue Bibliothek verfügbar ist:
javac ‐cp /usr/share/java/junit4.jar:U
/usr/share/java/commons‐codec.jar:.U
Gravatar.java GravatarTest.java
Anschließend lässt er die Tests laufen:
java ‐cp /usr/share/java/junit4.jar:U
/usr/share/java/commons‐codec.jar:.U
org.junit.runner.JUnitCore GravatarTest
Das ergibt aber immer noch drei gescheiterte
Prüfungen.
Der dritte Test fordert, dass die Software
den Hash unabhängig von Groß- und
Kleinschreibung der E-Mail-Adresse bildet.
Das ist mit »toLowerCase()« rasch
implementiert, wie die Zeilen 6 bis 8 in
Listing 5 zeigen. Wie vom vierten Test
gefordert, ignoriert der Code mit »trim()«
zudem Leerzeichen vor oder nach der E-
Mail-Adresse. Der fünfte Test schließt das
Beispiel ab und fordert eine Methode, die
dem Aufrufenden die komplette Avatar-
URL für eine E-Mail-Adresse zurückgibt
(Zeilen 10 bis 12).
Sind alle Verbesserungen schließlich wie
in Listing 5 eingearbeitet, wechselt der
Status der Testsuite von Rot auf Grün:
Alle Tests laufen durch (Abbildung 3).
Andere Sprachen, andere
Sitten
Java mag das Standardbeispiel sein, doch
Unit-Test-Werkzeuge gibt es für praktisch
jede Programmiersprache. Das Tool Junit
[4] ist nicht Teil von Java, sondern ein
separates Programm. Wer es nicht mag
oder sich nicht nur auf Unit-Tests beschränken
möchte, findet für Java auch
alternative Ansätze. Eine sehr gute, Sprachen-unabhängige
Referenz zu Unit-Tests
liefert die Wikipedia-Seite [5].
Bei C ist die Situation nicht ganz so einfach.
Hier existiert eine ganze Reihe alternativer
Werkzeuge mit
unterschiedlicher Ausrichtung,
da die Sprache
C in sehr verschiedenen
Szenarien zum
Einsatz kommt. Das
Werkzeug Check (Abbildung
4) bietet sich
für viele Standardsituationen
an [6].
Ähnliche Vielfalt bietet
auch C++. Cppunit [7] ist hier ein
häufig verwendetes Werkzeug. Eine gute
Alternative stellt die Testbibliothek von
Boost [8] dar. Da die Standardbibliothek
von C++ immer mehr Boost-Bestandteile
aufnimmt, könnte sich auch die entsprechende
Testbibliothek zum Standard entwickeln.
Unter PHP ist die Software PHP Unit [9]
der Standard in Sachen Unit-Testing. Gelegentlich
verwenden Projekte auch Simple
Test [10]. Die restlichen Alternativen
im PHP-Land rangieren derzeit jedoch
unter ferner liefen.
Ruby, Python, Javascript
Ruby liefert das Unit-Testing schon als
Element der Sprache in der Bibliothek
Test::Unit [11] mit. Auch bei Ruby gibt
es externe Alternativen, doch die Standardausstattung
ist der unangefochtene
Platzhirsch. Außerdem ist Test::Unit sehr
gut erlern- und bedienbar.
Ähnlich sieht es bei Python aus: Hier
kommt die Bibliothek Unittest [12] gleich
mit der Programmiersprache mit und darüber
hinaus sogar noch Doctest [13].
Während Unittest eher die standardmäßigen
Unit-Tests bedient, bietet Doctest die
interessante Möglichkeit, solche Tests in
die Dokumentation einzelner Methoden
zu schreiben.
Bei Javascript ist die Situation weniger
übersichtlich. Hier sind allerdings auch
die Einsatzgebiete sehr heterogen. Wer
gerne überprüfen möchte, ob eine Bibliothek
sauber in allen Browsern läuft,
braucht naheliegenderweise ein Testwerkzeug,
das diese mit in die Tests
einbeziehen kann, beispielsweise Js-testdriver
[14]. Gerade weil es verschiedene
Engines gibt, die Javascript verarbeiten,
erweist sich in diesem Bereich das Unit-
Testing als besonders hilfreich. Wer dagegen
Server-seitigen Javascript-Code für
Abbildung 2: Der Programmierer hat noch viel zu tun. Alle fünf Tests der
Suite schlagen zunächst fehl.
TDD 08/2012
Titelthema
Abbildung 3: Alle Tests sind bestanden: Der Entwickler hat die Java-Klasse für
den Gravatar-Client testgetrieben fertiggestellt.
Abbildung 4: Unit-Test-Werkzeuge gibt es für fast alle Sprachen. Das Tool Check
erledigt Unit-Tests für C-Programme.
www.linux-magazin.de
35
Node.js testen möchte, greift passenderweise
zu Nodeunit [15].
Für die meisten Programmiersprachen
existiert eine Auswahl an Werkzeugen.
Es bleibt die Aufgabe des Entwicklers, die
Vor- und Nachteile abzuwägen und das
passende für das jeweilige Einsatzszenario
auszuwählen. Das Feld des Unit-
Testing besitzt zahlreiche Facetten und
lässt sich nicht in eine universell gültige
Herangehensweise packen.
Das große Ganze
Unit-Tests drängen sich für die testgetriebene
Entwicklung geradezu auf.
Schließlich steht jeder Code-Einheit der
entsprechende Test-Code gegenüber. Und
derselbe Programmierer kann im Entwicklungsprozess
Code und Tests parallel
bearbeiten. Umfangreichere Codeblöcke,
Klassen oder Module deckt das Unit-Testing
jedoch im Normalfall nicht ab. Arbeiten
die Schnittstellen von zwei Klassen
sauber zusammen? Diese Frage sollten
Unit-Tests an sich nicht stellen, für das
Zusammenspiel der Softwarekomponenten
ist sie aber essenziell.
Man spricht bei Tests auf dieser Ebene
eher von integrativen Tests oder Modultests.
Auch diese lassen sich vielfach noch
mit den gleichen Unit-Test-Werkzeugen
erledigen. Allerdings sind die dafür formulierten
Tests umfangreicher, da nicht
selten eine Vielzahl von Komponenten
erforderlich ist, um das Zusammenspiel
überhaupt prüfen zu können.
Wäre noch zu klären, was passiert,
wenn der Entwickler die Grenzen einer
Komponente verlässt und beispielsweise
Service-übergreifend testen möchte.
Auch hierbei lauern Fehler, die sich dank
testgetriebener Entwicklung vermeiden
lassen, falls die Tests auch diese Kommunikation
einbeziehen. Man spricht
dann von Systemtests. Im einfachsten
Fall einer Applikation, die mit einer Datenbank
spricht, lassen sich diese Tests
häufig auch noch im Rahmen der Unit-
Test-Werkzeuge abhandeln.
Das Problem bei derartigen Tests: Sie
laufen nur bei verfügbarer Datenbank.
Dazu benötigen sie im Normalfall eine
Konfiguration und sind insgesamt fragiler
als der herkömmliche Unit-Test. Die
Anzahl denkbarer Fehler, die zur Testzeit
zur Unerreichbarkeit der Datenbank führen
können, ist sehr hoch.
Sobald es um Systemtests einer Architektur
mit mehreren Komponenten geht,
die zum Beispiel via REST miteinander
reden, passt der Kontext eines Unit-Testorientierten
Testwerkzeugs häufig nicht
mehr. Sinnvoller ist es, ein anderes Werkzeug
zu verwenden, das beispielsweise
ganz speziell auf REST-Schnittstellen zugeschnitten
ist.
Oberflächentests
In die Kategorie Systemtests fallen auch
Oberflächentests. Für die verschiedenen
Desktopumgebungen gibt es hier häufig
spezialisierte Werkzeuge. Von zunehmendem
Interesse sind aber natürlich
DEUTSCHE PYTHON KONFERENZ
EINE PROGRAMMIERSPRACHE VERÄNDERT DIE WELT
Sechs Tage Python mit Vorträgen, Tutorials und Sprints – http://pycon.de
PyCon DE
29.10. – 3.11.12
Leipzig
Titelthema
www.linux-magazin.de TDD 08/2012
36
Abbildung 5: Das Werkzeug Behat formuliert verhaltensgetriebene Tests.
die Tests von Weboberflächen. Hier ist
die herausragende Referenz das Testen
mit Selenium [16].
Ähnlich breit angelegte Systemtests bestehen
in fachlichen Tests, die der Kunde
oder das Produktmanagement formulieren
oder die die Entwicklungsabteilung
zusammen mit dem Kunden aufstellt.
Treiben solche Tests die Entwicklung an,
spricht man von Behaviour Driven Development
(BDD, verhaltensgetriebener
Entwicklung, [17]).
Wer? Was? Wozu?
Der Kunde könnte beispielsweise formulieren,
dass „die Nutzerin Lieselotte
Müller den Knopf »Absenden« drücken
möchte, damit ihre Nachricht an den
Support verschickt wird“. Diese Formulierung
nach dem Schema „Wer? – Was?
– Wozu?“ lässt sich in BDD-Werkzeugen
recht einfach in eine vorgegebene Form
pressen:
ausführbarer Test entsteht. Dieser schlägt
anfänglich fehl und kann dann mit dem
eigentlichen Code zum Funktionieren gebracht
werden.
Unit-Testing, Modultests, Systemtests,
Oberflächentests und BDD – wo fängt
der normale Entwickler an, wo hört er
auf? Eine Einordnung ermöglicht die so
genannte Testpyramide [19]: Die überwiegende
Mehrzahl der Tests sollten
Unit-Tests sein, mit zunehmender Zahl
der in die Tests einbezogenen Komponenten
sollte die Menge der Tests abnehmen.
An der Spitze der Pyramide steht damit
eine geringe Anzahl an Gesamtsystem-,
Oberflächen- und Fachtests. Der Grund
dafür ist die zunehmende Komplexität
der Tests an der Spitze der Pyramide (Abbildung
6). Solche Tests sind in der Regel
fragiler, rechenintensiver und schwerer
zu erstellen und zu warten.
Kontra und Pro
An dieser Stelle sei ein Aufseufzen gestattet.
Es ergibt sich die schöne Gelegenheit,
einen realen Satz aus einem Projekt zu
zitieren – gesprochen von einem Entwickler
mit hochrotem Kopf und halb
erstickter Stimme: „Ich habe in zwei Wochen
vier Zeilen realen Code geschrieben!
Das ist doch völlig absurd!“ Wer den
vollen Testaufwand betreibt, auf allen
Ebenen testet und diese Tests mit jedem
Code-Commit automatisiert durchlaufen
lässt, der kommt nicht umhin, einen guten
Teil der Arbeitszeit in die Tests zu
investieren.
Schon auf der Ebene der Unit-Tests ist
in einer Pro-und-Kontra-Diskussion der
Zeitbedarf ein naheliegendes Argument
gegen die testgetriebene Entwicklung.
Der Entwickler schreibt offensichtlich die
doppelte Menge Code: den Test, dann die
eigentliche Funktionalität. Je komplexer
die getestete Funktionalität und das Testsetup,
desto mehr Zeit kosten die Tests.
Das Gegenargument der Testverfechter:
given: a user Lieselotte Müller
when: the user presses the button 'Send'
then: the message is being sent to support
Die Einführung in das in PHP geschriebene
Werkzeug Behat [18] demonstriert
diese Form der Testfalldefinition sehr
schön (Abbildung 5). Nachdem der
Kunde seine Erwartung formuliert hat,
ist es am Entwickler, die natürliche Sprache
mit Code zu hinterlegen, sodass ein
Abbildung 6: Am Fußende der Testpyramide stehen viele Unit-Tests, in der Mitte die Dienste und an der
Spitze wenige komplexe Tests wie die der Benutzeroberfläche (UI).
Tel. 0 64 32 / 91 39-749
Fax 0 64 32 / 91 39-711
vertrieb@ico.de
www.ico.de/linux
SEIT 1982
Den Zeitaufwand für Tests wiegt die erhöhte
Codequalität wieder auf. Testen reduziert
Fehler und spart daher Zeit beim
Ausbessern. Darüber hinaus resultiert
testgetriebene Entwicklung in saubereren
Codestrukturen, die sich besser warten
und weiterentwickeln lassen.
Ein weiterer Punkt, der das Testen erschwert:
Es ist natürlich auch beim
Schrei ben von Tests möglich, gravierende
Fehler zu machen. Eine gut wartbare Testsite,
die problemlos mit der Entwicklung
der Software mitgeht und keinen hohen
Wartungsaufwand einfordert, erfordert
Erfahrung mit der Testentwicklung. Genauso
wie sich eine Software strukturell
vor die Wand fahren lässt, ist dies bei
einer Testsuite möglich.
Fazit
Testgetriebene Entwicklung ist kein Allheilmittel,
das plötzlich alle Komplexität
aus der Software-Entwicklung eliminiert.
Sie hilft aber dabei, überlegter an die
Entwicklung heranzugehen, und liefert
im Schnitt die bessere Codequalität.
Jeder Entwickler, der sich noch nicht
mit der Thematik beschäftigt hat, sollte
dies nachholen. Vor allem in größeren
Unternehmen gehört die testgetriebene
Entwicklung zum erwarteten Standardrepertoire.
Wer aber behauptet, nur testgetrieben
entwickelter Code sei guter Code, der
lehnt sich allerdings zu weit aus dem
Fenster, besonders bei freier Software.
Letztlich lebt ein gutes Projekt in erster
Linie von den guten Ideen der Entwickler
und der Begeisterung, mit der sie bei der
Sache sind. Ein Großkonzern mag mit
viel Geld eine neue Software in hoher
Qualität konzipieren und testgetrieben
entwickeln. Bei reinen Open-Source-Projekten
dagegen schreibt ein Programmierer
schon mal ein Feature rein aus Spaß
und präsentiert es dann den Anwendern
zum Ausprobieren.
Dass die ersten Versionen von Google
oder Facebook testgetrieben entwickelt
wurden, darf man bezweifeln. Heute
bieten beide Unternehmen aber Musterumgebungen
dieses Entwicklungstyps.
Neuentwicklungen werden an Millionen
von Nutzern ausgeliefert, ohne dass zum
Schluss ein Heer von Testern jedes Mal
die Gesamtumfang der Software getestet
hätte oder jedes neue Deployment die
Produktivumgebung regelmäßig lahmlegt
[20]. Das ist nur dank testgetriebener
Entwicklung möglich. (mhu) n
Infos
[1] Beck, K., „Test-Driven Development by
Example“: Addison-Wesley/Vaseem, 2003
[2] Gravatar, „Creating the Hash“: [http://
de. gravatar. com/ site/ implement/ hash/]
[3] Gunnar Wrobel, „Erfolgreich getestet“:
Linux Magazin 08/11, S. 96
[4] Junit: [http:// www. junit. org]
[5] Übersicht zum Unit-Testing:
[http:// en. wikipedia. org/ wiki/ List_of_
unit_testing_frameworks]
[6] Check: [http:// check. sourceforge. net]
[7] Cppunit: [http:// cppunit. sourceforge. net]
[8] Boost Test Library:
[http:// www. boost. org/ doc/ libs/ 1_42_0/
libs/ test/ doc/ html/ index. html]
[9] PHP Unit: [http:// www. phpunit. de]
[10] Simple Test: [http:// simpletest. org]
[11] Test::Unit in Ruby:
[http:// ruby‐doc. org/ stdlib‐1. 9. 3/ libdoc/
test/ unit/ rdoc/ Test/ Unit. html]
[12] Unit Testing in Python: [http:// docs.
python. org/ library/ unittest. html]
[13] Doctest in Python: [http:// docs. python.
org/ library/ doctest. html]
[14] Js-test-driver: [http:// code. google. com/
p/ js‐test‐driver/]
[15] Nodeunit:
[https:// github. com/ caolan/ nodeunit]
[16] Selenium: [http:// seleniumhq. org]
[17] BDD: [http:// de. wikipedia. org/ wiki/
Behavior_Driven_Development]
[18] Behat:
[http:// docs. behat. org/ quick_intro. html]
[19] Testpyramide: [http:// martinfowler. com/
bliki/ TestPyramid. html]
[20] Video zu Facebook-Engineering:
[http:// www. facebook. com/ video/ video.
php? v=10100259101684977& oid=
9445547199& comments]
[21] Listings zum Artikel:
[http:// www. linux‐magazin. de/ static/
listings/ magazin/ 2012/ 08/ tdd]
Der Autor
Gunnar Wrobel ist PHP-Entwickler
und Teilhaber der
Horde LLC, einem Unternehmen,
das für PHP-Entwicklung
im und um das Horde Project
herum gegründet wurde.
Innovative Computer • Zuckmayerstr. 15 • 65582 Diez
Neueste Intel
®
Xeon
® E5 Prozes-
soren. Jetzt mit
bis zu 8 Kernen/16
Threads pro CPU
und bis zu 80%
mehr Leistung!
XANTHOS 153 1HE SERVER
INTEL ® XEON ® E5
Alle Preise in Euro
inkl. Mwst.
GmbH
Performanter 1HE Datenbankserver mit
optional redundantem Netzteil.
• 2x Intel ® Xeon ® E5-2403 1,8GHz 6,4GT 10MB 4C
• 24 GB DDR3 FSB1600 RAM
• 2x 1TB 24x7 SATA HDD
• 300W Green Netzteil
inkl. Mwst.
exkl. Mwst.
1938, 51 1629,-
Art.Nr. bto-2961652
XANTHOS R25C 2HE SERVER
INTEL ® XEON ® E5
Extrem leistungsstarke 2HE Serverlösung
mit Intel Xeon Technologie und bis zu 6
® ®
Festplatten.
• 2x Intel Xeon E5-2407 2,2GHz 6,4GT 10MB 4C
® ®
• 24 GB DDR3 FSB1600 Ram
• 1x Adaptec 6405E 4 Port Raidcontroller
• 4x 1TB 24x7 SATA HDD
• DVD-Brenner
• 500W Netzteil EPS 80+
exkl. Mwst.
2497, 81 2099,-
Art.Nr. Bto-2961653
XANTHOS R35C 3HE SERVER
INTEL ® XEON ® E5
Flexible, skalierbare Intel Xeon Lösung im
® ®
3HE Gehäuse mit bis zu 8 Festplatten.
• 2x Intel Xeon E5-2407 2,2GHz 6,4GT 10MB 4C
® ®
• 24 GB DDR3 FSB1600 Ram
• 1x Adaptec 6805 8 Port Raidcontroller
mit Nand-BBU
• 8x 1TB 24x7 SATA HDD
• DVD-Brenner
• 500W Netzteil EPS 80+
inkl. Mwst.
exkl. Mwst.
3497, 41 2939,-
Art.Nr. Bto-2961654
Intel ® , Intel ® Logo, Intel ® Inside, Intel ® Inside Logo, Atom, Atom Inside,
Xeon und Xeon Inside sind Marken der Intel Corporation in den USA und
anderen Ländern.
wir liefern auch
nach Österreich
u. in die Schweiz
Titelthema
www.linux-magazin.de Webapplikationen 08/2012
38
Sieben Gebote, um Sicherheitslücken beim PHP-Programmieren zu erkennen
Löcher für Schweine
Ursächlich für die Kompromittierung eines Webservers sind entgegen landläufiger Meinung nicht fiese Angreifer,
sondern jene, die die Software für das Gerät entwickeln und betreiben. Schlampig getesteter Code bohrt
die Löcher, durch die Fremde einsteigen – folgende sieben Gebote helfen. Tobias Eggendorfer
als günstig erwiesen. Wer die hat, erspart
es sich, später das Rad neu zu erfinden.
1. Nichts zweimal erfinden
© sajola, photocase.com
Angriffe auf Websysteme erfolgen heute
kaum mehr durch Schwächen in Netzwerkprotokollen,
sondern wegen der Fehler
in Anwendungen. Viele der spektakulären
Hacks der letzten Jahre, etwa der
ins Sony-Playstation-Netzwerk, nutzten
Programmierfehler in Webanwendungen
aus. Die Löcher sind selten exotisch und
lassen sich ganz wenigen Kategorien
zuordnen, der Sony-Hack zum Beispiel
gelang mit einer SQL-Injection. In loser
Folge hatte das Linux-Magazin an produktiven
Sites Angriffsvektoren und die
ursächlichen Programmierfehler herausgearbeitet
([1], [2]).
Zwar stellen moderne Betriebssysteme
aufwändige Schutzmaßnahmen gegen
Schwachstellen bereit, etwa die Address
Space Layout Randomization. Aber auch
die hebeln versierte Angreifer mit ein
paar Tricks aus. Bleibt allein übrig, die
Webapplikationen selbst ohne Sicherheitslücken
zu entwickeln. Programmfehler
systematisch zu vermeiden ist darum
hehres Ziel jedes ernst zu nehmenden
Software-Qualitätsmanagements.
Das beginnt lange vor der ersten Programmzeile:
Schon in der Konzeptionsphase
muss das Projekt überlegen,
welche Sicherheitsprobleme auftreten
können, welche Sicherheitsanforderung
es einhalten will und unter welchen
Bedingungen die Software zum Einsatz
kommen wird. Spätestens hier sollte das
Projekt Codingstandards vereinbaren,
damit bei Tests und Codereviews alle die
gleiche Sprache sprechen.
Ingenieure wissen, dass Qualität ein Ergebnis
des Herstellungsprozesses ist und
nicht nach dem Abschluss hineinprüfbar.
Open BSD als Positivbeispiel gilt dank
klarer Qualitätsstandards und Tests vielen
als sicherstes Betriebssystem. Von
Anfang an müssen alle an einem Projekt
beteiligten Entwickler auf sicheren und
fehlerfreien Code achten. Neben regelmäßiger
Fortbildung hat sich eine Sammlung
von fertigen Routinen für Standardfälle
Neue Räder und neue Software laufen zu
Beginn längst nicht so rund wie erprobte.
Bei Sessionmanagement und Login-Prüfungen
schreiben viele Entwick ler ihre
eigenen Routinen und öffnen damit Session-Surfing
oder SQL-Injections Tür und
Tor (Abbildungen 1 und 2).
Zwei ganz einfache Maßnahme schützen
vor solchen Neuerfindungen: Zum einen
helfen Absprachen innerhalb des Projekts,
wer welche Routinen aus welchen
Bibliotheken übernimmt. Zum anderen
hebt das gegenseitige Code-Auditieren
zweier Entwickler die Qualität. Absprachen
senken die Wahrscheinlichkeit für
Doppelerfindungen, weil oft einer der Beteiligten
eine Lösung für ein Standardproblem
schon kennt.
Gleichzeitig führen solche Absprachen
zu einem zweiten qualitätssichernden
Effekt: Wer seinen Code einem anderen
erläutern muss, wird ihn besser dokumentieren
und auch gründlicher durchdenken,
um gut dazustehen. Außerdem
lassen sich die Ergebnisse der gegenseitigen
Code-Vorstellungen direkt für die
Dokumentation verwenden – eine Sparte,
die oft stiefmütterlich behandelt wird.
2. Code-Review betreiben
Solche Absprachen sind weit entfernt von
systematischen Code-Reviews, bei denen
ein zweiter Entwickler oder ein ganzes
Team sich Zeile für Zeile durch das Programm
eines Kollegen tastet. Dieses sehr
zeitaufwändige Testverfahren bietet –
ein gutes Team vorausgesetzt – eine sehr
Webapplikationen 08/2012
Titelthema
www.linux-magazin.de
39
Abbildung 1: Gute Tests hätten ans Licht gebracht, dass die Login-Maske des
(Security-Lehr-)Shops Badstore.net SQL-Injections ermöglicht …
Abbildung 2: … und so jeden sehen lässt, was Kunden zuvor bestellt haben. Die
harmlose Trockenübung funktioniert bei erschreckend vielen echten Shops auch.
hohe Erfolgsaussicht, Fehler zu finden.
Open BSD betreibt diesen Aufwand.
3. Datenflussanalyse prüft
Eingabedaten
Auf der Suche nach Sicherheitslöchern
hilft eine Datenflussanalyse im Rahmen
des Code-Review. Dabei gilt es, für jedes
eingegebene Datum zu prüfen, ob und
wie es Einfluss auf welche anderen Programmaktionen
hat. Das ist für einfache
Mailformulare simpel, bei Datenbankanwendungen
aber sehr zeitintensiv.
Aber nur so lassen sich mit etwas Erfahrung
Cross Site Scripting, Code-Injections
und vergleichbare Angriffsstellen schnell
lokalisieren.
Interessant bei solchen Datenfluss analysen
sind immer Grenzwerte: Überschreitet
etwa eine Integervariable den Wert
»PHP_INT_MAX«, führt PHP einen automatischen
Typecast nach Float durch. Das
kann zu Überraschungen führen, wenn
der Wert in ein Datenbankfeld vom Typ
Integer wandert. Insbesondere bei Datenbanksystemen
wie MySQL, die auch Datentypen
wie »tinyint« kennen, geschehen
Integer-Overflows schnell.
Bei einer Datenflussanalyse behalten die
Entwickler außerdem alle Berechnungen
und Manipulationen von Eingabendaten
im Programm in Bezug auf Grenzwerte
im Auge und erkennen entsprechende
Fehler daher frühzeitig.
Mehr noch als Absprachen haben intensive
Reviews und Datenflussanalysen den
Effekt, dass die Entwickler nicht nur Fehler
finden, sondern sich als Team sensibilisieren
für kritische Programmierfehler
und sich die Dokumentation verbessert.
Die Lerneffekte führen mittelfristig zu höherer
Codequalität und weniger Fehlern.
4. Testsysteme richtig
konfigurieren
Im Zuge einer Datenflussanalyse fallen
fehlende URL-Encodings oder doppeltes
Escaping von SQL-Statements auf. Multiple
Escapes können übrigens auch durch
die kleine Unachtsamkeit entstehen, dass
in der eigenen Testumgebung PHP mit
deaktivierten Magic Quotes läuft und auf
dem Produktivsystem mit aktivierten.
Deshalb sollte man Produktiv- und Testsystem
konsequent mit gleichen Versionen
und Konfigurationsdateien betreiben.
Ein Cronjob, der ein einfaches Diff über
eine SSH-Verbindung laufen lässt, kann
dies prüfen.
5. An Debug- und
Fehlermeldungen denken
Ein gewisses Sicherheitsproblem bilden
vergessene Debugmeldungen. Je detaillierter
sie ausfallen, desto mehr nutzen
sie dem Angreifer. So erfährt er zum Beispiel
Datenbank- und Tabellennamen,
auch der in [1] beschriebene Angriff lief
über diese Schiene. Gegen vergessene
Debugmeldungen hilft ein vereinbartes,
vorangestelltes Schlüsselwort, das sich
über Grep leicht finden lässt. Alternativ
binden Entwickler auf ihrem Testsystem
eine spezielle Debugausgabe-Funktion
per Include ein, die auf dem Produktivsystem
leer bleibt.
Wie Debug- helfen Angreifern auch Fehlermeldungen,
die nach außen dringen.
Normale Benutzer verwirren technische
Meldung außerdem, was die Usability
beeinträchtigt. Besser sind detaillierte
Logeinträge oder automatische Mails an
den Admin. In eine gute Dokumentation,
sie ist eine Voraussetzung für Softwaretests,
gehört eine Liste möglicher
Fehlermeldungen und unter welchen
Bedingungen die Webapplikation sie erreicht.
Damit kann ein Tester gezielt Fehler
provozieren und so das Verhältnis von
Nutzerfreundlichkeit und Sicherheitsrisiko
einschätzen.
6. Testfälle konstruieren
Anhand der bisherig gewonnen Erkenntnisse
lassen sich Testfälle beschreiben.
Das sind Kombinationen aus definierten
Ausgangssituationen und einem bestimmten
vorhersagbaren Verhalten, das ein
Programm daraufhin zeigen soll. So wäre
ein Testcase für einen Taschenrechner
»2+2« mit der erwarteten Ausgabe »4«.
Titelthema
www.linux-magazin.de Webapplikationen 08/2012
40
Abbildung 3: Das in Listing 2 angegebene Testprogramm loggt sich auf Facebook ein, zählt die Links und
stellt ein aktiviertes HTTPS fest.
Die Addition ist für Tester ebenso naheliegend
wie schnell ausgeführt, aber wer
addiert (2 31 -1)+1 und prüft so, ob ein
32-Bit-Signed-Integer überläuft?
Ein organisierter Test beinhaltet also,
die Grenzen des Systems zu bestimmen
und zu prüfen. Dabei ist es in der Regel
nicht zielführend, wenn jene Entwickler
die Testfälle definieren, die auch die Anwendung
geschrieben haben – ihre große
Nähe zum Code macht es wahrscheinlich,
dass sie betriebsblind sind und ihre
eigenen Fehler übersehen.
Tests sind umfangreich, für jede Funktion
selbst, für jedes Modul und für das fertige
System gibt es Testfälle. Sie sollten bewusst
auch Grenzsituationen abdecken.
Ebenso sollten Entwickler Tests für jeden
bekannten Bug integrieren. Hat also der
Taschenrechner früher irgendwann wegen
eines Programmierfehlers die Punktvor-Strich-Regel
missachtet, so sollte
dieser Bug in einen Testcase münden.
Das gilt erst recht für sicherheitsrelevante
Programmierfehler.
Als Maß für die Güte der Tests gilt der
Anteil des berücksichtigen Codes. Eine
100-Prozent-Überdeckung ist wünschenswert,
aber nicht immer möglich. In ereignisgesteuerten
Programmen oder bei
Exception-Handlern für schwer provozierbare
Fehler, bleibt mancher Zweig
praktisch unerreichbar.
7. Testprogramme benutzen
Das alles zeigt: Neben manuellen werden
automatisierte Tests unumgänglich.
Je nach System lassen sich diese unterschiedlich
realisieren. So reicht für eine
einzelne Funktion oft ein selbst geschriebenes
Testprogramm, das eine Menge
von Eingabewerten und zugeordneten
Ausgabewerten kennt und mit den realen
Ergebnissen vergleicht.
Sobald das zu testendene Programm ein
bisschen umfangreicher wird, lohnen eigene
Testprogramme nicht mehr. Für PHP
gibt es zum Glück viele Testsysteme, zum
Beispiel PHP Unit [3], Simple Test [4]
oder Testplan [5]. (Siehe auch Artikel
über testgetriebene Entwicklung.)
PHP Unit und Simple Test dienen beide
dazu, die einzelnen Funktionen und Instruktionen
des Programms zu überprüfen,
beispielsweise ob Variablenwerte gültig
sind oder Funktionen oder Funktionsblöcke
korrekte Werte zurückliefern. Daher
sind beide Umgebungen nur für PHP geeignet.
Das Handbuch [6] zu PHP Unit
bietet eine sehr gute Einführung in das
automatisierte Testen – Wissen, das problemlos
auf Simple Test übertragbar ist,
dessen Dokumentation deutlich magerer
ist. Funktional und konzeptionell sind
beide vergleichbar.
Testplan dagegen prüft, ob das Programm
auf vorgegebene Nutzereingaben erwartete
Werte zurückgibt; es testet also die
Testplan in der Praxis
Die Installation von Testplan ist relativ simpel
und auf der Homepage [5] gut erklärt.
Nur fehlt der Hinweis, die Umgebungsvariable
»TESTPLAN_HOME« korrekt zu setzen, im Beispiel
zu diesem Artikel mit:
export TESTPLAN_HOME=~/testplan‐1‐0‐r6/
Auf dem Fedora-Testrechner des Autors war es
nicht notwendig, »JAVA_HOME« zu setzen.
Der erste, einfache Test in Listing 1 prüft die
Zahl der Links auf der Homepage des Autors und
demonstriert dabei gleich mehrere Elemente
von Testplans Skriptsprache: Sie beherrscht
Schleifen, kann zählen, Dinge aus der Ausgabe
extrahieren und selbst Ausgaben erzeugen. So
selektiert Zeile 5 die Links aus der Antwort
(»%Response%«) über den Parameter »a«,
das entspricht dem HTML-Tag für einen Link. Der
»href«-Parameter in Zeile 6 zeigt auf die URL,
die Zeile 7 ausgibt.
Das Listing 2 enthält den einfachen Zähltest aus
Listing 1, arbeitet aber komplexer: Hier meldet
sich Testplan für den Autor bei Facebook an
und überprüft, ob HTTPS für Facebook aktiviert
ist. Das geschieht zweistufig: Zunächst stellt
die Funktion »Check« sicher, dass auch der gewünschte
Text auf der Seite steht. Im Erfolgsfall
läuft das Testskript weiter. Es liest dann die
Meldung aus, entfernt das HTML daraus und
prüft mit einer Regular Expression, ob dort
»aktiviert« steht.
Wenn ja, meldet das Skript diesen Test wie in
Abbildung 3 als bestanden (»Pass«). Andernfalls
versucht der Test, HTTPS selbsttätig nachzuaktivieren
(Abbildung 4). Dazu ist ein kleiner
Kunstgriff nötig, denn Facebook verpasst den
Formularen bei jedem Zugriff eine neue, scheinbar
zufällige ID. Dem Xpath-Ausdruck in Zeile
30 gelingt es, die ID zu lesen. Das Ergebnis
wandert in die lokale Variable »%id%«. Ebenso
wie der Inhalt eines verdeckten Eingabefelds in
Zeile 31. Mit diesen gewonnenen Werten lässt
sich das gewünschte Formular auf der Seite
adressieren (Zeile 33) und korrekt ausgefüllt
an Facebook posten.
HTTPS oder nicht HTTPS – das ist die Frage
Wer nun noch automatisch testen möchte, ob
Facebook HTTPS auch wirklich eingeschaltet
hat – was notwendig ist, wenn der Test anschließend
weiterlaufen soll –, muss noch einen
kleinen Test schreiben, ob Facebook den Nutzer
wieder ausgeloggt hat. Abhängig von dessen
Ausgang muss sich das Skript gegebenenfalls
erneut einloggen und nochmals prüfen. Praktischeweise
bietet die Testplan-Sprache die
Möglichkeit, externe Testmodule aufzurufen.
Es reicht also, einmal den HTTPS-Test zu implementieren
– das eigene Testskript ruft das
Modul dann an mehreren Stellen auf. Das erleichtert
die Pflege des Tests.
Grundsätzlich zeigt sich die Testplan-eigene
Sprache mächtig und als leicht zu erlernen, ist
aber schlecht dokumentiert. Das macht anfangs
einiges an Experimentieren nötig, bis ein Test
wunschgemäß abläuft.
Wiederholung – Täter?
Häufige Versuche in Form von Listing 2 nimmt
Facebook übrigens übel und verhängt beim
Log in einen Captcha – auch die Gegenseite testet
also. Testplan einzusetzen lohnt sich wegen
seiner Flexibilität übrigens nicht nur für eigene
Webanwendungen, sondern auch für kleine (natürlich
legale) Angriffe.
Auftritt oder den Webshop übernommen
haben, fragt niemand mehr nach Zeit
und Budgets. Selbst wer im Vorfeld den
Verlust an Umsatz und Reputation nicht
einrechnen will, sollte bedenken, dass,
sobald geeignete Testprozesse etabliert
sind, mittelfristig der Mehraufwand überschaubar
bleibt. Und wer systematisch
testet, prüft die Qualität seiner Arbeit.
Das Mehr an Erkenntnis vermeidet künftig
gleichartige Fehler und die Qualität
späterer Arbeitsergebnisse steigt. (jk) n
Webapplikationen 08/2012
Titelthema
www.linux-magazin.de
41
Abbildung 4: Dieser Lauf ergibt, dass HTTPS nicht eingeschaltet ist. Das Programm versucht daraufhin, das
Protokoll selbst anzuschalten.
Reaktion auf bestimmte Eingaben. Dazu
verfügt es über eine eigene Skriptsprache,
die dafür optimiert ist, Grundinteraktionen
auf Webseiten zu tätigen, etwa Daten
in Formulare eintragen oder Links anklicken.
Die Ausgabe kann der Programmierer
dann nach Schlagwörtern oder
Zeichenfolgen durchsucht lassen. Damit
kann er leicht prüfen, ob die Anwendung
Der Autor
Tobias Eggendorfer ist Professor für IT-Forensik
in Hamburg. Aus seiner Arbeit mit kompromittierten
Systemen kennt er die Folgen schlechter Programmierung
nur zu gut. Für Qualität kämpft er
zurzeit noch an ganz anderer Stelle: Mit seinem
Blog [http:// www. meilenschwund. de] will er die
Lufthansa daran erinnern, dass auch Kundenbindung
Qualität braucht.
aus Nutzersicht funktioniert. Wer die Eingabewerten
geschickt wählt, kann auch
kritische Fälle abfangen (siehe Kasten
„Testplan in der Praxis“).
Allen Verfahren ist gemein, dass der
Entwickler sich darüber klar sein muss,
unter welchen Rahmenbedingungen das
Programm korrekt abläuft, wo die Grenzen
liegen und welche Eingaben es nicht
toleriert. Dieses Wissen wandert in die
Tests – und wird dadurch explizit. Das
reduziert die Fehlerwahrscheinlichkeit.
Lohnt das alles?
Webapplikationen systematisch zu testen
ist leider (noch?) zu wenig verbreitet.
Kosten- und Zeitdruck seien die Gründe,
so ist oft zu hören. Das ist seltsam, denn
sobald Angreifer den eigene Online-
Infos
[1] Tobias Eggendorfer, „SQL-Injection legt
Newsletter lahm“: Linux-Magazin 02/11,
S. 108
[2] Tobias Eggendorfer, diverse Artikel über
Schwachstellen in Webapplikationen:
Linux-Magazin 12/08, S. 78; 01/09, S. 100;
12/10, S. 100; 01/12, S. 48
[3] PHP Unit: [http:// www. phpunit. de]
[4] Simple Test: [http:// simpletest. org]
[5] Testplan: [http:// testplan. brainbrain. net]
[6] PHP-Unit-Handbuch: [http:// www. phpunit.
de/ manual/ 3. 7/ en/ index. html]
Listing 1: Links zählen
01 default %Cmds.Site% http://www.eggendorfer.info/
02 GotoURL %Cmds.Site%
03
04 set %Count% 1
05 foreach %Link% in %Response://a%
06 set %URL% as selectIn %Link% @href
07 Notice %Count% Link: %Link% %URL%
08 set %Count% as binOp %Count% + 1
09 end
Listing 2: Facebook testen
01 default %Cmds.Site% https://www.facebook.com
02 GotoURL %Cmds.Site%
03
04 SubmitForm with
05 %Form% id:login_form
06 %Params:email% someone@somewhere.com
07 %Params:pass% somesecurepassword
08 %Submit% key:enter
09 end
10
11 set %Count% 1
12 foreach %Link% in %Response://a%
13 set %URL% as selectIn %Link% @href
14 set %Count% as binOp %Count% + 1
15 end
16
17 Notice %Count% Links auf Facebook Startseite.
18 GotoURL https://www.facebook.com/
settings?tab=security
19
20 Notice Pruefe ob HTTPS aktiviert.
21 Check //span[contains(text(),'Das sichere
Durchstöbern ist derzeit')]
22 set %alles% %Response://span[contains(text(),
'Das sichere Durchstöbern ist derzeit')]%
23 if strMatches %alles% ^(Das sichere
Durchstöbern ist derzeit).* (aktiviert)\.$
24 Pass HTTPS aktiviert
25 else
26 Notice HTTPS deaktiviert
27 Notice Versuche HTTPS zu aktivieren.
28 Notice Anschliessend Test neu starten.
29 GotoURL https://www.facebook.com/settings?
tab=security§ion=browsing&view
30 set %id% %Response://form[@action=
'/ajax/settings/security/browsing.php']/@id%
31 set %fb_dtsg% %Response://form[@action=
'/ajax/settings/security/browsing.php']
/input[@name='fb_dtsg']/@value%
32 SubmitForm with
33 %Form% id:%id%
34 %Params:secure_browsing% 1
35 %Params:fb_dtsg% %fb_dtsg%
36 %Submit% value:Änderungen speichern
37 end
38 Notice HTTPS neu testen
39 Fail HTTPS
40 end
Titelthema
www.linux-magazin.de Rollout Testing 08/2012
42
Software vor dem Rollout testen: Was Profis empfehlen
Endlose Stufen
Sicherheitslücken, Bugs und technischer Fortschritt bringen Distributionen jeden Tag in Bewegung. Admins,
die fürs Deployment der Pakete die Verantwortung tragen, bleibt nichts als testen, testen, testen ... Markus Feilner
© Igor Negovelov, 123RF.com
Wer die Qualität neuer Software bereits
vor dem Einspielen (dem Rollout) auf
Servern oder Clients testen muss (Quality
Assurance, QA), sieht sich schnell einer
recht komplexen Materie gegenüber. Experten
empfehlen, die Software in mehreren
Stufen (Stages) zu prüfen und sicherzustellen,
dass jederzeit ein Zurück
(Backout) zum Stand vor der Migration
möglich ist.
Stages, Backout, Rollout, Rollback und
Qua lity Assurance: Das Linux-Magazin
hat fünf Experten gebeten, ihre Software-
Teststrategien zu offenbaren. Zwei Dienstleister
(B1 Systems und die LIS AG, zwei
Distributoren (Univention und Red Hat)
sowie der Test-Analyst des Münchner Limux-Projekts
(Kasten „Limux im Test“)
standen Rede und Antwort.
Große Einigkeit herrscht in einem Punkt:
Essenziell ist es, neben der Produktionsumgebung
eine Test- und Integrationsumgebung
vorzuhalten. Dort lässt sich nicht
nur feststellen, ob eine Softwarekombination
auch nach dem Update einer Komponente
läuft, sondern auch überprüfen, ob
der neue Release-Stand alle Workflows
der Firma weiterhin erlaubt.
Ralf Lang von B1 Systems (Abbildung 1)
kann ein Lied davon singen: „Immer wieder
entfernen Entwickler bei Versionsupdates
Features oder verändern Plugin-Schnittstellen,
die dann nicht mehr
kompatibel sind. Viele Testszenarien lassen
sich zwar mit Ant-Skripten [1] oder
mit Jenkins [2] automatisieren. Aber der
Rollout selbst erfordert detaillierte Vorausplanung,
zu der auch das Abschätzen des
nötigen Zeitfensters und das Entwickeln
eines Rollback- oder Backout-Szenarios
gehört, falls etwas schiefläuft.“
Wartungsfenster, Rollback
und Stages
Gelegentlich lösen Updates auch bisher
völlig unbekannte Fehler aus. „Deshalb
muss die IT-Abteilung das Wartungsfenster
ausreichend groß planen, damit sie an
seinem Ende ein funktionierendes System
– alt oder neu – garantieren kann. In größeren
Umgebungen bietet es sich an, mit
Pilotsystemen oder -anwendern die neue
Software zu testen.“
In ähnlicher Richtung argumentiert Supportleiter
Jürgen Schulz von der LIS AG:
Stets „einen Schritt voraus“ ist für ihn
ein Unternehmen, das auf den Rechnern
seiner Admins die neueste Softwaregeneration
verwendet, bevor es diese in die
Produktivumgebung loslässt, sowohl auf
dem Desktop als auch bei Serverprogrammen.
„In unserem Staging erhalten die
Arbeitsplätze der Mitarbeiter nicht immer
automatisch alle Updates, so haben die
Admins die Möglichkeit, frühzeitig Fehler
und Probleme zu identifizieren und zu
beheben“, erklärt Schulz.
Dabei ist jedoch viel organisatorische
Vorarbeit zu leisten: „Die Operationen
Guides und Workflows müssen klar definiert,
schriftlich festgehalten und regelmäßig
auf ihre Gültigkeit geprüft werden.
Nur so lässt sich sicherstellen, dass die
Herangehensweisen immer gleich sind.
Das Vereinheitlichen der Systeme und der
Infrastruktur muss das Ziel sein.“
Abbildung 1: Ralf Lang ist Linux Consultant und
Developer bei B1 Systems.
Einig sind sich die Spezialisten auch darin,
dass Admins in Firmen immer danach
trachten, die „Komplexität gering zu
halten und standardisierte Verfahren und
APIs zu verwenden. Nicht zaubern oder
tricksen, das kann bei Updates ein böses
Erwachen geben, wenn die Software in
einem Update die Arbeitsweise ändert.
Dann beginnt alles von vorn.“
Das von Schulz beschriebene Staging-
Konzept hat zwei, idealerweise sogar drei
Stufen: „Stage 0 ist ,Leading Edge’, also
die neueste Softwareversion. Auf Stage 1
arbeiten die Tester mit einem von Stufe
0 abgeleiteten, bereits eingefrorenen Zustand.
Stufe 2 sind die Produktivsysteme,
die erst die Software bekommen, wenn
die Tester grünes Licht geben. Dann wird
Stage 1 zu 2 und Stage 0 zu 1 – und das
Testing beginnt von vorn, im Idealfall als
kontinuierlicher Prozess.“
Red Hat bietet Produkte
Auch Red Hat schwört auf ein gut geplantes
Staging, sieht das Ganze aber
auch stark in Organisationsstrukturen
eingebettet (Abbildung 2): „Neben dem
Einteilen der Abschnitte des jeweiligen
Softwarelebenszyklus-Schritts (Stage) in
Entwicklung (Dev), Qualitätssicherung
(QA) und Produktion (Prod) ist es wichtig,
Übergänge und Rollen zu definieren.
Release and Deployment Management,
Change Management und Service Validation
and Testing sind die Schlagworte,
mit denen sich IT-Leiter auseinandersetzen
müssen“, erklärt Dirk Hermann (Abbildung
3, Senior Solution Architect bei
Red Hat). „Funktionalitäts-, Integrations-,
Last-, Sicherheits- sowie Endanwender-
Akzeptanz-Tests müssen die vier Szenarien
(Install, Upgrade, Downgrade, Remove)
sowie den stets mit zu testenden
Backoutplan berücksichtigen.“
Der Nachteil an all diesen Vorgaben ist
offensichtlich: Admins und Tester müssen
die Arbeitsweise ihrer User sehr genau
kennen, weil sonst für die Kollegen
elementare Funktionen eventuell unter
den Tisch fallen. Jürgen Schulz: „Sehr
wichtig ist es, Testszenarien zu entwickeln,
in denen wichtige Abläufe und
Keyfunktionen des Unternehmens vorkommen.
Auf einer Testinstanz validiert
ein Admin, ob das jeweilige Kriterium
auch mit der neuen Software funktioniert.
Dazu braucht es aber klare Vorgaben
und exakte Definitionen.“
Hinzu kommt, dass eine Enterprise-Distribution
wie RHEL oder SLES zwar zertifizierte
Middleware anbietet, manche
Software aber zusätzliche Komponenten
für den Betrieb braucht. „Da ist die IT-
Abteilung selbst gefragt, Paketieren ist
angesagt“, berichtet Ralf Lang. Für ihn ist
ein typisches Beispiel „die Kombination
aus PHP und Memcache: Die Distribution
bietet PHP und Memcache, aber die PHP-
Memcache-Erweiterung selbst muss ein
Dienstleister wie wir pflegen. Hilfreich
für uns ist ein eigener, interner Buildservice
wie Suses OBS [3], der Pakete für
verschiedene Distributionen und Architekturen
baut.“
Binär-Kompatibilität
Über die erwähnten Garantien der Konkurrenz
hinaus hat Red Hat eine weitere
wichtige Zusage im Angebot: „Unsere
KABI/API-Garantie [4] verspricht hierbei
die Stabilität der Schnittstelle zwischen
dem Betriebssystem und dem darüberliegenden
Binary oder Programming-Interface.
Dies beinhaltet die Stabilität über
Minor Releases hinweg sowie Stabilität
und Unabhängigkeit von der darunterliegenden
Hardware- oder Virtualisierungsplattform,
also Bare Metal, VMware,
Red Hat Enterprise Virtualization oder
Microsoft Hyper-V.“ Offensichtlich versuchen
die roten Hüte hier, einen der größten
Vorteile von Microsoft aufzugreifen:
Auf den Redmonder Systemen bekommt
der findige Anwender auch heute noch
uralte Dos-Programme zum Laufen, während
bei Linux die Abwärtskompatibilität
in vielen Fällen hinterherhinkt.
Moritz Mühlenhoff, Debian-Entwickler
und beim Bremer Distributor Univention
für die Security-Maintenance des Univen-
Rollout Testing 08/2012
Titelthema
www.linux-magazin.de
43
Middleware-SOE
Infrastruktur-SOE
Custom-Software
Open-Source-
Repository
Design
Develop
Release
definieren
Release
erstellen
JEE-
Anwendungen
SDE
JBoss Middleware
(Red Hat)
Open-Source-
Repository
Release
Test
Software von
Drittanbietern
Download-
Portal
Software-
Repository
Build-Host
Backout
testen
Release
testen
Middleware
Stack (JBoss)
Software von
Red Hat
Red Hat
Network
Release
deployen
Reporting
Betriebssystem
Extern Stage „Development" Stage „QA" Stage „Production"
Abbildung 2: Reichlich komplex wirkt Red Hats Vorstellung einer Test-Infrastruktur für große Enterprise-Kunden im Standard Operating Environment (SOE).
Titelthema
www.linux-magazin.de Rollout Testing 08/2012
44
tion Corporate Server zuständig, spricht
sich für standardisierte Verfahren aus –
und die Kombination mit der privaten
Cloud. Schon die Testumgebung lasse
sich ja ideal in einer Virtualisierung betreiben.
„Dabei muss nicht die komplette
Firmen-IT reproduziert werden, das lässt
sich auch auf relevante und unerlässliche
Dienste beschränken, zum Beispiel das
LDAP-Verzeichnis.“
Univention: Ucs-Test
Univention verwendet ein selbst geschriebenes
Framework namens Ucs-Test, das
über Jenkins regelmäßig die Codebasis
der Distribution überprüft. Die aus
Debian importierten Pakete testen die
Bremer darüber hinaus mit Tools wie
Lintian [5] oder Piuparts [6]. „Für die
Fachanwendungen vor Ort empfiehlt sich
die enge Zusammenarbeit von Kunden,
Dienstleiter und Anwender, bei kritischen
Systemen eine Testfreigabe nach
dem Vier-Augen-Prinzip“, erklärt Mühlenhoff.
Und er nennt noch einen menschlichen
Aspekt, den OSI-Layer 8 sozusagen. Wer
Desktopumgebungen auf neue Releasestände
bringt, stolpert oft über Veränderungen
in Usability oder Funktionsweise
der GUIs, die für Benutzer in mehrerer
Limux im Test
Im Limux-Projekt der öffentlichen Verwaltung
der Stadt München stellt ein mehrstufiges
Testkonzept die Funktionsfähigkeit der
Komponenten mit spezifischen Anpassungen
sicher, berichtet der dafür in der bayrischen
Landeshauptstadt München verantwortliche
Stefan Koehler: „Eine separate Testumgebung
und ‐mannschaft, führt unter Produktivbedingungen
Tests durch und stellt so vor dem
Rollout einer jeden Major-Release die korrekte
Funktion des Limux-Basisclients sicher. Danach
kommen innerhalb der einzelnen Referate die
Systemintegrationstests an die Reihe, wo den
vielfältigen Fachanwendungen auf den Zahn
gefühlt wird.“ Weil dafür im Referat lokale Infrastruktur
nötig ist, muss das in München im
Produktivsystem geschehen.
Die Strategie des Limux-Qualitätsmanagements
in der Landeshauptstadt hängt stark
von der Umgebung und den jeweiligen Anforderungen
ab. Im Projekt hat sich ein mehrstufiger
Testablauf über die Stufen Entwicklung,
Systemintegrationstest, Integrationstest in
den Referaten oder Fachabteilungen bis zum
Abbildung 3: Dirk Herrmann, Senior Solution
Archi tect mit Schwerpunkt System Management,
Prozessintegration und Cloud bei Red Hat.
Hinsicht erklärungsbedürftig sind. „Hier
helfen Pilotgruppen zu entscheiden, in
welchem Umfang zusätzliche Dokumentation,
Schulungen oder andere Unterstützungsmaßnahmen
notwendig sind.
Oft bedarf es auch individueller Erweiterungen,
die wir über die Univention
Management Console (UMC) in die Benutzerverwaltung
integrieren.“
Ganz anders ist die Situation bei Firmen
mit eigener Software-Enwicklung, die
unter Red-Hat-Kunden häufiger zu finden
sind: „Für diese Umgebungen deckt
Continous Integration neben der automatisiert
erzeugten Releases auch einen
umfangreichen und wertvollen Teil des
Qualitätsmanagements ab“, meint Dirk
User-Acceptance-Test bewährt. „Vor dem Rollout
des Linux-Basisclients ist in jedem Referat
der Administratoren Handarbeit gefragt, da
immer wieder referatspezifische Anpassungen
erforderlich sind. Die Aktualisierung von
Serverkomponenten ist zwar kritischer, was
die Auswirkungen angeht, in der Sache aber
weitaus weniger komplex.
Das Limux-Projekt setzt überall, wo es irgendwie
möglich ist, Standardkomponenten ein: Open Office,
Ubuntu, Firefox und Thunderbird. Diese Produkte
testen wir nicht mehr umfassend, sondern
nur die bisweilen umfangreichen Anpassungen
und Bugfixes. Für uns ist also die Qualität der
Arbeit des Distributors oder der Community sehr
wichtig. Lösungen für Fehler, die wir finden, geben
wir upstream weiter.
Sehr wichtig ist uns auch das Patchmanagement,
das es erlaubt, innerhalb eines Releasezyklus
kleinere Bugfixes auszuliefern. Limux
bietet seinen Admins in den Referaten einen
Mechanismus an, mit dem sie Patches und Fixes
auswählen und diese auch vorab auf Testund
Produktivrechnern installieren können.“
Hermann. „In der Java-Software-Entwicklung
haben sich Maven, Ant, Jenkins
und Nexus etabliert, erweitert um
Tools wie Sonar oder das Framework for
Integrated Test (FIT).
Viele der unter [7] gelisteten Werkzeuge
lassen sich auch für Software-Entwicklung
jenseits von Java nutzen. Wichtig
ist, dass der Output der CI-Toolchain
gleichzeitig den Input für ein zentrales
Software Repository bildet, eine Definitive
Software Library. Einen parallelen
Stream für selbst erstellte Software sollten
Admins in jedem Fall vermeiden“,
empfiehlt Herrmann.
Viele Stolpersteine
Rollout Testing sinnvoll zu implementieren
erfordert offenbar Weitsicht und
Planung. Wer da nicht von vornherein
sowohl die IT-Abteilung als auch die
organisatorische Seite einbezieht, kann
sich bei Updates auf Probleme gefasst
machen. Auf Servern und mit virtuellen
Desktop-Infrastrukturen lassen sich
viele Testabläufe automatisieren, und der
Trend, mehr und mehr Anwendungen ins
Web zu bringen, macht in Zukunft für
den Admin sicher vieles einfacher. Trotzdem
muss er dafür sorgen, dass seine
IT-Abteilung fortwährend den Stand kommender
Softwareversionen testet. Sonst
riskiert er, dass eines Tages die gesamte
Produktion steht, nur weil er eine Zeile
im Changelog übersehen hat. n
Infos
[1] Ant: [http:// ant. apache. org]
[2] Jenkins: [http:// maven. apache. org]
[3] Suse Open Build Service: [http:// de.
opensuse. org/ Portal:Build_Service]
[4] : Red Hat KABI/API Kompatibilitätsgarantie:
[http:// www. redhat. com/ f/ pdf/ rhel/ RHEL6_
App_Compatibility_WP. pdf]
[5] Lintian: [http:// lintian. debian. org]
[6] Piuparts: [http:// piuparts. debian. org]
[7] Open-Source-Testtools: [http:// www.
opensourcetesting. org/ functional. php]
Linux Magazin Online PLUS
Auf Linux-Magazin Online Plus finden
Sie einen Artikel über Open QA, ein
Testtool für Distributionen und Appliances,
das Suse entwickelt hat.
In eigener Sache: DELUG-DVD
Knoppix, Fedora, Mint, Debian
Einführung 08/2012 12/2010
Software
Auch diesen Monat bekommen die DELUG-Käufer die doppelte Datenmenge zum einfachen Preis: Von der einen
Seite der DVD bootet Klaus Knoppers neuestes Linux, von der anderen wahlweise Fedora 17 oder Mint 13. Dazu
ein Debian-E-Book, jede Menge Videos, Software und eine virtuelle Maschine mit Egroupware. Markus Feilner
www.linux-magazin.de
45
Inhalt
46 Groupware ohne Outlook
Egroupware, Tine 2.0, Horde, Simple
Groupware und Feng Office: Fünf Webgroupwares
im Vergleichstest.
54 Tooltipps
Swet 1.5.16, Aletheia 0.0.9, Monit 5.4,
Fish 0.3, Mu 0.9.8.4 und Raider 0.13.1.
56 Bitparade
Eins-zu-eins-Kopien leicht gemacht mit
vier Tools zum Klonen von Festplatten.
Neben einem normalen Linux-Magazin
ohne Datenträger gibt es die DELUG-
Ausgabe mit Monats-DVD, bei der die
Redaktion den Datenträger nach einem
speziellen Konzept zusammenstellt: In
einer Art modularem System enthält
er Programme und Tools, die in der jeweiligen
Magazin-Ausgabe getestet und
besprochen werden. Zudem gibt es von
der Redaktion besonders empfohlene
Software – alles gebündelt unter einer
HTML-Oberfläche.
Knoppix 7.0.2
Gerade erst erschienen – schon bootet
von der einen Seite der DVD Klaus Knoppers
neuester Spross, die Version 7.0.2.
Der bewährte Debian-Remix bringt viele
aktuelle Desktop-Programme aus Testing
und Unstable und verwendet Kernel 3.3.7
sowie X.org 7.6, das vor allem mit neuerer
Computerhardware besser zurechtkommt.
Außerdem nennt das Changelog
[1] zwei neue Bootparameter für 64-Bit-
Systeme (»knoppix64« und »chroot« für
die Systemreparatur).
Libre Office, der Browser Chromium,
LXDE, KDE, Gnome, Wine und Virtualbox:
Die Liste erneuerter Programme ließe
sich noch verlängern (Ab bil dung 1). Auch
für ältere Rechner mit wenig Hauptspei-
cher hat Knopper etwas zu
bieten: Dank der »zram«-
Kompression für den Hauptspeicher
soll Knoppix jetzt
auch auf Maschinen mit
wenig RAM flotter laufen.
Fedora und Mint
Wer die DVD umdreht und
dann bootet, kann unter
zwei weiteren topaktuellen
Distributionen wählen:
Fedora gilt unter Linux-Spezialisten
als die Distribution
mit der besten Hardware-
Unterstützung und dem
aktuellsten Softwarestand.
Aber auch Linux Mint
13 hat etwas zu bieten: Es basiert auf
Ubuntu 12.04 und ist laut Distrowatch
[2] auf dem Weg zur beliebtesten Linux-
Variante im Web. Ob das nur am Cinnamon-Desktop
liegt, der das ungeliebte
Unity-Interface von Ubuntu ersetzt, können
DELUG-Leser hier selbst testen.
E-Book und Videos
Auf derselben Seite der DVD findet sich
auch ein HTML-Menü. Wer mit dem
Browser darauf zugreift, findet hier zahlreiche
exklusive Inhalte: Kostenlos gibt
es das E-Book „Debian Administrators
Handbook“ von Raphaël Hertzog und Roland
Mas. Das Werk vermittelt auf knapp
500 Seiten geballtes Debian-Know-how.
Vorbildlich daran ist auch, dass die Autoren
das Buch mit Hilfe einer Crowd-
Funding-Initiative, bei der fast 25 000
Dollar zusammenkamen, selbst aus dem
Französischen übersetzt haben.
Neben der Software aus den Tooltipps
sowie Owncloud 4 und dem Artikel über
Abbildung 1: Viel aktuelle Software, besseren Support für neue und
ältere Hardware verspricht Knoppix 7.0.2.
sicheres Löschen liegt auf der DVD auch
eine virtuelle Maschine mit einem Demosystem
von Egroupware auf der Basis
von Debian 6.
Linuxtag- und OSMC-Videos
Damit nicht genug, der Datenträger enthält
noch Hunderte Megabyte an Linux-
Videos: zum einen von der sehr gut besuchten
Diskussionsrunde zum Thema
Open Source und Netzpolitik auf dem
Linuxtag mit zwei Bundestagsabgeordneten
und drei Mitgliedern der Enquete-
Kommission, zum anderen vier Videos
von der Open Source System Management
Conference (OSMC) in Bozen über
Monitoring mit Nagios, Systemmanagement
und Cloud Computing. n
Infos
[1] Changelog zu Knoppix 7.0.2: [http://
knopper. net/ knoppix/ knoppix702. html]
[2] Distrowatch: [http:// distrowatch. com]
Software
www.linux-magazin.de Web-Groupware 08/2012
46
Fünf Webgroupware-Tools ohne Outlook
Freier Ausblick
Seine Verbreitung macht Outlook nicht automatisch zum besten Groupware-Client der Welt. Dem begrüßenswerten
Trend zu Webapplikationen folgend, bestehen nämlich für Suites, die lediglich einen Javascript-fähigen
Browser auf dem Endgerät voraussetzen, in Funktionalität und Bedienbarkeit beste Aussichten. Andrej Radonic
deshalb finden sie sich im Web unter so
verschiedenen Titeln wie Collaboration,
Groupware, Projektmanagement oder
Web-Coworking. Bereits in dieser Einordnung
deutet sich an, dass der Admin
schon bei der Auswahl und Evaluation
der Software für den eigenen Server genau
hinschauen sollte.
E Egroupware 1.8
© buffaloboy, 123RF.com
Ein Mangel an guten Alternativen zum
Outlook-Exchange-Einerlei ist wahrlich
nicht zu beklagen [1]. Plattformübergreifendes,
Browser-gestütztes Arbeiten im
Team, transparent vernetzt mit der zunehmenden
Anzahl mobiler Arbeitsnomaden
liegt im Trend – und die Welt der
freien Software bedient die Nachfrage.
Keine Diätkost
Große Enterprise-Lösungen wie Zimbra,
Scalix und Zarafa [2] verlangen häufig
umfassendes Know-how und detaillierte
Planung, vor allem wenn es um die Integration
oder Ablösung des Gespanns
aus Outlook und Exchange geht. Gerade
kleine und mittelgroße Firmen schauen
verstärkt nach schlanken Lösungen, die
durch einfache Installation und wenig
Wartungsaufwand glänzen.
Dass sie dabei nicht automatisch über
weniger Möglichkeiten und Flexibilität
verfügen, beweisen auf diesem Feld
gleich mehrere Kombattanten: Egroupware
und sein Fork Tine 2.0, aber auch
Horde sind seit Langem auf dem Markt,
Simple Groupware und Feng Office noch
etwas jünger. Alle treten an mit umfassenden
Werkzeugen für Projektmanagement,
Gruppenkalender, Webmail und
vielen anderen Features.
Sie kosten nichts, laufen out of the Box
und lassen sich meist schnell an eigene
Bedürfnisse anpassen. In Tabelle 1 hat
das Linux-Magazin eine umfangreiche
Liste der Funktionen der fünf Kandidaten
in einer Übersicht zusammengestellt.
Allen gemeinsam ist ein modulares Konzept,
das PHP-Innenleben, Unterstützung
für gängige Datenbanken, IMAP und
SMTP-Protokoll. Ebenso bringt jeder ein
funktionierendes Berechtigungskonzept
und passende Admin-GUIs mit.
Die Schwerpunkte setzen die Programmpakete
jedoch sehr unterschiedlich. Auch
Das Groupware-Urgestein Egroupware
[3] war stets einer der Pioniere für teamübergreifendes
Arbeiten und Kommunizieren.
Bereits seit 1999 – damals noch
als PHP Groupware – gibt es die Software,
die mit Datenbank-Backends wie MySQL,
Max DB, PostgreSQL sowie Microsofts
SQL-Server arbeitet. Selbst rudimentärer
Oracle-Zugriff ist vorhanden.
Die Kernanwendungen der aktuellen Version
1.8 stellen das zentrale Adressbuch,
den der Terminplanung im Team dienenden
Kalender, einen Webmail-Client,
die Dateiverwaltung (mit Samba/CIFS-
Anbindung) sowie das Projektmanagement
mit Zeiterfassung (Stundenzettel
und Gantt-Darstellung) bereit. Ergänzen
lässt sich das alles durch Aufgabenverwaltung
(Infolog), Wissensdatenbank,
Ressourcenverwaltung, Wiki, Content
Management System (CMS, Sitemgr),
Nachrichten, Workflow-Engine und viele
weitere, teilweise exotische Module.
Egroupware
‚ Großer Funktionsumfang
‚ Gute Integration der Groupwarefunktionen
und zahlreicher Module
„ Veraltete Oberflächen-Technik
„ Schleppende Weiterentwicklung der
Community Edition
Abbildung 1: Die Terminverwaltung von Egroupware ist mit allen Modulen vernetzt. Ob CRM, Projektmanagement
oder Aufgabenverwaltung – immer entsteht ein Termin auch im Kalender der Groupware.
Via POP und IMAP kommuniziert Egroupware
mit einschlägigen Mailservern wie
Cyrus, Courier, UW IMAP, aber auch mit
Exchange. Neben dem Webclient lassen
sich auch gängige Groupwareclients wie
Kontact, Evolution und auch Outlook verwenden,
allerdings mit unterschiedlicher
Tiefe und Qualität der Anbindung.
30 Sprachen
Neben einigen (der langen Geschichte
von Egroupware zu verdankenden) Annehmlichkeiten
wie der in 30 Sprachen
lokalisierten Oberfläche, einer ordentlichen
Dokumentation sowie einer Berechtigungsvergabe,
die sich an Access
Control Lists (ACLs) orientiert, zeichnet
Egroupware vor allem die enge Integration
der Kernanwendungen untereinander
aus: So erlaubt es die Suite beispielsweise,
Termine direkt im Projektmanager
anzulegen, wobei sie die Verabredungen
auch sofort im Kalender anzeigt (Abbildung
1) – eine naheliegende Lösung,
die Anwender aber selbst bei größeren
Enterprise-Lösungen vergeblich suchen.
Analog gilt das auch für die Zeiterfassung,
Notizen und das Zuweisen von
personengebundenen Aufgaben.
Allerdings wirkt die Oberfläche mittlerweile
etwas angestaubt. Ajax sucht der
Anwender vergebens, Popups für Dialoge
bestimmen das Bild, die Konfiguration
erledigt er stets in langen HTML-Formularen
(Abbildung 2).
IMAP, LDAP, Ical, Sync ML
Generell legen die Egroupware-Entwickler
den Schwerpunkt auf das Thema Integration.
Usermanagement und Authentisierung
lassen sich außer mit dem integrierten
Benutzermanager auf SQL-Basis auch
über einen LDAP-Server bewerkstelligen,
Active Directory reicht ebenfalls. Gängige
Schnittstellen wie XML-RPC, SOAP, Webdav
und Ical sind auch an Bord.
Dem mobilen Trend folgend verfügt
Egroup ware zudem über einen Sync-ML-
Synchronisationsserver. Damit lassen
sich Kalender- und Adressdaten unter anderem
mit Microsoft Outlook sowie Evolution
abgleichen und viele Smartphones
mit den Daten versorgen. Alternativ dient
eine Implementierung des Ical-Standards
dazu, den Abgleich von Kalendereinträgen
aus Apple Ical oder Mozilla Lightning/Sunbird
mit dem Groupwareserver
vorzunehmen. Der derzeitige Synchronisationsstandard
Active Sync fehlt der
Community-Ausgabe allerdings noch.
Unter Linux erfolgt die Installation als
RPM- oder Deb-Paket aus den Standardrepositories
oder manuell über ein Tar-
Archiv. Danach gelangen Admins in zwei
Schritten zum lauffähigen System: Nach
Aufruf des Setup-Skripts im Browser
prüft der Installer zunächst die vorhandenen
Komponenten und Einstellungen,
vor allem in der Datei »php.ini«. Dann
legt die Installationsroutine die Datenbanktabellen
an und fragt die Konfigurationsparameter
für Mailserver, LDAP und
andere Anbindungen ab.
Obwohl Entwickler in Egroupware ein
umfassendes Plugin-API finden, über das
sie vorhandene oder neue Applikationen
in die Groupwareplattform nahtlos integrieren
können, sind Community-seitig
dafür bisher eher wenige Plugins entstanden.
Insgesamt erweckt das Projekt den
Eindruck, dass der Fokus der Entwicklung
seit einiger Zeit stark zur kostenpflichtigen
Enterprise-Edition gewandert
ist, die inzwischen einen wesentlich größeren
Funktionsumfang aufweist als die
Community-Variante [4].
E Horde 4.07
Kronolith, Turba, Ansel und Gollem – dies
sind nicht Helden aus einer nordischen
Saga, sondern die Namen zentraler Komponenten,
die den Funktionsumfang des
modularen Horde-Systems ausmachen
[5]. Die auf dem PHP-Framework aufgebaute
Groupwarelösung ist ein weiterer
altgedienter Vertreter der Web-Collaboration-Szene
und erfreut sich nicht nur
eines großen Funktionsumfangs, sondern
auch einer großen Fan- und Entwickler-
Web-Groupware 08/2012
Software
www.linux-magazin.de
47
Abbildung 2: Wie viele Menüs präsentiert sich auch der Konfigurationsdialog von Egroupware eher altbacken.
Horde
‚ Für mobile Geräte optimiertes Web-GUI
‚ Umfassender Synchronisationssupport
‚ Mailverschlüsselung
„ Modulsammlung unübersichtlich
Software
www.linux-magazin.de Web-Groupware 08/2012
48
Gemeinde, was nicht zuletzt an der Vielzahl
modularer Erweiterungen liegt, den
so genannten Apps.
Diese werden, um die Installation zu vereinfachen,
zu verschiedenen Distributionen
gebündelt. Die umfassendste davon
ist die Horde Groupware Webmail Edition
in Version 4 (Abbildung 3). Sie enthält
alle wichtigen Einzelapplikationen wie
Kronolith, Turba und Mnemo und stellt
so eine umfassende Groupwarelösung
mit einem leistungsfähigen Webmailer
(als einziger inklusive Mailverschlüsselung),
Gruppenkalender, Aufgabenverwaltung,
Supportanwendung, Notizen,
Dateiverwaltung bereit.
Hordes Installationsvorgang gehört zu
den aufwändigeren, gelingt aber über ein
PHP-CLI-Skript recht sicher. PHP ab 5.2.0
ist Pflicht, ebenso die PHP-Module Xml,
Domxml sowie Gettext. Die Software
unterstützt eine Vielzahl von Datenbanken
bis hin zu Oracle. Anwender wählen
beim Login aus mehreren Oberflächenva-
Tabelle 1: Fünf Webgroupwares im Vergleich
Egroupware Horde Tine 2.0 Simple Groupware Feng Office
Basis
Version 1.8 4.07 2012-03 (Milan) 0.745 2.0
Varianten
Community,
Enterprise (EPL)
Community
Community,
Appliance
Community Community,
Enterprise (Cloud)
SaaS-Modell ja nein ja nein ja, Feng Sky
Architektur PHP PHP PHP, Ext JS PHP, Ext JS PHP, Ext JS
Clients
Webclient klassisches HTML Ajax Ajax klassisches HTML Ajax
Native Clients nein nein nein nein nein
Mobile Webclients nein ja nein ja nein
Synchronisation Sync ML,
Sync ML, Active Sync Active Sync Sync ML (Funambol), nein
Groupware-Protokolle
Active Sync (EPL)
Webdav, Groupdav,
Caldav, Icalendar, Vcard
Webdav, Groupdav,
Caldav, Icalendar,
Vcard
Webdav, Groupdav,
Caldav, Icalendar,
Vcard
Active Sync
Webdav, Icalendar,
Vcard
Collaboration-Funktionen
Mailprotokolle POP3, IMAP POP3, IMAP POP3, IMAP POP3, IMAP POP3, IMAP
Webmail ja ja ja ja ja
Kalender Gruppen, privat Gruppen, privat Gruppen, privat Gruppen, privat Gruppen, privat
Adressen ja ja ja ja ja
Projekte, Aufgaben ja ja ja ja ja
Zeitverfolgung ja ja ja nein ja
Dokument- und Dateimanagement
ja ja ja ja ja
Messaging und Chat nein nein nein ja nein
Ticketing-System nein ja nein ja nein
Integriertes Forum ja ja nein ja nein
Wiki ja ja nein ja nein
Universelle Suchfunktiodulen
ja
in den meisten Mo-
ja ja ja
Sonstiges
News, Umfragen, Lesezeichen,
CMS
Reports, Lesezeichen
Lesezeichen, FAQ,
RSS, Fotogalerie, Tastaturnavigation
und
vieles mehr
CRM, VoIP,
Egroupware-Migrationstool
CMS, FAQ, Bildergalerie,
Tastaturnavigation,
Sgs ML und
vieles mehr
Integration
Directory-Integration LDAP LDAP LDAP NTLM, LDAP, MS-AD LDAP
Lokalisierung über 30 Sprachen über 40 Sprachen über 15 Sprachen über 27 Sprachen über 25 Sprachen
E-Mail-Sicherheit SSL SSL, S/Mime, PGP SSL SSL/TLS SSL/TLS
Antivirus-Schnittstellspiel
diverse Clam AV nein diverse, zum Bei-
nein
MC-Afee
Antispam diverse Spamassassin nein nein nein
APIs SOAP, XML-RPC SOAP, XML-RPC Json-RPC SOAP, XML-RPC REST/Json
Schnittstellen zu VoIP (Asterisk, Agis), Frontend für Kolab VoIP (Asterisk) - -
Dritt-Applikationen ERP (Project ERP)
Administration
Web-GUI ja ja ja ja ja
CLI nein ja ja ja nein
GUI mit eigenen Feldern
im GUI konfigurierbar im GUI konfigurierbar im Backend möglich im Backend möglich im GUI konfigurierbar
erweiterbar
Backup und Restore ja nein nein nein nein
Skins, Themes ja ja ja ja ja
keine
aber auch Active-Sync-Support für den
Abgleich mit Microsoft-Produkten vorhanden.
Er ist implementiert über die
freie, PHP-basierte Zpush-Schnittstelle
(bekannt von Zarafa, [6]) und gleicht
Adressen, Termine und Aufgaben ab. Active
Sync verfügt darüber hinaus aber
auch über Funktionen fürs Provisioning
und den Remote Wipe mobiler Endgeräte,
was dem Admin im Unternehmen
die Wartung seiner mobilen Herde deutlich
zu erleichtern vermag.
Web-Groupware 08/2012
Software
www.linux-magazin.de
49
E Tine 2.0 (Milan)
Abbildung 3: Horde besteht aus vielen Komponenten, deren Namen an Fabelwesen erinnern, etwa der Mailclient
Imp. Andere Komponenten tragen jedoch beschreibende Namen wie der Terminplaner Kronolith.
rianten, darunter auch einem für mobile
Geräte optimierten GUI (Abbildung 4).
Ajax-Web-GUI
Das Standard-GUI ist Ajax-getrieben
und bietet Drag & Drop, zum Beispiel
für Kalendereinträge. Eine kontextsensitive
Toolbar blendet alle zum gewählten
Modul gehörigen Werkzeuge ein,
beispielsweise den Import oder Export
der Adressbuchdaten. Die meisten Apps
sind sinnvoll miteinander verbunden, so
haben die Entwickler Aufgaben und Tickets
im Kalender integriert, terminierte
Aufgaben sowie offene Tickets listet er
automatisch auf.
Die modulare und flexible Natur der Software
zeigt sich vor allem in der Option,
Horde als Webfrontend für den Kolab-
Groupwareserver einzusetzen, wo Horde
alle Funktionen unterstützt. Das Webframework
ist einer der drei Referenzclients
für den vom BSI unterstützten
freien Groupwareserver, neben Outlook
und dem KDE-Programm Kontact mit seinen
Akonadi-Tools.
Horde ist insgesamt sehr offen gestaltet
und bietet sich als Backend für eine Reihe
externer Clients an. Zum einen unterstützt
es praktisch alle gängigen Groupwareschnittstellen
wie Webdav und
Caldav, mit denen sich Programme wie
Thunderbird andocken. Zum anderen
bietet das integrierte Sync-ML-Protokoll
automatisierten Abgleich mit älteren mobilen
Geräten.
Wer Outlook und Blackberry-Geräte synchronisieren
will, muss jedoch zusätzlich
einen Funambol-Server installieren
und konfigurieren. Zusätzlich dazu ist
Tine 2.0 ist eines der jüngeren Groupwareprojekte
und fällt dementsprechend
angenehm durch seine moderne, Ajaxgetriebene
Oberfläche auf. Die soll auch
den Anspruch der Entwickler unterstreichen,
Tine besonders benutzerfreundlich
zu gestalten.
Ursprünglich als Teil von Egroupware
entstanden – der Name ist ein Akronym
aus This Is Not Egroupware 2.0 – mauserte
sich Tine 2.0 zu einem modernen
und gefälligen Tool für Web-basiertes
Arbeiten in Gruppen und hat sich dabei
in besonderer Weise dem Thema Customer
Relationship Management (CRM)
verschrieben [7].
Das Entwicklerteam, das im Wesentlichen
der deutschen Firma Metaways
angehört, legt Wert auf professionelle
und kontinuierliche Entwicklung. Dementsprechend
veröffentlicht das Projekt
mehrmals im Jahr neue Versionen, in
denen Anwender eine aufgeräumte,
übersichtliche und sehr einfach zu bedienende
Oberfläche vorfinden. Allerdings
reagiert diese manchmal auf Klicks etwas
zäh, und recht viele Dialoge öffnen sich
Abbildung 4: Optional bringt Horde auch einen
mobilen Webclient mit, hier auf dem iPhone.
Abbildung 5: Das Tine-2.0-Adressbuch überzeugt durch einfache Bedienung.
Software
www.linux-magazin.de Web-Groupware 08/2012
50
Abbildung 6: Wie sein Vorgänger Egroupware hat auch Tine 2.0 einen klaren Schwerpunkt in dem für Vertrieb
und Marketing wichtigen umfangreichen Customer-Relationship-Modul.
als Popups, was zuweilen lästig ist. Das
GUI beherrscht Drag & Drop und ordnet
die Funktionsmodule übersichtlich auf
Reitern an (Abbildung 5).
Im Kern umfasst Tine 2.0 einen IMAP-
Webmail-Client, eine Aufgabenverwaltung,
eine Zeitverfassung und ein Adressbuch.
Die aktuelle Version bringt zudem
den lang erwarteten Filemanager mit,
der eine zentrale Dateiablage mit direkter
Verknüpfung in die entsprechenden
Tine-Module bereitstellt.
Vor allem die Aufgaben und die Adressen
sind eng mit dem CRM-Modul verzahnt
(Abbildung 6), das die Verwaltung und
Wiedervorlage von Leads erlaubt. Leider
haben sich die Entwickler bei der Konzeption
der Datenstrukturen hier einen
ärgerlichen Patzer erlaubt: Das Adressensystem
unterscheidet nicht zwischen
Adressen und Kontakten oder Ansprechpartnern,
was Anwender dazu zwingt,
Firmenadressen redundant (für jeden
Kontaktperson) anzulegen.
Ansonsten ermöglicht Tine 2.0 flottes Arbeiten,
bietet eine übergreifende Suche,
deren Ergebnisse sich als persönliche Favoriten
ablegen lassen. Administratoren
haben wenig Arbeit mit der Groupware:
Die Installation der PHP-basierten Software
(Zend Framework und Ext JS) ist
schnell erledigt, die Basis-Konfiguration
erfolgt über ein spartanisches GUI. Updates
sind per Skript durchzuführen.
Mobile Daten mit Sync ML
und Active Sync
Ein Highlight für mobile Anwender dürften
die Synchronisationsfähigkeiten mit
Smartphones aller Couleur darstellen, die
Tine 2.0 seiner Active-Sync-Schnittstelle
verdankt, die den Groupwareserver nach
außen als Microsoft-System erscheinen
lässt. Anwender, die eher auf Desktop-
Programme wie Thunderbird, Apple Ical
oder I-OS-Systeme setzen, können auch
per Caldav- und Carddav-Protokoll auf
ihre Daten zugreifen.
Unter der Haube finden sich für findige
Administratoren weitreichende Anpassungs-
und Erweiterungsmöglichkeiten,
sei es bei der Erstellung von individuel-
len Themes, Export- oder Importprofilen
oder bei der Integration mit nahezu beliebigen
Anwendungen über das bereitgestellte
Json-RPC-API oder über Groupdav-
Schnittstellen. Der Community-Support
über das Forum funktioniert dem Vernehmen
nach sehr gut und schnell.
E Simple Groupware 0.745
Auch jenseits der ausgetretenen Web-Collaboration-Pfade
findet sich so manches
nützliche und leistungsfähige Kleinod:
Simple Groupware [8] aus der Feder des
deutschen Entwicklers Thomas Bley ist
so eine Software. Es kommt daher als
sehr umfassende, in PHP geschriebene
Groupwarelösung, die neben den Standards
wie Mailclient, Kalender (Abbildung
7) Aufgaben, Notizen und Dateiverwaltung
eine Fülle weiterer Programme
wie CMS, Wiki, Chat, Forum und Lesezeichen
mitbringt.
Der Entwickler setzt dabei konsequent
auf Quellcode-Freiheit und verzichtet auf
kostenpflichtige Modelle. Dabei zeichnet
sich die Lösung vor allem durch viel
Liebe zum Detail aus. So ist das Dokumentmodul
nicht nur eine schnöde Dateiverwaltung
zum Ablegen von Files,
sondern verfügt auch über einen integrierten
Viewer, der eine Vielzahl von
Dokumentformaten bis hin zu Microsoft
Office interpretiert.
Der Philosophie zugrunde liegt ein hierarchisches
Konzept, das sich zunächst im
Explorer-artigen Baum spiegelt, in dem
alle für den Anwender verfügbaren und
Tine 2.0
‚ Moderne Oberfläche
‚ Umfassendes Modul fürs Customer Relationship
Management
‚ Synchronisationsfunktionen
‚ Kontinuierliche Weiterentwicklung
„ Fehlende Hierarchie in Adressdaten
„ Kein mobiler Webclient
Abbildung 7: Viel Liebe zum Detail haben die Entwickler in Simple Groupware gesteckt. Selbst beim Anlegen
eines Termins im Kalender verliert der Anwender nie den omnipräsenten Verzeichnisbaum aus den Augen.
opensourcepress.de
BÜCHER
Neuauflage
Neuauflage
ISBN 978-3-941841-67-3 mit CD
248 Seiten · brosch. · 24,90 [D]
ISBN 978-3-941841-25-3
736 Seiten · brosch. · 49,90 [D]
Abbildung 8: Simple Groupware ist auf Massenverwaltung ausgelegt. Viele Datensätze lassen sich in einem
Anlauf bearbeiten. Dank der eigenen Programmiersprache Sgs ML gelingt das sehr einfach.
freigeschalteten Applikationen verlinkt
sind. Module lassen sich zu beliebigen
Ordnern in dieser Struktur hinzufügen,
der Baum kann die Organisationsstruktur
eines Unternehmens wiedergeben.
Eingebaut: Explorer und die
Skriptsprache Sgs ML
Auch Berechtigungen lassen sich darauf
abbilden, und jeder Anwender kann sich
seine eigene Ordnerstruktur anlegen, individuelle
Übersichtsseiten erstellen und
öffentliche mit persönlichen Ordnern
verbinden. Eine übergreifende Suche im
Volltext und mit phonetischem Abgleich
gewährt gezielten Zugriff auf alle relevanten
Inhalte im System, inklusive der
hinterlegten Dokumente.
Diese auf Organisationen und Unternehmen
ausgerichtete Philosophie
manifestiert sich unter einer Oberfläche,
die aber zumindest anfangs etwas
gewöhnungsbedürftig ist. Im Gegensatz
zu anderen Group warelösungen erschließen
sich die grundlegenden Anwendungskonzepte
nicht intuitiv, sondern erst nach
ein wenig Einarbeiten.
Auch die Gestaltung der anpassbaren
Oberfläche trägt zu dem Eindruck bei,
dass die Form der Funktion folgt. Dafür
geht das Arbeiten sehr schnell, alle Seiten
laden äußerst flott und ohne Verzug. Die
Ausrichtung auf Effizienz zeigt sich in
Funktionen wie der Massenpflege, mit
DELUG-DVD
Auf der DELUG-DVD dieses
DELUG-DVD
Magazins finden Sie eine virtuelle Maschine
mit einem Debian-Linux und installiertem
Egroupware-Server inklusive Webclient.
der sich viele Datensätze in einem Rutsch
editieren lassen (Abbildung 8).
Auch die Installation haben die Entwickler
sehr effizient gelöst. Der Administrator
lädt lediglich das Installationsskript,
entpackt es im Document Root seines
Webservers und ruft im Browser die URL
»sgs_installer.php« auf. Dies startet den
Installationsassistenten, der den benötigten
Sourcecode herunterlädt und die Bestandteile
der Applikation installiert. Als
Datenbank verlangt Simple Groupware
MySQL, PostgreSQL oder SQlite.
Neben dem üblichen LDAP für die Authentisierung
und Userverwaltung darf
sich Simple Groupware auch auf Microsofts
Active Directory stützen und
sogar NTLM verwenden. Durch umfassende
Schnittstellen erreichen auch externe
Clients auf Desktops und Smartphones
die Groupwaredaten: Neben den
gewohnten Groupdav-Protokollen steht
Sync ML als Synchronisationsmechanismus
zur Verfügung, mit dem SOAP-API
können Programmierer Drittapplikationen
und Clients integrieren. Ein Plugin-
API ermöglicht es der Community, eigene
Module beizusteuern.
Simple Groupware ermöglicht es auch
Nicht-Programmierern, zum Beispiel ver-
Simple Groupware
‚ Großer Funktionsumfang
‚ Flexibilität durch hierarchische Struktur
und Kategorien-System
‚ Für mobile Geräte optimierte Oberfläche
‚ Sehr kontinuierliche Pflege und Weiterentwicklung
‚ Eigene simple Skriptsprache Sgs ML
„ Oberfläche gewöhnungsbedürftig
„ Kein Drag & Drop für Termine
Neu
ISBN 978-3-941841-41-3 mit DVD
447 Seiten · brosch. · 44,90 [D]
opensourceschool.de
TRAINING
Programmierung
ISBN 978-3-941841-45-1
551 Seiten · brosch. · 44,90 [D]
20. – 22.08. Qt für Einsteiger
20. – 22.08. Git
03. – 04.09. C++: STL und Boost
03. – 05.09. SCJP/OCP Java 6 Programmer
03. – 05.09. iPhone & iPad Entwicklung
06. – 08.08. TYPO3 für Webdesigner
08. – 10.08. ExtJS
27. – 28.08. jQuery
03. – 05.09. HTML5
06. – 07.09. CSS3
Webentwicklung
Administration
06. – 10.08. Vorbereitung auf LPIC-1
13. – 15.08. Bacula Grundlagen
27. – 29.08. Administration von OTRS
27. – 31.08. Virtualisierung mit Xen
03. – 04.09. TCP/IP-Analyse mit Wireshark
weitere Themen und Termine:
opensourceschool.de/kurstermine
Software
www.linux-magazin.de Web-Groupware 08/2012
52
sierten Administratoren, eigene Module
und Views zu erstellen. Dazu dient die
integrierte XML-Auszeichnungs-Sprache
Sgs ML (Simple Groupware Solutions
Markup Language). Über bloße Deklarationen
in Form von XML-Dateien können
Simple-Groupware-Verwalter damit Komponenten
erstellen.
Listing 1 zeigt ein simples Modul namens
»myaddresses.xml«, das eine neue View
auf die Kontakte bietet, mit der Option,
Adressen hinzuzufügen oder bestehende
Adressen zu löschen. Hat es der Admin
unter »src/modules/schema/myaddresses.xml«
abgelegt, steht es sofort in Simple
Groupware zur Verfügung.
E Feng Office 2.0
Feng Office (ehemals Opengoo) ist ein
weiterer Vertreter der jungen Generation
von Webgroupware-Lösungen [9]. Dies
manifestiert sich sichtbar in der modernen,
dank konsequentem Ajax-Einsatz
zumeist sehr intuitiv reagierenden und
ansprechend gestalteten Oberfläche.
Feng Office erweist sich als die einzige
Software im Vergleich, die konsequent
modale Dialoge implementiert und es
schafft, diese zum Nutzen des Anwenders
einzusetzen.
Bei Feng Office sind alle Komponenten
miteinander verzahnt – von dem sehr
einfachen Mailclient, über Termine, Aufgaben,
Dokumente und Kontakte bis hin
zur Zeiterfassung. Jeder Eintrag in einem
dieser Module lässt sich wie ein eigenes
Objekt behandeln – und entsprechend
mit anderen verknüpfen, einem Kontakt
zuordnen oder in einem der Workspaces
kategorisieren.
Listing 1: »myaddresses.xml«
01
02
03
04
05
06
07
Abbildung 9: Eine Aufgabe in Feng Office mit Beschreibung, Zuständigkeiten und Kommentaren.
Auf diesem Wege bietet sich Feng Office
auf fast natürliche Weise zur Abbildung
von Workflows an: Aufgabe erstellen, einem
Kontakt zuordnen, Dokumente und
Notizen verknüpfen – dies geschieht in
einem Rutsch. Jedem Objekt können die
Nutzer Kommentare hinzufügen, wobei
alle Anwender, die das Objekt abonniert
haben, eine Benachrichtigung per Mail
erhalten und so über alle Geschehnisse
auf dem Laufenden bleiben, zum Beispiel
bei Aufgaben (Abbildung 9).
Versionskontrolle und
Wysiwyg-Editor
Dokumente lassen sich hochladen, der
Server versioniert sie dabei – sofern gewünscht
– auf eine gut handhabbare
Weise (Abbildung 10). HTML-Dokumente
können Anwender mittels Wysiwyg-Editor
direkt inline anlegen und editieren.
Ein Reportingtool erlaubt es, interaktiv
eigene Berichte zu definieren, um beispielsweise
eine Übersicht offener Aufgaben,
die Entwicklung von Meilensteinen,
oder für die Abrechnung von Leistungen
zu generieren.
Während Feng Office für sich genommen
einiges an Glanz verbreitet, gebärdet es
Feng Office
‚ Hohe Produktivität durch durchdachtes
Konzept und effektive Oberfläche
‚ Flexible Anwendungsmöglichkeiten
„ Kein mobiler Webclient
„ Keine Synchronisation
„ Plugin-Schnittstelle unausgereift
„ API noch in Entwicklung, daher individuelle
Anpassungen noch schwierig
„ Kalender und Mailclient mit spärlichem
Funktionsumfang
sich zugleich als Insel, bei der Konnektivität
sieht es derzeit mau aus: Es gibt keine
Synchronisation für Mobilgeräte, selbst
der Webzugriff von Smartphones scheitert
an der fehlenden Optimierung des
Web-GUI für solche Clients. Das Fehlen
verbreiteter Groupware-Standardschnittstellen
wie Webdav, Ical oder Vcard verschlimmert
diese Situation noch. Erst mit
der soeben erschienenen Version 2.0 wird
ernsthaft an einem REST-API gearbeitet
und das unausgereifte Plugin-System auf
neue Beine gestellt.
Auf Outlook verzichten
muss kein Verlust sein
Mit den vorgestellten Tools ist Webbasiertes
Arbeiten in der Gruppe auch
ohne einen fetten Client wie Outlook
bestens möglich. Auf den ersten Blick
scheinen sich die freien Webgroupware-
Suiten dabei sehr ähnlich zu sein. In
den Einzelheiten offenbaren sich jedoch
beträchtliche Unterschiede beim Funktionsumfang,
dem Schwerpunkt oder der
Systemphilosophie.
Hier ist es gut, seine eigenen Anforderungen
zu kennen und sie mit den Lösungen
abzugleichen. Die meisten Projekte bieten
dafür freundlicherweise Online-Demos
Der Autor
Andrej Radonic ist IT-Journalist
und außerdem als
Vorstand der Intersales AG
in Köln tätig sowie Autor
des Buches „Xen 3.2“. Seine
Spezialgebiete sind die
Virtualisierung, Open-Source-Unternehmenslösungen
sowie der Bereich E-Commerce.
und die Möglichkeit, eigene Anpassungen
vorzunehmen. Egroupware glänzt mit einem
besonderes breiten Modulangebot,
eignet sich aber nur für Anwender ohne
besondere Ansprüche an Oberfläche und
Konnektivität. (mfe)
n
Web-Groupware 08/2012
Software
Abbildung 10: Die eingebaute Dokumentverwaltung in Feng Office kommt bereits mit Versionskontrolle und
einem einfachen Editor für HTML-Dateien.
an, sodass sich Admins und Anwender
teilweise sogar die Testinstallation sparen
können.
Feng Office bietet sich für Projekt- und
Aufgabenverwaltung im weitesten Sinne
an, auch wenn externe Personenkreise,
etwa Kunden oder Lieferanten, anzubinden
sind. Tine 2.0 legt den Schwerpunkt
aufs CRM und glänzt durch die Synchronisation
mit Smartphones. Horde und
Simple Groupware liegen vorn, wenn es
um den schieren Funktionsumfang geht
Infos
[1] Überblick Groupware-Software bei Wikipedia:
[http:// en. wikipedia. org/ wiki/
List_of_collaborative_software]
[2] Dirk Ahrnke, „Gut geplant“: Linux-Magazin
09/11, S. 68
[3] Egroupware: [http:// www. egroupware. org]
[4] Egroupware Community Edition: [http://
www. egroupware. org/ community_edition]
[5] Horde: [http:// www. horde. org]
[6] Zpush: [http:// z‐push. sourceforge. net]
[7] Tine 2.0: [http:// www. tine20. org]
[8] Simple Groupware:
[http:// www. simple‐groupware. de]
[9] Feng Office Suite:
[http:// www. fengoffice. com]
www.linux-magazin.de
53
MAGAZIN
SondErAkTion
Testen Sie jetzt
3 Ausgaben
für 3 Euro!
nUr
MiT dVd!
Coupon senden an: Linux-Magazin Leser-Service A.B.O.
Postfach 1165, 74001 Heilbronn
JA,
ich möchte die nächsten 3 Linux-Magazin-Ausgaben für nur E 3*, statt
E 17,40*, testen. Wenn mich das Linux-Magazin überzeugt und ich 14 Tage
nach Erhalt der dritten Ausgabe nicht schriftlich abbestelle, erhalte ich das Linux-Magazin jeden
Monat zum Vorzugspreis von nur E 5,13* statt E 5,80* im Einzelverkauf, bei jährlicher Verrechnung.
Ich gehe keine langfristige Verpflichtung ein. Möchte ich das Linux-Magazin nicht mehr beziehen,
kann ich jederzeit schriftlich kündigen. Mit der Geld-zurück-Garantie für bereits bezahlte,
aber nicht gelieferte Ausgaben.
Name, Vorname
Straße, Nr.
PLZ
Ort
Datum
Unterschrift
Gleich bestellen, am besten mit dem Coupon
oder per
• Telefon: 07131 / 2707 274 • Fax 07131 / 2707 78 601
• E-Mail: abo@linux-magazin.de
Mit großem Gewinnspiel (Infos unter: www.linux-magazin.de/probeabo)
*Preis gilt für Deutschland
Mein Zahlungswunsch: Bequem per Bankeinzug Gegen Rechnung
BLZ
Konto-Nr.
Bank
Beliefern Sie mich bitte ab der Ausgabe Nr.
LM1124M
Software
www.linux-magazin.de Tooltipps 08/2012
54
Werkzeuge im Kurztest
Tooltipps
Swet 1.5.16
Systemgeschwindigkeit auf Herz und Nieren
prüfen
Quelle: [http:// swet. sourceforge. net]
Lizenz: GPLv3
Alternativen: keine
Aletheia 0.0.9 Beta
Webseiten nach fehlerhaftem Code durchsuchen
Quelle: [http:// aletheia. k42b3. com]
Lizenz: GPLv3
Alternativen: Modify Header, Yawet
Monit 5.4
Schlanke Monitoringlösung
Quelle: [http:// mmonit. com/ monit]
Lizenz: GPlv3
Alternativen: Atop, Filemonitor
Sustained Workload and Efficiency Test,
so der volle Name dieses praktischen Helfers,
ist ein Benchmarktool, das Prozessoren
und Arbeitsspeicher unter Last setzt
und die Ergebnisse in mehreren Formaten
anschaulich aufbereitet.
Der Anwender legt vor dem Start fest,
wie oft die Tests durchlaufen und wie
viele davon als eigene Prozesse oder eigene
Threads gelten. Swet unterscheidet
zwischen den vier Szenarien Basic,
Quick, Slow und Whole. Nach getaner
Arbeit zeigt Swet an, welche Tests es
auf welchen Komponenten abgearbeitet
hat (»loop++«, »fill«, »switch«), welche
Datentypen zum Einsatz kamen (»int«,
»long«, »double« und so weiter) und wie
lange alles gedauert hat.
Die Ergebnisse präsentiert Swet in mehreren
Ausgabeformaten, darunter HTML
und CSV. Die Auswertung muss der Benutzer
danach aber selbst vornehmen.
Hierzu empfiehlt es sich, das Tool auf
mehreren Systemen mit unterschiedlichen
Konfigurationen zu nutzen und die Ergebnisse
miteinander zu vergleichen.
★★★★★ Swet nimmt die Leistungsfähigkeit
der CPU und des Arbeitsspeichers
unter die Lupe. Dazu bietet das Tool eine
Reihe von Optionen und besticht dabei
vor allem durch seine gut formatierte
Ausgabe,
n
Das Java-Programm Aletheia unterstützt
Webentwickler bei der Fehlersuche und
beim Aufdecken von Sicherheitslücken.
Dazu sendet es einen einfachen HTTP-
Request an die angegebene Adresse und
zeigt den vom Webserver zurückgelieferten
HTML-Code an. Voraussetzung
für den Test ist ein uneingeschränkter
Internetzugang, da Aletheia Proxys nicht
unterstützt.
In der Voreinstellung verwendet das Tool
Lynx als Browserkennung. Über die Filtereinstellungen
im Requestbereich kann
der Anwender jedoch auch andere Identifikationen
festlegen. Außerdem ist hier
der richtige Ort, um Benutzername und
Kennwort für Webseiten einzutragen, die
eine Authentifizierung erfordern.
Aletheia kann mehrere Requests parallel
absetzen. Wer ein Webformular prüfen
möchte, der kann mit dem HTML-
Formularparser die Formularfelder mit
Standardwerten ausfüllen. Ein Linkparser
listet auf Wunsch alle Verweise auf einer
Webseite auf.
★★★★★ Aletheia schickt ohne großen
Installations- und Konfigurationsaufwand
einfach HTTP-Requests an Webserver
und hilft so bei der Fehlersuche. Dank
Formular- und Linkparser untersuchen
Benutzer auch größere Sites. n
Monit ist eine Monitoringlösung für alle,
die auf einen Boliden wie Nagios verzichten
können, aber mehr Funktionalität als
bei Atop oder Filemonitor wünschen. Das
Tool überwacht die Systemressourcen
oder einzelne ausgewählte Dienste.
Der Anwender steuert es entweder mit
Kommandozeilen-Parametern oder über
eine Weboberfläche. Monit ist netzwerkfähig
und kann die Verfügbarkeit von
Diensten auf entfernten Systemen prüfen.
Welche Bereiche Monit beaufsichtigt, legt
der Anwender in der Datei »~/.monitrc«
fest. Für jeden Dienst gibt er an, was das
Tool überwachen soll, welche Schwellenwerte
existieren und wie es reagiert,
wenn ein solcher erreicht wird.
Das Tool kennt drei Betriebsarten. Im
Aktivmodus (Standardeinstellung) observiert
es einen vorgegebenen Dienst,
alarmiert per Mail im Problemfall und
führt dann eine definierte Aktion aus.
Im passiven Modus hingegen benachrichtigt
Monit nur. Der manuelle Modus
schließlich ist für Cluster gedacht und
überwacht Dienste nur dann, wenn sie
mit Monit gestartet wurden.
★★★★★ Monit beaufsichtigt Systeme zuverlässig
auf der Shell oder per Browser.
Das schlanke Tool füllt damit eine Lücke
zwischen großen Monitoringlösungen
und kleinen Kommandozeilentools. n
Fish 0.3
Synchronisationslösung für viele Systeme
Quelle: [http:// fishsync. sourceforge. net]
Lizenz: GPLv2
Alternativen: Rsync, Super Flexible File Synchronizer
Mu 0.9.8.4
Maildir-Verzeichnisse effizient verwalten
Quelle: [http:// www. djcbsoftware. nl/ code/
mu]
Lizenz: GPLv3
Alternativen: Mairix, Recoll
Raider 0.13.1
Software-Raids automatisch konvertieren
Quelle: [http:// raider. sourceforge. net]
Lizenz: GPLv2
Alternativen: Mdadm
Tooltipps 08/2012
Software
www.linux-magazin.de
55
Fish gleicht Dateien und Ordner auf
mehreren Systemen miteinander ab.
Das Tool besteht aus dem Dienst »fish«,
der die Synchronisationsprozesse steuert,
und einer einfachen Qt-4-basierten
Oberfläche. Im Hintergrund werkeln Programme
wie Open SSH, Rsync und SSH-
FS. Diese müssen auf jedem angeschlossenen
Rechner installiert sein, während
Fish nur auf dem System erforderlich ist,
das die Synchronisation steuert.
Vor dem ersten Einsatz verteilt der Benutzer
auf allen Systemen die SSH-Hostkeys.
Sich einmalig per SSH anzumelden genügt
dazu vollauf. Außerdem erzeugen Nutzer
noch einen privaten SSH-Schlüssel. Nach
dem Start zeigen zwei Fortschrittsbalken
im Hauptfenster den aktuellen Status an.
Vor dem Abgleich richten Anwender die
angeschlossenen Rechner ein. Neben einem
Hostnamen oder einer IP erwartet
das Tool die Logindaten und eine Liste
der abzugleichenden Dateien und Verzeichnisse.
Die allgemeine Konfiguration zeigt alle
Pfade zu den externen Helfertools an.
Hier definieren Nutzer auch das Synchronisationsintervall,
das in der Voreinstellung
bei 60 Minuten liegt. Sämtliche Einstellungen
und Protokolle speichert das
Programm im versteckten Verzeichnis
»~/.fish« der Benutzer. Fish bewältigt
keine Synchronisationskonflikte. Da das
Tool auf Rsync zurückgreift, muss der
Anwender auf dessen Standardfunktionen
vertrauen.
★★★★★ Fish bietet eine intuitive Oberfläche,
um die Synchronisation zwischen
mehreren Systemen zu verwalten. n
Mu findet und verwaltet elektronische
Post in Maildir-Verzeichnissen, das
schnelle Wiederfinden steht dabei klar im
Vordergrund. Zusätzlich kann das Konsolenprogramm
aber auch Mailanhänge
entpacken, neue Maildir-Verzeichnisse
anlegen oder den Inhalt der Nachrichten
anzeigen.
Vor dem Einsatz erzeugen Benutzer mit
»mu index« einen Index der Nachrichten;
es empfiehlt sich, diesen regelmäßig
zu aktualisieren. Er landet als Xapian-
Datenbank im Verzeichnis »~/.mu« der
Anwender. Dort speichert das Tool auch
seine Logdateien. Eine eigene Konfigurationsdatei
besitzt es nicht, Benutzer
steuern es ausschließlich über Kommandozeilen-Parameter
beim Aufruf.
Neben dem erwähnten Befehl »index«
kennt Mu weitere so genannte Subcommands,
etwa »find« und »cfind«, die bei
jedem Aufruf auf die Indexdatenbank
zugreifen. Anders »mkdir«, »view« und
»extract«, die mit den Mails direkt arbeiten
und daher theoretisch auch mit
Nachrichten umgehen können, die nicht
im Maildir-Verzeichnis liegen.
Für alle Subcommands existieren eigene
Manpages, welche die Anwender über
»mu‐Subcommand« finden. Die Hilfeseiten
verraten, welche Parameter und Optionen
für das jeweilige Kommando zur
Verfügung stehen, und liefern detaillierte
Beispiele. Wer nach einer allgemeine Einführung
sucht, wird in der Manpage zu
»mu‐easy« fündig.
★★★★★ Mu ist ein praktischer Helfer
für alle Anwender, die ihre Post in Maildir-Verzeichnissen
aufbewahren und mit
einem flotten Kommandozeilentool anstelle
eines Mailclients die Nachrichten
verwalten möchten.
n
Wer hat beim Kauf einer zweiten Festplatte
nicht schon mal mit dem Gedanken
gespielt, ein Software-Raid aufzubauen?
Ein bestehendes System mit einer Platte
entsprechend umzuwandeln, ist zwar
möglich, aber nicht unbedingt trivial.
Raider tritt an, um Benutzern diese Arbeit
zu erleichtern.
Dabei erfindet das Bash-Skript das Rad
nicht neu, sondern greift auf bewährte
Konsolenprogramme wie Mdadm, Parted,
Sfdisk, Hdparm und Rsync zurück.
Eine Liste aller Abhängigkeiten verrät die
Readme-Datei. Hier erfahren Anwender
zudem, welche Dateisysteme und Raid-
Level Raider unterstützt. Verschlüsselte
Dateisysteme bleiben außen vor.
Vor der Konvertierung sollten sich Anwender
mit dem Parameter »‐d« einen
Überblick über die verfügbaren Platten
und Partitionen verschaffen. Danach
rufen sie Raider mit dem gewünschten
Raid-Level und dem Namen der neuen
Festplatte auf. Bei höheren Raid-Leveln
sind mehrere Platten möglich. Wer auf
Nummer sicher gehen möchte, der startet
mit »‐t« einen Testlauf. Um eine Platte
aus einem Verbund herauszulösen, setzen
Benutzer »‐e« ein.
Eine Datensicherung ist Pflicht vor dem
Einsatz des Konvertierungstools. Ebenso
empfiehlt sich eine gründliche Lektüre
der Dokumentation. Sie enthält eine verständliche
Schritt-für-Schritt-Anleitung,
eine Liste aller unterstützten Distributionen
sowie einige Tipps für den Fall, dass
etwas schiefgeht.
★★★★★ Raider erleichtert die Umwandlung
eines Einzelplattensystems in einen
Raid-Verbund. Das Tool nutzt bewährte
Werkzeuge und bietet eine gute Anleitung.
(U. Vollbracht/hej)
n
Software
www.linux-magazin.de Bitparade 08/2012
56
Vier Tools zum Klonen von Festplatten
Die Dolly-Macher
Die Festplatte gibt schlechte SMART-Werte oder seltsame Geräusche von sich? Es stehen größere Hardware-
Umbauten an? Dann ist es Zeit, die Platte(n) zu klonen. Vier Tools helfen Linux-Anwendern und Systemadministratoren
dabei, ihre Daten umzuziehen und Eins-zu-eins-Kopien zu erstellen. Mela Eckenfels
© sandrobrezger, photocase.com
Egal ob Otto Normaluser Bastelarbeiten
zu Hause plant oder ein Linux-Admin
eine Serverfarm mit identischen virtualisierten
Installationen aus dem Boden
stampfen muss – früher oder später stehen
beide vor der Herausforderung, Festplatten
zu spiegeln. Wer »dd« mit Respekt
begegnet, beweist gesunden Menschenverstand.
Das Tool steht zwar allseits bereit,
aber eine Unachtsamkeit genügt, um
irreparablen Schaden anzurichten. Wer
dann keine guten Backups hat, der weint
seinen Daten hinterher, während er das
System neu aufsetzt.
Das muss nicht sein, denn es gibt Lösungen
mit Halteseil und Fangnetz. Zuverlässige
Hilfe beim Klonen versprechen die
beiden Live-CDs Clonezilla [1] und Ping
[2]. Alternativ installieren Anwender
Mondo Rescue [3] oder den kommerziellen
Konkurrenten Storix System Backup
Administrator [4].
Auf dem Prüfstand stehen Benutzerfreundlichkeit
und das Angebot an unterstützten
Dateisystemen. Die Kandidaten
mussten auch zeigen, ob sie Images für
virtuelle Maschinen erstellen können und
ob ein Multiboot-System nach dem Klonen
noch alle Betriebssysteme startet.
E Clonezilla
Der erste Testkandidat ist unter der
GPLv2 veröffentlicht und kommt gleich
im Doppelpack. Anwender dürfen zwischen
einer Debian- und einer Ubuntu-
Variante auswählen. Im Downloadbereich
auf der Projektseite stehen jeweils
Stable- und Testing-Images für verschiedene
Architekturen zur Verfügung. Ent-
scheidungshilfe bietet die FAQ [5]. Im
Test trat Version 2.1.12-37 in der Ubuntu-
Ausführung an. Das 118 MByte große
Image basiert auf Oneiric Ocelot; nach
Redaktionsschluss erschien eine neue
Fassung mit Precise Pangolin.
Zum schnellen Einstieg bieten die Clonezilla-Macher
eine Referenzkarte unter [6]
an, die Schritt für Schritt durch die wichtigen
Funktionen führt. Unter der Haube
arbeiten bewährte Tools wie Partclone
[7], Partimage [8], »dd« und »ntfsclone«
aus dem Paket Ntfsprogs.
Clone zilla kennt die Dateisysteme Ext 2,
Ext 3, Ext 4, Reiser-FS, Reiser 4, XFS und
JFS sowie FAT, NTFS, HFS+ (Mac OS
X) und UFS (Free/Net/Open BSD). Stößt
das Kloningtool auf ein unbekanntes
Filesystem, kopiert es dieses blockweise
mit »dd«. LVM beherrscht das Programm
erst ab Version 2, und mit Software- und
Fake-/Host-Raids (also Raids, deren Rechenleistung
von der Haupt-CPU statt
vom Controller geleistet wird) kommt es
gar nicht klar.
Nach dem Booten der Live-CD darf der
Anwender die Sprache und die Tastaturbelegung
auswählen – das ist angenehm,
gestattet es doch das Arbeiten mit deutschem
Layout. Danach steht die Entscheidung
zwischen den beiden Optionen »device‐image«
und »device‐device« (siehe
Abbildung 1). Gilt es, eine Maschine auf
eine andere zu spiegeln, oder soll der
Klon einen Snapshot des aktuellen Zustands
speichern, ist Ersteres die richtige
Wahl. Steht indes ein Umzug auf eine
größere Festplatte an, ist »device‐device«
das Mittel zum Zweck.
Die Tester entschieden sich für »device‐image«
und wählten dann den Speicherort
für das Abbild aus. Clone zilla
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
Anwender »device‐image« aus. Dagegen ist »devive‐device« das Mittel der Wahl, wenn ein Umzug auf eine
größere Festplatte ansteht.
interne und externe Platten sowie USB-
Sticks an, arbeitet aber auch mit Datenspeichern
zusammen, die über das Netzwerk
erreichbar sind. Dazu unterstützt
das Programm SSH, Samba und NFS. Die
Netzwerkkonfiguration verlangt jedoch
ein angeschlossenes Ethernet-Kabel oder
eine händische Konfiguration der WLAN-
Karte mit »iwconfig« & Co.
Letzteres ist nur ratsam, wenn es die
Umstände gar nicht anders erlauben. Das
Klonen einer gut gefüllten Festplatte auf
dem 250 GByte großen Dualboot-Testsystem
benötigte schon mit einem lokal angeschlossenen
Gerät rund acht Stunden.
Das gleiche Setup über das Netzwerk
zu spiegeln, hätte der zuverlässigen Anzeige
nach mehrere Tage in Anspruch
genommen.
Nachdem der Anwender das Speicherziel
festgelegt hat, darf er zwischen dem Anfänger-
und dem Expertenmodus wählen.
Der Anfängermodus bietet die Möglichkeit,
die gesamte Platte oder auch nur
einzelne Partitionen zu klonen. Und bei
Linux-Dateisystemen lässt sich erst ein
Filesystemcheck durchführen und das
frische Image anschließend auf Fehler
überprüfen.
Die Option, das Image auf einem anderen
System wiederherzustellen, steht nur
im Expertenmenü zur Verfügung, wo der
Anwender auch selbst beschließen darf,
welches Tool im Hintergrund bevorzugt
die eigentliche Arbeit erledigt. Experten
vorbehalten ist ebenfalls die Entscheidung,
ob und welche Kompression zum
Einsatz kommt und wie groß eine einzelne
Datei des Image maximal sein darf
(voreingestellt ist 2 GByte).
Auf den ersten Blick wirkt Clonezilla
somit recht klar strukturiert. Der Teufel
steckt aber im Detail. Hat sich der
Anwender an einer Stelle im Menü vertan,
hilft meist nur, ganz von vorne zu
beginnen. Problematisch ist auch die
vierte Option im Menü »Neustart«, bei
der Clonezilla ein bereits eingehängtes
Laufwerk nicht entfernt. Einen sauberen
Neubeginn garantiert nur »Start over« mit
der Nummer 3.
Exaktes Ebenbild?
Um ein Image wiederherzustellen, booten
Benutzer die Live-CD auf dem Zielrechner
und wählen im Expertenmodus
»restoredisk« beziehungsweise »restoreparts«.
Danach gilt es, die Feinabstimmung
vorzunehmen (siehe Abbildung
2). Clonezilla bietet unter anderem an,
den MBR zu restaurieren und Windows-
Hostnamen automatisch anzupassen.
Außerdem dürfen Anwender bestimmen,
dass die neue Partitionstabelle sich an der
aktuellen Größe der Festplatte orientieren
soll. Fortgeschrittene Nutzer definieren
zudem Skripte, die vor oder nach der
Installation laufen sollen.
Es ist nicht möglich, beim Klonen einer
Partition zu einem anderen Dateisystem
zu wechseln oder aus einer physischen
Festplatte ein Laufwerk zu generieren,
das direkt in einer virtuelle Maschine arbeitet.
EFI-basierte Computer mit GUID-
Partitionstabellen unterstützt Clonezilla
hingegen seit dem Frühjahr 2011.
Die Adminregel Nummer 1 besagt, dass
die meisten Daten beim Wiederherstellen
von Backups verloren gehen. Clonezilla
machte hier im Test leider keine
Ausnahme. Beim Umzug des Dualboot-
Systems mit Windows und Linux kam
es mitunter vor, dass der Restore nicht
bootete. Hinweise zur Rettung bietet die
erwähnte Referenzkarte.
Selbst wenn auf den ersten Blick alles
glatt gelaufen zu sein scheint, bedeutet
das nicht, dass das Image auch brauchbar
ist. Auch wenn es schnell gehen muss
oder soll: Es ist besser, die diversen Optionen
zur Prüfung der Dateisysteme und
der fertigen Klone aktiviert zu lassen.
E Ping
Auch der zweite Testkandidat ist eine
bootbare Live-CD. Ping aus dem französischen
IT-Haus Effitek basiert auf Linux
from Scratch. Der Hersteller bietet das
Tool als kostenfreie Community-Edition
(GPL) und als Enterprise-Version für 30
Euro an, die mit Mail- und Telefonsupport
lockt. Das Standard-ISO ist 35 MByte
groß, eine erweiterte Variante mit Clam
AV umfasst 70 MByte. Im Test trat Version
3.02 an.
Ping steht für „Partimage is not Ghost“
und bezieht sich damit auf die kommer-
Abbildung 2: Die Clonezilla-Wiederherstellungsoptionen im Expertenmodus sind in der Tat nichts für Einsteiger.
Dafür ist hier eine gezielte Feinabstimmung und sogar der Einsatz externer Skripte möglich.
Bitparade 08/2012
Software
www.linux-magazin.de
57
Software
www.linux-magazin.de Bitparade 08/2012
58
zielle Windows-Backuplösung Norton
Ghost [9], von der es sich abheben will.
Dennoch erleben Linux-Fans eventuell
den einen oder anderen befremdlichen
Moment, denn Pings Oberfläche erinnert
eher an ein Windows- als an ein Linux-
Programm. Hinter den Kulissen arbeiten
die beiden Werkzeuge Partimage und
Partclone. Somit beherrscht das Tool alle
Dateisysteme, die beide bearbeiten: Ext
2/3/4, Reiser-FS, FAT 16/32, HPFS, JFS,
XFS, UFS, HFS und NTFS.
Nach dem Booten erinnert Ping bei der
Bedienung an Clonezilla. Allerdings haben
Anwender beim zweiten Kandidaten
nicht die Möglichkeit, die Tastaturbelegung
auszuwählen, und müssen daher
mit der US-amerikanischen Variante leben.
Ping bietet ebenfalls an, auf ein
lokales Laufwerk oder übers Netzwerk
(Samba, NFS und FTP) zu sichern. In
weiteren Untermenüs legen die Anwender
fest, ob sie ein komprimiertes Image
wünschen und ob anstelle von Partimage
(Voreinstellung) die Anwendung Partclone
oder doch das altbewährte Tar an
den Start geht. Danach geht’s los – einen
Expertenmodus stellt das Tool nicht zur
Verfügung.
Etwas sparsam präsentiert sich die Anwendung
auch bei der Wiederherstellung
der Images (siehe Abbildung 3).
Die Oberfläche präsentiert sich somit
äußerst übersichtlich und ist auch für
Einsteiger geeignet. Dafür fehlen aber
auch Funktionen, die es erlauben, direkt
auf ein anderes Laufwerk zu klonen, den
Dateisystemtyp zu wechseln oder Device-
Images für virtuelle Maschinen anzufertigen.
Moderne EFI-Systeme unterstützt
Ping gar nicht.
Pluspunkte sammelte Ping jedoch im
Test, weil es mit dem Dualboot-System
besser zurechtkam als Clonezilla. Den-
noch lief auch hier nicht alles glatt – ein
Eingriff in den Bootmanager über die
Grub-Shell war nötig, um beide Betriebssysteme
sauber zu starten.
E Mondo Rescue
Abbildung 3: Ping überfordert den Anwender nicht mit großen Auswahlmöglichkeiten.
Erweiterte Optionen zum direkten Klonen auf andere Partitionen,
zu Änderungen am Dateisystem und Ähnliches fehlen.
Anders als bei den ersten beiden Testkandidaten
heißt es hier nicht einlegen,
booten und los. Das unter der GPL veröffentlichte
Mondo Rescue installieren
Anwender auf dem PC, dessen Platten sie
spiegeln wollen. Das Tool benötigt unter
den meisten Distributionen zusätzlich die
Pakete »afio«, »mkisofs«, »mindi‐busybox«
und »mindi«. Hinweise zur Einrichtung
auf verschiedenen Linux-Systemen
gibt die Downloadseite. Ubuntu-Nutzer
bewahrt die Anleitung unter [10] vor
frustrierenden Frickeleien. Im Test kam
Version 3.0.1 zum Einsatz.
Mondo Rescue unterstützt unter Linux
verfügbare Dateisysteme (LVM 1 und 2,
Raid, Ext 2/3/4, JFS, XFS, Reiser-FS und
VFAT) und berücksichtigt Windows-Partitionen
auf Dualboot-Rechnern. Anwender
starten das Tool mit Rootrechten von der
Kommandozeile aus. Besser noch ist der
Betrieb im Runlevel 1. So müssen Nutzer
nicht händisch Datenbanken oder Ähnliches
herunterfahren, um später eventuell
mit einem unbrauchbaren Klon dazustehen.
Die Option »mondoarchive« spiegelt
lokale Platten, »mondorestore« stellt sie
wieder her.
Die Benutzerführung ist schnörkellos und
handlich. Mondo Rescue leitet den Benutzer
Schritt für Schritt durch die Konfiguration
bis zu einem funktionierenden
Backup. Gleich im ersten Menü zeigt sich
der kleine Vorsprung vor den ersten beiden
Kandidaten. Zu den Möglichkeiten,
die auch die Livesysteme bieten, gesellen
sich CDs, DVDs und Bandlaufwerke als
Zielmedien (siehe Abbildung
4).
Steht das Ziellaufwerk
fest, wählt der Anwender
die Komprimierung
und entscheidet, welche
Bestandteile das
Backup berücksichtigen
soll. Außerdem
ist es möglich, gezielt
Bereiche auszuschließen.
Produktivsysteme
klont Mondo Rescue
auf diese Weise ohne überflüssigen Ballast,
etwa voluminöse Logfiles.
Für Multiboot-Systeme gelten andere
Spielregeln als bei den Live-CDs. Im Gegensatz
zu Clonezilla und Ping arbeitet
Mondo Rescue mit eingehängten Partitionen.
Möchte ein Anwender einen
Rechner mit einem Linux- und einem
Windows-Betriebssystem klonen, muss
er die Windows-Partition vorher in »/etc/
fstab« eintragen und mounten. Handelt
es sich um ein NTFS, hakt Mondo Rescue
nach, ob es die Partition im Backup
berücksichtigen soll. Bestätigt der Nutzer
dies, behandelt das Tool die gesamte
NTFS-Partition wie eine einzelne große
Datei (»biggiefile«).
Kleine Umwege
Nachdem Ziel und Inhalt feststehen,
geht’s los. Egal welches Speichermedium
zum Einsatz kommt – das Tool legt
mittels Mindi Linux immer zusätzlich
ein bootfähiges Image an, mit dem der
Anwender die spätere Wiederherstellung
startet (siehe Abbildung 5). Das Abbild
beherbergt den Kernel, Module, Tools
und Bibliotheken sowie alle Informationen
über das jeweils verwendete Backupmedium.
Vorsicht ist geboten, wenn ein
Anwender in ein lokales Netzwerkverzeichnis
gespiegelt hat und versucht
dieses auf einem Rechner in einem anderen
Netzwerk wiederherzustellen. Das
Vorhaben wird scheitern, da die auf dem
ISO hinterlegten Netzwerkeinstellungen
nicht mehr zutreffen.
Hat »mondoarchive« seine Arbeit beendet,
kann der Nutzer die Integrität des
Backups überprüfen, indem er das Rescue-Medium
bootet und auf der Shell
»Lilo: compare« eingibt. Auch die Wiederherstellung
startet mit dem Rescue-
Medium. Das Tool kennt drei Modi: »interactive«
(führt den Anwender durch
die einzelnen Schritte), »nuke« (stellt
das System ohne Benutzereingriffe wieder
her) und »expert« (bietet zusätzliche
Optionen und Tools).
Letzteres legt Werkzeuge für jene Nutzer
bereit, die Partitionen oder die Plattengeometrie
verändern, auf ein Raid-System
umziehen oder zu einem neuen Dateisystem
wechseln wollen. Mondo Rescue
passt dabei selbstständig die Einträge in
der »/etc/fstab« an, nur bei Raid gilt es,
Bitparade 08/2012
Software
Abbildung 4: Mondo sichert nicht nur auf CDs und DVDs, sondern auch auf Bandlaufwerke,
auf andere Festplatten (auch externe Datenträger), USB-Sticks und
auf Netzwerk-Shares (Samba und NFS).
Abbildung 5: Mindi Linux erstellt ein bootfähiges Image, das Mondo benötigt.
Nach dem Start von dem Rescue-Medium stellt das Tool das System wahlweise
mit oder ohne Interaktion wieder her.
www.linux-magazin.de
59
von Hand nachzuarbeiten [11]. Mondo-
Rescue-Backups wandeln Anwender
problemlos in virtuelle Maschinen um.
Dazu starten sie das Bootmedium und
stellen das gesicherte System innerhalb
der VM wieder her. Dass Mondo in manchen
Punkten bereits etwas angestaubt
ist, verrät nicht nur der Einsatz von Lilo.
Mit GUID Partition Tables kann dieser
Testkandidat nicht umgehen.
E Storix
Das kommerzielle Backup- und Cloning-
Tool verfolgt einen ähnlichen Ansatz wie
Mondo Rescue. Anwender installieren
Storix System Backup Administrator – so
der volle Name – auf dem System, das
sie klonen möchten. Drei verschiedene
Ausgaben hat der Hersteller für Linux (32
und 64 Bit), AIX und Solaris im Angebot.
Die Preise für die Workstation Edition
beginnen bei rund 500 US-Dollar für die
Linux-Variante und steigern sich bis auf
ADMIN
Netzwerk & Security
Online-Archiv
Rund 2.000 Seiten Artikel,
Studien und Workshops aus
fünf Jahren Technical Review
+
nur
4,-e*
im Monat
Onlinezugriff auf alle
Heftartikel aus dem
ADMIN-Magazin
der Jahrgänge
2009 bis 2011!
Volltextsuche
Praxisrelevante Themen
für alle IT-Administratoren
* Angebot gültig nur
für Abonnenten eines
Print- oder vollen
digitalen ADMIN Abos
Bestellen Sie unter: www.admin-magazin.de/archiv
Software
www.linux-magazin.de Bitparade 08/2012
60
Abbildung 6: Storix System Backup Administrator bietet eine grafische Benutzeroberfläche, wenn auch
in etwas altbackenem Look. Alle hier gelisteten Menüs finden Anwender auch im Webinterface, das über
»http://localhost:8080« erreichbar ist.
riert der Nutzer im Menü »Configure«
zunächst die »System Backup Disks«
und entscheidet sich danach für einen
»Backup Job«. Als Backuptyp wählt
er »System Backup«. Die Option »Run
Backup Job« aus dem Menü »Actions«
startet den Vorgang. Wählt der Nutzer
hingegen ein »Filesystem Backup« auf
ein Netz- oder ein Bandlaufwerk, erstellt
er anschließend unter »Utilities«
ein Bootmedium. Damit funktioniert die
Wiederherstellung ganz ähnlich wie bei
Mondo Rescue.
Auch Storix System Backup Administrator
kann über die gleichen Umwege
wie Mondo Rescue einen Klon in eine
virtuelle Maschine umwandeln. Anwender
booten die VM mit dem Wiederherstellungs-Bootmedium,
greifen damit auf
das Backup zu und stellen das System
innerhalb der virtuellen Maschine wieder
her. Zusätzlich bietet das Tool an, Dateisysteme
beim Restore zu verändern, also
den Typ zu wechseln oder Partitionsgrößen
anzupassen. Der vierte Testkandidat
unterstützt auch EFI-Systeme und GUID
Partitionstabellen.
Ein Alleinstellungsmerkmal hat Storix
System Backup Administrator in diesem
Testfeld zu bieten und macht damit nochmals
deutlich, dass es sich vornehmlich
an Unternehmen richtet: Dank einer integrierten
Benutzerverwaltung können
Admins auch nicht privilegierten Benut-
820 US-Dollar für Solaris Sparc. Für eine
Verschlüsselungs-Lizenz (AES bis 256
Bit) werden die Anwender zusätzlich zur
Kasse gebeten. Sie kostet zwischen 300
und 380 US-Dollar.
Für den Einsatz auf Servern bietet der
Hersteller eine Network Edition, während
die TSM Edition für das IBM-System
Tivoli Storage Manager gedacht ist. Die
Preise dieser beiden Varianten stehen
nicht auf der Webseite; der Hersteller
berechnet sie anhand des konkreten Bedarfs
eines Kunden.
Storix arbeitet mit allen relevanten Dateisystemtypen,
LVMs und Raid-Systemen
zusammen. Möglich machen das die
verschiedenen Klontypen, die das Tool
im Angebot hat: System Backup, Logical
Volume Backup, Filesystem Backup,
Directory Backup oder Partition Backup.
Im Test trat eine 30-Tage-Testversion
(7.2.4.4) an, die Anwender im Downloadbereich
als Tar-Ball finden.
Nach dem Start der Installationsroutine
auf der Konsole entscheidet sich der Benutzer
zunächst zwischen der Workstation-
oder der Netzwerk-Variante. Ist Storix
eingerichtet, startet ein Dienst im Hintergrund,
auf den Nutzer entweder per
Webinterface (»http://localhost:8080«)
oder X11-GUI (Start über »sbadmin«) zugreifen
(siehe Abbildung 6).
Um ein komplettes System mit einer oder
mehreren Platten zu klonen, konfiguzern
die Aufsicht über die regelmäßige
Datensicherung übertragen.
Wie ein Schaf
Alle Kandidaten klonten im Test ordentlich.
Unterschiede offenbarten sich allerdings
bei der Wiederherstellung des
Dualboot-Testsystems – einer Aufgabe,
die Clonezilla nicht immer meisterte. Bei
den Live-CDs hat Ping daher die Nase
vorn, auch wenn das Tool zu oft an eine
Windows-Anwendung erinnert.
Bei den anderen beiden Lösungen sind
Einsatzort und ‐zweck abzuwägen. Storix
System Backup Administrator ist komplex
und zeigt eine steile Lernkurve. Für den
Hausgebrauch erscheint die kommerzielle
Lösung darüber hinaus vollkommen
überdimensioniert. Funktionsumfang
und Preise richten sich eindeutig auf den
Einsatz im Unternehmen, aber auch dort
ist die Anwendung nur dann sinnvoll,
wenn die vielfältigen Konvertierungseigenschaften
gewünscht sind.
Für Heimanwender empfiehlt sich Mondo
Rescue. Es punktet mit Benutzerfreundlichkeit
und ist besonders dann hilfreich,
wenn die Maschine nicht für einige Stunden
abgeschaltet sein kann. Allerdings arbeitet
das Tool auf aktiven Filesystemen.
So bleiben ein gewisses Restmisstrauen
und alle Nachteile, die Anwender beim
Sichern von eingehängten Dateisystemen
in Kauf nehmen. (hej)
n
Infos
[1] Clonezilla: [http:// www. clonezilla. org]
[2] Ping: [http:// ping. windowsdream. com]
[3] Mondo Rescue:
[http:// www. mondorescue. org]
[4] Storix System Backup Administrator:
[http:// www. storix. com]
[5] Clonezilla-FAQ: [http:// drbl. org/ faq/]
[6] Clonezilla-Referenzkarte:
[http:// clonezilla. org/ downloads/ doc/
clonezilla‐live‐stable‐doc. php]
[7] Partclone: [http:// partclone. org]
[8] Partimage: [http:// www. partimage. org]
[9] Norton Ghost:
[http:// de. norton. com/ ghost]
[10] Mondo unter Ubuntu installieren: [https://
help. ubuntu. com/ community/ MondoMindi]
[11] Mit Mondo auf ein Raid umziehen:
[http:// www. mondorescue. org/ docs/
mondorescue‐howto. html# AEN951]
Aus dem Alltag eines Sysadmin: Raspberry Pi
Beerenstark
Einführung 08/2012
Sysadmin
Ob Zufall oder die krude Lieferpraxis des Raspberry-Pi-Produzenten die Ursache ist, dass in diesem Linux-
Magazin gleich zwei Artikel über den mit Vorschusslorbeeren vollständig bedeckten Einplatinen-Computer zu
finden sind? Egal. Kolumnist Charly jedenfalls ist voll auf Himbeere. Charly Kühnast
www.linux-magazin.de
61
Inhalt
62 Festspeicher löschen
Wer Platten oder SSDs wegwirft oder
ver kauft, muss die Daten gut schreddern.
67 Clientmanagement per ACMP
Die neue Version inventarisiert neben
Windows-PCs auch Arbeitsplatzrechner
mit Mac OS X und Linux.
72 Test: Owncloud 4
Owncloud will Anwendern so etwas wie
Dropbox oder Hidrive bieten, aber mit
Open Source und auf dem eigenen Server.
Der Autor
Charly Kühnast administriert
Unix-Syste me im Rechenzentrum
Niederrhein. Zu seinen
Aufgaben gehören Sicherheit
und Verfügbarkeit der
Firewalls und der DMZ.
Als Mutterpflanze des Raspberry Pi fungiert
eine britische Stiftung. Im Sinn hatte
sie einen sehr preisgünstigen Einplatinen-
Computer, der an Schulen den Informatikunterricht
praxisorientierter gestaltet
sollte. Den Bedarf an „Raspis“ schätzten
die Erfinder auf eine niedrige vierstellige
Anzahl. Weit gefehlt – der Ansturm ist
ge waltig. Für umgerechnet knapp 40
Euro inklusive Versand erhält man einen
ARM-Minicomputer mit 256 MByte RAM
– wenn er kommt. Auf meinen Raspi
(Abbildung 1) habe ich mehr als drei
Monate gewartet und damit noch Glück
gehabt, denn die Zahl der Vorbestellungen
soll gut sechsstellig sein.
Kein Wunder, denn aus dem Winzgerät
wächst alles, was auch ein PC braucht:
Zwei USB-Ports, einmal Ethernet, Sound,
HDMI, ein Composite-Ausgang für den
Notfall und eine Reihe frei programmierbarer
I/O-Ports für
Hardware-Basteleien,
wie ich sie vom Arduino
kenne. Als Massenspeicher
dient eine
SDHC-Karte.
Aus Kostengründen
fehlt eine Echtzeituhr,
auch ein Netzteil
liegt dem Raspi nicht
bei. Bevor man eines
erwirbt, lohnt es, im
Bestand ausgedienter
Handy-Netzteile zu
kramen: Ist eins mit
5-Volt-Micro-USB-Anschluss
dabei, das
rund 1 Ampere liefert,
taugt es für den
Raspberry Pi. Später
soll eine weitere Raspberry-Version ohne
USB und Ethernet für weniger als 30 Euro
rauskommen.
Auf meinem Raspi läuft jede Distribution,
die sich für die ARMv6-Architektur kompilieren
lässt. Fertige Images für Debian
6 und Arch Linux gibt es unter [1], eines
mit Fedora ist angekündigt. Das Image ist
per »dd« schnell auf eine 2 GByte große
SDHC-Karte geschrieben, die in der Fotoequipment-Grabbelkiste
eigentlich dem
Ruhestand entgegendämmerte.
Auf den ARM nehmen
Im Betrieb benimmt sich der Raspi exakt
so, wie ich es von einem 700 MHz
schnellen PC erwarten würde: Kompilieren
macht keinen Spaß, aber die Arbeit
auf der Kommandozeile geht gut von der
Hand. Einfache Serverdienste laufen ausreichend
flott, wenn sie in die 256 MByte
RAM passen. Der Kernel 3.1.9 des Debian-Image
unterstützt leider kein IPv6 –
Abbildung 1: Klein, günstig und sehr begehrt: Der Raspberry Pi mit ARM-
Controller und viel Peripherie.
vermutlich schlicht ein Versehen, das die
Entwickler hoffentlich bald korrigieren.
Sogar eine grafische Oberfläche könnte
ich starten, denn das Debian-Image beheimatet
auch ein LXDE.
Meine Pläne gehen aber eher dahin, die
Bastelprojekte auf den Raspi zu bringen,
für die ich momentan andere Server missbrauche.
So liest gerade die Firewall im
Ab stellraum den Stromzähler aus, und
der VDR im Wohnzimmer poolt Daten aus
meiner Wetterstation – alles Aufgaben
wie geschaffen für den Raspberry Pi. Sie
verlangen wenig Performance und der
Stromverbrauch des Raspi fällt mit unter
5 Watt nicht weiter ins Gewicht. Die pure
Vernunft muss aber noch warten. Es
macht mir viel zu viel Spaß, mit dem
Raspi herumzuspielen. (jk) n
Infos
[1] Raspberry Pi:
[http:// www. raspberrypi. org/ downloads]
Sysadmin
www.linux-magazin.de Sicherer löschen 08/2012
62
Festplatten mit Linux-Tools sicher löschen
Weg damit!
Angesichts hoher Festplattenpreise sind gebrauchte Disks ein Renner bei Ebay. Aber der Wert der unbedacht
darauf hinterlassenen Daten ist oft viel höher als der Kaufpreis. Wer seine Platte nur formatiert, bevor er sie
entsorgt, wähnt sich in trügerischer Sicherheit. Hans-Peter Merkel, Markus Feilner
© Achim Prill, 123RF
Wer eine alte Festplatte sicher entsorgen
und vorher die Daten darauf endgültig
löschen will, sollte gängige Anweisungen
von Behörden oder Militär konsultieren.
Doch beim Studium der Dokumente aus
US-Institutionen erwacht auch im geduldigsten
Admin schnell das Verlangen,
zum Baumarkt zu fahren und dort nach
einem Schweißbrenner oder einem extra
starken Magneten zu fragen und seine
Datenträger anschließend mit derlei destruktiver
Hardware zu verwöhnen. Hohe
Temperaturen und starke Magnetfelder
sind Experten zufolge das einzige Mittel,
DELUG-DVD
Auf der DVD dieser Ausgabe
DELUG-DVD
finden Sie das Slack-Tool Bmap als statisch
kompilierte Binärdatei, das EWF-Image eines
USB-Sticks zum Testen sowie die DBAN-Distribution
zum Wipen und sicheren Löschen von
Festplatten als ISO-Image.
um innerhalb kurzer Zeit Daten auf Festplatten
zuverlässig zu löschen.
Oder 7- bis 35-mal
überschreiben
Die Anweisungen legen dem sicherheitsbewussten
Anwender nämlich nahe,
seine Festplatten mehrfach zu überschreiben,
die Empfehlungen von Gutman [1]
oder des US-Militärs (Department of
Defense, DoD 5220.22-M) sprechen von
sage und schreibe sieben- bis 35-fachem
Typ
Gesamtzahl
Dateien
Anzahl Festplatten mit
Dateien dieses Typs
Überschreiben mit unterschiedlichen
Mustern als einzig sicherer Lösung.
Wer schon einmal eine 2-TByte-Festplatte
gewipet hat, weiß, dass so ein Vorgehen
dauert. Doch der Aufwand lohnt, behaupten
Studien, die wahllos entsorgte Festplatten
unter die Lupe nahmen und dabei
Erschreckendes zu Tage gefördert haben
(Tabelle 1). Dieser Artikel zeigt, wie viele
Daten sich von vermeintlich gelöschten
Datenträgern problemlos wiederherstellen
lassen, und gibt Admins Tipps und
Werkzeuge an die Hand, die ihre Festplatten
gezielt und sicher löschen.
Aus zweiter Hand
Word 675 23 183
Outlook 20 6 12
Powerpoint 566 14 196
Excel 274 18 67
Legendär ist in diesem Zusammenhang
die Studie [2], die der heutige kalifornische
Navy-Professor Simson Garfinkel
[3] über die Entsorgungspraktiken von
PC-Besitzern erstellte. In einem von ihm
durchgeführten Experiment hat sich der
Experte 158 Festplatten aus verschiedenen
Secondhand-Quellen besorgt. Einige
Disks, teilweise über Reseller bezogen,
hatten die Vorbesitzer offensichtlich vorwiegend
im Small-Business-Bereich eingesetzt.
Der weitaus größte Teil stammte
aber aus Ebay-Versteigerungen direkt von
privaten Anwendern.
Von den Platten fertigte Garfinkel forensische
Abbilder, die er mit simplen
Linux-Bordmitteln wie den Kommandos
Tabelle 1: Wiederherstellbare Dateien auf 158 gebrauchten Festplatten
Maximale Anzahl wiederherstellbarer
Dateien pro Platte
© Simson Garfinkel, Computer.org
Abbildung 1: Fast immer findet Bulk Extractor allerlei Daten auf einer vermeintlich
gelöschten Festplatte.
»strings« oder »grep« auswertete. Mit erschreckendem
Erfolg: Lediglich 9 Prozent
der Festplatten befanden sich in einem
Zustand, der keine Datenrekonstruktion
mit Softwaretools ermöglichte. Auf 64
Prozent der Platten war entweder noch
ein intaktes Dateisystem vorhanden, das
sich direkt mounten ließ, oder die Vorbesitzer
hatten die Platten nur formatiert,
was es erlaubte, sie mit wenigen
forensischen Kniffen wieder komplett zu
rekonstruieren.
MBR löschen reicht nicht
Die Anleitung im Kasten „Übung mit
USB-Stick“ zeigt, dass auch der verbreitete
Mythos, es reiche, die Partitionstabelle
oder den ganzen
MBR zu zerstören,
schlichtweg falsch ist.
Die richtigen Tools
stellen alle Daten problemlos
wieder her.
Wer das selbst ausprobieren
will, findet
auf der DELUG-DVD
das zum Testen geeignete
Image eines USB-
Sticks.
Garfinkel stellte außerdem
fest, dass der
Großteil der lesbaren
Daten aus den üblichen
Office-Anwendungen
stammte (Tabelle
1). Auf 42 der
Festplatten fand der Forensiker sogar
Kreditkartennummern (CCNs).
Diese Daten eignen sich besonders gut
für die Rohdatensuche mit geeigneten
regulären Ausdrücken. Das Forensikprogramm
Bulk Extractor [5] erledigt die Arbeit
sehr komfortabel – weil automatisch
– und sucht dabei auch gleich noch alle
IP-, E-Mail- Adressen und Telefonnummern
(Abbildung 1).
Bulk Extractor, Foremost
und Sleuthkit
Als Testmedium für die Fähigkeiten von
Bulk Extractor kann ebenfalls das Image
des USB-Sticks von der DELUG-DVD dienen,
der mit dem für USB-Sticks typischen
FAT 32 formatiert ist. Bulk Extractor
soll nun so viele sensible Informationen
wie möglich wiederherstellen. Dafür
arbeitet er zwar wie andere File Carver,
sucht aber anhand eingebauter regulärer
Ausdrücke nach den erwähnten Kriterien
und listet diese zusammen mit dem
ermittelten Offset auf, eine Gruppierung
nach Häufigkeit in Histogrammdateien
gibt es gratis dazu:
bulk_extractor /dev/loop0 ‐o bulk
Zur Rekonstruktion von Dateien setzt der
interessierte Anwender oder Forensiker
üblicherweise Tools wie Foremost [6]
oder Scalpel [7] ein. Nach dem Bulk-
Extactor-Lauf finden sich in »ccn.txt«
Hinweise zu fünf Kreditkartennummern
(Listing 1).
Da die Offsets sehr nahe beieinander liegen,
ist zu vermuten, es handele sich
um eine einzige Datei. Jetzt liefert »dd«
Auskunft über den Inhalt der ersten 1000
Bytes nach dem ersten Offset (Listing 2).
Diese CCN stammen aus einer öffentlichen
Webseite mit Testnummern gängiger
Anbieter. Doch die Histogrammdateien
»url‐histogram.txt« enthalten oft
auch interessante Informationen über
besuchte Webseiten (Listing 3).
Solange die Dateien unfragmentiert vorliegen,
liefert Bulk Extractor brauchbare
Ergebnisse, die Darstellung von benachbartem
Text wird mit Hilfe von Dd und
passendem Offset zum Kinderspiel, wenn
auch zu einem langen: Bei den derzeit
gängigen Festplattengrößen ist eine War-
Sicherer löschen 08/2012
Sysadmin
www.linux-magazin.de
63
Übung mit USB-Stick
Das Image »stick.E01« (auf der DELUG-DVD)
lässt sich über Xmount [4] als Loopback-Device
mit der (Raw-)Größe 1 GByte mounten:
xmount ‐‐in ewf ‐‐out dd ‐‐cache /tmp/U
stick.ovl stick.E01 /ewf
Dann wird der MBR absichtlich zerstört:
losetup /dev/loop0 /ewf/stick.dd
dd if=/dev/zero of=/dev/loop0 count=1
fdisk ‐lu /dev/loop0
Platte /dev/loop0: 977 MByte, 977534976U
Byte
255 Köpfe, 63 Sektoren/Spur, 118 Zylinder,U
zusammen 1909248 Sektoren
Einheiten = Sektoren von 1 ◊ 512 = 512U
Bytes
Sector size (logical/physical): 512 bytesU
/ 512 bytes
I/O size (minimum/optimal): 512 bytes / U
512 bytes
Disk identifier: 0x00000000
Die Festplatte »/dev/loop0« enthält nach dieser
Operation keine gültige Partitionstabelle
mehr. Anschließend lassen sich forensische
Programme, zum Beispiel das im Artikel näher
erklärte »bulk_extractor«, auf »/dev/loop0«
anwenden.
Rekonstruktion mit Sigfind
Vor dem Hardcore-File-Carving kann der Anwender
auch eine Rekonstruktion der Daten mit
»sigfind« aus dem Sleuthkit versuchen:
sigfind ‐o 510 55AA /dev/loop0
Block size: 512 Offset: 510 Signature:U
55AA
Block: 61 (‐)
Block: 62 (+1)
Block: 63 (+1)
Block: 67 (+4)
Block: 68 (+1)
Block: 69 (+1)
Block: 73 (+4)
Hier deutet die Zeile »Block: 61 (‐)« auf eine
Partition bei Sektor 61 hin, die sich mit Losetup
auf Verdacht mounten lässt:
losetup ‐o $((61*512)) /dev/loop1 U
/dev/loop0
mount /dev/loop1 /mnt
Wenn dieser Befehl ohne Fehlermeldung funktioniert,
dann liegt jetzt unter »/mnt« das komplette
Dateisystem vor – und zwar genau so,
wie der Anwender es vor dem Löschen des MBR
hinterlassen hat.
Sysadmin
www.linux-magazin.de Sicherer löschen 08/2012
64
tezeit von einem kompletten Wochenende
durchaus möglich.
Übersichtlichere Ergebnisse liefert in
vielen Fällen das Forensiktool Foremost,
weil es gleich komplette Dateien rekonstruiert.
Doch Bulk Extractor kümmert
sich dafür auch um den Slack-Bereich
([8], [9]). Noch genauer analysieren
ihn Fsstat aus dem Sleuthkit [10] und
Bmap [11] (Listing 4). Weil die Webseite
des zweiten Tools [12] bis zum Redaktionsschluss
nicht erreichbar war, haben
die Autoren des Linux-Magazins Bmap
statisch kompiliert und stellen es auf der
DELUG-DVD zur Verfügung.
Der Ausschuss: Slack
Der so genannte Slack resultiert aus der
Aufteilung eines Dateisystems in Cluster:
Beim Schreiben in eine Datei wird das
Medium aus Listing 4 immer Vielfache
von 4096 Bytes belegen. Ist eine Datei
19 353 Byte groß, belegt sie fünf Cluster.
Während die ersten vier komplett
gefüllt sind, bleiben beim letzten noch
Listing 1: »ccn.txt«
01 # Feature File Version: 1.1
02 2152094 378282246310005 class=CellBody>
378282246310005\012<
03 2152294 371449635398431 class=CellBody>
371449635398431\012<
04 2152504 378734493671000 class=CellBody>
378734493671000\012<
05 2152707 5610591081018250 class=CellBody>
5610591081018250\012<
06 2153481 6011000990139424 class=CellBody>
6011000990139424\012<
01 378282246310005
02
03 American Express
04
05 371449635398431
06
07 American Express Corporate
08
09 378734493671000
10
11 Australian BankCard
1127 Bytes frei. Ist das Dokument unter
Libre Office mit Linux als Betriebssystem
angelegt, finden sich lediglich 0x00
Pattern als Füllinformationen in diesem
Restbereich (Slack).
Ein Windows-XP-Betriebssystem legt allerdings
unter Umständen verräterische
Informationen auch in diesem Bereich
ab. Befinden sich im benachbarten Bereich
des noch im Arbeitspeicher liegenden
OO-Dokuments beispielsweise Bytes
eines gerade geöffneten Mailclients, so
greift das Betriebssystem ohne Rücksicht
auf Verluste in den Arbeitsspeicher
und holt sich ab Beginn des Dokuments
20 480 Bytes, das heißt 1127 Bytes aus
der benachbarten E-Mail, genug Platz für
eine Mail adresse.
Für den Benutzer ist diese Information
zwar komplett unsichtbar, sie verbleibt
aber so lange im Slack-Bereich auf der
Platte, bis die Originaldatei komplett
überschreiben ist. Listing 5 zeigt, wie
sich Datei-Slack mit Bmap auslesen, testweise
beschreiben und verifizieren lässt.
Sicheres Löschen mit Convert
and Copy und Dc3dd
Einfachste Abhilfe schafft der klassische
»dd«-Befehl. Die landläufige Meinung,
der Name des Programms laute „Disc
Dump“ oder „Disc Duplicate“, ist übrigens
falsch. Die Manpage weiß es besser:
„dd ‐ convert and copy a file“ steht da.
Kein d, aber zwei c in der Auflösung?
Eigentlich wäre die passende Abkürzung
„cc“, aber die war schon für einen bekannten
Compiler vergeben.
Listing 2: »dd if=/dev/loop0 skip=2152094 bs=1 count=1000«
12
13 5610591081018250
14
15 Diners Club
16
17 30569309025904
18
19 Diners Club
20
21
Abbildung 2: Kurz, schmerzlos und bewährt: Darik’s Boot And Nuke alias
DBAN löscht die ausgewählten Festplatten unwiederbringlich.
Auch zur Erfolgskontrolle bietet sich
ein Dd-Befehl an: »dd if=test.dd | xxd«
sollte dem Anwender keine anderen Muster
mehr ausgeben, als jenes, das er im
vorherigen Befehl eingegeben hatte. Um
die Datenflut auf dem Bildschirm und
das damit verbundene Scrollen zu minimieren,
lässt sich die Suche nach nicht
gelöschten Bytes auch mit Awk und Grep
filtern:
dd if=test.dd | xxd | awk '{print $2,$3,$4,U
$5,$6,$7,$8,$9}' | grep ‐v 0000
Softwaremäßig bleibt so schon nach einmaligem
Wipen nichts mehr übrig. Ein
teures Expertenlabor könnte eventuell
noch Daten wiederherstellen, derartige
Auswertungen stellen aber die absolute
Ausnahme dar, die sich nur finanzkräftige
Angreifer leisten.
Wipe, Shred und Journals
Doch Dd und Dc3dd sind nicht die einzigen
Bordmittel zum Wipen von Speichermedien.
Die Programme »wipe«
und »shred« sind ebenfalls auf gängigen
Distributionen vorinstalliert. Auch sie
ermöglichen das sichere, unwiederbringliche
Löschen von Verzeichnissen und
sogar einzelnen Dateien.
Doch auch hier ist höchste Vorsicht angesagt:
Die meisten modernen Dateisysteme
nutzen Journale. Ausnahmen
sind da FAT und FAT 32 oder Ext 2. Der
Wipe-Vorgang kümmert sich aber nur um
die Datei selbst, nicht
aber um den Inhalt des
Journals. Auch wenn
danach erfolgende
Schreibvorgänge alles
wieder überschreiben,
können Spuren
bleiben, die beispielsweise
Bulk Extractor
ganz leicht findet. Ein
simpler »string« Befehl mit dem Device
als Parameter macht solche Rückstände
jedoch schnell sichtbar.
Alles anders bei SSDs
Hohe Festplattenpreise und die in vielen
Fällen bessere Performance der Solid
State Discs (SSD) machen die elektronischen
Speichermedien schon heute immer
beliebter. Ein Performancetest aus
der Juli-Ausgabe des Linux-Magazins
[13] zeigt, dass bei der richtigen Wahl
des Dateisystems die Festplatten nicht
mehr mithalten können.
Doch ein großes Problem bleibt: Michael
Wei und seine Kollegen widmen sich in
einer Studie [14] dem Thema „Sicheres
Löschen von SSDs“ und kommen zu dem
Schluss, dass die traditionellen Löschmechanismen
von Festplatten bei Solid State
Disks nicht mehr greifen. Die eingebaute
Elektronik schreibt nämlich zugunsten einer
längeren Lebensdauer des Speichers
alle Schreibkommandos um und leitet
diese beispielsweise auf bisher weniger
benutzte Sektoren um.
Nur Hdparm nutzt Low-Level-Befehle wie
ATA Secure Erase [15], um mit Kommandos
wie »hdparm ‐‐user‐master u ‐‐security‐erase
Passwort /dev/sdb« sicheres
und gezieltes Löschen zu erreichen. Doch
damit das klappt, muss auch das Bios
mitspielen und es erlauben, ein Security
Password auf der SSD zu setzen – was
aber meist nicht der Fall ist. Dennoch
könnte diese Methode dazu beitragen,
auch auf SSDs kritische Spuren zu beseitigen.
Aber leider unterstützen auch nicht
alle Hersteller von SSDs diese Befehle.
Das Ata-Wiki [15] ist auch dafür erste
Anlaufstelle.
Schnell und kompromisslos
Wer nach einer komfortablen und schnellen
Lösung sucht, um Platten zu wipen,
Listing 3: »url_histogram.txt«
01 # Histogram File Version: 1.1
02 n=6 http://feeds.feedburner.com/
Regexlibcom‐RecentPatterns
03 n=4 http://purl.org/dc/elements/1.1/
04 n=3 http://openoffice.org/2004/office
05 n=3 http://www.w3.org/1999/xlink
06 n=3 http://www.w3.org/2003/g/data‐view#
07 n=2 http://aspadvice.com/lists/SignUp/
list.aspx?l=68&c=16
08 n=2 http://aspalliance.com/
09 n=2 http://de.wikipedia.org/wiki/
Liste_der_Postleitbereiche_Deutschland
10 n=2 http://de.wikipedia.org/wiki/
Postleitzahl_%28Deutschland%29
Listing 4: »fsstat ‐o 61 /dev/loop0«
01 FILE SYSTEM INFORMATION
02 ‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐
03 File System Type: FAT32
04
05 OEM Name: MSDOS5.0
06 Volume ID: 0x948335be
07 Volume Label (Boot Sector): NO NAME
08 Volume Label (Root Directory): HPMSTICK
09 File System Type Label: FAT32
10 Next Free Sector (FS Info): 5256
11 Free Sector Count (FS Info): 1903928
12
13 Sectors before file system: 61
14
15 CONTENT INFORMATION
16 ‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐
17 Sector Size: 512
18 Cluster Size: 4096
19 Total Cluster Range: 2 ‐ 238179
Sicherer löschen 08/2012
Sysadmin
www.linux-magazin.de
65
Listing 5: »bmap«-Beispiel
01 # bmap ‐‐mode slack ccn.odt
02 getting from block 661
03 file size was: 19353
04 slack size: 103
05 block size: 512
06
07 # echo "Hier könnte etwas vertrauliches
gespeichert sein" | bmap ‐‐mode putslack
ccn.odt
08 stuffing block 661
09 file size was: 19353
10 slack size: 103
11 block size: 512
12
13 # bmap ‐‐mode slack ccn.odt
14 getting from block 661
15 file size was: 19353
16 slack size: 103
17 block size: 512
18 Hier könnte etwas vertrauliches gespeichert
sein
19
20 # bmap ‐‐mode wipeslack ccn.odt
21 stuffing block 661
22 file size was: 19353
23 slack size: 103
24 block size: 512
Sysadmin
www.linux-magazin.de Sicherer löschen 08/2012
66
Abbildung 3: Einfache Bedienung und viele Funktionen bringt das Universal-Löschtool Bleachbit, und zwar
sowohl für Linux als auch auf Windows.
wird Darik’s Boot And Nuke [16] schätzen.
Hinter dem Kürzel DBAN steckt eine
Linux-Live-CD (als ISO-Image auf der
DELUG-DVD, Abbildung 2).
Doch Vorsicht ist geboten: Wer seinen PC
von dieser CD bootet und im Bootprompt
»quick« eingibt, löscht Festplatten ohne
Rückfrage. Erschwerend kommt hinzu,
dass DBAN alle erkannten Drives automatisch
einbindet. Anstelle von »quick«
kann der Anwender hier die Gutman-
[1] oder die vom amerikanischen Militär
(DoD) empfohlene eingangs erwähnte
Methode auswählen.
Bleachbit
Paranoide Anwender hören aber nicht
beim Löschen der Festplatten auf, sondern
benutzen auch noch Tools, die die
vermeintlich flüchtigen Daten des Arbeitsspeichers
entfernen, die mitunter
ebenfalls sensible Daten enthalten. Um
diesen Angriffsvektor auszunutzen, muss
ein Angreifer aber erst einmal Zugriff auf
ein laufendes System bekommen. Nichtsdestotrotz
löscht der sicherheitsbewusste
Admin mit dem Programm Bleachbit
(Abbildung 3, [17]) auch die Daten in
seinem RAM zuverlässig (Kasten „Auf
der Flucht mit Bleachbit“).
Installieren lässt sich Bleachbit aus den
gängigen Repositories, in den Menüs
der Desktops landet es meist unter dem
Eintrag »Systemwerkzeuge«. Aus einer
Vielzahl von Möglichkeiten kann der Anwender
dann auswählen, welche seiner
vielen Spuren er entfernen will, die Funktionen
reichen von Cookies über Festplatten-Wipes
bis zur Browser-History.
Fazit
Schon das Bordpersonal eines normalen
Linux-Systems bietet genügend Möglichkeiten,
Datenspeicher sicher zu löschen,
bevor sie der Admin in die Tonne tritt
oder meistbietend versteigert. Auch die
Erfolgskontrolle lässt sich mit Standardtools
der Bash automatisieren. Die stundenlange
Wartezeit verliert damit einigen
Schrecken. Wer sich nicht an die Kommandos
wagt oder einfach lieber ein GUI
bedient, greift zu DBAN.
n
Auf der Flucht mit Bleachbit
Flüchtige Daten sind auch dem Forensiker ein
Begriff. Als „volatile Data“ versteht er Daten,
die nach dem Abschalten des Systems nicht
mehr vorhanden sind und deshalb zuvor gespeichert
werden sollten. Darunter fallen beispielsweise
die Erfassung des Arbeitsspeichers
oder aktive Netzwerkverbindungen.
Bleachbit macht genau das Gegenteil. Es liest
und löscht auf Wunsch diese Spuren, beispielsweise
aus dem Arbeitsspeicher. Das Honeynet-
Infos
[1] Gutmann-Methode zum sicheren Löschen
von Festplatten: [http:// en. wikipedia. org/
wiki/ Gutmann_method]
[2] Simson Garfinkel, „Remembrance of
Data Passed: A Study of Disk Sanitization
Practices“: [http:// www. computer. org/
csdl/ mags/ sp/ 2003/ 01/ j1017‐abs. html]
[3] Simson Garfinkel: [http:// simson. net]
[4] Hans-Peter Merkel, Markus Feilner, „Kreuz
und Quer“: Linux-Magazin 10/09, S. 90
[5] Bulk Extractor: [https:// github. com/
simsong/ bulk_extractor/ wiki]
[6] Foremost:
[http:// foremost. sourceforge. net]
[7] Scalpel: [http:// www.
digitalforensicssolutions. com/ Scalpel/]
[8] File-Slack: [http:// de. wikipedia. org/ wiki/
Slack_%28Dateisystem%29]
[9] Hans-Peter Merkel, Markus Feilner,
„Fenster-Kit“: Linux-Magazin 06/08, S. 38
[http:// www. linux‐magazin. de/ Heft‐Abo/
Ausgaben/ 2008/ 06/ Fenster‐Kit]
[10] Hans-Peter Merkel, Markus Feilner,
„Wider das Vergessen“: Linux-Magazin
03/11, S. 90
[11] Linux Security über Bmap:
[http:// www. linuxsecurity. com/ content/
view/ 117638/ 49/]
[12] Bmap: [ftp:// ftp. scyld. com/ pub/
forensic_computing/ bmap/]
[13] Michael Kromer, „Formel Storage“:
Linux-Magazin 07/12, S. 28
[14] Michael Wei, Laura Grupp, Frederick Spada
und Steven Swanson, „Reliably Erasing
Data from Flash-Based Solid State Drives“:
[http:// cseweb. ucsd. edu/ users/ m3wei/]
[15] ATA Secure Erase: [https:// ata. wiki. kernel.
org/ index. php/ ATA_Secure_Erase]
[16] DBAN: [http:// www. dban. org]
[17] Bleachbit:
[http:// bleachbit. sourceforge. net]
[18] Übungs-VM für Bleachbit:
[http:// old. honeynet. org/ scans/ scan29/]
Projekt stellt in einer seiner bekanntesten Aktionen
ein VMware-Image bereit [18], in dem
sich unter anderem die flüchtigen Daten eines
Livesystems sammeln lassen.
Im Übungsbeispiel erstellt Bleachbit aus dem
Arbeitsspeicher eine Wordlist, die der Anwender
anschließend via Netcat (Nc) dem Passwortcracker
John übergibt. Wer das testen will: Das
Passwort »h0cusp0cus« kommt im Arbeitsspeicher
des Systems gleich siebenmal vor.
Inventarisierung und Softwareverteilung mit ACMP
Zeit für eine Inventur
ACMP 08/2012
Sysadmin
Es gibt schönere Aufgaben, als Ausstattungslisten des eigenen Rechnerpools zu pflegen. Eine zentrale Inventarisierungssoftware
wie ACMP automatisiert das stupide Erfassen von Windows-, Linux- und Mac-Computern
und deren Software. Konstantin Agouros
www.linux-magazin.de
67
Die ACMP-Suite von Aagon Consulting
[1] aus dem nordrhein-westfälischen
Soest besteht aus einer Inventarisierungskomponente,
einer Softwareverteilung,
einem Helpdesk-Modul, Lizenzmanagement
und dem Client Command Center,
mit dem der Systemverantwortliche Befehle
auf ausgewählten oder allen Clients
ausführt. Außerdem überwacht ACMP Sicherheitskomponenten
wie Virenscanner
und Patchstände.
Stammesgeschichtlich siedelt ACMP ganz
klar im Windows-Dorf: Bis vor Kurzem
erfasste es nur Rechner mit Microsoft-
Betriebssystemen, die Suite selbst ließ
und lässt sich nur auf einem Windows-
Server installieren. Die neueste „Pro“-
Version 3.8.10 berücksichtigt jedoch auch
Linux- und OS-X-Clients, die sie mittels
SSH ansteuert [2]. Dies – und auch weil
Windows-PCs noch recht verbreitet sind
– lässt Raum für die Betrachtung des
Produkts. Als Linux-Clients unterstützt
ACMP offiziell Debian ab 6.0.3, Ubuntu
ab 12.04, Open Suse ab 11.4 und Fedora
ab Version 16. Bei Apple-Rechnern markiert
OS X Leopard die Einstiegshürde.
Scannen ohne Agenten
Neu in der Version 3.8.10 ist der Agentless
Scanner, der andere Datenquellen anzapft,
etwa das Active Directory. Zu dieser Komponente
gehört auch der XML Importer,
der als Dienst periodisch in Netzwerkfreigaben
nach neuen XML-Dateien sucht,
die Inventory-Daten enthalten, und sie in
ACMP importiert. Für Linux- und OS-X-
Clients gibt’s ein Bündel Python-Skripte,
die solche XML-Files erzeugen und auf einer
der CIFS-Freigaben ablegen. Im Sinne
einer zentralen Administration bietet der
Server im Client Command Center die
Möglichkeit, Shellkommandos zu hinterlegen,
die per SSH die Linux- oder OS-X-
Clients ausführen.
Der mengengestaffelte Preis des proprietären
Produkts bemisst sich pro Jahr
und Clients, egal ob diese mit Linux,
Mac OS oder Windows laufen. Bei 100
Clients kostet die Grundlizenz rund 40
Euro pro Client und Jahr. Dazu kommen
Lizenzgebühren für Zusatzfunktionen
wie Software-Erfassung oder Helpdesk.
Server und Clients
installieren
Die neueste Demoversion müssen Interessierte
direkt beim Hersteller [1] anfordern,
das auf der Homepage hinterlegte
Zip-File beinhaltet nämlich nur die nicht
updatefähige Version 3.8.0, die noch
keine Linux-Unterstützung besitzt (Stand
Mitte Juni 2012).
Die Suite benötigt einen MS-SQL-Server
als Datenbank. Eine bestehende Installa-
tion eignet sich dafür genauso wie eine
neu aufgesetzte Ex press-Version. Passend
zur ACMP-Serversoftware gibt es eine
Konsole, um die Software zu steuern. Die
darf der Admin auch auf einem anderen
Rechner im Netz installieren, ebenso einen
Agenten auf den verwalteten Windows-Clients.
Den Agent less Scan ner
muss er nach Updates manuell installieren.
Er benötigt die Windows-Komponente
Message Queueing.
Auf allen einzubindenden Linux-Systemen
müssen Python 2.6 oder höher und
folgende Tools installiert sein: »hdparm«,
»dmidecode«, »lsb_release« und »aptitude«
für Debian und Derivate. Die Dokumentation
des Produkts verschweigt
tückischerweise, dass »unzip« ebenso obligatorisch
ist. Im Test anlässlich dieses
Artikels mit Ubuntu Server 12.04 führte
das Fehlen des Entpackers anfänglich zu
mysteriösen Effekten.
Sind Server und Clients mit der nötigen
Software bestückt, darf der Admin begin-
© Marcin Balcerzak, 123RF
Sysadmin
www.linux-magazin.de ACMP 08/2012
68
Abbildung 1: Die Konsole von ACMP unmittelbar nach dem Einloggen zeigt sich
gut strukturiert und bei aller Detaildichte übersichtlich.
Abbildung 2: Der Dialog dient zur Datenerfassung von Linux- und Mac-OS-
Clients. Hier will ACMP beispielsweise die Benutzerkennung wissen.
nen Linux-Clients anzubinden. Im Test
mussten zwei virtuelle Maschinen mit
Ubuntu Server 12.04 und Fedora 16 als
Testkandidaten herhalten.
Erfassen von Linux-Clients
Abbildung 1 zeigt die Konsole von ACMP
nach dem Einloggen. Im Menü »Client
Commands | Erweiterte Inventarisierung«
findet sich der Eintrag »Linux und Mac OS
Inventarisierung«. Ein Doppelklick darauf
(oder Rechtsklick und »Execute«)
führt zum nächsten Dialog mit weiteren
Client-Kommandos.
Ein Klick auf »Next« bringt den Admin
zur Wahl des Clients, was ein wenig verwirrend
ist, da er ja erst einen oder mehrere
Clients erfassen will und nicht mit
einem vorhandenen arbeiten. Er wählt
hier den Client, der die SSH-Logins ausführt,
um andere Clients zu erfassen, also
den ACMP-Server oder den Rechner, auf
dem die Konsole läuft.
Danach erscheint der Dialog in Abbildung
2. Hier gibt der Admin die Anmelde-
Informationen für die CIFS-Freigabe an,
die Benutzerkennung, mit der sich das
Tool einloggt (Root oder ein Benutzer, der
»sudo« ausführen darf), sowie entweder
einen IP-Bereich, den ACMP durchprobieren
soll, oder eine Liste mit einzelnen
IP-Adressen. Nun loggt sich das Skript
auf allen Systemen ein, zu denen es Zugang
erlangt, kopiert das Archiv mit den
Python-Skripten hinüber und führt das
Registrierskript aus. Ein Parameter weist
es dabei an, das erzeugte XML-File auf
dem CIFS-Share abzulegen.
Das alles passiert asynchron, da das
Skript eine Weile auf den Systemen beschäftigt
ist, um alle Informationen einzusammeln.
Daher meldet sich das GUI
zügig zurück, doch die Systeme tauchen
noch nicht in der Datenbank auf. Der
Administrator kann aber kontrollieren,
ob die erzeugten Daten sich bereits auf
dem Share befinden.
Freigaben konfigurieren
Bevor der Import gelingt, muss der Admin
den Agentless Scanner konfigurieren. Für
den XML Importer sind die CIFS-Freigabe
(der UNC-Pfad in der Form »\\Servername\Freigabe«),
die Domain (im LDAP-
FQDN-Format »dc=Example,dc=com«),
Username und Passwort sowie das Intervall
in Sekunden nötig, mit dem ACMP
in diesem Share nach neuen Daten suchen
soll. Es lassen sich zudem mehrere
Share s angeben.
Wenn der XML-Importer dann auf das
Share zugreift, liest ACMP die Daten aus
und löscht die Dateien. Im Gegenzug
taucht das System in der Datenbank auf.
Das Whitepaper zur Konfiguration des
Agentless Scanner [1] beinhaltet eine
Übersicht der Kommandozeilen-Optionen
und empfiehlt, das Skript regelmäßig per
Cronjob laufen zu lassen. Das wiederholte
Starten des Skripts aktualisiert die
Datenbankeinträge, erzeugt aber zum
Glück keine Dubletten.
Die Inventarisierung erfasst die Festplatten
jedes Clients, das CPU-Modell, Bios-
Informationen (sofern »dmidecode« sie
auslesen kann), Speicher und weitere
Hardware (Abbildung 3). Dazu kommen
Abbildung 3: Lohn der Mühe: Auch ohne Agent auf
dem Client trägt ACMP alle wichtigen Informationen
über die Hosts im Netz zusammen.
ACMP 08/2012
Sysadmin
www.linux-magazin.de
69
Abbildung 4: Per Drag & Drop schiebt der Administrator das »Execute Shellscript«-Kommando in
den weißen Kommandobereich.
Abbildung 5: Spartanisch, aber seiner Aufgabe gewachsen: Der
Editor für Shellskripte im Client Command Center.
Netzwerk-IP, MAC-Adresse(n) und Netzmaske.
Installierte Software erforscht
ACMP mit »rpm« beziehungsweise
»dpkg«, was auf Debian-Systemen offenbar
etwas länger dauert als auf RPMbasierten.
Außerhalb des Paketmechanismus
installierte Software bleibt damit
naturgemäß unberücksichtigt.
Kommandos ausführen
Das offensichtlich primär für Windows-
Clients entwickelte Client Command Center
unterstützt den Admin beim Anlegen,
Testen und Ausrollen von Skripten. Dabei
hat der Hersteller auch an eine Skript-
Versionierung gedacht. Ein Kommando
legt der Admin im Client Command Center
mit »Create« an. Daraufhin erscheint
ein Fenster wie in Abbildung 4.
Per Drag & Drop schiebt der Admin ein
SSH-Kommando, im Beispiel »Execute
Shellscript«, in den weißen Kommandobereich.
Dann editiert er es im Sinne
eines Shellskripts (Abbildung 5), das
ACMP später ausführt. Die Standardausgabe
und den Exitcode des Skripts bekommt
ACMP zurückgeliefert, sie lassen
sich hier weiterverarbeiten.
Zur Skript-Definition gehören auch Benutzerdaten
für den Client. Hier liegt der
Security-Hase ein bisschen im Pfeffer:
ACMP sieht vor, dass die Logins aller
Hosts gleich sind. Es ist zwar möglich,
mit einer SSH-Schlüsseldatei zu arbeiten,
jedoch empfiehlt es sich, auf den
verwalteten Systemen einen Benutzer anzulegen,
der mittels Sudo administrative
Tätigkeiten ausführen darf.
»Release« stellt das Client-Kommando in
dieser Version verwendbar bereit, jede
Änderung erfordert eine neue Version des
Kommandos. Als praktisch erweist sich
die Möglichkeit, Client-Kommandos auf
Gruppen von Rechnern anzuwenden.
Die Softwareverteilung
Eine Software-Installation ist ein spezielles
Client-Kommando, das die Installationsroutine
in einen Wrapper packt. Ein
GUI-Wizard erleichtert den Vorgang: Der
Admin klickt im Client Command Center
auf »Create«, woraufhin in der Leiste über
dem Navigationsbaum ein Linux-Pinguin
erscheint. Dieser führt zu dem genannten
Software Packet Wizard.
Der Admin wählt nun zwischen RPMund
Deb-Paketen oder benennt ein eigenes
Installskript. Für die Paketinstalltion
zieht ACMP das »rpm«- beziehungsweise
»dpkg«-Kommando heran, das Abhängigkeiten
allerdings nicht automatisch
auflöst. Aagon prüft derzeit, wie eine
spätere Version das Problem mit »yum«
oder »apt‐get« lösen könnte.
Der Administrator lädt die für die Clients
vorgesehene Software auf den Aagon-
Server hoch oder spezifiziert eine Download-URL.
Bei den Parametern lässt sich
auch hier nur ein einziges Benutzerkonto
angeben. Das macht eine einheitliche
Kennung mit identischen Passwörtern
auf allen Systemen erforderlich.
Geht auf den Clients beim Ausrollen von
Software etwas schief, bekommt ACMP
und damit der Admin davon nichts mit
– Fehlermeldungen des Clients erscheint
nicht in der Konsole, bei Verdacht muss
der Admin in den Logdateien suchen.
Zumindest ein Indikator in der grafischen
Konsole wäre wüschenswert.
Für Landschaften mit
Farbflecken
In einer homogenen Linux-Umgebung
ergibt es keinen Sinn, ausgerechnet einen
Windows-Server hinzustellen, um
die Linux-Rechner zentral zu verwalten.
Wer aber ein Windows-lastiges Netz mit
ein paar Linux- oder Mac-OS-Systemen
zu verwaltet hat, fährt mit ACMP sicher
besser als mit allen selbst gestrickten Lösungen
– auch wenn im Test die eine oder
andere Funktion gefehlt hat.
Der Anbieter Aagon betont, dass die vorliegende
Version die erste mit Nicht-Windows-Unterstützung
ist, und versichert,
in diese Richtung weiter zu entwickeln.
Positiv fiel der Herstellersupport auf, der
die Tester nach Kräften unterstützte und
alle aufgetretenen Probleme aus dem
Weg zu räumen half. (jk)
n
Infos
[1] Aagon Consulting: [http:// www. aagon. de]
[2] ACMP Pro: [http:// www. aagon. de/ de/
produkte/ acmp‐suite/ pro. html]
Der Autor
Konstantin Agouros arbeitet bei der N.runs AG
als Berater für Netzwerksicherheit. Dabei liegt
sein Schwerpunkt im Bereich Telekommunikationsanbieter.
Sein Buch „DNS/DHCP“ ist bei Open
Source Press erschienen.
Sysadmin
www.linux-magazin.de Owncloud 4 08/2012
72
Owncloud 4 bringt Verschlüsselung, Versionierung – und Ärger
Wolke mit Ladung
Kommerzielle Onlinespeicher wie Dropbox oder Hidrive legen Anwenderdaten zentral und von überall erreichbar
ab. Owncloud will Anwendern das Gleiche bieten, aber mit Open Source und auf dem eigenen Server. Die
mit vielen Features aufgeladene Version 4 erzeugte jedoch bei den Linux-Magazin-Testern Groll. Andrej Radonic
© leksustuss, 123RF.com
Die Ankündigung klang gut: Mit der aktuellen
Version 4.01 stellt das Owncloud-
Projekt (OC, [1], [2]) ein umfassendes
Softwarepaket bereit, mit dem fast jeder
Anwender kinderleicht seine eigene private
Cloud ins Netz stellen kann, um
komfortabel wie bei der proprietären oder
kostenpflichtigen Konkurrenz Dateien
und Dokumente zentral zu verwalten,
auf PCs, Notebooks und Smartphones zu
schieben und mit anderen zu teilen.
Das ist rund
Der Zugriff auf die Owncloud-Services
erfolgt mittels Webdav oder über den OC-
Webclient. Um das Paket abzurunden,
haben die Entwickler vor allem für die
mobilen Arbeitsnomaden etliche praktische
Helfer integriert. Neben der reinen
Dateienverwaltung finden sich ein zentraler
Kalender sowie ein gehostetes Adressbuch,
das zentral Termine und Kontakte
aufnimmt und ähnlich wie Apples
I-Cloud das Bearbeiten derselben über
den Webbrowser erlaubt.
In Version 4 haben diese Apps, die sich
über die Plugin-Schnittstelle leicht um
weitere Applikationen ergänzen lassen,
diverse verschiedene Verbesserungen
erfahren: Anwender können Kalender
jetzt innerhalb von Gruppen teilen, Dateien
lassen sich im Webbrowser per
Drag & Drop hochladen. Der Admin darf
manuell mittels Themes die Fassade seiner
Wolkenburg den eigenen Wünschen
Steckbrief Owncloud
Owncloud ist in PHP implementiert und nutzt als
Datenbank MySQL, SQlite oder PostgreSQL. Die
in der Cloud abgelegten Daten können Admins
mittels Webdav oder über den OC-Webclient
erreichen und verwalten.
Zusätzlich stehen dedizierte Clients für Windows
und Linux zur Verfügung. Die Protokolle
Caldav und Carddav bauen Brücken zu Programmen
für Termin- und Adressenverwaltung auch
und gerade auf Mobilgeräten.
anpassen. Überall gibt der Benutzer Daten
jetzt differenzierter ein, zum Beispiel
unterteilt er Kontakte in Gruppen. Der
neue Viewer für Open-Office-Dateien
stellt deren Inhalte direkt im Web-Dateimanager
dar.
Wichtiger als der Webclient, der leider
nicht über eine für Smartphones optimierte
Oberfläche verfügt, sind die dedizierten
Clients. Die Entwickler haben die
bereits bekannten Mirall-Clients für Linux
und Windows [3] kräftig überarbeitet,
der im Linux-Land beliebte Browser
Rekonq gleicht auf Wunsch seine Lesezeichen
mit Owncloud ab. Ein nativer
Android-Client [4] ist bereits am Start
und bietet Support für Dateisynchronisation
sowie den Austausch von Terminen,
Kontakten und Bildern (Abbildung 1).
Die I-OS-Variante für Apple-Geräte soll
in Kürze folgen.
Dateiverschlüsselung mit
Blowfish
Nichts geändert hat sich hingegen an der
Philosophie des Projekts: Communityund
Enterprise-Ausgabe basieren auf
demselben Code. Bei der Funktionalität
des Back end hat sich hingegen einiges
getan. Mit der neuen Verschlüsselungs-
Im Kern verfügt Owncloud über die Applikationen:
Dokumente, Kalender, Kontakte, Musikplayer.
Weitere Funktionen lassen sich über
Plug ins ergänzen, beispielsweise eine Aufgaben-
oder die Lesezeichen-Verwaltung inklusive
Bookmarklet für den Browser.
Erhältlich ist Owncloud in der (Kosten-)freien
Community Edition sowie als Enterprise Edition
unter dem Namen Owncloud Enterprise 2012,
für die der Hersteller auch Support leistet.
Abbildung 1: Mit der Android-App gleichen
Owncloud-Anwender ihre Dateien auch mit mobilen
Geräten ab.
funktion bedienen die Entwickler Verteidiger
der Datensicherheit, ein Aspekt,
der viele Anwender überhaupt erst dazu
motiviert, über eine eigene Wolke nachzudenken.
Hier kann Owncloud gegenüber
der Konkurrenz durchaus punkten,
Dropbox verschlüsselt beispielsweise erst
mit externen Tools.
Schon die Vorgängerversionen sicherten
den Datenverkehr zwischen Client und
Server per SSL. Jetzt verschlüsselt die
Owncloud-Wolke zusätzlich alle Dateien
(optional) vollautomatisch nach der
Ablage im Storage. Zum Erzeugen des
Schlüssels dient das Passwort des Anwenders,
die Dateien encryptet der Blowfish-
Algorithmus (Abbildung 2).
Äußerst praktisch für alle, die aktiv Dokumente
produzieren, ist im Zusammenhang
mit der wolkigen Datei-Ablage die
neue Versionsverwaltung (Abbildung
3). Im Zweifel kann jeder Anwender so
schnell auf die letzte oder eine andere
Vorgängerversion einer geänderten Datei
zurückgreifen, ein Feature, das in vielen
Dokumentenmanagement-Systemen in
Teams hilfreiche Dienste leistet.
Mit Vorsicht zu genießen
Doch Vorsicht ist geboten: Diese neue
Fähigkeit berücksichtigt nicht einen etwaigen
erneuten Upload derselben Datei
über den Webclient, sie verfolgt nur jene
Änderungen, die Anwender im Client
oder vor einer Synchronisierung über
Webdav vorgenommen haben.
Ambitionierte Cloudverwalter mounten
in Version 4 endlich auch externe
Storage-Bereiche – und das völlig transparent.
Samba ist noch in Vorbereitung,
aber FTP, Webdav und Open Stack Swift
sind bereits dabei. Der Kasten „Externen
Storage konfigurieren“ hilft beim
Einrichten.
Weitere Neuerungen finden sich im Inneren
der Wolke, wo die Entwickler die
Kompatibilität der zentralen Protokolle
Webdav, Caldav und Carddav optimierten
oder dem Owncloud-Server das
Syslog-Protokoll beibrachten. Die Userdaten
lassen sich jetzt importieren und
exportieren.
Installation unter SLES,
RHEL, Univention
Die Installation von Owncloud ist schnell
erledigt und gelingt auf Linux und der
BSD-Familie genauso gut wie unter
Windows. Der Webdav-Stack ist fester
Bestandteil des Owncloud-Service und
verlangt keine Sonderbehandlung. Neben
der manuellen Installation stehen für
die gängigen Linux-Derivate wie Debian,
Ubuntu, Open Suse, RHEL, SLES und
Fedora Binärpakete bereit.
Neu ist das Paket für den Univention
Corporate Server (UCS), das Owncloud
automatisch mit dem LDAP des UCS Directory
Server verbindet. Dies bietet laut
Univention-Geschäftsführer Peter Ganten
einen strategischen Vorteil für die
Anwender: „Wir empfehlen Owncloud
Externen Storage konfigurieren
Um einen externen Storage in Owncloud einzubinden,
aktiviert der Systemverwalter im
Admin-GUI zunächst die entsprechende App,
öffnet danach die Datei »config/mount.php«
und definiert hier die benötigte Konfiguration
als PHP-Array:
Sysadmin
www.linux-magazin.de Owncloud 4 08/2012
74
Cloudlösung eher als zumindest in einigen
Teilen unfertige Software, die eigentlich
das Etikett Beta oder gar Alpha
tragen müsste. Den ersten Hinweis darauf
gibt schon die Release-Ankündigung für
4.01. Hier heißt es: „Für den Einsatz unter
Produktionsbedingungen empfehlen
wir weiterhin Owncloud 3.x oder Owncloud
2012, während wir verschiedene,
von Usern benannte Fehler jagen.“ Zwar
ist solch eine Empfehlung durchaus legitim.
Aber sie finden sich eher in Betaversionen
oder Release Candidates, nicht
aber bei Final Releases.
Wer die Software installiert, stößt bereits
nach kurzer Zeit auf erste Indizien, dass
der Warnhinweis durchaus berechtigt ist:
In weiten Teilen finden sich recht offensichtliche
Fehler. Die Weboberfläche
nervt mit zahlreichen Bugs und Darstellungsproblemen.
Durchgängig bedienbar
ist sie offenbar nur mit Mozilla Firefox.
Mit Chrome scheitern selbst einfache
Operationen wie das Hinzufügen eines
Bildes zu einem Kontakt. Der Internet
Explorer lässt sich gar nicht zuverlässig
verwenden, was aber auch an dessen
HTML-5-Support liegen könnte.
Der Test offenbart eine
lange Liste von Fehlern
Auch der Webclient zeigt Schwächen, vor
allem bei der Bedienung: Sortieren der
Dateien ist nicht vorgesehen. Hat der Anwender
einmal Dateien freigegeben, kann
er später nicht mehr nachvollziehen, wer
darauf Zugriff hat.
Die Mängelliste lässt sich beliebig lange
fortführen: Im Dateimanager kann der
Anwender zwar interaktiv Textdateien
anlegen, jedoch verweigert es der Webclient,
diese später inline zu editieren.
Die Freigabe (Sharing) von Dateien auf
User-Ebene funktioniert
nur bedingt, in
unseren Tests wurden
nachträglich hinzugefügte
Benutzer nicht
als mögliche Kandidaten
gelistet. Dafür zerstörte
das Verschlüsselungssystem
erfolgreich
und irreversibel
Dateien von Microsoft
Office.
Viele Anwender der
Version 3 berichten,
dass die Updateprozedur
auf die aktuelle
Release zum vollständigen Verlust der
Dateien führte. Der Windows-Sync-Client
stürzt regelmäßig und reproduzierbar ab.
Software für den Produktivbetrieb sieht
anders aus. Umso befremdlicher wirkt
die Ankündigung, bereits im August dieses
Jahres käme Version 5.
So ein Releasekonzept sollte man mit
Vorsicht genießen. Gerade im Open-
Source-Umfeld kündigen Firmen und
Projekte gerne frühzeitig Alpha- und
Beta-Versionen an, bereiten Releases mit
Release Candidates vor und holen ausgiebig
Feedback der Community ein, bevor
sie eine Version zur Final Release küren.
Das Owncloud-Team hingegen hat wohl
auf die Überholspur gesetzt und kann
durch die unreife Ware viele der abgegebenen
Versprechungen nicht einhalten.
Die Enttäuschung wiegt so schwer, weil
das Konzept und die Ansätze sehr vielversprechend
sind.
Codequalität und Verschlüsselung:
Mangelhaft
In dieses Bild passen manche Hinweise
auf mangelhafte Qualität des Codes und
Abbildung 2: Owncloud unterstützt seit Version 4 auch das automatische
Verschlüsseln von Dateien.
der Implementierung. So hat der Kryptographie-Spezialist
Pascal Junod die Verschlüsselungsmechanismen
von Owncloud
analysiert [5] und kommt zu dem
Ergebnis, dass von sicherer Kryptographie
keine Rede sein kann. Wer derzeit
eine robuste Verschlüsselung will, muss
sich mit Enc-FS behelfen und dieses für
seinen OC-Server aufsetzen.
Wolke mit Potenzialunterschieden
Owncloud trifft mit der Idee, eigene
Clouds simpel aufsetzen und selbst betreiben
zu können, den Nerv der Zeit.
Das Featureset entwickelt sich mit der
aktuellen Version 4 in die richtige Richtung,
das Konzept kann in weiten Teilen
überzeugen.
Der Reifegrad entspricht jedoch höchstens
dem einer Betaversion, und genau
so sollten die Entwickler ihr Kind fairerweise
auch nennen. Es wäre an der Zeit,
eine ganze Reihe zentraler Punkte der
Stabilität und Sicherheit anzupacken, damit
Owncloud für den produktiven Einsatz
bereit wird. (mfe)
n
Abbildung 3: Owncloud 4 bringt auf Wunsch auch eine Versionskontrolle für die Dokumente mit – aber nur für
Clients und Webdav-Sync. Benutzer anderer Clients bleiben außen vor.
Infos
[1] Owncloud: [http:// owncloud. org]
[2] Ahmad Hammad, Ariel Garcia, „Eigenes
Quellwölkchen“: Linux-Magazin 12/11, S. 52
[3] Mirall:
[https:// gitorious. org/ owncloud/ mirall]
[4] Owncloud auf Android:
[http:// owncloud. org/ support/ android/]
[5] Owncloud-Verschlüsselung ist wirkungslos:
[http:// crypto. junod. info/ 2012/ 05/ 24/
owncloud‐4‐0‐and‐encryption/]
Der Raspberry Pi im Praxistest
Leckeres Törtchen
Raspberry Pi 08/2012
Hardware
Raspberry Pi heißt ein scheckkartengroßer Mini-PC für gut 30 Euro, der unter Linux-Fans für Furore sorgt.
Wer trotz des verunglückten Herstellervertriebs einen bekommen hat, ein wenig Geduld und die richtige SD-
Karte mitbringt, dem schmeckt das Himbeertörtchen. Franz Kinader, Markus Feilner
www.linux-magazin.de
75
Ein schmuckloser Himbeerkuchen ohne
Sahne, Schokostreusel oder Fruchtsoße
ist der Raspberry Pi [1]. Aus der Schachtel
rutscht eine Platine ohne Zubehör
– keine SD-Karte, kein Stromkabel – als
Ergebnis einer Bestellung, die Monate
Wartezeit, unzählige E-Mails, Telefonate
und Nerven gekostet hat.
Am Preis (knapp 40 Euro inklusive 6 Euro
Versand und 20 Prozent UK-Tax) gibt’s
dagegen nichts zu bemängeln: Das aufgeräumte
Mini-Board (Abbildung 1) beeindruckt
mit vielen Anschlussmöglichkeiten
auf einer kreditkartengroßen Fläche.
Neben HDMI, Composite, 3,5-mm-Klinke
für den Audio-Ausgang und SD-Slot verfügt
das Raspberry Pi auch über zwei
USB-Schnittstellen. Das klingt nach Hightech
für die Hemdtasche.
Torte sucht Anschluss
Auch eine 100-MBit-Ethernet-Schnittstelle
ist auf dem Modell B des Pi verbaut (das
angekündigte, noch günstigere Modell A
soll später kommen). Zu den GPIO-Pins
(General Purpose I/O) für Hardware-Basteleien
und Erweiterungen gesellt sich
ein CSI-Port für Zusatzgeräte wie Kameras.
Doch Vorsicht: Die Anschlüsse ragen
über das Board hinaus, sodass schnell ein
Pin abbricht.
Auch die Chips auf dem Board haben so
ihre Eigenheiten: Als besonders ärgerlich
für Linux-Puristen erweist sich die
Broadcom-GPU (Video-Core IV). Sowohl
Hardware als auch Treiber sind proprietär.
Ob der Hersteller langfristigen Support
bietet, ist also fraglich. Anders der
Hauptprozessor: Die Spezifikationen des
ARM1176JZF-S mit 700 MHz, der sich
mit der GPU den System on a Chip (SoC)
teilt, liegen offen.
Um die Kosten niedrig zu halten, haben
die Entwickler auf einige Details verzichtet,
etwa auf eine Echtzeituhr. Dank der
GPIO-Pins lässt sich die aber nachrüsten.
VGA oder DVI hält der Hersteller
offensichtlich für überholt, daher findet
sich nur je ein HDMI- und Composite-
Anschluss auf dem Board. Tabelle 1 zeigt
die technischen Details des Törtchens,
auf Linux-Magazin Online Plus lässt sich
nachlesen, welche Klimmzüge die Autoren
machen mussten, um in den Genuss
des Geräts zu kommen.
Wer den Raspberry Pi starten will,
braucht zunächst eine SD-Karte mit 4
GByte Speicher für das Betriebssystem.
Weil die im Lieferumfang nicht enthalten
ist, führt den stolzen Besitzer der nächste
Weg zum Elektronikhändler. Wer kein
USB-Ladegerät eines alten Handys mehr
übrig hat, kann dort auch gleich eins mitbestellen.
Das übers Micro-USB-Ladekabel
angeschlossene Ladegerät sollte aber
mindestens 700 Millampere bei 5 Volt
bringen, besser mehr, doch dazu später.
Dann noch USB-Tastatur und Maus, falls
eine grafische Oberfläche geplant ist, ein
HDMI- oder Composit-Kabel – und schon
kann’s losgehen.
Im Web finden sich auch schon Gehäuse
zum Kauf und Templates für 3-D-Drucker
zum Download. Findigen Bastlern
reichen vielleicht ein paar Legosteine,
um selbst ein Gehäuse zu gestalten. Aufgrund
der geringen Wärmeentwicklung
des Pi ist das kein Problem.
Die Auswahl der SD-Karte, die im eingesteckten
Zustand die Platine um fast
einen Zentimeter überragt (Abbildung
1,) verlangt viel Aufmerksamkeit. Zwar
Online PLUS
Auf Linux-Magazin Online Plus lesen
Sie ausführlich die abenteuerliche Geschichte
des kleinen Raspberry PI und seines
beschwerlichen Weges in die Redaktion des
Linux-Magazins.
© Ruth Black, 123RF
Hardware
www.linux-magazin.de Raspberry Pi 08/2012
76
2
5
1
funktioniert fast jede Class-4-Card (mit
Übertragungsrate 4 MByte/s), aber richtig
flott ist der Pi damit nicht.
Besser wären Karten höher als Class 6
– hätte nicht der Kartenleser etwas dagegen
[2]. Pete Lomas, der das Raspberry
Pi mit designt hat, fand heraus
[3], dass sich der Herstellungsprozess
der SD-Karten geändert hat, weshalb der
Bootloader der Broadcom-Karten die Kooperation
verweigert.
Das Pi-Problem: SD-Karten
Ob die eigene SD-Karte funktioniert, lässt
sich leider ohne Test nicht erkennen, da
die Hersteller das Produktionsdatum
nicht darauf vermerken. Aber Hilfe ist in
der Kompatibilitätsliste der Community
[4] zu finden. Ob irgendwann ein Firmware-Update
[5] das Problem lösen kann,
war zu Redaktionsschluss unbekannt,
Broadcom untersucht das Problem noch.
Falls das Board eine Karte erkennt, zeigt
sich das an den LEDs auf dem Board:
Bleibt die Power-LED rot und als einzige
Leuchte aktiv, dann funktioniert die
Karte leider nicht.
Auf der Homepage des Raspberry Pi liegen
fertige Images und eine Anleitung
für Windows, Linux und Mac OS X [6].
Unter Windows landet das Debian-Image
mit dem Win32 Disk Imager auf der SD-
Karte, unter Linux reicht »dd« mit dem
Parameter »bs=1M«:
dd bs=1M if=debian.img of=/dev/sdx>
3
Abbildung 1: Als Schwachstellen am Pi gelten der Kartenleser 1, der nur auserlesene SD-Cards 2 akzeptiert,
die Pins 3 für Erweiterungen, die allzu leicht abbrechen, und der ins SoC 4 integrierte Grafikchip von
Broadcom, für den es keinen freien Treiber gibt. Ebenfalls gewöhnungsbedürftig: Es existiert kein Bios und
kein Ein-/Aus-Schalter. Darum einfach ein USB-Netzgerät 5 anstecken – los geht’s.
4
3
Das Debian mit LXDE funktionierte im
Test problemlos, außerdem stehen Images
eines Arch Linux sowie von Qton
Pi, das mit einem optimierten SDK zum
Entwickeln von Qt-Anwendungen ausgestattet
ist. Der Fedora-Remix ist jüngst
von der Homepage verschwunden, wohl
weil er noch auf Fedora 14 basierte und
ein Update auf Fedora 17 ansteht.
Ohne Bios, ohne Uhr
Zum Einschalten des Geräts steckt der
stolze Besitzer einfach das USB-Stromkabel
in die USB-Buchse des Raspberry Pi.
Beim Ausstecken ist daher Vorsicht angebracht.
Das Betriebssystem sollte korrekt
heruntergefahren sein. Zumindest ein
»sync« auf den Dateisystemen ist nötig,
sonst droht Datenverlust.
Tabelle 1: Hardware
Modell A
Auch auf ein Bios haben die Entwickler
verzichtet, das Linux startet direkt von
der SD-Karte, mit diversen Einstellungen
als Bootparameter. Als Filesystem nutzt
das Debian-Image Ext 4. Beim ersten
Start ist der Gebietsschema-Parameter auf
Großbritannien (»gb«) eingestellt, was
zu lästigen Problemen beim Login führt,
weil der Pi das UK-Keyboard-Layout verwendet
und die voreingestellten Credentials
(Benutzername »pi« und Passwort
»raspberry«) ein y enthalten.
Nach dem Login erhält der Benutzer mit
»sudo su« Rootzugang. Zuerst ändert er
das Gebietsschema in der Datei »/etc/
default/keyboard«, zum Beispiel mit dem
Editor Nano, zu »XKBLAYOUT="de"«.
Anschließend erledigt »dpkg‐reconfigure
locales« das für den Rest des Systems.
Wer hier in der Liste »de_DE.UTF‐8« via
Leertaste auswählt und bestätigt, beschäftigt
die kleine Hardware gleich mal
einige Minuten.
Nach dem fälligen Neustart des Systems
liegt ein deutschsprachiges Debian vor,
und das SoC sollte trotzdem keinen nennenswerten
Temperaturanstieg aufweisen.
Der Raspberry blieb im Test mit den
Standardeinstellungen stets handwarm.
Zu wenig RAM
Aber nicht nur die langsamen SD-Karten
erschweren dem Benutzer den Weg
zum schnellen Desktop, sondern auch
der knappe Hauptspeicher. Der reicht für
Modell B
Maße
86 mm x 54 mm x 17 mm
Gewicht
45 Gramm
SoC
Broadcom BCM2835
Prozessor
ARM11 76JZF-S, 700 MHz
Grafikprozessor
Broadcom Video Core IV
Arbeitsspeicher
256 MByte SDRAM
USB-2.0-Anschlüsse 1 2
Netzwerk - 10/100 MBit RJ45
Bussysteme
I 2 C, UART, SPI, 16 GPIO-Pins
Ton-/Video-Ausgabe
3,5-mm-Klinkenstecker, Composite, HDMI
Massenspeicher
SD/MMC-Card- oder SDIO-Kartenleser
Stromquelle
5-Volt-Micro-USB
Stromverbrauch 500 mA (2,5 Watt) 750 mA (3,5 Watt)
Betriebssysteme
Debian 6, Arch Linux, Qton Pi, Open ELEC (XBMC)
Preis 25 Euro 34 Euro
nahme sollte der Besitzer vorsichtig sein
und eher ein Netzteil kaufen, das höhere
Stromstärke erlaubt. Offizielle Vorraussetzung
beim Modell B sind 750 mA.
Im Unterzucker
Raspberry Pi 08/2012
Hardware
Abbildung 2: Per SSH auf dem Pi angemeldet findet der Anwender ein auf den ersten Blick vollständiges
Linux-System. Der Debian-Kernel erkennt die ARM6-Architektur.
Chrome oder Firefox nicht, besser arbeitet
der Ressourcen-schonende Browser
Midori, der zwar kein HTML 5, Flash
und Java kann, aber mit flottem Surfen
belohnt. Bei komplexeren Seiten ist die
CPU jedoch schnell ausgelastet.
Die Auswahl weiterer Desktop-Software
gestaltet sich eher schwierig, da es sich
beim Pi um ein ARM-System handelt. Die
Installation von Paketen aus dem Raspberry-Pool
ist zwar kein Problem, aber
so umfassend wie ein i386- oder x64-Repository
ist der bei Weitem nicht. Richtig
problematisch wird es für Anwender, die
proprietäre Software einsetzen wollen,
denn ohne Quelltext ist auch der Weg
übers Cross-Compiling verbaut.
Geduld ist gefragt
Die Single-Core-CPU des Himbeertörtchens
gehört erwartungsgemäß nicht zu
den schnellen Zeitgenossen (Abbildung
2). Ihre Namensgeberin, die Kreiszahl Pi,
auf 4000 Stellen zu berechnen, beschäftigt
sie über zwei Minuten:
time echo "scale=4000; a(1)*4" | bc ‐l
real 2m11.914s
user 2m11.720s
sys 0m0.010s
Ein aktueller Intel i5 und ein AMD Phenom
schaffen das Gleiche in 15 Sekunden.
Der Shell-Taschenrechner »bc« nutzt
dabei immer nur einen Kern, daher ist es
egal, dass die beiden Desktop-Rechner
vier Cores bereitstellen.
In der Praxis reicht die Leistung meist
dennoch: Der Raspberry Pi ist mit einem
Full-HD-fähigem Grafikchip ausgestattet,
der im Test 1080p30-H.264-Videos ohne
Probleme mit XBMC (Open ELEC Image)
auf einen 47-Zoll-Fernseher wiedergeben
konnte, zumindest wenn als Datenquelle
ein NAS den Film „Big Buck Bunny“ [7]
bereitstellt. Die gleiche Videodatei von
der SD-Karte abzuspielen bereitet jedoch
kein Vergnügen: Mit der Class-4-Card
ruckelt der Film dauerhaft, mit funktionierenden
Class-10-Karten sind bessere
Ergebnisse möglich.
Himbeeren, flambiert
Wem die Leistung nicht reicht, der macht
sich ans Übertakten. Der ARM-Prozessor
läuft mit 700 MHz, der Hauptspeicher
mit 400 MHz und der Grafikprozessor
mit 250 MHz. Im Testlabor des Linux-
Magazins ließ sich die CPU auch mit 800
MHz betreiben, wobei der Raspberry Pi
aber sehr warm wurde, weshalb die Tester
von weiteren Steigerungen absahen.
Nach Berichten im Web gibt es Geräte,
die stabil mit 900 MHz laufen.
Aber weil der Pi keine Ventilatoren besitzt,
sollte ein Besitzer das Übertakten
ohne Extrakühlung nicht dauerhaft erwägen.
Außerdem hat der Broadcom-Chip
eine interne Sicherung, anhand derer der
Hersteller im Schadensfall die Übertaktung
nachweisen kann. Wen das nicht
abschreckt: Die Parameter für Takt und
Spannung (für CPU, GPU sowie RAM)
lassen sich einfach in der (neu zu erstellenden)
Datei »/boot/config.txt« eintragen.
Eine Liste erlaubter Werte findet
sich auf [8].
Auch bei den Angaben des Herstellers
rund ums Netzteil und die Stromauf-
Auch das erweist sich bald als zu knapp
bemessen, wenn der Benutzer USB-Hardware
anschließt. In Tests traten bereits
mit einem USB-Hub, zwei angeschlossenen
USB-Sticks, Maus und Tastatur wegen
akuter Unterversorgung einige Probleme
auf. Neben Read/Write-Fehlern auf der
SD-Karte, Eingabeproblemen (die Tastatur
arbeitete nur sporadisch oder wiederholte
die Eingabe endlos) schafften
es die Tester sogar, mit vier angesteckten
Standard-USB-Sticks, die Ethernet-
Schnittstelle lahmzulegen.
Trotzdem erhält der Besitzer einen günstigen,
stromsparenden Computer, der
für kleine Aufgaben im 24/7-Betrieb wie
etwa als Webserver oder VPN-Gateway
bestens gerüstet ist. Allzu rechenintensiv
sollte das aber nicht sein, lieber mit wenigen
Lese- oder Schreibzugriffen auskommen
oder sich auf Daten aus einem NAS
oder SAN stützen. Dann taugt der kleine
Himbeerkuchen auch als Mediaplayer für
den HD-Fernseher. Als Desktopersatz ist
er aufgrund des geringen Hauptspeichers,
fehlender ARM-Software und langsamer
Hardware aber nicht zu gebrauchen. n
Infos
[1] Raspberry Pi: [http:// www. raspberrypi. org]
[2] Warum funktioniert meine SD-Karte nicht?:
[http:// raspberrycenter. de/ handbuch/
warum‐funktioniert‐meine‐sd‐karte‐nicht
‐raspberry‐pi]
[3] Pete Lomas zum SD-Kartenproblem:
[http:// www. raspberrypi. org/ archives/ 837]
[4] SD-Karten-Kompatibilitätsliste:
[http:// elinux. org/ RPi_VerifiedPeripherals#
SD_cards]
[5] Neue Pi-Kernel auf Github:
[https:// github. com/ raspberrypi/ firmware/
tree/ master/ boot]
[6] Image-Anleitung: [http:// elinux. org/
RPi_Easy_SD_Card_Setup]
[7] Big Buck Bunny in HD:
[http:// www. bigbuckbunny. org]
[8] Boot-Parameter:
[http:// raspberrycenter. de/ handbuch/
configtxt‐konfigurationsdatei]
www.linux-magazin.de
77
Forum
www.linux-magazin.de Rechts-Rat 08/2012
80
Leser fragen, der Linux-Magazin-Ratgeber antwortet
Recht einfach
Urheberrecht, Verträge, Lizenzen und so weiter: In der Serie „Rechts-Rat“ erhalten Linux-Magazin-Leser verständliche
Auskünfte zu Rechtsproblemen des Linux-Alltags. Fred Andresen
© David Crockett, 123RF.com
Abbildung 1: Wer eigentlich Software schreibt
und nur als Dreingabe die PC-Hardware aufrüstet,
braucht keinen Meisterbrief.
In dieser Ausgabe geht’s um „meisterhaftes“
Festplatten-Aufrüsten, exotische
Rechtsfragen für IT-Dienstleister, Lizenzprobleme
bestimmter Headerdateien sowie
3-D-Raubkopien.
Meisterbrief für
iHardware-Upgrade?
Ich habe mich nebenberuflich, aber mit Gewerbeschein
darauf spezialisiert, für Gaststätten
Musik-Abspielprogramme (Playlist-Tools) zu
entwickeln beziehungsweise Zusatzsoftware
zu bestehenden Programmen zu schreiben, die
eine genaue Auswertung der abgespielten Musikstücke
erlaubt. Weil des Öfteren schon die
Kunden zugleich neue Festplatten und andere
Hardware installiert haben wollten, hat mein
Partner diese Arbeiten für mich übernommen.
Nun habe ich gehört, dass man für solche Konfigurationstätigkeiten
einen Meisterbrief benötigt
und in der Handwerkskammer Mitglied sein
muss. Darf ich weiterhin Festplatten, Soundkarten
und andere Hardware in die PCs meiner Kunden
einbauen oder muss ich sie wegen so etwas
zu einem anderen Betrieb schicken?
Steffi K.
Wenn Sie, wie Sie angeben, die Hardware-Umbauten
nur in unwesentlichem
Umfang neben der Tätigkeit der Software-
Installation und Programmerstellung ausführen,
dürfte es sich dabei um hilfsbetriebliche
Tätigkeiten oder minderhandwerkliche
Nebentätigkeiten handeln, die
Sie im Rahmen Ihres Gewerbebetriebs als
Systemdienstleister ausüben.
Für derartige Tätigkeiten besteht keine
Eintragungspflicht in die Handwerksrolle,
keine Meisterpflicht und keine besondere
Voraussetzung bei der Qualifizierung. Sie
dürfen sie unbesorgt auch künftig selbst
oder durch Mitarbeiter anbieten und
durchführen oder durchführen lassen.
Berufsrechtliche Vor-
ischriften
Wir verhandeln mit einer Arztpraxis über einen
Installations- und Wartungsvertrag für deren
EDV-Installation. Die Praxis betreibt ein schon älteres
EDV-Netzwerk mit einer Ärztesoftware, für
die noch ein Einrichtungs- und Wartungsvertrag
mit dem Lieferanten dieser Software besteht.
Die Ärzte verlangen im Vertrag eine Klausel, die
uns dazu verpflichtet, die berufsrechtlichen Vorschriften
einzuhalten.
Wir möchten den Auftrag gerne übernehmen,
befürchten aber, dass uns derartige Klauseln benachteiligen.
Welche Lösung bietet sich an?
G. P.
Eine Formulierung, nach der Sie „die berufsrechtlichen
Vorschriften“ (wohl der
Ärzte) einhalten sollen, ist viel zu weit
gefasst, als dass Sie als Vertragspartner
absehen könnten, worauf Sie dabei zu
achten hätten. Neben allgemeinen und
eventuell besonderen datenschutzrechtlichen
Bestimmungen, Verschwiegenheitsoder
Aufbewahrungspflichten bezüglich
betroffener Daten oder der Zugangsberechtigungen
zum System einschließlich
der Kontrollmaßnahmen könnten auch
Bestimmungen des Medizinproduktegesetzes
oder anderer spezieller Normen
heranzuziehen sein. Eine detaillierte
Prüfung im Einzelfall wird schwierig. So
etwas kann nur ein Spezialist kostenintensiv
erstellen. Ihr potenzieller Kunde
möchte diesen Aufwand offenbar auf Sie
abwälzen.
Aufgrund der unabsehbaren rechtlichen
Konsequenzen kann lediglich die umgekehrte
Vertragsgestaltung in Ihrem Interesse
liegen: Statt dieser Generalklausel
sollten Sie eine Vereinbarung treffen,
nach der der Auftraggeber (die Praxisgemeinschaft)
konkret darlegt, welche besonderen
berufsrechtlichen Anforderungen
Sie als Systemdienstleister erfüllen
müssen – am besten in Form einer de-
Mailen Sie uns Ihre Fragen!
Im monatlichen Wechsel mit aktuellen Fachbeiträgen
lässt das Linux-Magazin in der Serie
„Rechts-Rat“ Leserfragen durch einen
Rechtsanwalt kompetent beantworten. Was
immer Sie beschäftigt oder ärgert oder was
Sie einfach nur wissen möchten: Schreiben
Sie eine entsprechende E-Mail an die Adresse
[rechtsrat@linux-magazin. de].
Die Themen dürfen von Software lizenzen bis
zum Hardwarekauf reichen. Die Redaktion
behält es sich vor, abgedruckte Zuschriften
zu kürzen und eventuell enthaltene persönliche
Daten zu ändern.
zidierten Auflistung. Schließlich sollten
sich Ihre Vertragspartner als Ärzte besser
mit den für sie einschlägigen Bestimmungen
auskennen.
Meine Software, deine
iHeaderdatei
Ich habe eine Bibliothek unter der LGPL geschrieben.
Via »dlopen()« kann sie Backends
laden, die ich ebenfalls selbst geschrieben habe.
Die Backends können wiederum Plugins laden.
Das API für diese Plugins liegt als Headerfile
in rund 370 Zeilen C++ vor. Die Benutzung des
Headerfiles ist frei, wenn ein Entwickler Plugins
schreibt, jedoch lizenzpflichtig, wenn man einen
Plugin-Host programmiert. Ich besitze eine
Lizenz für die Nutzung des Headerfiles für mein
Plugin-Host-Backend.
Nun stellt sich mir die Frage, ob ich das Backend
unter der LGPL veröffentlichen kann oder –
falls nicht – welche Lizenz in Frage käme? Das
Header file hat ja eine proprietäre Lizenz und
ohne die Datei lässt sich die Backend-Bibliothek
nicht übersetzen. Andere Projekte können zwar
gern den Quelltext meiner Bibliothek im Rahmen
der LGPL nutzen, das fragliche Headerfile dürfen
sie jedoch nicht ohne Lizenz verwenden.
Stefan S.
Sie können nicht mehr Rechte weitergeben,
als Sie selbst haben: In keinem Fall
sind Sie daher berechtigt, die von Ihrem
Code eingebundenen Header unter einer
neuen Lizenz weiterzuvertreiben. Wenn
Sie schreiben, Sie hätten eine Lizenz für
die Nutzung der Headerdatei für Ihren
Plugin-Host, gehe ich davon aus, dass
in dieser Lizenz lediglich das Nutzungsrecht,
nicht aber das Recht der Weitergabe
enthalten ist – mit anderen Worten:
Sie dürfen für die Erstellung eines lauffähigen
Programms das Headerfile einbinden
und dürften das erstellte Executable
dann auch beliebig oft weitergeben oder
verkaufen, dürfen es aber nicht in Quellform
an Dritte weitergeben.
An der Quelle
Man könnte auf den Gedanken kommen:
„Wenn ich den Code ohnehin in ausführbarer
Form weitergeben dürfte, warum
dann nicht auch gleich im Quelltext?“
Das ließe aber einen wichtigen Umstand
außer Acht, nämlich die Lesbarkeit des
Quelltextes und damit das enthaltene
Know-how. Weil das Urheberrecht dem
Programmierer unter anderem auch die
Verfügungsfreiheit lässt, wer dessen
Quellcode lesen darf und wer nicht,
ist das Weitergaberecht bezüglich des
Quellcodes nicht vergleichbar mit dem
Weitergaberecht bezüglich ausführbarer
Programme.
Auf der anderen Seite berührt die Lizenz
des Headerfiles Ihren Code nicht: Ihre
Quellen binden den Headercode ja nur
mittels einer Präprozessor-Direktive ein
und enthalten selbst keine Zeile davon.
Damit steht Ihnen für Ihren gesamten
Quellcode die Wahl zwischen allen möglichen
Lizenzformen und ‐inhalten frei.
Die Wahl der LGPL ist damit keinesfalls
zu beanstanden.
Problematische Weitergabe
Das eigentliche Problem ist wohl, ob und
wie Sie den Code, den das Headerfile
deklariert, zusammen mit Ihrem Code
als Paket weitergeben können. Denn vielleicht
dürfen Sie die Header frei weitergeben,
wenn diese für reine Plugin- und
nicht für Host-Programmierung genutzt
werden. Das könnte dazu verleiten, die
Header einfach mit ins Paket zu legen
und nur in einer möglicherweise sogar
„versteckten“ Readme-Datei darauf hinzuweisen,
dass deren Verwendung nicht
legal wäre. Was aber der Anwender, der
einfach nur einen Make-Durchlauf startet,
gar nicht mitbekäme.
Ich will Ihnen das keinesfalls unterstellen,
nur sei der Hinweis gestattet, dass
dergleichen sehr wahrscheinlich als Lizenzverletzung
zu werten wäre. Aber
vielleicht dürfen Sie die Quellen ja auch
gar nicht selbst weitergeben – nicht einmal
für die freie Benutzung im Rahmen
der Plugin-Programmierung.
Programmbestandteile aus verschiedenen
Quellen einzusetzen, für die unterschiedliche
Lizenzbedingungen zu beachten
sind, ist im reinen Anwender-Bereich
zwar unüblich, im professionellen Bereich
aber nichts Neues, gerade unter
den Unix-Betriebssystemen. Ein weiterer,
durchaus üblicher Ansatz ist es, vorkompilierte
Header zu verwenden: Prüfen
Sie gegebenenfalls anhand der konkreten
Lizenzbedingungen, ob die Weitergabe
vorkompilierter Header erlaubt ist.
17.-18. OCT. 2012
NUREMBERG
REGISTER NOW!
Die internationale Plattform für freie
Monitoringlösungen, Austausch und
Wissenserweiterung rund um das
Thema
Open Source Monitoring
INTENSIV-WORKSHOPS
am Vortag der Konferenz
·Pacemaker
·Config.-Management mit Puppet
·Icinga Kickstart
www.netways.de/osmc
[Deutschland-Premiere]
[Puppet Camp]
[19. October 2012]
www.netways.de/puppetcamp
presented by
Möglicherweise können Sie diese dann
NETWAYS ®
NETWAYS ®
Forum
www.linux-magazin.de Rechts-Rat 08/2012
82
einfach in das Paket Ihres Plugin-Host-
Backend legen. Auch dabei ist allerdings
zu beachten, dass Ihre Abnehmer nicht
automatisch das Recht erwerben, diese
vorkompilierten Header ihrerseits weiterzugeben,
sodass das Paket mit den
vollständigen Quellen nicht durchgängig
freie Software wäre.
Der sicherste Weg ist es, ein „unvollständiges“
Paket unter der LGPL anzubieten
und den Abnehmern eine URL
zu nennen, unter der sie das benötigte
Headerpaket beziehen können, um es
vor dem Compiler-Durchlauf in Ihr Paket
einzufügen. Damit ist allen Lizenzbedingungen
entsprochen. Um die Lizenztreue
der Abnehmer brauchen Sie sich nicht zu
kümmern – und Ihr Paket bleibt in jedem
Fall echte LGPL-Software.
Fremde Körper als
iDruckauftrag
Wir planen, Dienstleistungen im Bereich 3-D-
Druck anzubieten: Auf einer Internetseite können
Kunden Dateien in einem bestimmten Format
einstellen (in späteren Ausbaustufen auch online
konstruieren), nach denen wir Objekte mit einem
3-D-Drucker fertigen und den Kunden zustellen.
Müssen wir auch bei körperlichen Produkten ans
Urheberrecht oder andere Rechte denken oder
ist das unproblematisch?
Anonym
Bei dem von Ihnen beschriebenen Verfahren
könnten bestimmte Figuren oder
das Design von Gebrauchsgegenständen
nachgeahmt beziehungsweise kopiert
werden. Bei Skulpturen oder Figuren
insbesondere künstlerischer Art, zu denen
etwa auch Comicfiguren oder dreidimensionale
Nachbildungen von Personen
oder Figuren der Literatur oder des Films
gehören, kommt eine Verletzung des Urheberrechts
in Betracht.
Bei anderen Gegenständen des täglichen
Gebrauchs geht es um Design, das aber
auch ohne besonderen künstlerischen
Wert rechtlich geschützt sein kann:
Nach dem Geschmacksmustergesetz
sind auch Entwurf und Formgebung von
Gebrauchsgegenständen schutzfähig, die
keine überdurchschnittliche oder „künstlerische“
Gestaltung aufweisen.
Während nach deutschem Geschmacksmusterrecht
eine Eintragung in ein Register
erfolgen muss, gibt es nach europäi-
Abbildung 2: Beim Herstellen und Kopieren dreidimensionaler Objekte sind Urheberrecht und Geschmacksmusterschutz
zu beachten.
schem Recht zusätzlich die Möglichkeit,
Geschmacksmusterschutz mit Wirkung
für die gesamte EU zu erlangen – sogar
ohne dass eine Eintragung in ein zentrales
Register erfolgen muss [1].
Wegen dieser fehlenden Registrierungspflicht
im Bereich des Urheberrechts und
des Gemeinschaftsgeschmacksmusters
lässt sich nicht vorab wirksam prüfen, ob
ein 3-D-Auftragsdruck fremde Rechte verletzt.
Daher sollten Sie sicherstellen, dass
vor Durchführung eine Freistellungserklärung
Ihrer jeweiligen Auftraggeber
vorliegt, nach der keine Rechte Dritter
an den übermittelten oder erstellten Entwürfen
bestehen, und dass die Auftraggeber
Sie von jeder Haftung freistellen,
die infolge bestehender konkurrierender
Rechte Dritter eintritt.
Privatkopie?
Beachten Sie auch, dass die Rechtsgrundlagen
über die Privatkopie, nach denen
eine Vervielfältigung urheberrechtlich
geschützter Werke für den privaten oder
eigenen Gebrauch auch durch Dritte zulässig
ist [2], nur dann gelten, wenn die
Vervielfältigung unentgeltlich oder auf
Papier oder einem ähnlichen Träger mittels
beliebiger fotomechanischer Verfahren
oder anderer Verfahren mit ähnlicher
Wirkung erfolgt.
Da nicht davon auszugehen ist, dass
Sie den 3-D-Druck kostenfrei anbieten
können, wird es für die Anwendung der
Privatkopie-Regelungen darauf ankommen,
ob die Rechtsprechung den 3-D-
Druck gleichwertig zur Papierkopie ansieht:
Selbst wenn man das physische
Ergebnis eines 3-D-Drucks als prinzipiell
vergleichbar zu einer 2-D-Papierkopie ansieht,
insbesondere weil es sich hier um
eine nicht digitale, sondern körperliche
Vervielfältigung handelt, ist doch anzunehmen,
dass mit der Entwicklung neuer
technischer Verfahren auch die Rechtslage
an die wirtschaftlichen Interessen
angeglichen wird.
Ich gehe davon aus, dass künftig entweder
die Rechtsprechung den 3-D-Druck
nicht als „anderes Verfahren mit ähnlicher
Wirkung“ im Sinne der Vorschrift
ansehen oder dass der Gesetzgeber die
Norm entsprechend umgestalten wird,
sodass billige 3-D-Druck-Nachahmungen
auch bei der Privatkopie „mittels Dritter“
künftig verboten werden. (mhu) n
Infos
[1] Gemeinschaftsgeschmacksmusterverordnung
(GGV): [http:// oami. europa. eu/ de/
design/ pdf/ reg‐2002‐3687. pdf]
[2] Paragraf 53 UrhG: [http:// www.
gesetze‐im‐internet. de/ urhg/]
Der Autor
RA Fred Andresen ist Mitglied der Rechtsanwaltskammer
München und der Arbeitsgemeinschaft
Informationstechnologie im Deutschen Anwaltverein
(DAVIT).
© Kristijan Zontar, 123RF.com
Bücher über KVM sowie zur C++-Standardbibliothek
Tux liest
Bücher 08/2012
Forum
Die Bücherseite stellt diesmal ein Buch über die Virtualisierung mit KVM vor. Der zweite Titel ist die überarbeitete
Neuauflage des dicken Wälzers von Nicolai Josuttis zur C++-Standardbibliothek. Udo Seidel, Reiner Grimm
www.linux-magazin.de
83
Die Autoren Michael Kofler und Ralf
Spenneberg haben sich mit ihren Fachbüchern
einen Namen gemacht. Mit „KVM
für die Server-Virtualisierung“ liegt nun
ihre erste gemeinsame Arbeit vor.
Kernel Virtual Machine
Sie haben das Thema KVM ausgezeichnet
und umfassend recherchiert. Der Leser
muss keine Vorkenntnisse zum Thema
Virtualisierung besitzen, sollte aber ein
erfahrener Linux-Kenner sein. Am Anfang
stehen eine kurze Einführung ins Thema
Virtualisierung und eine Einordnung von
KVM in das Software-Angebot.
Kofler und Spenneberg schaffen es, einige
Sachverhalte aus der Vogelperspektive
darzustellen und bei anderen tief ins
technische Detail zu gehen. Im Kapitel
„Virtuelle Datenträger“ lernt der Leser
etwa, wie er mit Dritt-Tools Festplatten,
Dateisysteme und Dateien der Gäste von
außen ausliest oder gar bearbeitet. Die
einzelnen Kapitel sind weitgehend in sich
geschlossen und erlauben dem Leser eine
eigene Reihenfolge der Themenabhandlung.
Ist Wissen aus anderen Kapiteln
nötig, findet er klare Verweise auf die
entsprechenden Seiten.
Das Buch ist garniert mit vielen nützlichen
Tipps und Verweisen auf zusätzliche
Dokumentationen. Die kleine
Schriftgröße der angegebenen URLs
Info
Michael Kofler, Ralf Spenneberg:
KVM für die Server-Virtualisierung
Addison-Wesley, 2012
350 Seiten
40 Euro
ISBN: 978-3-8273-3149-6
ist gewöhnungsbedürftig, hat aber den
Charme, dass es fast keine hässlichen
Zeilenumbrüche gibt. Sehr gut gelungen
ist die Unterscheidung von Root und normalen
Benutzern bei den dargestellten
Kommandobeispielen.
Wer Kofler- oder Spenneberg-Bücher
kennt, findet auch im KVM-Buch den
angenehmen Schreibstil wieder. Obwohl
nur rund 350 Seiten dick, lässt das Buch
nichts vermissen. Wer KVM halbwegs
professionell betreiben möchte, kann den
Kaufpreis kaum besser investieren.
C++-Bibliotheksführer
Gut zwölf Jahre nach der ersten Auflage
von Nicolai Josuttis’ englischsprachigem
Standardwerk „The C++ Standard Library:
A Tutorial and Reference“ ist die
überarbeitete Neuauflage erschienen. Das
ist kein Zufall, wurde doch vor gut einem
halben Jahr der neue C++11-Standard
verabschiedet. Entsprechend deutlich hat
das Werk an Umfang zugelegt: von 800
auf mehr als 1100 Seiten.
Josuttis erklärt souverän und detailliert
die Standardbibliothek der Programmiersprache
C++. Dabei beschreibt er
die klassische Bibliothek, erweitert um
die neue C++11-Funktionalität. Bevor der
Autor in die Tiefe geht, führt er zunächst
die neuen Features in kompakter Form
ein. Damit legt er die Basis, um sich dann
der näheren Vorstellung zu widmen. Dabei
bleibt der Autor seiner bewährten
Strategie aus der ersten Auflage treu: Zuerst
erklärt er die Konzepte, zeigt dann
mit vielen Quelltext-Beispielen deren
Anwendung und bietet zum Abschluss
eine Referenz.
Das Werk beschreibt unter anderem die
nützlichen Werkzeuge des neuen Sprachstandards.
Dies sind die bekannten Paare,
aber insbesondere auch die neuen Tupel,
Smart Pointer und Type Traits. Neben den
bekannten sequenziellen und assoziativen
Containern widmet sich der Autor
auch den neuen Containern – dem Array
und den lang vermissten ungeordneten
Containern, besser bekannt unter dem
Namen assoziative Arrays oder auch
Hashtabellen.
Es folgen Kapitel zu den Algorithmen der
Standard Template Library (STL), Iteratoren,
Strings, zur Ein- und Ausgabe mit
Streams und zur Internationalisierung.
Obwohl diese Abschnitte im Grunde auf
der ersten Auflage basieren, vergisst der
Autor auch hier die neuen Features nicht.
Exemplarisch seien die Lambda-Funktionen
und ihr Einsatz in den Algorithmen
der STL genannt. Die verbleibenden drei
Kapitel hingegen sind ausschließlich
C++11 gewidmet.
Nicolai Josuttis Buch liest sich gewohnt
flüssig und ist genau das, was es verspricht:
Tutorial und Referenz zugleich.
Trotz seines beeindruckenden Umfanges
ist es sehr kurzweilig zu lesen. Lediglich
die sich zu häufig wiederholenden Textbausteine
stören die Lesefreude ein wenig.
Kombiniert mit den vielen Beispielprogrammen
ist es ein idealer Startpunkt,
um sich mit der C++-Standardbibliothek
besser vertraut zu machen. Diese Neuauflage
ist ein Muss für den professionellen
C++-Entwickler. (mhu) n
Info
Nicolai M. Josuttis:
The C++ Standard Library,
2nd ed.
Addison-Wesley, 2012
1130 Seiten
55 Euro
ISBN: 978-0-3216-2321-8
Forum
www.linux-magazin.de Leserbriefe 08/2012
84
Auf den Punkt gebracht
Leserbriefe
Haben Sie Anregungen, Statements oder Kommentare? Dann schreiben Sie an [redaktion@linux-magazin.de].
Die Redaktion behält es sich vor, die Zuschriften und Leserbriefe zu kürzen. Sie veröffentlicht alle Beiträge mit
Namen, sofern der Autor nicht ausdrücklich Anonymität wünscht.
Kindle-Clippings
05/12, S. 92: Den Perl-Snapshot „Datensauger“
fand ich ausgezeichnet. Ich habe
eine kleine Anmerkung zum Format der
Datei »My Clippings.txt«. Mein Kindle
Touch mit der Firmware-Version 5.1 fügt
ein weiteres Wort zwischen »‐« und dem
Typ (Markierung, Notiz, Lesezeichen)
ein. Das geschieht sowohl bei deutscher
als auch bei englischer Menüführung.
Nach einer kleinen Änderung in »ClippingsParser.pm«
wird die Datei wieder
richtig geparst und die SQlite-Datenbank
korrekt befüllt.
Peter Lidauer, per E-Mail
Dateisystem-Details
07/12, S. 22: Vor lauter Detailwissen ist
dem Autor Udo Seidel in der Dateisystemübersicht
ein Schnitzer unterlaufen:
Dateinamen sind eigentlich Namen von
Verweisen auf Inodes, und davon kann
es natürlich beliebig viele geben. Bei Verzeichnissen
ist das sogar immer so, denn
der Name sowie die Einträge ».« und »..«
in allen Unterverzeichnissen zeigen alle
auf denselben Inode. Durch etwas Zauberei
wird dieser Anschein bei Einhängepunkten
sogar dateisystemübergreifend
erweckt. Das führt dazu, dass Inode-
Nummern scheinbar mehrfach vergeben
sind. Auf meinem Rechner haben etwa
»/«, »/.« und »/..«, aber auch »/home«
alle die Nummer 2.
Bei normalen Dateien ist es mit der Einszu-eins-Beziehung
vorbei, wenn man
ihnen mit »ln« weitere Namen gibt. Witzigerweise
existiert auch die Eins-zu-null-
Beziehung, wenn eine noch geöffnete Datei
gelöscht wird. Dateien an sich kann
man gar nicht löschen, nur deren Namen.
Den Inode samt Daten räumt der Kernel
erst weg, wenn weder Namen noch zugreifende
Prozesse existieren.
Was die Zeitstempel und Userland-Tools
betrifft, so ist der Befehl »stat« auskunftsfreudig.
Seit Perl 5.8.8 eignet sich außerdem
Time::HiRes, das allerdings auf fünf
Nachkommastellen rundet, als Ersatz für
die Funktion »stat()«. Aus dem schlichten
»ls« lässt sich mehr Genauigkeit mit der
Option »‐‐time‐style« herauskitzeln. Ich
empfehle folgende Aliase:
alias lln='ls ‐l ‐‐time‐style="+%F %T.%N"'
alias llm='ls ‐l ‐‐time‐style="+%F %T.%03N"'
Dabei füllen aber leider ältere »ls«-Versionen
»%03N« mit Leerzeichen auf.
Daniel Pfeiffer, per E-Mail
Der Fokus des Artikels liegt auf dem Problem,
dass das System ohne freie Inodes
keine neuen Dateien mehr anlegen kann.
Dieses Problem ist in meiner Praxis tatsächlich
schon aufgetreten.
Danke für den Hinweis zum Auslesen der
Nanosekunden-Information mit Perl. Es
ist richtig, dass Glibc die Information seit
einiger Zeit bereitstellt. Dies trifft insbesondere
für den Systemaufruf »stat()« zu,
den die Programme »stat« und »ls« verwenden.
Das Nanosekunden-genaue Setzen
eines Zeitstempels mit »touch« schlägt
jedoch fehl, wenn man keine Referenzdatei
verwendet. Auch beim Transport über
das Netzwerk geht die Nanosekunden-
Information verloren. (Udo Seidel)
Incron
07/12, S. 56: Eine klitzekleine Korrektur
zu den Informationen über Incron, das
ich seit Jahren benutze und schätze: Das
Tool eignet sich auch dazu, auf Verände-
rungen in Dateien zu reagieren. Auf meinem
System beobachtet es beispielsweise
Änderungen von »/etc/passwd«.
Helmut Hullen, per E-Mail
07/12, S. 56: Eine interessante Alternative
zu Incron ist das Programm Iwatch
[http://iwatch.sourceforge.net]. Es kann
nämlich auch rekursiv arbeiten, was ich
als sehr nützliches Feature empfinde.
Allerdings, und das sehe ich eher als
Nachteil, verwendet es eine XML-Datei
zur Konfiguration.
Christoph Kaminski, per E-Mail
Bash Bashing
07/12, S. 92: Im Bash Bashing ist Herrn
Bablok ein Fehler unterlaufen. Erst weist
er im Zusammenhang mit Grep und
Backticks auf das Problem mit Leerzeichen
in Dateinamen hin, und dann das:
find . ‐type f ‐printf "%T@ %p\n"U
| sort ‐n | cut ‐d" " ‐f2
Diese Konstellation zeigt die gefundenen
Dateinamen nur bis zum ersten Space
an. Besser ist:
find . ‐type f ‐printf "%T@ %p\n"U
| sort ‐n | sed 's#[^\ ]* ##'
Oder einfach:
find . ‐type f ‐printf "%T@ %p\n"U
| sort ‐n | cut ‐d" " ‐f2‐
Götz Babin-Ebell, per E-Mail
Erratum
06/12, S. 71: Auf der Bücherseite „Tux liest“
haben wir den Namen eines Rezensenten
bedauerlicherweise zu „Mölle“ verkürzt. Er
heißt korrekt Andreas Möller und hat das
Video-Training zu HTML 5 besprochen.
Insecurity Bulletin: Schwachstelle in Xinetd
Tückische Vermittlung
Insecurity Bulletin 08/2012
Know-how
Wenig bekannte Features und Unix-Altlasten können als Einfallstore in einen Linux-Rechner dienen. Wer kennt
beispielsweise einen Dienst namens Tcpmux? Mark Vogelsberger
www.linux-magazin.de
85
Der Superserver Xinetd [1] ist der um
zahlreiche Sicherheitsfeatures erweiterte
Nachfolger des Daemons Inetd. Seine
Hauptaufgabe besteht darin, nach Verbindungen
auf bestimmten Netzwerkports
zu lauschen. Geht eine Anfrage
ein, so startet Xinetd das konfigurierte
Serverprogramm. Einige sehr einfache
Netzwerkprotokolle sind auch direkt in
Xinetd implementiert. Dazu gehören beispielsweise
die Daytime-, Discard- oder
Echo-Dienste. Da Xinetd alle Netzwerkdienste
verwaltet, lassen sich über den
Superserver auch Zugangsbeschränkungen
realisieren, etwa per TCP-Wrapper.
Multiplexer verbindet
Unter den zahlreichen von Xinetd unterstützten
Protokollen findet sich auch
der Dienst Tcpmux beziehungsweise Tcpmuxplus
[2]. Dieser in RFC 1078 spezifizierte
Dienst lauscht auf Port 1. Genauso
einzigartig wie die Portnummer ist auch
seine Aufgabe: Tcpmux, der „TCP Port
Service Multiplexer“, dient lediglich als
Vermittler.
Der Client sendet an den Daemon eine
Anfrage mit dem Namen des Dienstes,
mit dem er eine Verbindung aufbauen
möchte. Der Tcpmux-Server antwortet
hierauf entweder mit »+« oder mit »‐«,
je nachdem, ob der angefragte Dienst
Abbildung 1: Tcpmux vermittelt einen Angreifer auf Wunsch an den FTP-
Server weiter, der eigentlich gar nicht zugänglich sein dürfte.
auf dem System vorhanden ist. Bei einer
positiven Antwort startet der Daemon
den angeforderten Dienst bereitwillig
sofort. Andernfalls schließt er nur die
Verbindung.
Unterstützt Xinetd auf einem System Tcpmux,
verbietet aber bestimmte andere
Dienste, so kann ein Angreifer mit einem
Umweg über Tcpmux trotzdem auf diese
zugreifen. Xinetd lässt Tcpmux zu – der
Angreifer kann über den Multiplexer Zugriff
auf das andere, eigentlich verbotene
Protokoll erlangen.
Damit die Attacke erfolgreich ist, muss
Tcpmux aktiviert sein, was ein Absatz
in der Konfigurationsdatei »/etc/xinetd.
conf« oder eine eigene Datei im Verzeichnis
»/etc/xinetd.d/« erledigt. Die meisten
Linux-Distributionen aktivieren den Multiplexer-Dienst
in der Standardeinstellung
allerdings nicht.
Die Attacke erfolgt, indem der Angreifer
sich mit dem Kommando »telnet Host 1«
mit dem Tcpmux-Dienst verbindet. Gibt
er anschließend den Namen eines Dienstes
ein, etwa »ftp«, startet dieser – egal ob
deaktiviert oder nicht (Abbildung 1). Das
funktioniert selbstverständlich nur, wenn
in Xinetd unter diesem Namen ein Dienst
registriert ist.
Diese Sicherheitslücke hat Thomas Swan
von Federal Express entdeckt [3], der
auch ein Patch für diese unter CVE-
2012-0862 registrierte
Schwachstelle bereitgestellt
hat [4]. Nach
Begutachtung durch
einen früheren Xinetd-
Entwickler und den
Maintainer des Red-
Hat-Pakets ging die
Nachbesserung in die
Xinetd-Version 2.3.15
ein. (mhu) n
Infos
[1] Xinetd: [http:// www. xinetd. org]
[2] „TCP Port Service Multiplexer (Tcpmux)“,
RFC 1078: [http:// tools. ietf. org/ html/
rfc1078]
[3] Eintrag in Red Hats Bugzilla:
[https:// bugzilla. redhat. com/
show_bug. cgi? id=790940]
[4] Patch von Thomas Swan: [https:// bugzilla.
redhat. com/ attachment. cgi? id=583311]
Der Autor
Mark Vogelsberger ist derzeit wissenschaftlicher
Mitarbeiter am Institute for Theory and Computation
der Harvard University. Er war bis 2010 Autor
der „Insecurity News“ des Linux-Magazins und
schreibt nun auf [http:// www. linux‐magazin. de]
die Online-Ausgabe des „Insecurity Bulletin“.
© David Morrison, 123RF
Programmieren
www.linux-magazin.de C++11 08/2012
Modernes C++ in der Praxis – Folge 5
Im Gleichtakt
88
Die C++11-Reihe beschäftigt sich weiter mit dem Synchronisieren von Threads. Diesmal setzt der Chef-Thread
Bedingungsvariablen ein, um die Tätigkeit seiner Mitarbeiter-Threads zu koordinieren. Rainer Grimm
C++11
asynchrone Aktionen
override
decltype Das eigentliche Tagwerk beginnt für den
Arbeiter-Thread in der »while«-Schleife
Move-Semantik
Neue Container
auto
(Zeilen 12 bis 18). Solange der Wahr-
Variadic Templates
heitswert »notified« nicht »true« ist, führt
bind er immer den gleichen monotonen Job
Type Traits
aus: Er gibt den Mutex frei, schläft für 1
C++11
Alias Templates
Tuple Sekunde und bindet den Mutex wieder.
Zum einen achtet er darauf, dass selbst
default
function
das Lesen des Wahrheitswerts »notified«
Range-basierte
C++11
durch den Mutex »notifiedMutex« ge-
nullptr
For-Schleife
schützt ist, zum anderen darauf, dass
Zufallszahlen
Zeitbibliothek er den Mutex in Zeile 15 für 1 Sekunde
delete
final
freigibt, damit der Boss den Wert auf
Benutzerdefinierte Literale
Smart Pointer »true« setzen kann.
Hashtabellen
static_assert
reguläre Ausdrücke
Obwohl der Boss alles richtig gemacht
Threads hat (Abbildung 1), ist er mit seinem Pro-
Lambda-Funktionen
Array
totyp nicht zufrieden. Ihn stört, dass bis
zu einer ganzen Sekunde vergeht, bis
der Arbeiter auf eine Benachrichtigung
Multicore-Rechner und Multithreading
der Wahrheitswert auf »true« gesetzt reagiert. Der Arbeiter fühlt sich hingegen
gehören zum modernen IT-Alltag.
Doch die Arbeit mehrerer Threads will
koordiniert sein. Dieser Artikel greift
das Programmierbeispiel aus der vorigen
Folge wieder auf, in dem ein Chef-
Thread sechs Mitarbeiter per Zuruf zu
koordinieren versuchte. Zunächst riefen
sie alle durcheinander – erst als der Boss
die Regel ausgab, dass jeder Arbeiter seinen
Kollege zuerst ausreden lassen soll,
kehrte Ordnung ein. Dabei repräsentierte
je ein Thread einen Arbeiter, und der
Ausgabekanal »std::cout« stand für die
gemeinsam genutzte Variable, die es zu
schützen gilt [1].
Synchronisation per
Wahrheitswert
Statt mit Zurufen möchte der Boss seine
Mitarbeiter nun mit Hilfe eines Wahrheitswerts
synchronisieren. Er hat sich
das ganz einfach vorgestellt: Ein Arbeiter
beginnt genau dann zu arbeiten, wenn
ist. Da dieser Wert zu Anfang den Wert
»false« besitzt, kann der Boss seinen Arbeitern
das Startsignal geben. Der erste
Prototyp eines kleinen Arbeitsablaufs
geht in C++11 schnell von der Hand,
wie Listing 1 zeigt. Die Codebeispiele
sind aus Platzgründen gekürzt, unter
[2] steht der vollständige Quelltext zum
Download bereit.
Das war einfach, denkt der Boss. In Zeile
27 verpackt er den Mutex »notifiedMutex«
in einen »lock_guard«. Dies stellt sicher,
dass nur ein einziger Thread die kritische
Region in Zeile 28 betreten darf.
Der Arbeiter-Thread in den Zeilen 6 bis
22 hat wesentlich mehr zu tun. In Zeile
10 sperrt er den Mutex »notified_mutex«
mit einem »unique_lock«. Dies ist notwendig,
da ein »unique_lock« mehrmals
freigeben wie auch sperren kann. Damit
ist der »unique_lock« deutlich mächtiger
als der »lock_guard«, den der Chef in
Zeile 27 einsetzt, denn dieser bindet den
Mutex im Konstruktoraufruf.
für seinen Job überqualifiziert, da
er seine ganze Arbeitsenergie auf das
immerwährende Kontrollieren des Wahrheitswerts
verschwenden muss.
Hinsichtlich der Threads hat der Vorgesetzte
bei seiner Implementierung folgende
zwei Anforderungen an einen Benachrichtigungsmechanismus
nicht gut
bedient:
n Die Zeit zwischen dem Senden und
dem Empfangen der Benachrichtigung
soll möglichst kurz sein.
n Der wartende Thread soll möglichst
wenig CPU-Zeit beanspruchen.
Abbildung 1: Die erste Implementierung: Die Synchronisation
über einen gemeinsamen Wahrheitswert
funktioniert.
Der Boss ist wieder in der Pflicht und
sieht sich die Bedingungsvariablen in
C++11 genauer an, denn diese setzen
die beiden Anforderungen deutlich besser
um. Einerseits wacht der Empfänger
bei Benachrichtigung sofort auf, andererseits
verwendet er wenig CPU-Zeit auf
das Warten.
Bedingungsvariablen
Herb
Scott
Bjarne
Andrei
Andrew
David
Worker Boss
Worker Boss
Worker
»prepared«
»prepared«
»prepared«
»prepared«
»prepared«
»prepared«
Bedingungsvariablen bieten zwei Typen
von Operationen: Sie erlauben es, wahlweise
ein Signal zu senden oder auf eins
zu warten. Dabei kann der Adressat einer
Benachrichtigung ein einzelner (»notify_one()«)
oder mehrere Threads (»notify_all()«)
sein, die sich im wartenden
Zustand (»wait()«) befinden. Sendet ein
Thread eine Benachrichtigung an einen
wartenden Thread, so wacht der Empfänger-Thread
auf und fährt mit seiner
Arbeit fort. Der Empfänger muss dabei
die gleiche Bedingungsvariable benützen
wie der Sender-Thread.
Mit dem Arbeitsablauf in Listing 2 sind
der Arbeiter und der Boss deutlich zufriedener.
Zuerst zum Boss: Durch den
Aufruf »condVar.notify_one()« in Zeile
21 schickt er seine Benachrichtigung an
einen Arbeiter. Dieser wartet in Zeile 11
darauf und fährt genau dann mit seiner
Arbeit fort, wenn er die Nachricht erhält.
Dabei verwenden beide den gleichen
Mutex »notifiedMutex«.
Etwas befremdlich wirkt, dass der Boss
und der Arbeiter weiter den Wahrheitswert
»notified« verwenden. Tatsächlich
erhält der Arbeiter nicht nur die Benachrichtigung,
sondern versichert sich
zusätzlich im »wait()«-Aufruf (Zeile 11)
durch die Lambda-Funktion »[]{return
notified;}« [3], dass der Wert auf »true«
gesetzt ist. Das ist notwendig, weil es
vorkommt, dass der Arbeiter irrtümlich
eine Benachrichtigung erhält. Dieses
Phänomen ist unter dem Namen Spurious
Wakeups [4] bekannt. Der Wahrheitswert
»notified« verhindert, dass der
Thread wegen eines solchen Fehlalarms
seine Arbeit aufnimmt.
Synchronisation der
Arbeiterschaft
»START
YOUR WORK«
Die weiteren Details rund um Bedingungsvariablen
hat der Boss unter [5]
nachgelesen. Nun will er sie im großen
Stil für die Koordination seiner Arbeiter
einsetzen. In Abbildung 2 ist sein Plan
dargestellt. Jeder Arbeiter bereitet zuerst
seine Arbeit vor und gibt dem Boss
Bescheid, sobald er fertig ist. Sind alle
»done«
»done«
»done«
»done«
»done«
»done«
»GO HOME«
Abbildung 2: Mit Hilfe von Benachrichtigungen lässt sich der Arbeitsablauf effizient gestalten: Die Arbeiter
geben Bescheid, wenn sie bereit oder fertig sind, der Chef gibt das Kommmando für Arbeit und Feierabend.
Arbeiter mit der Vorbereitung fertig, signalisiert
der Boss allen gleichzeitig, dass
sie mit ihrem Tagwerk beginnen können.
Nun gilt es für den Boss, zu warten,
bis jeder Arbeiter ihm zurückgemeldet
hat, dass er sein Arbeitspaket erledigt
hat. Zum Schluss schickt er Herb, Scott,
Bjarne, Andrei, Andrew und David mit
»GO HOME« in den Feierabend. Der Boss
hat es geschafft. Der komplexe Arbeitsablauf
seiner Arbeiter läuft geordnet ab
(Abbildung 3).
Ein Blick auf den Sourcecode in Listing 3
zeigt: Um die sechs Arbeiter zu koordinieren,
muss der Boss einiges an Buchhaltung
erledigen. Neben Bedingungsvariablen
kommen Locks, Mutexe und
auch atomare Variablen zum Einsatz.
Atomare Variablen bieten atomare Leseund
Schreib-Operationen an, sodass
sie von mehreren Threads gleichzeitig
ohne weiteren Schutzmechanismus
modifiziert werden dürfen. Sie sind Bestandteil
es neuen C++11-Standards [6].
C++11 08/2012
Programmieren
www.linux-magazin.de
89
Listing 1: Synchronisation per Wahrheitswert
01 [...]
02
03 mutex notifiedMutex;
04 bool notified;
05
06 void worker(){
07
08 cout
Programmieren
www.linux-magazin.de C++11 08/2012
90
01 [...]
02
03 mutex notifiedMutex;
Dabei stehen nicht nur Wahrheitswerte
(»std::atomic_bool«), sondern auch Zeichen
(»std::atomic_char«) und natürliche
Zahlen (»std::atomic_int«) in verschiedenen
Variationen als atomare Datentypen
zu Verfügung.
Mit Hilfe des neuen Klassentemplates
»std::atomic« kann der erfahrene
C++-Entwickler zudem einen eigenen
Datentyp definieren, der den Datentyp
»T« um atomare Eigenschaften erweitert.
Datenstrukturen, die durch den Einsatz
von atomaren Datentypen gänzlich ohne
Locks und Mutexe auskommen, werden
als Lock-free bezeichnet. Tiefere Einsichten
vermittelt der Artikel [7] von Anthony
Williams.
In Listing 3 initiiert der Boss den Arbeitsablauf,
indem er seine Arbeiter ab Zeile
04 condition_variable condVar;
05 bool notified;
06
07 void worker(){
08
Abbildung 3: Dank Bedingungsvariablen klappt der Arbeitsablauf wie am
Schnürchen. Die Arbeiter warten auf den Boss und dieser auf die Arbeiter.
09 cout
den Mutex. Damit harren die anderen
Arbeiter vergeblich auf den Mutex und
der ganze Arbeitsablauf klemmt. Die zunächst
vergessenen künstlichen Bereiche
in den Zeilen 25 bis 31 und 40 bis 46
lösen das Problem: »unique_lock« verliert
seine Gültigkeit und gibt automatisch seinen
Mutex frei.
Wie geht’s weiter?
Die anfängliche Euphorie des Chefs ist
allmählich der Skepsis gewichen. Zwar
hat sich sein Programm zur Koordination
der Arbeiter in den letzten Wochen im
Großen und Ganzen bewährt – sieht man
von dem Vorfall ab, als die Arbeiter ihre
»prepared«-Nachricht schon verschickten,
bevor sich der Boss in den Wartezustand
begeben hatte. Das
Ergebnis war, dass die
Arbeiter vergeblich auf
ihre Benachrichtigung
zum Arbeitsbeginn
warteten.
Den Boss stört aber
vor allem, dass die
ganze Koordination
der Arbeiter viel zu
komplex ist. Sie erfordert
Sychronisationsmittel
wie etwa Bedingungsvariablen,
Locks,
Mutexe, ja sogar atomare Variablen. Kein
Wunder, dass sich Fehler einschleichen.
Da entdeckt er beim Schmökern im neuen
C++11-Standard die Futures. Sie erlauben
es, in Programmen auf die Vollendung
Abbildung 4: Die Arbeiter blockieren sich gegenseitig, weil der erste noch
den steuernden Mutex hält.
einer Aufgabe zu warten. Die nächste
Folge dieser Artikelserie wird zeigen, ob
es dem Boss mit Futures tatsächlich leichter
von der Hand geht, seine sechs Mitarbeiter
zu koordinieren. (mhu) n
C++11 08/2012
Programmieren
www.linux-magazin.de
91
Listing 3: Synchronisieren mit Bedingungsvariablen
01 [...]
02
03 int getRandomTime(int start, int end){
04
05 random_device seed;
06 mt19937 engine(seed());
07 uniform_int_distribution
dist(start,end);
08
09 return dist(engine);
10 };
11
12 class Worker{
13 public:
14 Worker(string n):name(n){};
15
16 void operator() (){
17
18 // prepare the work and notfiy the boss
19 int prepareTime= getRandomTime
(500,2000);
20 sleep_for(milliseconds(prepareTime));
21 preparedCount++;
22 cout
Programmieren
www.linux-magazin.de Perl-Snapshot 08/2012
92
E-Books im Eigenbau
Gutenberg at Home
Fertige E-Books für den Kindle leicht gemacht: Das CPAN-Modul »EBook::MOBI« überführt das bewährte POD-
Format für Perl-Dokumentation per Tastendruck in das digitale Mobi-Format für unterschiedliche mobile Endgeräte
der Kindle-Familie und ihrer Ableger. Michael Schilli
Image-Tag, aber »EBook::MOBI« versteht
das Pseudo-Tag
=image /Pfad/Image.jpg Beschreibung
und fügt die Bilddatei mit Bildtext in
das E-Book ein. Doch wie wurde aus
der POD-Datei ein digitales E-Book im
Amazon-Format?
Listing 1 benötigt drei CPAN-Module,
»Sysadm::Install«, »Pod::Parser« und
»EBook::MOBI«, die der Aufruf
perl ‐MCPAN ‐e 'install Sysadm::Install,
EBook::MOBI, Pod::Parser'
© Olga Yastremska, 123RF.com
Meine Arbeiten an der Perl-Snapshot-
Reihe beginnen regelmäßig mit einem
Manuskript im POD-Format (Abbildung
1). Schließlich ist das bewährte
Dokumen tationsformat einfach zu tippen
und zu lesen, und eine Reihe von Tools
wandelt es problemlos um: in HTML, in
Manual-Seiten, in Latex (und damit in
PDF oder Postscript) oder in das vom
Linux-Magazins gewünschte Format [2].
Mit dem CPAN-Modul »EBook::MOBI« ist
es sogar möglich, aus POD Mobi-Dateien
zu erzeugen und private Erzeugnisse als
E-Books für Kindle-Lesegeräte und ‐Apps
zu veröffentlichen.
Cloud teilt aus
Dank einer Reihe von Mechanismen zur
Verbreitung von E-Book-Dateien innerhalb
Amazons Cloud und daran angeschlossener
Endgeräte dauert es nicht
lange, bis nach der Transformation in
das proprietäre HTML-ähnliche Format
selbst gefertigte E-Books auf Kindle und
Android-Geräten, iPads oder iPhones erscheinen.
Kurz: auf jeder Plattform, auf
der Amazons Kindle-App läuft.
Die Abbildung 2 präsentiert das Android-
Modell Galaxy 4.0 – ein telefonloses
Smartphone, das einem iPod Touch nicht
unähnlich aussieht – mit einer Neuerscheinung
im Kindle-Store: dem aus
dem Manuskript-POD der aktuellen Perl-
Snapshot-Folge generierten E-Book. Die
zugehörige Text ansicht in Abbildung 3
zeigt, wie die Kindle-App die Mobi-Datei
in ein ansprechendes digitales Layout
verwandelt.
Ein Blick auf das Original-Manuskript in
Abbildung 1 offenbart, dass die Redakteure
meine Titelvorschläge oft umschreiben:
Aus „Das feuerrote Kindle-Mobil“
wurde so ein konservatives „Gutenberg
at Home“. Noch etwas fällt auf: Das POD-
Format verfügt von Haus aus über kein
vom CPAN-Mirror auf den Rechner holt
und installieren lässt. Damit ist das Handwerkszeug
vorhanden, um aus einer auf
der Kommandozeile übergebenen POD-
Datei ein E-Book für Kindle-Apps namens
»book.mobi« zu generieren.
Parser-Klasse sucht Titel
Eigentlich benötigt »EBook::MOBI« in
Listing 1 nur die Zeilen ab »package
main«. Da aber »pod2mobi« den Inhalt
der ersten »=head1«-Zeile des POD extrahiert
und mit »set_title()« zum Titel des
E-Books erhebt, definiert »package MyParser«
ab Zeile 4 eine von »Pod::Parser« abgeleitete
Klasse. Ihre einzige Aufgabe ist
es, im Callback »command« ab Zeile 17
zu überprüfen, ob es sich beim aktuellen
POD-Kommando um die erste Hauptüberschrift
vom Typ »=head1« handelt,
und falls ja, deren Inhalt in der Instanzvariablen
»__title« zu sichern.
Online PLUS
In einem Screencast demonstriert Michael
Schilli das Beispiel: [http://www.
linux-magazin.de/plus/2012/08]
Android User
im Abo
Die Monatszeitschrift für Android-Fans,
Smartphone- und Tablet-Nutzer
Neu mit Prämie!
15% sparen beim
Print- oder Digital-Abo
und exklusive Prämie
sichern!
Abbildung 1: Die POD-Datei mit dem Originalmanuskript dieses Artikels.
Die Methode »title()« ab Zeile 9 spielt
diesen Inhalt dann etwa dem Hauptprogramm
zu. Dieses ruft die Methode
»parse_from_file()« des Parsers auf und
übergibt den Namen der POD-Datei und
die Datei »/dev/null«, damit beim Durchforsten
des POD-Codes keine Ausgaben
auf »Stdout« erfolgen.
Die Methoden »set_author()« und »set_
title()« der Klasse »EBook::MOBI« setzen
Autor und Titel des Mobi-Dokuments.
Damit Umlaute des UTF-8-kodierten POD-
Textes im E-Book ordentlich erscheinen,
setzt Zeile 55 die Kodierung mit »set_encoding()«
auf »UTF-8«. Fehlt noch, den
POD-Code mit »add_pod_content()« zum
E-Book hinzuzufügen. Der zweite Parameter
»pagemode« veranlasst den Konverter
nach jeder »=head1«-Überschrift
zum Seitenumbruch. Ein »make()« generiert
das Mobi-Format. Die in Zeile 59
aufgerufene Methode »save()« sichert es
unter dem Namen »book.mobi«.
Portables E-Book
Nun ist zu klären, wie das frisch erzeugte
E-Book auf die Endgeräte gelangt, die das
tasche ist nicht im Handel erhältlich.
Angebot gilt nur solange der Vorrat reicht.
Abbildung 2: Die selbst gestrickte Mobi-Datei in der
Rubrik „Neuerscheinungen“ in der Kindle-App auf
einem Galaxy 4.0 Android.
Abbildung 3: Der Text der Mobi-Datei ist hier in der
Kindle-App auf dem Galaxy 4.0 Android im angepassten
Layout zu sehen.
Jetzt bestelleN!
www.android–user.de/abo
Telefon 07131 / 2707 274
Fax 07131 / 2707 78 601
E-Mail: abo@android-user.de
Programmieren
www.linux-magazin.de Perl-Snapshot 08/2012
94
Abbildung 4: Auf Linux lädt das Programm Calibre die Mobi-Datei.
Format lesefreundlich anzeigen. Die unter
Linux und anderen Betriebssystemen
verfügbare Applikation Calibre stellt das
generierte E-Book zwar dar (Abbildung
4), kommt aber mit den Abbildungen
durcheinander und scheint allgemein
mit dem Mobi-Format auf Kriegsfuß zu
stehen. Bei meinen Tests brachte Calibre
einige Male Kindle-Geräte beim Hochladen
der offiziell unterstützen Dateien
zum Absturz.
SSH auf dem Android
Das im Test verwendete Android-Gerät
Galaxy 4.0 hat die kostenpflichtige
proprietäre App Quick SSHd installiert
(Abbildung 5), die einen SSH-Server star-
tet, mit dem sich das »ssh«-Programm auf
einem Laptop übers WLAN verbindet.
User authentisieren sich per Passwort
oder Private-/Public-Key-Kombination.
Experimentierfreudige können so, ohne
das Gerät rooten zu müssen, das dortige
Dateisystem erforschen.
Abbildung 6 zeigt, wie das Kommando
»scp« vom Laptop aus die Mobi-Datei
in das Verzeichnis »/mnt/sdcard/kindle«
kopiert, einem Ordner auf der im Android
steckenden SD-Speicherkarte, den die installierte
Kindle-Applikation überwacht.
Findet sie eine neue Mobi-Datei, erscheint
sie in den Bereichen »Home« und »On Device«
der Kindle-Applikation (Abbildung
2). Wenn ein Kindle am USB-Port einer
Linux-Box steckt, lässt sich die Datei
Abbildung 5: Die App Quick SSHd startet einen
SSH-Server, der per »scp« die Mobi-Datei im Kindle-
Verzeichnis speichert.
auch ins lokal gemountete Verzeichnis
»/media/Kindle/documents« kopieren.
Ab die Post
Listing 2 nutzt stattdessen die Mail-
Schnittstelle von Amazon, um die Mobi-
Datei an ein Endgerät zu senden. Die
Übertragung ist kostenlos, solange das jeweilige
Gerät über eine Wireless-Verbin-
Listing 1: »pod2mobi«
01 #!/usr/local/bin/perl ‐w
02
03 ###################
04 package MyParser;
05 ###################
06 our @ISA = qw(Pod::Parser);
07
08 ###########################################
09 sub title {
10 ###########################################
11 my( $self ) = @_;
12
13 return $self‐>{ __title };
14 }
15
16 ###########################################
17 sub command {
18 ###########################################
19 my ($parser, $command,
20 $paragraph, $line_num) = @_;
21
22 $paragraph =~ s/\n+$//;
23
24 if( $command eq "head1" ) {
25 $parser‐>{ __title } = $paragraph if
26 !defined $parser‐>{ __title };
27 }
28 }
29
30 ###################
31 package main;
32 ###################
33 use strict;
34 use Sysadm::Install qw( slurp );
35 use EBook::MOBI;
36 use Pod::Parser;
37
38 my( $pod_file ) = @ARGV;
39
40 if( !defined $pod_file ) {
41 die "usage: $0 file.pod";
42 }
43
44 my $parser = MyParser‐>new();
45 $parser‐>parse_from_file(
46 $pod_file, "/dev/null" );
47
48 my $book = EBook::MOBI‐>new();
49 my $pod = slurp ( $pod_file,
50 { utf8 => 1 } );
51
52 $book‐>set_author( "Mike Schilli" );
53 $book‐>set_title( $parser‐>title() );
54
55 $book‐>set_encoding(':encoding(UTF‐8)');
56
57 $book‐>add_pod_content($pod, 'pagemode');
58 $book‐>make();
59 $book‐>save();
Abbildung 6: Das »scp«-Kommando kopiert die Mobi-Datei in den Ordner
der Kindle-Applikation auf dem Android-Gerät.
Abbildung 7: Das selbst gefertigte E-Book erscheint in der persönlichen
Kindle-Library auf dem Amazon-Service.
dung erreichbar ist. Empfängt der Service
eine Mail mit Mobi-Datei als Attachment,
schickt er diese ans angegebene Zielgerät.
Zudem sind diese E-Books über die
Kindle-Cloud auf jedem damit verlinkten
Gerät verfügbar (Abbildung 7).
Das Skript in Listing 2 erwartet den Namen
der zu übertragenden Mobi-Datei
auf der Kommandozeile, zum Beispiel
»mail‐to‐kindle book.mobi«, und erzeugt
mit dem CPAN-Moduls MIME::Lite eine
Mail mit Attachment. Die schickt es an
einen SMTP-Mailserver, der sie zur Amazon-Adresse
weiterleitet. Der Name des
SMTP-Servers in Zeile 33 ist an den verwendeten
Mail-Provider anzupassen.
Der Autor
Michael Schilli arbeitet
als Software-Engineer bei
Yahoo in Sunnyvale, Kalifornien.
In seinen seit 1997
erscheinenden Snapshots
forscht er jeden Monat
nach praktischen Anwendungen der Skriptsprache
Perl. Unter [mschilli@perlmeister. com] beantwortet
er gerne Fragen.
Jedes Kindle-Gerät und
jede Kindle-App zeigt
im Menü »Settings«
eine personalisierte E-
Mail-Adresse unter »@
Kindle.com« an. Dort
nimmt Amazon Mobi
und andere Formate
entgegen, jedoch kein
».epub«, und leitet sie
an das via Cloud angeschlossene
Lesegerät.
Die Empfängeradresse
in Zeile 14 ist also im
Skript an das Endgerät
anzupassen.
Vorsicht: Nur über WLAN ist die Übertragung
kostenlos, in Amazons Handy-
Netzwerk Whispernet fallen Gebühren
an. Von der Kindle-Library (Abbildung
7) darf jedes Gerät des Users das E-Book
herunterladen. Abbildung 8 zeigt das
Manuskript auf einem iPad 2.
Noch nicht ganz perfekt
Aber der Teufel steckt wie immer im Detail:
Damit ein E-Book schön formatiert
daherkommt, muss oft
ein Layouter manuell
eingreifen. So dürfen
etwa Abbildungen
nicht zu dicht hintereinander
stehen, damit
sie den Textfluss nicht
unterbrechen, und zu
viele lange Wörter
stören den Zeilenumbruch.
Insgesamt ist das proprietäre
Mobi-Format
weniger durch eine
vollständige Spezifikation
definiert als
dadurch, was auf den jeweiligen Readern
gut ankommt. So erfordern unterschiedliche
Reader oft auch unterschiedliche
Auflösungen für Grafiken. Der Kindle-
Shop ist daher voll mit entsprechenden
Praxisratgebern.
Das CPAN-Modul »EBook::MOBI« baut
auf dem betagten Mobi-Perl-Code [3] auf
und unterstützt, anders als das Original,
leider keine Abbildung des Covers. Der
Code verträgt durchaus noch einige Verbesserungen,
wer mag, sollte sich an dem
Projekt beteiligen. (uba)
n
Infos
[1] Listings zu diesem Artikel:
[ftp:// www. linux‐magazin. de/ pub/ listings/
magazin/ 2012/ 08/ Perl]
[2] Linux-Magazin: Hinweise für Autoren:
[http:// www. linux‐magazin. de/ Heft‐Abo/
Kontakt/ Autor‐werden# textformat]
[3] Mobiperl-VN-Repository: [https:// dev.
mobileread. com/ svn/ mobiperl/]
[4] Kindle Personal Documents Service:
[http:// www. amazon. com/ gp/
help/ customer/ display. html?
nodeId=200767340]
Abbildung 8: Das fertige E-Book in der Kindle-Applikation auf dem iPad.
Perl-Snapshot 08/2012
Programmieren
www.linux-magazin.de
95
Listing 2: »mail-to-kindle«
01 #!/usr/local/bin/perl ‐w
02 use strict;
03 use MIME::Lite;
04
05 my( $file ) = @ARGV;
06
07 if( !defined $file ) {
08 die "usage: $0 file.mobi";
09 }
10
11 my $msg = MIME::Lite‐>new(
12 From => 'm@perlmeister.com',
13 To =>
14 'Gaxy Galaxy xxx@Kindle.com>',
15 Subject => 'My Ebook',
16 Type => 'multipart/mixed'
17 );
18
19 my $part = MIME::Lite‐>new(
20 Type => 'text/plain',
21 Data => "some text\n",
22 );
23
24 $msg‐>attach( $part );
25
26 $msg‐>attach(
27 Type => 'application/mobi',
28 Path => $file,
29 Filename => $file,
30 Disposition => 'attachment',
31 );
32
33 $msg‐>send( 'smtp', 'mail.some‐smtp.com' );
Service
www.linux-magazin.de IT-Profimarkt 08/2012
98
PROFI
MARKT
Sie fragen sich, wo Sie maßgeschneiderte
Linux-Systeme und kompetente
Ansprechpartner zu Open-Source-Themen
finden? Der IT-Profimarkt weist Ihnen
als zuverlässiges Nachschlagewerk
den Weg. Die hier gelisteten Unternehmen
beschäftigen Experten auf ihrem
Gebiet und bieten hochwertige Produkte
und Leistungen.
Die exakten Angebote jeder Firma entnehmen
Sie deren Homepage. Der ersten
Orientierung dienen die Kategorien
Hardware, Software, Seminaranbieter,
Systemhaus, Netzwerk/TK und Schulung/Beratung.
Der IT-Profimarkt-Eintrag
ist ein Service von Linux-Magazin
und LinuxUser.
Online-Suche
Besonders bequem finden Sie einen
Linux-Anbieter in Ihrer Nähe über die
neue Online-Umkreis-Suche unter:
[http://www.it-profimarkt.de]
Informationen
fordern Sie bitte an bei:
Linux New Media AG
Anzeigenabteilung
Putzbrunner Str. 71
D-81739 München
Tel.: +49 (0)89/99 34 11-23
Fax: +49 (0)89/99 34 11-99
E-Mail: anzeigen@linux-magazin.de
1 = Hardware 2 = Netzwerk/TK 3 = Systemhaus
IT-Profimarkt – Liste sortiert nach Postleitzahl
4= Fachliteratur 4= Seminaranbieter 5 = Software 5 = Software 6 = Schulung/Beratung 6 = Firma Anschrift Telefon Web 1 2 3 4 5 6
Schlittermann internet & unix support 01099 Dresden, Tannenstr. 2 0351-802998-1 www.schlittermann.de 3 3 3 3
imunixx GmbH UNIX consultants 01468 Moritzburg, Heinrich-Heine-Str. 4 0351-83975-0 www.imunixx.de 3 3 3 3 3
Heinlein Professional Linux Support GmbH 10119 Berlin, Schwedter Straße 8/9b 030-405051-0 www.heinlein-support.de 3 3 3 3 3
TUXMAN Computer 10369 Berlin, Anton-Saefkow-Platz 8 030-97609773 www.tuxman.de 3 3 3 3 3
Hostserver GmbH 10405 Berlin, Winsstraße 70 030-47375550 www.hostserver.de 3
Compaso GmbH 10439 Berlin, Driesener Strasse 23 030-3269330 www.compaso.de 3 3 3 3 3
Linux Information Systems AG Berlin 12161 Berlin, Bundesallee 93 030-818686-03 www.linux-ag.com 3 3 3 3 3
elego Software Solutions GmbH 13355 Berlin, Gustav-Meyer-Allee 25 030-2345869-6 www.elegosoft.com 3 3 3 3
verion GmbH 16244 Altenhof, Unter den Buchen 22 e 033363-4610-0 www.verion.de 3 3 3
Logic Way GmbH 19061 Schwerin, Hagenower Str. 73 0385-39934-48 www.logicway.de 3 3 3 3
Sybuca GmbH 20459 Hamburg, Herrengraben 26 040-27863190 www.sybuca.de 3 3 3 3 3
iTechnology GmbH 20537 Hamburg, Normannenweg 28 0)40 20 22 62 10 www.itechnology.de 3 3 3 3
JEL Ingenieurbuero 23911 Einhaus, Hauptstr. 7 04541-8911-71 www.jeltimer.de 3
beitco - Behrens IT-Consulting 26197 Ahlhorn, Lessingstr. 27 04435-9537330-0 www.beitco.de 3 3 3 3 3
talicom GmbH 30169 Hannover, Calenberger Esplanade 3 0511-123599-0 www.talicom.de 3 3 3 3 3
teuto.net Netzdienste GmbH 33602 Bielefeld, Niedenstr. 26 0521-96686-0 www.teuto.net 3 3 3 3 3
MarcanT GmbH 33602 Bielefeld, Ravensberger Str. 10 G 0521-95945-0 www.marcant.net 3 3 3 3 3 3
Hostserver GmbH 35037 Marburg, Biegenstr. 20 06421-175175-0 www.hostserver.de 3
LINET Services GmbH 38122 Braunschweig, Am alten Bahnhof 4b 0531-180508-0 www.linet-services.de 3 3 3 3 3 3
OpenIT GmbH 40599 Düsseldorf, In der Steele 33a-41 0211-239577-0 www.OpenIT.de 3 3 3 3 3
Linux-Systeme GmbH 45277 Essen, Langenbergerstr. 179 0201-298830 www.linux-systeme.de 3 3 3 3 3
Linuxhotel GmbH 45279 Essen, Antonienallee 1 0201-8536-600 www.linuxhotel.de 3
OpenSource Training Ralf Spenneberg 48565 Steinfurt, Am Bahnhof 3-5 02552-638755 www.opensource-training.de 3
Intevation GmbH 49074 Osnabrück, Neuer Graben 17 0541-33508-30 osnabrueck.intevation.de 3 3 3 3
Sigs Datacom GmbH 53842 Troisdorf, Lindlaustraße 2c 02241-2341-201 sigs-datacom.de 3
uib gmbh 55118 Mainz, Bonifaziusplatz 1b 06131-27561-0 www.uib.de 3 3 3 3
LISA GmbH 55411 Bingen, Elisenhöhe 47 06721-49960 www.lisa-gmbh.de 3 3 3 3 3
saveIP GmbH 64283 Darmstadt, Schleiermacherstr. 23 06151-666266 www.saveip.de 3 3 3 3 3
LAMARC EDV-Schulungen u. Beratung GmbH 65193 Wiesbaden, Sonnenberger Straße 14 0611-260023 www.lamarc.com 3 3 3 3
ORDIX AG 65205 Wiesbaden, Kreuzberger Ring 13 0611-77840-00 www.ordix.de 3 3 3 3 3
LinuxHaus Stuttgart 70565 Stuttgart, Hessenwiesenstrasse 10 0711-2851905 www.linuxhaus.de 3 3 3 3 3
Manfred Heubach EDV und Kommunikation 73728 Esslingen, Hindenburgstr. 47 0711-4904930 www.heubach-edv.de 3 3 3 3
Waldmann EDV Systeme + Service 74321 Bietigheim-Bissingen, Pleidelsheimer Str. 25 07142-21516 www.waldmann-edv.de 3 3 3 3 3
IT-Profimarkt listet ausschließlich Unternehmen, die Leistungen rund um Linux bieten. Alle Angaben ohne Gewähr.
(S.100)
Service
www.linux-magazin.de Markt 08/2012
100
IT-Profimarkt / Markt
IT-Profimarkt – Liste sortiert nach Postleitzahl (Fortsetzung von S. 98)
1 = Hardware 2 = Netzwerk/TK 3 = Systemhaus
4= Seminaranbieter 5 = Software 6 = Beratung
Firma Anschrift Telefon Web 1 2 3 4 5 6
in-put Das Linux-Systemhaus 76133 Karlsruhe, Moltkestr. 49 0721-6803288-0 www.in-put.de 3 3 3 3 3 3
Bodenseo 78224 Singen, Pomeziastr. 9 07731-1476120 www.bodenseo.de 3 3 3
Linux Information Systems AG 81739 München, Putzbrunnerstr. 71 089-993412-0 www.linux-ag.com 3 3 3 3 3