Linux: August 2009 Archive
Wer per Skript zum Beispiel Dateien per SCP verschieben möchte, wird vor das schier unlösbare Problem gestellt, dass er beim Anmelden an einem fremden Rechner zwingend sein Passwort angeben muss. Lösen lässt sich dieses Problem, in dem man Schlüsseldateien verwendet. Beachten sollte man hierbei allerdings aber, dass das Hinterlegen von Zugangsschlüsseln zur Automatisierung ein erhebliches Risiko darstellt. Denn wurde ein Rechner infiltriert, so kann das andere System sehr schnell ebenfalls zum Ziel einer Attacke werden.
In aller Kürze geht man zur Schlüsselgenerierung auf dem eigenen Server wie folgt vor. Einfach folgende Zeile zur Erzeugung der Schlüssel in der Kommandozeile eingeben:
ssh-keygen -t dsa
oder wahlweise
ssh-keygen -t rsa
Die Abfragen die nun folgen, sollten leer bleiben, damit man später keine Passphrase eingeben muss. Also alle Abfragen mit "Enter" absegnen. Ob man DSA oder RSA nimmt, hängt davon ab, wieviel Vertrauen man in die jeweilige Verschlüsselung hat.
Durch diese beiden Befehle wurden jetzt Schlüssel für den entsprechenden Nutzer, in Kombination mit der IP-Adresse bzw. des Namens unseres Servers generiert. Der öffentliche Schlüssel heißt dann zum Beispiel "id_dsa.pub" und der private Schlüssel "id_dsa". Beide liegen nun im jeweiligen Benutzerverzeichnis im Ordner ".ssh".
Nun wird der öffentliche Schlüssel "id_dsa.pub" auf den fremden Rechner in das Benutzerverzeichnis in den Ordner ".ssh" kopiert (falls der Ordner nicht existiert einfach mit "mkdir .ssh" anlegen):
scp /home/BENUTZER/.ssh/id_dsa.pub BENUTZER@192.168.0.0:/home/
BENUTZER/.ssh/
Berechtigung der Datei auf dem fremden Rechner ändern:
chmod 700 /home/BENUTZER/.ssh/id_dsa.pub
Und nun muss diese Datei auf dem fremden Rechner noch in die Liste authorisierter Schlüssel kopiert werden:
cat /home/BENUTZER/.ssh/id_dsa.pub >> authorized_keys
Versucht man sich nun per SSH am fremden System anzumelden, so wird man kein Passwort mehr benötigen.
Zwei gute Anleitungen zu dem Thema finden sich auch hier:
http://www.linux-fuer-alle.de/doc_show.php?docid=233&catid=16
http://www.schlittermann.de/doc/ssh.html
Zu den Verschlüsselungsverfahren hier die Wikipedia-Einträge:
http://de.wikipedia.org/wiki/RSA-Kryptosystem
http://de.wikipedia.org/wiki/Digital_Signature_Algorithm
Unter Linux lässt sich eine komplette Datenbank sehr komfortabel mit dem Tool "mysqldump" sichern. Voraussetzung hierfür ist aber der standardmäßige Einsatz von MyISAM als Speicher-Engine.
Möchte man alle Datenbanken des MySQL-Servers sichern, so kann man folgenden Befehl verwenden:
mysqldump -A -u BENUTZER -pPASSWORT > DATEI.sql
Dabei werden unter der Angabe des Benutzers und dessen Passworts alle Datenbanken in die Datei "DATEI.sql" geschrieben. Voraussetzung ist natürlich, der Benutzer hat Zugriffsrechte auf alle Datenbanken.
Möchte man nur eine spezielle Datenbank sichern, so kann man dies wie folgt tun:
mysqldump DATENBANKNAME -u BENUTZER -pPASSWORT > DATEI.sql
Das zurückspielen ist genauso einfach wie das sichern:
mysql -u BENUTZER -pPASSWORT < DATEI.sql
Achtung. Möchte man das Passwort direkt hinter der Option -p angeben, so darf kein Leerzeichen zwischen -p und dem Passwort stehen!
Homepage von MySQL und die komplette Dokumentation:
http://www.mysql.de/
http://dev.mysql.com/doc/
Backupempfehlungen und Anleitungen von MySQL:
http://dev.mysql.com/doc/mysql-backup-excerpt/5.0/en/index.html
Referenz zu mysqldump von MySQL:
http://dev.mysql.com/doc/refman/5.0/en/mysqldump.html
Anleitung von Stefan Kornaski:
http://stefankonarski.de/content/mysqldump/
Anleitung von Alfred Nussbaumer:
http://www.gymmelk.ac.at/~nus/phpmysql/php/node106.html
Anleitung von Tim Bormann:
http://www.tim-bormann.de/anleitung-manuelles-und-automatisches-backup-mysql-datenbank/
Wikipedia-Eintrag zu MySQL und den verschiedenen Speicher-Engines:
http://de.wikipedia.org/wiki/MySQL
Wer einen Restart des Apache-Webservers durchführt, kann durchaus auf folgende Fehlermeldung stoßen:
[warn] NameVirtualHost *:80 has no VirtualHosts
Diese Fehlermeldung wird dann ausgegeben, wenn in der Konfigurationsdatei mehrere Male die Zeile "NameVirtualHost *:80" auftaucht. Da die Konfigurationsdatei meist auf mehrere Dateien aufgeteilt ist, die dann mit Include-Befehlen in die apache2.conf reingeholt werden, kann dieses Problem durchaus öfters auftauchen.
Im Test wurde unter Debian Lenny mit Apache 2.2.9 die Datei httpd.conf mit den virtuellen Host-Adressen gefüllt und die Default-Seite unter "sites-enabled" ausgeklammert. Bei einem Restart trat dann der Fehler auf. Dies lag daran, dass in der Datei "ports.conf" ebenfalls die Zeile "NameVirtualHost *:80" ausgeklammert werden musste. Danach ließ sich der Apache ohne Probleme neu starten.
Hier noch drei Links die sich ebenfalls mit diesem Problem befassen (vor allem beim Einsatz mit confixx):
http://www.huschi.net/10_101_de-apache-warn-namevirtualhost-80-has-no-virtualhosts.html
http://serversupportforum.de/forum/webserver/1146-warn-namevirtualhost-80-has-no-virtualhosts.html
http://www.mydigitallife.info/2007/08/11/apache-warn-namevirtualhost-80-has-no-virtualhosts-error-when-start/
Hier der Wikipedia-Artikel zu confixx:
http://de.wikipedia.org/wiki/Confixx
Manchmal möchte man wissen, welche Pakete man eigentlich auf seinem kompletten Debian-System installiert hat. Dazu kann man einfach den Debian Package Manager verwenden. Einfach folgenden Befehl eingeben und man erhält eine komplette Liste:
dpkg -l
Es kann sein, dass die Paketnamen nicht vollständig ausgeschrieben werden. Unter Punkt 6.2 im unten verlinkten Dokument, gibt es zwei Möglichkeiten, den vollständigen Namen herauszufinden.
Link zum APT Howto:
http://www.debian.org/doc/manuals/apt-howto/ch-search.de.html
Vor langer Zeit erschien der Artikel "Logical Volume Manager (LVM) - Softwaregestütztes Raid" hier im Undertec-Blog, der ein wenig Hilfe zur handgeführten Installation eines LVM beinhaltete. Nun kann man das Ganze auch noch ein wenig erweitern, indem man zuerst die Festplatten in einen softwaregestützen Raid-Verbund überführt, wobei es egal ist, ob es sich um ein RAID 1 (Spiegelung) oder ein RAID 5 (redundantes Striping) handelt und anschließend ein LVM aufsetzt, um so seine Platten in sogenannte logische Volumeneinheiten zu überführen.
Ein gute Anleitung die einem bei diesem Manöver bei einer Debian Installation hilft, ist die Anleitung von Emidio Planamente. Sie ist zwar auf Englisch, beschreibt aber Schritt für Schritt wie man die Festplatten bei der Installation in ein Software-Raid überführt, worauf zu achten ist (z.B. darf /boot höchtsens RAID 1 sein) und wie man dann das LVM auf diesen Raid-Verbund dann aufsetzt. Danach kann man dann auf dem LVM ganz normal seine Partitionen anlegen und das Betriebssystem installieren. Die Anleitung ist für Debian Etch (4.0) geschrieben, hat aber unter Debian Lenny (5.0) genauso hervorragend funktioniert.
Im Test wurden 3 SCSI-Festplatten gleicher Bauart verwendet, wobei ein RAID-1 für den boot-Ordner über zwei Platten angelegt wurde (der Platz auf der dritten Platte dient als Reserve für das RAID-1) und ein RAID-5 über den restlichen Speicherplatz der drei Platten. Hierauf wurde dann das Logical Volume aufgesetzt und dieses dann partitioniert für das Wurzelsystem, home und swap. Danach lief die Installation ohne Probleme durch. Zu beachten ist allerdings noch, dass GRUB nur auf die erste Platte installiert wird und man von Hand ihn auch noch auf die zweite installieren muss.
Der Link zu Emidio Planamentes Anleitung: http://emidio.planamente.ch/pages/linux_howto_root_lvm_raid_etch.php

