Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende ÜberarbeitungLetzte ÜberarbeitungBeide Seiten der Revision |
linux:administration [2018/09/25 16:28] – st | linux:administration [2023/03/06 23:13] – [Themen] st |
---|
| ====== Administration ====== |
| |
| |
| <file> |
| 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. |
| </file> |
| |
| ===== 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, ...):<code bash>echo "- - -" > /sys/class/scsi_host/host0/scan</code> |
| |
| * **[[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:<code bash>dd if=/dev/zero of=filename.img bs=1k seek=128M count=1</code> 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). |
| * **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: <file>/dev/sda2 none swap sw,pri=1 |
| /dev/sdb2 none swap sw,pri=1</file> ''/proc/sys/vm/swappiness'' (50-60 normal, höher = mehr swapping): Einstellung ''vm.swappiness=60'' in ''/etc/sysctl.conf'' <code bash>cat /proc/meminfo</code>(Swap insgesamt + frei), <code bash>cat /proc/swaps</code> (benutzte Swap-geräte), <code bash>swapon -s</code> (swap-Geräte), <code bash>vmstat</code> (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: <code bash>ntp -q -d</code>((veraltet:<code bash>ntpdate de.pool.ntp.org</code>)) |
| * manuell: <code bash>date -s '2012-07-10 19:09:00' +'%Y-%M-%d %T'</code> |
| * Uhrzeit in Hardware/RTC/CMOS-Uhr schreiben: <code bash>hwclock -w # entspricht --systohc</code> |
| |
| * **[[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 Check<code bash>traceroute -T -p PORTNR HOST</code>)), 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: <code bash>tshark -i eth0 -w Traffic-sniff.pcap</code>))+[[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)<code bash>arp-scan --interface eth0 --localnet</code> |
| * 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** ^^ |
| | <code bash>BefehlA ; BefehlB </code> | BefehlA ausführen und dann BefehlB ausführen egal ob BefehlA erfolgreich war oder nicht | |
| | <code bash>BefehlA & BefehlB </code> | BefehlA im Hintergrund ausführen und dann gleich BefehlB ausführen ohne auf das beendet von BefehlA zu warten | |
| | <code bash>BefehlA && BefehlB </code> | BefehlA ausführen und dann BefehlB ausführen wenn BefehlA erfolgreich war | |
| | <code bash>BefehlA || BefehlB </code> | 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): <code>sensors</code> |
| * **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]]: <code>cpufreq-info</code> |
| * 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 <code bash>echo "1000000" > /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_min_freq</code> |
| * 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, ...) <code bash>cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor</code> |
| * Liste der Governors anzeigen: <code bash>cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governors</code> |
| * 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: |
| * <code bash>cat /sys/devices/system/cpu/cpu0/cpufreq/stats/total_trans</code> |
| * <code bash>cat /sys/devices/system/cpu/cpu0/cpufreq/stats/time_in_state</code> |
| * mit [[debian:Debian]]-Paket sysfsutils kann man Einstellungen in ''/etc/sysfs.conf'' dauerhaft hintelegen, z. B. <file>devices/system/cpu/cpu0/cpufreq/scaling_min_freq = 3100000</file> |
| * **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 <code bash>stress -t 36000 -c 3 -i 3 -m 3 -d 3 --vm-bytes 768MB</code> ((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:<code bash>sudo setcap 'CAP_NET_RAW+eip CAP_NET_ADMIN+eip' /usr/bin/dumpcap</code> |
| |
| ^ 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}}**\\ |
| |
| |