Linux/Unix Tipps und Tricks Intelligenteres eject ===================== Wer 2 CD-ROM Laufwerke besitzt und den Befehl eject verwendet kennt das Problem, eject wirft ohne zusätzliche Parameter immer nur das primäre Laufwerk aus, egal ob sich ein Datenträger darin befindet oder nicht. Mit dem nachstehenden script wirft eject nur das gerade gemountete Laufwerk aus, eine übergabe von herkömmlichen parametern wie z.b. die Angabe eines anderen Laufwerkes ist natürlich auch möglich. #!/usr/bin/sh $drive1="/dev/dvd" $drive2="/dev/cdrw" if [ -z "$1" ] then mount |grep "$drive1" && eject $drive1 mount |grep "$drive2" && eject $drive2 exit 1 fi eject $1 Tastenkürzel ============ CTRL+C bricht den aktuellen Prozess ab CTRL+Z schickt die Ausführung des aktuellen Prozesses in den Hintergrund CTRL+L löscht den Bildschirminhalt der Konsole CTRL+D Logout bzw. Exit Partition füllen ================ Eine elegante Möglichkeit zum 'zumüllen' einer Partition bietet folgendes Script: ---------------------------- #!/bin/sh while :; do mkdir foobar cd foobar done ---------------------------- Achtung... dieses Script kann ein System unter bestimmten Bedingungen in die Knie zwingen! X11 Display ausgabe umleiten ============================ In gewissen Situationen ist es von Vorteil die Ausgabe des Display's auf einem anderen Rechner aus zu geben, dies kann mit folgenden Befehlen erreicht werden: BASH: [root@sirius /]# export DISPLAY=pollux.space:0.0 CSH/TCSH: [root@sirius /]# setenv DISPLAY=pollux.space:0.0 dies bewirkt dass die Systemvariable DISPLAY an den Rechner pollux.space auf das Virtuelle Display 0.0 exportiert wird, anstelle der Host- und Domänennamen kann man natürlich auch die IP Adresse des Rechners verwenden. Auf dem Host Rechner muss jedoch noch der Client authorisiert werden, dies geschieht mit dem Programm xhost: [root@sirius /]# xhost +sirius.space Syntax-Highlightning in VIM =========================== Viele Leute (vor allem Programmierer) bevorzugen bei der Bearbeitung von Scripts oder Source Code die farbige Hervorhebung der Syntax (das sogenannte Syntax-Highlightning). Der Texteditor VIM (sollte bei jeder Linux Distribution vorhanden sein) unterstütz dies auch, es kann durch einen einzigen Eintrag in der Datei .vimrc aktiviert werden, dieser muss wie folgt aussehen: :syntax on ISO Image Mounten ================= Der mount Befehl von Unix/Linux hat so einige Vorteile im Vergleich zu anderen Betriebssytemen, so ist es damit möglich Images von Datenträgern zu mounten. Das folgende kleine Beispiel soll zeigen wie man ein ISO CD-Image mountet. [root@sirius m.capellari]# mount -t iso9660 -o loop ./isofile.iso /mnt/iso Programme ohne Window Manager starten ===================================== Für manche Programme (Spiele und dergleichen) ist es sehr ratsam ohne Window-Manager zu starten, dadurch wird die Performance des jeweiligen Programms wesentlich erhöht, dies wird erreicht in dem man den Xwrapper startet und das zu verwendende Programm in einer Pipe ausführt (hier xeyes): Xwrapper | /usr/local/games/xeyes MySQL Dump importieren ====================== Eine mittels mysql gedumpte Datenbank wiederher zu stellen ist mit folgendem Befehl relativ simpel: [root@sirius /]# mysql datenbank < table.dump Natürlich sollte die Datenbank vorher angelegt sein, um eine saubere Wiederherstellung zu gewährleisten, dies geschieht mittels: [root@sirius /]# mysql datenbank Entpacken von Archiven ====================== Das unter Linux verbreitete Archiv Format TAR stellt Einsteiger sehr häufig vor Rätsel, aber es ist nicht so kompliziert wie es scheint. Man sollte nur wissen dass TAR (steht für Tape Archive) lediglich ein Archiv Format ist und keine Kompression hat, dadurch werden TAR-Files meistens noch zu- sätzlich komprimiert, hierbei ist das GZIP Format sehr beliebt wodurch die Datei- endungen .tar.gz entstehen. Eine solche Datei lässt sich relativ einfach entpacken: tar xfvz filename.tar.gz Es gibt jedoch auch andere Packer, wie z.b. bzip oder bzip2, solche Files lassen sich jedoch genau so einfach entpacken: bunzip -c filename.tar.bz |tar xfv - oder bunzip2 -c filename.tar.bz2 |tar xfv - FXP in wu-ftpd (Site-to-Site Transfer) ====================================== Sogenannte FXP Transfers von Server zu Server lassen sich mit WuFTPd ziemlich einfach ermöglichen, wir gehen davon aus dass die Berechtigung in unserem Fall für die Klasse gewährt wird, hierzu editieren wir die Datei /etc/ftpaccess: class fxpusers real,guest,anonymus *this.domain.com class all real,guest,anonymus * port-allow fxpusers 0.0.0.0/0 pasv-allow fxpusers 0.0.0.0/0 Hierdurch wird die Benutzerklasse definiert, diese muss vor der bereits bestehenden Klasse eingetragen werden. Die nachstehenden Zeilen port-allow und pasv-allow erlauben allen Benutzern die sich in der Gruppe befinden FXP-Transfers von Server zu Server. Installation von RPM-Paketen ============================ RPM Pakete sind eine feine Sache, und vor allem bei Einsteigern sehr beliebt, weil sie einfach zu handhaben sind. Hier sind die wichtigsten Funktionen des RedHat Packet Managers: RPM Paket Installieren/Updaten: rpm -Uhv rpmfile.rpm RPM Datenbank aus vorhandenen Paketen neu erstellen: rpm --rebuilddb SOURCE-RPM Paket kompilieren: rpm --rebuild source-rpmfile.srpm RPM Paket löschen: rpm -e rpmfile.rpm Nach vorhandenem Paket abfragen: rpm -qi rpmfile.rpm Alle installierten RPM Pakete anzeigen: rpm -qa Paketabhängigkeiten bei der Installation ignorieren: rpm -Uhv --nodeps rpmfile.rpm Alle in Dateien eines installierten RPM Pakets anzeigen: rpm -ql rpmfile.rpm Finden von RPM-Paketen ====================== Immer wieder haben Leute Probleme mit fehlenden Bibliotheken und dergleichen. Um diese und andere probleme zu vermeiden, gibt es ein sehr nützliches tool namens rpmfind. Es fragt die RPM-Datenbank von http://rpmfind.net ab. Rpmfind kann unter http://rpmfind.net/linux/rpm2html/rpmfind.html herunter geladen werden. Wie chmod funktioniert ====================== Wer hat sich schon mal gefragt was genau der Befehl chmod 755 bedeutet? Wahrscheinlich jeder, viele Leute wissen auch für was man chmod braucht - um die Dateiberechtigungen zu verändern, jedoch stehen vor allem Einsteiger vor einem Rätsel, was die Zahlen hinter chmod betrifft. Diese Aufstellung soll etwas Licht ins Dunkel bringen. Oktalwert | Bedeutung | Rechte | ergibt sich aus -----------+---------------------------------+-------------+----------------- 0 | keine Rechte | - - - - - | 0 + 0 + 0 1 | execute Rechte | - - x - - | 0 + 0 + 1 2 | write Rechte | - w - - - | 0 + 2 + 0 4 | read Rechte | r - - - - | 4 + 0 + 0 5 | read + execute Rechte | r - x - - | 4 + 1 + 0 6 | read + write Rechte | r w - - - | 4 + 2 + 0 7 | read + write + execute Rechte | r w x - - | 4 + 2 + 1 Eigentümer | Gruppe | Andere -----------+-------------+----------- r w x | r w x | r w x 4 2 1 | 4 2 1 | 4 2 1 CD's mittels cdrecord erstellen =============================== cdrecord ist zwar ein sehr unscheinbares, dafür jedoch um so mächtigeres programm, wenn es um die Erstellung von CD's geht. praktisch alle graphischen Recording Programme greifen auf cdrecord zu. Um cdrecord verwenden zu können müssen wir wissen, welchen SCSI ID der CD-Recorder hat (dies gilt auch für ATAPI Laufwerke) hierzu wird cdrecord mit dem parameter -scanbus ausgeführt [root@sirius /root]# cdrecord -scanbus Cdrecord 1.9 (i686-pc-linux-gnu) Copyright (C) 1995-2000 Jörg Schilling Linux sg driver version: 3.1.17 Using libscg version 'schily-0.1' scsibus0: 0,0,0 0) 'MATSHITA' 'DVD-ROM SR-8585 ' '1W26' Removable CD-ROM 0,1,0 1) 'YAMAHA ' 'CRW2100E ' '1.0G' Removable CD-ROM 0,2,0 2) * In unserem Fall befindet sich der Brenner 'YAMAHA' auf SCSI ID 1,0 um nun ein iso image auf CD zu bannen wäre folgender Befehl von Nöten: [root@sirius /root]# cdrecord speed=16 dev=1,0 isoimage.iso Durch die Angabe von speed=16 wird die CD mit 16 facher Geschwindigkeit erstellt, logischerweise macht es keinen Sinn, hier eine Zahl anzugeben die höher ist als die wirkliche maximale Schreibgeschwindigkeit des recorders. ein 650 MB image dauerte im test mit cdrecord auf einem YAMAHA recorder mit 16 facher geschwindigkeit < 5 minuten :-) SSHD Security Flaw beheben: =========================== Standardmässig ist der SSH Daemon leider etwas unsicher konfiguriert, so werden in der Default Konfiguration Root Logins unterstützt, dadurch ist es möglich Brute Force Angriffe auf den Root Account zu machen. Um dies zu vermeiden, muss in der Konfigurationsdatei /etc/ssh/sshd_config folgender parameter auf NO gesetzt werden: von PermitRootLogin Yes auf PermitRootLogin No Weiters ist X11 Forwarding aktiviert, Serverumgebungen, die kein X11 verwenden, sollten dies deaktivieren: von X11Forwarding Yes auf X11Forwarding No X11DisplayOffset sollte in diesem Fall remarked werden. SSHD auf ein Netzwerkdevice beschränken: ======================================== SSHD macht in der Standard Konfiguration ein Listening auf allen verfügbaren Netzwerk Devices, jedoch ist dies nicht immer erwünscht, um ein Listening auf z.b. das Device mit der IP 192.168.0.254 zu beschränken, muss folgende Zeile geändert werden: von ListenAddress auf ListenAddress 192.168.0.254 Dynamische IP Adressen formatiert ausgeben: =========================================== Man steht hin und wieder vor dem Problem, dass man seine aktuelle IP Adresse für Scripts (z.b. Firewall) benötigt, um dieser heraus zu finden, muss man lediglich 'ifconfig' ausführen, jedoch ist die Ausgabe von 'ifconfig' nicht gerade dass, was man als Script-Freundlich bezeichnen könnte, weil sich in Zeile welche die IP Adresse enthällt noch andere Informationen befinden. Darum wäre es fein wenn man eine Lösung hätte, die nur die IP Adresse ausliest, dies kann mit folgendem Beispiel Script sehr einfach bewerkstelligt werden. #!/bin/sh PPPDEV="ppp0" IPADDR=`/sbin/ifconfig ppp0 | { read; read -a A; echo ${A[1]#*:}; }` echo $IPADDR WinPopUp Nachrichten versenden: =============================== Hin und wieder hat sich WinPopUp bzw. der Messaging Dienst von Windows NT/2000 als nützlich für die Mitteilung von Statusmeldungen herausgestellt. eine einfache möglichkeit zum versenden von solchen SMB-Messages bietet das folgende (sehr einfache) Script: #!/bin/sh echo "SMB Broadcast mit versenden, mit abbrechen:" smbclient -M $1 |cat Punktlose IP Adressen: ====================== #!/usr/bin/perl -w use strict; chomp (my $ip=); (my $first, my $second, my $third, my $fourth) = split (/[^0-9]/,$ip, 4); print "$first.$second.$third.$fourth\n"; my $dotless= ($first*16777216)+($second*65536)+($third*256)+($fourth*1); print "your dotless IP is: $dotless\n"; Automatischer FTP Login: ======================== Sehr viele Leute bevorzugen auf häufig besuchten FTP-Servern ein automatisches Login, dies wird in der date ~/.netrc definiert. Eine typische .netrc kann so aussehen: machine www.foobar.com login foobar password secret Durch das Feld machine wird Hostname/IP-Adresse des FTP Servers definiert, im Feld login wird der Benutzername erwartet und password ist logischerweise das FTP-Passwort. Da die Benutzer/Passwörter im Klartext gespeichert werden, ist es sehr anzuraten, "chmod 600 .netrc" aus zu führen.