Grundlagen

Wir starten mit der wichtigsten Erkenntnis rund um Linux: dem Kernel (siehe kernel.org ).

Linux-Kernel

Begriff eigentlich genau: GNU/Linux; mit Akronym GNU: GNU is not Unix (rekursives Akronym - Programmierer lieben das ;-)

Freier Betriebssystemkern - hier klassisch: monolithische Struktur, wobei aktuelle Entwicklungen nicht mehr nur starr monolithisch oder Microkernel sind.

Wikipedia-Artikel: Monolithischer Kernel

Engl. Fachbegriff: Kernel (siehe Website für den Kern auf kernel.org - Lizenz GNU Public License

Erste öffentliche Erwähnung durch Linus Torvalds in Newsgroup comp.os.minix am 26. August 1991 (Wiki-Link L. Torvalds)

Linux-Technik

Aufbau / Hierarchien der Techniken:

  • Linux Kernel

  • X-Server (oder alternativ: Wayland)

  • Window Manager bzw. Desktop Manager

Technisch ist Linux erst einmal nur der Kernel - mit Hilfe der Distributionen erhalten wir dann auch Installationswerkzeuge (Setup/Installs) und fertig nutzbare (komplette) Systeme mit Oberflächen/GUIs.

Kernel (Wiki-Link)

Damit kann man direkt auch eine Shell (z.B. die Bash) nutzen und die gängigste Hardwareunterstützung nutzen.

Je nach Aktualität eines Kernels wird dann gerade nur USB 3.2 Gen 1 oder eben schon USB 3.2 Gen 2 oder gar USB 4.0 unterstützt.

Siehe später: Runlevel 3 (ohne Grafikdesktop); in Prozessmangement mit SystemD: multi-user.target

X-Server - Grafik per Client-/Server-Technik (neue Entwicklung: Wayland)

X-Server (Wiki-Link)

Zusätzlich kann man eine Grafikausgabe mit Hilfe des (klassischen) X-Servers nutzen (X Windows System, X Server 11 - kurz X11, neu: x.org Server) mit deren Hilfe einfache Grafikfensteranwendungen (siehe xterm , xeyes ;-) genutzt werden können.

Window Manager bzw. Desktop - Oberfläche / GUI

Für die Darstellung von Fenstern kann man einfachste Window Manager wie FVWM oder IceWM nutzen.

Oder man baut noch gleich einen kompletten Desktop inklusive Management und Zusatztools (bei KDE/Plasam: siehe konsole , kwrite , KDE-Office) oben drauf!

Übersicht Window Manager for X

Installation / Inbetriebnahme

Die meisten Distribtutionen stellen maßgeschneiderte # Installationstools für ihre Technik parat.

Install-Medien:

  • CD (Netzwerk-Install; aktuell ca. 100 MB; bei Installation werden

    alle Pakete aktuell nachgeladen: ca. 3-4 GB),

  • DVD (auch als Live-DVD),

  • Netzwerk-Quellen (FTP, HTTP, NFS, SMB/CIFS, PXE/TFTP);

Die Quellen oft in 32- und 64-Bit und für andere Hardware - also nicht nur Intel x86 bzw. x86_64, sondern auch für ARM, Raspberry, …

Hinweis

In 2020 stellen immer mehr Distros ihre Unterstützung für 32-Bit Intel/AMD-Hardware ein!

Hinweis:

Bereitstellung von Checksums (sha256) zur Verifizierung der Unversehrtheit und Originalität der Downloadarchive (ISOs) - ggf. inklusive GPG Prüfung/Validierung.

Beispielhafte Vorgehensweise zur Verifizierung von Downloads: Linux Mint - How to verify ISO Images

Spezialität von openSUSE: YaST - Yet another Setup Tool (Installations- und Setup/Konfigurationswerkzeug)

Verzeichnisstruktur

Hier eine kurze Übersicht (als Screenshot und Tabellen) - siehe auch ausführlicher Beitrag zu FHS auf Wikipedia.

Filesystem Hierarchy

Filesystem

Einige Verzeichnisse:

/bin - Binaries, ausführbare Programme; bei vielen Distros als Link zu /usr/bin (Debian 10 Buster)

/boot - Kernel vmlinuz (komprimiert, mehrere Versionen mit Nummern), initrd (Ramdisk)

/boot/grub2 - Bootmanger (hier nicht konfigurieren - siehe /etc/default/grub)

/dev - Geräte (/dev/fd0, /dev/sr0, /dev/sda, /dev/sdb, /dev/null, /dev/urandom, …)

/etc - Konfigurationen (/etc/fstab, /etc/hosts, /etc/hostname, viele Konfigurations-Unterordner: /etc/skel, …)

/etc/X11 - der Ordner für den X-Server (Grundtechnik Grafikausgabe)

Manche Distros bereiten sich auf die Nutzung von /usr/etc vor (z.B. openSUSE 15.2).

/home - Benutzerprofile (/home/username)

/lib - Programmbibliotheken (Libraries; siehe auch /lib64)

/lost+found - bei journaling File Systems Daten für Fehlersuchen/Behebungen (siehe auch Toolreihe fsck)

/media - klassischer Mountpoint für Wechselmedien (bei openSUSE nicht mehr vorhanden)

/run/media/username - neuer Mountpoint für Wechselmedien bei openSUSE und Co

/mnt - Mountpoint (der alte Standardmount für manuelle Mounts)

/opt - optionale Software (hier am Beispiel XAMPP Lamp Server - Link); auch: kommerzielle Software

/proc - Prozesseverwaltung (siehe Ordner mit PID-Nummern)

Übungen / Aufrufe und Ausgaben verstehen: cat /proc/meminfo ; cat /proc/interrupts ; cat /proc/cpuinfo

Speziell: Vergleich von cat /proc/uptime mit Aufruf von Befehl uptime

/root - Homedir für SuperUser root

/sbin - Programme mit hohen Privilegien (SuperUser); bei vielen Distros als Link zu /usr/sbin (Debian 10 Buster)

/srv - Serverdienste (Verzeichnisse z.B. für Webserver - diese findet man gerne auch unter /var/www ;-)

/tmp - Temporärer Ordner; gemeinschaftlich im System (später: besondere Zugriffsrechte)

/usr - Großteil der installierten Software im System (Unix System Resources)

/var - Variable Daten; insbesondere bei Debian die Apache-Webserver-Verzeichnisse: /var/www/html

Unterscheidung/Gruppierung von Daten auf Unix/Linux Systemen gemäß File Hierarchy Standard (FHS):

  • veränderliche / dynamische vs. statische und

  • gemeinsam genutzte vs. nicht gemeinsam genutzte Verzeichnisse

gemeinsam nutzbar

nicht gemeinsam nutzbar

statisch

/usr /opt

/etc /boot

dynamisch

/var/mail /var/spool/news

/var/run /var/lock

Beispielhafte Darstellungen: Linux Community - Linux User Zeitschrift (Link - Linux User Ausgabe 11 / 2011)

Dateiberechtigungen

Un detaillierter Liste (ls -l )die Berechtigungen r (read), w (write), x (eXecute) für

  • u - Benutzer/Besitzer (u - user),

  • g - Gruppe (g - group) und

  • o - „alle Anderen“ (o - others) hergeleitet,

Standard-Berechtigungen ergeben sich (per default bzw. umask) in der (oktalen) Form 755 (für Ordner) und 644 für Dateien.

Bis hierhin: technisch 3 mal 3 Bit = 9 Bit für Berechtigungen

Hinweis

umask (z.B. openSUSE: 0 022) mit Standardberechtigungen für Ordner (777 - 022 = 755) und Dateien (666 - 022 = 644)

Hier mal wieder ein Scribble aus einem meiner Seminare:

Linux - Datei- und Ordnerberechtigungen

Linux - Datei- und Ordnerberechtigungen

Befehl chown (bzw. chgrp) zum Ändern von Besitzer und/oder Gruppe

chown -R wwwrun:wwwrun /var/www/html (Ordner html für Apache2 User:Gruppe konfigurieren)

Anm.: chown kann auch einfach Gruppe setzen mit chown :groupname

Befehl chmod eingeführt und nachrecherchiert - Beispiele chmod:

chmod -R 750 testordner (Ordner testordner rekursiv auf 750)

chmod u+x skript.sh (Datei skript.sh für Benutzer/Besitzer ausführbar machen)

Alternative: Berechtigungen mittels Eigenschaften Dialogfenster mit Dateimanager (z.B. Dolphin - Rechte Maus - Eigenschaften)

Übung mit „chmod“ bzw. Dateiberechtigungen über Dateimanager und Eigenschaften:

Ordner /home/donnerstag mit Berechtigungen 750 und 700 ausstatten, und Tests mit ls mit anderen Usern (joeb, mittwoch)

Für chmod (Change Modus) an Unterordnern muss -R (Achtung: hier großes R für –recursive) gesetzt werden.

Linux Berechtigungen

Linux Berechtigungen

Beim Dateimanager (siehe z.B. Dolphin) muss ein Haken für das Anwenden auf die Unterordner aktiviert werden.

Sonder-Berechtigungen: ergeben zusätzliche 3 Bit Berechtigungen!

  • SetUID: chmod 4... oder chmod u+s

  • SetGID: chmod 2... oder chmod g+s

  • Sticky-Bit: chmod 1... oder chmod o+t

Beispiel: SetUserId-Bit bei Passwortänderungstool passwd : (siehe Besitzer: root)

- rwsr----- root shadow /usr/bin/passwd

Erklärung / Sinn:

Auch normale User müssen Passworte für sich wechseln können - dazu braucht man aber Schreibzugriffe (root) auf Passwort-Datei /etc/shadow !

Gefahr

Beachten: Sicherheitsprobleme möglich mit SetUID! SEC-Audit: find / -perm -4000

SetGroupId-Bit: dasselbe Verhalten bei Ausführung von Programmen mit Gruppen-Rechte-Übernahme

Beispiel Sticky-Bit mit Temporärordner /tmp :

d rwxrwxrwt root root /tmp

Erklärung / Sinn:

Der Temp-Ordner für Alle - im wahrsten Sinne. Aber durch Sticky-Bit werden Dateien/Ordner-Berechtigungen und Besitz/Gruppe mit in den Ordner /tmp transportiert und sind so gegen die anderen Nutzer von /tmp schützbar

Prozesse

Starten von Programmen in der Konsole im Hintergrund (Background - bg):

kate mittwoch.txt & bzw. natürlich auch: kdesu kate /etc/hosts &

Konsole meldet dann die Prozess-ID; Recherche im Verzeichnisbaum:

/proc/... (Ordner mit PIDs)

ps in Kombination mit grep zum Suchen bestimmter laufender Prozesse (z.B. sshd)

Befehle: fg , bg , jobs , ps

ps ax | grep firefox (bitte wieder an ps --help und man ps denken)

hier: grep für „Filtern“ von Daten (Wikipedia Link - global regular expressions print)

Tools:

ps, pstree, pstree -p, top, kill (Signale beachten)

Anm.: „Overkill SIGKILL“ mit -9, Standardsignal SIGTERM ist -15

Prozesseigenschaften:

PID, Status (R - running, S - sleeping, Z - zombie)

Tipp: Grafische Übersicht oft auch mit Strg + Esc (oder Aufruf/Suche nach Prozess/Systemwerkzeug mit System… z.B.: Systemüberwachung bei Gnome und Co)

… tbc …