====== 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 =====
  * [[linux:automatische installation|automatische Installation und Desktop-Management]]
  * [[linux:Befehle tricks]]
  * [[Verwaltungstools]]
===== Links =====
  * [[http://www.heise.de/artikel-archiv/ct/2012/6/195/|Aufhelfen - Linux-Boot-Probleme erkennen und lösen]]
  * **[[http://www.sysadmin.com.au/whitepapers/troubleshooting-0100.pdf|sysadmin troubleshooting white paper]]**
  * [[http://www.thegeekstuff.com/2011/07/lazy-sysadmin/|12 Reasons Why Every Linux System Administrator Should be Lazy]]
  * [[http://beginlinux.com/index.php/server_training/serv_admin_m/serv_manual|Gliederung vom Server Management Manual]] 
  * [[http://www.geocities.com/arndike/swol-09-supersys_part_1.html|Stop your fire-fighting, Part 1]]
  * [[http://polishlinux.org/console/|Linux Console Compendium]]
  * [[http://reallylinux.com/docs/admin.shtml|Linux Commands for Beginning Server Administrators]]
  * [[http://www.thmoritz.de/linux/befehle.php|Linux - Befehlsliste]]
  * [[http://www.galileocomputing.de/openbook/ubuntu/ubuntu24_002.htm#mjf379b1dba710d79d526572f66cbcf882|Befehlsreferenz Ubuntu Linux]]
  * [[http://de.linwiki.org/wiki/Linuxfibel|Linuxfibel]]
  * http://www.clever-linux.de/LinuxGrundlagen/glossar.htm
  * [[http://polishlinux.org/console/shell-terminal-console-%E2%80%94-the-basics/|Shell, terminal, console — the basics]]
  * [[http://polishlinux.org/console/file-management-in-linux/|File management in Linux]]
  * [[http://polishlinux.org/console/unix-pipes-streams-and-redirections-explained/|UNIX Pipes, Streams and Redirections Explained]]
  * [[http://polishlinux.org/console/regular-expressions-and-search-patterns/|Regular expressions and search patterns]]
  * [[http://polishlinux.org/console/system-and-enviromental-variables/|System and enviromental variables]]
==== Dokumente ====
  * [[https://wiki.ubuntu.com/Training?action=AttachFile&do=get&target=student.pdf|Student Guide]] und [[https://wiki.ubuntu.com/Training?action=AttachFile&do=get&target=instructor.pdf|Instructor Guide]] umfassen jeweils rund 400 Seiten Anleitung und Hilfe für Ubuntu
  * [[http://debiananwenderhandbuch.de/|Debian GNU/Linux Anwenderhandbuch]]
===== Themen =====
  * **Hilfe/Dokumentation** (man + Kategorien! [man man], info, apropos, whatis) tldp.org, lok. user groups, irc, foren, mailinglisten
  * [[http://linuxwiki.de/HardwareErkennung|Hardware-Erkennung]]: lsusb, lshal, lspci (lspci -knn), lshw
    * dmidecode: zeigt detaillierte Infos über CPU, Arbeitsspeicher durch den [[wpde>Direct Media Interface|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:Server zeitgesteuert herunterfahren]]
  * **[[linux:Dateisystemaufbau]]** ( /proc !)
  * **[[Partitionierung]]** 
  * [[linux:bash#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), FIXME
    * **[[Dateisysteme und Formatierung#Mounten bzw. einhängen von Dateisystemen|Mounten]]** / Mountoptionen / Automounter / **Freigaben** mounten
    * [[http://polishlinux.org/console/file-management-in-linux/|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 ((-r = rekursiv -q = nicht die Unterschiede innerhalb der Dateien anzeigen)), Dateimanager wie ranger, mc oder krusader
    * **[[LVM]]**
    * [[linux:befehle-tricks#offene Dateien]]: lsof (offene Datei anzeigen) und fuser -u (Wer hat die Datei geöffnet?)
    * **[[linux:befehle-tricks#etc|Bibliotheken]]**: ldd (Abhängigkeiten), ltrace (wann werden diese Bibl. aufgerufen?)
    * **sparse-files** (wachsende Dateien die nicht voll zugewiesen sind)((sparse-Datei anlegen z.B. einer Datei mit 128 GB:dd if=/dev/zero of=filename.img bs=1k seek=128M count=1 mit 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!))
    * Dateiänderungen mit [[Inotify]] überwachen
  * System- und [[Umgebungsvariablen]] (env oder printenv, export, set)
  * [[linux:zeitversetztes Arbeiten]] (**[[Cronjobs]]**, at, watch)
  * **[[linux:Rechte]]** (chown, chmod, su, sudo, /etc/sudoers, SUID, SGID usw.), Quota (quota, edquota, repquota, quotaon)
  * **[[Benutzer und Gruppen]]**
     * //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. [[http://www.itwire.com/content/view/14446/53/|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).
     * [[Passwörter generieren]]
  * **Dienstekonzept** (Daemons) FIXME(Seite)
  * **[[http://www.oreilly.de/german/freebooks/rlinux3ger/ch063.html|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): Einstellung ''vm.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)
  * **[[linux:softwareinstallation|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((veraltet:ntpdate de.pool.ntp.org))
    * 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
    * [[shellscripts:shellscripts|Shellprogrammierung]], [[shellscripts:Arrays]], ...
  * **Konsolen**, (Virtuelle) **Terminals**, Tastenkombinationen
  * **[[grafische Benutzeroberflächen]]** (X-Server, window-manager, display-manager, desktop-environment-server)
  * **[[Logdateien überwachen]]**
==== Netzwerk ====
  * **[[Netzwerke|Netzwerk]]** (ifconfig, ifup, ifdown, route/ip r s, ''/etc/network/interfaces'',  ''/etc/resolv.conf'', [[server:Proxyserver]])
    * **Standard-Netzwerktools** (dig, ping, traceroute ((traceroute TCP-SYN Checktraceroute -T -p PORTNR HOST)), netstat, lsof -i, telnet, netcat, nmap, ethtool)
      * Sniffer: libpcap-basierend (kernel->userspace ((libpcap unterstützt ab Version 1.0.0 ebenfalls zero-copy aber nur für das sniffing)) ): tshark((Beispielaufruf: tshark -i eth0 -w Traffic-sniff.pcap))+[[software:wireshark]], tcpdump; direkt auf der Hardware: [[http://netsniff-ng.org/|netsniff-ng]]
    * **[[netzwerke:SSH]]** (verwaltung, tunneling, pub-key)
    * **[[security:Firewalls]]**
    * 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.
    * [[netzwerke:DNS]]-Anfragen mit dnstop überwachen: z. B. 3rd Level-Domains anzeigen ''dnstop eth0 -l 3'' 
    * [[http://www.linuxsecurity.com/content/view/119808/49/|Hacks From Pax: Network Server Monitoring With Nmap]]
    * tcptraceroute (traceroute ohne [[netzwerke:ICMP]])
    * **[[Wlan]]** (iwconfig, iwlist)
    * **IDS-Funktionalität / Angriffserkennung**
      * scanlogd: überwacht auf Portscans und trägt diese in ''/var/log/daemon.log'' ein
      * psad: [[http://cipherdyne.org/psad/|psad: Intrusion Detection and Log Analysis with iptables]], [[http://www.linux.com/archive/articles/44258|Detecting suspicious network traffic with psad]]
   * **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  |
  * **[[Scheduling und Prozessgruppen]]**
  * Prozesse (nohup, ps, pstree, pkill, pgrep, stoppen, resume, killen, htop + top, vmstat, zombie);
  * Priorität: (re)nice, [[http://wiki.ubuntuusers.de/schedutils|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 ((bei [[debian:Debian]] im Paket psmisc)) |
| mpstat ((mit ''sysstat''-Paket enhalten))| ''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 Prozess**namen**  |
| top | | laufende Prozesse mit Ressourcenverbrauch; :!: htop: viel besser als top, ncurses-Oberfläche, interaktiv  |
=== Links ===
  * **[[POSIX Signals]]**
  * [[http://wiki.ubuntuusers.de/schedutils|Schedutils - ubuntuusers-wiki]]
  * [[http://wiki.ubuntuusers.de/Shell/nice|nice - ubuntuusers-wiki]]
  * [[http://wiki.ubuntuusers.de/System|System - ubuntuusers-wiki]]
  * [[http://wiki.ubuntuusers.de/Shell/pstree|pstree - ubuntuusers-wiki]]
  * [[http://wiki.ubuntuusers.de/Shell/Prozesssteuerung|Prozesssteuerung - ubuntuusers-wiki]]
  * [[http://wiki.ubuntuusers.de/Shell/pidof|pidof - ubuntuusers-wiki]]
  * [[http://www.linux-user.de/ausgabe/2000/09/082-prozesse/prozess.html|Prozesse verwalten und steuern]]
  * [[http://www.unix-ag.uni-hannover.de/76.html|Software zum Mitnehmen]]
=== 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 FIXME
==== 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 [[linux:festplatten-daten#S.M.A.R.T.- und Temperaturstatus auslesen]])
  * **PCMCIA**: ''pccardctl status''
  * **Taktregelung** der CPU
    * [[http://www.thinkwiki.org/wiki/How_to_use_cpufrequtils|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: [[http://www.thinkwiki.org/wiki/How_to_make_use_of_Dynamic_Frequency_Scaling|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: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)
    * :!: Tools des "sysstat"-Pakets (sar, mpstat, **iostat**, sadf und sa; Auswertung z.B. mit [[http://sourceforge.net/projects/ksar/|ksar]]) für [[linux:Linux]] sollte man sich anschauen.
    * **iotop** für eine schnelle Anzeige welches Programm gerade I/O-Belastung verursacht
    * **unbekannte Dateien identifizieren**: ''file'' (Dateityp anhand von typischen Zeichenketten erkennen lassen) und ''strings'' (druckbare Zeichen einer Datei ausgeben)
  * **Stresstest**
    * Pakete stress und stressapptest stress -t 36000 -c 3 -i 3 -m 3 -d 3 --vm-bytes 768MB ((3 CPU Prozesse für sqrt(), 3 sync(), 3 Speichertester malloc()/free() ))
===== Distributionen =====
[[wpde>Linux-Distribution|Begriff Distribution!]]
  * [[linux:distributionen und live-cds|Distributionen und Live-CDs]];
  * [[suse:Suse]]
  * [[ubuntu:Ubuntu]]
{{:linux-distribution.png?500|linux-distribution.png}}
===== 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 [[Versionsverwaltung: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 (=[[http://linux.die.net/man/7/capabilities|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 =====
**{{:einfuehrung_linux_.odp|Linux Einführung.odp}}
{{:einfuehrung_linux_.pdf|Linux Einführung.pdf}}**
**{{:benutzer-_und_gruppenverwaltung.odp|Benutzer- und Gruppenverwaltung.odp}}
{{:benutzer-_und_gruppenverwaltung.pdf|Benutzer- und Gruppenverwaltung.pdf}}**
**{{:mysql.odp|Mysql.odp}}
{{:mysql.pdf|Mysql.pdf}}**\\