26.02.2014 Aufrufe

Linux-Magazin Software testen (Vorschau)

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 IT­Diensten 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 State­of­the­Art­Ansä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.

Dateiver­schlüs­selung 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

<