Category: Linux

Na das ist ja mal putzig!

Logo der Linuxdistribution Sabayon

Logo der Linuxdistribution Sabayon

Jeder kennt sicher die alltäglichen Fehlermeldungen der diversen Programme des Computers und ärgert sich dabei über profane Meldungen wie „Ungültiger Verweis 10×78“ oder „Fehlerprozess war fehlerhaft (19)„, mit denen man nicht nur nichts anfangen kann, sondern die einem irgendwie oft auch noch das Gefühl geben, man hätte etwas falsch gemacht.
Jetzt habe ich gestern einen Fehler unter Sabayon Linux provoziert, indem ich in Sulfur, dem GUI des Paketmanagers von Sabayon, während einer Installation auf „Abbrechen“ geklickt habe. Sieht doch gleich viel freundlicher aus, oder?

Sabayon's Paketmanager Sulfur entschuldigt sich für einen Fehler

Sabayon's Paketmanager Sulfur entschuldigt sich für einen Fehler

 

Jaaa – was soll ich groß schreiben? Was lange währt wird endlich gut vielleicht 🙂

LPIC-1 Logo

LPIC-1 Logo

Nachdem mein Kumpel Alex vor inzwischen fast zwei Jahren mit dem LPIC-1 Zertifikat vorgelegt hat, wollte ich eigentlich innerhalb weniger Wochen nachziehen. Nur kam dann eines zum anderen. Erst zog die Firma um, dann hatte ich alle Hände voll zu tun mit meiner damals neuen Position als Abteilungsleiter mit Personalverantwortung, dann … ach – blah, blah, blah. Das Ende vom Lied ist: Ich bin erst am gestrigen Mittwoch endlich dazu gekommen meine LPIC-1 Prüfung bei „The Campus“ in Düsseldorf in der Gladbecker Str 1  zu absolvieren. Ich habe direkt beide Prüfungen hintereinander durchgezogen.

Was soll ich lange drum herum reden: Bestanden! 🙂

Ich habe hierzu mit dreien abzurechnen. Fangen wir mit „The Campus“ an.
Ich habe mich am 9.11.2011 zu beiden Prüfungen am 23.11.2011 um 10.30 und 12:00 Uhr angemeldet. Am 22.11. um 17:45 Uhr (also: Am Abend zuvor) sitze ich mit meinem Chef im Meetingraum in der Firma, da kommt eine Kollegin rein und meint „Es hat eine Frau X von The Campus angerufen und meinte die Prüfung morgen verschiebt sich auf 12 Uhr.“. Wir waren eh gerade fertig also rufe ich um 18:00 Uhr, 15 Minuten später, zurück um die Dame zu fragen ob sie das richtig findet einem am Abend zuvor durch einen dritten ausrichten zu lassen das sich die Prüfung verschiebt. Was ist denn wenn ich dann bereits Termine habe? Zudem habe ich meine Handynummer und E-Mailadresse bei der Registrierung angegeben, da kann man mich doch wenigstens versuchen darüber zu erreichen ehe man „Stille Post“ spielt.
Aber scheinbar hat sie unmittelbar nach diesem Anruf das Gebäude verlassen – jedenfalls war sie nicht mehr im Hause (Aussage der Kollegin, die ich stattdessen erreicht habe).
Angekommen musste ich erstmal suchen, ob ich richtig bin: Die untere Etage des scheinbaren Neubaus steht leer. Schilder gibt es nur sehr unzureichend.
Ich bin also um 12 Uhr da. Leider habe ich eine Wartezeit bis etwa 12:30 Uhr, da sich die Dame trotz der Verschiebung auf 12 Uhr um knapp eine halbe Stunde verspätet.
Als wir endlich anfangen können, werde ich in einen Raum geführt, in dem 8 völlig veraltete PCs stehen. Die Dame schaltet mir die Prüfung auf und – verlässt den Raum! Alle Prüflinge sind völlig unbeaufsichtigt. Spicken wäre nun Tür und Tor geöffnet. Ebenso wird man auf den ausgehändigten Regeln darauf hingewiesen, das man sich ausschließlich durch heben einer Hand bemerkbar machen soll, wenn man Fragen hat. Der Prüfer kommt dann angeblich sofort und hilft. …. wie denn, wenn garkeiner im Raum ist??
Naja. Nachdem ich die erste Prüfung bestanden hatte, habe ich eine kurze Pause gemacht und bin dann die zweite angegangen. Während dieser Prüfung wurde in den oberen Etagen pausenlos gehämmert. Wirklich konzentrieren: Fehlanzeige. Ich bin nach absolvierter Prüfung zu den Damen gegangen und habe gesagt das sowas alles andere als geeignete Prüfungsbedingungen sind. Reaktion: „Ja, ich war auch eben schonmal gucken …“. Super!

Also: Nichts gegen die Damen an sich: Die beiden waren sehr nett! Aber es ärgert mich, das man viel Geld dafür bezahlt, das man sich da eine Stunde lang an einen PC setzen darf, dabei weder Beaufsichtigt noch betreut wird und das man einen Tag vor der Prüfung derart mit Orga-Scheiss abgelenkt wird. Zumal die auf der Anmeldung ihrerseits ein richtiges Fass aufmachen: „Wer mehr als 15 Minuten später erscheint darf nicht mehr teilnehmen!“, „Armbanduhr, Portemonaie und Handy müssen abgelegt werden!“, „Während der Prüfung: Absolute Ruhe!“ , und dann bietet man einem solche Bedingungen an.

Naja …
Morgen rechne ich mit dem Linux Professional Institute ab! Stay tuned! 😀

Um zu erklären, was das bedeutet, muss ich ganz kurz ausholen…

Als ich vor vielen Jahren mit Linux angefangen habe, stolperte ich ziemlich bald über Gentoo Linux. Damals konnte ich aber weder den Wert dieser Distribution ermessen, noch kam ich als absoluter Linuxeinsteiger damit zurecht. Also habe ich sie damals recht bald wieder fallen lassen.
Nachdem ich inzwischen jedoch einige Jahre mit diesem Fachgebiet auf dem Buckel habe, keimte vor ein paar Jahren das Interesse an dieser Distribution wieder auf. So läuft seit knapp 13 Monaten dieser Server auch unter Gentoo Linux.
In dieser Zeit stand ich natürlich auch ab und an mal auf dem Schlauch und musste mich, als Google, das Gentoo Forum und IRC nicht mehr helfen konnten, des Gentoo Bugtrackers bedienen. Und genau hier machte ich Erfahrungen, welche mich enttäuschten. Oft, wenn ich auf diesem Wege mit den Gentoo Entwicklern in Kontakt treten musste, wurde ich enttäuscht. So sind zwei Bugs, die ich vor fast 2 Monaten und über 4 Monaten eingetragen habe, bis heute nicht final bearbeitet und geschlossen worden. Den Vogel abgeschossen hat aber der Gentoo Bug 363675, bei dem ich über 1,5 Monate der einzige gewesen bin, der den auch nur angesehen hat. Und dabei ging es nicht etwa um irgendeinen Schönheitsfehler: Ich konnte den GNU C Compiler (gcc) nahezu garnicht mehr benutzen. Das bedeutet im Falle von Gentoo Linux, das man nahezu kein Paket mehr installieren kann. Als ob das nicht ärgerlich genug wäre: Auch Sicherheitsupdates sind so natürlich nicht mehr möglich. Als ich mir nicht mehr zu helfen wusste, habe ich dasselbe Problem im Bugtracker vom gcc direkt eingestellt. Nach sage und schreibe 3 Minuten und 42 Sekunden hat einer der dortigen Entwickler mein Problem gelöst!
Es stellte sich letzten Endes heraus, das es sich um ein lokales Problem bei mir gehandelt hatte, jedoch hat sich ja kein Mensch den Bug gründlich genug angeschaut um das wissen zu können. Wäre es ein globales Problem am gcc gewesen, wäre eine nichtbeachtung eines Bugs in dieser Kategorie fatal gewesen!
Als ich das dann im verlinktem Gentoo Bug 363675 mal so angemerkt habe, bekam ich folgende Antwort:

Mit anderen Worten also: Da Gentoo ein System von Freiwilligen ist, darf man sich nicht beschweren. Grundsätzlich natürlich richtig. Jedoch zwei Punkte dazu (was mich ganz dezent dann auch wieder zum eigentlichen Thema zurückführt 😀 ):

  1. Wenn ich das selber hätte lösen können, hätte ich wohl kaum einen Bug dazu erstellt.
  2. Ich möchte ja gerne helfen, aber die Einstiegshürde bei Gentoo ist leider sehr hoch!
Es haben sich in der jüngsten Vergangenheit mehrere Dinge ereignet bei denen ich mich frage, ob die Gentoo Foundation den Karren absichtlich an die Wand fahren will. Viele Entwickler beschwerten sich in jüngster Vergangenheit darüber, das ihnen vom Gentoo Linux Council, den Leitern und Koordinatoren also, völlig hanebüchene und fachfremde Vorgaben gemacht werden, wie Software zu entwickeln ist und wie die Workflows dazu auszusehen haben.
Das kann ich mir gut vorstellen; wie eben beschrieben scheinen die Entwickler ja mit den Anfragen völlig überfordert zu sein. … was ja nichts mit Unfähigkeit, sondern mehr mit mangelnder Organisation zu tun hat. Umso unverständlicher ist es, das Hilfsangebote am laufendem Band ausgeschlagen werden. Das sieht man besonders drastisch am Beispiel von Daniel Robbins:
Daniel Robbins hat Gentoo Linux erschaffen. Bevor er im Mai 2005 bei Microsoft anfing, gründete er die Gentoo Foundation und übergab das Projekt an diese. Die Gründe hierfür waren wohl zu gleichen Teilen, das er zum einen fürchtete sein neuer Arbeitgeber Microsoft könnte einen negativen Einfluss auf die weitere Entwicklung der Distribution haben und zum anderen wollte er mehr Zeit für seine Familie haben.
Als er dann im Februar 2007 wieder als Entwickler für Gentoo anfing, wurden ihm, als geistigem Vater der Distribution, so viele Steine in den Weg gelegt, das er bereits einen Monat später seine Arbeit an Gentoo Linux wieder einstellte und 2008 schließlich sein aktuelles Projekt initialisierte: Funtoo Linux; einen Fork von Gentoo Linux.
Inzwischen hat Funtoo viele Anhänger und ein sehr fähiges Entwicklerteam, an dessen Spitze Daniel Robbins steht, der (ähnlich zu Linus Torvalds über den Kernel) als gutmütiger Diktator die Marschrichtung der Distribution vorgibt und dessen Entwicklung koordiniert.
Noch hängen Funtoo und Gentoo zwar eng zusammen, jedoch driften (nicht zuletzt wegen größerer Fortschritte bei Funtoo) die beiden immer weiter auseinander. Wie das bei einem Fork nunmal so ist.
Ich habe mich daher dafür entschieden meine Freizeit und mein Engagement lieber in Funtoo Linux zu investieren ehe ich zunächst Monatelang den Leuten und Infos von Gentoo Linux hinterherlaufe, nur damit meine Beteiligungen dann im Sande verlaufen. Man sehe sich nur einmal den Gentoo Bug #228343 an. Da wird den Entwicklern ein nahezu fertiges TYPO3 Paket geliefert und es kümmert sich einfach keiner drum! Das Paket für TYPO3 Version 4.2.1 wurde am 19.06.2008 eingereicht. Heute, 3 Jahre und 3 Monate später, hat der Bug nach wie vor den Status „CONFIRMED“, was in etwa soviel bedeutet wie „zur Kenntnis genommen – weitere Aktionen abwarten, bis wir das geprüft haben“. Ist doch ein Scherz, oder?
Wie gesagt: Völlig überlastet und unkoordiniert das Team.
Einer der Fortschritte von Funtoo Linux ist, das der Portage Tree, das bedeutet: Das Paketverzeichnis mit allen Installationsscripten, nun nicht mehr per rsync abgeglichen, sondern in einem git Repository gepflegt wird. Das macht das ganze einfacher zu warten, es gibt automatisch ein ChangeLog und eine History und es können mehr Personen einfacher miteinander an diesem Projekt arbeiten.
Martin „golodhrim“ Scholz hat am 7. 7. 2011 mit einer super-Idee für eine neue Art des Overlays, mit dem nahezu jedermann zur Entwicklung von Funtoo beitragen kann, einen Meilenstein (in meinen Augen) für die Distribution gelegt. Inzwischen ist die Idee umgesetzt, das ganze nennt sich „flora“ und Martin Scholz wurde inzwischen von Daniel Robbins zum Core Member für die Communityentwicklung und speziell zum vorantreiben von flora ernannt.
Ich habe mich in den letzten Tagen mit der Funktionsweise und der Erstellung von (Ge|Fu)ntoo Paketen (ebuilds) beschäftigt und heute meine erste Version das TYPO3 Paketes an flora übermittelt. Martin Scholz nimmt seine Aufgabe sehr ernst und ist ungeheuer fleissig! So hat er auch nur knapp eine Stunde später meine Änderungen unverändert in flora übernommen.
Es ist zwar als PHP Paket nur ein vergleichsweise einfaches Paket, da die ganzen Kompilierungsvorgänge und was damit zusammenhängt dabei nicht berücksichtigt werden müssen, trotzdem ist es etwas völlig neues für mich. Gerade weil das vergleichweise einfach ist, bot es sich als erstes Paket besonders an. Ich hoffe, das ich mir dabei keinen groben Schnitzer erlaubt habe … nicht das ich mich bei meinem Gesellenstück gleich vor der ganzen Community blamiere … 😀
Naja, mehr als stundenlang hin-und-hertesten kann man ja nicht. Und zum Glück hat so ein PHP Paket ja in der Regel nicht das Potential irgendetwas wichtiges zu zerstören.
Ich bin mal gespannt ob, wann und wie das ganze schließlich im Portage Tree landet und ob Fehler gefunden werden.

Nur schnell ein QuickTipp, ehe ich das wieder mal Google, nur um dann hinterher zu merken, das es als Beispiel in der Manpage zu setfacl steht …

Wenn man eine ACL unter Linux von einer Datei/Verzeichnis auf ein/-e andere/-s kopieren möchte, reicht, egal wie kompliziert und Umfangreich diese ist, folgender Befehl aus:

getfacl  ~mr/acltemplate | setfacl –set-file=-  ~mr/acldestination

 

Diese Mini-Anleitung ist nur etwas für Leute, denen die Überschrift etwas sagt. Für alle anderen: Geduldet Euch; ich werde in nächster Zeit voraussichtlich einen umfassenderen Artikel zu Mercurial und (D)VCS im allgemeinen verfassen.

Also, zunächst einmal: Mercurial bringt bereits ein Kommando mit, um von einem SVN (Subversion), CVS oder Git Repository alle Daten, inklusive der kompletten Historie, in ein Mercurial Repository konvertieren zu können. Der Befehl heißt schlicht „convert“, ist jedoch standardmäßig deaktiviert und steht als Extension zur Verfügung. BTW: Eine Übersicht über (de-)aktivierte Extensions bekommt ihr, wenn Ihr einfach folgende Hilfe aufruft:

hg help extensions

In dieser Ausgabe wird an sich das folgende auch bereits erklärt. Zudem ist hier die Zeile zu „convert“ interessant:

convert  Importiert Änderungssätze von anderen Versionsverwaltungssystemen nach Mercurial

Genau was wir wollen also!
Man aktiviert diese Extension, indem man in „seiner“ (~/.hgrc) oder der globalen Mercurial Konfigurationsdatei folgende Zeilen einträgt:

[extensions]
convert =

Kein Fehler: Da kommt in der Tat nichts hinter das „=“.

Nun kann man beliebig viele Repositories ganz einfach konvertieren, indem man die HTTP-URL eingibt, oder das lokale Quell- und Zielverzeichnis. Letzteres folgt als Beispiel:

#> hg convert python_spielwiese ../../hg/repos/python_spielwiese
Initialisiere Ziel-Projektarchiv ../../hg/repos/python_spielwiese
Durchsuche Quelle…
Sortiere…
Konvertiere…
1 Initial Import
0 Initial PyDev Checkout

Wie man sieht, übernimmt das Programm die komplette commit-History; in diesem Fall nur 2.
Easy Peasy 🙂

Ich komme zur Zeit nicht wirklich zum bloggen. Zum einen passiert (für den Rest der Welt) nur uninteressanter Scheiss bei mir. Privat geht es zwar gerade hoch her – aber „Mann“ wird ja auch erwachsen. Bedeutet: Ich werde in Zukunft etwas weniger private Details hier posten. Was geht es Google und Co. an, das ich … was weiss ich: Gerade lieber Gemüse esse als Pizza, viel oder wenig Sport treibe, oder mein Schiss gerade eher einem Fragezeichen oder einem Hakenkreuz ähnelt? Genau: Garnichts ! 🙂

Vielmehr wende ich mich gerade wieder verstärkt dem Know-How meines ewigen Steckenpferdes rund um den PC und verstärkt Linux und verwandten Techniken zu.
Was sind „verwandte Linuxtechniken“? Ich würde, nach jüngsten Erfahrungen, sagen: Alles, was zukunftsweisend  und in irgendeiner Weise kreativ ist und mit IT zu tun hat ist heutzutage eine verwandte Linuxtechnik.

Ich möchte an dieser Stelle gerne zwei Beispiele aus meiner aktuellen Arbeitswoche heranziehen:

1) PHP

Wie alt ist PHP inzwischen? Ich meine nicht so direkt die Sprache, sondern vielmehr: Wie lange ist PHP denn inzwischen bitte die Programmiersprache im Internet und der modernen IT? Ich komme zwar noch aus der „Windows for Workgroups“ – Ära, aber selbst mir fällt es schwer, mich heute noch an eine Zeit ohne dynamische Webseiten, wo man schlichtweg der King war, wenn man ein DataBecker HTML4 Buch grob angelesen hatte, zurück zu erinnern. Inzwischen wird wohl keiner, der sich ernsthaft mit Webseiten und Trends im Web auseinander setzt bestreiten, das ohne PHP und die unaufhaltsame Verbreitung von OpenSource-Giganten wie Apache HTTPd und Linux das Web heute ein anderes (und ich behaupte: Schlechteres!) Web wäre. Schaut Euch nur mal die Alternativen an: ISS, Windows Server, Microsoft Silverlight, … wer will denn auch nur eines davon haben bitte?? Das finden ausschließlich solche Idioten gut, die kognitiv nicht in der Lage sind Lizenzbedingungen zu lesen und zu verstehen. Da fallen „Argumente“ wie

das kostet doch sooo viel Geld, da wollen Sie mir doch wohl nicht erzählen, das diese kostenlose Freeware legal dasselbe leistet!?

Ich werde das nie vergessen: Dieser Satz fiel in meiner Berufsausbildung wirklich! Und zwar von meinem damaligen, technischen Ausbildungsbetreuer bei Computacenter. „Freeware“. Das muss man sich mal vorstellen … OpenSource und GPL – völlige Fremdworte.
Ich fürchte diese geistige Haltung ist nach wie vor weit verbreitet – zum Glück sterben diese Idioten aber immer mehr aus. Das ganze kann, in meinen Augen, garnicht schnell genug gehen.

Wie auch immer: Ich wollte heute für ein Plugin für Eclipse auf einer Windowsmaschine PHP 5.3.x installieren. Fertig – das ist die vollständige Anforderung! Zunächst einmal muss man dabei, meiner Meinung nach, den simplen Weg dahin nachvollziehen. Ich lade ausdrücklich jeden Leser ein, den folgenden Weg nachzuvollziehen: Ladet Euch alleine mal ein PHP 5.3 für Windows herunter.
Man geht zunächst auf die Homepage von PHP unter www.php.net . Hier findet man sofort den Link „download“ oben auf der Homepage. Dann kann man sich primär PHP 5.3 oder die ältere, abgekündigte Version 5.2 herunterladen. Die primäre Wahl stellt sich hier in einem GZip oder BZip2 Archiv dar – ohne Diskussion: Sourcecode geht hier ab! … als dritte Option wird nun auch noch eine fast abseits stehende Option angeboten: “For the Windows binaries and installer, see http://windows.php.net/download/.„. Wirkt ein wenig wie „Ach ja, wir haben da auch noch ein behindertes Kind …“ im Kinderheim.
Aber – wenn der ganze Kram, egal wie uninovativ diese statisch gelinkte Binär-Scheisse auch sein mag, dann wenigstens funktionieren würde. TUT ES ABER NICHT!!! Macht Euch mal den Spass: Ladet den PHP Installer für Windows herunter, startet nur die php.exe – was passiert? Der Mist stürzt ab, weil ihm DLL Dateien fehlen! Man darf nun wiederum hoffend, das diese Projekte DLLs anbieten, diese ganzen Abhängigkeiten erstmal erfüllen, bis mein eine lauffähige PHP Installation zu Wege bringt.

Mal ehrlich: Fühlt sich das an wie das Jahr 2011? DIE Top-Webtechnik, nicht nativ verfügbar. Wie kann jemand, der ernstzunehmend PHP entwickelt, heute zutage noch Windows einsetzen?
Es gibt, als PHP Entwickler-Workstation, heutzutage kein einziges Argument mehr für Windows!!!!!!! Beweißt mir gerne das Gegenteil!

2) Samba

Warum gibt es Samba? Nur, weil diese ganzen alteingesessenen (böse Zungen würden sagen: festgefahrenen) Anwender weiterhin auf ihrem „Ich bin zwar zu faul mich in etwas anderes als Windows einzuarbeiten und selbst da zu blöd für Admin-Rechte, will aber trotzdem auf alles und jeden Zugriff haben“ – Standpunkten bestehen! 90% meines aktuellen Rechte-Chaos-Alltages gehen aktuell dafür drauf, Probleme zu beheben, die es nicht geben würde, wenn Microsoft langsam mal im Jahre 2011 ankommen und sich dem Markttrend gemäß entwickeln würde! Die Jungs kriegen es sogar hin, mit Ihrem Officepaket Dateien über Samba Rechte zu verpassen, die eigentlich unmöglich sind. Stichwort: „Ich möchte gerne, das ich auf die Datei, die ich gerade abspeichere, weder Lese- noch Schreibrechte habe„.

Ich migriere gerade den aktuellen Samba-PDC in unserer Firma von Version 2.5.x auf 3.5.8 . Die Userdaten migrieren: Kein Problem! Reines Datei-kopieren. Was passiert aber, sobald sich ein User unter einem Windows ab Vista (getestet: Windows Vista, 7, Server 2008 R2) anmeldet? Sofortige Wiederabmeldung, ohne Fehlermeldung. Super!!

Ich sage Euch: Wenn Spiele und Branchenriesen wie Adobe Photoshop / Dreamweaver sauber unter Linux laufen würden, hätte ich diesen Krampf schon vor Jahren auch privat von meiner Hardware verbannt 😛

 

Es folgt ein recht alter Hut. Mir ist nur gerade mal aufgefallen, das ich den folgenden Weg MySQL Zugänge anzulegen, wenn man die Zugangsdaten eines MySQL Servers vergessen oder versehentlich gelöscht hat, noch nie hier niedergeschrieben habe.

Es geht im großenn und ganzen darum, das man zunächst den MySQL Daemon beendet, ohne Zugangstabellen zu laden wieder startet, den gewünschten Zugang anlegt und nach einem Neustart des Daemons, dieses Mal mit Zugangstabellen, diesen User dann für die weiteren Schritte verwenden kann.

Zunächst ein kurzer Sicherheitshinweis: Für die folgenden Schritte empfiehlt es sich den MySQL Daemon nur von localhost/127.0.0.1 erreichbar zu machen, da für einen kurzen Zeitraum jedermann ohne Passwort administrativ auf den Server connecten kann. Um ganz sicher zu gehen, kann man auch noch einen anderen Port wählen um lokalen Schabernack zu unterbinden.

Das Vorgehen ist wie folgt:

  1. Beenden des MySQL Daemons
  2. Starten des MySQL Daemons ohne Zugriffstabellen:
    mysqld_safe –skip-grant-tables &
  3. Nun kann sich root ohne Passwort in die Datenbank „mysql“ einloggen:
    mysql -uroot mysql
  4. Passwort neu setzen:
    UPDATE user SET password=PASSWORD(„abcd“) WHERE user=“root“;
    Das neue Passwort wäre nun „abcd“. Es kann natürlich gesetzt werden wie immer es sein soll.
  5. (Optional) Zugriffsrechte neu einlesen:
    FLUSH PRIVILEGES;
  6. Da man sich immernoch ohne Passwort einloggen kann, sind alle mysql Prozesse zu beenden; notfalls zu killen (nur, wenn das init Script es per „stop“ nicht schafft alles was MySQL ist zu beenden). Besonders gilt das für die mysql_safe Instanz (prüfen ob noch was läuft per „ps waux | grep -i mysql„).
  7. Abschliessend MySQL wieder ganz normal starten.

Man hat so das Passwort des Users „root“ wieder auf den in Punkt 4 verwendeten Wert gesetzt. Da dieses ja _der_ administrative User ist, können alle weiteren Korrekturen im ganz normalen, sicherem MySQL Kontext behoben werden.
Wenn man einen anderen User als „root“ für seine administrativen Arbeiten verwendet, muss man selbstverständlich diesen in Punkt 3 und 4 statt „root“ verwenden.

 

Logo der Firefox - Sync - Erweiterung

Logo der Firefox – Sync – Erweiterung

Yeah – Heute möchte ich Euch mal allen eine kleine Einführung in die Firefox-Extension (… was ist eigentlich ein „Plugin“, was ein „Add-on“ und was eine „Extension“?? O.O – Hab ich noch nie gerallt ;D ) „Sync“ (früher: „Weave“) geben.

Vielleicht kennt Ihr das: Ihr seid an einem neuen Rechner, startet Euren Firefox und merkt, wie sehr Ihr Euch eigentlich schon an Eure „Personas“ (Theme), Bookmarks, History, Passwort- und Formularvervollständigung, etc. gewöhnt habt. Oder Ihr habt mehrere Rechner und irgendwie überall andere Bookmarks, das Kennwort, was Ihr gerade braucht, habt Ihr ausgerechnet auf dem System, vor dem Ihr gerade sitzt, noch nie eingegeben, und so weiter …

Genau hier schafft „Sync“ Abhilfe:

Es wird einfach auf allen Systemen als Firefox-Erweiterung installiert und kümmert sich im Hintergrund darum jegliche Daten, die sonst nur lokal gespeichert werden würden, auf einen Server hochzuladen. Alle Firefox…e synchronisieren sich dann stets mit den in diesem Profil gespeicherten Daten und … was soll ich sagen: Ihr wollt das einfach nicht mehr missen! 🙂

Standardmäßig legt man sich bei Mozilla einen Weave-/Sync-Account an und konfiguriert seine Sync-Einstellungen hierfür; die Extension unterstützt einen mit passenden „Account Anlegen“ / „Bestehenden Account verwenden“ – Buttons.
Man wird hier – man kennt es – zunächst nach einem Usernamen und einem Passwort gefragt; im weiteren Verlauf des Setups zudem nach einem weiteren Passwort, welches zur Verschlüsselung der Daten auf den Mozilla – Servern dient. Diese Verschlüsselung soll diese doch schon sehr sensiblen Daten bei einer Kompromittierung der Mozilla Server schützen. Hier wird empfohlen ein anderes Passwort als das für den Account selbst zu verwenden. Klar – dieser Empfehlung nicht zu folgen wäre auch schon sehr dumm!

Ich selbst habe diese Methode lange Zeit verwendet (nur für private und nicht so sensible Daten, versteht sich!!). Mit jedem weiteren Passwort, welches in diesen Speicher wanderte, fühlte ich mich jedoch mehr und mehr verunsichert. Immerhin

sendet man hier Zugangsdaten zu wer-weiss-was für Systeme an einen Server, zu welchem man keinerlei Ahnung hat wer da eine Möglichkeit hat diese Daten einzusehen; ich muss zugeben nicht wirklich viel über die internen Strukturen der Mozilla Foundation zu wissen. Wenn diese Server gar irgendwann einmal von dritten kompromittiert werden (was dem besten Admin passieren kann), hat man spätestens dann ein wirklich ausgewachsenes Problem.

Heute wurde mir dieses unangenehme Gefühl zu belastend und ich habe mich einmal nach Alternativen umgesehen. Und Tatsache: Man kann, wie es sich für ein anständiges, freies System gehört, diese Serverkomponente auch auf seiner eigenen Infrastruktur betreiben! 🙂

Voraussetzungen schaffen

Damit dieses ganze System funktioniert, muss neben dem obligatorischem Apache Webserver auch ein PHP 5 mit den Modulen:

  • json
  • mbstring
  • SQLite ( 3! )

installiert sein. Das ist eigentlich schon alles, was zwingend vorhanden sein muss.
Idealerweise sollte man sich jedoch darüber bewusst sein, das hier hochsensible Daten durch’s Internet geschickt werden und sowohl OpenSSL, wie auch ein passendes SSL Zertifikat im Apache einrichten. Wer meint er braucht das nicht: Ihr könnt mir Eure Logins auch vertrauensvoll direkt an mailYYYY@marc-richter.info mailen, ohne Euch hier die Mühe zu machen … 😉

Achtung:

Unter Gentoo Linux war es zwingend erforderlich, das „dev-lang/php“ mit dem USE-Flag „sqlite3“ kompiliert wurde; „sqlite“ allein genügte hier nicht, was mich bereits Stunden gekostet hat … 😛
Ich denke, dieses gilt es in ähnlicher Form auch unter anderen Distributionen zu beachten. Zu erkennen ist das fehlen oder das vorhandensein der Erweiterung in einer falschen Version daran, das nach dem Weave – Passwortdialog nur eine Meldung „Database unavailable“ ausgegeben wird.

Einrichtung des „Weave Minimal Servers“

Das Setup des „vollen“ Servers ist im Wiki des Mozilla Projektes dokumentiert. Beschrieben; allerdings wird direkt im er

sten Satz darauf hingewiesen, das wohl für die meisten Setups der „Minimal Server“, einer alternativen Implementierung des ganzen von „tobyelliott“, besser geeignet ist:

It is strongly recommended that you use the [Weave Minimal Server] rather than a full install.

Ich kann zum „Full Server“ nichts sagen – ich habe diesen „Minimal Server“ installiert! 🙂 Das schafft mir schon ein deutlich besseres Gefühl, das ganze irgendwo liegen zu haben wo (unter normalen Umständen) nur ich drankomme. Vor einer Kompromittierung bin ich natürlich so auch nicht gefeit. Ich denke jedoch das ich mit meinem Server ein deutlich weniger lohnendes Ziel bin als die Mozilla – Systeme. Zumal ein Angreifer ja zunächst garnicht weiß wohin er sich auf so einem System wenden soll und was so alles auf dem Server liegt.
Wie auch immer: Es stellt in meinen Augen, aus meiner Sicht, eine deutlich bessere Lösung dar. Wenn sich jemand mit dem ganzen Kram nicht auskennt und somit viel wahrscheinlicher „Besuch“ zu erwarten hat als ich, der ist bestimmt mit der bei Mozilla gehosteten Lösung besser bedient (oder es ganz sein zu lassen – was immer am sichersten ist 😉 ). Ich möchte hier keinen dazu ermuntern seine privaten Daten quasi in eine Art Selbstbedienungstheke zu legen 😉

Eine Installation ist ganz einfach und ist in der Datei „README“ im tar.gz – Archiv zum „Minimal Weave Server“ beschrieben. Dennoch gibt es ein paar Stolperfallen, welche ich hier einmal Punkt für Punkt durchgehen möchte.

Das ich hier das „Minimal Weave Server“ – tar.gz – Archiv von der Originalseite zum Download anbiete, soll kein „mit fremden Federn schmücken“ sein! Ich weise hier noch einmal ausdrücklich darauf hin, das die gesamte Arbeit, sowie also auch die Blumen und das Lob hierfür der Arbeit von „tobyelliott“ zu verdanken ist!
Ich stelle die nur zusätzlich hier zur Verfügung, damit die Originalseite nicht irgendwann verschwindet oder der Link verwaist:

Eine Installation ist ganz einfach und ist in der Datei „README“ im tar.gz – Archiv zum „Minimal Weave Server“ beschrieben. Dennoch gibt es ein paar Stolperfallen, welche ich hier einmal Punkt für Punkt durchgehen möchte.

Das ich hier das „Minimal Weave Server“ – tar.gz – Archiv von der Originalseite zum Download anbiete, soll kein „mit frem

den Federn schmücken“ sein! Ich weise hier noch einmal ausdrücklich darauf hin, das die gesamte Arbeit, sowie also auch die Blumen und das Lob hierfür der Arbeit von „tobyelliott“ zu verdanken ist!
Ich stelle die nur zusätzlich hier zur Verfügung, damit die Originalseite nicht irgendwann verschwindet oder der Link verwaist:

Download des „Minimal Weave Server“ – tar.gz – Archives
(MD5 Checksumme: 5c1837c2690ddbb4a5b4c0860d5791e2)

In dem Archiv befinden sich 4 .php – Dateien. Diese müssen uns nicht weiter interessieren. Später wird lediglich das Script „create_user“ interessant. Die Dateien müssen nur für den Apache-User lesbar gemacht werden und in einem dem Apache-Server zugänglichem Verzeichnis abgelegt werden; das Standardsetup geht davon aus, das die Daten aus Sicht des Webservers unter /weave/ erreichbar sind. Theoretisch sollte aber auch jeder andere Ort OK sein. Das Verzeichnis selbst muss (zumindest bis die SQLite – Datenbank angelegt ist) für den Apache schreibbar sein.

Meine Konfiguration, die ich zusätzlich in meine vhost-Datei eintragen musste, lautet exemplarisch wie folgt:

Alias /weave    „/home/marc/public_html/zoosau.de/weave_minimal/index.php“

<Directory /home/marc/public_html/zoosau.de/weave_minimal/>
Options -Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all

</Directory>

Das hier scheinbar ein Verzeichnis („/weave“) auf eine Datei („/home/marc/public_html/zoosau.de/weave_minimal/index.php“) zeigt, ist kein Fehler, sondern absolut gewollt!
Das ganze ist natürlich im Kontext meiner SSL – Konfiguration definiert.

So, nun legt man zunächst die SQLite Datenbank an. Dieses geschieht zunächst auf ungewöhnliche Art und Weise: Man ruft in seinem Browser die folgende URL auf:

https://www.zoosau.de/weave/1.0/blah/info/collection

„www.zoosau.de“ ersetzt Ihr dabei natürlich durch Eure Domain/IP.

Wie genau sich dieser Pfad hinter dem „/weave“ zusammensetzt, habe ich nun nicht weiter recherchiert – interessiert mich ehrlich gesagt auch nicht 😉 Das Setup ist so simpel und funktioniert tadellos – da muss ich nicht alles so genau wissen. Wer gerne mehr wissen will (oder weiß?) der kann gerne Google verwenden, oder Tipps und Hinweise als Kommentar an diesen Beitrag anfügen; würde mich freuen!

Es sollte nun eine Passwortabfrage kommen – Die Ausgabe der Webseite lautet schlicht: „Weave“. Hier kann man sich mit irgendetwas (die README spricht von Username: „blah“, Passwort: „garbage“; das sollte aber völlig egal sein) anmelden; das Resultat sollte eine weitere Abfrage sein. Diese kann man schließlich abbrechen; Ziel war es lediglich, das hierdurch die SQLite Datenbank „weave_db“ im Weave – Verzeichnis angelegt wird.

Nun können wir uns einen ersten User anlegen: Auf der Shell im Weave-Verzeichnis führt man dazu folgendes aus:

php create_user

Nun wird man mit selbsterklärenden Dialogen konfrontiert:

#> php create_user

(c)reate, (d)elete or change (p)assword: c
Please enter username: marcrichter
Please enter password: Mein super-geheimes Passwort
marcrichter created
#>

Anschließend ist der neue Server umgehend einsatzbereit.

Einrichten des Firefox

Zunächst muss natürlich die Firefox-Erweiterung installiert werden. Wie das geht spare ich mir an dieser Stelle zu beschreiben, da sich dieses Wissen jeder eigeninitiativ aneignen kann.

Nach einem Neustart des Browsers kann man unter „Extras >> Sync >> Einstellungen“ die Extension konfigurieren. Diese Einrichtung möchte ich mit einer Bilderstrecke begleiten:

Schritt 1 der Firefox Sync-Installation

Schritt 1 der Firefox Sync-Installation

Man wird zunächst mit einem Begrüßungsdialog empfangen. Hier wählen wir die Option „I Have a Firefox-Sync Account“.

Schritt 2 der Firefox Sync-Installation

Schritt 2 der Firefox Sync-Installation

Im folgendem Dialog stellen wir die Standardvorgabe auf „Eigenen Server verwenden“ um. Die möglichen Eingabeoptionen erweitern sich anschließend um das Feld „Server-URL“.

Schritt 3 der Firefox Sync-Installation

Schritt 3 der Firefox Sync-Installation

Hier geben wir nun folgendes ein:

  • Server-URL: https://www.zoosau.de/weave/
    (auch hier gilt wieder: Ersetzt „www.zoosau.de“ durch Eure Domain/IP)
  • User Name: Den Usernamen, den Ihr beim Script „create_user“ angegeben habt.
  • Passwort: Das Passwort, welches Ihr beim Script „create_user“ angegeben habt.
Schritt 4 der Firefox Sync-Installation

Schritt 4 der Firefox Sync-Installation

Hier gebt Ihr nun letztendlich den Sync-Key ein, welcher für die Verschlüsselung der Daten verwendet werden soll. Wie zuvor bereits erwähnt empfiehlt es sich hier dringend ein anderes Kennwort als das Login-Passwort zu verwenden, auch wenn dieses nicht zwingen vorgeschrieben wird.
Welche Daten übertragen werden sollen (wenn Ihr z.B. die Passworte von der Synchronisation ausschließen wollt), könnt Ihr dieses in diesem letzten Dialogfenster links unten über den Button „Sync-Options“ einstellen.

 

Das war’s schon! 🙂 Wenn alles geklappt hat, sollte sich das kleine „Sync“ – Symbol unten rechts in der Statuszeile des Firefox nun drehen und somit anzeigen, das Eure bisher in diesem Browser gespeicherten Daten in Euren Account hochgeladen werden.

So, ich hoffe Ihr fandet dieses Tutorial hilfreich und verständlich! Wie immer würde ich mich über Feedback freuen 🙂

So wurde mein Blog letztens von einem guten Kumpel bezeichnet – und recht hat der Sack auch noch 😉
Ich gelobe (wie immer ;D ) Besserung und fange mal mit einem technischen Artikel an. Diese kommen hier in letzter Zeit viel zu kurz und ich neige immer mehr dazu, alles im Kopf haben zu wollen, da ich mir die Zeit zum aufschreiben einfach nicht nehme. Stattdessen landet hier nur so ein privat-Blödsinn … Ich erkläre hiermit das Ziel, diesem Blog wieder einen Schwerpunkt auf die IT und technische Hintergründe zu legen – bin selbst gespannt … 😉

Beginnen möchte ich mit einem super geilen Tipp.

Ich verwende, wie wohl die meisten Linuxer auf der Welt auch, seit Jahr und Tag GNU bzip2 und GNU gzip zur Kompression von Daten auf der Shell. Was mir jedoch heute das erste Mal aufgefallen ist, ist das diese beiden Programme nur einen einzigen Core aktueller Multi-Core CPUs zu 100% auslasten, und die restlichen brach liegen. Gerade bei der Kompression von Daten dreht sich alles um die Leistungsfähigkeit des Prozessors – eine der wenigen Ausnahmen in meinem Arbeitsalltag, wo die Festplatten mal nicht der Flaschenhals sind. Von daher ist diese Verschwendung in der heutigen Okta-Core – Zeit schon ziemlich maßgeblich für manche Vorgänge, wie z.B. beim (De-)Komprimieren von MySQL Dumps, ISO Images von DVDs, Logfilerotation, etc.

Ich habe also etwas recherchiert und bin zunächst auf pbzip2 gestoßen; einem Re-Write des GNU bzip2 Programmes, welches Multicores unterstützt.
Hiermit hatte ich aber zunächst nur eine Lösung für bzip2, also suchte ich weiter.

Schließlich stieß ich auf einen guten, alten Bekannten, den in seiner GUI – Form sicherlich auch Nicht-Linuxer kennen: 7zip ! Kurzbeschreibung: 7zip ist ein freies Programm (GNU LGPL) für nahezu alle gängigen Betriebssysteme, welches sowohl nahezu alle gängigen Archivformate und Kompressionsalgorithmen beherrscht, sowie auch ein eigenes Format mitsamt Algorithmus mit sich bringt, welches in vielen Situationen sogar eine höhere Kompressionsrate erreicht als bzip2 (durchschnittlich etwa 50-70% höher als ZIP!).
Dieses beherrscht nicht nur die Archivformate 7z, zip, gzip, bzip2, tar und rar (beim reinen entpacken unterstützt es zudem sogar noch: ARJ, CAB, CHM, CPIO, CramFS, DEB, DMG, FAT, HFS, ISO, LZH, LZMA, MBR, MSI, NSIS, NTFS, RAR, RPM, SquashFS, UDF, VHD, WIM, XAR und Z) , sondern auch Multi-Threading und ist somit die perfekte Lösung für Multicores. Es liegt beispielsweise im Ubuntu Lucid Lynx (10.04) Repository unter den Namen „p7zip“, „p7zip-full“ und „p7zip-rar“ vor und kann somit ganz normal und einfach installiert werden.

Ich habe damit heute mal einen schnellen Test gemacht. Diese zahlen stammen von einem Quad-Core System, auf welchem neben diesen Tests auch meine ganz normale Arbeitsumgebung ausgeführt wird, also bitte dizzed mich nicht wegen „lamer“Ergebnisse 😉

Testbeschreibung

Ich habe das ISO Image kubuntu-9.10-alternate-i386.iso von einem Kubuntu – Mirror herunter geladen. Dieses werde ich mit dem bzip2 Algorithmus zunächst mit GNU bzip2 und 7zip auf höchster Kompressionsstufe (9) komprimieren. Diesen Prozess messe ich mit dem Linux-Tool „time“. Anschließend entpacke ich beide Varianten mit GNU bzip2 und erzeuge für die Ergebnisse einen MD5 Hash, um die Kompatibilität mit der Refferenzimplementation sicher zu stellen.

Test mit GNU bzip2

Test mit 7zip

Auswertung

Ich habe dabei mit „htop -d 1“ die CPU Auslastung beobachtet: Bei GNU bzip2 wurde erwartungsgemäß nur einer der 4 Cores zu 100% ausgelastet. Mit 7zip tatsächlich alle 4!

Das Ergebnis dieser Kompressionen war nahezu identisch. Nur ca 2 kb (bei einer Eingangsgröße von rund 700 MB) Abweichung war feststellbar, was ich für vernachlässigbar halte. Die MD5 Sums der mit GNU bzip2 entpackten Archive war identisch; die GNU bzip2 Kompatibilität des durch 7zip erzeugten Archives ist also gegeben.

Wie die obigen Zahlen zeigen, war 7zip ziemlich genau doppelt so schnell, wie die GNU bzip2 Refferenzimplementation. Ich hätte zwar mehr erwartet, jedoch wird ziemlich viel für die Threadverwaltung aufgewendet werden müsen.

Dasselbe lässt sich nun natürlich auch mit GNU gzip erreichen – Zahlen spare ich mir mal. Das kann jeder selbst mal messen 🙂

Der Server, auf dem unter vielen anderen Seiten und Diensten, auch dieses Blog hier läuft, wird in den kommenden Tagen umgezogen. Zum einen sagt mir die aktuelle Linux-Distribution nicht mehr zu, zum anderen bietet mein Provider nach über 4 Jahren, in denen dieser Server in der aktuellen Form bereits besteht, für’s gleiche Geld inzwischen Server mit der doppelten Leistung und Ausstattung an. Die Gelegenheit ist also günstig.

Aktuell bereite ich im Hintergrund bereits das neue System vor. Wenn dieses soweit finalisiert wurde, wird es eine mehr oder weniger kurze Downtime geben, in der die Seiten umziehen. Entgegen dem professionellen Seitenhosting kann ich mir auf diesen Privatseiten ja bequem den Luxus gönnen und sagen: „It’s done, when it’s done!“ 😉

Ich weiß, das diese Seite mal nicht erreichbar sein könnte, trifft tausende da draußen schwer. .. , aber die Berufsehre gebietet es mir irgendwie diese erste Downtime über mehr als 5 Minuten überhaupt nach über 4 Jahren als geplant anzukündigen 😉