Archiv ‘Linux’

Dienstag, 27. November 2007

Kleine wget-Tricks

Via ein Video über einen Autisten, der herzergreifend die us-amerikanische Nationalhymne singt …

… bin ich zum Liedtext vorgedrungen:

The Star Spangled Banner

Das MP3

Auf derselben Seite werden auch drei Tonspuren der Nationalhymne angeboten; darunter eine von LeAnn Rimes.

Da diese Interpretation saugut tönt, wollte ich mir eine „Sicherheitskopie“ anfertigen.

Dies hat sich als komplizierter erwiesen als gedacht (ja, ich bevorzuge den Download per wget – insbesondere, wenn es sich um mehrere Megabyte grosse Inhalte handelt):

beta:~/Desktop mario$ wget http://www.englisch-hilfen.de/mp3/leann_rime.mp3--01:11:32--  http://www.englisch-hilfen.de/mp3/leann_rime.mp3
           => `leann_rime.mp3.1'
Resolving www.englisch-hilfen.de... done.
Connecting to www.englisch-hilfen.de[87.106.2.52]:80... connected.
HTTP request sent, awaiting response... 403 Forbidden
01:11:32 ERROR 403: Forbidden.

Soso … Aber vorhin konnte ich das Stück im Browser doch ohne Probleme anhören? Zwei Möglichkeiten für die unerwartete Weigerung des Web-Servers kommen mir auf Anhieb in den Sinn:

  • Referer-Blocking: Nur wer von der selben Domain auf das MP3 zugreift, darf es herunterladen
  • User Agent-Blocking: User Agents wie „wget 1.9.2“ etc. wird der Zugriff auf die Datei nicht erlaubt

Als erstes Versuche ich letzteres und gebe der Anfrage einen anderen User Agent-string mit:

beta:~/Desktop mario$ wget --user-agent Mozilla/4.0 http://www.englisch-hilfen.de/mp3/leann_rime.mp3
--01:11:22--  http://www.englisch-hilfen.de/mp3/leann_rime.mp3
           => `leann_rime.mp3'
Resolving www.englisch-hilfen.de... done.
Connecting to www.englisch-hilfen.de[87.106.2.52]:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 1,910,784 

100%[====================================>] 1,910,784    607.03K/s    ETA 00:00

01:11:26 (607.03 KB/s) - `leann_rime.mp3' saved [1910784/1910784]

Na also! Das simple „Mozilla/4.0“ reicht bereits, um Zugriff auf die Datei zu erhalten.

Internet-Geschichte

Ursprünglich wurde Mozilla nur als firmeninterne Bezeichnung für den Webbrowser Netscape Navigator benutzt. Zum genauen Ursprung des Namens, der sich auf den ersten populären Webbrowser Mosaic bezieht, gibt es mehrere Erklärungen. Eine besagt, dass er sich aus Mosaic Killa zusammensetzt, laut der anderen aus Mosaic meets Godzilla. Möglicherweise treffen sogar beide Erklärungen zu.

Quelle: Mozilla

Labels: IT, Linux, Web

1 Kommentar | neuen Kommentar verfassen

Montag, 26. November 2007

Das c’t vom 26. November 2007

Ein kleiner Streifzug durch die aktuelle Ausgabe der Computerzeitschrift c’t:

Offenbar funktioniert Kundenbindung heutzutage nach dem Diodenprinzip und die Kündigung ist dabei die Sperrrichtung. Reinzukommen ist ganz leicht, in der anderen Richtung trifft man auf erheblichen Widerstand.

Quelle: c’t, 26. November 2007, „Das Diodenprinzip“, S. 1.

Die Expo ist auch als Treffpunkt zwischen Kapitalgebern und Unternehmensgründern konzipiert. In eigenen Workshops gaben Gründer und Investoren Tipps zur Entwicklung von Geschäftskonzepten. Dabei wünschen sich die Kapitalgeber aber „mehr Hacker und weniger MBAs“, wie Reshma Sohoni vom Gründer-Netzwerk Seedcamp erklärte.

Quelle: c’t, 26. November 2007, „Katerstimmung in Berlin“, S. 42.

Swiss fliegt auf Zuverlässigkeit von Windows Server – Linux ohne Starterlaubnis

Ein weiterer Vorteil ist, dass das neue System wesentlich mehr Kapazitäten hat als das alte, das auf 250 Nutzer beschränkt war. […] „Eine Verbesserung der Uptime auf 99.95% bei gleichzeitiger Kapazitätssteigerung, um mehr Anfragen gleichzeitig zu bearbeiten, ermöglicht es unserem Team, den Anstieg von 30%, den wir bei unserem Online-Vertrieb erleben, spielend abzuwickeln.“

Immer schön, wenn sich im Kampf zwischen Gut und Böse auch noch die CIOs ins Rampenlicht stellen:

„[…] Mit Linux hatten wir nicht die nötige Zuverlässigkeit oder Flexibilität.“ –– Frank Meyer, CIO, SWISS

Mit dieser Aussage stellt sich der CIO gegen den Linux-Erfinder höchstpersönlich:

Torvalds: I think the real strength of Linux is not in any particular area, but in the flexibility. For example, you mention virtualization, and in some ways that’s a really excellent example, because it’s not only an example of something where Linux is a fairly strong player, but more tellingly, it’s an example where there are actually many different approaches, and there is no one-size-fits-all „One True Virtualization“ model.

Quelle: Torvalds On Where Linux Is Headed In 2008

Tags:
Labels: IT, Linux, Medien

1 Kommentar | neuen Kommentar verfassen

Freitag, 23. November 2007

Apache 2.2 gegen LDAP authentifizieren

Die meisten werden es kennen: Wo man sich auch immer in der IT-Landschaft bewegt benötigt man Zugangsdaten. Vielerorts sind diese noch nicht vereinheitlicht (Stichwort Single-Sign-On, Kerberos etc.) – Administratoren wie Endbenutzer müssen sich eine Vielzahl von Benutzernamen und Passwörtern merken, um der täglichen Arbeit nachzugehen.

Wenn wie bei mir auf der Arbeit hingegen bereits ein von einer anderen Einheit betriebenes LDAP-Verzeichnis besteht, kann man dieses bei der Bewirtschaftung von Web-Applikationen zur Benutzer-Authentifizierung und -Authorisierung hinzuziehen.

In der hier vorliegenden Anleitung erläutere ich, wie Web-Verzeichnis gegen unbefugten Zugriff geschützt werden. Zum Einsatz kommen Debian und Apache 2.2 – ich gehe davon aus, dass beides bereits ordnungsgemäss installiert und konfiguriert wurde.

OpenLDAP & Hilfsprogramme installieren

Als erstes installiert man OpenLDAP sowie die ldap-utils mit einigen nützlichen Hilfsprogrammen:

apt-get install slapd
apt-get install ldap-utils

OpenLDAP lässt man aber unkonfiguriert, denn ein aktiver LDAP-Server befindet sich ja bereits im Netzwerk und versieht seinen Dienst.

Anschliessend passt man die Konfiguration von OpenLDAP an:

$ cat /etc/ldap/ldap.conf
BASE            o=org,c=ch
URI             ldaps://ldap.domain.tld
TLS_CACERTDIR   /etc/ldap/cacerts
TLS_REQCERT     never

SSL-Zertifikate

In unserem Falle reichte es, in /etc/ldap einen Symlink auf /etc/ssl/certs einzurichten. Der LDAP-Server verwendet ein Standard-Zertifikat von CyberTrust, welches bei Debian schon von Beginn weg dabei ist (?).

Bei einer frischen Debian-Installation (4.0r3) existiert dieses Verzeichnis nicht; Zertifikate sind auf dem System standardmässig keine vorhanden. Zuerst gilt es nun also, das Zertifikat des Servers herauszufinden:

openssl s_client -connect ldap.domain.tld:636 -showcerts

Anhand dieser Angaben sucht man über Google nach dem „<anbieter> global root“ des Anbieters (bspw. Cybertrust) und gelangt so normalerweise sofort zu den gesuchten Information. In meinem Fall war es:

ct_root.pem

Dieses Zertifikat laden wir uns herunter und legen es im Verzeichnis /etc/ldap/cacerts ab.

Anstelle in der ldap.conf explizit ein Zertifikat anzugeben, überlassen wir es OpenLDAP, das richtige Ding zu eruiren. Das klappt natürlich nur, wenn der Sysadmin des LDAP-Servers nicht selbst ein Zertifikat gebastelt hat.

Testlauf

Um zu überprüfen, ob OpenLDAP korrekt konfiguriert wurde, lässt man eine erste Abfrage laufen:

$ ldapsearch -x "uid=maeby"
# extended LDIF
#
# LDAPv3
# base <> with scope subtree
# filter: uid=maeby
# requesting: ALL
#

# maeby, suborg, org, ch
dn: ...
objectClass: top
objectClass: person
objectClass: posixAccount
objectClass: shadowAccount
objectClass: ...
objectClass: ...
objectClass: ...
uid: maeby
shadowFlag: 1
description: temporary staff account, imported from domain
homeDirectory: /home/maeby
uidNumber: 0001
gidNumber: 0010
cn: Mario Aeby
loginShell: /bin/bash

# search result
search: 2
result: 0 Success

# numResponses: 2
# numEntries: 1

Wenn dies klappt, geht es zum nächsten Schritt:

Apache 2.2 konfigurieren

Als erstes aktiviert man die zwei LDAP-Module:

$ cd /etc/apache2/mods-enabled
ln -s ../mods-available/ldap.load
ln -s ../mods-available/authnz_ldap.load

Es empfiehlt sich, einen LDAP-Cache einzurichten. Im selben Verzeichnis (/etc/apache2/mods-enabled) erstellt man deshalb eine Datei ldap.conf mit folgendem Inhalt:

$ cat /etc/apache2/mods-enabled/ldap.conf
# Enable the LDAP connection pool and shared
# memory cache. Enable the LDAP cache status
# handler. Requires mod_ldap and mod_auth_ldap

LDAPSharedCacheSize 2000000
LDAPCacheEntries 1024
LDAPCacheTTL 28800
LDAPOpCacheEntries 1024
LDAPOpCacheTTL 28800

# specify shared memory file, to activate cache
LDAPSharedCacheFile /var/cache/apache2/ldap.cache

Web-Verzeichnisse schützen

Das Vorgehen ist ähnlich zu einer Authentifikation über eine htpasswd-Datei, abgesehen davon dass man einige andere Befehle einsetzt:

$ cat .htaccess
AuthType Basic
AuthName Test

AuthLDAPURL "ldaps://ldap.domain.tld/o=org,c=ch?uid"
AuthzLDAPAuthoritative on

AuthBasicProvider ldap

Require ldap-user maeby bgates sjobs

Anstelle Benutzer kann man auch Gruppen spezifizieren – oder gar spezielle Filter mitgeben, die erfüllt sein müssen.

Tags: ,
Labels: Linux, Web

Keine Kommentare | neuen Kommentar verfassen

Dienstag, 6. November 2007

PHP wirft mime_magic-Fehler

Wenn beim Aufruf von php-cli folgende Fehlermeldungen ausgespuckt werden …

PHP Warning:  mime_magic: type search/400       \\input         text/x-tex invalid in Unknown on line 0
PHP Warning:  mime_magic: type search/400       \\section       text/x-tex invalid in Unknown on line 0
PHP Warning:  mime_magic: type search/400       \\setlength     text/x-tex invalid in Unknown on line 0
PHP Warning:  mime_magic: type search/400       \\documentstyle text/x-tex invalid in Unknown on line 0
PHP Warning:  mime_magic: type search/400       \\chapter       text/x-tex invalid in Unknown on line 0
PHP Warning:  mime_magic: type search/400       \\documentclass text/x-tex invalid in Unknown on line 0

Quelle: [php-maint] Bug#361789: PHP Warning: mime_magic: type search [..] text/x-tex invalid in Unknown on line 0

… hilft nur noch das Hash-Zeichen in /usr/share/file/magic.mime. Sucht man nach type search, gelangt man innert Bruchteilen zum fraglichen Block. Beim Kommentieren sollte aber auch

#0      regex           [Cc]onstant[[:space:]]+[Ss]tory text/x-inform

nicht vergessen gehen.

Labels: Linux, Web

Keine Kommentare | neuen Kommentar verfassen

Dienstag, 6. November 2007

Mediawiki mit kurzen und schönen URLs

Mediawiki kann über äusserst hässliche URLs wie http://wiki.domain.tld/index.php?title=Startseite oder aber über kurze und schöne URLs in der Form http://wiki.domain.tld/Startseite angesprochen werden.

Wie? Folgende Kurzanleitung soll mir (und allen anderen Leuten da draussenTM) für zukünftige Installationen als Gedankenstütze dienen:

.htaccess

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule  ^(.+)  /index.php?title=$1  [L]

LocalSettings.php

$wgArticlePath = "/$1";
$wgUsePathInfo = false;

Übrigens: Wenn ich in solchen Momenten den Code dieses Wiki-Systems näher betrachte, frage mich immer wieder, wie Wikipedia mit einem solchen Murks gross werden konnte.

Welches Wiki überzeugt?

Auf der Arbeit an der Uni verwende ich TWiki (Kurzkritik: Perl *wäh*, simple Dateistruktur, GUI unübersichtlich); auf der Arbeit in der Privatwirtschaft Atlassian Confluence. Dieses gefällt mir von all den Wikis da draussen bisher am meisten. Leider kostet es auch einen saftigen Batzen :-/

Tags:
Labels: Linux, Web

Keine Kommentare | neuen Kommentar verfassen

Sonntag, 21. Oktober 2007

Defekte Windows-Installationen mit Knoppix und rsync sichern

Vor einiger Zeit wurde ich zu einem Bekannten gerufen, dessen Windows XP nicht mehr aufstarten wollte – selbst im abgesicherten Modus nicht. Nach einigem Herumpröbeln mit Wiederherstellungspunkten gab ich auf und empfahl dem Kunden eine Neuinstallation mit den Recovery-CDs.

Zuerst galt es aber, die bestehenden Daten zu sichern. Was lag näher, als dazu Knoppix heranzuziehen und das Backup mit Linux-Bordmitteln auf eine USB2-Platte zu bewerkstelligen?

  1. Knoppix-CD einlegen
  2. BIOS-Einstellungen anpassen, damit von CD gebootet wird
  3. Beim Boot-Screen ist die Abfrage mit Enter zu bestätigen
    • Im vorliegenden Fall kam der PC (Fujitsu Siemens Scaleo P) mit den Standard-Einstellungen nicht hoch. Knoppix blieb bei
      accessing knoppix cd at /dev/hdd ...

      hängen

    • Die Boot-Option
      knoppix noaudio nodma

      (muss auf dem Boot-Screen angegeben und danach mit Enter bestätigt werden) liess das Gerät schlussendlich starten. Kurz nach der Suche nach der Knoppix-CD erschien die Meldung

      found primary knoppix compressed image at /cdrom/KNOPPIX/KNOPPIX
  4. Öffnen eines Terminals/Shells (für Windows-Benutzer: „Kommandozeilen-Interface“)
  5. Windows-Festplatte mounten:
    sudo mount /mnt/sda1
  6. USB2-Festplatte an den Computer schliessen, mounten:
    sudo mount /mnt/sdb1
  7. Daten von Windows-Festplatte mit rsync auf USB2-Disk spiegeln:
    cd /mnt/sda1
    sudo rsync --verbose -rlt . /mnt/sdb1

    Quelle: rsync Tips & Tricks

  8. Auf dem Bildschirm werden in Echtzeit die Dateien angegeben, die gerade kopiert werden. Die meisten Windows-Systeme sind heute mit NTFS formatiert, weshalb der ntfs-3g-Treiber zum Lesen der Windows-Platte benutzt wird.

Nach ein bis zwei Stunden liegen alle Dateien auf der portablen Festplatte, die Neuinstallation kann nun beginnen.

Tipp: Nu wichtige Dateien sichern

Mit der oben erwähnten Methode wird der gesamte Inhalt der Festplatte gesichert. Wer sich ganz sicher ist, dass er nur bestimmte Ordner benötigt, kann dies mit exclude/include-Anweisungen bewerkstelligen. Nähere Auskunft gibt rsync Tips & Tricks. Leider hatte ich immer wieder Probleme mit der korrekten Formulierung von include/exclude-Anweisungen, weshalb ich ein vollständiges Backup vorziehe.

Folgende Dateien könnten übersprungen werden:

  • hyberfil.sys (~1GB; Speicherabbild im Schlafmodus)
  • pagefile.sys (1.5GB; Auslagerungsdatei)
  • System Volume Information/* (507MB; u.a. Wiederherstellungspunkte)
  • Windows/$NtUninstall* (WindowsUpdates)
  • Windows/$hf_mig$

Tags:
Labels: Linux

Keine Kommentare | neuen Kommentar verfassen

Mittwoch, 17. Oktober 2007

Mails mit exim4 pipen

Kürzlich hatte ich auf der Arbeit das Problem, dass ein neu eingeführtes Ticketing-System sich automatisch aller auf die Support-Adresse eingehenden Mails annehmen hätte sollen – es aber nicht tat.

Auf dem Server läuft Debian, als MTA ist exim4 installiert.

In /etc/aliases stand nach der erfolgreichen Installation von Request Tracker (RT) bereits alles zum Besten …

rt3: "|/home/rt3/bin/rt-mailgate --queue incoming --action correspond --url http://rt3.domain.tld"

… sogar die Weiterleitung war aktiv …

pc-support: rt3

… doch irgendwie wollte die Zustellung der Mails nach RT einfach nicht klappen! In /var/log/exim4/mainlog war nach erfolglosen Mail-Versuchen (vorerst vom localhost aus, später auch aus dem LAN) zu lesen:

2007-10-09 05:23:42 1Ieqtj-0000u4-40 == |/home/rt3/bin/rt-mailgate --queue incoming --action correspond --url http://rt3.domain.tld  R=system_aliases defer (-30): pipe_transport unset in system_aliases router

Nach einer etwas längeren Google-Suche war das Problem eingegrenzt: exim4 pipet Mails in der Standardkonfiguration nicht. Die Entwickler raten in der Doku zwar vom Pipen nach herkömmlicher Art ab – aber wenn niemand ein anständiges Beispiel beilegt und die Dokumentation im Kreis herumführt (In Z steht: „Schaue in XY nach“ und in XY steht „Schaue in Z nach“), biegt man die Konfiguration halt so um, dass zumindest die „mittelalterliche“ und gewohnte Vorgehensweise klappt.

Hierzu mussten in der Datei /etc/exim4/exim4.conf.template (falls eine monolithische Konfigurationsdatei verwendet wird) folgende Zeilen eingetragen werden:

...
# for explanation and some workarounds.

SYSTEM_ALIASES_USER = rt3
SYSTEM_ALIASES_GROUP = rt3
SYSTEM_ALIASES_PIPE_TRANSPORT = address_pipe

system_aliases:
...

Seither gelangen neu eintreffende Mails direkt in das Ticketing-System und warten nun darauf, freiwillig von einem der Supporter übernommen zu werden. Dies scheint ein deutlich grösseres Problem zu sein *zwinker*

Tags:
Labels: Linux

Keine Kommentare | neuen Kommentar verfassen

Montag, 1. Oktober 2007

Linux-Pinguin

Tux: Was nicht fliegen kann, kann auch nicht abstürzen.

Labels: Funny, Linux

Keine Kommentare | neuen Kommentar verfassen

Freitag, 14. September 2007

Bye bye, SCO!

SCO Group today filed for bankruptcy protection.

Quelle: SCO files for US bankruptcy protection

Endlich ist die Bude hops gegangen. In den letzten Jahren produzierte das Unternehmen nichts substanzielles mehr, als es mit Hilfe einer Horde Rechtsverdreher gegen den Giganten IBM vor Gericht zog. Grund der Klage: IBM habe Unix-Quellcode geklaut und in Linux eingebaut.

Ausser Spesen nichts gewesen: In einem Monat sollen 9 Millionen US-Dollar an die Anwälte überwiesen worden sein. Wenn zwei sich streiten freuen sich am Ende nur die Anwälte.

Labels: Linux, USA, Wirtschaft

Keine Kommentare | neuen Kommentar verfassen

Donnerstag, 13. September 2007

MySQL: Table is marked as crashed and should be repaired

Als ich gestern phpMyAdmin auf einem von mir betreuten Web-Server aufrief, erhielt ich folgende Fehlermeldung präsentiert:

#145 - Table './wsu/smt_stats' is marked as crashed and should be repaired 

Hossa! In meiner ganzen Karriere habe ich so etwas noch nie erlebt. Nun, was tun? phpMyAdmin verfügt in seiner Oberfläche unter tabelle > Operations > Table Maintenance diverse Möglichkeiten zur Fehlerbehebung:

  • Check table
  • Analyze table
  • Repair table
  • Optimize table

Leider waren diese Befehle im aktuellen Fall nicht zugänglich – anstelle der Liste erschien oben genannte Fehlermeldung.

Glücklicherweise kann man in der Tabellenübersicht einer Datenbank Tabellen mit der Checkbox markieren und aus dem Befehle-Drop-Down dann ‚Repair‘ auswählen. Leider brachte dies nichts, die Fehlermeldung erschien weiterhin. Das Problem schien schwerwiegender zu sein, als zuerst angenommen.

Deshalb ging es einerseits rüber zu Google, ums ich über die Möglichkeiten der Tabellenreparatur schlau zu machen, andererseits per SSH auf den Server selbst.

Auf Ways to repair MYSQL Databases fand ich Empfehlungen für solche Fälle, welche ich der Reihe nach ausprobierte.

mysqlcheck

hist-web:~# mysqlcheck -uroot -p wsu smt_stats
Enter password: 
wsu.smt_stats
error    : Table './wsu/smt_stats' is marked as crashed and should be repaired

Oookey … der Nächste bitte!

myisamchk

Zuerst fährt man MySQL ordnungsgemäss herunter:

/etc/init.d/mysql stop

Dann kann man sich mit dem Brachial-Tool ans Werk machen:

hist-web:/var/lib/mysql/wsu# myisamchk smt_stats.MYI
Checking MyISAM file: smt_stats.MYI
Data records:  139144   Deleted blocks:       0
myisamchk: warning: Table is marked as crashed
- check file-size
myisamchk: error: Size of datafile is: 10473472          Should be: 10473480
- check record delete-chain
- check key delete-chain
- check index reference
- check data record references index: 1
myisamchk: error: Found 139145 keys of 139144
- check record links
myisamchk: error: Recordlink that points outside datafile at 10473420
MyISAM-table 'smt_stats.MYI' is corrupted
Fix it using switch "-r" or "-o"

Ich tat, wie mir befohlen wurde:

hist-web:/var/lib/mysql/wsu# myisamchk -r smt_stats.MYI
- recovering (with sort) MyISAM-table 'smt_stats.MYI'
Data records: 139144
- Fixing index 1
Found block that points outside data file at 10473420

Zur Sicherheit überprüfte ich die Tabelle erneut:

hist-web:/var/lib/mysql/wsu# myisamchk smt_stats.MYI
Checking MyISAM file: smt_stats.MYI
Data records:  139144   Deleted blocks:       0
- check file-size
- check record delete-chain
- check key delete-chain
- check index reference
- check data record references index: 1
- check record links

Da alles wieder rosig aussah, konnte man MySQL wieder hochfahren:

/etc/init.d/mysql start

Labels: Linux

22 Kommentare | neuen Kommentar verfassen