linux:administration

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
linux:administration [2018/05/31 00:51] – [Themen] stlinux:administration [2023/10/02 12:14] (aktuell) st
Zeile 1: Zeile 1:
 +====== 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).
 +     * [[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: <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}}**\\ 
 +