Difference between revisions of "Linux Basis Know How fuer System Administratoren"

From Bitbull Wiki
Jump to navigation Jump to search
Line 150: Line 150:
  
 
=Linux Überblick=
 
=Linux Überblick=
 +
Die Gemeinsamkeit von Linux ist der Kernel, und die damit verbundene Lizenz.<br>
 +
Niemand der eine Linux Distribution pflegt programmiert einen eigenen Kernel.<br>
 +
Vielmehr spalten Sich die Distibutionen erst viel weiter oben:
 +
*Debian basierend
 +
*Red Hat basierend
 +
* Slackware (SuSE)
 +
Distributionen können unter [https://distrowatch.com/ Distrwatch] gefunden werden, es sind ganz schön [https://de.wikipedia.org/wiki/Liste_von_Linux-Distributionen viele].
 
==Kernel==
 
==Kernel==
 
==Treiber (Umsetzung und Architektur)==
 
==Treiber (Umsetzung und Architektur)==
Line 158: Line 165:
 
===Journal und Syslog===
 
===Journal und Syslog===
 
===Welche Bedeutung hat Mail?===
 
===Welche Bedeutung hat Mail?===
 +
 +
[[Category:Linux]]
 +
[[Category:ReferenceCards]]
 +
[[Category:Training]]
 +
 
=Linux Devirate=
 
=Linux Devirate=
 
==Red Hat basierend==
 
==Red Hat basierend==

Revision as of 12:50, 13 October 2020

Contents

1 Einleitung

  • Kurs Dauer: 3 Tage
  • Publikum: System Administratoren

Ziel dieses Kurses ist es einen "Enterprise tauglichen" Einstieg in die OpenSource Welt zu finden.
Es werden alle wichtigen Faktoren besprochen um Entscheidungen für die Einführung von Systemen und Applikationen zu finden welche später nicht bitter und teuer bereut werden müssen.
Wir erlernen wir Basis Kenntnisse über Installation und Grund-Funktion des OpenSource Enterprise Betriebssystems CentOS 8 Core welches die freie Variante von "Red Hat Enterprise Linux" darstellt.
Des weiteren erarbeiten wir durch praxisnahe Beispiele einen Einstieg in die System Administration von CentOS.

2 Ziele

  • Das Konzept von Linux und OpenSource verstehen
  • Enterprise-relevante Kriterien von OpenSource Software analysieren
  • Ein CentOS 8 mit dem GUI Installer aufsetzen
  • Sich per SSH/Konsole auf einem Linux System anmelden
  • Grundlegende BASH Konsolen Kenntnisse erlangen
  • Das OS Derivat bestimmen
  • Pakete hinzufügen/entfernen
  • Config Files bearbeiten
  • Einen Dienst in Betrieb nehmen
  • Updates einspielen
  • Oberflächlicher Health Check
  • Log Files finden und lesen
  • Prozesse und deren Ressourcen finden
  • Dienste und deren Status prüfen
  • Rudimentäre Admin Arbeiten ausführen

3 Voraussetzungen

Um in der geplanten Zeit die Ziele erreichen zu können, setzen wir ein paar Dinge voraus...

3.1 Vorkenntnisse

Es wird davon ausgegangen das die Teilnehmer über mehrjährige Erfahrung im System-Administrations-Bereich und Grundwissen Wissen in den Bereichen

  • Hardware
  • Software
  • Betriebssysteme
  • Consolen Grundkenntnisse (DOS, BASH, KSH)
  • Netzwerk

verfügen.

Im Zweifelsfall ist vor der Durchführung mit dem Trainer Rücksprache zu halten.

3.2 Kurs Raum

Es wird ein Kurs Raum mit genügend Platz und den gängigen Mitteln benötigt:

  • Genügend Platz für alle Teilnehmer (Corona)
  • Beamer
  • Flip Chart
  • WLAN
  • Genügend Steckdosen
  • Getränke, Snaks
  • Kantine/Restaurant für Mittags-Pause

3.3 Arbeitsmittel der Teilnehmer

Zugriff auf eine VMware Virtualisierung mit mindestens folgenden Ressourcen:

  • 2 vCPU
  • 2GB Memory
  • 20 GB Disk
  • Internet Access via LAN für die VM

Ein Notebook mit WLAN, VMware Workstation und genügend Ressourcen ist absolut ausreichend, soll aber vor dem Kurs Beginn installiert, konfiguriert und getestet sein. Wird ein Remote LAB verwendet, soll vor dem Kurs sichergestellt werden das dies im Kursraum genutzt werden kann. (Zugriff, File Transfer, Copy Paste vom Notebook, …)

4 OpenSource Überblick

4.1 Ursprung

  • Angelehnt an MINIX welches als Anschauungs OS von Andrew S. Tannenbaum für den Unterricht entwickelt wurde
  • Erster Kernel 1991 von Linus Torvalds (10 000 Zeilen)
  • Aktueller Kernel 4.14.x LTS (25'071'693 Zeilen)

4.2 Einsatzgebiete



4.3 OpenSource verstehen

OpenSource ist nicht einfach eine Lizenz, es ist viel mehr die einzig bislang funktionierende Form von Kommunismus in der Geschichte.
Die Grundsätze von OpenSource sind am einfachsten im Essay von Eric S. Raymond in Die Kathedrale und der Basar beschrieben.
Folgendes sind die Grundsätze dieses Textes:

  1. Jede gute Software wird von einem Entwickler geschrieben, der ein persönliches Problem lösen will.
  2. Gute Programmierer wissen, was sie schreiben müssen. Brillante wissen, was sie neuschreiben müssen (und was sie wiederverwenden können).
  3. Plane, eine Version zu verwerfen; du wirst es sowieso tun.
  4. Wenn du die richtige Einstellung hast, werden dich interessante Probleme finden.
  5. Wenn du das Interesse an einem Programm verlierst, ist es deine Pflicht, dieses einem kompetenten Nachfolger zu übergeben.
  6. Wenn du deine Benutzer als Mitprogrammierer betrachtest, ist dies der einfachste Weg zu schneller Verbesserung und effizientem Debugging.
  7. Veröffentliche früh. Veröffentliche häufig. Und höre auf die Benutzer.
  8. Mit einer hinreichend großen Gruppe von Betatestern und Mitentwicklern wird fast jedes Problem schnell erkannt und die Lösung von jemandem gefunden.
  9. Schlaue Datenstrukturen und einfacher Code (im englischen Original: „dumb code“) funktionieren viel besser als andersherum.
  10. Wenn du deine Betatester wie deine wertvollste Ressource behandelst, werden sie dies auch werden.
  11. Fast so gut wie eigene gute Ideen zu haben, ist es, gute Ideen von den Benutzern zu erkennen. Manchmal ist letzteres besser.
  12. Meist entstehen die brillanten Lösungen aus der Erkenntnis, dass das Problem falsch verstanden wurde.
  13. Perfektion (im Design) ist nicht erreicht, wenn man nichts mehr hinzufügen kann, sondern wenn nichts mehr entfernt werden kann.
  14. Jedes Tool soll so funktionieren, wie erwartet. Aber ein wirklich gutes Tool ermöglicht Verwendungszwecke, an die du niemals gedacht hättest.
  15. Wenn du Schnittstellencode schreibst, verhindere um jeden Preis, den Datenstrom zu verändern – und verwirf nur etwas, wenn dies der Empfänger verlangt.
  16. Wenn deine Programmiersprache nicht ansatzweise Turing-vollständig ist, kann syntaktischer Zucker dein Freund sein.
  17. Ein Sicherheitssystem ist nur so sicher wie sein Geheimnis. Vermeide Pseudogeheimnisse.
  18. Um ein interessantes Problem zu lösen, suche eines.
  19. Mit ausreichend guter Kommunikation, wie über das Internet, und Führung ohne Zwang, sind viele Köpfe immer besser als einer.

Ein gutes Beispiel für...

  • die Kathedrale ist Zimbra, Macintosh, Android
  • den Basar ist Fedora und CentOS

4.3.1 Copy Left

Jeder kennt ein Copyright, das Markante an Linux ist aber die Copyleft Lizenz welche das Gegenteil ist.
Wer das Produkt erweitert verpflichtet sich die Erweiterung zur Verfügung zu stellen.
Die wohl bekannteste Lizenz ist die GPL.

4.3.2 Community

Mitglieder der Community zeichnen sich dadurch aus, sie andere Community Mitglieder und/oder deren Prdukte unterstützen.
Dies kann in ganz vielen Formen geschehen:

  • Entwicklung
  • QA Testing
  • Dokumentation/HowTos/Übersetzungen
  • Forums Betreuung/Beiträge

Distributionen wie Fedora, CentOS, Debian, Ubuntu, Arch, ... sind zwar oft exklusiv einer Firma zugeordnet.
Es ist aber nicht möglich Dienstleistungen via SLA darauf zu beziehen, da das fortführen der zum Erhalt notwenidgen Arbeiten durch die Comunity geleistet wird.

4.3.3 Free Beer vs. Free Speak

Mit Forderungen und Negativer Kritik in Foren auf zu treten ist ein guter Weg sich schnell unbeliebt zu machen.
Denkt daran, das die meisten Produkte unentgeltlich gepflegt werden, da macht es sich unglaublich schlecht wenn im Forum Fragen stellt welche in der Doku behandelt wurden.
Behandelt die Community Mitglieder wie eure Wertvollsten Mitarbeiter, Sie haben Sich durch Ihr Engagement bereits bewiesen.

Taucht dennoch ein Problem mit einer "Community Supported Software" auf, könnte folgendes Verhalten helfen:

  • Wertschätzung
Erst mal bedanken ist immer eine gute Idee.
  • Eine kleine Spende
Wenn eine Lösung dringend ist hat das Produkt offenbar einen Wert?!
  • Genaue Fehler Beschreibung
So das jeder der das liest das Problem selbst herbeiführen kann
  • Ein dediziertes System zur Analyse des Problems und externen Zugang bereit stellen
Den Zugang bitte nicht in den Foren posten
  • Workaround oder Lösung für andere Mitglieder aufbereiten
Dokumentation, Zusammenfassung, HowTo, ...

Neulich konnte ich ein Problem mit Guacamole (HTML5-Gateway) innerhalb von 24h im Code lösen.
Selbst gute Enterprise Firmen brauchen oft länger um ein Problem zu analysieren, geschweige denn zu Lösen.

5 Linux Überblick

Die Gemeinsamkeit von Linux ist der Kernel, und die damit verbundene Lizenz.
Niemand der eine Linux Distribution pflegt programmiert einen eigenen Kernel.
Vielmehr spalten Sich die Distibutionen erst viel weiter oben:

  • Debian basierend
  • Red Hat basierend
  • Slackware (SuSE)

Distributionen können unter Distrwatch gefunden werden, es sind ganz schön viele.

5.1 Kernel

5.2 Treiber (Umsetzung und Architektur)

5.3 Boot Vorgang

5.4 Grund Konzepte

5.4.1 Alles ist eine Datei

5.4.2 Dateisystem Struktur

5.4.3 Journal und Syslog

5.4.4 Welche Bedeutung hat Mail?

6 Linux Devirate

6.1 Red Hat basierend

6.2 Debian basierend

6.3 Andere

6.4 Einloggen und Devirat bestimmen

7 Installation eines CentOS 8 Core als VM

7.1 Sprache

7.2 Zeit/Zone/NTP

7.3 Partitionierung

7.3.1 Classic

7.3.2 LVM

7.3.3 Filesystem Formate

7.3.4 Software

7.4 Netzwerk Konfiguration

7.5 Security Settings

7.6 Admin User Erstellung

8 Erste Schritte

8.1 Administration via SSH

8.1.1 File Transfer via SSH

8.1.2 Berechtigungen (Posix & ACL)

8.1.3 Dateien Editieren via VIM

9 Basis- Wissen und Basis- Konfiguration

9.1 Hilfe finden

9.2 Dateisystem Hirarchie

9.3 SELinux

9.4 FirewallD / IPTables

9.5 Netzwerk Konfiguration

9.6 sudo Rechte

9.7 YUM/DNF Paket Manager

9.7.1 repositories

9.7.2 add

9.7.3 remove

9.7.4 upgrade

9.8 Cron Scheduling

9.9 Cockpit Web Administration

10 Fehler Analyse

10.1 Log Files

10.1.1 LogFiles

10.1.2 Syslog

10.1.3 journalctl

10.2 SOS Report

10.3 Disk

10.3.1 Block-Device

10.3.2 Inode

10.3.3 File

10.4 CPU

10.4.1 Prozesse

10.4.2 Load

10.5 Netzwerk

10.5.1 Konfiguration

10.5.2 Routing

10.5.3 Bandbreite

10.5.4 Connectivity

10.5.4.1 ping

10.5.4.2 traceroute

10.5.4.3 telnet

10.5.4.4 netcat

10.5.4.5 wget

10.5.4.6 tcpdump

10.5.4.7 nmap

10.5.5 Listen Ports

10.5.6 Firewalling

10.6 SELinux