Administration
Warum kam es zu dem Problem? Welche Programme sind an dem Geschehen beteiligt? Was ist der Wortlaut der Fehlermeldungen? Wie heisst Deine Distribution? Warten Sie Bitte auf Rückfragen der Rettungsleitstelle.
Unterseiten
Links
Dokumente
- Student Guide und Instructor Guide umfassen jeweils rund 400 Seiten Anleitung und Hilfe für Ubuntu
Themen
- Hilfe/Dokumentation (man + Kategorien! [man man], info, apropos, whatis) tldp.org, lok. user groups, irc, foren, mailinglisten
- Hardware-Erkennung: lsusb, lshal, lspci (lspci -knn), lshw
- dmidecode: zeigt detaillierte Infos über CPU, Arbeitsspeicher durch den DMI-Bus
- kudzu: RedHat, Fedora
- hwsetup: Knoppix
- discover Debian Mandriva?
- hwinfo SuSE
- Harddrake Mandriva
- HotPlug für hotplug-Geräte wie FireWire, USB usw. SATA-hotplug geht z.B. mit (host0, host1, …):
echo "- - -" > /sys/class/scsi_host/host0/scan
- Bootmanager und Bootprozess, Runlevel (init 1 bzw. heute sein symlink telinit, /etc/inittab), initrd
- shutdown (init 0, halt, shutdown -h now oder +10 für 10min, -r = reboot, shutdown -c) Server zeitgesteuert herunterfahren
- Dateisystemaufbau ( /proc !)
- Umleitungen der Eingabe- und Ausgabe, UNIX Pipes und Streams
- Devices (LPI 1 S.153), Dateitypen (sockets, fifos, …)
- Kernel (Versionen, Branches , uname -a)
- Dateisysteme und Formatierung (Journaling, inodes, superblock, sym- / hardlinks, Dateisystemchecks: tune2fs),
- Mounten / Mountoptionen / Automounter / Freigaben mounten
- Dateimanagement: ls, cd, mkdir, rm, rmdir, cp, mv, ln, touch, df, du (
du / -ah | sort -nr | less
) , pwd, cat, grep, wc, head, tail, less, more - Verzeichnisse ab- & vergleichen: rsync, diff -qr Verzeich1 Verzeich2 1), Dateimanager wie ranger, mc oder krusader
- offene Dateien: lsof (offene Datei anzeigen) und fuser -u (Wer hat die Datei geöffnet?)
- Bibliotheken: ldd (Abhängigkeiten), ltrace (wann werden diese Bibl. aufgerufen?)
- sparse-files (wachsende Dateien die nicht voll zugewiesen sind)2)
- Dateiänderungen mit Inotify überwachen
- System- und Umgebungsvariablen (env oder printenv, export, set)
- zeitversetztes Arbeiten (Cronjobs, at, watch)
- Rechte (chown, chmod, su, sudo, /etc/sudoers, SUID, SGID usw.), Quota (quota, edquota, repquota, quotaon)
-
- Benutzer: (hinzufügen: users, useradd (adduser), usermod, userdel, chfn, chsh, deaktivieren, PAM, Dateien wie shadow, visudo, vigr (group), vipw (passwd), wohl nicht mehr nötig: pwconv; UID 500/1000, GID 100) chage. siehe hier
- Gruppen: groups, groupadd (addgroup), groupmod, groupdel, newgrp
- login (id, w, who, whoami, last, lastb, /etc/motd, issue + issue.net, shell, home, /etc/skel , etc/profile /etc/.bashrc (bei nicht netzlogins, aber oft include).
- Dienstekonzept (Daemons) (Seite)
- SWAP (mkswap, swapon, swapoff), Verteilung auf mehrere Festplatten, wenn er mit gleicher Priorität für mehrere Partitionen aufgerufen wird:
/dev/sda2 none swap sw,pri=1 /dev/sdb2 none swap sw,pri=1
/proc/sys/vm/swappiness
(50-60 normal, höher = mehr swapping): Einstellungvm.swappiness=60
in/etc/sysctl.conf
cat /proc/meminfo
(Swap insgesamt + frei),
cat /proc/swaps
(benutzte Swap-geräte),
swapon -s
(swap-Geräte),
vmstat
(Statistiken über den virtuellen Speicher)
- Software installieren (kompilieren, Paketmanager)
- Tastenkombinationen (strg-alt-f1-6 ; strg-alt-backspace, alt-z, alt-d,) überlastetes Systemit mit sysrq-Tasten sicher ausschalten
- Uhrzeit setzen:
- per NTP:
ntp -q -d
- manuell:
date -s '2012-07-10 19:09:00' +'%Y-%M-%d %T'
- Uhrzeit in Hardware/RTC/CMOS-Uhr schreiben:
hwclock -w # entspricht --systohc
- Shells (shells, alias, ncurses, history, auto-completion), terminal, console
- Konsolen, (Virtuelle) Terminals, Tastenkombinationen
- grafische Benutzeroberflächen (X-Server, window-manager, display-manager, desktop-environment-server)
Netzwerk
- Netzwerk (ifconfig, ifup, ifdown, route/ip r s,
/etc/network/interfaces
,/etc/resolv.conf
, Proxyserver)- Standard-Netzwerktools (dig, ping, traceroute 4), netstat, lsof -i, telnet, netcat, nmap, ethtool)
- Sniffer: libpcap-basierend (kernel→userspace 5) ): tshark6)+wireshark, tcpdump; direkt auf der Hardware: netsniff-ng
- SSH (verwaltung, tunneling, pub-key)
- arpwatch (überwacht auf wechselnde ARP-Adressen)
- arp-scan (scannt das aktuelle Netz auf ARP-Basis auf reagierende Systemen)
arp-scan --interface eth0 --localnet
- tethereal
- apachetop
- nload eth0
- ngrep: durchsucht Netzwerkverkehr, z.B. mit
ngrep -q GET
wird nach Webseitenanfragen gesucht. - DNS-Anfragen mit dnstop überwachen: z. B. 3rd Level-Domains anzeigen
dnstop eth0 -l 3
- tcptraceroute (traceroute ohne ICMP)
- Wlan (iwconfig, iwlist)
- IDS-Funktionalität / Angriffserkennung
- scanlogd: überwacht auf Portscans und trägt diese in
/var/log/daemon.log
ein
- Drucker / Weg durch das Drucksystem (Cups: webinterface, /etc/cups/cupsd.conf /etc/cups/printers.conf; lpd: /etc/printcap, lpq, lp, lpr, lpc, lprm)
Konzepte
- Blockstorage
- Objectstorage
- Dateisysteme
- Netzwerkdateisysteme
- scale-up vs. scale-out
Prozesskontrolle und Prioritäten
Befehle in Abhängigkeit ausführen | |
---|---|
BefehlA ; BefehlB | BefehlA ausführen und dann BefehlB ausführen egal ob BefehlA erfolgreich war oder nicht |
BefehlA & BefehlB
| BefehlA im Hintergrund ausführen und dann gleich BefehlB ausführen ohne auf das beendet von BefehlA zu warten |
BefehlA && BefehlB
| BefehlA ausführen und dann BefehlB ausführen wenn BefehlA erfolgreich war |
BefehlA || BefehlB
| BefehlA ausführen und dann BefehlB ausführen falls BefehlA einen Fehler ergab |
- Prozesse (nohup, ps, pstree, pkill, pgrep, stoppen, resume, killen, htop + top, vmstat, zombie);
- Priorität: (re)nice, chrt, taskset, ionice
Befehl | Beispielaufruf | Zweck des Programms |
---|---|---|
kill | kill PID | killt einzelne Prozesse nach ihrer Prozess-ID (PID), -9 SIGKILL |
killall | killall -HUP named | killt (mehrere) Prozesse nach ihrem Namen 7) |
mpstat 8) | mpstat -P ALL 2 10 (alle 2s 10 Messungen) | zeigt die Auslastung der CPU, längere Überwachung und Mittelwerte |
ps | ps auxww | laufende Prozesse |
pgrep / pkill | pgrep -u root sshd | sucht/killt Prozessnamen |
top | laufende Prozesse mit Ressourcenverbrauch; htop: viel besser als top, ncurses-Oberfläche, interaktiv |
Links
Debugging
- strace startet Programme und gibt deren Aufrufe wieder.
Aufruf | Wirkung |
---|---|
strace programm | startet programm und gibt dessen Systemaufrufe auf dem Bildschirm aus |
strace -o prog.log programm | wie oben, aber Ausgabe in prog.log Logdatei |
strace -f -o prog.log programm | wie oben, aber verfolgt auch Kindprozesse |
strace -p pid | verfolge die Aufrufe des laufenden Prozesses mit Prozess-ID pid |
strace -e trace=open,close,read,write | gibt nur Systemaufrufe aus, die das Dateimanagement betreffen |
strace -e trace=open,close,read,write | gibt nur Systemaufrufe aus, die das Dateimanagement betreffen |
strace -e trace=file | gibt Dateioperationen aus |
- GDB: The GNU Project Debugger
Hardware Diagnose-Tools
- Lüfterdrehzahlen und Temperaturen (Paket lm-sensors):
sensors
- Arbeitsspeicher:
cat /proc/meminfo
bzw.cat /proc/mtrr
- DMA:
hdparm
- Geräte IDs anzeigen:
lshal
- PCI-Geräte:
lspci
- USB-Geräte:
lsusb
- Grafikkarte:
xrandr
- S.M.A.R.T.-Status für Festplatten: smartmontools (siehe S.M.A.R.T.- und Temperaturstatus auslesen)
- PCMCIA:
pccardctl status
- Taktregelung der CPU
- Paket cpufrequtils:
cpufreq-info
- auch ein Gnome-applet mit der gleichen Funktionalität verfügbar
- Direktzugriff mittels sysfs (Einheit ist Hz, cpu0 ist der erste Kern, cpu1 der zweite usw.; Ändern der Werte einfach möglich z.B. 1 Ghz als Minimaltakt einstellen wäre
echo "1000000" > /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_min_freq
- siehe auch: How to make use of Dynamic Frequency Scaling
- Governor einstellen (userspace, conservative, …)
cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
- Liste der Governors anzeigen:
cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governors
- minimale CPU-Frequenz:
/sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_min_freq
- maximale CPU-Frequenz:
/sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_max_freq
- Geschwindigkeit einstellen (userspace governor):
/sys/devices/system/cpu/cpu0/cpufreq/scaling_setspeed
- Statistiken:
cat /sys/devices/system/cpu/cpu0/cpufreq/stats/total_trans
cat /sys/devices/system/cpu/cpu0/cpufreq/stats/time_in_state
- mit Debian-Paket sysfsutils kann man Einstellungen in
/etc/sysfs.conf
dauerhaft hintelegen, z. B.devices/system/cpu/cpu0/cpufreq/scaling_min_freq = 3100000
- I/O (auch: E/A = Eingabe/Ausgabe-operationen auf Datenspeichern wie Festplatte)
- iotop für eine schnelle Anzeige welches Programm gerade I/O-Belastung verursacht
- unbekannte Dateien identifizieren:
file
(Dateityp anhand von typischen Zeichenketten erkennen lassen) undstrings
(druckbare Zeichen einer Datei ausgeben)
- Stresstest
- Pakete stress und stressapptest
stress -t 36000 -c 3 -i 3 -m 3 -d 3 --vm-bytes 768MB
Distributionen
Kurs-Know-how
- gems: Den Inhalt einer Console auf mehrere Rechner übertragen
Einstellungen Versionieren
Das Verzeichnis /etc sollte auf Servern mit mehreren Administratoren oder allgemein auf wichtigen System versioniert werden. Dazu lassen sich entweder Versionsverwaltungssysteme benutzen oder alternativ spezialisierte Tools wie etckeeper oder metche verwenden.
Systemlimits
- server:Quota
- allgemeine Limits: ulimit -n
capabilities
Traditionellen Unix-implementierungen unterscheiden nur zwischen priviligiertem Benutzer (id=0, root) und unpriviligiertem Benutzer (andere ID als 0). Moderne Linux-Distributionen können Programmen eine Vielzahl von einzelnen Fähigkeiten (=capabilities) geben ohne pauschal alles erlauben zu müsssen.
Die Programme setcap
und getcap
verwalten die Rechte.
Beispielaufruf - Wireshark bekommt CAP_NET_RAW und CAP_NET_ADMIN mit unten genannter Wirkung:
sudo setcap 'CAP_NET_RAW+eip CAP_NET_ADMIN+eip' /usr/bin/dumpcap
Buchstabe | Bedeutung | Erklärung |
---|---|---|
e | Effective | the capabilities used by the kernel t perform permission checks for the thread. |
p | Permitted | the capabilities that the thread may assume (i.e., a limiting superset for the effective and inheritable sets). If a thread drops a capability from its permitted set, it can never re-acquire that capability (unless it exec()s a set-user-ID-root program). |
i | inheritable | the capabilities preserved across an execve(2). A child created via fork(2) inherits copies of its parent's capability sets. See below for a discussion of the treatment of capabilities during exec(). Using capset(2), a thread may manipulate its own capability sets, or, if it has the CAP_SETPCAP capability, those of a thread in another process. |
Bücherempfehlungen
- Kurzreferenzen: Linux kurz&gut (O`Reilly): Teil einer Reihe, gibts auch für Apache, MySQL, PHP
- Komplettwerk: Linux (M. Kofler, Addison-Wesley)
- Apache: Apache Webserver 2 (S. Wolfgarten, Addison-Wesley)
- MySQL: MySQL 5 (M. Kofler, Addison-Wesley)
alte Unterlagen
Linux Einführung.odp Linux Einführung.pdf
Benutzer- und Gruppenverwaltung.odp Benutzer- und Gruppenverwaltung.pdf
dd if=/dev/zero of=filename.img bs=1k seek=128M count=1mit du -lah und ls -lah kann man den Unterschied zwischen aktuell belegtem und maximal belegbaren Speicherplatz. Achtung: In dem Augenblick wo eine sparse-Datei auf ein anderes Dateisystem kopiert wird muss auch der maximale Speicherplatz zur Verfügung stehen!
ntpdate de.pool.ntp.org
traceroute -T -p PORTNR HOST
tshark -i eth0 -w Traffic-sniff.pcap
sysstat
-Paket enhalten