Archiv

Archiv für die Kategorie ‘Linux’

/etc unter Versionskontrolle mit git

1. August 2010 melle 3 Kommentare

Auf unserem Freifunkserver sind teilweise mehrere Admins am Werk. Damit Änderungen an der Konfiguration nachvollziehbar werden und man auch nach einem halben Jahr weiss, was man eigentlich gemacht hat, steht das Verzeichnis /etc unter Versionskontrolle.

Ich hatte das schon mal auf unserem alten Server mit svn, aber das Hauptproblem war, dass ich immer vergessen habe meine Änderungen zu committen. Folglich sammeln sich über Tage/Wochen/Monate Änderungen an und man weiss gar nicht mehr, was jede einzelne Änderung zu bedeuten hat.

Zum Glück hat mich Wulf vom Berliner Freifunk auf eine super Idee gebacht: man kann das commit-Kommando in der .bash_logout von root unterbringen. Sobald root seine Session beendet hat, passiert folgendes:

  • /etc wurde nicht verändert: es passiert gar nix
  • /etc wurde verändert: es öffnet sich ein Editor, in dem man seine Änderungen kurz beschreiben muss. Nach dem Abspeichern erfolgt automatisch der commit

Prima Sache. In der Praxis gibt es damit aber noch ein kleines Problem: “sudo su -” berücksichtigt die .bash_logout, “sudo su” jedoch nicht. Da ich meine Schlampigkeit kenne, habe ich eine Lösung gefunden, die in beiden Fällen funktioniert: ein exit-Trap. Das ganze wird in die .bashrc vom root eingebaut:

# erstmal die letzten 10 commits anzeigen
echo "***************************************************************"
(cd /etc; git log -10 --reversepretty=’format:%cd (%h)%n%s%n’ )
echo "***************************************************************"
 
# exit trap, schlägt beim Logout zu 
function on_exit()
{
  cd /etc/
  git commit -a
}
 
trap on_exit EXIT

Der/die geneigte Leser/in mag hier nach Belieben noch Funktionen ranbauen, die z.B. den diff des letzten commits per Mail versenden :)

KategorienLinux, Nerd Tags:

ssh host-key Prüfung abschalten

17. Mai 2010 melle 2 Kommentare

Ich habe oft verschiedene WLAN-Router an meinem Rechner. Jeder Router ist auf dem LAN-Port über die gleiche IP zu erreichen (i.d.R. 192.168.1.1), allerdings hat jeder Router einen anderen ssh host-key. Wechsel ich den Router, schlägt die Überprüfung des Keys fehlt, weil unter der gleichen IP plötzlich ein anderer Key presentiert wird. Die Lösung habe ich hier gefunden und sieht so aus:

Host router
        Hostname 192.168.1.1
        StrictHostKeyChecking no
        UserKnownHostsFile=/dev/null
        User root
KategorienLinux, Nerd Tags:

Geforkte Prozesse mit Netbeans debuggen

17. Mai 2010 melle Keine Kommentare

Debugging unter Linux/Unix ist ein großer Haufen Mist. Zumindest, wenn man schon mal mit Visual Studio gearbeitet hat. Ich sitze gerade an einem Produkt, dass massiv Prozesse forkt und irgendwo in einem Child steckt ein Bug.

Weil das Erzeugen und das Beenden der Prozesse ziemlich schnell geht, kann man sich nicht an den Prozess attachen, er ist schon lange wieder weg, bevor der Debugger oben ist. Findige Kollegen haben dann soetwas in den Code eingebaut:

  if (getenv("DEBUG_XYZ")) kill (getpid(),SIGSTOP);

Ich muss also eine Umgebungsvariable DEBUG_XYZ setzen, den Master-Prozess neu starten und irgendwann wird der fragliche Prozess als Gestoppt in der Prozessliste stehen, ich kann mich in Ruhe attachen und debuggen.
Die Lösung hat natürlich massive Nachteile: ich muss den Code jedesmal ändern, wenn ich den “Breakpoint” verschieben will und schlimmstenfalls kommt solcher Code versehentlich ins finale Release.

Es geht ein bisschen besser, wenn man gdb benutzt, der kann nämlich beim Fork entweder dem Parent- oder dem Childprozess folgen:

set follow-fork-mode mode

Wobei mode entweder “child”, “parent” oder “ask” ist. Nun will niemand “nativ” mit dem gdb debuggen, man spannt Netbeans davor. Damit man aber in Netbeans den follow-fork-mode setzen kann, braucht man erstmal eine GDB Debugger Console:

-J-Dgdb.console.window=true

muss unter netbeans_default_options in der netbeans.conf hinzugefügt werden.

Jetzt kann man zumindest das Debugging starten und sich entscheiden, ob man den Childs oder den Parents folgt. “ask” geht komischerweise nicht. Auch muss man scheinbar den follow-fork-mode bei jedem Start neu setzen.

Das ist immernoch ein riesengroßer Haufen Mist. Aber zumindest habe ich schöne gelbe Gummistifel an. Geht das nicht einfacher? :-(

KategorienLinux, Nerd Tags:

Watchdog script to supervise /proc/user_beancounters

29. März 2010 melle 5 Kommentare

I’m in the process of setting up my new server. The services are running inside OpenVZ-Containers. The Problem is, that you don’t know how to setup the resource parameters. You have to walk the way of trial and error, because you don’t how much resources the services consume under productive load.

After migrating some domains, my postfix process died last night because of a lack of pirvvmpages. So I wrote a script that monitors changes in /proc/user_beancounters of every container. The script runs from crontab every 5 minutes and compares UBC failcounter values to the last known values. If there is a difference, a mail is sent to root.

Feel free to re-write the script in your favorite language ;-)

#!/bin/sh
# get running VEs
VES=`vzlist -H -o veid`
MAILFILE=/var/run/ubcWatchdog_mail.txt
 
# check every running VE
for VE in $VES; do
  # create file if it does not exist
  NEWFCFILE=/var/run/ubcWatchdog_$VE.new.txt
  OLDFCFILE=/var/run/ubcWatchdog_$VE.txt
  touch $NEWFCFILE
  touch $OLDFCFILE
 
  # save current failcounter
  vzctl exec $VE 'cat /proc/user_beancounters' | cut -b 13-129 | sed 's/ \+/ /g' | awk {'print $6 "\t"  $1'} > $NEWFCFILE
 
  # compare to reference failcounter
  diff -U 0 -d $OLDFCFILE $NEWFCFILE > /dev/null
  if [ $? != 0 ]; then              
    # yepp, something failed
    echo "****************************************" >> $MAILFILE
    echo "UBC fail in VE $VE!" >> $MAILFILE
    diff -U 0 -d $OLDFCFILE $NEWFCFILE | grep "^[+,-][a-z,A-Z,0-9]\+" >> $MAILFILE
    echo "****************************************" >> $MAILFILE
    echo "" >> $MAILFILE
    echo "UBC now:" >> $MAILFILE
    vzctl exec $VE 'cat /proc/user_beancounters' >> $MAILFILE
  fi
 
  # save new failcounter as reference
  mv $NEWFCFILE $OLDFCFILE
done;
 
# send mail to root
if [ -f $MAILFILE ]; then
  mail -s "UBC Fail!" root < $MAILFILE
  rm $MAILFILE
fi

The mail looks like this:

****************************************
UBC fail in VE 20!
-205 kmemsize
+59936 kmemsize
****************************************

And is the result of a fork-bomb that exploded inside VE 20 :-)

KategorienLinux, Nerd Tags:

dovecot deliver – Fatal: postmaster_address setting not given

27. März 2010 melle Keine Kommentare

It took me an hour to figure out the reason for this message. The only hint is, that there might be special characters like tabs in the config file. But in my case, the reason was the dovecot-postfix package of Ubuntu 9.10.

There are two config-files: /etc/dovecot/dovecot-postfix.conf and /etc/dovecot/dovecot.conf. The header says:

# If there's a file /etc/dovecot/dovecot-postfix.conf, which is part of
# dovecot-postfix package, it will be used instead of dovecot.conf.
 
# Keep in mind that, if that file exist, none of the changes in
# /etc/dovecot/dovecot.conf will have effect on dovecot's configuration.
# In that case you should customize /etc/dovecot/dovecot-postfix.conf.

The problem: dovecot’s deliver command ignores dovecot-postfix.conf and reads it’s config from /etc/dovecot/dovecot.conf :(

Ok, how to fix this? Open /etc/postfix/master.cf and specify the configfile using the -c parameter of the deliver-command:

dovecot   unix  -       n       n       -       -       pipe
  flags=DRhu user=vmail:vmail argv=/usr/lib/dovecot/deliver -c /etc/dovecot/dovecot-postfix.conf -f ${sender} -d ${recipient}

See bug #511295.

KategorienLinux, Nerd Tags:

pam-ldap: I have no name! (ubuntu)

25. März 2010 melle Keine Kommentare

Ich bin gerade über einen blöden Fehler gestolpert, den ich nicht noch einmal machen möchte… Ich habe an pam und ldap geschraubt und plötzlich konnten Gruppen und User-IDs nicht mehr aufgelöst werden:

groups: cannot find name for group ID 1000
I have no name!@vz10:~$

In einem nahezu identischen System ging es ohne Probleme. Ein Vergleich der beiden /etc-Verzeichnisse hat keine Auffälligkeiten gezeigt. Nachdem ich drauf und dran war, das System wegzuschmeißen und neu aufzusetzen, habe ich doch noch die Lösung gefunden:

/etc/ldap.conf muss für alle User lesbar sein. Ich hatte testweise ein Bind-Password eingetragen und aus diesem Grund die Rechte der Datei eingeschränkt. Ein einfaches

chmod 644 /etc/ldap.conf

hat das Problem gelöst :-)

KategorienLinux, Nerd Tags:

Debian Lenny auf einem Rootserver mit Raid-1 und LVM

14. März 2010 melle 2 Kommentare

Das ist ein Update zu meiner alten Anleitung. Der Unterschied zur alten Anleitung:

  • Dieses Mal soll ein Server unter Debian Lenny eingerichtet werden
  • Swap liegt ebenfalls im Raid
  • Der Server soll mit OpenVZ virtualisierte Maschinen hosten
  • Das root-Dateisystem soll ebenfalls im LVM liegen, damit wir beim Backup konsistente Snapshots vom gesamten System machen können

Hier also das Update zu meiner rundum-sorglos copy&paste-Anleitung zur Einrichtung von

Debian Lenny auf einem Rootserver mit Raid-1 und LVM

Mehr…

KategorienLinux, Nerd Tags:

OpenLDAP Replikation mit syncprov

9. März 2010 melle Keine Kommentare

Für einen neuen Server in unserer Rootserver-Kommune brauche ich eine Replik unseres LDAP-Servers. Wie sich herausstellte, ist das ziemlich einfach und in der umfangreichen Dokumentation exzellent erklärt.

Im zu replizierenden LDAP-Server (“Provider”) muss man lediglich dafür sorgen, dass das syncprov-Modul in der slapd.conf geladen wird:

modulepath      /usr/lib/ldap
moduleload      back_hdb
moduleload      syncprov

Im Zielserver (“Consumer”), wird so eine 1:1 Replikation des Quellservers konfiguriert:

# replication settings
syncrepl rid=001
    provider=ldaps://ldaps.yourdomain.de:636
    type=refreshAndPersist
    searchbase="dc=yourdomain,dc=de"
    schemachecking=on
    type=refreshAndPersist
    retry="60 +"
    bindmethod=simple
    binddn="cn=replicator,dc=yourdomain,dc=de"
    credentials=assword

Natürlich müssen im Quellserver entsprechende Credentials hinterlegt werden. Durch das Keyword refreshAndPersist bleibt die Verbindung dauerhaft bestehen und Änderungen im Quellserver werden sofort auf dem Zielserver repliziert.

Achtung: im Zielserver müssen natürlich die gleichen Schemata geladen sein, wie im Quellserver. Schaut euch also die Include-Section entsprechend an, sonst hagelt es Fehler.

Mit dieser Methode kann man den LDAP-Server super-komfortabel umziehen, einfach Replikation einschalten, DNS-umschwenken und dann die Replikation auf dem Zielserver ausschalten.

DynDNS mit dem Alice Modem 1121 WLAN

25. Februar 2010 melle 9 Kommentare

Das Alice Modem 1121 WLAN bzw. TV hat eine recht spartanische Administrationsoberfläche. Man kann wirklich nur das Nötigste einstellen, eine Möglichkeite den beliebten DynDNS-Dienst zu konfigurieren, sucht man vergeblich.

Die Modemsoftware bringt jedoch einen DynDNS-Client mit, allerdings ist der nur via Telnet zu konfigurieren. Das Modem ist vom LAN und WLAN aus unter seiner Standard-IP 192.168.1.1 erreichbar.

Die Zugangsdaten lauten:

  • User: admin
  • Passwort: AliceXXXXXX123

Die Zeichenfolge XXXXXX muss durch die letzten sechs Zeichen der LAN MAC-Adresse des Modems ersetzt werden. Lautet die MAC-Adresse des Modems z.B. 00:25:5E:AB:64:FE, so muss man als Passwort AliceAB64FE123 verwenden:

$ telnet 192.168.1.1
 
Entering character mode
Escape character is '^]'.
 
Alice Modem WLAN 1121
Login: admin
Password: AliceAB64FE123
 
>

Man findet sich auf einer kastrierten Linux(?)-Shell wieder. help liefert eine Liste der möglichen Kommandos. Mit ddns kann man den DynDNS-Client konfigurieren:

> ddns
ddns add hostname --username username --password password --interface interface --service tzo|dyndns
     remove hostname
     show
ddns --help>

Ok, mit add fügt man eine DynDNS-Konfiguration hinzu, mit remove wird sie wieder entfernt und mit show kann man alle anzeigen lassen.

Der folende Aufruf fügt eine Konfiguration für den Hostnamen myhomedsl.dyndns.org beim Dienst dyndns mit dem Usenamen user6 und dem Passwort 123456 hinzu:

dns add myhomedsl.dyndns.org --username user6 --password 123456 --interface ppp_0_1_32_1  --service dyndns

Wichtig: man muss im parameter --interface den Namen des WLAN-Interfaces eingeben. Den Namen bekommt man mit dem Kommando ifconfig heraus. Es listet alle Interfaces auf, gesucht ist das mit ppp im Namen:

ppp_0_1_32_1    Link encap:Point-Point Protocol  
                inet addr:85.178.209.191  P-t-P:213.191.89.4  Mask:255.255.255.255
                UP POINTOPOINT RUNNING NOARP ALLMULTI MULTICAST  MTU:1492  Metric:1
                RX packets:9540 errors:0 dropped:0 overruns:0 frame:0
                TX packets:7456 errors:0 dropped:0 overruns:0 carrier:0
                collisions:0 txqueuelen:3 
                RX bytes:6444034 (6.1 MiB)  TX bytes:1135835 (1.0 MiB)

In meinem Beispiel lautet der Name des Interfaces also ppp_0_1_32_1.

How to enable Server Name Indication (SNI) on Debian Lenny

9. November 2009 melle 3 Kommentare

Server Name Indication (SNI) on Debian Lenny is easy to implement. OpenSSL is already SNI-capable, only the Apache Webserver is a bit outdated. So lets backport Apache >= 2.2.12 to Lenny. Here is my little step-by-step howto:

Install a compiler an the debian dpkg-Development Environment:

$ sudo aptitude install dpkg-dev build-essential fakeroot

To build apache, you will nee libcap2-dev and autoconf too:

$ sudo aptitude install libcap2-dev autoconf

…and the build dependencies for apache2:

$ sudo apt-get build-dep apache2

Download the Apache 2.2.14 sources for the current testing release from http://packages.debian.org/source/squeeze/apache2:

$ wget http://ftp.de.debian.org/debian/pool/main/a/apache2/apache2_2.2.14-1.dsc
$ wget http://ftp.de.debian.org/debian/pool/main/a/apache2/apache2_2.2.14.orig.tar.gz
$ wget http://ftp.de.debian.org/debian/pool/main/a/apache2/apache2_2.2.14-1.diff.gz

Extract the source packages:

$ dpkg-source -x apache2_2.2.14-1.dsc

Compile the package:

$ cd apache2-2.2.14/
$ dpkg-buildpackage -us -uc -rfakeroot

(-us and -uc supresses the digital signature, fakeroot allows to set the ownership of the archived files to root, even if you are not root currently)

Install the desired apache packets:

$ cd ../
$ dpkg -i apache2_2.2.14-1_i386.deb apache2.2-bin_2.2.14-1_i386.deb apache2.2-common_2.2.14-1_i386.deb apache2-mpm-prefork_2.2.14-1_i386.deb apache2-suexec_2.2.14-1_i386.deb apache2-utils_2.2.14-1_i386.deb

Finally, remove the packages you installed to build the apache2-packages.

Surfterminal mit Linux

1. November 2009 melle Keine Kommentare

Wenn man einen Rechner im öffentlichen Raum als Browserterminal bereitstellen will, gibt es hauptsächlich die Anforderung, dass die User keine privaten Daten hinterlassen und am System so wenig wie möglich verstellen.

Es gibt verschiedenste Lösungen für diesen Zweck, fertige Linux-Distributionen oder spezielle Internet-Café Software, die Windows-Rechner so abschottet, das man noch nicht mal einen Explorer aufbekommt.

Für die beiden vom Freifunk betriebenen Surfterminals habe ich eine extrem simple Lösung gewählt. Die Rechner verrichten seit etlichen Monaten ohne Probleme ihren Dienst, obwohl es in den Kneipen schon etwas rauher zugeht.

Zunächst wird auf den Rechner die Linux-Distribution der Wahl installiert. Ich verwende Ubuntu, aber darauf kommt es nicht an. Es werden zwei Benutzer eingerichtet: ein administrativer (“tresen”) und ein unpreviligierter (“gast”). Achtung, bei Ubuntu ist der erste, bei der Installation eingerichtete User ein previligierter User (mit sudo-Rechten). Also erst “tresen” und dann “gast” einrichten und hinterher nochmal die /etc/sudoers überprüfen.

Man loggt sich zunächst als “gast” ein und richtet den Browser so ein, wie man es gerne für die Gäste hätte: Adblocker, keine Cookies und Passwörter speichern, Startseite ect. Die Startseite für den Browser zeigt in unser Wiki, die Kneipengäste können dort dann eigene Links ablegen und so die Startseite etwas nach ihren Bedürfnissen anpassen. Der Webbrowser wird als Autostart-Applikation eingerichtet (System -> Preferences -> Sessions -> Startup Programs). Dann loggt man sich als “tresen” ein und richtet den Anmeldungsmanager so ein, dass “gast” beim Rechnerstart automatisch eingeloggt wird.

Jetzt kommt der interessante Teil: das Script pack_guest.sh verpackt das Home-Verzeichnis vom Gastuser in eine .tar-Datei:

#!/bin/sh
#
# Erstellt ein neues Template (gast_home.tar.gz) aus dem aktuellen gast
# Homeverzeichnis. Dieses Script sollte nur ausgeführt werden, wenn die
# Änderungem am gast-User dauerhaft gespeichert werden sollen.
#
# siehe http://wiki.freifunk-potsdam.de/index.php?title=Olga-Surfstation
if [ `whoami` != "root" ]; then
  echo "Du musst root sein, um das Script auszufuehren! Schau Dir bitte die"
  echo "Doku auf unserer Webseite an:"
  echo "http://wiki.freifunk-potsdam.de/index.php?title=Olga-Surfstation"
  exit 1
fi
 
#
DATE=`date +%Y%m%d_%H%M%S`
TARGET=/home/tresen/Surfstation/gast_home.tar.gz
 
# backup vom alten $HOME anlegen...
if [ -e $TARGET ]; then
  mv -v $TARGET  /home/tresen/Surfstation/gast_home_$DATE.tar.gz
fi
 
cd /
tar czf /home/tresen/Surfstation/gast_home.tar.gz /home/gast

Dieses Script ruft man einmalig auf und findet dann in /home/tresen/Surfstation die Datei gast_home.tar.gz. Dieses Template kann nun immer ausgepackt werden, wenn der Rechner startet. Das erledigt das Script unpack_guest.sh:

#!/bin/sh
#
# stellt den gast-user aus dem vorgefertigten Template (gast_home.tar.gz)
# wieder her. Das ist das Standard-Script, das bei jedem Booten ausgefuehrt
# wird. siehe
# http://wiki.freifunk-potsdam.de/index.php?title=Olga-Surfstation
#
if [ `whoami` != "root" ]; then
  echo "Du musst root sein, um das Script auszufuehren! Schau Dir bitte die"
  echo "Doku auf unserer Webseite an:"
  echo "http://wiki.freifunk-potsdam.de/index.php?title=Olga-Surfstation"
  exit 1
fi
 
rm -rf /home/gast
cd /
tar xzf  /home/tresen/Surfstation/gast_home.tar.gz
 
# falls das Passwort zurueck gesetzt wurde...
echo "gast:gast" | chpasswd

Jetzt muss man nur noch dafür sorgen, dass dieses Script bei jedem Bootvorgang ausgeführt wird. Eine Zeile in /etc/rc.local genügt:

/home/tresen/Surfstation/unpack_guest.sh

[Update] (12.11.09): Mir ist gerade aufgefallen, dass es mit Upstart zu einer Race-Condition kommt. Es ist einfach nicht definiert, wann das Script unpack_guest.sh ausgeführt wird und das führt zu sehr merkwürdigen Effekten.

Wenn man also eine Distribution mit Upstart verwendet (z.B. Ubuntu 9.10 “Karmic Koala” oder später), muss man den Aufruf des unpack_guest.sh Scriptes im Upstart-System vor den gdm legen. Entweder man definiert einen eigenen Dienst oder man fügt das Script als pre-start Script in /etc/init/gdm.conf ein:

pre-start script
    # unpack the guest account home directory
    /home/tresen/Surfstation/unpack_guest.sh
end script

[/Update]

Mir gefällt an diese Lösung, dass wir damit absolut keine Arbeit haben. Die einzigen Probleme sind Hardwareschäden, also wenn wiedermal Bier über die Tastatur gekippt wurde. Das System an sich läuft aber nahezu wartungsfrei. Man muss sich halt alle paar Monate (idealerweise remote) einloggen und die fälligen Updates einspielen.

Stacktrace gefällig?

7. September 2009 melle Keine Kommentare

Gelegentlich braucht man einen Stacktrace. Ich bin heute über ein Problem gestolpert, bei dessen Lösung mir ein Stacktrace sehr helfen würde.

20090907_dddlogoEine unserer Bibliotheken kümmert sich um Speichermanagement. Das sind kleine Wrapper um malloc / free, die Buchhaltung über den Speicher führen und bei Fehlern entsprechende Meldungen ausgeben. Also der übliche Weg für das Speichermanagementproblem in C, es gibt duzende Lösungen die ähnlich funktionieren.

Das Problem heute war, dass Speicher freigegeben werden sollte, der nie allokiert war oder schon einmal freigegeben wurde. Er war auf jeden Fall nicht mehr als belegt gekennzeichnet und konnte somit nicht freigegeben werden. Programme ohne solch ein Speichermanagement würden an dieser Stelle abstürzen, bei uns taucht nur eine Meldung im Log auf.

Diese Meldung war mein Startpunkt für die Suche. Die Aufrufe der free-Wrapperfunktion sind jedoch in vielen Sourcefiles auf tausenden Zeilen Code verstreut. Wie soll man dort den einen Aufruf finden, der die Ursache für die Meldung ist?

Genau: ein Stacktrace muss her. Der schmutzige Weg wäre, das Programm mutwillig zum Absturz zu bringen. Dann kann man sich aus dem core-File den Stack rauspopeln und weiss, woher der Aufruf kommt.

Es gibt jedoch etwas viel schöneres: backtrace() aus der glibc. Mit ein paar Zeilen Code kann man an jeder beliebigen Stelle des Programms einen Stacktrace erzeugen:

void *array[10];
size_t size;
char **strings;
size_t i;
 
size = backtrace (array, 10);
strings = backtrace_symbols (array, size);
 
printf ("Obtained %zd stack frames.\n", size);
 
for (i = 0; i < size; i++)
   printf ("%s\n", strings[i]);
 
free (strings);

Ich habe also in der free-Wrapperfunktion backtrace() eingebaut und konnte mir den Stacktrace für den Fehlerfall ausgeben. Im Log erhält man dann etwa diese Ausgabe:

yourbinary [0x80b9e0c]
yourbinary [0x80b9f02]
yourbinary [0x8054abd]
yourbinary [0x805124f]
yourbinary [0x8050078]
yourbinary [0x808d6f3]
yourbinary [0x804bd42]
yourbinary [0x804b04e]
libc.so.6(__libc_start_main+0xe5) [0xb7d0f775]
yourbinary [0x804a701]

Ok, das sieht schon mal gut aus ;-) Jetzt muss man nur noch yourbinary in den ddd laden um die Speicheradressen in Codezeilen umzuwandeln - et voilà: schon ist die bösartige Zeile Code identifiziert.

KategorienLinux, Nerd Tags:

HFS+ unter Linux beschreiben

6. Mai 2009 melle 1 Kommentar

Ich habe heute zu meinem Erstaunen festgestellt, dass man HFS+Volumes – dem Fall meine externe USB-Platte – nicht unter Linux beschreiben kann. Nachdem ich google eine Weile mit Suchbegriffen (“Read only filesystem” “hfsplus”) beworfen hatte, kam auch ans Licht, woran das liegt.

Linux kann schon HFS+-Volumes beschreiben, allerdings nicht, wenn diese journaled sind. Die Lösung, das Journal abzuschalten, ist für mich akzeptabel. Unter Mac OS X geht das am schnellsten auf der Kommandozeile:

1
$ sudo /usr/sbin/diskutil disableJournal /Volumes/BACKUP
KategorienApfel, Linux, Nerd Tags:

25C3: ausverkauft

27. Dezember 2008 melle Keine Kommentare

Frank hatte wohl recht, als er meinte, dass es heute ziemlich voll ist. Alle 4500 3800 Tickets sind verkauft, das BCC platzt aus allen Nähten und wer kein Ticket hat, sollte sich die Talks besser von der Couch aus ansehen.

KategorienChaos-Congress, Linux Tags:

cannot connect to saslauthd server: Permission denied

22. August 2008 melle 7 Kommentare

After upgrading my server from debian etch to lenny, I discovered that the saslauthd was broken. The log looked like this:

SASL authentication failure: Password verification failed
SASL PLAIN authentication failed: generic failure
SASL authentication failure: cannot connect to saslauthd server: Permission denied
SASL LOGIN authentication failed: generic failure

The solution for this problem is documented in /usr/share/doc/sasl2-bin/README.Debian.gz:

  • edit /etc/default/saslauthd and set OPTIONS like this:
    OPTIONS="-c -m /var/spool/postfix/var/run/saslauthd"
  • run this command as root:
    dpkg-statoverride --add root sasl 710 /var/spool/postfix/var/run/saslauthd
  • add the postfix user to the sasl group:
    adduser postfix sasl
  • restart saslauthd and postfix
KategorienLinux, Nerd Tags:

Karten für den LinuxTag 2008

15. Mai 2008 melle 1 Kommentar

Das schneeballartige Kartenverteilsystem des LinuxTag war wieder großzügig. Wer eine Karte haben möchte schreibts bitte in die Kommentare oder an melle (kringelchen) gmx (punkt) at.

KategorienLinux Tags:

OpenSSL auf Debian etch unsicher

13. Mai 2008 melle Keine Kommentare

OpenSSL auf Debian etch erzeugt vorhersagbare Schlüssel. Damit können alle seit September 2006 erzeugten Schlüsselpaare als kompromittiert angesehen werden. Betroffen sind Schlüssel für SSH, OpenVPN, DNSSEC, X.509 Zertifikate und Sitzungsschlüssel, die in SSL/TLS Verbindungen verwendet werden.
Besonders prickelnd ist, dass man möglicherweise seinen SSH-Schlüssel auf diversen Maschinen verteilt hat und jetzt erstmal überlegen darf, wo er überall rumgammelt.

Also los! Update einspielen, Keys neu erzeugen und verteilen! Spread the word!

KategorienLinux, Nerd Tags:

Xinerama unter Linux

13. September 2007 melle 1 Kommentar

Seit einem Jahr stapeln sich hinter meinem Rücken die ausgedienten Monitore. Natürlich verschmäht man die, weil der LCD-Bildschirm um Welten schärfer ist. Bis der Scheff jedoch einen richtig großes Display spendiert, muss man mühevoll Fenster hin- und her schubsen oder einen wundersamen Fenstermanager bändigen um den Überblick zu behalten.
Nach einem Gespräch mit dem hochgeschätzten Kollegen ist es mir dann endlich wie Schuppen von den Augen gefallen. Xinerama unter Linux Auf das Naheliegende kommt man immer zum Schluss: der Rechner hat zwei Monitoranschlüsse, warum schließe ich Dussel nicht einfach einen Zweitmonitor an?
Die Umsetzung war dann mehr oder weniger Trivial, im Ubuntu Forum gibt es ein exzellentes Howto, wie man Xinerama einrichtet.
Der komplizierte Teil ist jetzt zu entscheiden, welches Eclipse-Fenster wo hin kommt und ob man nicht noch mit einer brachliegenden VGA-Karte einen dritten Monitor anschließen könnte…

KategorienLinux Tags:

Internet Explorer 7 unter Linux

13. September 2007 melle 3 Kommentare

Das schon an anderer Stelle hochgelobte Script IEs4Linux kann in der aktuellen Beta-Version sogar den Internet Explorer 7 unter Linux installieren. Zwar ist die Lösung etwas schmutzig, weil eigentlich einem IE 6 die Rendering Engine des IE 7 untergeschoben wird, es funktioniert aber sehr zufriedenstellend und man kann endlich alle Versionen des Internet Explorers nebeneinander benutzen.

Internet Explorer 7 unter Linux

Safari fehlt leider noch in meiner Sammlung. Falls jemand einen Installer auf der Platte liegen hat, der älter ist als Version 3.522.15.5, würde ich mich darüber sehr freuen. Die letzte Version der Beta zickt nämlich wieder unter Wine herum :-(

KategorienGeneral, Linux Tags:

SSH Fingerprint überprüfen

8. August 2007 melle Keine Kommentare

Wenn man den Fingerprint eines SSH Public Keys überprüfen will, muss man natürlich wissen, wie der Fingerprint lautet. Mit ssh-keygen findet man schnell den Fingerprint des Schlüssels der eigenen Maschine heraus:

$ ssh-keygen -l -f /etc/ssh/ssh_host_rsa_key.pub
2048 93:f0:3b:3a:c4:0b:ee:f6:b2:47:e0:57:d9:64:0b:55 /etc/ssh/ssh_host_rsa_key.pub

Man muss nur einen sicheren, verifizierten Weg zum Server finden (z.B. über eine Maschine, die den korrekten Fingerprint gecached hat) und schon kann man sich auf diesem Weg auch den Fingerprint des Servers anzeigen lassen.

KategorienLinux, Nerd Tags:
Pages: 1 2 3 >>>