Kapitel 6. Linux / UNIX Design

Linux ist komplett UNIX - kompatibel, setzt inzwischen sogar den Maßstab für UNIX, aufgrund seiner hohen Verbreitung. UNIX kommt von UNICS = UNIversal Computing System, wobei das "CS" zu einem "X" wurde. UNIX als Basis des damaligen Internets mußte in der Lage sein, dutzende Aufgaben gleichzeitig zu übernehmen, vom Routing über Mail - Weiterleitung bis hin zum Telefonie - Server, siehe Kapitel 28, Datenbanken, u.s.w. Auch heutzutage leistet UNIX dies noch. Haupt - Design - Merkmal ist hierbei die Auslegung auf Multi-User / Multi - Tasking - Betrieb. Alle Dienste, die UNIX anbietet, laufen in einem eigenen User - Account, der mit einem eigenen Passwort verwaltet wird. UNIX unterscheidet nicht zwischen Prozessen für Serverdienste und User - Anwendungen. Da jedoch Programme sowohl Server - Ports, als auch Systemresourcen RAM (free), Festplatte (df, du, quotas), SHARED Memory (ipcs), Hardware (lspci, /proc/) belegen, ist es Aufgabe des Systemadministrators, diese zuzuordnen, und den Verbrauch der einzelnen Programme / Prozesse zu limitieren. Sowohl das bekannte Kommando ulimit, zu finden in den Konfigurationsdateinen /etc/profile, /home/userxy/.bash_profile, /home/userxy/.profile als auch Einstellungen in den Konfigurationsdateien /etc/security/limits.conf, /etc/sysctl.conf und die sog. quotas für Begrenzung des Festplattenverbrauches eines Prozesses bestimmen über die Resourcen, die Prozesse nutzen dürfen (Siehe auch Funktionen getrlimit, setrlimit, getrusage). Weitere Aufgabe des Systemadministrators ist es, Software aufzuspielen, die von vielen Usern bzw. Prozessen gemeinsam genutzt wird, so z.B. Libraries, Fonts, ... Da UNIX schon immer Terminal - Server war, gibt es also zentral gemeinsam genutzte Programme, Libraries, die vom User auch nicht überschrieben werden können. Die individuellen Konfigurationsdateien und Einstellungen befinden sich grundsätzlich in den jeweiligen Homeverzeichnissen in versteckten Dateien oder Verzeichnissen, die stets mit einem Punkt beginnen: .profile, .bash_profile, .kde, .gnome, .gnome2, .mozilla, .... Variablen, gesetzt in der Datei .bash_profile des jeweiligen Accounts bestimmen noch weitere Eigenschaften der von dort aus gestarteten Prozesse und Dienste. Die komplette Steuerung eines UNIX - Systems erfolgt also gemeinschaftlich durch den Systemadministrator, als auch durch User - Accounts, in denen spezielle Anwendungen gestartet werden.

Eine besondere Eigenschaft von UNIX ist es, mit sog. CHROOT - Accounts arbeiten zu können. Da gewöhnlich alle User und Prozesse zwar nur in ihr Homeverzeichnis schreiben dürfen, können diese jedoch relativ frei (außer es ist nicht gewollt), Inhalte von Verzeichnissen auf der Festplatte sehen. Diese Eigenschaft ist notwendig, da UNIX von Grund auf als Terminal - Server entwickelt wurde, und viele Binaries und zugehörigen Dateien ja von vielen Usern gemeinsam genutzt werden. Ist dies nicht gewollt, so kann das höchste, erreichbare Verzeichnis in /home/userxy/ verschoben werden.

Die Kommandos chmod, chown, die gewöhnlich die Rechte für Dateien und Verzeichnisse unter UNIX den Prozessen zuordnen, ermöglichen nicht nur die Steuerung der Rechte für den Zugriff auf die Festplatte durch Prozesse, sondern auch die Steuerung des Verhaltens eines Programmes im RAM (auslagerbar, swappable), Vererbung, Echtzeit - Komprimierung von Dateien, u.s.w. Sog. erweiterte Datei - Attribute lsattr, chattr steuern Backup - Programme, ermöglichen z.B. append - only Flags, wobei eine Datei nur wachsen darf, und immutable Flags, wobei eine Datei gegen versehentliches Überschreiben oder Löschen durch Systemadministratoren geschützt wird.

Gruppen - Zugehörigkeiten werden unter UNIX traditionell ausschließlich über die Datei /etc/group geregelt. Dies Differenzierung ermöglicht keine Ausnahmen bei einzelnen Dateien, wo z.B. jemand aus der Gruppe controlling grundsätzlich alle Dateien lesen darf, nicht jedoch bestimmte Dateien oder Verzeichnisse. Hierzu würden die POSIX ACL (Access Control Lists) eingeführt, die solche, erweiterte Rechte erlauben. Server - Dienste, wie SAMBA (NT Fileserver), ZZZZZZZ UNIX - Windows Migration