Technische Praxis der Computersysteme

Teil 1

Einfuhrung¨ in die Benutzung und Installation

eines Linux/Unix-Systems

Roland Steinbauer, Martin Piskernig, Andreas Nemeth, Bernhard Lamel

Version 1.5, Oktober 2005

Inhaltsverzeichnis

0 Begriffskl¨arung 1

1 Historische Einleitung 4 1.1 Eine kurze Geschichte von Unix ...... 4 1.2 Freie Software ...... 8 1.3 Kurze Geschichte von Linux ...... 10 1.4 Linux-Distributionen ...... 13

2 Technische Einleitung 20 2.1 Linux-Design ...... 20 2.2 Multitasking ...... 22 2.3 Aufbau eines Unix/Linux-Systems ...... 24 2.4 Hardwareanforderungen, Dualboot ...... 32

3 Benutzung 1 36 3.1 Allgemeines ...... 36 3.2 Shell-Grundlagen ...... 39 3.3 Vom Umgang mit Dateien ...... 42 3.4 Umleitungen und Pipes ...... 47 3.5 Links ...... 52 3.6 Dateiberechtigungen ...... 52 3.7 Tour durchs Filesystem ...... 56

4 Dokumentation 62

5 Editoren 66

6 Benutzung 2 79 6.1 Shell-Variablen ...... 79 6.1.1 Einige Beispiele zum Quoting ...... 81 6.1.2 Einfache Schleifenkonstruktionen ...... 83 6.2 Benutzerumgebung ...... 84 6.3 Prozeßkontrolle ...... 85 6.4 Weiteres ...... 91

7 X-Window 98

8 Installation 104 8.1 Vorbereitung und Planung ...... 104 8.2 Ub¨ erblick ub¨ er die Installation ...... 107 8.3 Installation eines Linux-Systems ...... 112

9 Konfiguration 135 9.1 Startup und Shutdown ...... 135 9.2 Systemdienste ...... 140 9.3 Softwareinstallation ...... 144 Vorbemerkungen zu Version 1.5

Version 1.5 dieses Skriptums basiert nach wie vor auf dem bew¨ahrten Originalentwurf von Roland Steinbauer. Es enth¨alt die ersten gr¨osseren Anderungen¨ seit 2003. Ich habe begonnen, Beispiele aus den Folien in den Buchteil des Skriptums zu ub¨ ernehmen; in der Vorlesung werden zum Teil nicht idente, aber entsprechend analoge Beispiele vorgefuhrt.¨ Die Versionsnummer liegt noch immer unter der n¨achsten ganzzahligen Grenze; fur¨ Ver- sion 2.0 plane ich insbesondere auch einen Index, der in dieser Version allerdings noch fehlt. Insgesamt konnte sich Linux in den letzten Jahren als vollwertige Betriebssystem- Alternative etablieren, und die Entwicklungsgeschwindigkeit hat um ein vielfaches zuge- nommen. Umso wichtiger ist es, mit den Grundlagen vertraut zu sein–man kann mit den entsprechenden Kenntnissen produktiver arbeiten, und zur verantwortungsvollen Admini- strationst¨atigkeit sind sie unerl¨asslich. Noch mehr als in den Vorg¨angerversionen w¨ahlen wir einen Weg, der weder distributionsspezifisch ist, noch die Verwendung des letzten techni- schen Tricks erfordert. Inzwischen liegt die Verantwortung fur¨ s¨amtliche Fehler in diesem Skriptum bei mir; ub¨ er Ruc¨ kmeldungen freue ich mich, insbesondere ub¨ er Korrekturen (Mail an [email protected]).

Bernhard Lamel, September 2005

Vorwort

Die vorliegende Version 1.0 ist eine ub¨ erarbeitete Neuauflage des Skriptums vom vorigen Wintersemester. Ich habe vor allem versucht die Kapitel 2, 3 und 6 klarer zu gestalten und einige zu komplizierte Formulierungen zu gl¨atten. Außerdem hoffe ich den Großteil der vorhandenen Druckfehler gefunden und ausgebessert zu haben. Schließlich habe ich auch einige Aktualisierungen und kleinere Anpassungen ub¨ er das ganze Skriptum hinweg vorgenommen. Mein besonderer Dank gilt Oliver Fasching, der das gesamte Skriptum mit viel Sorgfalt korrekturgelesen hat. Weiters m¨ochte ich den vielen H¨orern der Vorlesung im vergangenen Wintersemester danken, die durch ihre Anregungen und Vorschl¨age zur Verbesserung des Skriptums beigetragen haben. Leider war es aus zeitlichen Grunden¨ nicht mehr m¨oglich, einen Sachindex anzulegen. Schließlich ist es wiederum unserem Sekretariat zu verdanken, daß das Skriptum rechtzeitig fertiggestellt werden konnte.

Roland Steinbauer, Oktober 2001

Vorwort zur Version 0.98 (WS 2000/01)

Das vorliegende Skriptum ist anl¨aßlich meiner Vorlesung Praxis der Computersysteme, ” Teil 1“ im Wintersemester 2000/2001 am Institut fur¨ Mathematik der Universit¨at Wien entstanden. Es baut auf der Rohfassung des Handouts zur (einstundigen)¨ Vorlesung aus dem Wintersemester 1999/2000 auf, ist aber wesentlich umfangreicher und (hoffentlich) reifer geworden. Insbesondere sind nicht nur alle in der Vorlesung verwendeten Folien, son- dern auch viel zus¨atzliches Material enthalten, und so kann das vorliegende Werk“ (fast) ” als eigenst¨andige Einfuhrung¨ in die Benutzung und Installation eines Unix/Linux-Systems gelten. Sowohl die Vorlesung als auch das Skriptum sind zweisemestrig bzw. -teilig konzi- piert; der vorliegende erste Teil bildet die Grundlage fur¨ den zweiten Teil mit Schwerpunkt Netzwerk-Systemadministration unter Linux. Ich habe mich bemuh¨ t, die Erfahrungen und Ruc¨ kmeldungen der letztj¨ahrigen Vorlesung in meine Vorbereitung einzubeziehen und hoffe, daß diesem Unterfangen zumindest teilwei- se Erfolg beschieden war. Essentielle Beitr¨age zu mehreren Kapiteln verdanke ich Martin INHALTSVERZEICHNIS INHALTSVERZEICHNIS

Piskernig und Andreas Nemeth. Meinen“ Tutoren Matthias Zeichmann, Mark Heinzle und ” Barbara Pocza danke ich fur¨ die große Unterstutzung.¨ Florian Wisser m¨ochte ich darub¨ er hinaus fur¨ seinen kreativen und pers¨onlichen Einsatz nicht nur bei der Entstehung dieses Skriptums danken. Michael Kunzinger hat große Teile des Skriptums korrekturgelesen, Her- mann Schichl und Gerald Teschl haben mich in allen Linux-Fragen sehr unterstutzt¨ und Sascha Husa hat ursprunglic¨ h mein Interesse fur¨ Systemadministration geweckt. Schließ- lich w¨are das Skriptum ohne die freundliche Mithilfe unseres Sekretariats nicht rechtzeitig fertigzustellen gewesen. Viele Themen h¨atte ich gerne noch genauer und ausfuhrlic¨ her behandelt und manche Formulierung h¨atte ich noch gerne verfeinert; der zeitliche Rahmen des Projekts hat dies je- doch leider verhindert, sodaß ich die Versionsnummer gegenub¨ er dem Vorjahr zwar erheblich erh¨oht aber doch unter 1.0 gew¨ahlt habe. Die Verantwortung fur¨ alle Fehler, Ungenauig- keiten und Unklarheiten liegt selbstverst¨andlich bei mir: Alle Ruc¨ kmeldungen, Anregun- gen und Beschwerden daher bitte an meine Adresse ([email protected]). Und naturlic¨ h ergeht (wie schon im Vorjahr) an dieser Stelle an alle Interessierten die Einladung an einer verbesserten Version furs¨ n¨achste Mal mitzuarbeiten. Weiteres Material, Informationen und Links zur Vorlesung und zum Thema finden sich unter http://www.mat.univie.ac.at/praxis.

Roland Steinbauer, November 2000

iv Statt einer Einleitung

Statt einer Einleitung, die den Geist von Linux und/oder Unix beschw¨ort, m¨ochte ich hier eine kleine Reiseanleitung geben; denn es ist ein Reisebeginn, um den es sich handelt. Ein Betriebssystem wie Linux kann man weder in einer Vorlesung, noch durch Lesen eines Skrip- tums oder eines Buches lernen. Nur die Grundlagen kann man so erfahren, und durch Nach- schlagen wird man sich hin und wieder gewisse Einzelheiten ins Ged¨achtnis (zuruc¨ k)rufen; also genau das, was man von einem guten Reisefuhrer¨ erwartet. Die Reise, die will schon selbst unternommen sein! In diesem Sinne will die Vorlesung und das Skriptum dazu beitragen, einen guten Rei- sebeginn zu erm¨oglichen. Nicht die neuesten technischen Tricks (die vielleicht schon in der n¨achsten Version Schnee von gestern sind), sondern die grundlegenden Konzepte sollen im Vordergrund stehen. Mit einem (guten) Verst¨andnis fur¨ das Funktionieren des Systems, seine Teile und ihr Zusammenwirken, wird es m¨oglich, konkreten Problemen im Alltag erfolgreich zu begegnen. Hier soll soviel von den Grundlagen vermittelt werden, daß ein kreatives Wei- tergehen m¨oglich wird, die selbst¨andige Besch¨aftigung mit dem System nicht zur Frustration, sondern zur spannenden, herausfordernden und letztlich erfolgreichen Reise wird. Wichtig ist allerdings, daß man sich wirklich selbst auf die Reise begibt, d.h. praktische Erfahrung sammelt. Dazu dienen naturlic¨ h die begleitenden Ubungen,¨ wo das L¨osen erster praktischer Aufgaben trainiert wird. Sie k¨onnen aber naturgem¨aß ebenfalls nur einen Anfang darstellen, eine Aufforderung weiterzugehen und selbst weitere Praxis zu sammeln. Es gibt eine Fulle¨ einschl¨agiger Literatur zum Thema, die fur¨ jeden Geschmack das Pas- sende bieten kann. Neben Buc¨ hern sind Unmengen an Material im Internet zu finden (siehe auch und vor allem Kapitel 4). Bei der Vorbereitung der Vorlesung und des Skriptums habe ich mich haupts¨achlich folgender Quellen bedient (deren Auswahl allerdings eher Auskunft ub¨ er meinen Geschmack gibt). 1 Matt Welsh, Lar Kaufman, Running Linux, 4th Edition, O’Reilly & Associates, Inc, (Sebastopol, CA, 2002). 2 Lary Greenfield, The Linux Users’ Guide, http://www.ibiblio.org/pub/Linux/docs/linux-doc- project/users-guide/ (1996) 3 Evi Nemeth, Garth Snyder, Scott Seebass, Trent R. Hein Unix System Administration Handbook, 3rd Edition (Prentice Hall, New Jersey, 2000) (Ein Klassiker! Die 3. Auflage behandelt erstmals auch Linux)

Weiteres Material findet sich unter http://www.tldp.org, Hinweise auf (viele) andere Buc¨ her unter http://www.linux. org/books/index.html (siehe auch Kapitel 4). Das Skriptum gliedert sich in 10 Kapitel. Zun¨achst wird in Kapitel 0 mit einer Begriffs- kl¨arung ein gemeinsamer Sprachgebrauch hergestellt. Vielen H¨orern und Lesern wird das meiste darin bekannt sein. Gerade im EDV-Bereich ist es aber wichtig, den Anf¨anger nicht durch vorzeitigen Gebrauch (nicht erkl¨arter) technischen Fachsprache zu erschlagen“. Ka- ” pitel 1 bietet eine historische Einleitung ins Thema und soll das Verst¨andnis dafur¨ wecken, warum Unix/Linux so ist, wie es ist. Wichtig ist es mir, das Konzept der Freien Software“ ” (Abschnitt 1.2) grundlic¨ h zu vermitteln. Das folgende Kapitel 2 bietet eine Einfuhrung¨ in den technischen Aufbau eines Unix/Linux-Systems. Eine erste Begegnung mit der Bedie- nung eines Linux-PCs findet in Kapitel 3 statt. In Kapitel 4 wird erkl¨art, wie man sich selbst weiterhelfen kann, wenn man einmal nicht sofort weiter weiß. Kapitel 5 beinhaltet ein kleines Tutorial im Umgang mit dem wichtigen Editor vi, der schon im Kapitel 6 (dringend) ben¨otigt wird, um weitere Grundelemente der Bedienung eines Linux-Systems zu erlernen. Kapitel 7 fuhrt¨ in die grafische Benutzeroberfl¨ache von Linux ein. Die Installation des Sy- stems und das Management der grundlegenden Systemdienste wird in den Kapiteln 8 und 9 detailliert dargestellt. Beginnen m¨ochte ich unsere Reise mit zwei meiner Lieblingszitate aus den oben ange- sprochenen Texten. Statt einer Einleitung Statt einer Einleitung

Statt einer Einleitung (1)

There is little else that you need for your trip. The following three items may come in handy: a towel, a strong cup of coffe, and (optionally) a computer... Linux itself is somewhat of a rebellion against the world of commercial software. The world of Linux is not an organized one. You must expect the unexpected. You must always yield the driving force behind free software: that being the desire—no, need—to develop and maintain the most succinct and powerful system anywhere. To put it in a nutshell: you must hack.

(Welsh, Kaufman, Running Linux“) ”

Folie 1

Statt einer Einleitung (2)

The best way to learn Unix and Linux is by using them. Use Linux for everything you can. Experiment. Don’t be afraid—it’s possible to mess things up, but you can always reinstall. Keep backups and have fun!

(Greenfield, The Linux Users’ Guide“) ”

Folie 2

vi 0 Begriffskl¨arung

Aufgabe dieses Kapitels ist es, die Bedeutung grundlegender Begriffe wie Hardware, Software, Betriebssystem, Anwendung, etc. zu erkl¨aren. Dabei sollen weder besondere Finessen behandelt noch spezielle Feinheiten erkl¨art werden, sondern eine einfache operationale Kl¨arung der sp¨ater verwendeten Begriffe erfolgen; sozusagen ein gemeinsamer Sprachgebrauch festgelegt werden.

Unter der Hardware eines Computers versteht man alle (physikalisch) vorhandenen Be- standteile; mit anderen Worten: alles was in den Computer eingebaut ist“, bzw. das man ” ” angreifen kann“. Das sind mindestens der Prozessor (bzw. die Prozessoren; CPU, Central Processing Unit), der das eigentliche Herzstuc¨ k des Computers darstellt. Dieser befindet sich, wie auch der Hauptspeicher (Memory, RAM) auf der Hauptplatine (Motherboard, Mainboard). Auf dieser wiederum befinden sich weitere Hardwareger¨ate wie z.B. der IDE-Controller bzw SATA-Controller, der den Datentransfer mit Massenspeicherger¨aten wie Festplatten oder CDROM-, CDRW-,DVD-,usw Laufwerken herstellt, der Floppy-Controller, der fur¨ den Da- tentransfer mit den Diskettenlaufwerken zust¨andig ist, sowie parallele (Druckerport) und serielle (Maus, Gameport) Schnittstellen. Weitere Schnittstellen auf dem Motherboard sind PS/2- (Maus, Tastatur) und USB-Schnittstellen (Maus, Tastatur, Webcam, Drucker, etc.; der USB-Bus ersetzt inzwischen fast alle alten parallelen, seriellen und PS/2 Schnittstellen die auch als Legacy Ports bezeichnet werden). Eine weitere wichtige serielle Verbindung, die in vielen modernen Mainboards integriert wird, ist die Firewire-Schnittstelle (IEEE 1394, wird zum Beispiel fur¨ digitales Video verwendet). Weiters findet man auf vielen Mainboards bereits integrierte Ethernet-Schnittstellen fur¨ die Netzwerkverbindung. Zus¨atzlich zu diesen sogenannten Onboard-Komponenten verfugt¨ die Hauptplatine ub¨ er Steckpl¨atze (Slots), an denen weitere Hardwarekomponenten (Platinen) angebracht werden k¨onnen. Meistens ist die Grafikkarte (Video Chipset) an einem AGP- oder (veraltet) an einem PCI-Slot angebracht. Moderne Mainboards stellen inzwischen wieder spezielle, rasche PCI-Slots fur¨ Grafikkarten zur Verfugung.¨ Weitere optionale Ger¨ate, die meist auf PCI- oder (¨alter) ISA-Slots angebracht sind, k¨onnen z.B. Soundkarten, Netzwerkkarten, oder SCSI-Adapter sein, die die Datenub¨ ertra- gung zu externen Audio-Ger¨aten (z.B. Boxen, Sterioanlage), einem Netzwerk (z.B. Ethernet, Token Ring) oder SCSI-Massenspeicherger¨aten (Festplatten, CDROM-, CDRW-Laufwerke) erm¨oglichen. Weiters werden naturlic¨ h auch Maus, Tastatur und Bildschirm (Monitor) als Hardware- komponenten eines Computersystems bezeichnet. Unter Systemressourcen versteht man alle von der Hardware zur Verfugung¨ gestellten Funktionen. Unter Software versteht man die Gesamtheit aller Programme, die auf dem System lau- fen. Die wichtigste und grundlegende Komponente davon ist das Betriebssystem (Operating System, OS). Es stellt den Applikationen (Anwendungssoftware, also den Programmen, mit ” denen man arbeitet“) die Systemressourcen zur Verfugung.¨ Es verwaltet die Verwendung der Hardware des Systems, teilt verschiedenen Prozessen verschiedene Ressourcen zu, r¨aumt den Prozessen verschiedene Rechte ein, auf Ressourcen zuzugreifen und ist fur¨ die Abwick- lung der Kommunikation zwischen den Prozessen verantwortlich. Dabei versteht man unter einem Prozeß ein laufendes Programm (Instanz) mit seinem privatem Datenbereich (vom OS zugeteilt). Wenn ein Programm z.B. zweimal gestartet wird, laufen zwei Prozesse, mit ihrem jeweiligen eigenen privaten Datenbereich. Wichtige und weit verbreitete Betriebssysteme in der PC-Welt sind unter anderem MsDOS, Microsoft Windows in seinen verschiedenen Versionen (Win3x, Win9x, WinME, WinNT, Win2000, WinXP. . . ), OS/2 (IBM), MacOS, Unix in seinen verschiedenen Spiel- arten, etc. 0 BEGRIFFSKLAR¨ UNG

Hardware (1)

CPU

Speicher (RAM)

Hauptplatine (Motherboard)

Schnittstellen – Legacy ports:

¡ Parallel (Drucker) ¡ Seriell (Maus, Joystick, Modem,. . . ) ¡ PS/2 (Maus, Tastatur) – USB (Maus, Tastatur, Drucker, Scanner, . . . ) – Firewire – Ethernet (LAN)

Massenspeicherger¨ate – Diskettenlaufwerk – Festplatten (IDE, SCSI) – CDROM-,CDRW-Laufwerke – Bandlaufwerke (Streamer,. . . )

Folie 3

2 0 BEGRIFFSKLAR¨ UNG

Hardware (2)

Controller (Steckkarten oder Onboard) – Floppy – IDE – SCSI

Grafikkarte

Netzwerkkarte

Soundkarte

. . .

Bildschirm, Tastatur, Zeigeger¨at (Maus)

Folie 4

Betriebssystem

ANWENDUNGEN

BETRIEBSSYSTEM

¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢

¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤

¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢

¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤

¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢

¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤

¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢

¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤

¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢

¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤

¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢

¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤

¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢

¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤

¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢

¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤

¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢

¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤ ¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢

¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤HARDWARE

¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢

¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤

¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢

¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤

¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢

¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤

¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢

¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤

¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢

¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤

¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢£¢ ¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤£¤

stellt den Anwendungen Systemressourcen zur Verfugung¨

wichtige Betriebssysteme: MsDOS/Windows, OS/2, MAC, Unix,...

Folie 5

3 1 Historische Einleitung

Dieses Kapitel versucht sich dem Thema Unix/Linux von seiner Entstehungsgeschichte her zu n¨ahern. Hier wird erkl¨art, was Unix und Linux sind, wie sie entstanden sind und warum es wichtig ist, das zu wissen.

Unix ist eines der weltweit verbreitetsten Betriebssysteme und gleichzeitig auch eines der ¨altesten. Es geht zuruc¨ k auf ein privates Forschungsprojekt einer kleinen Gruppe von Entwicklern aus dem Jahre 1969.

1.1 Eine kurze Geschichte von Unix Bereits Mitte der 60er Jahre arbeiten Bell Telephone Laboratories (Bell Labs), eine Abtei- lung von AT &T, General Electric und eine Abteilung des MIT (Massachusetts Institute of Technology) an einem gemeinsamen Betriebssystem mit Namen Multics. Als 1969 Bell Labs diese Kooperation verlassen, konzipieren Ken Thompson und Dennis Ritchie ein Betriebs- system fur¨ Bell, das 1970 von Ken Thompson (in Assembler auf einer DEC-PDP11/20) implementiert wird. Bill Kernighan, ebenfalls von Bell, tauft dieses Betriebssystem Unix (als Anspielung auf Multics). 1973 erfindet Dennis Ritchie die Programmiersprache C und Unix wird von Ritchie und Thompson in C neu geschrieben. Damit wird Unix als erstes Betriebssystem portierbar (d.h. leicht auf andere Hardware-Plattformen ub¨ ertragbar), was stark zur weiten Verbreitung des Systems beitr¨agt. Im Gegensatz zu anderen damaligen Betriebssystemen kann ein Großteil des Quellcodes unver¨andert ub¨ ernommen und fur¨ eine neue Hardware (re)compiliert werden.

Was ist Unix?

eines der weitverbreitetesten Betriebssysteme weltweit

ursprunglic¨ h in den 70er Jahren fur¨ große Rechenanlagen entwickelt

in C geschrieben

leicht portierbar; fur¨ viele Hardware-Plattformen verfugbar¨

Hauptrichtungen: AT&T, BSD

Folie 6

In den 70er Jahren verbietet ein Gerichtsurteil der in der Telephonbranche ans¨assigen Firma AT&T am Computermarkt zu konkurrieren. Daraufhin wird Unix inklusive Quellco- de fur¨ geringe Lizenzgebuhren¨ im akademischen Bereich freigegeben und findet dort weite Verbreitung. AT&T-Unix erreicht 1983 seinen H¨ohepunkt mit dem Release des System V durch die von Bell gegrundete¨ Unix Support Group (USG). Aufgrund der Ankundigung¨ von AT&T, Unix doch zu kommerzialisieren (1979), ent- schließt sich die Computer System Research Group“(CSRG) der University of California ” in Berkeley eine eigene Unix-Variante namens BSD (Berkeley Software Distribution) her- auszubringen. Die Entwicklung von BSD-Unix kulminiert 1993 mit der Ver¨offentlichung von 4.4BSD. 1.1 Eine kurze Geschichte von Unix 1 HISTORISCHE EINLEITUNG

Unix +/- (1)

flexibel, geh¨ort nicht einer Firma

gute Entwicklungsumgebung

Netzwerkf¨ahigkeit (1. TCP/IP-Implementation in Unix)

viel freie Software verfugbar¨

Open System – Application-Portability – User-Portability – System-Interoperability

Folie 7

Unix +/- (2)

unhandliche Benutzerober߬ache

wenig einheitliche Standards fur¨ Admin

PC-Welt ?!?

[...] The real reason of Unix’s popularity? Many hackersa feel that ” Unix is the Right Thing—the One True Operating System.” (Welsh, Kaufman, Running Linux”) ”

aWhat I mean by a “hacker” is a feverishly dedicated programmer, a person who enjoys exploiting computers and generally doing interesting things with them. This is in contrast to the common connotation of “hacker” as a computer wrongdoer or outlaw.

Folie 8

5 1.1 Eine kurze Geschichte von Unix 1 HISTORISCHE EINLEITUNG

System V von AT&T und 4.2BSD (1983) sind gewissermaßen die Stammv¨ater aller ak- tuellen Unix-Versionen; ihr Einfluß ist bei allen Unix-Varianten festzumachen. So hat z.B. Linux sowohl System V-artige (Programmierinterface), wie auch BSD-artige (Systemadmi- nistration) Komponenten. Da BSD-Unix ursprunglic¨ h Teile des AT&T-UnixCodes verwendet, war zum Betreiben des Systems eine AT&T-Lizenz n¨otig. Diese Konstellation fuhrt¨ Mitte der 80er Jahre zu einer Serie von gerichtlichen Klagen und Gegenklagen zwischen AT&T und der University of California. Die CSRG setzt sich daraufhin das Ziel, allen AT&T-Code aus BSD-Unix zu entfernen. Bevor diese ebenso aufwendige wie auch aufreibende Arbeit abgeschlossen ist, stellt die University of California die CSRG ein. Zuvor (1991) wird noch die zweite Versi- on eines AT&T-freien (eingeschr¨ankten) BSD-Unix unter dem Namen Net/2 ver¨offentlicht. BSD-Unix wird von BSDI (Berkeley Software Design, Inc.) kommerziell weitergefuhrt.¨ Erst im Jahr 1994, zwei Jahre nachdem AT&T sein“ Unix an Novell verkauft hat, k¨onnen die ” rechtlichen Auseinandersetzungen mit der University of California endgultig¨ beigelegt wer- den.

Eine kurze Geschichte von Unix (1)

AT&T-Unix 1965 Multics: Bell Labs, (AT&T), General Electric und ein Projekt des MIT; Bell Labs steigen aus 1969 Ken Thompson und Dennis Ritchie skizzieren Betriebssystem fur¨ Bell 1970 Thompson implementiert die gemeinsamen Ideen (Assembler); Bill Kernighan nennt das System Unix (als Wortspiel auf Multics) 1973 Ritchie erfindet C”; Unix in C” neu ” ” geschrieben (→ portierbar) 197*-8* Verbreitung im akademischen Bereich, großer Einfluß auf moderne Systeme 1983 USG: System V 1992 AT&T verkauft Unix an Novell 1995 Novell verkauft Unix an SCO

Folie 9

Im Jahr 1995 verkauft Novell sein“ mittlerweile UnixWare genanntes Unix an die San- ” ta Cruz Operations, Inc. (SCO, http://www.sco.com), die es bis zur Version 7 vertreibt. Schließlich wird SCO von Caldera Systems Inc. gekauft und in Tarantella, Inc. umbenannt. Caldera und Tarantella stellten im M¨arz 2001 UNIX 8 vor, das UnixWare 7 kompatibel ist und gleichzeitig eine vollst¨andige Linux-Implementierung und -Anwenderumgebung bietet. Im Sommer 2003 nimmt die Lizenzierungsgeschichte eine weitere interessante Wendung. Nachdem sie sich wieder in SCO umbenannt hatte, klagt jene Firma, welche die Lizenzrechte an Unix System V besitzt, IBM wegen Lizenzverletzungen. IBM habe ihr Urheberrecht verletzt, als es die von SCO fur¨ die Entwicklung des eigenen Betriebssystem AIX erworbenen Quellcodes in die Entwicklung von Linux einfliessen liess. SCO behauptet nun, dass ein guter

6 1.1 Eine kurze Geschichte von Unix 1 HISTORISCHE EINLEITUNG

Eine kurze Geschichte von Unix (2)

Berkeley-Unix 1977 CSRG (University of California) aufbauend auf AT&T-Unix eigene Distributionen: BSD-Unix 1983 4.2BSD 198* Lizenzprobleme und Rechtsstreitigkeiten mit AT&T 1991 Net/2 (AT&T-freier Code) 1993 4.4BSD (BSDI)

80er Hardwareverk¨aufer entwickeln eigene Unix-Systeme aufbauend auf System V oder BSD mit vielen Erweiterungen → Chaos...

90er Bemuh¨ ungen um einheitliche Standards, POSIX, OSF... freie Unix-Versionen: FreeBSD, Linux

Folie 10

7 1.2 Freie Software 1 HISTORISCHE EINLEITUNG

Teil der Quellcodes des Linux-Kernels von Code der SCO geh¨ort kopiert wurde, und klagte IBM auf 1 Milliarde US-Dollar; dieser Betrag wurde inzwischen auf 3 Milliarden erh¨oht. Dies hat nachhaltigen Einfluss auf die Linux-Szene, da SCO nun auch von Linux-Usern Lizenzgebuhren¨ einheben will; schliesslich benutzen diese ja den laut SCO geklauten Code. Wie man sich leicht vorstellen kann, fuhrt¨ dies zu einiger Aufregung; schliesslich wird, wie wir sp¨ater noch erkl¨aren werden, die Entwicklung von Linux nicht von einer Firma, sondern von einer grossen Gemeinschaft von Programmierern getragen, die an diesem Projekt un- entgeltlich arbeiten und ihre Produkte der Allgemeinheit unentgeltlich zug¨anglich machen. Diese sind emp¨ort ub¨ er die Unterstellungen von SCO - schliesslich wird ihnen Diebstahl geistigen Eigentums unterstellt. Wie sich diese Klage in den USA auf die Rechtslage hier auswirken wird, ist unklar - ein deutsches Gericht hat auf jeden Fall in einer einstweiligen Verfugung¨ SCO untersagt ihre Behauptungen in Deutschland ¨offentlich zu machen. Das Verfahren ist zur Zeit (September 2005) nach wie vor nicht entschieden. Eine ziemlich komplette und ¨ausserst interessante Berichterstattung zu dem rechtlichen Verlauf findet man auf http://www.groklaw.net. Ab Mitte der 80er Jahre beginnen große Hardwareproduzenten wie Sun, DEC, IBM und andere, aufgrund des Marktdrucks, ein Unix haben zu mussen¨ “, aufbauend entweder ” auf AT&T oder BSD-Unix, ihre eigenen Unix-Varianten zu entwickeln. Es entsteht eine Fulle¨ von verschiedenen Dialekten und Spielarten des Betriebssystems mit jeweils verschie- denen Erweiterungen und Kombinationen aus System V- und BSD-artigen Features. Das Resultat ist eine fast unub¨ erschaubare Vielfalt verschiedenster Produkte (siehe z.B. den Unix-Stammbaum unter http://www.levenez.com/unix), die sich alle mehr oder weniger ¨ahneln und das Bemuhen,¨ ub¨ er (bruc¨ hige) Koalitionen von Herstellern zu (Quasi-)Standards zu gelangen, die die Situation allerdings eher noch verkomplizieren (und weitere Varianten hervorbringen). Eine praktische Konsequenz dieser Vielfalt an Unix Entwicklungslinien ist, daß in fast al- len Dialekten mehrere Tools und Utilities zur Erledigung derselben Aufgabe vorhanden sind. Insgesamt ist Unix nicht ein Betriebssystem, sondern eine generische Bezeichnung f¨ur eine Familie von verwandten Betriebssystemen. Vom Standpunkt des Benutzers/Anwenders aus betrachtet, weisen die verschiedenen Unixe wenig Unterschiede auf, von Innen betrachtet– vom Standpunkt des Systemadministrators–sind die Unterschiede allerdings gravierend (sie- he dazu auch http://www.ugu.com). Seit Anfang/Mitte der 90er Jahre sind auch einige freie“ Unix-Varianten verfugbar;¨ die ” beiden wichtigsten sind FreeBSD und Linux. Wir wenden uns im n¨achsten Abschnitt dem Thema der freien Software zu.

1.2 Freie Software Die Geschichte der freien Software in der Unix-Welt beginnt um 1984; Richard Stallman, 1 ein ehemaliger MIT-Entwickler grundet¨ das GNU -Projekt (http://www.gnu.org) mit dem Ziel ein vollst¨andiges Unix-artiges Betriebssystem zu programmieren und frei verfugbar¨ zu machen. Wobei hier Software frei“ heißt, wenn sie alle vier auf Folie 13 aufgez¨ahlten Merk- ” male aufweist ( the four liberties“). ” Im Jahr 1985 wird die Free Software Foundation (FSF, http://www.fsf.org) als ge- meinnutzige¨ Organisation zur Unterstutzung¨ des GNU-Projekts gegrundet.¨ In der Folge werden vom GNU-Projekt wichtige Programme (Editoren, Textverarbeitungssysteme, Unix- typische Tools und Utilities) fur¨ Unix-Plattformen entwickelt bzw. andere freie Software vom GNU-Projekt (mit-)vertrieben (X-Window, TEX, etc.). Weiters entwickelt GNU die General Public License (GPL, http://www.gnu.org/copyleft/gpl.html), unter der freie“ Soft- ” ware vertrieben wird. Sie ist eine Lizenz to guarantee freedom, not to take it away“ und ” gibt oft Anlaß zu Mißverst¨andnissen. Die wichtigsten Bestimmungen der GPL sind auf Folie 16 zusammengefaßt. Heute wird Open Source“ oft sysnonym mit freier Software“ verwendet; eigent- ” ” lich tragen diese zwei Ausdruc¨ ke eine unterschiedliche Bedeutung (siehe zum Beispiel www.gnu.org/philosophy/free-software-for-freedom.html). Eine Ub¨ ersicht ub¨ er ver-

1Das Akronym GNU“ ist rekursiv definiert als GNU’s not Unix“. ” ”

8 1.2 Freie Software 1 HISTORISCHE EINLEITUNG

Unix History Links

http://www.bell-labs.com/history/unix/ Bell Labs

http://cm.bell-labs.com/cm/cs/who/dmr/hist.html The Evolution of the Unix Time-sharing System by Dennis M. Ritchie

http://www.levenez.com/unix/ Unix-Stammbaum

http://www.hsrl.rutgers.edu/ug/unix history.html NT und Unix

http://www.crackmonkey.org/unix.html ¥ 7 History of Unix

Folie 11

Aktuelle Unix-Versionen

Solaris 10 (Sun)

HP-UX, Tru64 (HP)

AIX (IBM)

HP-UX (HP)

UnixWare 7,OpenServer 6 (SCO)

IRIX (SGI)

FreeBSD

Linux

OpenSolaris

Folie 12

9 1.3 Kurze Geschichte von Linux 1 HISTORISCHE EINLEITUNG

schiedene andere Lizenzen, und ihre Vertr¨aglichkeit mit der GPL, findet man auf der Web- seite der FSF http://www.fsf.org/licensing/licenses/index html. Etwa 1990 ist das GNU-Projekt beinahe am Ziel angelangt; zu einem vollst¨andigen Unix- artigen Betriebssystem fehlt nur mehr ein funktionstuc¨ htiger Betriebssystemkern (fur¨ eine technische Erkl¨arung der Begriffe siehe n¨achstes Kapitel). GNU entwickelt eine Sammlung von Servern, die auf dem MACH-Betriebssystemkern aufsetzen und auf den Namen HURD getauft werden. Eine produktionsfertige Version ist aber bis 1991 nicht verfugbar¨ (kommt aber n¨achstes Jahr heraus), als der erste Linux-Kernel das Licht der Welt erblickt. Das aber ist eine andere Geschichte, die im n¨achsten Abschnitt erz¨ahlt wird.

Free Software

a matter of liberty not price“ ” free as in speech, not beer“ ” umfaßt die Freiheit, die Software

0 fur¨ jeden Zweck zu benutzen¨ 1 zu analysieren und fur¨ eigene Zwecke zu adaptieren 2 weiterzugeben 3 zu verbessern und die verbesserte Version weiterzuverbreiten Punkt 1 und 3 setzen insbesondere Zugang zum Quellcode voraus.

Folie 13

1.3 Kurze Geschichte von Linux Die Urgeschichte von Linux beginnt mit Minix, einem kleinen Unix-System fur¨ Intel- Hardware. Entwickelt von Andrew S. Tannenbaum war und ist es als Studienbetriebssy- stem gedacht, an dem Studenten die Funktionsweise von (Unix-artigen) Betriebssystemen kennenlernen k¨onnen. Aus diesem Grund ist Minix bewußt einfach gehalten und wird nur marginal weiterentwickelt. Weitere Informationen ub¨ er Minix findet man im Internet unter http://www.cs.vu.nl/pub/minix/index.html. Im Jahr 1991 installiert der finnische Informatikstudent Linus Torvalds Minix auf seinem ersten PC. Weil er vor allem mit der Hardwarenutzung von Minix unzufrieden ist–es ist die Zeit der ersten 80386er Prozessoren, die erstmals am PC Hardewareunterstutzung¨ fur¨ Multitasking bieten–beginnt er als Hobbyprojekt sein eigenes Unix-Betriebssystemkern zu programmieren; der Name Linux ist eine Kombination aus Unix und Linus’ Vornamen. Schon in einem fruhen¨ Stadium beschließt Linus nicht alleine zu arbeiten, sondern l¨adt Entwickler und Programmierer ub¨ er das Internet ein, an seinem Projekt mitzumachen (siehe Folie 18). Ein wichtiges Merkmal von Linux ist, daß der (C-)Quellcode von Anfang an freigegeben und ub¨ er das Internet verbreitet wird (http://www.kernel.org); Linux ist GPL lizenziert. Jeder Interessierte mit ausreichenden Programmierkenntnissen konnte und kann zur Weiterentwicklung von Linux beitragen; das ganze Projekt wird nach wie vor von Linus koordiniert und betreut. Dieser Umstand trug und tr¨agt zur dynamischen, schnellen Weiterentwicklung von Linux bei und ist Grundlage fur¨ seinen Erfolg und seine Verbreitung. Mittlerweile wird fast jede

10 1.3 Kurze Geschichte von Linux 1 HISTORISCHE EINLEITUNG

Eine kurze Geschichte des freien Unix

84 Grundung¨ des GNU-Projekts (R. Stallman) 85 Grundung¨ der FSF 90 HURD (Betriebssystemkern) 91 erste Linux-Version

Folie 14

Software Lizenztypen

propriet¨ar (geschutzt)¨

Shareware (kostenpflichtig)

Public Domain (kein Copyright, im Besitz der Offen¨ tlichkeit)

GNU-General Public License (copyleft) Copyright to guarantee freedom, ” not to take it away“

Folie 15

11 1.3 Kurze Geschichte von Linux 1 HISTORISCHE EINLEITUNG

General Public License

http://www.gnu.org/copyleft/gpl.html

nicht Public Domain (diese ist nicht lizenziert)

nicht Shareware (diese ist nicht frei)

ist lizenziert und urheberrechtlich geschutzt¨

darf frei benutzt und weitergegeben werden

darf verkauft werden, bleibt aber unter der GPL

Sourcecode ist inkludiert

darf ver¨andert und weitergegeben werden, aber nur wieder unter der GPL

Folie 16

12 1.4 Linux-Distributionen 1 HISTORISCHE EINLEITUNG

(Intel-basierte–und nicht nur diese) Hardware unterstutzt¨ und fur¨ neue Hardwarekompo- nenten steht meist bereits nach wenigen Wochen der entsprechende Treiber bereit. Im Unterschied zu kommerziellen Unix-Varianten, die erst nach langen Entwicklungs- und Testphasen ver¨offentlicht werden, erscheint ca. alle Monate ein neuer Linux-Kernel im Internet (Sourcecode (≈ 30 MB gezippt) auf http://www.kernel.org). Der aktuelle Kernel (Stand 10.9.2005) hat die Nummer 2.6.13. Bis zur Kernel-Version 2.4 gab es parallel zum stabilen Kernel (mit gerade zweiter Versionsnummer) einen Entwicklerkernel (mit ungerader zweiter Versionsnummer). In der 2.6er Kernelserie gab es erstmals eine vierte Versionsnummer; da im Kernel 2.6.8 ein Fehler sofort zu beheben war, erschien kurz darauf die Version 2.6.8.1. Diese Numerierung wird seitdem fortgefuhrt;¨ grosse Anderungen¨ werden in der dritten Nummer angezeigt, die vierte Nummer dient zur Verwaltung von Fehlerbereinigungen und von sicherheitsbedingten Anderungen.¨ Ursprunglic¨ h fur¨ den 80368-Prozessor entwickelt, gibt es mittlerweile fast keine Hard- ware mehr, auf der Linux prinzipiell nicht l¨auft. Es werden alle g¨angigen Prozessortypen unterstutzt:¨ SPARC (Sun), Alpha (Digital), Motorola (Macintosh, Amiga, Atari), RISC (Silicon Graphics, IBM), PalmPilot (3COM), Intel-Architektur (Intel, AMD), und auch die x86 64 Architektur. Linux unterstutzt¨ auch Symmetric Multiprocessing (SMP, d.h. mehrere Prozessoren pro System). Wir besch¨aftigen uns hier im Detail nur mit (fur¨ den normalen“ Benutzer interessantesten) 80x86-kompatiblen Systemen. Da Linux ursprung-¨ ” lich fur¨ diese Architektur entwickelt wurde, hat es hier auch den h¨ochsten Entwicklungs- stand. Trotzdem kann eine exotische Hardware (zu neu, sehr selten, zu alt) zu Schwierigkei- ten in Betrieb oder Installation fuhren.¨ Grundlegende Hardware wie Festplatte, CD-ROM, Prozessor/Speicher, Grafikkarte, Diskettenlaufwerk, etc. bereitet keine Schwierigkeiten, da die Entwicklung der Treiber mittlerweile sehr rasch vorangeht. Allerdings gibt es speziel- le Hardware (Modems und Drucker), die nicht/nie unterstutzt¨ werden, da sie speziell fur¨ Windows entwickelt wurden. Eine Liste mit all der Hardware, auf der Linux sicher l¨auft, wird seit den Anf¨angen auf dem aktuellen Stand gehalten (die Linux Hardware Compatibi- lity List; http://www.linuxdoc.org/HOWTO/Hardware-HOWTO.html). Viele Distributionen (siehe Abschnitt 1.4) fuhren¨ eigene, detailliertere Hardware Compatibility Listen.

1.4 Linux-Distributionen Linux wird ublic¨ herweise als komplettes Betriebssystem mit Tools, Utilities, und Anwen- dungssoftware in Form von sogenannten Distributionen angeboten. Diese Distributionen werden entweder von Non-Profit-Organisationen oder Firmen vertrieben und weisen un- tereinander betr¨achtliche Unterschiede auf. Linux-Distributionen k¨onnen entweder von der Homepage des Vertreibers aus dem Internet gratis heruntergeladen oder auf CDs gekauft werden. Neben dem Download ist eine Fulle¨ von Informationen, Dokumentation und Hilfe zu verschiedenen Linux-Themen im Internet zu finden. Eine kleine Auswahl wichtigster Links finden sich auf Folie 20 (siehe auch Kapitel 4). Gemeinsam ist allen Distributionen, daß sie die offiziellen Linux-Kernels und eine weite Palette von GNU-Tools verwenden; die Installation, Administration und (Standard) grafi- sche Oberfl¨ache k¨onnen allerdings sehr verschieden sein. Obwohl technisch gesehen Linux nur der Betriebssystemkern ist, wird oft das gesamte Betriebssystem, bestehend aus dem Kernel und vielen GNU-Tools und anderer freier Software, das von verschiedenen Organi- sationen und Firmen vertrieben wird, als Linux bezeichnet; Besser w¨are die Bezeichnung GNU-Linux. Zum Schluß dieses Kapitels werfen wir einen Blick auf verschiedene aktuelle Linux- Distributionen; vorweg folgende Bemerkung: Die Frage nach der besten“ Distribution ist ” ¨ahnlich sinnlos, wie die Frage nach dem besten“ Betriebssystem. Verschiedene Distributio- ” nen/Betriebssysteme haben verschiedene St¨arken und Schw¨achen und werden fur¨ verschie- dene Benutzerkreise mit verschiedenen Zielen und verschiedenen Anspruc¨ hen entwickelt. Fur¨ die (pers¨onliche) Auswahl einer Distribution werden verschiedene Kriterien ausschlaggebend sein, wie etwa: Vollst¨andigkeit/Umfang der mitgelieferten Software, Verbreitung, Sprachan- passung, eigene Ziele/Anspruc¨ he in der Verwendung, leichte Administrierbarkeit, m¨oglichst

13 1.4 Linux-Distributionen 1 HISTORISCHE EINLEITUNG

Was ist Linux?

Implementierung eines Unix-Kernels fur¨ i386-PCs,...

frei verfugbar¨ (GNU-GPL)

geschrieben haupts¨achlich von Linus Torvalds (Helsinki) ohne Verwendung von AT&T- oder BSD-Code

Entwicklung weltweit ub¨ er Internet (siehe /usr/src/linux/CREDITS)

weiterhin von Linus koordiniert Obwohl streng genommen Linux nur der Betriebssystemkern ist, wird ublic¨ herweise die ganze mitgelieferte Softwaredistribution (haupts¨achlich GNU-Software) mit Linux bezeichnet. Besser w¨are die Bezeichnung GNU-Linux

fur¨ das ganze Betriebssystem.

Folie 17

14 1.4 Linux-Distributionen 1 HISTORISCHE EINLEITUNG

Linus 1991 in comp.os.minix:

“Do you pine for the nice days of Minix-1.1, when men were men and wrote their own device drivers? Are you without a nice project and just dying to cut your teeth on an OS you can try to modify for your needs? Are you finding it frustrating when everything works on Minix? No more all-nighters to get a nifty program working? Then this post might be just for you.” [...] “As I mentioned a month ago, I’m working on a free version of a Minix-look-alike for AT-386 computers. It has finally reached the stage where it’s even usable (though may not be, depending on what you want), and I am willing to put out the sources for wider distribution. It is just version 0.02. . . but I’ve successfully run bash, gcc, gnu-make, gnu-sed, compress, etc. under it.”

Folie 18

15 1.4 Linux-Distributionen 1 HISTORISCHE EINLEITUNG

Linux Hardware

Ursprunglic¨ h fur¨ Intel, mittlerweile...

Intel (80x86)

AMD

DEC Alpha (Digital)

SPARC (Sun)

Motorola (Macintosh, Amiga, Atari)

RISC (Silicon Graphics, IBM)

PalmPilot (3Com)

Pocket-Computer, Waschmaschinen (Embedded Systems), Echtzeit-Systeme

... siehe http://www.kernel.org

Folie 19

Einige Linux Links

http://www.linux.org (Linux-Homepage)

http://www.kernel.org (Linux-Kernel)

http://linuxtoday.com/

http://www.linuxjournal.com

http://www.linuxgazette.com (Linux Zeitschrifen)

http://slashdot.org (Linux News)

http://www.linux.com (kommerzielle Linux Seite)

http://www.linuxplanet.com/linuxplanet/

http://www.freshmeat.net (Software)

Folie 20

16 1.4 Linux-Distributionen 1 HISTORISCHE EINLEITUNG

Linux-Distributionen

RedHat/Fedora

Novell/SUSE/openSUSE

Slackware (Urdistribution)

Debian (Non-Profit-Organisation)

Ubuntu

Mandriva

Gentoo

TurboLinux

Knoppix

nicht englischsprachige Distributionen

spezialisierte und Mini-Distributionen

viele, viele mehr...

Folie 21

17 1.4 Linux-Distributionen 1 HISTORISCHE EINLEITUNG

große Konfigurationsm¨oglichkeiten,.. . Informationen ub¨ er verschiedene Distributionen findet man im Internet unter http://www.linux.org/dist/index.html oder auf http://distrowatch.com/ oder im Distribution-HOWTO; hier stellen wir (klarerweise ohne Anspruch auf Vollst¨andigkeit) ei- nige der wichtigsten vor.

RedHat/Fedora (http://www.redhat.com): RedHat/Fedora ist eine der am weite- sten verbreiteten Linux-Distributionen und wendet sich sowohl an Anf¨anger als auch an Profis. RedHat hat ein eigenes Softwarepacketmanagement System (RedHat-Package- Manager, rpm) entwickelt. Das rpm-Format ist GPL lizenziert und steht so allen an- deren Distributionen zur Verfugung.¨ Fedora ist ein von RedHat gesponsortes Projekt, auf dem die verschiedenen Enterprise-Distributionen, die RedHat anbietet, aufbauen.

SUSE/openSUSE (http://www.novell.com/linux/suse): SUSE ist die fuhrende¨ Distribution in Europa, mit sehr großer Programmvielfalt. Derzeit enth¨alt die Distribu- tion mehr als 1500 Programme (auf 7 CDs/1DVD). Hat das rpm-Format schon verwen- det, als RedHat es noch nicht GPL lizenziert hatte. SuSE hat die beste Unterstutzung¨ fur¨ deutsche Tastatur und ISDN/ADSL Anbindung. Die Installation ist wahlweise gra- fisch oder konsolenbasiert, aber jedenfalls sehr einfach. 2003 wurde SuSE von Novell ub¨ ernommen. Ahnlic¨ h wie bei RedHat ist openSUSE (http://www.opensuse.org/) ein von Novell gesponsortes Gemeinschaftsprojekt.

Slackware (http://www.slackware.com): Ist die Ur-Distribution von Patrick Vol- kerding mit einfacher Installation, aber sonst schwer administrierbar, bietet dafur¨ aber (fast) unbegrenzte Konfigurationsm¨oglichkeiten. Slackware ist fur¨ technisch begeister- te und schon erfahrene Linux-Anwender geeignet, die sich nicht scheuen, Programme selbst zu kompilieren. Nur fur¨ Intel erh¨altlich.

Debian GNU/Linux (http://www.debian.org): Debian ist eine Non-Profit- Organisation, deren Distribution nur Open-Source“ Software (bei der die Quellen ” offen erh¨altlich sind) enth¨alt. Verwendet ein eigenes Packetmanagement System (atp), das ¨ahnlich einfach zu handhaben ist wie rpm. Debian-Distributionen zeichnen sich durch intensives Pre-Release-Testen aus und sind besonders verl¨aßlich.

Mandriva (http://www.mandriva.com): Diese Distribution basiert schon auf einer Distribution: RedHat oder Debian. Der Umfang wurde erweitert und die Konfiguration auf ein Optimum getrimmt. Erh¨altlich fur¨ Intel.

TurboLinux (http://www.turbolinux.com): Diese Distribution ist spezialisiert fur¨ den High-Performance-Bereich und im Clustering. Marktfuhrer¨ in Asien mit großem Wachstumspotential.

Gentoo (http://www.gentoo.org): Gentoo’s Paketmanagement (portage) beruht auf den Programmsourcen; diese werden bei der Installation erst kompiliert, was ma- schinenspezifische Optimierungen erlaubt. Die Installation ist etwas zeitaufw¨andig, aber durchaus lehrreich (es gibt kein Installationsprogramm; alles wird per Hand aus- gefuhrt).¨

Ubuntu (http://www.ubuntulinux.org): Ubuntu ist eine Distribution, die auf Debi- an basiert und auf den Desktop-Bereich zielt; Einbindung neuer Programme und gute Sprachunterstutzung¨ sind damit Ziele dieser Distribution. Es gibt inzwischen schon ein Projekt, um fur¨ Ubuntu gepackte Programmpakete auch fur¨ Debian verfugbar¨ zu machen.

Knoppix (http://www.knoppix.org/): Knoppix ist eine bootf¨ahige CD mit Hardwa- reerkennung, die ein relativ vollst¨andiges System zur Verfugung¨ stellt (die Programme auf der CD sind gepackt, und damit passen ungef¨ahr 2 GB auf die CD). Es gibt schon viele spezialisierte live“-CDs die auf Knoppix basieren. ”

18 1.4 Linux-Distributionen 1 HISTORISCHE EINLEITUNG

Neben diesen vollen“ Distributionen, die ein vollst¨andiges System mit einer Fulle¨ ” von Anwendungssoftware anbieten, gibt es etliche spezialisierte Entwickler- und Mini- Distributionen fur¨ ganz bestimmte Zwecke wie etwa Ein-Floppy-Distributionen fur¨ Notf¨alle aller Art, etc. Beispiele dafur¨ sind: ChainSaw Linux, DemoLinux, hal91 Floppy Linux, tomsrtbt, und viele andere mehr. Viele der großen Linux-Distributionen haben (nicht-englische) Sprachunterstutzung,¨ z.B. hat TurboLinux spezielle Japanisch-Unterstutzung.¨ Connectiva Linux ist eine main- ” stream“ Distribution, die in Brasilien entwickelt wird und besonders auf den spanischen und portugisischen Sprachraum zugeschnitten ist. Es gibt aber auch Distributionen, die auf diverse Sprachunterstutzungen¨ spezialisiert sind; z.B. sind Kheops Linux und Eurielec Linux franz¨osische bzw. spanische RedHat- Distributionen, KSI is the very first in post-soviet which “speaks” Rus- ” sian and Ukrainian fluently“. Ein Kuriosum am Rande: Red Flag ist die offizielle Linux-Distribution der Volksrepublik China mit spezieller Unterstutzung¨ fur¨ chinesische Schriftzeichen. (Ob Taiwan eine ¨ahnliche Distribution plant, ist nicht bekannt.)

19 2 Technische Einleitung

Jetzt geht’s also richtig los. Hier wird die Philosophie und das Design von Linux/Unix kurz erkl¨art und die Unterschiede zu (aber auch die Gemeinsamkeiten mit) anderen Betriebssystemen skizziert. Weiters werden Hardwareanforderungen und Softwarefeatures von Linux vorgestellt und der grundlegende Aufbau von Linux/Unix beschrieben.

Im generellen Unix-Design wird Machbarkeit und Benutzerfreundlichkeit oft der Vorzug gegenub¨ er Sicherheit gegeben; es ist ein sehr offenes“ und freundliches“ Betriebssystem. ” ” Diese Philosophie st¨osst heute, da Datensicherheit vor allem im Netzwerkbereich eine immer gr¨oßere Rolle spielt, an ihre Grenzen; warum, wird im historischen Kontext klar. Viele Unix- Konzepte wurden schon in der Urzeit“ des Computers und der Netzwerke entwickelt, als ” Sicherheitsfragen noch keine große Rolle spielten. Trotz der großen Weiterentwicklung auf dem Sicherheitssektor bleibt diese Offenheit“ ein Merkmal aller Unix-Varianten. ” Ein weiteres Merkmal von Unix-Systemen ist, daß (auf der Benutzerebene) kleinen, funk- tionellen Programmen, (Tools, Utilities) der Vorzug vor großen monolithischen Programm- ” kl¨otzen“ gegeben wird, was zur Flexibilit¨at und Stabilit¨at (aber auch der Wartbarkeit) des gesamten Systems beitr¨agt. Unix ist von Grund auf als volles Multiusersystem konzipiert. Das bedeutet, daß jedem Benutzer nicht nur eine eigene Arbeitsumgebung zur Verfugung¨ gestellt wird, die er an seine Bedurfnisse¨ anpassen kann; es bedeutet auch die Vergabe privater Datenbereiche und eine ganze Palette spezifischer Zugriffsrechte auf das System. Nur ein echtes Multiuser-Konzept erm¨oglicht die Verwaltung einer großen Anzahl von Benutzeraccounts mit geringem Aufwand und die gleichzeitige Verwendung des Systems durch mehrere Benutzer ub¨ er ein Netzwerk. Zus¨atzlich k¨onnen Benutzer zu Gruppen zusammengefaßt werden, fur¨ die dann gemeinsame Zugriffsrechte auf das System definiert werden k¨onnen. Unix ist auch multitaskingf¨ahig, das heisst, dass mehrere Prozesse scheinbar gleichzeitig ausgefuhrt¨ werden k¨onnen. Wir werden dieses Konzept noch sp¨ater im Detail erl¨autern; un- ter anderem ist ohne Multitaskingunterstutzung¨ eine gleichzeitige Verwendung des Systems durch mehrere Benutzer undenkbar.

2.1 Linux-Design Um die Designmerkmale von Linux besser zu verstehen, befassen wir uns kurz mit ¨alte- ren Betriebssystemen. Einfache Betriebssysteme wie etwa CP/M oder MsDOS sind kom- plett in Assembler geschrieben, wobei als Entwicklungsstrategie ein Bottom-Up-Konzept“ ” zum Einsatz kommt. Ausgehend von einer kleinen Sammlung von Systemroutinen werden im Laufe der Zeit weitere Routinen eingebaut, die innerhalb des Betriebssystems keinerlei innere Struktur aufweisen. Jeder Teil kann prinzipiell jeden anderen Teil benutzen, wo- bei hinsichtlich der Implementierung rasche und maschinenspezifische Ad-hoc-L¨osungen vor durchdachten Konzepten rangieren. So sind etwa einige Teile innerhalb von MsDOS nicht reentrant (d.h. k¨onnen sich nicht direkt oder indirekt rekursiv selbst aufrufen), was speziell die Einbindung von Multitasking-Erweiterungen sehr erschwerte. Ein weiterer großer Designmangel von MsDOS ist der nicht vorhandene Schutz der Tasks untereinander und des Betriebssystems selbst vor den Anwendungsprogrammen. Geschutz-¨ te Betriebssysteme wie Unix, Windows-NT oder OS/2 unterscheiden mindestens zwei Be- triebsarten, den privilegierten Modus (das Betriebssystem selbst) und den nichtpriveligier- ten Modus (alle Anwendungsprogramme). Bei den meisten Betriebssystemen hat sich die Bezeichnung User-Modus (nichtpriveligiert) und Kernel-Modus (privilegiert) eingeburgert.¨ Dieses Konzept ist aber nur bei entsprechender Unterstutzung¨ durch die Hardware m¨oglich, was bei Intels 8086/8088, der Ur-PC-CPU, noch nicht gegeben war; deswegen mußte MsDOS noch ohne diesen Schutz auskommen. Allerdings k¨onnen sich auch Betriebssysteme, die dieses Grunddesign aufweisen, erheb- lich voneinander unterscheiden. Die ersten gr¨oßeren Betriebssysteme waren diesbezuglic¨ h ¨ahnlich wie MsDOS aufgebaut, n¨amlich monolithisch, was nichts anderes bedeutet, als daß es im allgemeinen unm¨oglich ist, einen Teil des Systems auszuwechseln. So muß bei einer gr¨oßeren Anderung¨ an der Hardware oft der gesamte Betriebssystemkern neu compiliert 2.1 Linux-Design 2 TECHNISCHE EINLEITUNG

Unix-Philosophie

Machbarkeit und Benutzerfreundlichkeit vor Sicherheit

kleine funktionelle, leicht kombinierbare Einheiten statt großer monolithischer Programmkl¨otze” ” volles Multiuser-Konzept

volles Multitasking-System

Folie 22

Multiuser-Konzept

benutzerspezifische Vergabe von Rechten

privater Datenbereich (Homedirectory)

private Arbeitsumgebung (Desktop)

Benutzerverwaltung

gleichzeitiges Arbeiten mehrerer Benutzer (Netzwerk, at, cron)

Folie 23

21 2.2 Multitasking 2 TECHNISCHE EINLEITUNG

und/oder gelinkt werden. Dazu ben¨otigt man sowohl den Quelltext des Betriebssystems, als auch ein Entwicklungssystem (Compiler, Linker), das im kommerziellen PC-Bereich ubli-¨ cherweise nicht im Lieferumfang eines Betriebssystems enthalten sind. Zu Beginn war auch Linux monolithisch aufgebaut, was Linus Torvalds als den wahr- scheinlich gr¨oßten Fehler in der Entwicklung des Betriebssystems bezeichnete. Mittlerweile sind nur die wichtigsten Ger¨atetreiber fest an den Betriebssystemkern gebunden, andere werden modular eingebunden, sodaß sich die Problematik wesentlich entsch¨arft hat. Bei der Trennung zwischen privilegiertem und normalem Modus geht man davon aus, daß der privilegierte Teil (mit erh¨ohten Befugnissen) fehlerfrei ist und daß Ub¨ ergriffe nur durch die Anwendungsprogramme zu erwarten sind; praktischerweise wird nur ein m¨oglichst kleiner Teil des Betriebssystems mit vollen Privilegien ausgestattet. Intel CPU’s ab dem 80386 unterstutzen¨ bis zu vier unterschiedliche Privilegienstufen, was es m¨oglicht macht weitere, verfeinerte Schichtungen im Betriebsystem einzufuhren.¨ Linux verwendet aber nur die Unterteilung in User- und Kernel-Modus. Das dominierende Paradigma der Software-Erstellung—die objektorientierte Programmierung—findet auch im Betriebssystemdesign große Anwendung. Man ver- wendet Client-Server-Konzepte, bei dem Nutzer- und Anbieterobjekte (Clients und Server) miteinander durch Nachrichten kommunizieren. Eine Hauptaufgabe des Betriebssystem- kerns der im privilegiertem Modus l¨auft, ist dabei die Verteilung der Nachrichten; die Clients und Server dagegen werden im nichtprivilegiertem Modus betrieben. Ein prominen- tes Beispiel fur¨ eine objektorientierte Client-Server-Architektur bei Betriebssystemen ist der Mach-Kernel in einigen Unix-Varianten und dem MacOS und die grafische Oberfl¨ache X-Window unter Unix. Große Ausf¨uhrungssicherheit wird dadurch gewonnen, daß ein Server als Teil des Betriebssystems ausfallen kann, ohne daß zwangsweise das gesamte System absturzt¨ (Server arbeiten nicht im privilegierten Modus). Im Fehlerfall (etwa Zugriff auf unzul¨assige Speicherbereiche) wird der Server durch das Sicherheitssystem im Betriebssystemkern abgebrochen. Prinzipiell kann der Server erneut gestartet werden. Ein weiterer Aspekt ist die Ub¨ erwachung sicherheitsrelevanter Operationen. Durch Pro- tokollierung ausgew¨ahlter Nachrichten, die durch den Betriebssystemkern verteilt werden, kann eine fast beliebig genaue Ub¨ erwachung stattfinden, ohne daß dazu das Design ge¨andert werden muß. Weiters bietet eine Client-Server-Architektur die M¨oglichkeit, die Objekte an verschie- denen Stellen in einem Netzwerk zu betreiben. So kann etwa ein Kommunikationsserver auf einem Computer mit Verbindung zu externen Netzen seine Dienste allen erreichbaren Teilnehmern anbieten, wobei sich an der Bedienung und der Organisation zwischen lokalen und nichtlokalen Services nichts ¨andert (vgl. Kapitel 7).

2.2 Multitasking Moderne Betriebssysteme erlauben es, mehrere Prozesse scheinbar gleichzeitig auszufuhren.¨ Ein Prozeß ist dabei die Instanz eines Programms mit seiner eigenen Prozeßumgebung (Da- tenbereich, Prozeßberechtigungen, Umgebungsvariablen, etc.). Es ist wichtig hier zwischen Programm und Prozeß zu unterscheiden. Wird ein Programm mehrfach gestartet, erh¨alt jeder Prozeß seine eigene Prozeßumgebung. Die Prozeßumgebungen werden durch den Be- triebssystemkern verwaltet und sind sauber getrennt. Im Fall von Linux werden die Prozesse vom Betriebssystem durch eine eindeutige Zahl, die PID (Process Identifier), identifiziert. Der Eindruck, daß mehrere Prozesse gleichzeitig auf einem System mit nur einem Prozes- sor ablaufen kommt dadurch zustande, daß mehrmals innerhalb einer Sekunde ein Wechsel zwischen den Prozessen stattfindet. Ein solcher Wechsel wird Kontextwechsel genannt und verl¨auft in mehreren Schritten.

1. Der aktuell laufende Prozeß wird vom Betriebssystem angehalten. Sein Kontext wird fur¨ die sp¨atere Fortsetzung an gleicher Stelle gesichert. 2. Der n¨achste Prozeß, der ausgefuhrt¨ werden soll, wird ausgesucht. 3. Der Kontext dieses Prozesses wird wiederhergestellt, und der Prozeß setzt seine Ausfuhrung¨ fort. Aus der Sicht dieses Prozesses hat sich gegenub¨ er dem Zustand vor

22 2.2 Multitasking 2 TECHNISCHE EINLEITUNG

Grundlegendes Linux-Design

Trennung: – Kernel-Modus (privilegiert) – User-Modus (nichtprivilgiert) – ben¨otigt ≥ 80386

modularer Betriebssystemkern

geschichtetes Betriebssystem

Server-Client-Architektur (Netzwerkf¨ahigkeit) – Ausfallssicherheit – Protokollierung

Folie 24

dem Kontextwechsel nichts ereignet (naturlic¨ h ausser Anderungen,¨ die ausserhalb sei- ner Kontrolle liegen).

Grunde¨ dafur,¨ einen laufenden Prozeß zu unterbrechen sind:

Der dem Prozeß zustehende Anteil an verfugbarer¨ CPU-Zeit (Zeitscheibe) ist abge- laufen. Das Betriebssystem fuhrt¨ einen Kontextwechsel durch und zwar ohne daß der Prozeß selbst etwas tun muß oder sich dagegen wehren k¨onnte. Dieses Verfahren wird pr¨aemptive Ablaufkontrolle (preemptive scheduling) genannt und stellt damit sicher, daß kein Prozeß auf Kosten aller anderen Prozesse die alleinigen Ausfuhrungsrec¨ hte okkupieren k¨onnte.

Ein Prozeß m¨ochte auf eine Ressource zugreifen, die (derzeit) nicht vorhanden ist oder etwas Zeit zur Bereitstellung erfordert. Ein prominentes Beispiel dafur¨ sind alle Arten von Ein-/Ausgabeanweisungen.

Der Prozeß wird durch eine Intervention angehalten (dies kann auf verschiedene Wei- sen durch einen anderen anderen Prozeß oder auch durch einen Benutzer mit den entsprechenden Berechtigungen geschehen).

Ein typisches Beispiel fur¨ den zweiten Punkt ist das folgende: Ein Prozeß will einen Block einer Datei von einer Festplatte lesen. Das Betriebssystem muss (ub¨ er Treiber und Plat- tencontroller) die Daten von der Festplatte einlesen und der Prozeß ist gezwungen, auf die Daten zu warten. Tats¨achlich macht MsDOS (und auch DOS/Windows) dies so, was nichts anderes bedeutet, als daß der Prozeß in dieser Zeit D¨aumchen dreht. Etwas technischer wird dies auch aktives Warten (Active Waiting) oder Polling genannt. Bei Unix (und allen ande- ren Multitasking Betriebssystemen) wird dem aktiven Warten durch einen Kontextwechsel entgangen; auch versucht man auf anderer Ebene diesem gezwungenen Stillstand durch eine Datenanforderung zu entgehen, indem zB die Daten strategisch gunstig¨ von der Festplatte gelesen werden. Threads: Die Aufteilung von Systemaufgaben in einzelne Prozesse ist also ein Mittel, Ressourcen effektiv (ohne aktives Warten) zu organisieren. Dieselbe Strategie, auf das Niveau der Prozesse selbst angewandt, fuhrt¨ zur Idee der Threads. Ein Thread verh¨alt sich von der Organisation der Rechenzeit her genauso, wie wir bislang einen Prozeß beschrieben haben. Tats¨achlich besteht auch jeder Prozeß aus mindestens einem Thread. Threads k¨onnen aber

23 2.3 Aufbau eines Unix/Linux-Systems 2 TECHNISCHE EINLEITUNG

Multitasking

mehrere Prozesse laufen (scheinbar) gleichzeitig ab

Kontextwechsel – aktuellen Prozeß anhalten/Kontext sichern – n¨achsten Prozeß aussuchen – n¨achsten Prozeß in seinem Kontext wiederherstellen

Preemptive Scheduling (Zeitscheiben)

Active Waiting (Polling)

Folie 25 auch nur Teile eines Prozesses sein. Sie arbeiten im Kontext des Prozesses (Speicher, etc.) und dienen dazu, die Aufgaben des Prozesses in kleinere funktionelle Einheiten aufzuteilen, die dann in einer fur¨ die Gesamtperformance des Systems gunstigen¨ Weise abgewickelt werden k¨onnen.

2.3 Aufbau eines Unix/Linux-Systems Wie wir gesehen haben, besteht jedes Betriebssystem aus mehreren Komponenten, die im Folgenden am Beispiel eines Unix-Systems mit besonderer Beruc¨ ksichtigung von Linux vor- gestellt werden. Grob gesehen besteht ein Unix-Betriebssystem aus einem Betriebssystemkern, dem sog. Kernel, dem Filesystem, Systemprogrammen und eventuell weiteren Applikationen. Der Kernel ist das Herz des Betriebssystems. Er verwaltet die Dateien, die im Filesystem gespeichert sind, ist fur¨ das Scheduling und die Systemressourcenvergabe an die Prozesse zust¨andig (insbesondere die Speicherverwaltung) und bewerkstelligt die Kommunikation mit der Hardware. Der Kernel fuhrt¨ nur wenige Funktionen selbst aus, bietet aber die notwendigen Werk- zeuge an, mit deren Hilfe alle Dienste erzeugt werden k¨onnen. Auch verhindert der Kernel das direkte Ansprechen der Hardware und zwingt die Prozesse, die bereitgestellten Werkzeu- ge zu verwenden. Damit bietet der Kernel den Prozessen und Benutzern Schutz vor einander und stellt somit die grundlegende Systemsicherheit her. Die bereitgestellten Werkzeuge des Kernels k¨onnen mittels Systemaufrufen“ (System Calls) verwendet werden. ” Wichtige Aufgaben des Kernels sind Prozeßmanagement und Speichermanagement. Letz- teres kummert¨ sich um die Vergabe von Speicherbereichen und Swapbereichen (Auslageruns- gspeicher auf der Festplatte; virtueller Speicher in der MS-Welt) an Prozesse, den Kernel selbst und an den Buffer. Das Prozeßmanagement erzeugt Prozesse und implementiert das Multitasking. In der untersten Schicht enth¨alt der Kernel einen Treiber fur¨ jede Hardwarekomponente, die er unterstutzt.¨ Da die Welt voll von verschiedener Hardware ist, ist die Anzahl der einzelnen Treiber riesig. Allerdings gibt es fur¨ spezifische Hardwareger¨ate standardisierte Funktionen, die sich nur in der untersten Schicht der Implementation unterscheiden. Zum Beispiel haben alle Festplattentreiber Befehle, wie initialisiere Festplatte“, lese Sektor N“ ” ” und schreibe Sektor N“. Diese Ahnlic¨ hkeiten machen es m¨oglich, die Treiber in Klassen ”

24 2.3 Aufbau eines Unix/Linux-Systems 2 TECHNISCHE EINLEITUNG

Hauptkomponenten eines Unix-Betriebssystems

Betriebssystemkern (Kernel)

Filesystem

Systemprogramme stellen einfache Systemfunktionen zur Verfugung¨

Applikationen Programme fur¨ produktive Aufgaben

Folie 26

Aufbau eines Unix-Systems

APPLIKATIONEN

SYSTEMPROGRAMME

KERNEL

HARDWARE

Folie 27

25 2.3 Aufbau eines Unix/Linux-Systems 2 TECHNISCHE EINLEITUNG

zusammenzufassen, die alle dieselben Befehle unterstutzen.¨ Das trifft auch auf die vom Kernel zur Verfugung¨ gestellten Dienste zu, die dann zu abstrakten Klassen zusammengefaßt werden. So erhielten die verschiedenen Netzwerkprotokolle eine Programmierschnittstelle und ub¨ er die Dateisysteme wurde das VFS (Virtual Filesystem) gesetzt, sodaß sich die Befehle unabh¨angig von deren Implementation benutzen lassen. Wenn ein Prozeß auf ein Dateisystem zugreifen will, so geht der Befehl an das VFS, das ihn an den entsprechenden Dateisystemtreiber weiterleitet. Das Filesystem ist eine hierarchische, baumartige Struktur, die die Dateien und Ver- zeichnisse (auf den Festplatten) des Systems repr¨asentiert. Unter Unix gibt es einen gewis- sen Pseudostandard fur¨ die Organisation des Filesystems mit allerdings erheblichen (wenn auch oft intuitiv zu erratenden) Abweichungen. Anders als in der Windows-Welt laufen al- le Directories in einem einzigen Mutterverzeichnis, genannt Rootverzeichnis, / zusammen. Trennzeichen fur¨ Pfade sind forward Slashes“, / (statt Backslashes, \). Folie 29 zeigt die ” wichtigsten Verzeichnisse in einem Unix-System; die Details folgen in Abschnitt 3.7.

Aufgaben des Kernel

Prozeßverwaltung

Verwaltung der Systemressourcen – Speichermanagement

Kommunikation mit der Hardware – Schnittstellen (z.B. VFS) – HW-Treiber

Verwaltung des Filesystems

Grundlegende Systemsicherheit

Folie 28

Die Systemprogramme benutzen die vom Kernel bereitgestellten Werkzeuge, um die ver- schiedenen Dienste des Betriebssystems zu implementieren, wie etwa die grundlegende Netz- werkkommunikation, die grafische Benutzeroberfl¨ache etc. Die Systemprogramme und alle anderen Programme laufen ub¨ er” dem Kernel im Usermodus. ” Als Applikationen bezeichnet man Programme, die zur Ausfuhrung¨ produktiver Auf- gaben gedacht sind (oder furs¨ Spielen, wenn die Applikation nun mal ein Spiel ist), im Gegensatz zu den Systemprogrammen, die grundlegende Systemfunktionen zur Verfugung¨ stellen. Eine Textverarbeitung ist eine Applikation, Telnet ein Systemprogramm. Die Un- terscheidung ist allerdings nicht in allen F¨allen klar und im Detail nicht immer zielfuhrend.¨ Das wichtigste Unix-Systemprogramm ist die Shell. Sie ist das Benutzerinterface des Systems, also das Programm, mit dem der User Befehle an das System (den Kernel) eingibt.

26 2.3 Aufbau eines Unix/Linux-Systems 2 TECHNISCHE EINLEITUNG

Filesystem

hierarchische, baumartige Struktur

repr¨asentiert Dateien und Verzeichnisse auf der Festplatte

/

/bin /dev /usr /mnt /root /tmp ...

/sbin /var /lib /boot /home /etc

Folie 29

Linux-Systemprogramme und Applikationen

Shell (Kommandointerpreter)

Grafische Benutzeroberfl¨ache (GUI) X-Window

Textverarbeitung

Programmiersprachen

Kommunikation/Netzwerk

Systemmanagement

Online Dokumentation

Folie 30

27 2.3 Aufbau eines Unix/Linux-Systems 2 TECHNISCHE EINLEITUNG

Die Shell wird deswegen auch als Kommandointerpreter bezeichnet. Unter Unix wie auch unter Linux gibt es eine Vielzahl verschiedener Shells mit zum Teil unterschiedlicher Syntax. Manche sind ein reines Userinterface, andere bieten auch eine (einfache) Scriptsprache an, k¨onnen Variablen verwalten und bieten Flußkontrolle (if-then- else-Konstruktionen, Schleifen). Die Standard-Shell unter Unix ist die Bourne Shell (sh), unter Linux die GNU-Variante davon, die Bourne Again Shell (bash). Sie bietet ein komfortables Interface (inklusive Command-Completion) und eine umfangreiche Programmiersprache, deren Beherrschung (zumindest) fur¨ den Systemadministrator unerl¨aßlich ist. Weitere beliebte Shells sind die tcsh, die ebenfalls einen sehr komfortablen Interpreter mit einer anderen, von der C-Shell csh abgeleiteten Shell-Sprache besitzt, die Kornshell (ksh) und die Z-Shell (zsh). Die grafische Benutzeroberfl¨ache (Graphical User Interface, GUI) in der Unix-Welt heißt X-Window (ohne s”[!!]) und ist in einer der Versionen XFree86 oder Xorg im Umfang aller ” Linux-Distributionen enthalten; mehrere Window-Manager bzw. Desktopsysteme (die den Look and Feel des GUI bestimmen) stehen zur Verfugung:¨ fvwm2, KDE, GNOME,. . . . Wir besprechen das X-Window-System im Detail in Kapitel 7. Zur Textverarbeitung stehen unter Linux die Standard-Unix-Editoren wie etwa ed (zeile- norientiert), vi, vim, axe, pico (Pine-Look and Feel), joe, nedit, (x)emacs (GNU, m¨achtiger Editor fur¨ alle Zwecke) etc. zur Verfugung.¨ Fur¨ Systemadministratoren ist vi trotz seiner etwas gew¨ohnungsbedurftigen¨ Bedienung ein m¨achtiges, unverzichtbares Werkzeug, unter anderem deswegen, weil er auf (fast) allen Unix-Systemen auch im Notfall verfugbar¨ ist; wir geben in Kapitel 5 eine kleine vi-Einfuhrung.¨ Weiters steht unter Linux das professionelle Textverarbeitungssystem (eigent- A lich Typensatzsystem) TEX mit seiner leicht zu handhabenden Erweiterung LTEX (http://www.latex-project.org) zur Verfugung.¨ Seine Funktionsweise ¨ahnelt der einer Programmiersprache: ein ASCII-Quelltext wird vom Interpreter in den Textsatz verwan- delt (dvi oder pdf-format; die Ausgabe ist nicht auf diese Formate beschr¨ankt, so ist unter anderem auch Ausgabe in HTML m¨oglich). TEX eignet sich vor allem zur Darstellung kom- plizierter mathematischer Formeln und ist daher im naturwissenschaftlichen Bereich weit A A verbreitet. Dieses Skriptum ist z.B. in LTEX geschrieben; LTEXist vor allem in der Mathe- A matik zum Standardprogramm fur¨ den Typensatz geworden. Fur¨ LTEX sind auch einige WYSIWYG (What you see is what you get) Oberfl¨achen erh¨altlich (lyx). WYSIWYG Editoren bzw. Textprozessoren sind Oowriter, Kword und AbiWord die Be- standteile der Office Pakete Open Office (kommt vom fruher¨ durch SUN hergestellten Star- Office), bzw. K-Office (KDE) und Gnome-Office (Gnome) sind. Open Office umfaßt ¨aquiva- lente Programme zu allen Komponenten von MS-Office, Koffice ist noch junger¨ und etwas weniger weit entwickelt. Linux besitzt hervorragende Entwicklereigenschaften. Ein C/C++ Compiler gcc (GNU- C-Compiler) mitsamt Bibliotheken (glibc) ist Standard und zum Compilieren wichtiger Sy- stemprogramme unerl¨aßlich. Weiters sind unter Linux alle g¨angigen Programmiersprachen verfugbar¨ (Fortran (f77 and f90/95), Java, Pascal, Perl, Python, TCL, Lisp, . . . ); es gibt inzwischen auch schon freie Implementierungen des .net-Frameworks (mono). Die Netzwerkunterst¨utzung ist generell bei Unix-Systemen sehr gut und bereits in sehr tiefen Schichten im Kernel implementiert; die TCP/IP-Protokollfamilie (auf der praktisch der gesamte Datenverkehr sowohl im LAN (Local Area Network) wie auch im Internet beruht) wurde historisch (Mitte der (80er Jahre) erstmals in einem Unix-Kernel implemen- tiert. Alle g¨angigen Internet-Kommunikationstools, wie etwa Telnet, Ftp, Ssh, Talk etc. sind praktisch in allen Linux-Distributionen im Lieferumfang enthalten; Unterstutzung¨ fur¨ eine Vielzahl von Instant-Messaging-Protokollen wird auch geboten (zB durch die Programme gaim und Kopete, die zum Gnome- bzw. KDE-Desktop geh¨oren. Der Standard-Webbrowser in der Unix-Welt ist Netscape, bzw. sein Open-Source-Pendant Mozilla (Firefox). Einige der grafischen Oberfl¨achen bieten aber auch ihren eigenen File/Webbrowser (z.B. Konqueror von KDE oder Galeon von Gnome). Der Standard-Mailclient an der Konsole ist pine von der Washington University, mail und mutt sind ebenfalls weit verbreitet. Auch steht eine Vielzahl graphischer Mailclients zur Verfugung,¨ KDE stellt Kmail zur Verfugung,¨ in Gnome ist das Outlook-Pendant Evoluti-

28 2.3 Aufbau eines Unix/Linux-Systems 2 TECHNISCHE EINLEITUNG

Die Shell

Benutzerinterface zum System

Kommandointerpreter und Programmierf¨ahigkeiten

USER

SHELL

KERNEL

¦§¦§¦§¦§¦§¦§¦§¦§¦§¦§¦§¦§¦§¦§¦§¦§¦§¦§¦§¦§¦§¦§¦§¦§¦§¦

¨§¨§¨§¨§¨§¨§¨§¨§¨§¨§¨§¨§¨§¨§¨§¨§¨§¨§¨§¨§¨§¨§¨§¨§¨

¦§¦§¦§¦§¦§¦§¦§¦§¦§¦§¦§¦§¦§¦§¦§¦§¦§¦§¦§¦§¦§¦§¦§¦§¦§¦

¨§¨§¨§¨§¨§¨§¨§¨§¨§¨§¨§¨§¨§¨§¨§¨§¨§¨§¨§¨§¨§¨§¨§¨§¨

¦§¦§¦§¦§¦§¦§¦§¦§¦§¦§¦§¦§¦§¦§¦§¦§¦§¦§¦§¦§¦§¦§¦§¦§¦§¦

¨§¨§¨§¨§¨§¨§¨§¨§¨§¨§¨§¨§¨§¨§¨§¨§¨§¨§¨§¨§¨§¨§¨§¨§¨

¦§¦§¦§¦§¦§¦§¦§¦§¦§¦§¦§¦§¦§¦§¦§¦§¦§¦§¦§¦§¦§¦§¦§¦§¦§¦

¨§¨§¨§¨§¨§¨§¨§¨§¨§¨§¨§¨§¨§¨§¨§¨§¨§¨§¨§¨§¨§¨§¨§¨§¨ ¦§¦§¦§¦§¦§¦§¦§¦§¦§¦§¦§¦§¦§¦§¦§¦§¦§¦§¦§¦§¦§¦§¦§¦§¦§¦

¨§¨§¨§¨§¨§¨§¨§¨§¨§¨§¨§¨§¨§¨§¨§¨§¨§¨§¨§¨§¨§¨§¨§¨§¨HARDWARE

¦§¦§¦§¦§¦§¦§¦§¦§¦§¦§¦§¦§¦§¦§¦§¦§¦§¦§¦§¦§¦§¦§¦§¦§¦§¦

¨§¨§¨§¨§¨§¨§¨§¨§¨§¨§¨§¨§¨§¨§¨§¨§¨§¨§¨§¨§¨§¨§¨§¨§¨

¦§¦§¦§¦§¦§¦§¦§¦§¦§¦§¦§¦§¦§¦§¦§¦§¦§¦§¦§¦§¦§¦§¦§¦§¦§¦

¨§¨§¨§¨§¨§¨§¨§¨§¨§¨§¨§¨§¨§¨§¨§¨§¨§¨§¨§¨§¨§¨§¨§¨§¨

¦§¦§¦§¦§¦§¦§¦§¦§¦§¦§¦§¦§¦§¦§¦§¦§¦§¦§¦§¦§¦§¦§¦§¦§¦§¦ ¨§¨§¨§¨§¨§¨§¨§¨§¨§¨§¨§¨§¨§¨§¨§¨§¨§¨§¨§¨§¨§¨§¨§¨§¨

ublic¨ he Unix-Shells – bash (Linux default) – csh, tcsh – ksh – zsh, . . .

Folie 31

29 2.3 Aufbau eines Unix/Linux-Systems 2 TECHNISCHE EINLEITUNG

Grafische Oberfl¨ache

X-Window entwickelt am MIT (TCP/IP Server-Client-Architektur)

X-Server: XFree86, Xorg (HW-Treiber)

Window-Manager Desktop (Look and Feel) – twm – fvwm2, fvwm95 – KDE – Gnome – Windowmaker – Enlightenment

Motif

Siehe auch http://xwinman.org/

Folie 32

30 2.3 Aufbau eines Unix/Linux-Systems 2 TECHNISCHE EINLEITUNG

Textverarbeitung/Office

Unix-Standardeditoren – ed – vi (vim = Vi Improved) – pico – joe, nedit – (x)emacs (m¨achtiger GNU-Editor)

A TEX, LTEX, (naturwiss. Bereich)

Spellchecking: ispell

Postscript: Ghostview, Ghostscript

Pdf: Acrobat Reader

Office – Open Office – K-Office (KDE) – Gnome-Office

Folie 33

31 2.4 Hardwareanforderungen, Dualboot 2 TECHNISCHE EINLEITUNG

on integriert, beliebte Stand-alone-MCs sind zB Sylpheed oder Thunderbird. Weiters sind alle in der Unix-Welt verbreiteten Netzwerkdienste wie Nfs, Nis, Lpd,. . . sowie eine SMB- Protokollimplementation (Standard-MsWin Netzwerkprotokoll) namens Samba unter Linux verfugbar.¨ Schließlich ist der Apache Webserver (Marktfuhrer)¨ fixer Bestandteil aller Linux- Distributionen. Alle Linux-Distributionen stellen Programme zur Systemadministration und - konfiguration zur Verfugung.¨ Neben kleinen flexiblen Tools zur Erfullung¨ einer bestimm- ten Aufgabe gibt es auch große Programmpakete, die die Verwaltung des Gesamtsystems erm¨oglichen (Linuxconf, Yast (SuSE)).

Linux als Programmierumgebung

Shellprogrammierung – bash, sh – csh, tcsh, ksh

Programmiersprachen – C/C++ – Fortran (77, 90) – Java – Pascal – Lisp – Perl – tcl/tk – Python – PHP – Basic. . .

Folie 34

2.4 Hardwareanforderungen, Dualboot Zum Schluß dieses Kapitels wenden wir uns kurz den Hardwareanforderungen von Linux- und Dualboot-Systemen (zwei oder mehrere Betriebssysteme auf einem Computer) zu. In der ersten Version des Skriptums stand hier:

Linux stellt generell sehr niedrige Hardwareanforderungen. Prinzipiell l¨auft es bereits auf einem 80368-Prozessor mit 4MB RAM und ca. 100MB Speicherplatz auf der Festplatte. Die untere Grenze fur¨ eine durchschnittliche Workstation mit akzeptabler Performance“ ist etwa ein Pentium II mit 64MB RAM. Fur¨ Server ” (Web-Server, File-Server, Firewall/Gateway) k¨onnen aber auch noch Pentium Rechner herangezogen werden.

Heute wird man die Eckdaten fur¨ eine Workstation mit akzeptabler Performance doch et- was h¨oher ansetzen. Insbesondere die inzwischen sehr umfangreichen Desktopumgebungen verbrauchen Systemressourcen sehr rasch.

32 2.4 Hardwareanforderungen, Dualboot 2 TECHNISCHE EINLEITUNG

Linux Networking

TCP/IP-Implementation im Kernel

Basiskommunikationstools – Ping – Telnet, Ssh – Ftp, Ncftp, Sftp, Scp – Browser: Firefox, Konqueror, Galeon, ... – Mailclients: Pine, Thunderbird, Kmail, Evolution, ...

Netzwerkdienste – Nfs (Network File System) – Nis (Network Information System, yp, Sun) – Webserver: Apache – SMB: Samba

Folie 35

33 2.4 Hardwareanforderungen, Dualboot 2 TECHNISCHE EINLEITUNG

Systemmanagement

Software Packetmanagement (rpm, apt)

Benutzerverwaltung

Konfiguration von Peripherieger¨aten

Backup

Performancekontrolle

Tools: – vim – Yast (SuSe) – Linuxconf – Webmin

Folie 36

34 2.4 Hardwareanforderungen, Dualboot 2 TECHNISCHE EINLEITUNG

Probleme hat Linux mitunter bei exotischer oder brandneuer Hardware, da nicht alle Her- steller alle relevanten Spezifikationen ihrer Produkte bekanntgeben, was das Programmieren der entsprechenden Treiber erschwert. Vor dem Kauf einer solchen Hardwarekomponente empfiehlt sich jedenfalls ein Blick auf die Hardware Compatibility Liste der entsprechenden Distribution. Linux kann gemeinsam mit anderen Betriebssystemen (MsWin, OS/2,. . . ) auf einem Computer betrieben werden. Bei diesen sogenannten Dualboot-Systemen kann man das Betriebssystem beim Booten ausw¨ahlen. Weiters weist Linux gute Kompatibilit¨atseigen- schaften zur MsDOS/Windows-Welt auf. Mit einer Ausnahme (NTFS, die Unterstutzung¨ fur¨ Schreiboperationen ist nach wie vor experimentell) kann Linux alle in der Windows- Welt verbreiteten Filesysteme lesen und schreiben, sodaß im Dualboot-Betrieb Linux auf die entsprechenden Windows-Dateien zugreifen kann. Außerdem kann ein Linux-Rechner mittels des Samba-Pakets in Windows-Dom¨anen eingegliedert werden und die typischen Windows-Datei- und Druckerdienste in Anspruch nehmen bzw. anbieten (und sogar als Pri- mary Domain Controller fungieren). Darub¨ erhinaus verfugt¨ Linux ub¨ er DOS- und Windows- Emulatoren und es ist eine (allerdings Lizenzpflichtige) Linux-Version von VMware (emuliert einen virtuellen PC im PC, http://www.vmware.com) erh¨altlich.

Linux und andere OS

kann neben anderen OS (DOS, Win*, OS/2,. . . ) auf einem PC installiert werden (Dualboot-Systeme).

FAT16/32 (Win*)-Partitionen lesen und schreiben

NTFS (WinNT) Partitionen lesen (experimentell auch schreiben)

HFS (MAC) Partitionen lesen

kann mittels Samba (SMB Protokoll) in NT-Dom¨anen eingegliedert werden; sogar PDC

verfugt¨ ub¨ er DOS/Win* Emulatoren dosemu, wine

mittels Appletalk als MAC Fileserver

VMware (Lizenzpflichtig)

Folie 37

35 3 Unix/Linux benutzen 1 (Grundlagen)

Dieses Kapitel bietet eine Einfuhrung¨ in die Benutzung eines Unix/Linux-Systems. Eine gute Beherrschung dieser einfachen Bedienungselemente (die großteils unabh¨angig vom verwendeten Unix-Derivat gelten) ist Grundlage fur¨ das Verst¨andnis aller Systemadministrationst¨atigkeiten.

Wir beginnen mit einer kurzen allgemeinen Einfuhrung¨ in die Besonderheiten der Be- nutzung von Multiuser/Multitasking-Systemen geben eine Einfuhrung¨ in den Umgang mit Dateien (erzeugen, kopieren, l¨oschen), erkl¨aren die einfachsten Shell-Befehle, zeigen wie man sich im Filesystem orientiert und bewegt und machen eine kleine Tour durch ein typisches Linux-Filesystem.

3.1 Allgemeines Multiuser/Multitasking-Systeme haben eigene Gesetze. Jeder Benutzer, der das System ver- wenden will, muß sich einloggen (anmelden). Er ben¨otigt dazu ein gultiges¨ Benutzerkonto (Account); ublic¨ herweise identifiziert sich der Benutzer am System durch einen Loginnamen (Username, Benutzername) und authentifiziert sich durch ein Paßwort, die beim Login- Vorgang abgefragt werden. Loginnamen und Anfangspaßwort erh¨alt man vom Systemadmi- nistrator. Loginnamen werden ublic¨ herweise klein geschrieben und sind auf den meisten Systemen bis zu acht Zeichen lang. Gute Paßw¨orter (und ein entsprechend sorgsamer Um- gang mit ihnen) sind essentiell fur¨ die gesamte Sicherheit des Systems. Tips und Regeln zur Wahl von Paßw¨ortern und zum Umgang mit Ihnen geben wir ein bißchen sp¨ater. Ein Unix-System kennt neben den normalen“ Benutzeraccounts sogenannte privilegierte ” Accounts. Der Loginname des Systemadministrators ist root; dieser Benutzer darf wirklich ALLES. Ein typisches Unix-System gibt jedem Benutzer eine eindeutige Kennung (UID, User Identifier), die eine ganze Zahl ist. Traditionell hat root die UID 0. Die Kompeten- zen von root werden nur durch die physischen M¨oglichkeiten (auch root kann mit einem DVD-Spieler keine CDs brennen) und die—von Person zu Person verschiedenen—ethischen Grundlagen eingegrenzt: root hat Zugriff auf alle pers¨onlichen Dateien aller Benutzer ein- schließlich E-Mails, kann diese filtern, durchsuchen und ver¨andern, ohne daß es der Benutzer merkt; root kann sogar die Tastatur abh¨oren“. ” Es gibt fur¨ solche Massnahmen normalerweise keinen Grund, ausser die Systemsicherheit macht sie notwendig: Darunter fallen so wichtige T¨atigkeiten wie zum Beispiel das Filtern der E-Mail nach Viren, das Untersuchen der missbr¨auchlichen Benutzung eines Accounts, etc. Benutzer k¨onnen aber besonders sensible Daten mittels entsprechender Software (z.B. PGP) verschlusseln.¨ Weiters k¨onnen im System weitere Accounts mit (gewissen Abstufungen von) erweiterten Rechten existieren. Ein typischer (textbasierter) Loginvorgang l¨auft wie folgt ab: Nachdem die Verbindung zum Rechner besteht (entweder physisch oder ub¨ er ein Netzwerk), erwartet den Benutzer ein Login genanntes Programm. Unter dem Begrußungstext,¨ der etwa Auskunft ub¨ er die verwendete Distribution, den installierten Kernel und die Art des Logins (etwa: Welcome to ” SuSE Linux 6.2 (i386) -Kernel 2.2.13 (tty2)“) steht eine schlichte Aufforderung: hell login:“, ” wobei in diesem Fall der Hostname des Systems hell“ ist. Nun ist der richtige Zeitpunkt ” gekommen, um den Benutzernamen einzugeben. Jetzt noch das Passwort eingeben (nachdem Password:“ erschienen ist, das Eingetippte wird nicht angezeigt) und man gelangt in eine ” Shell, genannt die Login-Shell. Die Eingabeaufforderung (Prompt) kann, je nach Shell und Konfiguration, ein v¨ollig anderes Aussehen haben (meist jedoch user@hostname aktuelles ” Verzeichnis>“ also z.B. karli@hell karli>“). ” Typischerweise stellen Unix-Systeme neben dem hier dargestellten textbasierten Login auch eine grafische Benutzeranmeldung zur Verfugung.¨ Das Loginprogramm l¨auft in einem Fenster auf einer grafischen Oberfl¨ache ab; neben der Tastatur kann auch die Maus zur Bedienung herangezogen werden. Nach dem Login auf der grafischen Oberfl¨ache gelangt der User statt in eine Shell in seinen Desktop. Beim grafischen Login besteht meist die M¨oglich- keit, verschiedene Desktopvarianten mittels eines Menus¨ auszuw¨ahlen. Oft besteht auch die M¨oglichkeit, das System aus dem grafischen Login herunterzufahren; auf der Textkonsole 3.1 Allgemeines 3 BENUTZUNG 1

wird dies durch die Tastenkombination bewerkstelligt. Dieses Feature kann aber je nach Aufgabenbereich des Systems vom Administrator abgestellt werden. Linux-Systeme verfugen¨ in der Regel gleichzeitig ub¨ er mehrere (oft 6) textbasierte Ter- minals und eine grafische Oberfl¨ache. Man kann zwischen den textbasierten Konsolen mit- tels (n = 1, 2, . . . , 6) wechseln. In den grafischen Modus gelangt man mittels ; von dort zuruc¨ k auf die entsprechende Textkonsole mittels . Nach dem Arbeiten muß man sich vom System abmelden (ausloggen). Dies erfolgt mittels einem der Befehle exit, logout oder durch die Tastenkombination d, beziehungs- weise im grafischen Modus ub¨ er ein Menu.¨ Vergißt ein Benutzer, sich nach Arbeitsende auszuloggen, so hat jede Person, die physischen Zugriff auf das System erlangt, auch unein- geschr¨ankten Zugang zu den Daten des Benutzers und ub¨ erhaupt Zugang zum System im Umfang der Rechte des Benutzers. Sinngem¨aß gilt dasselbe fur¨ das Verlassen des Arbeits- platzes w¨ahrend Pausen. Auf der grafischen Oberfl¨ache besteht die M¨oglichkeit den Desktop mittels Menu¨ zu sperren, ohne auszuloggen. Beim Wiedereinstieg gelangt man nach Eingabe des Paßworts wieder in die alte Session. Ein Benutzer hat im Allgemeinen keinen Einblick oder Einfluß auf die tats¨achliche Arbeit des Systems. So kann es z.B. vorkommen, daß die Ausfuhrung¨ der gleichen T¨atigkeiten zu unterschiedlichen Zeitpunkten verschieden lange dauert. Diese Tatsache wird vor dem Hintergrund, daß mehrere Benutzer zugleich ub¨ er das Netzwerk auf dem Rechner arbeiten k¨onnen, verst¨andlich. Es k¨onnen dem Betriebssystem aber auch Aufgaben zur sp¨ateren Bearbeitung ub¨ ertragen werden. Auf jeden Fall sollte man die folgenden grundlegenden Regeln befolgen:

Benutzen von Multiuser/-tasking-Systemen

NIEMALS einfach den Strom ausschalten

NIEMALS einfach reset” druc¨ ken ” Ausschalten nur nach Herunterfahren der Maschine (Berechtigung)

Login/Anmelden bei Arbeitsbeginn mit – Username/Benutzerkonto – Passwort

Ausloggen/Abmelden beim Verlassen

Folie 38

NIEMALS den Computer einfach so“ ausschalten oder gar Reset druc¨ ken! Es k¨onnten ” auch andere Benutzer, die nicht physisch am Computer anwesend sind, das System benutzen. Daß man sich in diesem Fall den geballten Zorn dieser Leute zuzieht, ist klar. Weiters laufen eine Menge Hintergrundprozesse, die auf die Hardware zugrei- fen k¨onnen; zum Beispiel werden Daten nicht sofort auf die Festpaltte geschrieben (Multitasking). Es kann durch nicht ordnungsgem¨asses Herunterfahren durchaus pas- sieren, dass das Dateisystem inkonsistent ist; im schlimmsten Fall ist es unwiderruflich zerst¨ort. (Und wieder ist einem der Zorn der Mitbenutzer sicher.)

Wenn man sich vom Arbeitsplatz entfernt, sollte man das System vor unbefugtem Zu- griff schutzen¨ (siehe oben). Man sollte aber auch nicht durch exzessives Benutzen der

37 3.1 Allgemeines 3 BENUTZUNG 1

Sperrfunktion des Desktops den Zugang zum System unn¨otig blockieren. Weiters soll- te man im Auge behalten, dass Benutzer mit entsprechenden Rechten (root) ein Her- unterfahren des Systems erzwingen k¨onnen (und manchmal mussen,¨ um notwendige Wartungsarbeiten durchzufuhren).¨ Dieses Herunterfahren beendet dann naturlic¨ h die noch laufenden Prozesse aller Benutzer und kann so zum Verlust von Benutzerdaten fuhren.¨ Gute Systemadministratoren warnen zwar rechtzeitig vor solchen Massnah- men, es soll aber auch Benutzer geben, die auf diese Warnungen nicht zeitgerecht reagieren.

Nicht zuletzt gibt es auf vielen Multiuser-Systemen Benutzungsordnungen, die ein m¨oglichst reibungslosens Miteinander der Benutzer erm¨oglichen soll. Ist eine solche nicht vorhanden, sollte man zumindest versuchen, die offensichtlichen und oben ange- sprochenen Regeln zu beachten.

Paßw¨orter

SOLL mindestens 8 Buchstaben haben

NIEMALS gleich Namen, Login, . . .

NICHT im W¨orterbuch

NICHT leichte Modifikation eines W¨orterbuch-Worts

SOLL Groß- und Kleinbuchstaben sowie Zahlen und Sonderzeichen beinhalten (ACHTUNG auf dt/engl Tastatur)

¨andern mit: passwd

Folie 39

Gute Paßw¨orter sind essentiell fur¨ die Sicherheit des gesamten Systems; wohlgemerkt nicht nur fur¨ die Sicherheit der eigenen Daten. (Hat ein Hacker einmal Zugang zu einem Benutzeraccount, so f¨allt es ihm wesentlich leichter root-Zugang zum System zu erhal- ten...). Daher sollten bei der Wahl von Paßw¨ortern einige grunds¨atzliche Regeln befolgt werden, die auch auf Folie 39 zusammengefaßt sind. Das Passwort kann zwischen 5 und 8 Zeichen lang sein (Standard-Unix-Verschlusselungsalgorithm¨ us) oder bis zu 255 Zeichen (MD5-Verschlusselung),¨ man sollte aber (als Schutz gegen W¨orterbuchattacken, siehe un- ten) immer mindestens 8 Zeichen verwenden. Es sollte unter keinen Umst¨anden aus leicht erratbaren pers¨onlichen Daten bestehen; dazu z¨ahlen der Benutzername, Namen von Ver- wandten, Haustieren, des Freundes/der Freundin oder Zahlenkombinationen wie die eigene Telefonnummer, Matrikelnummer oder das eigene Geburtsdatum sein. W¨orter, die einen Sinn ergeben (also im W¨orterbuch stehen), sind ebenfalls zu vermeiden, da der Verschlusselungsalgorithm¨ us bekannt ist (Open Source) und so W¨orterbuch-Attacken leicht m¨oglich sind. (Dabei werden alle W¨orter in einem W¨orterbuch verschlusselt¨ und mit dem verschlusselten¨ Paßwort verglichen.) Auch Ahnlic¨ hkeiten mit bekannten W¨ortern (zum Beispiel durch Voranstellen einer Zahl) sind nicht empfehlenswert. Andererseits sollte das Paßwort leicht tippbar und einfach zu merken sein, da es keine M¨oglichkeit gibt, es wieder herauszufinden, sollte man es vergessen haben. Fazit: Vergisst man sein Paßwort, bleibt einem der Canossagang zum Systemadministrator nicht erspart; der kann zwar das alte Paßwort auch nicht herausfinden, aber er kann ohne Kenntnis des vergessenen Paßworts ein

38 3.2 Shell-Grundlagen 3 BENUTZUNG 1

neues setzen. Auch sollte das Paßwort keine Sonderzeichen enthalten, die es auf englischen Tastaturen nicht gibt, da der aktuelle Zeichensatz nicht immer funktionieren muß. Weiters sollte man Paßw¨orter nicht aufschreiben, und niemals an andere weitersagen. Eine gute Methode der Paßwortwahl ist daher die folgende: Man denkt sich einen Satz aus und nimmt Anfangsbuchstaben der einzelnen W¨orter in Groß- und Kleinschreibung und ersetzt eventuell noch einzelne Buchstaben durch ¨ahnlich lautende Sonderzeichen (siehe oben) oder Zahlen. Außerdem sollte man Paßw¨orter in unregelm¨aßigen Abst¨anden (Gr¨oßenordnung ca. drei Monate) ¨andern (und zwar nicht durch hinzufugen¨ von 1,2,3 etc.). Viele Systeme sind so konfiguriert, daß eine Paßwort¨anderung nach einer gewissen Zeit erzwungen wird. Der ent- sprechende Befehl lautet passwd. Sicherheitshalber wird das aktuelle Paßwort abgefragt (es k¨onnte ja jeder kommen,...) und das neue gleich zweimal eingegeben, um Tippfehlern vorzubeugen (da es nicht angezeigt wird). Positiv zusammengefaßt: Das Paßwort sollte min- destens 8 Zeichen lang sein, Groß-/Kleinbuchstaben, Zahlen und einfache Sonderzeichen (Satzzeichen, Bindestrich) enthalten und trotzdem einfach zu merken sein.

3.2 Shell-Grundlagen In diesem Abschnitt erkl¨aren wir die Grundlagen des Umgangs mit der Shell. Da die Shell das Interface des Benutzers zum System schlechthin ist, ist die Kenntnis der Shell schon fast die Kenntnis vom Umgang mit Unix ub¨ erhaupt. Generell ist die Philosophie von Unix (vgl. Abschnitt 3) viele einfache Shell-Befehle (Tools) zur Verfugung¨ zu stellen, die durch ge- schicktes Kombinieren zur Bew¨altigung komplexer Aufgaben herangezogen werden k¨onnen. Die folgenden Befehle und ihre Syntax funktioniert in allen Unix-Shells. Die Shell erm¨oglicht das grundlegende interaktive Benutzen des Systems; sie gibt einen Prompt aus (z.B. [roli@pablo tmp] ¥ ) und wartet auf die Eingaben des Benutzers. Diese werden mittels an die Shell ub¨ ergeben, die sie daraufhin bearbeitet und sich dann wieder mit dem Prompt zuruc¨ kmeldet. Zun¨achst sei gesagt, daß in der Unix-Shell (im Unterschied zu MsDOS bzw. einem DOS-Fenster in Win*) zwischen Groß- und Kleinschrei- bung unterschieden wird; die Unix-Shell ist case sensitive. Das grundlegende Kommando- format in Unix ist: Kommando Optionen Argumente

Im weiteren werden Kommandos mit ihren Optionen und Argumenten im Text durch Ver- wenden von typewriter-Fonts hervorgehoben. Ein einfaches Beispiel eines Kommandos, das den Inhalt des Verzeichnisses /home/fred im langen Format“ ausgibt ist: ” ls -l /home/fred

Der Name des Befehls (das Kommando; hier ls, was fur¨ List steht; analog zum DOS Kom- mando DIR) kommt also zuerst. Dann wird die Option mit einem vorangestellten -“ ange- ” geben. Eine Option ver¨andert die Funktionsweise des Kommandos (hier: liste die Dateien und gib weitere Informationen, wie Gr¨oße, Datum der letzten Anderung,¨ etc. an). Sollen mehrere Optionen angegeben werden, k¨onnen sie hinter einem -“ (ohne Abstand) ” gruppiert oder jedes separat mit einem eigenen -“ angegeben werden. Wichtig ist, daß ” zwischen -“ und der Option kein Abstand eingegeben wird. Schließlich gibt das Argument ” an, worauf sich das Kommando bezieht (hier: das Directory). Es k¨onnen mehrere Argumente getrennt durch einen Abstand eingegeben werden. Ein weiteres Beispiel (liste die Verzeichnisse /home/karin und /home/fred im langen Format“ ” und zeige versteckte Dateien an):

ls -la /home/karin /home/fred oder auch ls -l -a /home/karin /home/fred

Abh¨angig vom Befehl k¨onnen Optionen und/oder Argumente optional sein, was durch eckige Klammern angedeutet wird; in unserem Falle also: ls [-a -l] [Datei]

39 3.2 Shell-Grundlagen 3 BENUTZUNG 1

Die Unix-Shell

Knowing the Unix-Shell is knowing Unix.” ”

das essentielle Werkzeug des Benutzers

wartet mit einem Prompt auf Eingaben, z.B.

[praxis0@macondo praxis0] ¥

interpretiert Kommandos und fuhrt¨ diese aus (Kommandointerpreter)

ist case sensitive !!!!!!

ist viel mehr” als ein DOS-Fenster ”

Folie 40

Kommandosyntax

Kommando Optionen Argumente Beispiele: ls -l /home/fred

ls -l -a /home/karin /home/fred

ls -al /home/karin /home/fred allgemein ls [-a -l] [Datei]

Folie 41

40 3.2 Shell-Grundlagen 3 BENUTZUNG 1

Die Angabe einer Datei oder eines Directories (unter Unix ist ein Directory nichts anderes als eine spezielle Datei, und wir mussen¨ hier nicht dazwischen unterscheiden) als Argument ist also optional; wird nichts angegeben so wird als Default das aktuelle Directory angenommen. Weiters gibt es auch sogenannte lange Optionen, die aus ganzen W¨ortern bestehen; diese werden ublic¨ herweise mit vorangestelltem - -“ angegeben, z.B.: ” ls - -help

Word-Completion

. . . wenn das lange Tippen zu fad wird. . .

tippe die Anfangsbuchstaben des Kommandos (ohne ENTER) und druc¨ ke dann

die Shell vesucht zu vervollst¨andigen

eindeutige Vervollst¨andigung – Kommando wird vervollst¨andigt – ausfuhren¨ mit

nicht eindeutige Vervollst¨andigung – bis zum Verzweigungspunkt” vervollst¨andigt ” – Warnung und Anzeige der M¨oglichkeiten

Folie 42

Eine wichtige Eigenschaft der Shell, die das Leben erheblich erleichtert, ist die Word- Completion. Man gibt z.B. die ersten Buchstaben eines Kommandos ein und druc¨ kt dann die -Taste. Die Shell versucht Kommandos automatisch zu vervollst¨andigen. Ist diese Vervollst¨andigung eindeutig, dann wird das Kommando einfach erg¨anzt, ist sie nicht eindeutig, so wird bis zum Verzeigungspunkt“ vervollst¨andigt und es gibt eine optische ” (Blinken) oder akustische Warnung. Druc¨ kt man daraufhin nochmals die -Taste, so werden die verschiedenen M¨oglichkeiten angezeigt; ist die Liste zu lang, wird man sicher- heitshalber noch einmal gefragt ( Display all 3856 possibilities? (y or n)“). Man sieht so, ” wieviele weitere Zeichen eingegeben werden mussen,¨ um eine eindeutige Vervollst¨andigung zu erzielen. Ein analoges Verhalten zeigt die Shell auch bei der Angabe von Dateinamen (etwa als Argumente zu Kommandos). Durch effizientes Nutzen der Word-Completion kann der geubte¨ Benutzer eine sehr große Arbeitsgeschwindigkeit erreichen, in der Regel h¨oher als mit grafischer Bedienung. Außerdem kann die Word-Completion (Anzeigen der Alter- nativen) verwendet werden, wenn man etwa den genauen Namen eines Befehls oder einer Datei vergessen hat. Neuere Versionen der Bash kennen auch die programmable Completion“die es ” erm¨oglicht, auch Optionen zu vervollst¨andigen oder bei Argumenten die Auswahl auf Da- teien mit einer bestimmten Endung zu beschr¨anken. Wichtige Keyboard-Tips, die das Arbeiten in der Shell komfortabler und schneller ma- chen, sind auf Folie 43 zusammengefaßt. Wir z¨ahlen nun einige kleine und nutzlic¨ he Shell-Kommandos zu folgenden Themenbe- reichen auf

einfache Shell-Kommandos (Folie 44)

User-Information (Folie 45)

41 3.3 Vom Umgang mit Dateien 3 BENUTZUNG 1

Keyboard Tips

gibt das letzte Kommando zuruc¨ k Kommandoabbruch und Ruc¨ kkehr zur Shell exit stoppt Output auf Bildschirm und Input, merkt“ sich aber Zeichen ” gibt Input/Output wieder frei l¨oscht Zeile scrollt in der Shell zuruc¨ k scrollt in der Shell vor

Folie 43

User-Kommunikation (Folie 46)

System-Information(Folie 47) .

Wir geben meist nur den Befehl ohne Optionen bzw. Argumente an; diese k¨onnen ub¨ er die Manpages durch die Einagbe

© man Befehl online abgefragt werden. Das Thema Hilfe und Dokumentation wird systematisch in Kapitel 4 abgehandelt.

3.3 Vom Umgang mit Dateien Hier soll der grundlegende Umgang mit Dateien und Verzeichnissen vorgestellt werden. Es gibt zwar verschiedene grafische Tools (die sich ¨ahnlich dem Windows-Explorer verhalten), insbesondere ist in jeder der grossen Desktopumgebungen ein leistungsf¨ahiger Filebrowser integriert. Fur¨ den Systemadministrator ist das Bewegen auf der Konsole allerdings Pflicht- programm; da die Konsole fur¨ viele Aufgaben auch wesentlich leistungsf¨ahiger ist und die Arbeit mit ihr in der Regel rascher geht, ist es auch fur¨ den normalen“ Benutzer interessant, ” sich eingehend mit ihr auseinanderzusetzen.

Jedes Objekt in einem Unix Betriebssystem ist entweder ein Prozess oder eine Datei. Unix unterscheidet prinzipell drei Typen von Dateien: gew¨ohnliche Dateien, Directories und spezielle Files. Letztere repr¨asentieren die Hardware des Systems und werden im Abschnitt 3.7 kurz behandelt. Gew¨ohnliche Files k¨onnen entweder Textfiles, die angesehen oder aus- gedruckt werden k¨onnen, oder Code, d.h. exekutierbare (ausfuhrbare)¨ Programme sein. Di- rectories (Verzeichnisse) sind unter Unix nichts anderes als Files, die das Inhaltsverzeichnis des Directories enthalten (und die Information, wo sich die Dateien befinden). Oft gibt die Endung“ einer Datei (das ist der Teil des Dateinamens, der nach dem letzten ” Punkt kommt, hat aber unter Unix keine spezielle Bedeutung) Indizien darauf, welche Art von Daten sich dahinter verbirgt. Weiss man nicht, was in einer Datei steckt, so kann der leistungsf¨ahige Befehl file helfen file filename

42 3.3 Vom Umgang mit Dateien 3 BENUTZUNG 1

Einfache Shell-Kommandos

clear, l¨oscht Terminal echo string gibt string aus (Scripts!) wc [-lwc] file z¨ahlt die Anzahl der Zeilen, W¨orter bzw. Zeichen in file sort file sortiert die Zeilen von file alphabetisch grep Muster file gibt die Zeilen in file aus, die Muster enthalten

Folie 44

User-Information

who wer ist am System eingeloggt w wer ist am System eingeloggt und tut was finger [user] Information ub¨ er den Benutzer who am i whoami wer bin ich

Folie 45

43 3.3 Vom Umgang mit Dateien 3 BENUTZUNG 1

User-Kommunikation

talk Benutzer[@Host] beginnt interaktives Gespr¨ach“mit ” Benutzer auf Host write Benutzer[@Host] schreibt Nachricht an Benutzer wall schreibt Nachricht an alle eingeloggten Benutzer mesg [y|n] erlaubt/verbietet Nachrichten mittels wall, write, talk; root ub¨ erschreibt mesg

Folie 46

System-Information

date gibt Systemzeit und -datum aus uname [-a] gibt Systeminformation aus hostname gibt Hostname aus uptime gibt Uptime, Anzahl der Benutzer, etc. aus

Folie 47

44 3.3 Vom Umgang mit Dateien 3 BENUTZUNG 1

zeigt den Typ der Datei filename an. Dem Betriebssystem ist es vollkommen egal, was sich wirklich hinter einer Datei verbirgt; eine Datei ist immer eine Aneinanderreihung von Bytes.

Eine Folge von Datei- beziehungsweise Verzeichnisnamen getrennt durch forward Slas- ” hes“, / heißt Pfadname. Wir unterscheiden absolute und relative Pfadnamen: erstere begin- nen mit dem Root-Directory /, in dem der ganze Verzeichnisbaum zusammenl¨auft, letzte- re beginnen mit dem aktuellen Verzeichnis (Beispiele finden sich auf Folie 49). Steht am Ende eines Pfadnamens ein /, so handelt es sich dabei um ein Directory. (Traditionelle) Unix-Dateinamen k¨onnen bis zu 255 Zeichen lang sein und k¨onnen keinen, einen oder auch mehrere Punkte beinhalten (und durfen¨ auf keinen fall Slashes enthalten). Richtlinien zur Wahl von Filenamen sind auf Folie 50 zusammengestellt. Wie schon oben erw¨ahnt, gibt es unter Unix wie unter Win* Konventionen, die den Typ eines Files an den Endungen erken- nen lassen. Diese sind aber nicht durch die 8+3-Konvention beschr¨ankt (index.html vs. index.htm). Files, deren Namen mit einem Punkt beginnen sind versteckt (ublic¨ herweise Konfigurationsfiles, die man im Normalfall nicht sehen will; sie k¨onnen mit ls -a gelistet werden). Das aktuelle Verzeichnis wird mit .“ abgekurzt,¨ das ub¨ ergeordente Verzeichnis ” (Parentdirectory) mit ../“. ”

Dateitypen

gew¨ohnliche Files – Textfiles, Grafikfiles – (ausfuhrbarer)¨ Code – . . .

Verzeichnis – Inhaltsverzeichnis – Liste der Files

spezielle Files – repr¨asentieren Hardware des Systems

file filename gibt Typ von Datei filename aus

Folie 48

Um sich im Unix-Verzeichnisbaum zu bewegen, verwendet man das Kommando cd (Change Directory), das v¨ollig analog zum DOS-Aquiv¨ alent funktioniert. Hat man sich ver- ” irrt“, so zeigt einem das Kommando pwd (Present Working-Directory) das aktuelle Verzeich- nis an. Den Inhalt eines Verzeichnisses sieht man mit dem ls-Kommando. Die wichtigsten Optionen von ls sind auf Folie 51 zusammengefaßt. dir ist oft ein Alias (siehe 6.2) fur¨ ls -al, oder ub¨ erhaupt fur¨ ls. Wichtige Kommandos zum Anlegen, L¨oschen und Bewegen von Dateien und Verzeich- nissen touch, mkdir, cp, mv, rm werden auf den Folien 52 und 53 erkl¨art. Wichtig ist, daß unter Unix kein einfaches Ruc¨ kg¨angigmachen des L¨oschens m¨oglich ist. Daher ist die Option -i (interaktiv) bei rm und mv ¨außerst wichtig; sie erzwingt eine Ruc¨ kfrage vor dem L¨oschen bzw. Ub¨ erschreiben vorhandener Dateien. Ublic¨ herweise ist deshalb rm bzw. mv ein Alias auf rm -i bzw. mv -i (siehe Abschnitt 6.2). Die Unix-Shell kennt verschiedene Metacharacters; das sind Zeichen, die fur¨ die Shell eine besondere Bedeutung haben. Wichtige Metacharacters sind Wildcards (z.B. ?“, *“ ” ” []‘ [-]“), die besonders gut geeignet sind, um Dateinamen–oder Dateinamenmuster–zu ” ” finden und daher ein besonders praktisches Verwenden der oben erkl¨arten Kommandos

45 3.3 Vom Umgang mit Dateien 3 BENUTZUNG 1

Pfadnamen

absolute Pfadnamen – beginnend von / aus, z.B. – /home/fred/Texte/brief17.txt – /home/fred/Bilder/Urlaub/

relative Pfadnamen – vom aktuellen Verzeichnis aus, – z.B. von /home/fred/ aus

¡ Texte/brief17.txt ¡ Bilder/Urlaub/ – z.B. von /home/fred/Texte/ aus

¡ brief17.txt ¡ ../Bilder/Urlaub/

Folie 49

Unix-Dateinamen

bis zu 255 Zeichen lang, case sensitive

soll(t)en Inhalt beschreiben (nicht text.txt!)

sollen nur alphanumerische Zeichen enthalten

keine Leerzeichen, Shell-Metacharakter (*,?,<, >,;,&,[,],. . . )

kein +-

kein Systemkommando

versteckte Files beginnen mit . “ ” . “ aktuelles Verzeichnis ” ../ “ub¨ ergeordnetes Verzeichnis ”

Folie 50

46 3.4 Umleitungen und Pipes 3 BENUTZUNG 1

Bewegen in Filesystem

cd [directory] wechselt ins Verzeichnis directory pwd gibt das aktuelle Verzeichnis aus ls [-aldh...] [file] listet die Datei file -a (all) listet auch versteckte Dateien -l (long) langes Format (Typ, Rechte, Gr¨oße, etc.) -d (directory) Verzeichniseintrag statt Inhalt -h (human readable) (mit -l) zeigt Gr¨oße in kB, MB an --color[=when] f¨arbiges Listing, wobei when= always, never, auto

Folie 51 erm¨oglichen. *“ersetzt eine beliebig lange Folge von beliebigen Zeichen, ?“ ersetzt genau ” ” ein Zeichen. Das gilt aber nicht fur¨ versteckte Dateien; den Punkt am Anfang muß man unabh¨angig von der verwendeten Wildcard spezifizieren. Mittels eckiger Klammern kann man die Auswahl einengen. So bewirkt zum Beispiel ls [a,b,c]*, daß alle Dateien mit den (kleinen) Anfangsbuchstaben a, b, oder c gelistet werden. !“ verneint den Ausdruck in der ” Klammer; -“ steht fur¨ alle Zeichen dazwischen (z.B.: [!a-z] = kein Kleinbuchstabe). ” Um nicht nur den Inhalt von Verzeichnissen, sondern auch den der sich darin befindenden Dateien (resp. ihren Inhalt) auszugeben, bedarf es im Falle von schlichten Textfiles nur der richtigen Auswahl der nun beschriebenen Programme. cat zeigt ungebremst den gesamten Inhalt der angegebenen Datei an, was vor allem bei gr¨oßeren Texten schon an die Grenzen der menschlichen Leistungsf¨ahigkeit st¨oßt. more gliedert die hereinbrechende Informationsflut in bildschirmgroße Happen, die man mit weiterverfolgen oder mit beenden kann. less bietet einen gr¨oßeren Funktionsumfang und Komfort (ein Wortspiel auf more; kann mehr, obwohl es nach weniger klingt). Die Pfeiltasten scrollen hinauf bzw. hinun- ter, / Muster sucht (abw¨arts) nach Muster, ? Muster aufw¨arts und mit q gelangt man wieder in die Shell. Alle drei Kommandos k¨onnen auch benutzt werden, um beliebige (nicht nur Text-) Da- teien anzuzeigen, was allerdings nicht immer Sinn macht. Schließlich erw¨ahnen wir den Befehl lpr der das Ausdrucken von (Text- Postscript- und anderern) Files erlaubt, sowie die Kommandos lpq und lprm zum Verwalten von Druckauf- tr¨agen (siehe Folie 55).

3.4 Umleitungen und Pipes Hier ist nun ein guter Zeitpunk, um einen ersten Einblick in die Funktionalit¨at der Unix- Shell zu gew¨ahren, und Umleitungen (Redirects) und Pipes einzufuhren.¨ Diese sind die Ba- sisstrukturen, mit denen in der Shell mehrere Kommandos verknupft¨ werden k¨onnen, um komplexere Aufgaben zu bew¨altigen. Wenn die Shell ein Kommando ausfuhrt¨ werden automatisch drei damit asoziierte Da- teien, die sogenannten Standard File Deskriptoren ge¨offnet: diese sind der Standard Input (STDIN), der Standard Output (STDOUT) und der Standard Error (STDERR). Der Stan- dard Input ist, woher sich das Kommando seinen Input erwartet; das ist per default die

47 3.4 Umleitungen und Pipes 3 BENUTZUNG 1

Erzeugen, Kopieren und Verschieben

cp [-iR...] src1 [... srcN] destination kopieren -i (interactive) Ruc¨ kfrage vor Ub¨ erschreiben -R rekursiv -p preserve (erh¨alt Attribute) mv [-i] oldname newname umbenennen mv [-i] file1 [...fileN] new-directory verschieben mkdir name erzeugt Verzeichnis name touch name aktualisiert Datumsstempel; erstellt leere Datei, falls nicht vorhanden

Folie 52

L¨oschen

rmdir l¨oscht Verzeichnis (wenn leer!)

rm [-irf] name l¨oscht Datei name -r rekursiv (fur¨ nichtleere Verzeichnisse) -f (force) ohne Ruc¨ kfrage

ACHTUNG: KEIN EINFACHES UNDELETE!!!

Wildcards – ?. . . ersetzt genau ein beliebiges Zeichen – ∗. . . ersetzt eine Folge von beliebig vielen beliebigen Zeichen

Folie 53

48 3.4 Umleitungen und Pipes 3 BENUTZUNG 1

Textdateien anzeigen

cat filename einfaches Ausgeben

more filename etwas komfortabler – scrollen – (quit) more verlassen

less filename komfortabel – / Muster sucht vorw¨arts nach Muster – ? Muster sucht ruc¨ kw¨arts nach Muster – (quit) less verlassen

Folie 54

Drucken

lpr [-P Name] Datei druckt Datei auf Drucker Name lpq [-P Name] zeigt Druckerjobs auf Drucker Name an (inkl. Nr.) lprm [-P Name] Nr l¨oscht Druckerjob mit der Nummern Nr

Folie 55

49 3.4 Umleitungen und Pipes 3 BENUTZUNG 1

Tastatur. Der Standard Output und Error sind, whohin der Prozeß den Output und die Fehlermeldungen schreibt; per default der Bildschirm. Die Abkurzungen¨ und Symbolik der Filedeskriptoren ist auf Folie 56 dargestellt. Ein Weg die Funktionalit¨at der Shell zu erh¨ohen ist es nun, diese Defaults umzuleiten. Mit der Syntax Kommando < InFile wird der STDIN fur¨ das Kommando statt von der Tastatur aus der Datei InFile bezogen. Die Syntax Kommando > OutFile lenkt den STDOUT in die Datei OutFile um. ls -l > ls.out z.B. schreibt die Ausgabe des ls Befehls in die Datei ls.out. Mittels 2> kann der STDERR in eine Datei ungeleitet werden. In beiden F¨allen bewirkt >> OutFile statt > OutFile, daß der Output an das Ende von OutFile angeh¨angt wird; sonst wird die eventuell existierende Datei OutFile ub¨ erschrieben. Es k¨onnen auch STDOUT und STDERR in dieselbe Datei umgeleitet werden (kombinierter Redirect); die entsprechende Syntax ist Kommando > OutFile 2>&1; Achtung, die Reihenfolge ist wichtig! (warum?). Die Syntax fur¨ Umleitungen ist auf Folie 57 zusammengefaßt, wo man auch die Antwort zu dem vorangegangenen warum findet.

Standard File Descriptoren

bei Prozeßstart angelegte Dateien

Standard Input STDIN < 0 Tastatur Standard Output STDOUT > 1 Bildsch. Standard Error STDERR 2 > 2 Bildsch.

Folie 56

Noch gr¨oßere Flexibilit¨at erreicht man durch das Umleiten des Standardoutputs eines Kommandos in den Standardinput eines weiteren Kommandos; diese Struktur wird Pipe genannt. So k¨onnen zwei (oder mehrere) Kommandos hintereinander auszufuhren,¨ wobei der Output des ersten Kommandos in das zweite Programm gefuttert¨ “ wird. Die Syntax ” ist: Kommando1 | Kommando2 | Kommando3 | ... Ein wichtiges Beispiel ist das komfortable Listen langer Verzeichnisse: ls -l /etc | less Hier wird der Output des ls-Kommandos statt auf den Bildschirm in das less-Kommando umgeleitet; dieses gibt das formatierte Listing auf dem Bildschirm aus und erm¨oglicht u.a. ein interaktives Suchen nach bestimmten Dateien. Um weitere sinnvolle Beispiele zu konstruieren verwenden wir die Kommandos wc und grep aus dem vorigen Abschnitt.

ls -l /tmp | grep roland | less zeigt ein Listing aller Files mit Besitzer roland in /tmp.

ls -l | wc -l z¨ahlt die Files im aktuellen Directory.

50 3.4 Umleitungen und Pipes 3 BENUTZUNG 1

Umleitungen

command < in.file > out.file 2> error.file

command < in.file >> append.out 2>> append.err

command > out.file 2>&1 zuerst STDOUT nach out.file, dann STDERR nach STDOUT

NICHT command 2>&1 > out.file zuerst STDERR nach STDOUT=Bildsch., dann STDOUT nach out.file

Folie 57

Pipes

eine Folge von Kommandos getrennt durch |“ ” STDOUT des vorigen Kommandos als STDIN des n¨achsten

Syntax Kommando 1 | Kommando 2 | ...| KommandoN

Beispiele – ls -l|less – ls -l|grep ’Nov 4’|wc -l

Folie 58

51 3.5 Links 3 BENUTZUNG 1

ls -l | grep ’Nov 4’| wc -l z¨ahlt die Files im aktuellen Directory, die zuletzt am 4. November ver¨andert wurden.

3.5 Links Oft ist es sinnvoll, ein und dieselbe Datei unter zwei oder mehreren Namen an verschiedenen Stellen im Filesystem ansprechen zu k¨onnen; diese Ub¨ erlegung fuhrt¨ uns zum Konzept von Links. Links sind Dummy-Files“, die nichts anderes tun, als auf das richtige File zu zeigen ” und werden mit dem Kommando ln angelegt; die Synatx ist auf Folie 59 erkl¨art. Wichtig ist die Unterscheidung in harte und symbolische Links. Jedes File ist in Wirk- ” lichkeit“ ein harter Link. Es kann aber mehrere (harte) Links geben, die auf dasselbe File zeigen; ein File ist dann gel¨oscht, wenn der letzte harte Link auf das File gel¨oscht ist. Harte links sind hart“ in der logischen Struktur des Filesystems kodiert und k¨onnen daher nur ” innerhalb einer Partition verwendet werden (vgl. Abschnitt 3.7). Symbolische (Soft-, Sym-) Links k¨onnen ub¨ er die Grenze von Partitionen hinausgehen. Wird ein symbolischer Link gel¨oscht, so ist nur der Link verschwunden, nicht das File (auch wenn alle Symlinks auf ein bestimmtes File gel¨oscht werden, gibt es das File noch immer). Wird hingegen das File selbst gel¨oscht (d.h. der letzte harte Link der darauf zeigt), bleibt der Symlink als Zeiger erhalten, der allerdings ins Leere zeigt, also unbrauchbar geworden ist; Man spricht von broken“ oder dangling“ Links. ” ”

Links

Files unter mehreren Namen im Filesystem ln [-s] Quellfile Linkname

harte Links nur innerhalb Partition (im Filesystem kodiert)

symbolische Links (-s) partitionenub¨ ergreifend

Link l¨oschen: rm Linkname

File gel¨oscht wenn letzte harte Link gel¨oscht

dangling Links

Folie 59

3.6 Dateiberechtigungen Unter Unix hat jede Datei (und somit auch jedes Verzeichnis) im Dateisystem einen be- stimmten Besitzer und eine bestimmte Gruppe. Das erm¨oglicht eine Vergabe von spezifizier- ten Dateiberechtigungen an verschiedene Benutzer des Systems. Der Unix-Standard ist ein dreistufiges Berechtigungsystem, das zwischen dem Besitzer, der Gruppe und allen anderen unterscheidet, die jeweils drei Rechte haben k¨onnen: Lesen, Schreiben, Ausf¨uhren (r,w,x). Die Bedeutung dieser Rechte fur¨ Dateien ist evident, fur¨ Verzeichnisse gilt das folgende: Ausfuhrb¨ erechtigung bedeutet, daß man ins Verzeichnis wechseln darf. Leseberechtigung steht fur¨ das Ansehen des Verzeichnisinhalts, i.e., Listen des Directories. Hat man nur die Berechtigung x auf einem Directory, kann man nur auf Dateien zugreifen, deren Namen man kennt (und die lesbar sind!; Listings des Verzeichnisses sind verboten). Schreibberech- tigung schließlich ist das Recht, weitere Dateien im Verzeichnis zu erstellen oder zu entfernen

52 3.6 Dateiberechtigungen 3 BENUTZUNG 1

(komplett entleeren kann man sie auch wenn man nur auf der Datei Schreibrecht hat). Die Berechtigungen werden bei jedem Zugriff auf die Datei gepruft,¨ gleichgultig,¨ ob der Benut- zer direkt auf die Datei zugreifen will oder ub¨ er eine Applikation. Ansehen kann man diese Informationen mit dem alten Bekannten ls -l, ver¨andern kann sie jeweils der Besitzer mit chmod, chown und chgrp. Die Syntax dieser Befehle wird auf Folie 62 erkl¨art. Neben der symbolischen Darstellung von Dateiberechtigungen (rwx) fur¨ die drei Benut- zergruppen (Besitzer (User), Gruppenbesitzer (Group), andere (Others)=(ugo)) wird auch die oktale Darstellung verwendet. Fur¨ die drei Benutzergruppen wird die Folge (rwx) jeweils als Bin¨arzahl aufgefasst (z.B. 101 fur¨ r-x); das ergibt im okatlen Zahlensystem jeweils eine einstellige Zahl (hier: 1 × 4 + 0 × 2 + 1 × 1 = 5). Eine Folge von drei oktalen Ziffern gibt also die gesamte Dateiberechtigng wieder; z.B. steht 765 fur¨ 7 fur¨ den Besitzer, 6 fur¨ den Gruppenbesitzer und 5 fur¨ andere Benutzer. Das bedeutet also 7=111=rwx fur¨ den Besit- zer, 6=110=rw- fur¨ den Gruppenbesitzer und 5=101=r-x fur¨ alle anderen; also insgesamt: 765=rwxrw-r-x. Weitere Beispiel befinden sich auf Folie 63. Die Berechtigungen neu erstellter Dateien werden ub¨ er das umask-Kommando geregelt, dessen Syntax auf Folie 64 erkl¨art ist. Die umask ist auf einen Modus gesetzt (Standard: 002), der von der vollen Berechtigung 666 bei Dateien und 777 bei Verzeichnissen subtrahiert wird. Also haben in diesem Fall neu erstellte Dateien die Berechtigung 664=rw-rw-r--.

Berechtigungen © Anzeigen: ls -l -rw-r--r-- 1 martin cc 55 Nov 3 14:43 hello.c

Bedeutung: – 1. Feld: Zugriffsrechte – 2. Feld: Linkcounter – 3. Feld: Besitzer – 4. Feld: Gruppe – 5. Feld: Gr¨oße

Folie 60

53 3.6 Dateiberechtigungen 3 BENUTZUNG 1

Berechtigungen (symbolisch)

Aufschlusselung¨ des 1. Feldes ( -rw-r--r-- ): – 1. Bit: Spezifizierung des Datei-Typs

¡ - Datei

¡ d Verzeichnis ¡ l Symbolischer Link

¡ c oder b spezielles File – jeweils drei Bits fur¨ die Rechte von Besitzer(u), Gruppe(g) und anderen(o)

¡ r Lesen (bei Verzeichnissen: Listen) ¡ w Schreiben (Dateien im Verz. erstellen/ub¨ erschreiben/L¨oschen) ¡ x Ausfuhren¨ (Hineinwechseln)

Folie 61

54 3.6 Dateiberechtigungen 3 BENUTZUNG 1

Rechte ver¨andern (Symbolisch)

chmod modus datei Modus zusammengesetzt aus:

u Besitzer

g Gruppe

o Andere

a Alle

+ Rechte setzen

- Rechte entfernen

= Rechte spezifiziert setzen

r Lesen

w Schreiben

x Ausfuhren¨ Beispiel: chmod ug+rw hello.c

Folie 62

Berechtigungen (oktal)

Besitzer Gruppe Andere

symbolisch rwx rw- r-x bin¨ar 111 110 101 oktal 7 6 5

Beispiel: chmod 644 bericht.txt entspricht: chmod u=rw bericht.txt chmod go=r bericht.txt

Folie 63

55 3.7 Tour durchs Filesystem 3 BENUTZUNG 1

chown, chgrp, umask

chown [-R] ¨andert (rekursiv) Besitzer (und owner[.group] files Gruppenbesitzer) der Dateien files chgrp [-R] group files ¨andert (rekursiv) Gruppenbesitzer umask zeigt die aktuelle umask an umask modus ¨andert umask auf modus

Folie 64

3.7 Tour durchs Filesystem In diesem Abschnitt unternehmen wir einen kleinen Rundgang durch das Filesystem eines typischen“ Linux-Systems. Im Großen und Ganzen folgen die meisten Distributionen dem ” unter http://www.pathname.com/fhs festgelegten Filesystemstandard, der sich eng an die entsprechenden Unix-Konventionen anlehnt. Die Abweichungen auf individuellen Systemen und von Distribution zu Distribution sind allerdings teilweise doch relativ groß. Hier geht es darum, einen ersten Ub¨ erblick zu bekommen, sodaß diese Unterschiede nicht so ins Gewicht fallen. Das Filesystem kann aus einer oder mehreren Partitionen (logische Einheit auf der Fest- platte, die wie eine eigene Platte angesprochen werden kann; fur¨ Details siehe Kapitel 8) bestehen. Gibt es nur eine Partition, so ist dies die root-Partition, d.h. dort, wo das /- Verzeichnis liegt, in dem alle anderen Verzeichnisse zusammenlaufen. Es gibt aber gute Grunde,¨ gewisse Teile des Filesystems (i.e. bestimmte Verzeichnisse) auf eigenen Partitionen anzulegen. Diese Partitionen werden dann an den entsprechenden Stellen in die /-Partition gemountet (d.h. angeh¨angt“, Details in Teil 2). Praktisch sieht das so aus, daß auf der ” /-Partition ein leeres Verzeichnis angelegt wird (z.B. /home). In dieses Mountpoint genannte Directory wird dann beim Systemstart dann die entsprechende Partition, die in diesem Fall ublic¨ herweise die Homedirectories der Benutzer enth¨alt, gemountet. Wir diskutieren im De- tail, welche Teile des Filesystems auf einer eigenen Partition angelegt werden k¨onnen und fur¨ welche dies nicht ratsam ist. Oft gibt es auch weitere Directories in einem Linux-System, die wir auf Folie 72 disku- tieren. Weitere wichtige Befehle (neben cd, ls) mit denen man sich einen guten Ub¨ erblick im Dateisystem verschaffen kann sind du, locate, which und das m¨achtige Kommando find. Wir stellen Syntax und wichtigste Optionen dieser Befehle auf Folien 73, 74 zusammen.

56 3.7 Tour durchs Filesystem 3 BENUTZUNG 1

Ub¨ erblick

/

/bin /dev /usr /mnt /root /tmp ...

/sbin /var /lib /boot /home /etc

Standards unter http://www.pathname.com/fhs

Folie 65

/

/bin /dev /usr /mnt /root /tmp ...

       

                

       

                

       

                

       

                

       

                

               

        /sbin /var /lib /boot /home /etc

       

                

       

                

/bin wichtige Systemprogramme

/sbin Systemprogramme fur¨ root (static binaries)

/lib C-Bibliotheken auf der /-Partition (sollen immer vorhanden sein)

Folie 66

57 3.7 Tour durchs Filesystem 3 BENUTZUNG 1

/

       

       

       

       

       

       

       

       

       

               

/bin        /dev /usr /mnt /root /tmp ...

       

       

       

       

                 

                

                 

                

                 

                

                 

                

                 

                

                         

/sbin /var /lib         /boot /home /etc

                 

                

                 

                

/boot Kernel (u.U. eigene Partition)

/dev spezielle Files, repr¨asentieren Hardware

/etc systemweite Konfigurationsfiles keine eigenen Partitionen

Folie 67

/

       

       

       

       

       

       

       

       

       

       

       

               

/bin /dev /usr /mnt        /root /tmp ...

       

       

       

       

        

       

        

       

        

       

        

       

        

                

/sbin /var /lib /boot        /home /etc

        

       

                

/home beinhaltet Homeverzeichnisse der Benutzer oft eigene Partition (Sicherheit, Neuinstallation)

/root Homeverzeichnis von root keine eigene Partition

Folie 68

58

3.7 Tour durchs Filesystem 3 BENUTZUNG 1





















 

/usr 

 

/bin /doc /local /sbin /info

/man /share /lib /src

/usr enth¨alt alle nicht essentiellen Systemprogramme

oft eigene Partition, wichtige Unterverzeichnisse: – /usr/X11 X-Window – /usr/local lokale verwendete Dateien – /usr/(share/)doc Dokumentation – /usr/info Online Dokumantationssystem – /usr/man Manpages – /usr/share Architekturunabh¨angige Dateien – /usr/src Quellcode

Folie 69

/

/bin /dev /usr /root /proc

/lib /sbin /mnt /home

/mnt enth¨alt Mountpoints fur¨ Floppy, CD-Rom ,. . . keine eigene Patition

/proc virtuelles Filesystem (Kernel- und Prozeßinformation)

Folie 70

59 3.7 Tour durchs Filesystem 3 BENUTZUNG 1

/

! ! ! ! ! ! ! ! !

! ! ! ! ! ! ! ! !

! ! ! ! ! ! ! ! !

! ! ! ! ! ! ! ! !

! ! ! ! ! ! ! ! !

! ! ! ! ! ! ! ! !

/bin /dev /usr /mnt /root ! ! ! ! ! ! ! ! !/tmp ...

! ! ! ! ! ! ! ! !

! ! ! ! ! ! ! ! !

       

       

       

       

       

       

/sbin /var /lib /boot /home /etc

       

       

/tmp tempor¨are Dateien oft eigene Partiton (Defragmentierung)

/var variable Gr¨oße, eigene Partition auf Servern – /var/log/ Systemlogfiles – /var/spool/ Spoolfiles (Drucker, Mail,. . . )

Folie 71

Weitere Verzeichnisse

/opt oft von großen Programmpaketen verwendet

/disks, /media alternativer Mountpoint fur¨ CD-Rom etc.

/usr/src/linux Kernel-Quellcode

lost+found auf jeder Partition vorhanden, kaputte Files nach Festplattencheck

Folie 72

60 3.7 Tour durchs Filesystem 3 BENUTZUNG 1

du, locate, which

du [-hsm] Files (disk usage) zeigt ben¨otigten Plattenplatz von Files an -s (summarize) Zusammenfassen fur¨ Verzeichnisse -h (human readable) netter Output -m (mega) gibt Gr¨oße in MB an locate [dir] string durchsucht Filenamen nach string ab Verzeichnis dir which command sucht Pfad des Kommandos

Folie 73

find

find [path...] [expression]

m¨achtiges Suchwerkzeug

Sucht nach expression im Pfad path; expression kann Optionen enthalten

einige Optionen – -name expression sucht nach Filenamen – -cmin n File zuletzt ver¨andert vor n Minuten – -cnewer file2 File neuer als file2 – vieles, vieles mehr . . .

Beispiel: find . -name *.txt

Folie 74

61 4 Dokumentation

Linux Dokumentation gibt es wie Sand am Meer. Tats¨achlich ist die Verfugba¨ rkeit von viel und viel gutem Dokumentationsmaterial (Online und Offline) auf verschiedenen technischen Niveaus eine der großen St¨arken von Linux. Dieses kurze Kapitel gibt einen Ub¨ erblick ¨uber die verschiedenen Informationsquellen und erkl¨art, wo was zu finden ist.

Um etwas Ordnung in die Fulle¨ von vorhandenen Dokumentationsquellen zu bringen, unterscheiden wir zwischen lokaler Online-Dokumentation, Dokumentation im Internet und Offline-Dokumentation also Buc¨ her etc. Drei gute allgemeine Buc¨ her ub¨ er Linux/Unix-Systemadministration sind in der Einleitung erw¨ahnt. Darub¨ erhinaus gibt es viele weitere allgemeine“ und ” auch Buc¨ her zu speziell(er)en Themen, wie etwa Linux-Netzwerkadministration, Webserver-Administration unter Linux oder Treiberprogrammierung fur¨ Linux etc. Ei- ne sehr umfangreiche Liste von Linux Buc¨ hern findet sich auf der Linux Ho- mepage unter http://www.linux.org/books/index.html. Klarerweise sind die mei- sten Buc¨ her in englischer Sprache erschienen; eine gute Beherrschung des Engli- schen ist aus naheliegenden Grunden¨ gerade im EDV-Bereich sehr wichtig. Eine Ub¨ ersicht ub¨ er deutsche Linux-Buc¨ her gibt es z.B. auf der SuSE Homepage unter http://www.suse.de/de/products/books/linux/index.html. Als wichtigster Teil der lokalen Online-Dokumentation sind die Manpages (Manual Pa- ges) zu nennen. Zu jedem Unix Befehl gibt es eine eigene Manpage, die eine kurze Beschrei- bung der Funktion, der Syntax und aller Optionen enth¨alt und auf jedem Unix-System installiert ist (siehe auch Folie 76). Manpages sind unverzichtbar in der t¨aglichen Arbeit mit Unix-Befehlen und werden mit man befehl aufgerufen. Vielen Anf¨angern f¨allt wegen der sehr knappen und technischen Sprache der Umgang mit den Manpages schwer; nichtsdesto- trotz Will man in der Unix Shell eine bestimmte Aufgabe erledigen, hat aber den ad¨aquaten Befehl vergessen, so bietet man -k begriff resp. apropos begriff die M¨oglichkeit, die Manpages nach dem Begriff zu durchsuchen. Eine neuere Alternative zu Manpages bieten die Info-Seiten. Sie unterscheiden sich haupts¨achlich in der emacs-artigen Bedienung und der M¨oglichkeit, ub¨ er Hyperlinks di- rekt zu verwandten Seiten zu wechseln. Findet man mit man oder info eine Option nicht, von der man aber glaubt, daß sie vom Kommando unterstutzt¨ wird, hilft oft ein an das Kommando angeh¨angtes --help, oder -h; z.B. ls --help. Eine weitere lokale Informationsquelle ist die bei den meisten gr¨oßeren Programmpaketen inkludierte Dokumentation, die auf den meisten Systemen unter /usr/(share/)doc/ zu finden ist. Bei den meisten Paketen ist eine betr¨achtliche Informationsfulle¨ vorhanden, die von Hilfe bei der Installation bis hin zu einer Bedienungsdokumentation oder Verweisen auf die Homepage der Software alles enth¨alt. Neben den bisher genannten speziellen Hilfetexten gibt es eine Reihe von allgemeine- ren Texten, die breitere Themen in einem weiteren Rahmen behandeln; n¨amlich die FAQs (Frequently Asked Questions), und die HOWTOs (How To...). Die FAQs sind eine Sammlung von h¨aufig gestellten Fragen mit den jeweiligen Antworten. Die Themenbereiche sind recht allgemein und reichen von Was ist Linux?“ bis etwa zu Wie ” ” kann ich gel¨oschte Files restaurieren?“. Hat man sich also schon einmal gefragt, wie dieses oder jenes funktioniert, ist es ziemlich wahrscheinlich, hier eine L¨osung fur¨ das Problem zu finden. Die HOWTOs bieten Erkl¨arungen zur Bewerkstelligung gr¨oßerer Aufgaben, wie etwa die Installation eines Web- oder Mailservers. Auch der technische Hintergrund wird ausfuhrlic¨ h er¨ortert. HOWTOs sind unter anderem zu folgenden Themenbereichen vorhanden: Netz- werk, Hardware, Systemadministration, Programmieren, . . . FAQs und HOWTOs sind oft lokal auf Linux-Systemen installiert und dann meist im Text- oder Html-Format unter /usr/(share/)doc/FAQ resp. /usr/(share/)doc/HOWTO zu finden. Es empfiehlt sich aber jedenfalls im Internet nach der neuesten Version zu suchen. Diese befindet sich immer auf der ersten Adresse“ fur¨ Linux Dokumentation, der Homepage ” 4 DOKUMENTATION

Dokumentation

Online lokal – Manpages (Online-Kommandobeschreibung, lokal) – Infoseiten (Hypertext-Kommandobeschreibung, lokal) – Befehl --help (Hilfe fur¨ Befehl) – Programmdokumentation (/usr/(share/)doc/programm) – FAQs (Frequently asked Questions) (/usr/(share/)doc/FAQ) – HOWTOs (/usr/(share/)doc/HOWTO)

Internet – Linux Documentation Project (LDP, www.ldp.at) – Usenet (z.B. at.linux) , Email – Distributionssupport

Folie 75

Manpages

man befehl

in /usr/man

Inhalt – Name: Name und einzeilige Beschreibung – Synopsis: Kommandosyntax – Description: Erkl¨arung der Funktionsweise – Files: Mit dem Kommando assoziierte Dateien – Bugs: Bekannte Bugs – See also: Verwandte Befehle

Folie 76

63 4 DOKUMENTATION

des Linux Documentation Projects (LDP) unter http://www.tldp.org. Deutsche Ub¨ erset- zungen (die allerdings nicht immer sehr empfehlenswert sind) findet man z.B. bei SuSE unter http://www.suse.de/de/support/howto/index.html. Das Internet und hier besonders das World Wide Web bieten eine riesige Flut an Infor- mationen an und so verwundert es nicht, daß es auch die bei weitem gr¨oßte Quelle an Linux- Hilfestellungen darstellt. Von Artikeln zu besonderer Hardware ub¨ er Anleitungen zur Pro- grammierung unter Unix bis hin zu detaillierten Erkl¨arungen zur inneren Funktionsweise ei- nes Unix-Systems findet man alles, was das Herz begehrt. Ein guter Startpunkt ist die (schon erw¨ahnte) Homepage des Linux Documentation Project (LDP, http://www.tldp.org). Dort befinden sich die neuesten Versionen der Manpages, HOWTOs, FAQs und vieles mehr. Be- sonders hervorzuheben sind noch die Guides, lange, buchartige Dokumente zu großen The- menbereichen, z.B. Linux Kernel Internals“, The Linux Network Administrator’s Guide, ” ” Second Edition“, etc. Fur¨ ganz spezifische Probleme, kann es oft hifreich sein, mit einer Suchmaschine die entsprechenden Begriffe im Internet zu suchen. Weitere Links befinden sich auf Folie 79.

FAQs

Frequently Asked Questions mit Antworten

lokal: /usr/(share/)doc/FAQ

www: http://www.tldp.org

Format: ACSII und html, . . .

Antworten auf Fragen wie – Was ist Linux? – Kann ich Win* Programme unter Linux verwenden? – Java on Linux FAQ – . . .

Folie 77

Ein anderer geeigneter Internetdienst ist das Usenet. In Newsgroups kann man Fragen zu seinen Problemen stellen (allerdings sollte man das erst tun, nachdem man auf den bisherigen Wegen keine L¨osung gefunden hat) und bekommt meist innerhalb kurzester¨ Zeit brauchbare Ratschl¨age. Ein guter Startpunkt ist hier die Newsgroup at.linux. Weiters gibt es unz¨ahlige Mailinglisten zum Thema Linux. Es gibt Entwicklerlisten, Listen zu vielen Softwarepaketen und Mailinglisten zu verschiedenen Distributionen. Last but not least sei der Support mancher Distributionen genannt, den man ub¨ er www, per Telefon oder Mail in Anspruch nehmen kann und den in der ub¨ erwiegenden Zahl der F¨alle fachlich versierte Teams betreuen.

64 4 DOKUMENTATION

HOWTOs

behandeln detailliert Aspekte der Konfiguration oder Benutzung

lokal: /usr/(share/)doc/HOWTO

www: http://www.tldp.org

Format: ASCII, html, pdf, . . .

z.B.: – PCMCIA HOWTO – DOS-Win-to-Linux-HOWTO – Infrared-HOWTO

mini-HOWTOs – MP3-CD-Burning – Linux+DOS+Win95+OS2

Folie 78

Internet

Linux Documentation Project http://www.tldp.org, http://www.ldp.at

http://www.linux.org

http://lwn.net/

http://www.kernel.org, http://www.kernel.at

news://at.linux

news://comp.os.linux.* (14 Gruppen, z.B. misc, Hardware,. . . ; viel Traffic)

diverse Mailinglisten (Kernel, Security, Distributionen. . . )

Folie 79

65 5 Editoren

Dieses Kapitel bietet einen kleinen Einstieg in das fundamental wichtige Thema Editieren“. Wir ” stellen einige der unter Linux verfugba¨ ren Editoren zusammen und geben ein Tutorial fur¨ den wichtigsten Unix-Editor, den vi.

Eine der allerh¨aufigsten und wichtigsten Aufgaben eines Benutzers—insbesondere unter einem System wie Unix—ist das Editieren von Textdateien. Das rudiment¨are Beherrschen zumindest einiger Texteditoren ist auf einem System wie Unix daher einfach ub¨ erlebensnot- wendig. Neben den Aufgaben, die jeder Benutzer auf dem System erledigen will, gilt vor allem folgendes: praktisch die gesamte Systemkonfiguration ist in ASCII-Dateien gespei- chert. Die einfachste und in gewissem Sinne effektivste Art der Konfiguration besteht im Editieren dieser Dateien. Unter Unix stehen eine Vielzahl von Editoren sowohl fur¨ die Textkonsole (bzw. Terminal Emulation am GUI) sowie auch fur¨ die grafische Oberfl¨ache zur Verfugung;¨ ein Ub¨ erblick befindet sich auf Folie 80. Die wichtigsten Editoren unter Linux sind Emacs und vor allem vi (Visual Editor). Letzterer ist als der Standardeditor unter jedem Unix-System, in jeder Situation verfugbar.¨ Daher ist fur¨ den Systemadministrator die Beherrschung des vi Pflicht! Der vi ist ein einfacher aber sehr m¨achtiger Texteditor, der allerdings auf den ersten Blick schwierig zu bedienen ist. Nach einer Eingew¨ohnungsphase stellen sich aber die vermeintlich komplizierten Bedienungselemente als gut durchdachte Konzepte heraus. Es gibt kaum einen anderen Editor, der es gestattet mit weniger Aufwand komplexe Aufgaben zu erledigen. Unter Linux wird meist der ruc¨ kw¨artskompatible Editor vim verwendet. Das Binary liegt in /bin/ und ist daher auch im Notfall verfugbar,¨ im Unterschied zu den meisten anderen Editoren, die in /usr/bin liegen. (Insbesondere wird bei tiefen Eingriffen im System sicher keine grafische Oberfl¨ache vorhanden sein!)

Unix Editoren

vi (Visual Editor), vim (vi Improved), gvim (grafisch)

emacs, xemacs (GNU)

Konsole – pico – joe – axe – zed – . . .

GUI – xedit – nedit – gedit – xcoral – kwrite – . . .

Folie 80 5 EDITOREN

Wichtige Editoren

vim (=vi Improved) – Standard-Unix-Editor – schnell zu bedienen – immer verfugbar¨

(X)Emacs – sehr m¨achtiger Editor fur¨ viele Zwecke – Durch Plugins“ erweiterbar ” – Texteditor, Mailreader, Programmierumgebung, . . .

pico – Einfach zu erlernen – Look and Feel von pine

nedit – Motif-basiert – umfangreich – flexibel konfigurierbar

Folie 81

67 5 EDITOREN

Meist ist unter Linux auch eine vi-Version fur¨ die grafische Oberfl¨ache, der gvim verfugbar.¨ Er kombiniert die Vorzuge¨ des reinen konsolenorientierten vi mit den Features einer grafischen Anwendung. Im folgenden wollen wir uns aber aus den oben angefuhrten¨ Grunden¨ dem vi zuwenden und einen Schnellkurs in 11 Folien absolvieren. Will man fortgeschrittenere Editiertechniken einsetzen, muß man die Arbeitsweise des vi zumindest grundlegend verstehen.

Der vim-Editor im Ub¨ erblick

Konsoleneditor, auch auf nicht-grafischem Systemen

Standardeditor vieler Unix-Programme (z.B. mail-, news Reader)

drei Modi – Eingabemodus – Kommandomodus (Befehle eingeben) – Ansichtmodus (Cut, Copy und Paste, etc)

flexibles Suchen/Ersetzen (mit regul¨aren Ausdruc¨ ken)

Syntax-Hervorhebung fur¨ C, Java, HTML, . . .

weitgehend konfigurierbar

Online-Hilfesystem und Tutorial

weitere Infos unter www.vim.org

Folie 82

68 5 EDITOREN

vim-Schnellkurs in 11 Folien

Grundlagen

Starten von vim: – vi Dateiname – vi

i . . . in den Eingabemodus wechseln

Text beliebig eingeben bzw. bearbeiten

ESC . . . in den Kommandomodus wechseln

:wq oder :x Datei speichern und vim verlassen

:q! . . . vim verlassen ohne Datei speichern

Folie 83

69 5 EDITOREN

Wechseln zwischen Modi

vom Eingabe- oder Ansichtmodus in den Kommandomodus: ESC

vom Kommandomodus in den Ansichtmodus: v

vom Kommandomodus in den Eingabemodus: – a Text nach Cursor einfugen¨ – A Text am Ende der Zeile einfugen¨ – i Text an der Cursorposition einfugen¨ – I Text am Anfang der Zeile einfugen¨ – o leere Zeile unterhalb des Cursors einfugen¨ – O leere Zeile oberhalb des Cursors einfugen¨ – s Zeichen mit Text ersetzen

Folie 84

70 5 EDITOREN

Bewegen in der Datei

. . . effizienter als Cursortasten . . .

0 Beginn der Zeile © Ende der Zeile

Bewegung ub¨ er W¨orter:

w n¨achstes kleines Wort

W n¨achstes großes Wort

b voriges kleines Wort

B voriges großes Wort

e zum Ende des n¨achsten kleinen Wortes

E zum Ende des n¨achsten großen Wortes Bewegung ub¨ er Zeilen:

k Zeile rauf

j Zeile runter

:num gehe in Zeile num

Folie 85

71 5 EDITOREN

Text bearbeiten im Kommandomodus:

x einzelnes Zeichen l¨oschen

dw bis zum Ende des Wortes l¨oschen © d bis zum Ende der Zeile l¨oschen

d0 bis zum Beginn der Zeile l¨oschen

dd ganze Zeile l¨oschen

:n1,n2d Bereich von Zeile n1 bis n2 l¨oschen

R in Eingabemodus wechseln und Text ub¨ erschreiben

cw bis zum Wortende l¨oschen und in Eingabemodus wechseln

jedem Kommando kann eine Zahl vorangestellt werden, die angibt, wie oft das Kommando wiederholt werden kann; z.B. 3x l¨oscht die n¨achsten 3 Zeichen.

Folie 86

72 5 EDITOREN

Allgemeine Kommandosyntax

Kommandos im vim folgen der simplen Logik: :ZeilenAktionBereichOptionen alle Felder sind optional spezielle Zeilenbereiche:

anfang,ende (:1,3 . . . )

¥ ¥ Letzte Zeile in der Datei (:1, . . . )

% Die gesamte Datei (:% . . . )

Verfugbare¨ Kommandos erh¨alt man mittels

:help x

Die zweite Bereichsangabe ist etwa m¨oglich durch:

0 Beginn der Zeile © Ende der Zeile

w bis zum Ende des Wortes

Folie 87

73 5 EDITOREN

Dateioperationen

:e datei L¨adt die angegebene Datei in den Editor

:w [datei] Datei schreiben; wenn eine Datei angegeben wurde, wird der Text dort abgespeichert

:q vi beenden

:wq Datei speichern und beenden

:x Wenn es Anderungen¨ gibt, Datei speichern; beenden

ZZ dito Diese Befehle sind durch ! erzwingbar (z.B. :q!)

:!command Externes Programm ausfuhren¨ (also etwa !ls)

:rdatei Inhalt der angegebenen Datei an die Cursorposition kopieren; (z.B. :r!ls)

Folie 88

74 5 EDITOREN

Suchen und Ersetzen

Suchen

/muster sucht angegebenes Muster vorw¨arts

n wiederholt Suche ab der Cursorpostion, d.h. findet n¨achsten Treffer

?muster sucht angegebenes Muster ruc¨ kw¨arts

N findet n¨achsten Treffer ruc¨ kw¨arts Ersetzen

:g/muster/s/neuertext sucht muster und ersetzt es mit neuertext

:Zeilen/altertext/neuertext/g sucht in den angegebenen Zeilen nach altertext und ersetzt es mit neuertext

Folie 89

75 5 EDITOREN

Undo, Copy, Cut Paste

u mache letze Eingabe ruc¨ kg¨angig

Strg+R ruc¨ kg¨angig gemachte Anderungen¨ wiederherstellen

yy Kopiert die Zeile in den Buffer

dd Kopiert die Zeile in den Buffer und l¨oscht sie dann

p Fugt¨ die Inhalte des Buffers an der Cursorposition ein

Folie 90

76 5 EDITOREN

Konfiguration

Optionen in vi sind durch das Kommando set konfigurierbar. nutzlic¨ he Einstellungen:

set bs=2

set ai

set history=50

set ruler

set incsearch

set ignorecase

set smartcase

set scrolloff=3 bequemes Setzen von Einstellungen: ~/.vimrc

Folie 91

Beispiel .vimrc set bs=2 " allow backspacing over everything set ai " always set autoindenting on set history=50 " keep 50 lines of command line history set ruler " show the cursor position all the time set incsearch " incremental search set ignorecase " ignore case set smartcase " smart case set scrolloff=3 " scroll offset set cindent " c indenting set gdefault " Substitute /g is always on

Folie 92

77 5 EDITOREN

Onlinehilfe und Tutorial

F1 oder :help ruft Starseite der Online-Hilfe auf; weiters selbsterk¨arend

:help kommando gibt Hilfe zu einem Kommando aus

:help TAB Kommandline-Completion falls genauen Namen des Befehls vergessen

vimtutor an der Kommandozeile startet ein Online-Tutorial (Pflichtlekture!)¨

Folie 93

78 6 Unix/Linux benutzen 2

In diesem Kapitel erkl¨aren wir den etwas fortgeschritteneren Umgang mit der Shell, zeigen wie die Benutzer-Umgebung (Environment) konfiguriert werden kann und wie man Prozesse kontrolliert. Schließlich stellen wir noch einige weitere nutzliche¨ Tools und Utilities vor.

6.1 Shell-Variablen Ganz allgemein sind Variablen einem Programm bekannte Namen, die Werte repr¨asentie- ren, die sich w¨ahrend der Laufzeit des Programms ¨andern k¨onnen. Auch die Shell kennt verschiedene Variablen; neben Standard-Variablen, die bei der Initialisierung der Shell ge- setzt werden und welche fur¨ das Arbeiten notwendig sind (z.B. HOME, TERM, PATH ..., siehe Folie 95) k¨onnen auch benutzerdefinierte Variablen verwendet werden. Erstere werden in der Regel groß geschrieben, letztere sollten zu Unterscheidung klein geschrieben werden. Fur¨ einen Ub¨ erblick ub¨ er alle aktuell in der Shell gesetzten Variablen gibt man set ein. Um eine Variable zu definieren ist es notwendig, ihren Namen und ihren Anfangswert anzugeben. Man schreibt in der Shell einfach NAME=WERT. Will man sich die neu gesetzte Variable ansehen, kann man entweder wie oben set, oder aber echo $NAME eintippen. Es wird dann der Wert der Variablen gezeigt; $NAME steht also fur¨ den Wert der Variablen NAME. Verwendet man eine nicht zuvor definierte Variable, so erh¨alt man anders als in man- chen Programmiersprachen keine Fehlermeldung; in diesem Fall ist der Inhalt der Variablen einfach leer. Es ist auch nicht notwendig, den Typ einer Variablen anzugeben, und er kann sich im Laufe der Zeit ¨andern, falls das notwendig ist. Um eine Variable nicht nur fur¨ die aktuelle Shell sondern auch fur¨ alle Subshells (aus der aktuellen Shell aufgerufene Shells; insbesondere Shellscripts; siehe dazu Abschnitte 6.2, 6.3 und Teil 2) zu setzen verwendet man die Syntax export NAME=WERT. Der Unterschied wird im folgenden Beispiel genau demonstriert. Insbesondere muss man Umgebungsvariable, die die Ausfuhrung¨ eines Shellscripts beeinflussen sollen, exportieren!

Nicht exportierte Variable sind in der Subshell nicht gesetzt:

[roli@pablo roli]$ xy=world [roli@pablo roli]$ echo xy xy [roli@pablo roli]$ echo Hello $xy Hello world [roli@pablo roli]$ bash [roli@pablo roli]$ echo Hello $xy Hello [roli@pablo roli]$ exit exit [roli@pablo roli]$ xy= [roli@pablo roli]$ echo $xy

Exportierte Variable schon:

[roli@pablo roli]$ export xy=world [roli@pablo roli]$ bash [roli@pablo roli]$ echo Hello $xy Hello world [roli@pablo roli]$

Die Standardvariable PATH (der Suchpfad) besteht aus einer Aneinanderreihung von Ver- zeichnissen, in denen die Shell nach ausfuhrbaren¨ Dateien sucht. Diese k¨onnen dann direkt, 6.1 Shell-Variablen 6 BENUTZUNG 2

Variablen

einem Programm bekannte Namen, die ver¨anderliche Werte repr¨asentieren

Shell-Variablen: Standard (groß geschrieben), benutzerdefiniert

setzen: NAME=WERT

fur¨ alle Subshells setzen: export NAME=WERT

Wert abrufen: echo $NAME

gesetzte Variablen ansehen: set

l¨oschen: unset NAME oder NAME=

Standard Variablen: PATH, HOME, PS, USER, TERM, ...

Folie 94

Shell-Standardvariablen

typischerweise groß geschrieben

HOME oder ~ . . . Homedirectory

PS1 . . . Primary Prompt

PS2 . . . Secondary Prompt

PATH . . . Suchpfad

HOSTNAME . . . Hostname

HOSTTYPE . . . CPU Typ

LOGNAME . . . Loginname

USER oder USERNAME

PWD . . . Current Directory

SHELL . . . Shell-Typ

TERM . . . Terminaltyp

. . .

Folie 95

80 6.1 Shell-Variablen 6 BENUTZUNG 2

durch Eingabe ihres Namens, aufgerufen werden, und es steht die Kommandovervollst¨andi- gung fur¨ sie zur Verfugung.¨ Zum Beispiel kann das Verzeichnis /sbin/ dem Suchpfad wie folgt hinzugefugt¨ werden:

guest@boernslaptop:~$ ifconfig bash: ifconfig: command not found guest@boernslaptop:~$ echo $PATH /usr/local/bin:/usr/bin:/bin:/usr/bin/X11:/usr/games guest@boernslaptop:~$ PATH=$PATH:/sbin guest@boernslaptop:~$ ifconfig ath0 Link encap:Ethernet ...

Ein kleines Detail am Rande: Fur¨ Dateien im aktuellen Verzeichnis . steht die Datein- amenvervollst¨andigung zur Verfugung,¨ ausfuhrbare¨ Dateien k¨onnen aber nur dann direkt aufgerufen werden, wenn sich . in PATH befindet (davon sollte man aber aus Sicherheits- grunden¨ absehen!). Mit dem Prompt PS1 kann man beeinflussen, wie sich die Shell meldet. Die Bash bietet hier eine Vielzahl von M¨oglichkeiten (man bash, siehe Abschnitt Prompting). Ein kleines Beispiel:

boern@boernslaptop:~$ echo $PS1

\u@\h:\w\$ " boern@boernslaptop:~$ PS1= " \u@\h:\w \t \$ boern@boernslaptop:~ 18:38:06 $

M¨ochte man eine Variable nicht mehr verwenden (=l¨oschen), verwendet man unset (also unset NAME). Ist eine Variable nicht gesetzt, so ist, wie schon oben bemerkt, ihr Wert leer; daher kann eine Variable auch mittels NAME= gel¨oscht werden. Im Unterschied zu h¨oheren Programmiersprachen fuhrt¨ das Verwenden nichtdefinierter Variablen zu keiner Fehlermel- dung; ob das gewunsc¨ hte Resultat erzielt wird, ist aber eine andere Frage. Auch kennt die Shell nur einen einzigen Variablentyp. Variablen spielen klarerweise in der Shellprogrammie- rung (siehe Teil 2) eine große Rolle.

Eine sehr nutzlic¨ he Funktion ist die Umleitung der Ausgabe eines Befehls in eine Variable # (Kommando-Substitution, z.B. now= # date ; siehe Folie ??). Achtung: die hier eingesetzten Hochkommas sind sog. Backticks (von links oben nach rechts unten). So gesetzte Variablen k¨onnen dann z.B. mit echo ausgegeben oder sp¨ater (etwa in Scripts) verwendet werden. Enthalten Variablen Shell-Metacharacters (Leerzeichen, Wildcards, etc.), so mussen¨ diese mit Hochkommas geschutzt¨ werden, wobei folgende Regel gilt: einfache Hochkommas (Single Quotes) schutzen¨ alle Shell-Metacharacters, doppelte Hochkommas (Double Quotes) schutzen¨

alle Shell-Metacharacters außer $ (und erlauben so Variable zu verwenden), # und \. Wobei der Backslash \ als Metacharacter eingesetzt wird um die spezielle Funktion des folgenden Zeichens aufzuheben (siehe dazu Folie 96). Ganz besonders wichtig ist es, daß Leerzeichen in Dateinamen geschutzt¨ werden mussen–¨ fur¨ die Shell ist das Leerzeichen der Metacharakter, der Befehle von Optionen und Argu- menten trennt. Das ist ubrigens¨ nicht nur unter Unix der Fall, fast alle Betriebssysteme zeigen dieses Verhalten wenn man sie auf der jeweiligen Konsole bedient. Naturlic¨ h ist es deswegen ratsam, keine Leerzeichen in Dateinamen zu verwenden. Diese Konvention wird leider oft gebrochen. Besonders effektiv k¨onnen Variablen in Schleifen eingesetzt werden. Wir geben weiter unten einige einfache, aber wichtige Beispiele. (Im zweiten Teil der Vorlesung wird dann eine kleine Einfuhrung¨ in die (Bash-) Shellprogrammierung gegeben.) Will man mehrere Kommandos in einer Zeile eingeben, so mussen¨ sie durch einen Strichpunkt getrennt werden (z.B. date; pwd).

6.1.1 Einige Beispiele zum Quoting

Datum durch Kommando-Substitution in eine Variable einlesen:

81 6.1 Shell-Variablen 6 BENUTZUNG 2

Quoting

Back Quotes #$# Kommando-Substitution

Single Quotes "$" schutzt¨ alle Metachars Double Quotes " " schutzt¨ alle Metachars

außer $, # , und \ Backslash \ schutzt¨ folgendes Zeichen

Folie 96

[roli@pablo roli]$ date

Sat Oct 20 14:30:47 CEST 2001 # [roli@pablo roli]$ now= # date [roli@pablo roli]$ echo $now Sat Oct 20 14:30:56 CEST 2001 [roli@pablo roli]$ date Sat Oct 20 14:31:06 CEST 2001 [roli@pablo roli]$ echo $now Sat Oct 20 14:30:56 CEST 2001

Eine Liste mit 10 Eintr¨agen erzeugen: # [roli@pablo roli]$ list= # seq 10 [roli@pablo roli]$ echo $list 1 2 3 4 5 6 7 8 9 10

* muss geschutzt¨ werden:

[roli@pablo DIR_1]$ xy=world [roli@pablo DIR_1]$ echo * Hello $xy *

file1 file2 Hello world file1 file2

" schutzt¨ s¨amtliche Metachars: " [roli@pablo DIR_1]$ echo " * Hello $xy * * Hello $xy *

" erlaubt Variablenauswertung:

[roli@pablo DIR_1]$ echo "* Hello $xy *" * Hello world *

82 6.1 Shell-Variablen 6 BENUTZUNG 2

\ schutzt¨ die spezielle Bedeutung des folgenden Zeichens:

[roli@pablo DIR_1]$ echo "Hello \$xy" Hello $xy [roli@pablo DIR_1]$ echo \* Hello $xy \* * Hello world *

Ahnlic¨ h mit der Kommandosubstitution: # [roli@pablo DIR_1]$ echo " # seq 2 " 1

2 "

[roli@pablo DIR_1]$ echo " " seq 2 " " " seq 2

Schleifen

Die for Schleife: for i in liste; do ...; done Der Anweisungsblock, der auf das do folgt, wird fur¨ jedes i in der Liste durchlaufen. Der jeweilige Wert von i steht wie immer unter $i zur Verfugung.¨

Die while Schleife: while (ausdruck); do ...; done Der Anweisungsblock wird solange durchlaufen, wie ausdruck wahr“ist (d.h. Exit-Code 0 hat). Wenn ausdruck einen ” Exit-Code ungleich 0 hat, wird die Ausfuhrung¨ der Schleife abgebrochen und nach dem done wieder aufgenommen.

Die until Schleife: until (ausdruck); do ...; done Wie die while Schleife, nur umgekehrt“: Die Abarbeitung der ” Schleife erfolgt solange ausdruck Exit-Code gleich 0 hat.

Folie 97

6.1.2 Einfache Schleifenkonstruktionen Schleifen sind naturlic¨ h wichtig fur¨ Shellscripts, k¨onnen aber auch oft auf der Kommando- zeile gewinnbringend angewandt werden.

Die for Schleife: Kann dazu verwendet werden, Kommandos auf mehrere Dateien anwenden. Syntax: for i in liste; do ... ;done. Ein einfacher MP3-Player:

[roli@pablo gianna]$ for musicfile in *.mp3; do > mpg123 "$musicfile" > done

n mal durchlaufene Schleife, mit Hilfe einer Liste und einer for Schleife:

[roli@pablo DIR_1]$ ls # [roli@pablo DIR_1]$ for i in # seq 10

83 6.2 Benutzerumgebung 6 BENUTZUNG 2

> do > touch file$i > done [roli@pablo DIR_1]$ ls file1 file10 file2 file3 file4 file5 file6 file7 file8 file9

while-Schleife, n-mal durchlaufen:

[roli@pablo ]$ i=1; n=10 [roli@pablo ]$ while ( test $i -le $n ) > do echo -n $i; i=$($i+1) > done 12345678910

until-Schleife, wird jetzt nur 9mal durchlaufen:

boern@boernslaptop:~$ i=1; n=10 boern@boernslaptop:~$ until [ $i -ge $n ]; > do > echo -n $i > i=$(( $i + 1 )) > done 123456789boern@boernslaptop:~$

6.2 Benutzerumgebung Unter Benutzerumgebung versteht man die spezifisch und pro User eingerichtete und kon- figurierte Arbeitsumgebung, die der Benutzer am System vorfindet. Die Konfiguration der Benutzerumgebung geschieht vorwiegend durch Shell-Variablen. In diesem Abschnitt er- kl¨aren wir, welche Konfigurationsdateien die Benutzerumgebung (in der Shell) beeinflussen. Grunds¨atzlich ist zwischen systemweiten und benutzerspezifischen Konfigurationsfiles zu unterscheiden. Erstere befinden sich in /etc/, gelten fur¨ alle Benutzer und k¨onnen nur vom Systemadministrator ge¨andert werden. Benutzerspezifische Konfigurationsfiles befinden sich im Homedirectory des Users (meist als versteckte Dateien), beeinflussen nur die Konfigu- ration seiner Umgebung und liegen vollst¨andig in der Verantwortung des Benutzers selbst, k¨onnen also von ihm ge¨andert werden. Die genaue Reihenfolge der Initialisierung der Benutzerkonfiguration h¨angt teilweise von der Distribution ab. Unter RedHat wird beim Login zun¨achst /etc/profile ausgefuhrt,¨ dann $HOME/.bash\_profile; diese rufen ihrerseits /etc/bashrc bzw. $HOME/.bashrc auf. Beim Aufrufen einer Subshell wird nur /etc/bashrc und $HOME/.bashrc ausgefuhrt¨ (siehe auch Folie 98). Beim Logout wird die Datei $HOME/.bash\_logout abgearbeitet. Eine weitere bequeme Konfigurationsm¨oglichkeit stellen die sogenannten Aliases dar. Sie dienen zum Abkurzen¨ h¨aufig verwendeter Befehle bzw. Befehlsketten. Indem man ein Alias

setzt definiert man einen neuen (kurzen) Befehl, der als Abkurzung¨ fur¨ den komplizierte- " ren steht. Die grundlegende Syntax ist alias shortcut= " list of commands . Alle aktuell gultigen¨ Aliases kann man mit alias anzeigen. Ein kurzes Beispiel: boern@boernslaptop:~/mydir$ ls -l total 0

-rw-r--r-- 1 boern boern 0 2005-09-28 10:10 foo " boern@boernslaptop:~/mydir$ alias ll= " ls -l boern@boernslaptop:~/mydir$ ll total 0 -rw-r--r-- 1 boern boern 0 2005-09-28 10:10 foo boern@boernslaptop:~/mydir$

84 6.3 Prozeßkontrolle 6 BENUTZUNG 2

Benutzerumgebung

beim Einloggen werden folgenden Dateien abgearbeitet: – /etc/profile – $HOME/.bash\_profile – $HOME/.bashrc – /etc/bashrc

beim Ausloggen: – $HOME/.bash\_logout

systemweite Einstellungen in /etc/

benutzerspezifische Einstellungen in $HOME

Folie 98

Hat man z.B. rm als Alias fur¨ rm -i gesetzt, was durchaus empfehlenswert ist, so kann man das Kommando rm normal ausfuhren,¨ wenn man den ganzen Pfad angibt; in diesem Fall wird also mit /bin/rm die Ruc¨ kfrage, ob das File wirklich gel¨oscht werden soll, unterdruc¨ kt. Seine Aliases definiert man sinnvollerweise nicht in jeder Session neu, sondern speichert sie in $HOME/.bashrc ab. Dann stehen sie immer zur Verfugung.¨ Falls man seinen Suchpfad dauerhaft ab¨andern will, so empfiehlt es sich auch, die entsprechende Definition in der .bashrc abzulegen.

6.3 Prozeßkontrolle Wie wir bereits (aus Kapitel 0) wissen, ist ein Prozeß ein laufendes Programm; vom System werden ihm verschiedene Ressourcen zur Verfugung¨ gestellt und verschiedene Rechte ein- ger¨aumt. Etwas detaillierter verfugt¨ ein Prozeß ub¨ er eine Prozeßumgebung; ihre wichtigsten Bestandteile sind auf Folie 99 aufgelistet, Folie 100 zeigt ein Beispiel. Prozesse werden systemintern ub¨ er eine eindeutige Nummer, die Prozeß ID (PID) iden- tifiziert, die beim Prozeßstart vom Kernel vergeben wird. Prozesse existieren in einer Eltern- Kind Hierarchie. Startet ein Prozeß einen neuen, so ist dieser sein Child-Prozeß; umgekehrt ist der Ursprunglic¨ he Prozeß der Parent-Prozeß (wichtiges Bsp: Subshell). Aus einer Shell kann man neue Prozesse auf verschiedene Arten aufrufen. Man kann sie im Vordergrund starten, so wie wir das bisher immer getan haben, wir k¨onnen sie aber auch im Hintergrund starten; dann bleibt die Shell fur¨ weitere Eingaben frei. Sinnvoll ist das vor allem, wenn wir aus einer Shell oder einer Terminal Emulation Programme aufrufen, die dann auf einem GUI laufen (z.B. netscape). Die Syntax ist auf Folie 101 erkl¨art. Informationen ub¨ er die Umgebung laufender Prozesse k¨onnen mit ps abgefragt werden, ps aux zeigt z.B. alle am System laufenden Prozesse an. Die Porzeßhierarchie kann mittels pstree angezeigt werden. Mit dem Kommando kill [- signal] PID k¨onnen Signale an einen Prozeß geschickt werden, um diesen (vor allem—wie schon zu vermuten war—) zu beenden. Weiters k¨onnen Prozesse vom Vordergrund in den Hintergrund bef¨ordert werden und vice versa. Die Folien 102, 103 geben Auskunft ub¨ er die Syntax der entsprechenden Befehle. Schließlich erw¨ahnen wir an dieser Stelle die sogenannten Daemons (Disk And Execution MONitors); diese sind Prozesse, die dauerhaft im Hintergrund laufen und wichtige System-

85 6.3 Prozeßkontrolle 6 BENUTZUNG 2

funktionen erfullen.¨ Genauer besprechen wir Daemonen im Kapitel 9, auf Folie 104 wird ein erster Ub¨ erblick gegeben.

Prozeßumgebung

Programm Benutzer ID und Gruppen ID Daten Prozeß ID (PID) ge¨offnete Files Parent PID (PPID) aktuelles Directory Programmvariablen

Folie 99

86 6.3 Prozeßkontrolle 6 BENUTZUNG 2

Prozeßumgebung Beispiel

$ cat file

Programm: cat Prozeß ID (PID): 317 UID, GID: franz, student ge¨offnete Files: /dev/tty1, file Parent, PPID: bash, 204 aktuelles Directory: /home/franz

Folie 100

Prozesse starten

im Vordergrund: ,,normales“ Ausfuhren¨ von der Kommandozeile; blockiert Shell z.B. $ ls

im Hintergrund: zus¨atzliches & am Ende des Kommandos; gibt Shell wieder frei $ xterm & [1] 417 $ _ [1] ist die (Job-)Nummer des im Hintergrund gestarteten Prozesses, 417 die ID des Prozesses.

Folie 101

87 6.3 Prozeßkontrolle 6 BENUTZUNG 2

Prozesse kontrollieren

Beenden:

Strg+c beendet einen Vordergrundprozeß (= schickt ein Interrupt-Signal)

$ kill [-signal] PID beendet einen Vorder- oder Hintergrundprozeß Signale: – 1 “Hangup”: erh¨alt einen Childprozeß, wenn sein Parent stirbt – 2 “Interrupt”: Der Interrupt-Key (Strg+c) wurde gedruc¨ kt – 3 “Quit”: Der Quit-Key (Strg+\) wurde gedruc¨ kt – 9 “Software terminate”: Das m¨achtigste Signal; kann nicht ignoriert werden – 15 ist der Default-Wert

$ killall [-signal] name beendet alle Prozesse mit dem angegebenen Namen

Folie 102

88 6.3 Prozeßkontrolle 6 BENUTZUNG 2

Prozesse kontrollieren 2

Fur¨ Prozesse, die l¨anger dauern und auch nach dem Ausloggen des Besitzers weiterlaufen sollen, empfiehlt sich nohup. z.B. listet $ nohup ls -R / >out \& rekursiv alle Unterverzeichnisse im Hintergrund auf und schreibt die Ausgabe in die Datei out.

In der bash gibt es weitere M¨oglichkeiten zur Prozeßkontrolle: – Strg+z stellt den aktuellen Vordergrundprozeß in den Hintergrund – $ jobs gibt alle Prozesse (“Jobs”) aus, die im Hintergrund laufen oder unterbrochen wurden. %jobnr kann auch etwa an kill ub¨ ergeben werden. – $ fg stellt einen unterbrochenen Prozeß in den Vordergrund – $ bg stellt einen unterbrochenen Prozeß in den Hintergrund

Folie 103

89 6.3 Prozeßkontrolle 6 BENUTZUNG 2

D¨amonen

Ein D¨amon (Daemon, Disk And Execution MONitor) ist ein nicht-endender Prozeß, meistens ein Systemprozeß, der eine Systemresource (z.B. die Druckerwarteschlange) ub¨ erwacht. Ublic¨ he D¨amonen:

crond fuhrt¨ in regelm¨aßigen Intervallen Programme aus

atd fuhrt¨ einmalig an einem bestimmtem Datum und zu bestimmter Uhrzeit ein Programm aus

lpd ub¨ erwacht die Druckerwarteschlange

syslogd schreibt Meldungen des Kernels und von Programmen nach /var/log/messages

siehe Kapitel 9 und Teil 2

Folie 104

90 6.4 Weiteres 6 BENUTZUNG 2

6.4 Weitere Tools & Utilities, Einfache Netzwerkbefehle Zum Abschluß diese Kapitels stellen wir einige weitere wichtige Unix-Tools und Utilities vor und erkl¨aren auch die einfachsten Netzwerkbefehle. Eine wichtige Aufgabe sowohl fur¨ den Benutzer als auch den Administrator ist das Ar- chivieren, Bewegen und Komprimieren nicht nur einzelner Dateien sondern ganzer Verzeich- nisb¨aume. Das Programm zum Archivieren unter Unix ist tar, was fur¨ Tape Archive steht und auf das betr¨achtliche Alter diese Werkzeugs hinweist. Unter Linux ist meist die GNU- Version von tar verfugbar.¨ Die Grundfunktionsweise von tar ist es einen ganzen Verzeich- nisbaum in eine einzige—Tarfile genannte—Datei zu verpacken“, bzw. ein solches wieder ” zu entpacken. Die Dateiattribute wie Besitzer, Datumstempel etc. bleiben dabei erhalten. Daher eignet sich tar auch hervorragend zum Kopieren großer Date(ie)nmengen. Die grundlegende Syntax (tar ben¨otigt kein - vor den Optionen; es kann aber optional auch angegeben werden) ist tar cf tarfile.tar filestotar (c=create, f=file) fur¨ das Archivieren bzw. tar xf tarfile.tar fur¨ das extrahieren (x=extract). Die Standardexten- sion fur¨ Tarfiles ist .tar. Das Tar-Programm bietet auch die M¨oglichkeit mittels der Option z resp. j mit gzip resp. bzip2 (siehe unten) komprimierte Tarfiles zu erzeugen/extrahieren; diese haben dann die Standardendung .tar.gz oder .tgz bzw. .tar.bz. Weitere Details befinden sich auf Folie 105.

tar (Tape Archive)

wichtige Optionen

c . . . create

x . . . extract

v . . . verbose

z . . . compress mit gzip

j . . . compress mit bzip2

f . . . File (statt Tape)

t . . . liste Inhalt eines Tarfiles Beispiele:

tar cvzf tarfile.tgz directory/ archiviert directory/ in tarfile.tgz

tar xvzf tarfile.tgz entpackt tarfile in ./

tar cvfML /dev/fd0 1440 directory/ erstellt Multivolume-Tarfile auf Diskette mit Gr¨oße jeweils 1.4MB

Folie 105

Bereits im Zusammenhang mit tar haben wir zwei Kompressionsprogramme angespro- chen; gzip und bzip2. Ersteres benutzt den Lempel-Ziv Algorithmus um die Dateigr¨oße zu reduzieren. gzip file.ext ersetzt die Datei file.ext durch die komprimierte Datei file.ext.gz; mittels der Option -v erf¨ahrt man, um wieviel Prozent die Datei kompri- miert werden konnte. gunzip dekomprimiert die Dateien wieder—allerdings nur, falls die Endung .gz lautet. Komprimierte Dateien k¨onnen mit zcat angezeigt werden.

91 6.4 Weiteres 6 BENUTZUNG 2

Einen st¨arkeren Komprimierungsalgorithmus bietet bzip2. Die Verwendung ist analog zu gzip; die Standardextension fur¨ bzip2-komprimierte Dateien ist .bz, analog zu gzip gibt es die Kommandos bunzip2 und bzcat. Weiters ist auf (fast) allen Linux Systemen das auch unter DOS und Win* verfugba-¨ re zip vorhanden (kompatibel mit Pkzip), das die etwas unterschiedliche Syntax zip zipfile.zip filestozip aufweist und die Features von tar mit der Komprimierung verbindet. Dekomprimieren funktioniert hier mit unzip zipfile.zip. Kompressionspro- gramme sind auf Folie 106 zusammengestellt. Zum Schluß diese Abschnitts erkl¨aren wir noch die Funktionsweise der zur Textmanipu- lation nutzlic¨ hen Tools cut und sort, sowie der Filter grep, sed und awk (Folien 107, 108) und besprechen weitere Befehle zum Ansehen von Dateien (tail und head; Folie 109) und das Suchen von Dateien und Kommandos auf den Folien 110 und 111. Schließlich befaßt sich Folie 112 mit einfachen Netzwerktools.

Komprimieren

gzip Standardtool – gzip file erzeugt file.gz – gunzip file.zp entpackt (.gz zwingend) – zcat file.gz ansehen

bzip2 bessere Algorithmus – bzip2 file erzeugt file.bz – bunzip2 bzcat analog

zip kompatibel mit DOS, Win* – zip zipfile.zip filestozip/ komprimiert – unzip zipfile.zip – kompatibel mit Pkzip

Folie 106

92 6.4 Weiteres 6 BENUTZUNG 2

Textmanipulation

cut -f(elder) -d(trennzeichen) datei oder cut -c(zeichen) datei schneidet einen bestimmten Bereich aus jeder Zeile der gegebenen Dateien. $ cut -f1 -d: /etc/passwd gibt die Benutzernamen des Systems $ ps | cut -c-5,20- gibt die PID und den zugeh¨origen Prozeß aus der Prozeßliste aus

grep string datei sucht die Zeichenkette in der Datei und gibt jeden Treffer aus. Mehrere nutzlic¨ he Optionen: – -v gibt Zeilen aus, die nicht den String enthalten. – -n zus¨atzlich Angabe der Zeilennummer – -i ignoriert Groß/Kleinschreibung

Folie 107

Textmanipulation 2

sort -t(trennzeichen) +feld -optionen datei sortiert die Zeilen der Datei nach dem gegebenen Muster. Beispiel: sort -t/ +5 /etc/shells sortiert die Shells in der Datei. Einige Optionen: – -d wie im W¨orterbuch sortieren (nur Buchstaben, Zahlen und Leerzeichen beruc¨ ksichtigen) – -r Sortierung umdrehen – -n Numerische Felder arithmetisch sortieren

sed, awk und perl: Sehr umfangreiche Skriptsprachen; zur Verarbeitung schwierigerer Strukturen notwendig Beispiel: sed -n xp datei gibt die x-te Zeile der Datei aus

Folie 108

93 6.4 Weiteres 6 BENUTZUNG 2

Dateien ansehen

Neben more, less und Co gibt es noch andere M¨oglichkeiten, Dateien anzusehen:

head [-n(num)] datei zeigt die ersten Zeilen der Datei an.

tail [-n(num)|n(num)] datei+ zeigt die letzten Zeilen der Datei an; wenn n positiv ist, ab der Zeile n. Außerst¨ nutzlic¨ h bei tail ist die Option -f, mit der der Dateiinhalt laufend neu eingelesen wird, was z.B. bei der Betrachtung von Log-Dateien vorteilhaft ist. Beispiel: tail -f /var/log/messages

Mit gzip komprimierte Dateien kann man, ohne sie zu entpacken, mit zcat datei ansehen.

Folie 109

94 6.4 Weiteres 6 BENUTZUNG 2

Befehle finden/Dateitypen ansehen

type befehl bzw. which befehl zeigt an, wo im Pfad sich befehl befindet. $ type ls ls is /bin/ls

whereis befehl gibt den Pfad zur ausfuhrbaren¨ Datei und die Manpage dazu an. $ whereis ls ls: /bin/ls /usr/man/man1/ls.1

file datei versucht herauszufinden, um welchen Dateityp es sich handelt. $ file bild.jpg bild.jpg: JPEG image data

Folie 110

95 6.4 Weiteres 6 BENUTZUNG 2

Suchen nach Dateien

Mit find verzeichnis -name datei kann man Dateien (und Verzeichnisse) in bestimmten Verzeichnissen suchen, dabei durfen¨ auch Wildcards verwendet werden. z.B. find /usr/include -name *io.h Man kann auf die Treffer mit -exec cmd auch gleich Befehle ausfuhren:¨ find . name c* -exec ls -l +- Ein simples S¨auberungskommando: find $HOME name *.bak -ok rm +-

locate datei durchsucht die regelm¨aßig mit updatedb erstellte Dateidatenbank und gibt alle Dateien zuruc¨ k, die den Dateistring enthalten z.B. locate libc.so

Folie 111

96 6.4 Weiteres 6 BENUTZUNG 2

Netzwerkbefehle

ping host pruft¨ Erreichbarkeit des angegebenen Hosts

traceroute host verfolgt, ub¨ er welche Router Netzwerkpakete an den Host geschickt werden

telnet host baut eine Login-Verbindung zu einem Host auf; sollte aus Sicherheitsgrunden¨ nicht verwendet werden, da es Paßw¨orter im Klartext ub¨ ertr¨agt; Alternative ssh

ssh -l user host (Secure Shell) baut eine sichere (verschlusselte)¨ Verbindung zum Host auf

ftp host initiiert eine FTP Verbindung; dient zur Ub¨ ertragung von Dateien; nicht-anonymes Ftp hat dieselben Schw¨achen wie telnet

Folie 112

97 7 X-Window

In diesem Kapitel besprechen wir detailliert die Funktionsweise der Standard-Unix grafischen Benutzeroberfl¨ache (Graphical User Interface, GUI), dem X-Window-System.

Das X-Window-System (http://www.x.org; nicht X-Windows!) wurde 1984 am MIT vom X-Consortium entwickelt. Es ist nicht GPL lizenziert, wird aber unter einer ¨ahnlichen Lizenz (X11-License) vertrieben. Unter der selben Lizenz wird der ursprunglic¨ h fur¨ 80x86 Prozessoren entwickelte XFree86 (http://www.xfree86.org) vertrieben. Dieser wird we- gen einem Problem mit einer Lizenz¨anderung nun langsam durch den Xorg-Server als das Standard-X-System unter Linux abgel¨ost. Das X-Window-System ist modular aufgebaut; es benutzt eine Client/Server- Architektur. Der X-Server verarbeitet alle einkommenden Events (Tastatur, Maus,. . . ) und leitet diese an die entsprechenden Anwendungen weiter. Ebenso kummert¨ sich der X-Server um die Ausgabe der Anwendungen (hier Clients genannt) auf dem Display. Der X-Server ub¨ ernimmt also die Kommunikation mit der Hardware auf der einen Seite und mit den Applikationen auf der anderen Seite. Er l¨auft im Userspace aber mit root-Privilegien. Ganz allgemein ist in einer Server/Client Architektur der Server immer der Teil, der eine Ressource zur Verfugung¨ stellt, und der Client nimmt sie vom Server in Anspruch. Im Falle von X ist die Ressource die Ein/Ausgabe-Infrastruktur des Rechners; das fuhrt¨ immer wieder zur Verwirrung, da der X-Server lokal l¨auft, X-Clients aber oft auf der grossen Kiste im Rechenzentrum laufen. Im Falle eines Desktoprechners freilich koexistieren X-Clients und der X-Server in derselben Maschine. Unter allen Anwendungen, die sich mit dem X-Server in Verbindung setzen (X-Clients) gibt es eine besonders wichtige: den Window-Manager. Dieser ist fur¨ das Handling der Fenster auf dem Display verantwortlich. Er erzeugt die Rahmen der Fenster und ist fur¨ ihr Verschieben, Vergr¨oßern, Verkleinern etc., also fur¨ das Look and Feel der grafischen Oberfl¨ache zust¨andig. Es gibt eine Vielzahl von Window-Managern; fur¨ eine kleine Ub¨ ersicht empfehlen wir http://www.xwinman.org. Eine Weiterentwicklung der Window-Manager hin zum gesamten Oberfl¨achenmanagement stellen die grossen Desktops GNOME und KDE dar. Man beachte, daß es durchaus m¨oglich ist, w¨ahrend einer X-Session den Window-Manager zu stoppen und (unter Umst¨anden einen anderen) wieder zu starten! Die Konfiguration des X-Window-Systems zerf¨allt in mehrere Teile. Das Konfigurations- file des X-Servers ist /etc/X11/XF86Config-4 bzw. /etc/X11/xorg.conf und kann nur von root bearbeitet werden; dort wird die Konfiguration fur¨ die relevante Hardware in einzelnen Sektionen durchgefuhrt¨ (Keyboard, Maus, Grafikkarte, Monitor, . . . ) und wichtige globa- le Einstellungen (Pfade, . . . ) vorgenommen. Wichtig ist die Konfiguration des Monitors, insbesondere die horizontale und vertikale Bildwiederholfrequenz; ub¨ erschreitet der Konfi- gurationseintrag die tats¨achlichen Monitorkapazit¨aten, so kann dieser schwer besch¨adigt werden. Viele Treiber ub¨ erprufen¨ allerdings inzwischen selber die Bildwiederholraten, so- daß diese Gefahr nicht mehr so stark besteht. Die wichtigste Sektion ist die Screen“ Sektion; ” hier wird die Aufl¨osung und Farbtiefe festgelegt. Das Konfigurationsfile sollte bei der Instal- lation richtig angelegt werden, kann aber sp¨ater mit mehreren Tools, die auch die Grafikkarte prufen¨ und die Konfiguration testen k¨onnen, ver¨andert (nachjustiert) werden. Darub¨ erhinaus gibt es (analog zur Shell) systemweite und benutzerspezifische Konfigu- rationsfiles, die das Aussehen des GUI bestimmen; Details finden sich auf Folie 119. Selbst- verst¨andlich kann jeder Benutzer (soweit installiert) seinen Lieblings WM verwenden und dessen Aussehen weitgehend konfigurieren. Dies geschieht ub¨ er Konfigurationsfiles im Ho- medirectory des Users. Je nach verwendeter Software sind folgende Dateien auschlaggebend: .xsession, .xinitrc, .Xauthority, .Xdefaults, .wm_style, und viele andere mehr. Die meisten modernen Window-Manager k¨onnen jedoch auch bequem ub¨ er ein Menu¨ konfigu- riert werden. Je nach Konfiguration (siehe Runlevels, Kapitel 9), kann das System ein grafisches Login anbieten. Meldet man sich auf dieser grafischen Oberfl¨ache an, so kommt man direkt ins X-Window-System. Bietet das System nur einen textbasierten Login (Textkonsole) an, so kann von der Konsole X-Window mit dem Befehl startx gestartet werden. Achtung: per Default l¨auft immer nur eine grafische Oberfl¨ache! 7 X-WINDOW

Das X-Window-System

nicht X-Windows!

netzwerkbasiertes grafisches System

Entwickelt im MIT 1984

Frei verfugbar¨

Aktuelles Release X11R6

Xorg und XFree86 sind aktuelle X-Window-Implementationen unter Linux

Erlaubt das Ausfuhren¨ grafischer Anwendungen

Definiert Protokoll zur Kommunikation mit (grafischen) Ein/Ausgabeger¨aten

Client/Server-Architektur; beliebig viele (auch Remote-) Clients verbinden sich mit dem Server

Folie 113

X-Window-Architektur

Folie 114

99 7 X-WINDOW

X-Server

Standard fur¨ Linux: XFree86, Xorg

Open Source

modulare Treiber; Treiber fur¨ Grafikkarten auch von Drittanbietern (nvidia, ATI,. . . )

http://x.org, http://www.xfree86.org

ein alternativer X-Window-Server fur¨ Linux: Xi Graphics http://www.xig.org

Folie 115

X-Clients

Anwendungen, die unter X laufen

starten von Kommandozeile oder spezielle Startskripts

wichtigster Client: Window-Manager: – Fensterverwaltung (Verschieben und Vergr¨oßern/Verkleinern)

xterm emuliert Terminal, zur Eingabe von Befehlen

xeyes zeigt zwei Augen an, die dem Mauszeiger folgen

xcalc ein Taschenrechner

xedit ein grafischer Editor

xwd macht einen Screenshot des X Bildschirms

. . .

Folie 116

100 7 X-WINDOW

Window-Manager

twm Standard XFree86 Window-Manager; wenig Komfort

fvwm(95) gute Konfigurierbarkeit und Geschwindigkeit, sieht Windows ¨ahnlich

enlightenment sehr sch¨ones Aussehen, ressourcenaufwendig

sawmill Resourcen-sparsam, gut konfigurierbar

windowmaker, olvm, icewm, fluxbox, . . .

Folie 117

Desktops

Weiterentwicklung der WM

Ober߬achenmanagement

weit verbreitet, einheitliches Look’n’Feel

standardisierte Anwendungen und Kommunikationsprotokolle (z.B. fur¨ Drag’n’Drop)

GNOME (Gnu Network Object Model Environment): – baut auf C und GTK auf – viele Anwendungen verfugbar,¨ gut in die meisten Distributionen integriert

KDE (K Desktop Environment): – in C++ mit dem Toolkit Qt geschrieben, modular und objektorientiert – viele Standardprogramme z.B. fur¨ WWW, Mail, News, MP3, Office . . .

Folie 118

101 7 X-WINDOW

X Konfiguration

X-Server – nur root – /etc/X11/XF86Config, /etc/X11/xorg.conf – viele Tools verfugbar¨

WM, Desktop – benutzerspezifisch – .xsession, .Xdefaults, .xinitrc, ... – Menu¨ des WM/Desktops

Folie 119

X starten

Von der Textkonsole – Einloggen – startx – Fuhrt¨ Befehle in /etc/X11/xinit/xinitrc und ~/.xinitrc aus

Grafisches Login – Ub¨ er Display-Manager (XDM, KDM, GDM, . . . ) einloggen – Fuhrt¨ Befehle in /etc/X11/xdm/Xsession und ~/.xsession aus

X verlassen – Menu¨ (Logout) – killen des X-Servers

Folie 120

102 7 X-WINDOW

Eine große St¨arke des X-Window-Systems beruht auf seiner Client/Server-Architektur. Das X-Window-System ist von Haus aus“ netzwerkf¨ahig und es ist sehr einfach, Programme ” remote auszufuhren,¨ d.h. X-Clients nicht am lokalen Rechner laufen zu lassen, sondern die Fenster ub¨ er ein Netzwerk an den X-Server am lokalen Rechner zu schicken“. Das ist vor ” allem dann von großem Vorteil, wenn ein starker Rechner (Applikationsserver, auf dem die X-Clients laufen) im LAN vorhanden ist, w¨ahren die Arbeitsplatzrechner (Workstation, auf ihr l¨auft der X-Server) nur ub¨ er schw¨achere Hardware verfugen.¨ Nachdem X-Clients grossen Einfluss auf das Verhalten des Gesamstsystems ausub¨ en k¨onnen, liegt es auf der Hand, daß sich die Clients beim Server als zugriffsberechtigt auswei- sen k¨onnen mussen.¨ X sieht fur¨ diese Authentifizierung mehrere M¨oglichkeiten vor. Die bei- den gebr¨auchlichsten sind die hostbasierte Authentifizierung mittels xhost und die benutzer- basierte Authentifizierung mittels xauth, daß Zugriffsschlussel¨ (meist MIT-MAGIC-COOKIE-1) in der Datei .Xauthority verwaltet. Wir stellen hier zun¨achst die hostbasierte Authentifizierung mittels xhost dar. Eine kleine Vorbemerkung: die Verbindung ist auf jeden Fall unverschlusselt,¨ und die Authenti- fizierung erfolgt auf Basis der IP-Adresse! Damit ist diese Authentifizierung von Haus aus so unsicher, daß man sie eigentlich nur in sicheren“ LANs anwenden sollte. Konkret geht ” man wie folgt vor. 1. Zuerst muß man dem X-Server mitteilen, daß er X-Client-Verbindungen von anderen Rechnern (also X-Clients, die auf anderen Systemen laufen) entgegennehmen darf. Da- zu dient das Kommando xhost (Syntax: xhost [+|-] [hostname]). Damit kann man entweder gezielt einzelnen Rechnern den Zugriff auf den lokalen X-Server erm¨oglichen oder verbieten oder gleich generell allen erlauben (nicht empfohlen!) oder untersagen, X-Fenster an den X-Server zu schicken“ (xhost [+|-]). ” 2. Am Remote-System, wo die Applikation (der X-Client) laufen soll, muß angegeben werden auf welchem Display (X-Server) das Fenster erscheinen soll. Dafur¨ gibt es die Shell-Variable DISPLAY, die man—nach dem Einloggen (etwa ub¨ er Telnet) am Applikationsserver—auf den Hostnamen (oder die IP) des Rechners mit dem X- Server setzt (z.B. export DISPLAY=xserver:0.0, letzteres gibt die Screen- und X- Servernummer an). Nun kann man X-Programme (wie etwa xeyes, xterm, \dots) am Applikationsserver ausfuhren,¨ die Ausgabe erfolgt jedoch am lokalen X-Server. Dies hat den Vorteil, daß man z.B. fur¨ umfangreiche Berechnungen mathematica am Server rechnen l¨aßt, sich die Ergebnisse aber am langsameren Arbeitsplatzrechner anzeigen lassen kann. Will man nur fur¨ einzelne X-Programme die Ausgabe umleiten, kann man das dem Programm auch direkt durch die Option -display mitteilen (z.B. xterm -display xserver:0.0)

Wir haben schon oben bemerkt, daß X-Verbindungen unverschlusselt¨ und unsicher sind. Es stellt fur¨ einen Angreifer (eigentlich) ub¨ erhaupt kein Problem dar, eine X-Verbindung zu ub¨ ernehmen (Session-Hijacking), zu missbrauchen oder zu korrumpieren. Es ist deswegen sicherer, X nur ub¨ er eine verschlusselte¨ Verbindung zu verwenden. Die Secure Shell ssh kann selbst¨andig die Aufgabe des X11-Forwardings ub¨ ernehmen (mit Hilfe der Option -X, sodaß das Einloggen per ssh -X user@host ausreicht, um sich X-Clients schicken lassen zu k¨onnen. ssh beherrscht auch die benutzerbasierte Authentifizierung (aber nur die mit- tels MIT-MAGIC-COOKIE-1). Das ganze funktioniert so, daß der ssh-Server einen Dummy-X- Server am Zielhost einrichtet, und die entsprechenden Umgebungsvariablen setzt. Er vergibt auch einen Zugriffsschlussel¨ (allerdings nicht denselben, der auf dem X-Server-Host verwen- det wird; der vom ssh-Server vergebene Schussel¨ ist nach Ende der ssh-Session wertlos, der Originalschlussel¨ bleibt immer am ssh-Client-Host).

103 Programme remote ausfuhren¨

hostbasierte Authentifizierung mittels xhost

benutzerbasierte Authentifizierung mittels xauth

ssh: automatisches X11 Forwarding

Folie 121

8 Installation

In diesem Kapitel widmen wir uns der Installation eines Linux-Systems. Wir erkl¨aren, was vor der Installation zu bedenken und zu planen ist und warum das Dokumentieren der Installation wichtig ist. Verschiedene Installationsvarianten werden vorgestellt und die prinzipiell durchzufuhrenden¨ Schritte besprochen. Als Beispiel (einer einfach zu installierenden Distribution) gehen wir eine RedHat-Installation im Detail durch. Damit sollte es leicht m¨oglich sein, unter Zuhilfenahme der distributionsspezifischen Dokumentation die xy-Distribution erfolgreich zu installieren.

War die Installation eines Linux-Systems vor einigen Jahren manchmal noch ein kleines Abenteuer mit unbestimmtem Ausgang (vor allem wenn die Hardware etwas exotischer war), so haben in der Zwischenzeit viele Distributoren viel Aufwand betrieben, um die Installati- on so einfach wie m¨oglich zu gestalten. Viele moderne Linux-Distributionen verfugen¨ ub¨ er ein komfortables (oft grafisches) menugesteuertes¨ Installationstool (Installer), das praktisch ,,von jedermann” bedienbar ist. Trotzdem ist fur¨ den Systemadministrator und den interes- sierten Benutzer einiges an Hintergrundwissen n¨otig, um die vollen Konfigurationsm¨oglich- keiten einer Linux-Installation ausnutzen¨ zu k¨onnen. Genau das soll hier vermittelt werden. In den Ubungen¨ wird es Gelegenheit geben, die Installation eines RedHat-Linux-Systems praktisch durchzufuhren.¨

8.1 Vorbereitung und Planung Die Bedeutung der Planung und Vorbereitung fur¨ eine erfolgreiche Installation kann gar nicht ub¨ ersch¨atzt werden. Langj¨ahrige Erfahrung zeigt, daß eine gut durchdachte Planung sp¨ater viel an Konfigurationsarbeit (oder sogar eine Neuinstallation) ersparen hilft. Es lohnt sich allemal, sich vor Beginn der eigentlich Installation (vor dem Einschalten des PC!) in Ruhe hinzusetzen und Bleistift und Papier zur Hand zu nehmen. Dies trifft vor allem dann zu, wenn eine sp¨atere Neuinstallation dann wieder rasch von der Hand gehen soll, oder wenn der Installationsvorgang auf einer gr¨osseren Menge PCs durchgefuhrt¨ werden muss! Als erste Entscheidung vor der Installation steht die Wahl einer Linux-Distribution. Wir haben bereits in Abschnitt 1.4 die Sinnlosigkeit der Frage nach der besten Distribution diskutiert. Die Entscheidung wird sinnvollerweise z.B. von folgenden Faktoren abh¨angen: (Haupt)-Aufgabenbereich des Systems, vorhandene Hardware, Anzahl und Erfahrenheit der 8.1 Vorbereitung und Planung 8 INSTALLATION

Before we begin

Planung und Vorbereitung – Einsatzbereich des Sytems – Wahl einer Distribution – Wahl der Installationsvariante – Beschaffen der Installationsmedien (Software) – Kenntnis der Hardware

Protokollieren !!!

Folie 122

Benutzer, Verfugbark¨ eit von Dokumentation, Support, und Sicherheitsupdates, Vorkennt- nisse und Vorlieben des Administrators, und einigen anderen mehr. Hat man sich fur¨ eine Distribution entschieden, so stellt sich als n¨achste Aufgabe, die entsprechenden Installationsmedien zu beschaffen. Diese h¨angen allerdings von der Wahl der Installationsvariante ab. Im Wesentlichen gibt es zwei M¨oglichkeiten, Linux zu installieren; entweder lokal von einer CD-Rom oder einer Festplattenpartition oder ub¨ er ein Netzwerk. Letzteres setzt allerdings eine ad¨aquate Netzwerkanbindung voraus; eine Netzwerkinstalla- tion ub¨ er Modem ist nicht m¨oglich, ub¨ er Telekabelanschluß nur teilweise empfehlenswert. Allerdings kann man bei der Netzwerkinstallation davon ausgehen, daß man immer die ak- tuellste Variante der Software installiert; installiert man von CD oder DVD, so muss man nachher oft einiges an Updates einspielen, um die Software zu aktualisieren. Details ub¨ er Installationsvarianten und die Beschaffung der Installationsmedien finden sich auf den ent- sprechenden Folien. Als n¨achster wichtiger Schritt stellt sich die Aufgabe, die verwendete Hardware genau zu kennen. Das ist einerseits wichtig fur¨ die Planung des System-Layouts (z.B. sollte man vor der Planung der Partionierung der Festplatte ub¨ er deren Gr¨oße Bescheid wissen), anderer- seits zur Optimierung der Konfiguration, sollte der Installer die Hardware nicht richtig er- kennen. Insbesondere Kenntnis der Grafikkarte und der Spezifikation des Monitors sind sehr wichtig. Schließlich sollte man sich, am besten schon vor dem Kauf der Hardware, auf der Hardware-Compatibility-Liste (am besten der gew¨ahlten Distribution) der Unterstutzung¨ fur¨ das entsprechenden Produkt versichern. Wie kommt man zur ben¨otigten Information ub¨ er die Hardware? Wichtigste Quelle ist die mitgelieferte Dokumentation. Ist diese entweder nicht (mehr) vorhanden oder unvoll- st¨andig, so kann man fur¨ verschiedene Komponenten (Prozessor, Festplatte, . . . ) die n¨otige Information aus dem BIOS beziehen oder im Internet die Homepage des entsprechenden Herstellers besuchen. Zu bemerken ist hier, daß Produkte, die gleich heissen, nicht mit iden- tischer Hardware bestuc¨ kt sein mussen!¨ Oft produziert ein Hersteller mehrere Serien des- ” selben“ Produkts, die aber mit unterschiedlichen Chips bestuc¨ kt werden. Ob ein Treiber verfugbar¨ ist oder nicht h¨angt aber naturlic¨ h ganz zentral von der tats¨achlich verwendeten Hardware ab. Ist bereits ein Betriebssystem vorinstalliert, so k¨onnen die entsprechenden Tools ver- wendet werden (z.B. Systemsteuerung in MS-Windows). Selbstverst¨andlich besteht auch immer die M¨oglichkeit, einen Schraubenzieher zur Hand zu nehmen, die entsprechenden

105 8.1 Vorbereitung und Planung 8 INSTALLATION

Installationsvarianten

lokale Installation – CD-Rom – Festplatte

Netzwerkinstallation – Nfs – Http – Anonymes Ftp

Bootmedium – CD-Rom, DVD – Boot-Diskette (eventuell verschiedene je nach Installationsart)

Folie 123

Linux Quellen

Homepage der Distribution (www.linux.org/dist/index.html, www.distrowatch.com)

lokale Mirrorserver – ftp.univie.ac.at Ftp-Server der Uni Wien – gd.tuwien.ac.at Ftp-Server der TU Wien (Goodie Domain)

CD-Rom kaufen/runterladen (Iso-Images) und brennen

Folie 124

106 8.2 Ub¨ erblick ub¨ er die Installation 8 INSTALLATION

Komponenten auszubauen und direkt auf der Platine (z.B. Grafikkarte, Netzwerkkarte) die Herstellerinformation zu lesen.

Kenne deine Hardware

Prozessor und RAM (Swap-Partition)

Festplatte (Platzbedarf, Partitionierung)

SCSI-Adapter (Treiber)

Netzwerkkarte (Treiber)

Tastatur (dt./engl.)

Maus (seriell, PS2, USB, 2/3 Tasten)

Grafikkarte (Chip, Speicher)

Monitor (vertikale und horizontale Bildwiederholraten) Hardware-Compatibility-Liste!!!

Folie 125

8.2 Ub¨ erblick ub¨ er die Installation Hier wird erkl¨art, welche Schritte prinzipiell bei der Installation eines Linux-Systems durch- zufuhren¨ sind. Die genaue Reihenfolge h¨angt teilweise von der Distribution bzw. der gew¨ahl- ten Installationsmethode ab. Ein Ub¨ erblick ub¨ er die Installationsschritte befindet sich auf Folie 126. Zun¨achst erkl¨aren wir den wichtigen Punkt der Partitionierung“ der Festplatten des Sy- ” stems. Auf Intel-basierten Systemen werden die Festplatten in verschiedene logische Teile, sogenannte Partitionen, geteilt; diese k¨onnen dann vom Betriebssystem wie eigene Festplat- ten angesprochen werden. Etwas detaillierter besteht jede Festplatte aus einem Master Boot Record (erster Sektor), einer Partitionstabelle (zweiter Sektor) und dem Datenbereich. Dieser Datenbereich kann in bis zu vier prim¨are Partitionen aufgeteilt sein. Eine davon kann eine sogenannte erweiterte (extended) Partition sein, die wiederum bis zu 12 logische Partitionen enthalten kann. Jede prim¨are, nicht erweiterte sowie jede logische Partition kann ein eigenes Filesystem enthalten, das jeweils von verschiedenem Typ (FAT16, FAT32, ext2, . . . ) sein kann. Es k¨onnen sogar verschiedene Betriebssysteme auf den verschiedenen Filesystemen installiert sein. Die einzige Einschr¨ankung ist, daß einige Betriebssysteme von prim¨aren Partitionen booten wollen. Die erste IDE-Festplatte (oder das erste IDE-Ger¨at, es kann sich etwa auch um ein CD- Rom Laufwerk handeln), d.h. das Master-Device am ersten IDE-Controller wird unter Linux /dev/hda genannt, die zweite (Slave am ersten IDE-Controller) /dev/hdb usw, w¨ahrend die SCSI und SATA Gr¨ate mit /dev/sda, /dev/sdb usw. bezeichnet werden. Die vier prim¨aren Partitionen auf einer Festplatte heißen /dev/?d?[1-4], die logischen Partitionen werden mit /dev/?d?5 usw. bezeichnet. Unter Linux k¨onnen Partitionen mit fdisk, einem sehr m¨achtigen und stabilen Werk- zeug, erstellt werden. Ein etwas benutzerfreundlicheres Interface besitzt cfdisk; eine grafi- sche Oberfl¨ache (allerdings eine eingeschr¨ankte Funktionalit¨at) bietet der Disk Druid, der von vielen Installern verwendet wird. Die Linux-Partitionierungstools sind in der Lage, alle in der MS-Welt verbreiteten sowie viele Unix-ublic¨ he Partitionen zu erstellen. Als Faustregel gilt jedoch, daß man xy-Partitionen mit dem Partitionierungstool des xy-Betriebssystems

107 8.2 Ub¨ erblick ub¨ er die Installation 8 INSTALLATION

Installationsschritte

0. Repartitionieren der Festplatte(n) (freier Plattenplatz ben¨otigt) 1. Installationsmedium booten

2. Installationsmenu/-programm¨ durchlaufen (sehr distributionsspezifisch)

Auswahl Sprache, Tastatur, Maus

Linux-Partitionen erstellen

Dateisystem erzeugen

Auswahl der zu installierenden SW

Minimale Konfiguration

Bootloader konfigurieren/installieren 3. Booten des neuen Systems 4. Basiskonfiguration

Folie 126

108 8.2 Ub¨ erblick ub¨ er die Installation 8 INSTALLATION

erstellen sollte. Insbesondere kann fdisk von DOS unter Linux erstellte FAT-Partitionen nicht l¨oschen. Um ein Linux-System zu installieren, ben¨otigt man (ublic¨ herweise) zumindest zwei Par- titionen; eine Rootpartition fur¨ das System und eine Swappartition (Auslagerungsspeicher auf der Festplatte). Je nach Verwendung des Systems ist es jedoch gunstig,¨ Teile des File- systems auf weitere Partitionen aufzuteilen (siehe auch 3.7). Wir geben auf Folie 127 einen Ub¨ erblick ub¨ er Partitionierungsstrategien und zeigen ein echtes“ Beispiel auf den Folien ” 130 und 131. Auf Folien 128, 129 sind die Namen fur¨ Laufwerke unter Linux erkl¨art. Wichtig ist, daß man die Partitionierung der Festplatten gut plant. Eine Anderung¨ zu einem sp¨ateren Zeitpunkt ist—wenn ub¨ erhaupt m¨oglich—ein aufw¨andiges und eher riskantes Unternehmen, das man besser vermeiden sollte. Im Lieferumfang (fast) aller Linux-Distributionen befindet sich das DOS-Tool FIPS zum Verkleinern bereits bestehender (nicht voller) FAT-Partitionen. Dies erm¨oglicht die Installa- tion eines Linux-Systems, auch wenn bereits alle Festplatten des Systems partitioniert sind. Fur¨ NTFS-Partitionen verwendet man ntfsresize oder ein propriet¨ares Programm (wie z.B. PartitionMagic).

Partitionierungsstrategien

Zwei Partitionen werden ben¨otigt: – Rootpartition (System) – Swapspace (Auslagerungsspeicher)

Ub¨ erlegenswerte Punkte (Sicherheit) – Swappartition ≈ 2×RAM – Trennen der Bootpartition /boot von Rootpartition – Trennen der Rootpartition (/ ) vom Großteil des Systems (/usr) – Trennen der Benutzerdaten ( /home) von Systemdaten – Trennen der spool/log-Dateien (/var) von der Rootpartition – Trennen der tempor¨aren Dateien (/tmp) von der Rootpartition

Folie 127

Als n¨achsten Punkt behandeln wir das Booten des Installationsmediums (der Boot- vorgang wird im Detail in Kapitel 9.1 erkl¨art). Zun¨achst muß die Entscheidung fur¨ ein Bootmedium (Diskette, CD-Rom) getroffen werden. Die CD kann entweder in einem Fach- gesch¨aft gekauft oder aus dem Internet heruntergeladen (sogenannte Iso-Images) und ge- brannt werden. Diese CDs sind bootf¨ahig, allerdings muß diese Funktion vom BIOS (Basic Input/Output System) unterstutzt¨ und aktiviert werden. Booten von der CD ist allerdings nur im Falle einer lokalen Installation sinnvoll. Anderenfalls sind Bootdisketten zu ver- wenden. Diese Boot-Images sind ebenfalls im Lieferumfang der Distribution enthalten, also auf der CD oder im Internet zu finden. Manche Distributionen verwenden (aufgrund der

109 8.2 Ub¨ erblick ub¨ er die Installation 8 INSTALLATION

Laufwerke unter Linux

Ger¨at Name 1. Floppy /dev/fd0 A: 2. Floppy /dev/fd1 B:

1. IDE-Festplatte (primary master) /dev/hda 1. Prim¨are Part. /dev/hda1 C: 2. Prim¨are Part. /dev/hda2 3. Prim¨are Part. /dev/hda3 4. Prim¨are Part. /dev/hda4 Erweiterte Part. 1. Logische Part. /dev/hda5 E: 2. Logische Part. /dev/hda6 G: . . .

Folie 128

110 8.2 Ub¨ erblick ub¨ er die Installation 8 INSTALLATION

Ger¨at Name 2. IDE-Festplatte (primary slave) /dev/hdb 1. Prim¨are Part. /dev/hdb1 D: . . . 1. Logische Part. /dev/hdb5 F: . . . 3. IDE-Festplatte (secondary master) /dev/hdc 4. IDE-Festplatte (secondary slave) /dev/hdd

1. SCSI-Festplatte /dev/sda 1. Prim¨are Part. /dev/sda1 . . . 2. SCSI-Festplatte /dev/sdb . . .

Folie 129

Ein typisches” Beispiel ”

[root@banach /root]# df Filesystem 1024-blocks Used Available Capacity Mounted /dev/hda1 248847 90903 145094 39% / /dev/hda5 2974519 502400 2318299 18% /home /dev/hda7 248847 131 235866 0% /tmp /dev/hda6 1981000 864498 1014090 46% /usr

Welche Partition wohin gemountet wird: /etc/fstab

Folie 130

111 8.3 Installation eines Linux-Systems 8 INSTALLATION

[root@banach /root]# /sbin/fdisk /dev/hda Command (m for help): p Disk /dev/hda: 255 heads, 63 sectors, 788 cylinders Units = cylinders of 16065 * 512 bytes

Device Boot Start End Blocks Id System /dev/hda1 * 1 32 257008+ 83 Linux native /dev/hda2 33 788 6072570 5 Extended /dev/hda5 33 415 3076416 83 Linux native /dev/hda6 416 670 2048256 83 Linux native /dev/hda7 671 702 257008+ 83 Linux native /dev/hda8 703 718 128488+ 82 Linux swap /dev/hda9 719 734 128488+ 82 Linux swap

Folie 131

Notwendigkeit, verschiedene Treiber zur Verfugung¨ zu stellen) verschiedene Boot-Images fur¨ lokale oder Netzwerkinstallationen bzw. fur¨ Notebooks. Die Boot-Images k¨onnen nicht normal“ auf Diskette kopiert werden. Unter DOS muß das Tool RAWRITE verwendet werden, ” das mit jeder Linux-Distribution mitgeliefert wird (ACHTUNG: funktioniert nicht im DOS- Fenster unter WinNT). Unter Linux wird der Befehl dd if=Inputfile of=Outputfile [Optionen] (Data Dumper) verwendet, z.B. \$ dd if=bootnet.img of=/dev/fd0 bs=1440k. Das Bootmedium enth¨alt einen minimalen Linux-Kernel, der zun¨achst in den Speicher geladen wird. Dann wird ein schlankes Linux-System gestartet, das w¨ahrend des weiteren Installationsvorgangs l¨auft. Manche Distributionen verwenden eine zweite Diskette, auf der dieses System gespeichert ist oder laden die entsprechenden Dateien von der CD oder ub¨ er das Netzwerk. Da die Festplatten des PCs zu diesem Zeitpunkt noch nicht verwendet werden k¨onnen, wird das System auf einer virtuellen Platte – die im RAM angelegt wird (RAM- Disk) – betrieben. Nach der Erkennung und Initialisierung der Hardware wird das Installationsprogramm gestartet, das bei den (allermeisten) Distributionen menugesteuert¨ ist. Meist hat man auch (auf einer Parallelkonsole) eine einfache Shell zur Verfugung.¨ Fehlermeldungen und ein Pro- tokoll der Installation werden ebenfalls vielfach auf einer Parallelkonsole ausgegeben. Die Folien beschreiben die grundlegenden Schritte, die vom Installer jeder Distribution durchgefuhrt¨ werden. Die genaue Reihenfolge ist jedoch sowohl von der verwendeten Distri- bution als auch der Installationsvariante abh¨angig. So muß die Netzwerkkonfiguration ganz am Anfang der Netzwerkinstallation stehen. Schließlich wird nach Abschluß des Installationsprozesses das neue System gebootet. Einige Hinweise dazu finden sich auf Folie 136.

8.3 Installation eines Linux-Systems In diesem Abschnitt wird in einer Serie von Folien der gesamte Verlauf einer Linux- Installation am Beispiel eines RedHat-Systems (Version 7.0) detailliert dargestellt. Die gew¨ahlte Installationsart ist lokal von einem CD-Rom-Laufwerk. Die CD-Rom dient auch als Bootmedium. Bei dem PC handelt es sich um einen Standard-PC (virtuell von VMware emu- liert; Host-Betriebssystem ist RedHat Linux 6.1 auf einem ASUS-7400 Notebook mit einer Intel-Celeron-CPU mit 400MHz und 96MB RAM) mit folgenden Hardware-Spezifikationen:

112 8.3 Installation eines Linux-Systems 8 INSTALLATION

1. Booten des Installationsmediums

Bootdiskette; erstellen mittels – RAWRITE (DOS) oder – dd if=image of=/dev/dfd0 bs=1440k (Linux) eventuell verschieden fur¨ lokale, Netzwerk-Installation und PCMCIA

CD-Rom (nur fur¨ lokale Installation) Was genau passiert

Kernel wird ins RAM geladen

minimales Linux-System auf RAM-Disk eventuell als 2. Diskette, CD-Rom oder Netz (dann vorher Konfiguration der Netzwerkkarte)

HW-Erkennung und Initialisierung

Starten des Installationsprogramms

Folie 132

113 8.3 Installation eines Linux-Systems 8 INSTALLATION

2. Installationsmenu/-programm¨

Basiskonfiguration – Sprache – Tastatur

Auswahl der Installationsmethode – lokal: CD-Rom oder Festplatte – Netz: Ftp, Http, Nfs

Netzwerkkonfiguration – dynamisch mittels DHCP – statisch: ben¨otigt wird

¡ IP-Adresse ¡ Netzmaske ¡ Default Gateway ¡ Prim¨arer Nameserver

Folie 133

114 8.3 Installation eines Linux-Systems 8 INSTALLATION

Auswahl der Installationsart – vorgefertigte Installation (Server/Workstation) – Custom

Partitionieren der Festplatte

Mountpoints festlegen

Formatieren der Festplatte

Weitere Konfiguration – Hostname – Maus (USB/seriell/PS2, 2/3 Button) – Zeit (GMT+Zeitzone) – Rootpaßwort (!!!) – User-Accounts (optional)

Folie 134

115 8.3 Installation eines Linux-Systems 8 INSTALLATION

Konfiguration des X-Window-Systems – Grafikkarte (Type, Speicher) – Monitor (Type, vertikale und horizontale Bildwiederholfrequenz) – Bildschirmaufl¨osung und Farbtiefe

Konfiguration des Bootmanagers (grub oder lilo) – Master Boot Record oder Linux-Bootpartition – welche Betriebssysteme booten

Ausw¨ahlen der Software – langwieriger Schritt – Plattenplatz? Sicherheit!

Folie 135

116 8.3 Installation eines Linux-Systems 8 INSTALLATION

3. Booten des neuen Systems

Bootmanager-Prompt Menu¨ bei grub; lilo: TAB zeigt eine Liste verfugbarer¨ OS

genaues Verfolgen der Bootmessages (sp¨ater dmesg bzw. /var/log/messages)

als root User-Accounts einrichten

ROOT * NUR Administration * NIEMALS Arbeiten * NIE X starten! – adduser name – grafische Tools (linuxconf, webmin, . . . )

System stoppen (rebooten) – shutdown -h(-r) now – auf Textkonsole – NIEMALS . . .

Folie 136

117 8.3 Installation eines Linux-Systems 8 INSTALLATION

Abbildung 1: Booten des Rechners

Intel Celeron, 400MHz

48MB RAM

IDE-Festplatte, 1.5GB

Standard-ATAPI-CD-Rom

Standard-VGA-Grafikkarte

LCD-Panel, 1024x768

W¨ahrend der Vorlesung wird eine analoge Installation live“ durchgefuhrt.¨ Wir geben ” hier einen Index der einzelnen Schritte/Abbildungen. 1. Booten des Rechners

2. RedHat Bootup-Screen 3. Booten des Linux-Kernels 4. Sprachauswahl 5. Konfiguration der Tastatur 6. Konfiguration der Maus 7. RedHat Welcome-Screen

8. Installationsoptionen (wir w¨ahlen Custom-System) 9. Partitionierungswerkzeug w¨ahlen (wir w¨ahlen das m¨achtigere aber unelegantere Tool fdisk) 10. Partitionen erstellen (mit fdisk)

118 8.3 Installation eines Linux-Systems 8 INSTALLATION

Abbildung 2: RedHat Bootup-Screen

11. Festlegen der Mountpoints

12. Ausw¨ahlen der zu formatierenden Partitionen 13. Konfiguration des Boot-Loaders 14. Netzwerkkonfiguration 15. Konfiguration der Systemzeit 16. Rootpaßwort und Accountkonfiguration 17. Konfiguration der Authentifizierung 18. Paketauswahl (Ub¨ ersicht) 19. Paketauswahl (Detail) 20. Monitorkonfiguration

21. Konfiguration des GUI (Grafikkarte, Aufl¨osung,. . . ) 22. Beginn der Paketinstallation

23. Formatieren der ausgew¨ahlten Partitionen 24. Paketinstallation 25. Postinstallations-Konfiguration 26. Erstellen der Bootdiskette 27. Ende der Installation

119 8.3 Installation eines Linux-Systems 8 INSTALLATION

Abbildung 3: Booten des Linux-Kernels

Abbildung 4: Sprachauswahl

120 8.3 Installation eines Linux-Systems 8 INSTALLATION

Abbildung 5: Konfiguration der Tastatur

Abbildung 6: Konfiguration der Maus

121 8.3 Installation eines Linux-Systems 8 INSTALLATION

Abbildung 7: RedHat Welcome-Screen

Abbildung 8: Installationsoptionen

122 8.3 Installation eines Linux-Systems 8 INSTALLATION

Abbildung 9: Partitionierungswerkzeug w¨ahlen

Abbildung 10: Partitionen erstellen (mit fdisk)

123 8.3 Installation eines Linux-Systems 8 INSTALLATION

Abbildung 11: Festlegen der Mountpoints

Abbildung 12: Ausw¨ahlen der zu formatierenden Partitionen

124 8.3 Installation eines Linux-Systems 8 INSTALLATION

Abbildung 13: Konfiguration des Boot-Loaders

Abbildung 14: Netzwerkkonfiguration

125 8.3 Installation eines Linux-Systems 8 INSTALLATION

Abbildung 15: Konfiguration der Systemzeit

Abbildung 16: Rootpaßwort und Accountkonfiguration

126 8.3 Installation eines Linux-Systems 8 INSTALLATION

Abbildung 17: Konfiguration der Authentifizierung

Abbildung 18: Paketauswahl (Ub¨ ersicht)

127 8.3 Installation eines Linux-Systems 8 INSTALLATION

Abbildung 19: Paketauswahl (Detail)

128 8.3 Installation eines Linux-Systems 8 INSTALLATION

Abbildung 20: Monitorkonfiguration

Abbildung 21: Konfiguration des GUI

129 8.3 Installation eines Linux-Systems 8 INSTALLATION

Abbildung 22: Beginn der Paketinstallation

Abbildung 23: Formatieren der ausgew¨ahlten Partitionen

130 8.3 Installation eines Linux-Systems 8 INSTALLATION

Abbildung 24: Paketinstallation

Abbildung 25: Postinstallations-Konfiguration

131 8.3 Installation eines Linux-Systems 8 INSTALLATION

Abbildung 26: Erstellen der Bootdiskette

Abbildung 27: Ende der Installation

132 8.3 Installation eines Linux-Systems 8 INSTALLATION

Abbildung 28: lilo-Bootmanager

Hier ist nun die eigentliche Installation abgeschlossen! Wir k¨onnen nun das neue System booten. (Die CD muß naturlic¨ h aus dem Laufwerk entfernt werden.) Die n¨achsten Abbildungen zeigen diesen Vorgang:

1. lilo-Bootmanager 2. Booten des neuinstallierten Systems 3. Grafisches Login

133 8.3 Installation eines Linux-Systems 8 INSTALLATION

Abbildung 29: Booten des neuinstallierten Systems

Abbildung 30: Grafisches Login

134 9 Grundlegende Systemkonfiguration

In diesem abschließenden Kapitel wird die grundlegende Kofiguration der Systemdienste eines Linux-Systems erkl¨art. Nach einem Abschnitt ub¨ er das Starten und Stoppen des Systems erkl¨aren wir insbesondere die ersten Konfigurationsschritte nach der (Neu-)Installation. Besonderes Au- genmerk legen wir auf elementare Sicherheit (Abschalten nicht ben¨otigter Services) und das h¨andische Nachinstallieren einzelner (Update-)Pakete.

9.1 Startup und Shutdown Nachdem wir bereits mehrmals erkl¨art haben, wie man ein Multitasking- und Multiuser- System nicht auschaltet, erl¨autern wir hier, wie man dies tats¨achlich tut und vor allem, was w¨ahrend Systemstart und -stop passiert und wie man diese Vorg¨ange beeinflussen kann. Wir beginnen mit dem Systemstart. Nach dem Einschalten des Computers wird zun¨achst das BIOS (Basic Input/Output System) aktiviert. Dieses kleine Programm ist auf einem EEPROM (Electrically Erasable Programmable Read-Only Memory) auf dem Mainboard gespeichert. Es fuhrt¨ einige grund- legende Hardwarechecks durch, setzt einige Parameter und pruft¨ die vorhandenen Boot- Ger¨ate (Floppy, Festplatte, CD-Rom). Das BIOS ist ub¨ er ein Setup-Menu,¨ das w¨ahrend des Bootens meist mittels -Taste aktiviert werden kann, konfigurierbar. Schließlich l¨adt das BIOS den MBR (Master Boot Record) des festgelegten Boot-Ger¨ates.

Linux Startup Flow

Power

BIOS

MBR

Kernel

init

Ready

Folie 137

Der Master Boot Record ist der erste Sektor des entsprechenden Massenspeicherger¨ats und enth¨alt Software, um das entsprechende Betriebssystem zu booten. Im Falle von Linux ist dies meist grub oder lilo. Er gibt einen Bootprompt aus, an dem das gewunsc¨ hte zu bootende Betriebssystem gew¨ahlt werden kann und diesem zus¨atzliche Parameter ub¨ ergeben 9.1 Startup und Shutdown 9 KONFIGURATION

BIOS

Basic Input/Output System

in EEPROM am Mainboard gespeichert

Setup mittels beim Booten

l¨adt Optionen (Bootdevices)

minimaler HW Check

l¨adt Master Boot Record

Folie 138

Master Boot Record

erster Sektor des Bootger¨ats

liest Partitionstabelle

l¨adt aktive Partition (default)

Boot-Loader des OS (grub, lilo, NTLDR)

Folie 139

136 9.1 Startup und Shutdown 9 KONFIGURATION

werden k¨onnen. Der Default-Master-Boot-Record hingegen liest nur die Partitionstabelle des Ger¨ats ein und ub¨ ergibt die Kontrolle an die aktive Partition, von dieser wird dann das entspechende System gebootet. Die Bootmanager verfugen¨ ub¨ er weitreichende Konfigurationsm¨oglichkeiten; so ist es m¨oglich, den Zugriff (auch zu bestimmten Konfigurationen) ub¨ er ein Passwort zu schutzen,¨ und das Verhalten beim Booten anderer Betriebssysteme zu beeinflussen. grub wird in dem (je nach Distribution an verschiedener Stelle zu findenden) Konfigurationsfile (grub/menu.lst) konfiguriert, lilo in lilo.conf. Wichtig ist es, daß der Bootmanager das Filesystem auf dem sich der zu ladende Betriebssystemkern befindet, verwenden kann (hier hat grub eindeutig die Oberhand), und es unter Umst¨anden auch entsprechend de- komprimieren kann. Einzelheiten findet man in der Dokumentation der Bootmanager. Der Boot-Loader beendet seine Arbeit mit dem Einlesen der gew¨ahlten Boot-Partition in den Speicher. Im Falle von Linux wird dabei der (komprimierte) Kernel (/boot/vmlinuz) geladen, entkomprimiert sich selbst und beginnt mit der Arbeit. Zun¨achst erkennt und initialisiert er die Hardware des Systems, schaltet die CPU in den Multitasking-Mode, startet (Low-Level) das Netzwerk und mountet die Rootpartition des Systems. Dann startet er die Mutter aller Prozesse init mit PID=1 sowie einige weiter spontane Prozesse. Danach startet der Kernel nie wieder einen Prozeß, sondern ist in der in Kapitel 2 beschriebenen Funktionsweise fur¨ das Management“ des Systems verantwortlich. W¨ahrend des Bootens ” schreibt der Kernel Meldungen auf die Konsole, die ub¨ er Erfolg oder Fehler Auskunft geben; diese k¨onnen sp¨ater (im laufenden Betrieb) mittels dmesg, oder in /var/log/messages, manchmal auch in /var/log/boot, erneut angesehen werden. Der weitere Startup-Fluß l¨auft somit ub¨ er init. Dieser Prozeß liest zun¨achst das Konfi- gurationsfile /etc/inittab ein. Es wird das Default-Runlevel festgelegt, wobei unter Runle- vel ein Betriebszustand des Systems verstanden wird, der jeweils eine bestimmte Funktions- weise definiert. Die Nummerierung der Runlevels kann von der Distribution abh¨angen; Im Falle von RedHat bedeutet Runlevel 3 normaler Multiuserbetrieb, Runlevel 5 Multiuserbe- trieb mit grafischem Login, Runlevel 0 bzw. 6 ist der Shutdown bzw. Reboot und Runlevel 1 ist der sogenannte Single User Mode, der dem Administrator den Betrieb des Systems ohne Multiuser-Umgebung erm¨oglicht; dieser wird vor allem bei grundlegenden Eingriffen in die Konfiguration des Systems verwendet, z.B. ist es sinnvoll, daß kein Benutzer einlog- gen kann, w¨ahrend root nach einem Festplattencrash die Benutzerdaten vom Backup auf eine neue Platte einspielt. Statt in den Default-Runlevel zu starten, kann man durch den Bootmanager auch in andere Runlevel starten; ub¨ ergibt man in den Kernel-Optionen ein single, so wird in den Single-User-Mode gestartet. Auch kann man das verwendete init ub¨ erschreiben, zB durch init=/bin/bash (noch ein guter Grund, den Bootmanager durch ein Passwort zu schutzen,¨ ist aber fur¨ ein genugend¨ zerschossenes“System manchmal die ” letzte Rettung). init startet alle fur¨ das gesetzte Runlevel in /etc/inittab vorgesehenen Programme und Systemdienste. Zun¨achst wird ublic¨ herweise das fur¨ alle Runlevels vorgesehen Skript /etc/rc.sysinit oder /etc/rc.d/rc.sysinit abgearbeitet (Setzen des Hostnamens, Nis- Domainnames, Netzwerkkonfiguration, Festplattencheck, Mounten der lokalen Festplatten- partitionen, . . . ). Dann werden der Reihe nach die verschiedenen Systemdienste gestartet. Die meisten Linux-Systeme folgen hierbei dem System-V-Standard, der vorsieht, daß alle Dienste ub¨ er eigene Scripts gestartet werden; diese befinden sich in /etc/rc.d/init.d/ oder /etc/init.d/. In den Directories /etc/rc.d/rc?.d/ bzw. /etc/rc?.d/, wobei ?“ ” fur¨ die Nummer des Runlevels steht, befinden sich jeweils fur¨ die in diesem Runlevel zu aktivierenden Dienste Links auf die Scripts in /etc/(rc.d/)init.d/. Die Namen der Links lauten SnnDienst, wobei S“ fur¨ Start“ steht, die zweistellige Zahl nn“ die Reihenfolge ” ” ” festlegt und Dienst das jeweilige Programm meint, z.B.

$ ls -l /etc/rc.d/rc3.d S30sendmail -> ../init.d/sendmail K35atalk -> ../init.d/atalk

Analog dazu werden die Dienste beim Verlassen des entsprechenden Runlevels mit Links der Form KnnDienst gestoppt. Die einzelnen Systemdienste und wie man sie in verschie-

137 9.1 Startup und Shutdown 9 KONFIGURATION

Booten des Kernels

(komprimierter) Kernel geladen /boot/vmlinuz

Hardware erkennen und aktivieren

schaltet in Multitasking-Betrieb

mountet Rootpartition

startet init mit PID 1

Meldungen auf Konsole; dmesg

Folie 140

init

Mutter aller Prozesse

liest Konfiguration aus /etc/inittab

startet alle Programme furs¨ Runlevel – /etc/rc.d/rc.sysinit – /etc/rc.d/rc?.d/ – /etc/rc.d/rc.local

startet Login-Programme

Folie 141

138 9.1 Startup und Shutdown 9 KONFIGURATION

/etc/inittab (1)

# Default runlevel. The runlevels used by RHS are: # 0 - halt (Do NOT set initdefault to this) # 1 - Single user mode # 2 - Multiuser, without NFS (The same as 3, if you do not have networking) # 3 - Full multiuser mode # 4 - unused # 5 - X11 # 6 - reboot (Do NOT set initdefault to this) # id:5:initdefault:

Folie 142

# System initialization. si::sysinit:/etc/rc.d/rc.sysinit

l0:0:wait:/etc/rc.d/rc 0 . . l6:6:wait:/etc/rc.d/rc 6

# Trap CTRL-ALT-DELETE ca::ctrlaltdel:/sbin/shutdown -t3 -r now

# Run gettys in standard runlevels 1:2345:respawn:/sbin/mingetty tty1 2:2345:respawn:/sbin/mingetty tty2 3:2345:respawn:/sbin/mingetty tty3 4:2345:respawn:/sbin/mingetty tty4 5:2345:respawn:/sbin/mingetty tty5 6:2345:respawn:/sbin/mingetty tty6

# Run xdm in runlevel 5 # xdm is now a separate service x:5:respawn:/etc/X11/prefdm -nodaemon

Folie 143

139 9.2 Systemdienste 9 KONFIGURATION

denen Runlevels aktiviert bzw. deaktiviert, werden im Abschnitt 9.2 genauer besprochen. Schließlich wird als letztes Startup-Skript /etc/rc.d/rc.local ausgefuhrt,¨ das dem Admi- nistrator die M¨oglichkeit bietet, eigene Konfigurationen ub¨ ersichtlich ins allgemeine Schema einzubringen.

Starten der Services

init rc.sysinit

/etc/inittab rc[0-6].d SnnDienst

getty [1-6] KnnDienst

Folie 144

init spannt nach dieser Initialisierung der Systemdienste die getty-Prozesse auf, die auf das Login der User auf der Konsole warten; gegebenenfalls wird auch der grafische Login xdm aufgespannt. Aufspannen“ bedeutet hier, daß diese Prozesse gestartet werden und init ” ihre Existenz ub¨ erwacht. Stirbt der Prozeß, so wird er neu gestartet. Das garantiert, daß ein neues Login zur Verfugung¨ steht, selbst wenn ein Benutzer es schafft, alle seine“ Prozesse ” zu killen. Wie bereits angedeutet ist der System-Shutdown durch einen Wechsel des Runlevels auf 0 (Halt) oder 6 (Reboot) zu bewerkstelligen. Dies kann man entweder direkt durch Senden des entsprechenden Signals an den init-Prozeß (init 0 oder telinit 0 bzw. 6) oder komfortabler durch den shutdown-Befehl. Seine Syntax ist: shutdown [-rh] time [warning-message], wobei die Option -h bzw -r fur¨ halt“ bzw. reboot“ stehen. time“ ist der Zeitpunkt ” ” ” des Shutdowns, der im Format hh:mm absolut oder +m angegeben werden muß; now“ ” ist ein alias fur¨ +0. Der Shutdown bzw. Reboot kann auch durch die Befehle halt bzw. reboot eingeleitet werden. Eine weitere M¨oglichkeit ist oft beim grafischen Login durch ein Menu¨ gegeben. Je nach Konfiguration des Systems ist der Shutdown nur fur¨ root oder fur¨ eine Gruppe von Benutzern oder auch alle Benutzer erlaubt. Gem¨aß dem Eintrag in /etc/inittab ist ein Reboot auch durch den 3-Finger-Griff (Affengriff) auf einer Textkonsole (nicht im GUI) m¨oglich.

9.2 Systemdienste In diesem Abschnitt beschreiben wir die wichtigsten Systemdienste und erkl¨aren, wie sie im laufenden Betrieb und in der Konfiguration der einzelnen Runlevels gestartet und gestoppt werden k¨onnen. Details ub¨ er die einzelnen Dienste (Daemonen) und ihre Konfiguration werden im zweiten Teil der Vorlesung behandelt. Der wichtigste aller Dienste ist naturlic¨ h init, den wir bereits ausfuhrlic¨ h behandelt haben. Weitere wichtige Dienste sind:

140 9.2 Systemdienste 9 KONFIGURATION

getty, xdm: Auch diese Dienste haben wir schon kennengelernt; hier die etwas vollst¨andigere Beschreibung. getty ist fur¨ das Login auf der Konsole verantwortlich. init startet fur¨ jede Konsole ein eigenes getty. Dieses liest den Benutzernamen und startet das Programm login, das dann das Paßwort einliest. Stimmt alles, so startet login die Shell (Eingabeaufforderung). Stirbt login (wenn sich der Benutzer wieder ausloggt, oder das Passwort falsch eingegeben wurde), so startet init getty erneut. xdm ist in analoger Weise fur¨ das grafische Login verantwortlich.

syslogd, klogd: Der Kernel und andere Prozesse produzieren eine Vielzahl an Fehler- , Warn- und weiteren Meldungen, die teilweise recht wichtig sein k¨onnen. Damit diese sp¨ater gelesen werden k¨onnen (vielleicht sogar viel sp¨ater) schreibt der Dae- mon syslogd diese Meldungen in die entsprechenden Logfiles; das wichtigste ist /var/log/messages. syslogd schreibt aber nicht alle Meldungen in eine Datei, son- dern sortiert diese nach Art und Gewicht gem¨aß seiner Konfiguration in verschiedene Dateien. klogd ist speziell fur¨ Kernel-Meldungen zust¨andig.

cron, at: Viele Benutzer wollen gewisse Aufgaben/Programme regelm¨aßig ausfuhren.¨ Dafur¨ ist cron zust¨andig. Dieser Dienst wacht einmal in der Minute auf, um nach- zuschauen, ob ein Auftrag auszufuhren¨ ist. Diese Programme arbeiten selbst¨andig (ohne Benutzereingabe). Die Ausgabe erfolgt mittels E-Mail an den Benutzer, der den Auftrag erstellt hat. Die Auftr¨age k¨onnen mittels crontab manipuliert werden. at funktioniert ¨ahnlich, nur daß er die Aktion genau einmal ausfuhrt.¨

lpd, cupsd: sind Drucker-Daemonen (je nach verwendeten Drucksystem, normaler- weise nur einer!). Er ub¨ erwacht die Druckerwarteschlange und ist fur¨ das Ausfuhren¨ und Queuen der Druckaftr¨age zust¨andig. Er kann auch als Druckserver ub¨ er ein Netz- werk agieren.

(x)inetd: steht fur¨ Internetdaemon. Er ub¨ erwacht viele der ub¨ er das Netzwerk einlau- fenden Anfragen, stellt gem¨aß seiner Konfiguration ihre Rechtm¨aßigkeit fest und star- tet den entsprechenden Server, der die Anfrage ub¨ ernimmt, z.B. in.telnetd, in.ftpd, in.talkd fur¨ eingehende telnet-, ftp- und talk-Anfragen. Einige gr¨oßere Netzwerk- dienste laufen nicht ub¨ er den inetd, sondern sind als Stand-Alone-Server konzipert. Beispiele dafur¨ sind – httpd, der WWW-Server, – sshd, der Secure Shell Server, – sendmail, der BSD E-Mail Transport Agent (Mailserver), – smbd, nmbd, die Samba-Daemonen, – portmap, der RPC-Portmaper (C-Remote Procedure Call), grundlegend fur¨ NFS- und nis-Dienste – rpc.mountd, rpc.statd, nfsd, rpc.lockd, rpc.quotad, . . . , Services fur¨ das Network File System (NFS), – ypbind, ypserv Client und Server fur¨ das Network Information Service.

kswapd: managt die Benutzung des Swapspeichers.

autofs: ist ein Dienst, um lokale (Floppy, CD-Rom) oder Netzwerk-Laufwerke auto- matisch zu mounten, wenn sie ben¨otigt werden.

apmd, acpid sind die Daemonen, um ub¨ er Advanced Power Management bzw. das Advanced Con- figuration and Power Interface verschiedenes zu automatisieren. Darunter f¨allt auf Laptops die Ub¨ erwachung der Stromversorgung.

Alle oben angefuhrten¨ Systemdienste und Daemonen werden am saubersten und komfor- tabelsten ub¨ er die entsprechenden Startup- und Shutdown-Skripts in /etc/(rc.d/)init.d gesteuert. Die meisten Skripts k¨onnen (von root) mit den Optionen start, stop, restart

141 9.2 Systemdienste 9 KONFIGURATION

sowie manchmal status oder reload aufgerufen werden; die Bedeutungen sind selbster- kl¨arend (siehe auch Folie 146). Einer Reihe von Daemonen k¨onnen mittels kill verschiedene Signale ub¨ ermittelt werden. Detaillierte Auskunft darub¨ er findet man auf den entsprechen- den Manpages. Welche Prozesse und Daemonen laufen, kann mittels ps aux(ww) abgefragt werden (siehe dazu auch Abschnitt 6.3).

Wichtige Systemdienste

getty, xdm (Login)

kswapd (Swap)

klogd, syslogd (Logging)

crond, atd (Scheduling)

lpd (Drucker)

(x)inetd (Internet Daemon)

sshd, httpd

sendmail

smbd, nmbd (Samba)

portmap (RPC) – nfsd, rpc.mountd, rpc.statd, rpc.lockd (NFS) – ypbind, ypserv (YP, NFS)

Folie 145

Zum Konfigurieren der einzelnen Runlevels ist es im Prinzip notwendig, entsprechende Links in den Directories anzulegen. Um das nicht h¨andisch machen zu mussen,¨ stehen dem Administrator eine Reihe von Tools zur Verfugung.¨ Diese und ihre Syntax werden auf Folie 147 vorgestellt. Bei einem neu installierten System ist aus Sicherheitsgrunden¨ vor allem darauf zu ach- ten, daß keine unben¨otigten (und hier vor allem Netzwerk-) Dienste mit unzureichender Konfiguration laufen. Installiert man z.B. den WWW-Server, so wird er per default in den Runlevels 3 und 5 aktiviert. Er l¨auft dann mit einer Defaultkonfiguration, die oft sicherheits- relevante Fehler oder Luc¨ ken aufweist. Dies gilt vor allem auch fur¨ den Daemon sendmail, den inetd und die nfs-Dienste. Es ist unbedingt zu empfehlen, nur jene Dienste laufen zu lassen, die tats¨achlich auch ben¨otigt werden, das minimiert einerseits das Risiko erfolgreicher Hackerattacken und erh¨oht andererseits die Performance des Systems. Abschließend erw¨ahnen wir noch, daß fur¨ die allermeisten Konfigurationsarbeiten vor allem dem unerfahrenen Benutzer eine Reihe von grafischen Tools zur Verfugung¨ stehen; S.u.S.E.-Systeme werden vollst¨andig ub¨ er yast konfiguriert.

142 9.2 Systemdienste 9 KONFIGURATION

Systemdienste kontrollieren (1)

Starten, Stoppen,. . . – /etc/(rc.d/)init.d/dienst mit Optionen start, stop, restart, reload oder status z.B. /etc/rc.d/init.d/sendmail restart – kill [signal] z.B. HUP, SIGHUP, . . .

Anzeigen ps aux, ps auxww | less

Folie 146

Systemdienste kontrollieren (1)

Textkonsole (bei Fedora) – chkconfig --level 123456 Dienst on|off – chkconfig --list Dienst

oder grafisch; viele Tools, Desktopumgebungen haben meist eines integriert.

Folie 147

143 9.3 Softwareinstallation 9 KONFIGURATION

9.3 Softwareinstallation Die meisten Linux-Distributionen verfugen¨ ub¨ er ein Tool, das es erlaubt auf einfache und ub¨ erschaubare Art und Weise Softwarepakete zu installieren, zu deinstallieren und upzugra- den (man Spricht auch von Software-Paketmanagement). Ein weit verbreitetes Tool ist der ursprunglic¨ h von RedHat entwickelte rpm Package Manager rpm, der aber auch von vielen anderen Distributionen verwendet wird. Wir geben hier eine Kurzeinfuhrung¨ in die Benut- zung des rpm; einige der fortgeschrittenen Funktionsweisen und Optionen behandeln wir im zweiten Teil der Vorlesung. Hier geht es vor allem um das Upgrade von Softwarepaketen, das aus folgendem Grund auch bei neuinstallierten Systemen von großer Wichtigkeit ist: Da Linux ein Open-Source-Betriebssystem ist und der Quellcode st¨andig von einer Viel- zahl vom Programmierern weiterentwickelt wird, werden in relativ kurzen Abst¨anden vor allem sicherheitsrelevante Bugs bekannt. Die Distributoren geben dann in der Regel in- nerhalb weniger Tage neue Softwarepakete (sogenannte Updates) heraus, die diese Fehler korrigieren. Diese k¨onnen von der Homepage der entsprechenden Distribution herunterge- laden werden. Es ist von großer Wichtigkeit, zumindest grobe Bugs und Sicherheitsm¨angel durch Einspielen der Updates auszur¨aumen. Diese Prozedur, die auch automatisiert werden kann, wird durch das Verwenden des rpm wesentlich erleichert. Dieser verwendet ein eigenes (ub¨ erraschenderweise rpm genanntes) Format der Softwarepakete, das neben der leichten Installation auch erm¨oglicht, Abh¨angigkeiten zwischen einzelnen Paketen zu beruc¨ ksichti- gen. Darub¨ erhinaus wird am System eine rpm-Datenbank angelegt, in der Informationen ub¨ er die installierten Pakete gespeichert werden; das Speichern der Versionsnummer eines rpm-Pakets, die auch am Dateinamen ersichtlich ist, erm¨oglicht ein einfaches Upgrade der Pakete. Die Basis-Syntax von rpm wird auf Folie 149 erkl¨art.

Updates

Bugs, Sicherheitsm¨angel ausbessern

auf der Homepage der Distributionen

rpm auf vielen Systemen

automatisierbar autorpm, autoget

Folie 148

144 9.3 Softwareinstallation 9 KONFIGURATION

RedHat Package Manager-Basics

rpm -i|U|F[hv] Paket [Optionen]

– -i|U|F install, upgrade, freshen – Paket z.B. initscripts-4.70-1math – Optionen: --test, --nodeps --force

Files z.B. apache-1.3.12-2.i386.rpm

Folie 149

145