Category Archives: Linux

Alles rund um die Pinguine – auf dem Desktop und dem Server

Score

lpic2logoSo richtig mit Ruhm bekleckert habe ich mich in der letzten der beiden LPIC 2 Prüfungen zwar nicht, aber ich bin mehr als nur knapp durch. Wie bei der 201er hatte ich beim und nach dem Schreiben der 202er den festen Eindruck: in dieser Prüfung hast du verloren. Komplett. Keine Chance. Geh nach Hause und lern auf die Wiederholung.

Die Fragen erschienen mir teilweise ziemlich wild, künstlich verkompliziert und nicht unbedingt immer auf der Höhe der Zeit zu sein.

Bei Webservices fühlte ich mich relativ sattelfest und freute mich, dass ich beim Aufschlagen der Prüfungsunterlagen gleich die erste Frage hierzu vorfand. Cooler Einstieg …. dachte ich. Aber dann: die erste Frage zu Apache war eine .htaccess Datei, die so aussah, als hätten drei von Hass auf ihren Server und die Welt zerfressene BOFH unkoordiniert irgendwelche Einträge vorgenommen … eine komplett verzockte Konfiguration also, durch die man sich Schritt für Schritt durchkämpfen musste und dann doch nicht wirklich sagen konnte, was denn nun passieren würde. Nach dieser Eröffnungsfrage ging es bei mir gefühlsmäßig nicht mehr aufwärts.

Die einzige Frage zu einem Bootmanager war zu lilo. Lilo! Wer zum Geier verwendet denn den noch? Eine weitere komplexe Frage kam zu sendmail. Auch so ein Urgestein, das aber wenigstens noch stellenweise im Einsatz sein dürfte. Schwierige Fragen zu Postfix (oder von mir aus zu Exim bzw. anderen distri-spezifischeren Mailservern) hätte ich eher erwartet. In diesem Fall: Glück gehabt.

Emotional fehlte mir bei dieser Prüfung – wie auch bei der 201er – eine Frage, bei der man sich mal ausruhen konnte, bei der man sich einfach sicher war, dass man hier eine sinnvolle und gut begründete, richtige Wahl traf oder Eintrag vornahm. Das scheint Sinn und Zweck der LPIC 2er Prüfungsserie zu sein: uncertainty and doubt ;-)

Nach nunmehr vier LPIC Prüfungen (1 und 2) kann ich sagen: diese Prüfungen sind jeweils ein Einstieg in die Linuxadministration, belegen aber keineswegs, dass man sich tatsächlich mit der Software hinter den Prüfungsthemen auskennt. Sie zeigen, dass man sich mit dem Thema einmal intensiver beschäftigt hat. Mehr nicht. Von “sich auskennen” darf man nicht sprechen. In der Wirtschaft von seinen Admins zu verlangen, dass sie diese Prüfung ablegen, ist demnach kein dickes Ding. Diese verschaffen sich so einen Überblick über Linux: fremd ist einem nach LPIC 2 nichts mehr – zumindest hat man ein wenig systematische Erfahrung gesammelt. Erst der Admin-Alltag selbst erzeugt dann die Chance und den Zwang, sich in die Themen wirklich einzuarbeiten. Außerdem ist es ein Fleißtest. Wer nach der Arbeit gerne chillt, sollte die Finger vom LPIC lassen.

Für so Menschen wie mich, die erst spät zu Linux gekommen sind, eine Sozialwissenschaft statt Physik oder Informatik studiert haben, ist LPIC im Grunde ein Blick zurück ins Studileben: auf viele verpasste nerdige Stunden im Rechenzentrum. Bazinga.

Debian revisited

deb7

Endlich. Debian sieht seit Wheezy nicht mehr aus, als wenn eine Horde Infantiler die Chance zur Gestaltung einer Linux-Distri erhalten hätte, sondern ziemlich cool.

Die Geschmacksrichtungen KDE, Gnome3 und XFCE sowie LXDE sind verfügbar. Ich habe einen kurzen Blick auf die KDE Version geworfen und konnte auf die Schnelle nur einen kleinen Mangel finden: einige GTK Bibliotheken fehlen, so dass Iceweasel / Firefox beim Starten ziemlich bescheuert aussieht. Ein

su -
apt-get install gtk2-engines-oxygen kde-config-gtk-style

löst das Problem.

Oder man zieht sich mit einem

apt-get install gnome

gleich den ganzen Gnome3-Desktop und vergleicht dann, was man lieber mag. Designerisch steht er KDE nicht nach.

OwnCloud zickt

oc_zickt1

OwnCloud zickt seit Version 5.x vermehrt rum:

Erstens mag es keine Connections mit mehreren Clients gleichzeitig. Das führt regelmäßig dazu, dass *conflict* Dateien angelegt werden, obwohl sich an der Dateiversion überhaupt nichts verändert hat. Dies ist leider auch der Fall, wenn alle beteiligten Endgeräte sowie der Server gegenüber dem gleichen Server per NTP ihre Uhrzeit holen. Der Bug sitzt demnach tiefer im System.

owncloud_resourcenfresser

Zweites: Der OwnCloud-Sync-Client frisst so lange an den Ressourcen, bis es sich selbst als dysfunct nach Zombieland abmeldet. Schießt man den Prozess noch rechtzeitig ab, sinken umgehend CPU- und RAM-Last wieder beinahe auf Normalmaß.

Der Screenshot von meinem Arbeitsplatzrechner oben zeigt jedoch ein leider typisches Phänomen. Wirkliches Normalmaß wäre das hier:

kein_oc

Zu swappen hat mein Quadcore mit 8GB RAM nämlich eigentlich nichts.

Da selbst nach Beendigung eines amoklaufenden OwnCloud-Prozesses noch “etwas hängen” bleibt, vermute ich auch hier dickere Probleme. Die OwnCloud-Foren sind zumindest voll von Menschen, die ähnliche Erfahrungen machen.

Ethercalc

ec

Auf BeeHive [1, 2] habe ich schon hierzu geschrieben: Meine Schule hat nun neben einem Etherpad-Lite-Server auch einen Ethercalc-Server zur gemeinsamen Arbeit an Tabellen im Netz.

Die Installation verlief tatsächlich so einfach wie auf den Seiten der Programmierer angegeben.

Was mich zuerst zögern ließ, war die Frage, wo ich den auf unserem Testserver hinlegen sollte und wie sich das Programm im Dauerbetrieb dann verhält. Ich entschied mich nun für die Installation von Ethercalc in den Benutzeraccount des schon vorhandenen Etherpad-Lite-Servers. Also nochmal zum Nachturnen hier mein Vorgehen.

Zuerst in den Benutzeraccount von etherpad wechseln:

sudo su – etherpad -s /bin/bash

Dann in

/opt/etherpad/local

ein Unterverzeichnis einrichten

mkdir ethercalc

cd ethercalc

Das Programm installieren

npm install ethercalc

und nachsehen, ob es läuft:

./node_modules/ethercalc/bin/ethercalc

Im Browser unter der eigenen Domain auf Port 8000 sollte dann der Ethercalc-Server wie hier  auftauchen: https://ethercalc.org/

Mit STRG C schießt man diesen Prozess wieder ab und meldet sich mit

exit

aus dem Benutzeraccount von Etherpad ab.

Dann – wieder als root auf dem System unterwegs – legt man sich ein Startskript für Ethercalc an. Das kann so einfach wie das hier sein:

cd /etc/initd

vi ethercalc.conf

und in diese Datei sowas wie das hier pasten:

description “ethercalc”

start on started networking

stop on runlevel [!2345]

env ECHOME=/opt/etherpad/local/ethercalc

env ECLOGS=/var/log/ethercalc

env ECUSER=etherpad

# Programpath /opt/etherpad/local/ethercalc/node_modules/ethercalc/bin/ethercalc

pre-start script

chown -R $ECUSER $ECLOGS ||true

chmod -R 755 $ECLOGS ||true

end script

script

cd $ECHOME/

exec su -s /bin/sh -c ‘exec “$0″ “$@”‘ $ECUSER — node_modules/ethercalc/bin/ethercalc \

>> $ECLOGS/access.log \

2>> $ECLOGS/error.log

end script

Die Verzeichnisse für die Logs anlegen und dem Benutzer etherpad übergeben:

mkdir /var/log/ethercalc

chmod -R 755 /var/log/ethercalc

chown -R etherpad /var/log/ethercalc

Die Logs müssen auch weg-rotated werden. Also

vi /etc/logrotate.conf

und hier am Ende hinzufügen:

# Ethercalc – weekly rotation and compression

/var/log/ethercalc/*.log {

weekly

missingok

rotate 8

compress

notifempty

}

Ein

service ethercalc start

sollte den Dienst nun hochbringen.

Mal sehen, wie sich das Ding verhalten wird. Die Konfiguration hier ist noch arg mit der Axt in den Server geklopft, aber es läuft erst einmal … Redis kommt dann als nächstes mit auf die Maschine, damit Ethercalc einen echten Datenbankserver zum Speichern der Tabellen hat.

antiX

Mein Asus L8400 K mit Pentium III 850 Mhz CPU sowie 256 MB RAM fristete ein Schattendasein unter dem demnächst ablaufenden Ubuntu 8.04 LTS. Bedienbar war die Kiste mit diesem Betriebssystem nicht wirklich, aber sie diente das eine oder andere mal als Printserver in der Schule während den Projekttagen für die Anbindung von Geräten, die nur eine LPT mitbrachten.

Mit dem EOL von Ubuntu 8.04 wollte ich zuerst eine aktuelle Lubuntu Version auprobieren … was auf Grund der nicht mehr zu Pentium 3 CPUs passenden Kernel jedoch nicht gelang. Also musste etwas noch Schlankeres her: Optisch relativ ansprechend, gut anpassbar Dank icewm und vor allem nun auch wieder (mit Abtrichen – ist ja klar) zu bedienen wurde das Gerät mit antiX. Selbst Firefox und LibreOffice kann man nutzen, wenn man etwas Geduld hat. Der Desktop selbst ist ohne Wartezeit zu bedienen … ein echter Fortschritt gegenüber Ubuntu 8.04.

Abiword, Chromium und viel weitere Software lässt sich aus den Debian Repos nachinstallieren und Dank rolling-release Konzept muss ich mich nicht gleich wieder nach einer anderen Distri umsehen, nur um das Gerät aktuell zu halten. Was zu meinem Erstaunen sofort funktionierte, war die Einbindung meines WLAN USB Sticks TP-Link TL-WN727N – und nicht nur über WEP, sondern sogar mit WPA als Verschlüsselung.

lsb_release

Für das Netbook meiner Schwiegereltern unter Xubuntu 12.04 LTS habe ich TeamViewer 8 installiert und das führt nun dazu, dass X/K/Ubuntu permanent beim Login einen lsb_release Fehler auswirft. Hier ist die Bugbeschreibung zum Problem und im gleichen Thread weiter unten die passende Lösung dazu.

Ab Zeile 20 in /opt/teamviewer8/tv_bin/script/tvw_main befindet sich die Funktion function LogStartupInfo(). Hier werden zwei Zeilen auskommentiert und eine neue hinzugefügt

if [ -x "$(type -p lsb_release)" ] ; then     # log information about the Linux distribution
#lsb_release -a  # TempFix(Bug#1094218)
make_path “$WINEPREFIX/drive_c”
cat /etc/lsb-release | grep DESCRIPTION | cut -f2 -d= | sed ‘s/\”//g’ > “$WINEPREFIX/drive_c/distrelease” # TempFix(Bug#1094218)
#lsb_release -ds > “$WINEPREFIX/drive_c/distrelease”
else

und man ist den Bug los.

Routerbau

netzwerk

Als nächsten Schritt für das iptables Projekt mit meiner AG dachte ich an einen kleinen dreckigen Router, der den “Charme” hat, dass er die zentrale IP Adressvergabe der Schule für Fremdrechner umgeht. So etwas motiviert Schüler immer :-)

Wir nutzen dazu am einfachsten ein paar Rechner in der Bibliothek und aktivieren deren zweite Netzwerkkarte, die bisher auf Grund ihrer PXE-Unfähigkeit brach lag. Die schon vorhandene Hardware “kennt” das Schulnetz – das wird dann eth0.

Ein

echo 1 > /proc/sys/net/ipv4/ip_forward

schaltet auf dem Rechner zwischen Schulnetz und Clients die Routerfunktionalität ein. Dabei zeigt dessen eth0 wie gesagt zur Schule und würde vom schulischen DHCP Server mit einer Adresse versorgt. Da ich das für router-unpassend halte, wird die per DHCP zugewiesene IP Adresse ermittelt und dann mit ipconfig statisch auf eth0 gesetzt. Die eth1 (und damit die bisher brach liegende Karte) des Routers zeigt zu einem kleinen Switch, an dem die Clients hängen. Hier wird per ipfonfig eine 192er Adresse gesetzt und die Clients erhalten ebenfalls statische Adressen. Die Bearbeitung von

/etc/udev/rules.d/70-persistent-net.rules

kann die Zuordnung der MAC-Adressen zu Interface-Namen auf dem Router erzwingen. Mehr muss für dieses Experiment nicht sein.

Ein

iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

stellt den Router auf NAT um.

Damit Clients hinter diesem Router weiterhin über SSH zu erreichen sind, wird Port 22 ge-forward-ed

iptables -t nat -A PREROUTING -p tcp -i eth0 –dport 22 -j DNAT –to-destination ip.adresse.des.clients

Das sollte es dann gewesen sein: Der Router selbst ist von Außen nicht mehr über SSH auf Port 22 zu erreichen, da er diesen ja nach Innen zum Client weiter reicht. Weitere Ports können für einen Webserver auf einem weiteren Client auch noch dazu kommen … mal sehen, wie viel Zeit überhaupt noch bleibt. Ein kurzer Exkurs für den Schluss wäre: Wir schreiben die ganzen Befehle in ein Skript und tragen dieses in /etc/rc.local ein, damit sie einen Reboot überleben.

REJECT und DROP

Für meine Linux AG habe ich nach einer einfachen Möglichkeit gesucht, wie man den Unterschied zwischen REJECT und DROP bei der Nutzung von iptables zeigen könnte. Ich denke, mit ICMP Paketen zeigt sich das deutlich genug:

iptables DROP

Ich nutze hierzu eine VM unter Debian, die über eine Schnittstelle (eth1 – in VBOX dann bridge) direkt mit dem Schulnetz verbunden ist – mit der anderen (eth0 – in VBOX dann nat oder intern) hängt sie am Wirtsrechner selbst. Ein

iptables -t filter -A INPUT -j DROP -i eth1 -s ip.des.anfragenden.rechners

schaltet die Anworten auf ping ip.der.vbox.unter.debian sichtbar komplett ab: ping erhält überhaupt keine Antworten mehr.

iptables REJECT

Nach einem iptables -F zum Putzen der Chains kann man dann weiter spielen und ein REJECT ausprobieren:

iptables -t filter -A INPUT -j REJECT -i eth1 -s ip.des.anfragenden.rechners

Es wird sichtbar, dass nun ping mit “Destination Port Unreachable” reagiert.

Welches der beiden Verfahren nun sicherer ist, wenn man iptables basierte Firewalls aufbaut, können wir im Anschluss ja endlos diskutieren.

Manchmal hat man schon einen Knoten im Kopf: Zuerst setzte ich auf einen Apache in der VM, den man mit Hilfe von

iptables -t filter -A INPUT -j DROP -i eth1 -s ip.des.anfragenden.rechners -p tcp –dport 80

gegenüber Anfragen von Außen an Port 80 absichern kann.

Aber das ist für den Einstieg a) zu komplex und b) zu langweilig, weil am anfragenden Firefox nicht zu sehen ist, ob nun DROP oder REJECT in der Chain steht: Er meckert halt rum, dass die Verbindung nicht zustande kommt.

Lieber also den brutalen, weil auf alle Ports und alle Protokolle wirkenden Befehl oben zuerst verwenden und dann mit

iptables -t filter -A INPUT -j DROP -i eth1 -s ip.des.anfragende.rechners -p icmp

einschränken, dabei zeigen, dass man dann noch per ssh auf die VM kommt, und dann weiter machen. Außerdem ist der allgemein gegen eine einzelne IP gerichtete Eintrag in iptables sicherlich der Befehl, den man im Alltag häufiger benötigt: Wenn eine IP schon geblockt werden muss, dann ja meist komplett.

LibreOffice 4.0.1 Pfade

Ich dachte schon, ich werde narrisch: Was auch immer ich in Libreoffice 4.0.1 als Pfad zu meinem Arbeitsverzeichnis und zu meinen Dokumentenvorlagen eintragen wollte, das Programm übernahm (unter LinuxMint 14 KDE 64Bit) meine Einstellungen nicht.

Optionen - LibreOffice - Allgemein_001

Erst als ich unter /Extras /Optionen /LibreOffice /Allgemein den Schalter bei “LibreOffice-Dialoge verwenden” sitzen hatte (siehe Bild oben), klappte es. LO mag wohl Dolphin nicht.

Optionen - LibreOffice - Pfade_002

Das Arbeitsverzeichnis kann nun geändert werden und die Einstellungen bleiben auch.

Etherpad Lite, npm und node.js

Um es kurz zu machen: Wer (wie ich) auf die Idee kam, node.js aus dem PPA von Chris Lea für seinen EPL Server zu nutzen … hat nun keinen mehr.

Das liegt schlicht daran, dass node.js inzwischen von diesem Maintainer in Version 0.10 zur Verfügung gestellt wird und dieses mit npm aus den Ubuntu Quellen nicht zusammenarbeiten will. Leider hilft es auch nicht, wenn man npm ebenfalls passend macht – z.B. indem man Chris Leas PPA durch das PPA von ric_harvey ersetzt: Dann passen zwar node.js und npm wieder zusammen – aber mit Version 0.10 kommt EPL nicht mehr richtig hoch.

Wer richtig Lust auf’s Basteln hat, der kann sich im Moment diesen Thread bei Github entlang hangeln und landet evtl. einen Treffer.

Oder man greift auf die Ubuntu-Wiki Anleitung zur Installation von EPL zurück und wirft den Compiler an. Dann hat man einen ziemlich alten npm und node.js Server – aber ein funktionierendes EPL.

Oder man wartet ab, bis bei Github eine EPL Version liegt, die mit npm und node.js 0.10 zusammen arbeiten will.