Linux Tips & Tricks

Serverüberwachung (kostenlos)
Der Befehl Alias
Statistiken herstellen
Der Linux Verzeichnisbaum
Runlevel
Linux Rechtesystem
Hard- und Softlinks
VNC Server einrichten
Timeserver aktivieren
Mit Rootkit Scannern checken ob böse Menschen auf dem Rechner sind ...
SSH Dienst sicherer machen
Verschlüsselte "Secure Copy" SCP Verbindung zum Server
Programme beim hochfahren des X-Servers automatisch starten lassen
PATH ändern (z.b. bei nicht gefundenen Dateien beim kompilieren
Größe der Partitionen in "anständigem" Format anzeigen
Festplatte überwachen lassen mit smartd
Mutt eMail Client leichtgemacht
Vim leichtgemacht
Programme in die Inittab einfügen



Serverüberwachung (kostenlos) Pingdom

Erreichbarkeit überwacht durch pingdom.com



Der Befehl Alias

Um Befehle abzukürzen bzw. sich selbst welche anzupassen kann man prima den Befehl alias verwenden.
Um z.B. die MS-Dos Befehle zu emulieren könnte man sowas machen :

alias dir="ls"
alias copy="cp"
alias rename="mv"
alias md="mkdir"
alias rd="rmdir"
alias del="rm -i"


Um das ganze permanent zu machen trägt man diese Befehle in die ~/.bashrc ein.
Systemweit geht das in der /etc/bashrc.



Statistiken herstellen

Umfangreiche Trafficanzeige auf der Konsole bekommt man mit dem Programm VNStat.

1. das Tool Homepage : VNStat - vnstat-1.4.tar.gz kompilieren. (make && make install)

VNStat legt sich beim Kompilieren in /etc/cron.d selbst einen Eintrag an.

Kernel testen mit :
vnstat --testkernel

Für die jeweilige Netzwerkkarte Datenbank anlegen :
vnstat -u -i eth0

Solls etwas umfangreicher mit Grafiken sein empfehle ich Serverstats - rrdtool harvester

Beispielgrafik Load von Serverstats :



Homepage : rrdtool harvester - serverstats-0.8.tar.bz2

Jetzt nach Wunsch noch das Verzeichnis von Serverstats mit .htaccess schützen und gut iss ... ;-)

oder für Echtzeitausgabe IPTraf nehmen.



Der Linux Verzeichnisbaum

/ # Wurzel.
/bin # Systemprogramme für alle User.
/boot # Programme für den Systemstart, z.B. 'lilo'-oder'grub'-Dateien.
/dev # Gerätetreiber.
/etc # Konfigurationsdateien.
/home # Heimatverzeichnisse der Benutzer.
/lib # Shagrey System-Libraries.
/mnt # Mount-Verzeichnis.
/proc # Dateien des virtuellen Prozess-Dateisystems für Hardware-Informationen.
/opt # Für Optionale Erweiterungspakete oder Programme (jeweils in Unterverzeichnissen), z.B. KDE, Firefox etc.
/root # Home-Verzeichnis des Super-Users 'root'.
/sbin # Ausführbare Dateien die nur für den Super-User 'root' bestimmt sind, wie z.B. 'fdisk' oder 'fsck'.
/tmp # Temporäre Dateien.
/usr # Unix System Ressources (hat nichts mit 'User' zu tun). Anwendungen und Dateien, die nicht für Systemverwaltung benötigt werden, z.B. Manuals, HowTo-Beschreibungen, X Window, Midnight Commander und Java J2SE.
/var Variable Daten. Z.B. Log-Dateien unter '/var/log'.



Runlevel

0 — Halt (Shutdown)
1 — Einzelbenutzer-Modus
2 — Nicht belegt (vom Benutzer zu definieren)
3 — Vollständiger Mehrbenutzer-Modus
4 — Nicht belegt (vom Benutzer zu definieren)
5 — Vollständiger Mehrbenutzer-Modus (mit einem X-basierten Login-Bildschirm)
6 — Neustart

Dies wird beim Linuxstart in der Datei

/etc/inittab

in der Zeile

id:5:initdefault:

definiert. (in diesem Falle Level 5)

Der Befehl /sbin/runlevel (nur für root zu erreichen :D) sagt einem dann in welchem
Level das System z.Zt. läuft.



Linux Rechtesystem

Zugriffsrechte einer Datei:

user-read Leserecht für Dateieigentümer
user-write Schreibrecht für Dateieigentümer
user-execute Ausführrecht für Dateieigentümer
group-read Leserecht für Gruppe des Dateieigentümers
group-write Schreibrecht für Gruppe des Dateieigentümers
group-execute Ausführrecht für Gruppe des Dateieigentümers
other-read Leserecht für alle anderen Benutzer
other-write Schreibrecht für alle anderen Benutzer
other-execute Ausführrecht für alle anderen Benutzer

r-- r-- r-- Lesen
rw- rw- rw- Schreiben
r-x r-x r-x Ausführen
rwx rwx rwx Lesen, Schreiben und Ausführen

4 4 4 Lesen
6 6 6 Schreiben
5 5 5 Ausführen
7 7 7 Lesen, Schreiben und Ausführen

u = Eigentümer (User)
g = Gruppe (Group)
o = alle Anderen (Other)

Mit + und - könnt ihr die Flags hinzufügen oder entfernen. Das sieht dann so aus:

chmod u+x meinedatei (Der Eigentümer bekommt Ausführrechte)
chmod g-w meinedatei (Der Gruppe werden die Schreibrechte entzogen)
chmod -x meinedatei (Eigentümer, Gruppe & Rest verlieren die Ausführrechte)

Zugriffsrechte für Verzeichnisse:

Das r-Recht an einem Verzeichnis zu besitzen heißt, man kann den Inhalt des Verzeichnisses lesen, mit anderen Worten, man kann den Befehl ls für dieses Verzeichnis einsetzen.

Besitzen Sie das w-Recht an einem Verzeichnis, können Sie einen Verzeichniseintrag löschen, das Verzeichnis wird verändert gespeichert, der Dateiname und die Inode-Nummer existieren nicht mehr. Nehmen wir nun einen extremen Fall an. Eine Datei, an der Sie keinerlei Rechte besitzen, befinde sich in einem Verzeichnis, in dem Sie das w-Recht haben. Diese Datei können Sie, auch ohne Rechte an ihr selbst, löschen, denn Sie können das Verzeichnis manipulieren! Gleiches gilt für das Umbenennen (ändert den Eintrag in einem Verzeichnis), Verschieben (löscht den Eintrag in einem Verzeichnis) oder Erstellen (erzeugt einen neuen Eintrag in einem Verzeichnis) einer Datei.

Das x-Recht an einem Verzeichnis bedeutet nun, daß Sie mit cd in das Verzeichnis wechseln dürfen.

Besonderheiten :

1. das "setuid" BIT

Es hat den Bitwert 4000 (einfach dazu addieren) und wird durch ein "s" statt dem "x" des Users dargestellt und hat nur für ausführbare Dateien eine Bedeutung:

-rws r-x r-- 1 uwe lehrer 12 Mar 26 20:01 test

Dieses setuid-bit bewirkt folgendes: Wenn ein berechtigter Nutzer (hier im Bsp. die Gruppe "lehrer" diese Datei ausführt, dann wird sie nicht mit seinen eigenen Rechten, sondern mit den Rechten des Eigentümers der Datei ausgeführt. Aber Vorsicht, es kann bei unbedachter Anwendung zu gravierenden Sicherheitslücken im System führen.

2. das "setgid" BIT

Es hat den Bitwert 2000 (einfach dazu addieren) und wird durch ein "s" oder "S" statt dem "x" der Gruppe dargestellt und hat nur für Verzeichnisse eine Bedeutung:

drwx rwS r-- 1 uwe lehrer 12 Mar 26 20:01 test2

Dieses setgid-bit bewirkt folgendes: Wenn ein berechtigter Nutzer Dateien in dieses Verzeichnis speichert, dann werden sie nicht unter seiner eigenen Gruppenzugehörigkeit, sondern unter der Gruppenbezeichnung des Verzeichnisses (hier "lehrer") gespeichert. Das macht für gemeinsam zu bearbeitende Projekte manchmal Sinn.

3. das "sticky" BIT

Es hat den Bitwert 1000 (einfach dazu addieren) und wird durch ein "t" oder "T" statt dem "x" für "alle" dargestellt und hat heute nur noch nur für Verzeichnisse eine Bedeutung:

drwx rwx rwt 1 root root 12 Mar 26 20:01 tmp

Dieses sticky-bit bewirkt folgendes: Wenn ein berechtigter Nutzer Dateien in dieses Verzeichnis speichert, kann nur er selbst diese wieder löschen, obwohl andere auch Schreibrechte besitzen können. Das macht zum Beispiel für temporäre Dateien aller User in einem gemeinsamen Verzeichnis Sinn.



Hard- und Softlinks

Mit einem Link ist ein und dieselbe Datei/Verzeichnis über mehrere (verschiedene) Namen aus eventuell sogar verschiedenen Verzeichnissen heraus ansprechbar.

Hardlink :

Es wird einfach ein zusätzlicher Verzeichniseintrag auf eine Datei erstellt.

* Die Rechte sind für diese Links immer identisch.
* Nur auf Dateien können Hardlinks angelegt werden.
* Hardlinks müssen sich immer innerhalb eines Dateisystems (Festplattenpartition) befinden
* Erst dann, wenn der letzte Hardlink auf eine Datei gelöscht wird, wird die Datei selbst gelöscht.
* Der Befehl lautet:
ln [quelle] [ziel]

Softlink :

Ein Softlink ist selbst eine Datei, die auf eine andere Datei oder ein anderes Verzeichnis zeigt:

* Die rechte des Originals und des Softlinks können verschieden sein
* Sie können auf Dateien und Verzeichnisse angewandt werden
* Sie können auch über Dateisystemgrenzen hinweg erstellt werden
* Ist die Originaldatei gelöscht, zeigt der Softlink ins "leere".
* Der Befehl lautet:
ln -s [quelle] [ziel]



VNC Server einrichten

SELinux ausschalten und die Firewall auf Port 5900 konfigurieren !
yum install vnc vnc-server

Für unseren User mit dem Befehl "vncpasswd" natürlich noch ein passwort generieren.

dann zum autostart beim booten in der /etc/rc.local

su -c "/usr/bin/vncserver :0 > /tmp/vncserver.log 2>&1 &" username

eintragen und die Datei xstartup erzeugen und chmod 777 im Ordner /home/username/.vnc/ z.B. ändern in :

#!/bin/sh

# Uncomment the following two lines for normal desktop:
# unset SESSION_MANAGER
# exec /etc/X11/xinit/xinitrc

[ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup
[ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources
xsetroot -solid grey
#vncconfig -iconic &
#xterm -geometry 80x24+10+10 -ls -title "$VNCDESKTOP Desktop" &

#für KDE
startx &
startkde &

#für Gnome
gnome-session &

Ein umfangreicheres Howto ist in der KB Linux (Fedora VNC Server.pdf) zu finden ...



Timeserver aktivieren

NTP installieren, das Conf File ntp.conf nach /etc kopieren


Mit Rootkit Scannern checken ob böse Menschen auf dem Rechner sind ...

Chkrootkit 0.49 - MD5 Signature - GPG signature
www.chkrootkit.org

Rootkit Hunter 1.3.4
http://rkhunter.sourceforge.net

Nach einem Systemupdate können Warnings bei rkhunter vorkommen. Die Datenbank auf die neuen Filehashes updaten macht man mit dem Befehl :

rkhunter --propupd

Für den Rootkit Hunter und Chkrootkit haben viele Distris fertige Pakete. Für Fedora oder Centos also einfach ein "yum install rkhunter" bzw. "yum install chkrootkit" eingeben.

Oben noch die Links, falls man die Rootkit Scanner selbst kompillieren will ...



SSH Dienst sicherer machen (alle Änderungen in der /etc/ssh/sshd_config durchführen)

Rootlogin abschalten :

PermitRootLogin no
---------------------------------------------------------------------------------
(TCP)-Port wechseln

Port 723
---------------------------------------------------------------------------------
Das unsichere Kommunikationsprotokoll 1 abschalten

Protocol 2
---------------------------------------------------------------------------------
SSH-Zugriff auf die ssh-Gruppenmitglieder greyuzieren

Nur Mitglieder der Gruppe "ssh" dürfen sich über SSH einloggen:

AllowGroups ssh

oder noch spezieller nur für einen user : AllowUsers username
---------------------------------------------------------------------------------
Löcher in der Firewall durch Portforwarding verhindern

AllowTcpForwarding no
X11Forwarding no
---------------------------------------------------------------------------------

Zusätzlich kann man den SSH Dienst zusätzlich noch mit dem Tool Denyhosts absichern.



Verschlüsselte "Secure Copy" SCP Verbindung zum Server:

Windows :
Mit der Software winscp (gesicherte SCP Verbindung unter Windows)

Linux X (KDE/Gnome):
fish://username@80.265.542.34

Linux Shell:
Zum Übertragen von einem anderen Server auf den lokalen Rechner:
scp Benutzername@Servername:Quellpfad Zielpfad

Zum Übertragen vom lokalen Rechner auf einen anderen Server:
scp Quellpfad Benutzername@Servername:Zielpfad

Optionen :

* -r rekursives Kopieren mehrer Dateien inklusive der Unterverzeichnisse
* -p Änderungs- und Zugriffszeiten der Dateien sowie die Berechtigungen (rwxrwxrwx) werden beim Kopieren beibehalten
* -q deaktiviert die Ausgabe von Statistiken
* -Q aktiviert die Ausgabe von Statistiken
* -l limit begrenzt die benutzte Bandbreite, wird in Kbit/s angegeben
* -o ssh_option hier können ssh Optionen angegeben werden, die nicht explizit für scp definiert wurden. Für mehr Infos siehe ssh_config.

Beispiel: Kopieren von daten.dat vom Zielrechner auf den lokalen Rechner:

[root@localhost ~]# scp username@rrz.uni-koeln.de:/home/username/daten.dat daten.dat
Password:
daten.dat 100% 120KB 119.8KB/s 00:01

Beispiel: Kopieren von daten.dat vom lokalen Rechner auf den Zielrechner:

[root@localhost ~]# scp daten.dat username@rrz.uni-koeln.de:/home/username/daten.dat
Password:
daten.dat 100% 120KB 119.8KB/s 00:00



Programme beim hochfahren des X-Servers automatisch starten lassen

Mit dem X-Server wird normalerweise auch ein WindowManager oder gar meist eine Desktopumgebung (KDE, Gnome, XFce) hochgefahren.

In KDE lässt sich die aktuelle Session speichern, wodurch alle Programme beim nächsten Start auch automatisch wieder mitgestartet werden.

In Gnome kann man in den Einstellungen bei Session die Programme festlegen die beim Start automatisch mitgestartet werden sollen.

Hat man einen WindowManager, der diese Möglichkeit nicht bietet und man trotzdem beim Start automatisch einige Programme (eMail, Browser, Messenger...) laden möchte, dann gibt es hierfür die Datei ~/.xinitrc. Das "~" deutet schon an, dass diese Datei für jeden Benutzer individuell angelegt und eingestellt werden kann.

Hier ein kleines Beispiel:

xset m 3& #Mauszeigergeschwindigkeit hochsetzen
mozilla& #Starte Mozilla
gaim& #Starte Gaim
icewmbg& #Starte icewmbg (Hintergrund von IceWM)
exec icewm #Starte den WindowManager IceWM

Die Datei wird sequentiell von oben nach unten abgearbeitet. Das kaufmännische Und-Zeichen (&) führt einen Befehl aus und geht darauf zum nächsten. Würde das "&" weggelassen, so würden die nachfolgenden Programme nicht abgearbeitet werden, solange der Befehl nicht vollständig ausgeführt wird. Dies ist z.B. nützlich bei der letzten Zeile "exec icewm", weil ansonsten IceWM zwar gestartet würde, der X-Server aber gleich darauf wieder herunterfährt. Über die Datei "xinitrc" kann man also auch einen WindowManager oder eine Desktopumgebung starten.



PATH ändern (z.b. bei nicht gefundenen Dateien beim kompilieren

Als User hast du automatisch einen Path auf /home//bin gesetzt. Du must also nur in deinem Home ein Verzeichnis "bin" anlegen und dort deine persönlichen Scripte ablegen.

Für den User root gilt dieses jedoch nicht.

Wenn du ein Skript global ablegen willst, damit jeder User und Root darauf Zugriff hat, musst du dieses am besten als User Root unter /usr/local/bin ablegen, da hier per default immer ein Path gesetzt ist (User und root).

Wenn du an der globalen Path Einstellung für ALLE User etwas ändern willst, dann schau dir die Datei /etc/profile an. In dieser Datei wird der Pfad für alle gesetzt. Änder das aber nicht in dieser Datei, sondern erstell eine Datei /etc/profile.local und erweitere dort den Path, da eventuell bei einem Paketupdate die Datei /etc/profile überschieben wird.

Beispiel "/etc/profile"
Code:

PATH=$PATH:/pfad/zu/mehr/bin
export $PATH

Wenn du als User deinen Pfad ändern willst ist der beste Platz die Datei ".profile" in deinem Homedir.



Größe der Partitionen in "anständigem" Format anzeigen

df -h




Festplatte überwachen lassen mit smartd

smartmontools installieren (falls die nicht schon drauf sind ...)

In der /etc/smartd.conf die Konfigurations Zeile dahin verändern (z.B. für Platte hda):

/dev/hda -H -m email@blabla.de -s (L/../../1/09|S/../.././09) -M daily

Dann den smartd Dienst beim hochfahren automatisch starten lassen ...



Mutt eMail Client leichtgemacht

Eine Mail mit Anhang aus der Konsole mit einem Oneliner verschicken:

echo Das ist ein Test | mutt -s "Test-Subject" -a anhang.pdf mail@domain.de

oder

cat inhalt.txt | mutt -s "Test-Subject" -a anhang.pdf mail@domain.de


Hier kurz die wichtigsten "mutt"-Befehle :

  • q .... quit. Beenden (oder aus dem lezten Menü aussteigen)
  • d .... delete. Mail löschen
  • r .... reply. Mail beantworten
  • RETURN .... Mail öffnen
  • s .... save. Mail speichern. Man muss eine Namen für einen Folder eingeben.
  • ? .... Hilfe. (mit q wieder zurück ins Hauptfenster)
  • v .... view. Zeigt eine Liste aller (Attachments) einer Mail an. Praktisch, wenn man die Attachments abspeichern will.
  • m .... neue Mail schreiben.

    Beim Schreiben einer neuer Mail macht "mutt" einen Editor auf. (Wenn man seine EDITOR-Variable richtig gesetzt hat, oder sein ".muttrc" File richtig eingestellt hat, öffnet es auch einen bevorzugten Editor).

    Beendet man den Editor, ist man wieder zurück im "mutt"-Programm. Man kann dann:

  • e ..... erneut Editieren
  • s ..... subject ändern
  • c ..... cc ändern
  • t ..... "to"-Addresse ändern.
  • a ..... ein Attachment anhängen.
  • y ..... yes. Endlich abschicken.
  • q ...... Abbrechen ("mutt" fragt ob man die Mail "postponen" will.. also später weiter bearbeiten. Dort kommt man mit "gross-R" rein)

    Änderungen in der ~/.muttrc :

    set realname="Mein Name"
    set from="meinname@domain.de"
    set envelope_from=yes

    set editor='vim -c "set t_Co=8" -c "syntax on" -c "/^$" -c "set tw=72" -c "set number"' # Vim als Maileditor

    Änderungen in der ~/.mailcap :

    text/html; w3m -dump -T text/html %s; needsterminal; copiousoutput # HTML-Mails anzeigen mit w3m
    text/html; lynx -dump -force_html %s; needsterminal; copiousoutput # HTML-Mails anzeigen mit lynx



    Vim leichtgemacht

    Befehlsmodus = Vim startet in diesem Modus. Hier kann man Befehle absetzen, um den Text zu bearbeiten, jedoch keinen Text eingeben.
    Eingabemodus = Um in den Eingabemodus zu wechseln, betätigt man die Taste i. Nun kann man losschreiben.
    Um aus dem Eingabemodus wieder zurück in den Befehlsmodus zu wechseln betätigt man die Taste Esc

    Vim Befehlsmodus Befehle :
    • u - Undo. Letzte Änderung zurücknehmen.
    • Strg-g - Statuszeile anzeigen.
    • R - Replace-Modus (Überschreib-Modus) anschalten.
    • gg - An den Anfang der aktuellen Datei springen
    • Shift + g - An das Ende der aktuellen Datei springen
    • dd - Löschen der aktuellen Zeile
    • yy - Aktuelle Zeile in die Zwischenablage bringen
    • 15y [enter] - Kopiert 15 Zeilen in die Zwischenablage
    • p - Der Inhalt der Zwischenablage wird rechts vom Cursor eingefügt
    • P - Der Inhalt der Zwischenablage wird links vom Cursor eingefügt
    • /muster - Suche nach Muster vorwärts im Text.
    • ?muster - Suche nach Muster rückwärts im Text.
    • n - Wiederholung der letzten Muster-Suche.
    • N - Wiederholung der letzten Muster-Suche rückwärts.

    • :123 - auf Zeile 123 springen
    • :set all - anzeigen aller möglichen Set-Befehle
    • :set list - Zeilenenden und Tabs anzeigen
    • :set ff=unix - Zeilenenden nach Unixformat umwandeln
    • :set ff=dos - Zeilenenden nach Dosformat umwandeln
    • :se nu - Zeilennummern anschalten
    • :se nonu - Zeilennummern ausschalten
    • :sh - Aufrufen einer Shell / beenden der Shell mit exit
    • :s/alt/neu - Sucht und ersetzt »alt« durch »neu« (nur das erste Auftreten in aktueller Zeile).
    • :s/alt/neu/g - Sucht und ersetzt alle »alt« durch »neu« in aktueller Zeile.
    • :s/alt/neu/c - Sucht und ersetzt »alt« durch »neu« in aktueller Zeile mit Nachfrage.
    • :s/alt/neu/gc - Sucht und ersetzt alle »alt« durch »neu« in aktueller Zeile mit Nachfrage.
    • :1,99s/alt/neu - Ersetzen von Zeile 1 bis Zeile 99.
    • :s/alt/neu - Ersetzt in der aktuellen Zeile die nächste Zeichenkette.
    • :s/alt/neu/g - Ersetzt in der aktuellen Zeile alle Zeichenketten.
    • :%s/alt/neu/g - Ersetzen im gesamten Dokument (findet alle Ergebnisse pro Zeile).
    • :%s/alt/neu/gc - Ersetzen im gesamten Dokument mit Nachfrage (findet alle Ergebnisse pro Zeile).
    • :help - öffnet die Hilfe
    • :help Befehl - öffnet die Hilfe zu Befehl
    • :help holy-grail - zeigt alle Befehle an, die mit einem Doppelpunkt beginnen
    • :set hlsearch - Markierte Suche
    • :nohlsearch - Markierte Suche aufheben
    Vim beenden :
    • :q - Verlassen ohne zu speichern. Funktioniert nur, falls das Dokument nicht verändert wurde.
    • :q! - Verlassen ohne zu speichern auch bei modifiziertem Dokument.
    • :wq - Schreiben des Puffers und Verlassen.
    • :wn - Der Puffer wird geschrieben und das nächste Dokument geladen.
    • ZZ - Wie :wq.
    • :x - Wie :wq.




    Programme in die Inittab einfügen

    root:35:once:/Pfad/zum/Programm