Wichtige Konzepte und Eigenschaften von Linux/UNIX
dialogorientiertes (interaktives) Mehrnutzer-/Mehrprozess-System:
Login mit Nutzerkennzeichen und Passwort
Prozess: im Ablauf befindliches Programm
Time-Sharing- und Echtzeit-Prozesse
Benutzerschnittstellen:
klassisch: Shell (textorientierter Kommandointerpreter)
heute: moderne grafische Oberfläche (GUI) und Shell
Grobstruktur:
Kern (Kernel):
zentrale Ressourcen-Verwaltung:
nur der Kern hat direkten Zugriff auf die Hardware
Gerätesteuerung über Gerätetreiber
Linux-Kern: monolithisch und modular
Module: Gerätetreiber, Dateisysteme, Netzwerkprotokolle, ...
Portabilität durch die (höhere) Programmier-Sprache C
zentrale UNIX-Konzepte: Prozesse und Dateien (Files)
Nutzer und Gruppen:
pro Nutzer: User ID (UID) und mindestens eine Group ID (GID)
IDs meist in den Dateien /etc/passwd und /etc/group festgelegt
UID/GIDs steuern Zugriff auf Dateien und Prozesse
Sonderstatus: Superuser (Administrator, root) mit UID 0
root hat (fast) unumschränkten Zugriff auf Prozesse/Dateien
Prozess-System:
Prozess-Hierarchie/-baum: Eltern- und Kind-Prozesse
Prozess 1 (init): Vater aller Prozesse
jeder Prozess hat standardmäßig die effektive und reale UID/GID seines Eigentümers
effektive UID/GID entscheiden über Zugriff auf Dateien und andere Prozesse
Spezialfall: Set-UID-/GID-Prozesse, deren effektive UID/GID der UID/GID des ausgeführten Programms entspricht (wogegen die reale UID/GID weiterhin der UID/GID des Prozess-Eigentümers entspricht)
Beispiel:
Kommando passwd, das jedem Nutzer die benötigten root-Rechte zur kontrollierten Manipulation von /etc/passwd gibt
normaler Nutzer darf nur den eigenen Prozessen Signale schicken und sie so beenden (killen)
Superuser darf alle Prozesse via Signal beenden
Dämonen (Deamons) oder Server: Hintergrund-Prozesse ohne steuerndes Terminal
Beispiele:
xinetd, crond, httpd, ...
Prozess-Scheduling:
Standard: präemptives Multitasking
der Kern entzieht dem jeweils aktiven Prozess spätestens nach Ablauf seiner Zeitscheibe die Steuerung, wählt den nächsten aktiven Prozess nach einer bestimmten Strategie aus und weist ihm eine angemessene Zeitscheibe zu
interaktive Prozesse werden bevorzugt ausgewählt (sichert kurze Reaktionszeiten)
Verhungern von Prozessen wird aber verhindert
Virtuelle Speicherverwaltung:
jeder Prozess hat einen einheitlich aufgebauten virtuellen Adressraum:
der Speicher wird in Einheiten fester Größe, sog. Speicherseiten, unterteilt
der Kern bildet virtuelle auf physische Speicherseiten ab
Swapping/Demand Paging: der Kern lagert bei Bedarf momentan nicht benötigte Speicherseiten in Swap-Dateien oder Swap-Partitionen auf externe Medien (Festplatten) aus
der nutzbare virtuelle Speicher kann daher größer als der real vorhandene physische RAM sein
Prozesse haben getrennte virtuelle Adressräume (Schutz vor Manipulationen)
durch das vom Kern bereitgestellte Konzept des Shared Memory können Prozesse bestimmte Bereiche ihres Adressraums teilen
der Superuser kann Adressräume fremder Prozesse beeinflussen
Dateisystem:
hierarchisch: Verzeichnisse und Dateien
einheitliche Baumstruktur beginnend bei der Wurzel (/)
Dateizugriff über relative und absolute Pfade
kein Laufwerkskonzept wie bei DOS/Windows
Teilbäume im laufenden Betrieb montierbar/demontierbar
Teilbaum: Dateisystem auf Festplatten-Partition, CD/DVD, Diskette, entferntem Rechner, USB-Stick, ...
VFS (Virtual File System) bietet eine einheitliche Schnittstelle zu verschiedenen Dateisystem-Typen
über Gerätedateien (/dev) ist eine geräteunabhängige Ein-/Ausgabe möglich
Gerätedateien: Schnittstellen zu den Gerätetreibern
Dateitypen:
reguläre Dateien (durch Applikationen interpretierter Byte-Strom)
Verzeichnisse
symbolische Links (Verweise)
benannte Pipes
UNIX-Domain-Sockets
Gerätedateien (für zeichen- oder blockorientierte Geräte)
Beispiel für einen Dateibaum:
Linux unterstützt eine Vielzahl von Dateisystem-Typen. z.B.:
Ext2, Minix
mit Journaling: Ext3, ReiserFS, JFS, XFS
DOS/Windows: VFAT (FAT16/FAT32 mit langen Filenamen),
NTFS (standardmäßig lesend; teilweise auch schreibend)
CD/DVD: ISO9660
Netzwerk: NFS, SMB/CIFS, AFS, ...
Zugriffsrechte im Dateisystem:
Datei/Verzeichnis hat UID/GID
jeweils 3 Rechte für Eigentümer, Gruppe und Welt (others):
r | Read | lesen |
w | Write | schreiben |
x | eXecute | Datei: als Programm ausführen Verzeichnis: hineinwechseln/hinabsteigen |
Sonder-Bits: Set-UID, Set-GID, Sticky
umfangreiche Netzwerk-Unterstützung:
breite Palette von Internet-/IP-basierten Anwendungen, z.B.
WWW: HTTP/HTTPS
E-Mail: SMTP, IMAP, POP
News: NNTP
Zeitsynchronisation: NTP
entfernte Rechnernutzung: Secure Shell, Telnet, X11
Dateitransfer: FTP, SCP/SFTP
Netzwerk-Dateisysteme: NFS, AFS, SMB/CIFS
Audio- und Videokonferenzen
verschiedene Zugangstechniken, z.B.:
Ethernet
Analog-Modem
ISDN
DSL
WLAN
Novell-Unterstützung: IPX/NCP
"Low Level Packet Interface": Schnittstelle für den direkten Zugriff
auf Schicht 2 (z.B. Ethernet) durch Sockets vom Typ PF_PACKET;
ermöglicht Netzwerk-Diagnosen, aber auch Hacker-Tools
System-Konfiguration durch reine Text-Dateien:
keine zentrale Registry, sondern einzelne Konfigurationsdateien bzw. Skripte
haben meist einfaches und klar dokumentiertes Text-Format
gestattet manuelle oder automatische Pflege (unter Nutzung von Skripten)
zentrale Konfigurationsdateien oft unter /etc
nutzerbezogene Konfigurationsdateien im Homeverzeichnis des Nutzers, typischerweise in Punktdateien/-verzeichnissen (der Name beginnt mit einem Punkt, z.B. .bashrc)
Software-Installationsprozess daher sehr transparent
Software-Installationen lassen sich in der Regel einfach auf andere Systeme verlagern bzw. nach Plattencrash reinstallieren, da man nur Dateien kopieren muss