Linux-Grundlagen

Inhaltsverzeichnis

Vorbemerkungen

Die folgende Seite soll vor allem Anfängern und Umsteigern von Microsoft Windows einige Grundlagen des Betriebssystems Linux vermitteln und diesen den Einstieg in die Nutzung dieser Alternative erleichtern. Dabei möchte ich nicht einzelne Distributionen besprechen sondern nur die Grundlagen dieses Betriebssystems erläutern. Hinweise auf Unterschiede zwischen einzelnen Distributionen werde ich natürlich geben. Zusätzlich ist zu bemerken, dass sich viele der hier beschriebenen Dinge auch auf andere unixoide Betriebssysteme anwenden lassen.


Tux, das Linux Maskottchen

Mit Linux haben Sie ein Betriebssystem, das in seiner Grundkonfiguration weitaus besser gegen die allgegenwärtigen Bedrohungen aus dem Internet abgesichert ist als Microsoft Windows. Allerdings möchte ich hier auch gleich mit einigen immer wieder ausgesprochenen Märchen aufräumen. Linux ist zwar von seiner Grundkonfiguration und seiner Grundkonzeption sicherer als Windows in dessen Grundkonfiguration. Jedoch hängt es grundsätzlich vom Benutzer selbst ab, wie sicher sein System bleibt, bzw. wie sicher sein System konfiguriert ist. Das größte Problem bezüglich der Comptuersicherheit sitzt vor der Tastatur und nicht dahinter! Wer meint, "Jetzt arbeite ich mit Linux, und schon deshalb kann meinem Rechner nichts mehr passieren", ist völlig auf dem Holzweg. Nur mit dem Verständnis der grundlegenden Mechanismen unixoider Betriebssysteme, und dazu gehört Linux, kann man die Sicherheitsstandards auch halten, die bei der Installation vorgegeben wurden. Wer an der falschen Stelle "schraubt" und nicht weiß, was er da eigentlich tut, kann auch einen Linux-Rechner schnell zu einer Spam- und Malware-Schleuder umfunktionieren, ohne dass er etwas davon merkt.


Grundsätzliches

Sehr häufig wird das, was man aus dem Internet herunterladen oder auch auf CDs/DVDs in Computerzeitschriften erhalten kann, generell als Linux bezeichnet. Das ist so nicht ganz richtig. Linux ist, streng genommen, eigentlich nur der Betriebssystemkern (englisch: kernel) zusammen mit den so genannten Kernel-Modulen, bei denen es sich im Wesentlichen um Treiber für die Kommunikation mit der Hardware handelt. Allein mit diesem Betriebssystemkern kann man aber noch nicht allzuviel anfangen. Es werden auch noch Programme gebraucht, mit denen das System bedient werden kann. Neben den Systemprogrammen, die unmittelbar zur Bedienung des Betriebssystemkerns benötigt werden und die ebenfalls dem Begriff Linux zugerechnet werden, gehört dazu auch die Shell, ein Kommandozeilen-Interpreter, ähnlich der DOS-Eingabeaufforderung unter Windows, jedoch mit weitaus umfangreicherer Funktionalität. Unter Linux stehen verschiedene Shells zur Verfügung. Die Standard-Shell unter Linux wird bash genannt. Dieser Betriebssystemkern einschließlich der zusätzlichen Komponenten steht für die unterschiedlichsten Rechnerarchitekturen zur Verfügung, unter Anderem auch für Großrechneranlagen.

Das Ganze wäre jetzt noch eine ziemlich karge Angelegenheit mit der der normale Benutzer noch herzlich wenig anfangen könnte. Hier kommen die Distributionen ins Spiel. Das was Sie sich aus dem Internet herunterladen oder auch auf CDs/DVDs in Computerzeitschriften bekommen können, sind solche Distributionen, die neben dem eigentlichen Linux viele weitere Programme und auch natürlich grafische Benutzeroberflächen enthalten Zusätzlich bieten diese Distributionen komfortable Installationsroutinen, mit denen Linux samt einer meist recht sinnvollen Software-Auswahl auf den Rechner installiert werden kann. Einen, sicherlich nicht vollständigen, überblick über die wichtigsten Distributionen finden Sie hier. Eine recht umfangreiche Informationssammlung zum Thema Linux, der historischen Entwicklung und auch weiterführende Links finden Sie auf Wikipedia.de.

Linux und die meiste in den Distributionen enthaltene Software sind frei. Das bedeutet, dass dafür keinerlei Geld bezahlt werden muss. Dennoch kann man die verschiedensten Distributionen auch kaufen, jedoch bezieht sich dieser Kaufpreis, den man dann entrichtet nicht, auf die Software selbst sondern auf die Zusammenstellung der Distribution, den Datenträger und das mitgelieferte Dokumentations-Material. Die meiste Software der Distributionen sowie auch Linux selbst steht unter der GNU Public Licence (GPL), die, kurz zusammengefasst, etwa Folgendes aussagt: Die Software ist frei und kann nur frei zusammen mit ihrem Quellcode weitergegeben werden. Sie darf auch verändert und den eigenen Bedürfnissen angepasst werden. Gibt man diese veränderte und erweiterte Software dann weiter, so unterliegt sie automatisch wieder der GPL.

Daneben gibt es auch kommerzielle Distributionen z. B., RedHat oder SuSE, bei denen die eigentliche Software zum größten Teil ebenfalls frei verfügbar ist, man jedoch für den entsprechenden Support bezahlen muss.

Linux ist von seiner Konzeption her sehr stark an Unix angelehnt, einem Betriebssystem, das von der amerikanischen Firma AT&T Anfang der siebziger Jahre des zwanzigsten Jahrhunderts entwickelt wurde, also lange bevor Bill Gates in seiner Garage das Werkeln anfing. Anders als andere unixoide Betriebssysteme ist es aber als eigenständige Entwicklung zu sehen, denn es basiert nicht wie andere Betriebssysteme dieser Art, wie die verschiedenenen BSD-Derivate, HPUX von Hewlett-Packard, AIX von IBM, OpenSolaris von Sun Microsystems oder auch das MAC OS X für den Apple Macintosh, auf dem bis Anfang der achziger Jahre frei zugänglichen Quellcode von AT&T.

Wie sein Vorbild Unix ist Linux von Haus aus als waschechtes Mehrbenutzersystem konzipiert. Es können also grundsätzlich mehrere Benutzer gleichzeitig an einem Computer arbeiten. Dies ist natürlich an einem PC nicht so einfach zu bewerkstelligen, da ja normalerweise auch nur ein Monitor und eine Tastatur/Maus an einem solchen Gerät angeschlossen sind, lässt sich aber recht leicht nachvollziehen. Drücken Sie einfach einmal die Tastenkombination Strg-Alt und dann irgendeine Funktionstaste (das sind die Tasten, die mit F und einer Zahl (1-12) beschriftet sind). Auf jeder dieser Funktionstasten liegt ein (virtuelles) Terminal, von denen eines (abhängig von der Distribution, die Sie verwenden) mit der grafischen Benutzeroberfläche verbunden ist. Dieses kann bei den verschiedenen Distributionen auf unterschiedliche Funktionstasten und damit Terminals gelegt sein, bei Debian z. B. ist es die Taste F7.

Das Mehrbenutzerkonzept

Neben den normalen Benutzern auf einem Linux-System gibt es die verschiedensten Benutzer, die bereits bei der Installation der Distribution angelegt werden. Die meisten dieser Benutzer sind keine realen Menschen sondern Systembenutzer, unter deren Rechte die unterschiedlichsten Dienste im Hintergrund laufen. Diese Dienste werden bei unixoiden Betriebssystemen als Dämonen (engl.: daemons) bezeichnet. Außerdem gibt es grundsätzlich einen Benutzer im System der Alles darf, den Systemverwalter (engl: superuser) mit dem Benutzernamen root. Auf manchen Systemen wie z. B. Ubuntu und verwandten Distributionen ist dieser Benutzer nicht direkt zugänglich, sondern ein normaler Benutzer übernimmt diese Rolle. Dieser muss dann aber bei der Ausführung von Befehlen, die root-Berechtigung erfordern, sein Passwort erneut eingeben. Der Mechanismus, über den dies geschieht, wird sudo genannt. Bei anderen Distributionen wie Debian oder auch OpenSuSE wird bei der Installation das Passwort dieses allmächtigen Benutzers festgelegt, und man kann direkt unter der Benutzerkennung root arbeiten. Allerdings verhindern manche Distributionen z. B. Debian aus Sicherheitsgründen das Arbeiten als root unter der grafischen Benutzeroberfläche. Dies ist auch nicht notwendig, denn man kann Befehle bzw. Programme, zu deren Ausführung root-Rechte gebraucht werden, auch aus der normalen Arbeitsumgebung heraus aufrufen. Man muss dann halt das root-Passwort eingeben, sofern bei der Installation des Systems ein Passwort für den Superuser festgelegt worden ist. Unter Distributionen, bei denen für den Superuser kein Passwort festgelegt wurde, muss man in der Regel das Passwort des Benutzers nochmals eingeben, der berechtigt ist, mittels sudo zu arbeiten, wenn man Befehle oder Programme aufruft, die root-Rechte benötigen. Bei den meisten Linux-Distributionen, die verhindern, dass direkt als root gearbeitet werden kann, ist dieser Benutzer der, der als erster bei der Installation angelegt wurde.

Jeder Benutzer gehört einer oder mehreren Gruppen an. Unter Debian und Ubuntu und verwandten Distributionen wird beim Anlegen eines Benutzers gleichzeitig eine Gruppe mit dem selben Namen wie der Benutzer angelegt, die dann die primäre Gruppe dieses Benutzers ist. Unter OpenSuSE sind alle Benutzer Mitglieder der Gruppe users. Die Gruppenzugehörigkeit zu anderen zusätzlichen Gruppen steuert unter Anderem auch, was der jeweilige Benutzer alles darf. Hüten Sie sich allerdings davor, Ihre Gruppenzugeörigkeit zu ändern, bevor Sie sich nicht näher mit den Zugriffsberechtigungen beschäftigt haben und sich sicher sind, welche Folgen dies nach sich zieht. Weisen Sie Ihr Benutzerkonto keinesfalls selbst der Gruppe root zu, da Sie ansonsten Sicherheitsprobleme bekommen. Sie hätten dann die gleiche hochgefährliche Situation wie jene Windows-Benutzer, die dauernd nur mit Administratorenrechten angemeldet sind, was leider in der Standard-Einstellung von Windows von Haus aus der Fall ist. Siehe auch Windows absichern auf dieser Website.

Zugriffsrechte

Basierend auf der Tatsache, dass Linux ein Mehrbenutzersystem ist, muss natürlich auch der Zugriff auf die Dateien des Systems und der Daten der jeweiligen Benutzer so geregelt sein, dass nur der Benutzer auf Daten zugreifen kann, für die er auch die entsprechende Berechtigung hat. Ebenso muss die Erlaubnis für die Ausführung von Befehlen gesteuert sein, denn nicht jeder normale Benutzer darf alle im System verfügbaren Befehle auch nutzen, und das ist auch gut so. Seien Sie also grundsätzlich vorsichtig mit dem ändern von Benutzerrechten und tun Sie dies nur, wenn sie genau wissen was Sie tun!

Dateiberechtigungen

Um dies zu steuern liegen auf den Dateien (und natürlich sind auch Befehle bzw. Programme in Dateien gespeichert) spezielle Informationen. Jede Datei kennt 3 Einheiten von Zugreifenden, 1. den Eigentümer der Datei (u), 2. dessen Gruppe (g) und 3. den Rest der Welt (o). Außerdem besitzt jede Datei 3 Zugriffsarten für jeden dieser 3 Zugreifenden: r (lesen), w (schreiben) x (ausführen). Wie sie schon hier sehen, unterscheidet sich dieses Konzept in einem Punkt deutlich von Microsoft Windows. Unter Linux/Unix bestimmt das Recht x (ausführen) einer Datei, ob und von wem dieses Programm ausgeführt werden kann. Selbst geschriebene Programme oder auch Shell-Skripte müssen also explizit mit dem Recht x (für ausführen) versehen werden, sonst können sie nicht gestartet werden. Unter Windows ist dafür die Dateinamenserweiterung verantwortlich.

Die Zugriffsberechtigungen von Dateien und Ordnern lassen sich entweder über eine symbolische Notation darstellen oder in Form (oktaler) Zahlen. Lesen bedeutet 4, schreiben 2 und ausführen 1. Dazu zwei Beispiele:

Angenommen eine Datei hat die Dateirechte 640 in nummerischer Notation, z. B. ein Datendatei die vom Eingentümer gelesen und geschrieben werden darf, die Gruppe darf lesen, der Rest darf gar nichts..


Berechtigung / werEigentümerGruppeRest
Lesenjajanein
Schreibenjaneinnein
Ausführenneinneinnein
Summe4+2+0=64+0+0=40+0+0=0
symbolische Notationrw-r-----
BedeutungDer Eigentümer darf die Datei lesen und schreiben.
Die Gruppe darf lesen.
Der Rest darf nichts.

Angenommen eine Datei hat die Dateirechte 755 in nummerischer Notation, z. B. ein Programm, das von allen Benutzern ausgeführt werden darf.


Berechtigung / werEigentümerGruppeRest
Lesenjajaja
Schreibenjaneinnein
Ausführenjajaja
Summe4+2+1=74+1=54+1=5
symbolische Notationrwxr-xr-x
BedeutungDer Eigentümer darf die Datei lesen, schreiben und ausführen.
Der Rest darf lesen und ausführen aber nicht schreiben.

Ordner müssen immer das Recht ausführen (für den Eigentümer bzw. die Gruppe und/oder den Rest der Welt) besitzen, sonst kann nicht in das betreffende Verzeichnis gewechselt werden.

Weiterhin sollte man wissen, dass die Berechtigungen eines übergeordneten Ordners Vorrang vor den Berechtigungen seines Inhalts, also den darin enthaltenen Unterordnern bzw. Dateien haben.

Sonderrechte

Zusätzlich zu den beschriebenen Dateirechten gibt es noch Sonderrechte. Bei der nummerischen Notation sieht man das an einer weiteren Zahl, die den drei Ziffern für den Eigentümer, der Gruppe und den Rest der Welt vorangestellt wird. In den meisten Fällen steht dort nämlich eine 0, die deshalb oft weggelassen wird. Aus diesem Grund werden die Berechtigungen in der nummerischen Notation auch oft nur dreistellig angegeben.

Auch hier kommen wieder die Zahlen 4 2 und 1 und bliebige Summen daraus vor. Die ersten beiden betreffen vor Allem ausführbare Dateien, also Programme.
Die 4 bedeutet setuid und bewirkt, dass diese Datei mit den effektiven Benutzerrechten des Benutzers ausgeführt wird, dem die Datei des Programms gehört, also nicht mit den Rechnten des Benutzers, der das Programm gestartet hat.
Die 2 bedeutet setgid und bewirkt, dass diese Datei mit den effektiven Gruppenrechten der Datei ausgeführt wird, also nicht mit den Rechten dessen, der das Programm startet.
Die 1 das sogenannte sticky bit kann zweierlei bewirken. Bei ausführbaren Dateien hat das sticky bit den Effekt, dass das Programm nach seiner Beendigung im Speicher gehalten wird. Weitaus häufiger wird es jedoch bei normalen (nicht ausführbaren) Dateien eingesetzt. Dort bewirkt es, dass eine solche Datei nur von dem Benutzer gelöscht werden kann, der diese Datei auch erzeugt hat.

In der symbolischen Notation schaut das Ganze folgendermaßen aus:

Beschreibungnummerische Notationsymbolische NotationEffekt
setuid4755rwsr-xr-xProgramm wird mit den Benutzerrechten
des Eigentümers gestartet
setgid2755rwxr-sr-xProgramm wird mit den Benutzerrechten
der Gruppe des Eigentümers gestartet
sticky bit1666rw-rw-rwTDatei kann von Allen gelesen und geschrieben,
aber nur vom Eigentümer gelöscht werden

Obwohl die Verwendung von setuid und setgid in manchen Situationen äußerst nützlich sein kann, birgt dieser Mechanismus auch gewisse Risiken. Die meisten Dateien, die Programme enthalten, gehören dem Superuser root. Dennoch werden vor Allem Prozesse, die im Hintergrund ablaufen, die sogenannten Dämonen, aus Sicherheitsgründen meist unter einer anderen Benutzerkennung (meistens sind dies solche von Systembenutzern) gestartet. Dies verhindert, dass die allumfassenden Rechte des Superusers bei Sicherheitsproblemen dazu missbraucht werden können, dem System Schaden zuzufügen. Setzt man solche Programmdateien allerdings setuid, hebelt man diesen Sicherheitsmechanismus aus.

Neben diesen Grundrechten, die jede Datei hat bzw. haben kann, besteht noch die Möglichkeit Access Controll Lists (ACLs) für den Zugriff auf Dateien anzulegen. Bei manchen Distributionen muss diese Funktionalität extra installiert werden. Dabei kann man zusätzlichen Benutzern bzw. Gruppen Rechte an Dateien und Verzeichnissen zuweisen. Auch die Zuweisung dieser Zugriffskontrollisten lässt sich sowohl in der Shell als auch mit den Dateimanagern der grafischen Benutzeroberflächen bewerkstelligen.

Und in der Praxis?

In der Praxis werden wohl die meisten Linux-Benutzer mit einer der grafischen Benutzeroberflächen arbeiten. Das Ändern von Benutzerrechten geht dort recht einfach mit Hilfe der verchiedenenen Dateimanager. Generell lege ich jedoch allen Benutzern unixoider Betriebssysteme nahe, sich etwas mit der Shell zu befassen. Oft geht das Arbeiten mit den Systembefehlen sehr viel schneller als dies über die grafischen Benutzeroberflächen möglich ist. Für das Ändern der Benutzerrrechte sind vor Allem die beiden Befehle chmod (change modus) und chown (change owner) zu erwähnen. Wie bei allen Befehlen kann man sich die Beschreibung der Verwendung dieser Befehle in den so genannten manpages ansehen. Diese kann man aufrufen, indem man in der Shell man gefolgt von einem Leerzeichen und dem Befehl, von dem man die Beschreibung sehen will, eingibt und die Eingabetaste drückt. In den meisten Distributionen stehen die manpages auch auf deutsch zur Verfügung.

Seien Sie grundsätzlich vorsichtig beim Ändern von Benutzerrechten. Solange Sie in Ihrem eigenen Home-Verzeichnis (siehe unten) etwas ändern, betrifft das nur Ihre eigenenen Daten bzw. eventuell Ihre Benutzereinstellungen. Lassen Sie aber auf jedenfall die Finger davon, in anderen Ordnern (Verzeichnissen) an den Benutzerrechten zu schrauben, solange Sie sich nicht absolut sicher sind, was Sie da tun. Unüberlegtes Ändern von Berechtigungen in diesem Bereich führt mit Sicherheit zu Sicherheitsproblemen, bzw. kann auch dazu führen, dass Ihr System völlig unbrauchbar wird. In der Regel sind die in diesen Ordnern festgelegten Benutzerrechte der Dateien durch die Distribution vorgegeben und sollten auch nicht geändert werden.

Dateiorganisation

Das Erste, was Umsteigern von Windows bezüglich der Daten auf der Festplatte bei Linux und auch anderen unixoiden Betriebssystemen auffallen dürfte, ist das Fehlen der gewohnten Laufwerksbuchstaben. Es werden überhaupt keine Laufwerke angezeigt, sondern nur ein Baum von Verzeichnissen (den Ordnern in Windows entsprechend). Wie schon im Kapitel Installation eines Linux-Client-Rechners beschrieben, werden die verschiedenen Partitionen in Ordner innerhalb dieses Verzeichnisbaums eingehängt und erscheinen dort als ganz normale Ordner. Da der normale Benutzer eigentlich nicht wissen muss, wie seine Datenträger aufgeteilt (partitioniert) sind, spielt dies auch eigentlich keine Rolle. Einzig bei Wechseldatenträgern wie USB-Sticks, Memory-Cards oder optischen Datenträgern wie CDs DVDs oder Blue-Ray-Disks ist es natürlich wünschenswert, den Ordner zu wissen, wo man diese Datenträger (als Ordner) finden kann. Der Standard-mount-point ist hier der Ordner /media (siehe unten). Wechseldatenträger erscheinen allerdings unter grafischen Benutzeroberflächen als Symbole, so dass der Benutzer normalerweise nicht in die Orderstruktur reinschauen muss. Allerdings ist es bei Server-Systemen nur dem Benutzer root erlaubt, Wechseldatenträger in das Dateisystem einzuhängen. Und da solche Systeme in der Regel ohne grafische Benutzeroberfläche laufen (wozu auch?), sollte der Superuser schon wissen, wo seine Wechseldatenträger zu finden sind. Muss man doch mal nachschauen, wie die Festplatte(n) des Rechners partitioniert ist (sind), genügt ein Blick in die Datei /etc/fstab.

Die Ordnung innerhalb dieses Verzeichnisbaums ist bei allen Distributionen wiederzufinden und unterscheidet sich auch nur unwesentlich von anderen unixoiden Betriebssystemen. Dieser Verzeichnisbaum beginnt mit dem Wurzelverzeichnis (/), auch root genannt (nicht zu verwechseln mit dem Systemverwalter gleichen Namens und dessen eigenem Home-Verzeichnis mit ebenfalls dem gleichen Namen (/root) (siehe unten)). Der zweite Unterschied ist das Zeichen, das die einzelnen Ordnern bzw. Dateien in einem Pfad voneinander trennt. Unter allen unixoiden Betriebssystemen ist dies der Schrägstrich (englisch: slash) und nicht der umgekehrte Schrägstrich (englisch: backslash), wie es bei Windows der Fall ist. Ein weiterer Unterschied, der nicht gleich so augenscheinlich ist, ist die Tatsache, dass bei Namen von Ordnern und Dateien bei unixoiden Betriebssystemen zwischen Groß- und Kleinschreibung unterschieden wird. Die betrifft natürlich auch Befehle, die in der Shell eingegeben werden, da diese Befehle ja auch in Form von Programmdateien auf der Festplatte gespeichert sind.

Eine weitere Besonderheit, die Umsteigern von Windows ungewohnt erscheinen wird, ist die Notation so genannter versteckter Dateien. Während unter Windows dafür ein eigenes Dateiattribut verantwortlich ist, werden unter unixoiden Betriebssystemen Dateien, die mit einem Punkt (.) beginnen, als versteckte Dateien (oder auch Ordner) behandelt. Das bedeutet, dass solche Dateien oder Ordner normalerweise nicht sichtbar sind. Man kann sich solche Dateien aber auch anzeigen lassen, sowohl in den Dateimanagern der grafischen Benutzeroberflächen als auch mittels entsprechender Parameter der jeweiligen Shell-Befehle.

File System Hierarchy Standard

Die Ordner, die im Wurzelverzeichnis angelegt sind, entsprechen dem File System Hierarchy Standard und sind auf den meisten unixoiden Systemen anzutreffen. In alphabetischer Reihenfolge sind dies:

  • /bin enthält grundlegende ausführbare Programme (Systemprogramme).
  • /boot enthält statische Dateien und Dateien zur Konfiguration des Bootloaders.
  • /dev enthält Gerätedateien: Unter Unix/Linux gilt das Motto: Alles ist eine Datei. Dies betrifft auch Geräte, wie Festplatten, Partitionen, Maus, Tastatur, Drucker, Scanner etc.
  • /etc enthält Konfigurationsdateien und Skripte zum Start von Dämonen. Bei unixoiden Systemen liegen die Konfigurationsdateien alle als ganz normaler Text vor. Sie können also mit einem einfachen Texteditor bearbeitet werden.
  • /home enthält die Benutzerverzeichnisse. In diesen werden die Daten der Benutzer und auch die Konfigurationseinstellungen der Arbeitsoberfächen der jeweiligen Benutzer gespeichert. Die Daten der einzelnen Benutzer liegen in Unterordnern, die den Namen des jeweiligen Benutzers tragen. Diese Konfigurationsdateien liegen meist in Dateien oder Ordnern, die normalerweise nicht sichtbar sind. In den jeweiligen Dateimanagern gibt es aber immer eine Einstellmöglichkeit, um diese Dateien anzeigen zu lassen. Aktivieren Sie diese Option, so werden Sie sehen, dass die Namen aller dieser Verzeichnisse mit einem Punkt (.) beginnen. Solche Dateien oder Ordner sind in der normalen Ansicht nicht sichtbar und werden als versteckte Dateien bzw. Ordner bezeichnet. Das Verzeichnis /home sollte bei der Installation immer als eigene Partition angelegt werden. Das erspart einem dann viel Arbeit, wenn man zu einer anderen Distribution wechseln will oder auch bei einem größeren Upgrade auf neuere Versionen. Man kann in solch einem Fall dann ganz einfach die vorhandene Partition mit all den Daten und Einstellungen erneut als /home in das neue System einhängen.
  • /lib enthält die Module des Betriebssystemkerns (Kernel) und dynamische Bibliotheken die von Programmen benötigt werden.
  • /lib<Spezifikation> ist optional und enthält grundlegende dynamische Bibliotheken. Bei 64-bit-Systemen finden Sie hier das Verzeichnis /lib64.
  • /media ist der Mount-Point für auswechselbare Datenträger, wie CD/DVD-Laufwerke bzw. -Brenner, USB-Sticks oder USB-Festplatten etc.
  • /mnt ist der temporäre Mount-Point für Dateisysteme wie z. B. Netzwerkfreigaben von Servern.
  • /opt hier befinden sich zusätzliche Softwarepakete.
  • /root ist das Home-Verzeichnis des Superusers (root). Dieses liegt, anders als die Benutzerverzeichnisse der restlichen Benutzer, direkt im Wurzelverzeichnis (/). Der Grund dafür ist, dass, falls die Partition in der die Benutzerverzeichnisse der "normalen" Benutzer liegen, beim Systemstart nicht in das Dateisystem eingehängt werden können, der Superuser dennoch auf seine Dateien zugreifen kann.
  • /sbin enthält wichtige Systembefehle vorwiegend zur Benutzung durch den Superuser.
  • /srv enthält Daten, die von Diensten angeboten werden.
  • /tmp hier werden temporäre Dateien gespeichert.
  • /usr ist eine 2. Verzeichnisebene, in der sich einige Ordner gleichen Namens wiederfinden, wie sie auch schon im Wurzelverzeichnisses enthalten sind. Zusätzlich finden Sie darin ein Verzeichnis mit den Dokumentationen einzelner Programme unter Debian und Ubuntu und verwandten Distributionen ist das das Verzeichnis /usr/share/doc, unter OpenSuSE /usr/share/doc/packages, sofern die entsprechenden Dokumentationen mit installiert wurden. Die Dokumentationen liegen als Textdateien (manchmal auch gepackt) oder auch als HTML-Dateien vor.
  • /var enthält, wie der Name schon vermuten lässt, variable Daten z. B. auch die Protokolldateien (log-files) aber auch zwischengespeicherte Daten wie aus- und eingehende Mails und die Druckerwarteschlange.

Weitere Informationen zum File System Hierarchy Standard finden Sie bei Wikipedia.de.

Für den normalen Benutzer ist vor Allem sein eigenes Home-Verzeichnis von Bedeutung. Darin kann er anstellen, was er will. Jeder Benutzer hat sein eigenes Home-Verzeichnis und keinen Zugriff auf die Daten der anderen Benutzer. Das Home-Verzeichnis trägt den Namen des Benutzers und ist als Unterordner des Verzeichnisses /home angelegt. Neben den Dateien des Benutzers befinden sich in dessen Home-Verzeichnis auch alle Einstellungen, die der Benutzer vorgenommen hat. Diese sind für die einzelnen Programme meist in versteckten (siehe oben) Dateien oder Verzeichnissen gespeichert. Man kann natürlich unter /home auch andere Verzeichnisse anlegen (als root oder zumindest mit der entsprechenden Berechtigung) um z. B. von allen Benutzern gemeinsam genutzte Dateien zu speichern.

Nochmals möchte ich hier empfehlen, die Benutzerdaten, also alles, was unter /home gespeichert wird, auf eine eigene Partition zu legen. Dadurch wird gewährleistet, dass bei einem Umzug auf eine andere Linux-Distribution bzw. auf eine neuere Version diese dort gespeicherten Daten nicht verloren gehen, und man mit lieb gewordenen Einstellungen sofort weiterarbeiten kann.

Der Bootloader GRUB

Wenn ein Rechner startet, wird zuerst gesucht, auf welchem Datenträger ein Master Boot Record (MBR) vorhanden ist. Darin steht ein Verweis auf das Programm, das als erstes gestartet werden soll, den Bootloader. Unter Linux heißt dieser Bootloader grub. Früher wurde bei Linux-Systemen der Bootloder LiLo verwendet, den es zwar heutzutage auch noch gibt, der aber kaum mehr Verwendung findet.

Bei der Installation eines Linux-Client-Rechners wird der MBR angelegt und darin ein Verweis auf den Bootloader grub abgespeichert. War vorher schon ein anderes Betriebssystem installiert, z. B. Windows oder auch ein anderes Linux, wird der bereits vorhandene MBR ausgelesen und in eine Datei geschrieben. Die Information über dieses Betriebssystem wird zusätzlich in die Konfigurationsdatei von grub (bei älteren GRUB-Versionen /boot/grub/menu.lst, bei neueren /boot/grub/grub.cfg) eingetragen, damit auch dieses Betriebssystem zur Auswahl steht, wenn der Rechner startet. Ist Ihr Linux das einzige Betriebssystem auf dem Rechner wird bei manchen Distributionen das Auswahlmenü von grub gar nicht angezeigt. Andere bieten die zusätzliche Möglichkeit, Ihr System im Singel-User-Modus zu starten oder auch Testprogramme (memtest86, ein sehr nützliches Tool zur Überprüfung von Speicherbausteinen) laufen zu lassen. In der Konfigurationsdatei von grub können sehr viele Einstellungen vorgenommen werden. Seien Sie aber vorsichtig beim Experimentieren mit dieser Datei. Fehlerhafte Einträge können auch dazu führen, dass das System nicht mehr startet. Bevor Sie also hier etwas verstellen, sollten Sie sich intensiv mit den Manpages zu grub ud seiner Konfigurationsdatei beschäftigen und auch eine Sicherheitskopie der ursprünglichen Konfigurationsdatei anlegen.

Nach der Auswahl des gewüschten Betriebssystems (natürlich Linux), oder auch ohne dass Sie eine Auswahl vornehmen habenn (z. B, wenn Ubuntu als einziges Betriebssystem installiert ist), wird dann das eigentliche Linux gestartet.

Benutzeroberflächen

Die Standard-Oberfläche unter Linux ist die Shell, genauer gesagt eine bestimmte Shell, die bash. Dies ist ein Kommandozeilen-Interpreter, in dem Befehle ausgeführt werden können. Natürlich erwarten die Benutzer heutzutage eine etwas bequemere Art des Arbeitens mit einem Computer, weshalb auch grafische Benutzeroberflächen zur Verfügung stehen. Dennoch ist die Shell als Werkzeug für den Benutzer nicht überflüssig geworden. Obwohl so ziemlich alles, was zur Bedienung eines Linux-Computers nötig ist, mit Programmen der grafischen Benutzeroberflächen möglich ist, hat die Shell ihre Existenzberechtigung immer noch. Viele Arbeiten lassen sich mit ihr schneller erledigen als mit den Tools der grafischen Benutzeroberflächen.

Grafische Benutzeroberflächen

Unter Linux stehen diverse grafische Benutzeroberflächen zur Verfügung. Anders als bei Windows, wo man auf eine einzige grafische Benutzeroberfläche angewiesen ist, die auch verwendet werden muss (eine reine Textoberfläche gibt es nicht), hat man unter Linux die Freiheit unter verschiedenen zu wählen. Die beiden gebräuchlichsten grafischen Benutzeroberflächen sind zum einen KDE und Gnome. Grundlage für die grafischen Benutzeroberflächen bildet das X Window System (auch: X Version 11, X11, X), ein Standardprotokoll zum Bau eines grafischen Fenster-Systems. Der technische Unterschied ist der, dass KDE und Gnome unterschiedliche Bibliotheken nutzen. Die meisten Programme laufen unter beiden Benutzeroberflächen, so dass es letztendlich Geschmacksache ist, für welche man sich entscheidet. Zusätzlich bietet Linux die Möglichkeit KDE und Gnome nebeneinander zu installieren, so dass man besonders als Anfänger bequem beide ausprobieren kann, bevor man sich entscheidet, welchen Desktop man zu seinem bevorzugt genutzten macht. Umsteiger von Windows finden sich meist bei KDE schneller zurecht als unter Gnome, obwohl auch dessen Bedienung kein Hexenwerk ist. Beide Umgebungen stehen auch für andere unixoide Betriebssysteme zur Verfügung.

Beide Desktops bieten die Möglichkeit, sie mittels ihrer Kontrollzentren den eigenen Bedürfnissen sowohl in ihrem Aussehen als auch in ihrer Funktionalität anzupassen. Zusätzlich gibt es Erweiterungen, die diese grafischen Benutzeroberflächen mit 3D-Effekten versehen. Die Bedienung erfolgt mit der Maus und ist sehr intuitiv. Auch Anfänger werden sich sehr schnell in diesen Umgebungen zurechtfinden.

Für Anfänger und Umsteiger von Microsoft Windows wird anfangs etwas ungewohnt sein, dass man sich bei manchen Distributionen nicht als Systemadministrator (hier Superuser) an den grafischen Benutzeroberflächen anmelden kann. Diese Möglichkeit ist aus Sicherheitsgründen häufig deaktiviert. Allerdings ist dies auch nicht nötig, da Programme, die administrative Rechte benötigen, auch aus der Benutzeroberfläche eines normalen (dazu berechtigten) Users heraus aufgerufen werden können. Ist der direkte Zugang zum Superuser deaktiviert, wird dann das Passwort des Benutzers nochmals abgefragt. Dieser als sudo bezeichnete Mechanismus erlaubt es normalen Benutzern Befehle auszuführen, zu denen sie normalerweise nicht berechtigt wären. Je nach den Einstellungen, die in der Konfigurationsdatei /etc/sudoers vorgenommen wurden, wird dafür ein Passwort abgefragt oder auch nicht. Dies ist z. B. bei Ubuntu und verwandten Distributionen der Fall. Bei Distributionen, bei denen der Superuser zugänglich ist, kann man mittels des Kommandos su die Identität des Superusers annehmen. Bei der Benutzeroberfläche KDE z B. kann man mittels des Menü-Editors die Ausführung eines Programms mit Superuser-Rechten dadurch erreichen, indem man dem entsprechenden Befehl im Menü das Kommando kdesu voranstellt. Doch immer aufgepasst: Gehen Sie möglichst sparsam mit Superuser-Rechten um, denn wie auch im Glossar unter Superuser beschrieben, hat dieser umfassende Rechte und darf prinzipiell Alles.

Die verschiedenen grafischen Benutzeroberflächen besonders KDE und Gnome sind sehr intuitiv zu bedienen, und auch Anfänger kommen sehr schnell damit zurecht. Beim KDE mancher Distributionen sind Umsteiger von Microsoft Windows oft verwundert, dass Programme, die man als Symbole auf dem Desktop findet, mit einem einfachen Mausklick gestartet werden. Dies führt sehr oft dazu, dass die Benutzer, die gewohnt sind dies mittels eines Doppelklicks zu tun, auf einmal zwei Instanzen desselben Programms am Laufen haben. Sie können dies aber sehr schnell umstellen. öffnen Sie einfach das Kontrollzentrum und wählen Sie unter Geräte die Maus und stellen dort auf den gewohnten Doppelklick um.

Die Shell

Neben den verschiedenen grafischen Benutzeroberflächen gibt es unter Linux auch eine Eingabeaufforderung, die so genannte Shell. Unter Linux ist die bash die Standard-Shell. Daneben stehen natürlich auch weitere Shells, wie sie von anderen unixoiden Betriebssystemen bekannt sind, zur Verfügung. Obwohl heutzutage die meisten Aktionen von einer grafischen Benutzeroberfläche aus erfolgen, ist die Shell ein wichtiges Instrument auch für den normalen Benutzer, noch mehr Bedeutung hat sie natürlich für den Administrator (superuser). Mit ihr lassen sich bestimmte Aufgaben oft weitaus schneller erledigen als mit den Programmen der grafischen Benutzeroberflächen. Zudem lässt sich Linux auch gänzlich ohne grafische Benutzeroberfläche betreiben, was besonders bei Servern die Regel ist. Dies wird vor Allem deshalb gemacht, weil grafische Benutzeroberflächen die Resourcen eines Computers besonders belasten. So steht die Rechenleistung den Diensten zur Verfügung, die der Server anderen Rechnern anbietet. Die Bereitstellung möglichst leistungsfähiger Dienste stellt schließlich die ureigenste Aufgabe eines Servers dar und nicht die Präsentation einer aufwendig gestalteten Benutzeroberfläche.

Eine Shell können Sie erhalten, indem Sie zum Einen mittels der Tastenkombination Strg-ALT und einer der Funktionstasten zu einem anderen Terminal wechseln, bei dem Sie sich dann allerdings mit dem Benutzernamen und dem Passwort neu anmelden müssen (siehe oben Mehrbenutzerkonzept). Doch auch in den grafischen Benutzeroberflächen können Sie aus dem Hauptmenü heraus ein Terminal (Konsole) starten. Dort sehen Sie dann den sogenannten Prompt, an dem dann die Befehle eingegeben werden können, die Sie dann durch Drücken der Eingabetaste starten. Manche Programme, die aus der Shell heraus aufgerufen werden, arbeiten dann den gewünschten Befehl ab, und Sie landen wieder auf dem Prompt. Andere Programme starten und bieten Ihnen dann einen sogenannten Sekundärprompt an, an dem Sie dann Befehle eingeben können, die Ihnen dieses spezielle Programm zur Verfügung stellt. In der Regel kann man solche Programme dann wieder beenden, indem man am Sekundärprompt den Befehl exit oder quit eingibt und die Eingabetaste drückt. Wieder andere Programme bieten Ihnen eine Textoberfläche an, die über Menüs zu steuern ist.

Alle Programme arbeiten unter unixoiden Betriebssystemen streng nach dem EVA-Prinzip (Eingabe Verarbeitung Ausgabe). Dabei sind 3 Kommunikationskanäle vorhanden, die auch nummeriert sind: stdin (0) ist die Standardeingabe in der Regel die Tastatur, stdout (1) ist die Standardausgabe in der Regel der Bildschirm und stderr (2) die Standardausgabe für Fehlermeldungen ebenfalls in der Regel der Bildschirm.

Die generelle Kommando-Zeilen-Syntax lautet <befehlsname> [-<Optionen>] [<Argumente>], wobei die spitzen bzw. eckigen Klammern nicht mit eingegeben werden. Die spitzen Klammern bedeuten, dass z. B. für das Wort "befehlsname" der Name des jeweiligen Befehls einzusetzen ist, während die eckigen Klammern symbolisieren, dass diese Teile eines Befehls optional sind, d. h., sie werden nur benötigt, wenn man etwas an der Grundfunktionalität des jeweiligen Befehls verändern will.

Viele Befehle lassen sich also durch die einfache Eingabe des Befehlsnamens, gefolgt von eventuell zusätzlichen Optionen und/oder Befehlsargumenten und anschließendes Drücken der Eingabetaste ausführen. Obwohl diese Befehle in anderen Verzeichnissen liegen, als dem aktuellen, werden Sie dennoch ausgeführt. Die liegt an einer so genannten Umgebungsvariablen namens PATH, in der die Verzeichnisse abgelegt sind, in denen nach den eingegebenen Befehlen gesucht wird. Diesen Pfad können Sie sich anzeigen lassen, indem Sie Folgendes in der Shell eingeben: echo $PATH und anschließend die Eingabetaste drücken (vergessen Sie das Dollarzeichen vor der Umgebungsvariablen nicht, sonst wird Ihnen nur die Umgebungsvariable selbst ausgegeben und nicht ihr Inhalt). Die einzelnen Verzeichnisse sind durch Doppelpunkte voneinander getrennt. Befehle, die in diesen Verzeichnissen gespeichert sind, können ohne vorangestellten Verzeichnispfad aufgerufen werden.

Hier bedarf ein weiterer Unterschied zur Eingabeaufforderung bei Windows einer Erklärung: In der DOS-Eingabeaufforderung können Befehle, die im aktuellen Verzeichnis, also dem Verzeichnis, in dem sich der Benutzer gerade befindet, ohne Pfadangabe ausgeführt werden. Unter unixoiden Betriebssystemen ist dies nicht der Fall. Hier müssen Sie den Pfad auch voranstellen, wenn sich der Befehl (z. B. ein Shell-Skript oder ein selbstgeschriebenes Programm) im aktuellen Verzeichnis befindet. Allerdings ist es unnötig den gesammten Pfad des aktuellen Verzeichnisses dem Befehl voranzustellen. es genügt ./ (ein Punkt, gefolgt von einem Schrägstrich) vor das Kommando zu setzen, was bedeutet: Führe den Befehl im aktuellen Verzeichnis aus. BTW Vergessen Sie nicht, im angesprochenen Beispiel die Benutzerrechte eines Shell-Skripts oder selbstgeschriebenen Programms auf Ausführen zu setzen, sonst startet das Programm natürlich ebenfalls nicht, und Sie erhalten eine Meldung, dass Ihnen die Rechte zur Ausführung des Befehls fehlen.

Wichtige und nützliche Shell-Befehle und Kommandozeilen-Programme

Die folgende aphabetische Auflistung erhebt keinerlei Anspruch auf Vollständigkeit. Für die genaue Syntax der Befehle, Ihre Funktionalität und die Bedeutung eventueller Optionen rufen Sie bitte die manpages zu dem entsprechenden Befehl auf (man <Befehl>).

  • cat hängt Dateien aneinander an und gibt sie am Bildschirm aus. Gibt man nach cat nur einen Dateinamen an, so wird diese Datei direkt auf dem Bildschirm ausgegeben (englisch: concatenate).
  • cd Wechseln zu einem anderen Verzeichnis (Ordner) (englisch: cange directory).
  • chgrp ändern der Gruppenzugehörigkeit (englisch: change group).
  • chmod ändern der Benutzerrechte einer Datei oder eines Verzeichnisses (englisch: change mode).
  • chown ändern des Eigentümers einer Datei oder eines Verzeichnisses (englisch: change ownership).
  • cp Kopieren einer Datei oder eines Verzeichnisses (englisch: copy).
  • cpio Dateien in und aus Archiven kopieren (englisch: copy input / output).
  • date Anzeigen oder Einstellen des Systemdatums und der Systemzeit.
  • dd Kopieren und Konvertieren von Daten. Sehr interessant für die Erstellung von Images von Datenträgern (englisch: dump data).
  • df Zeigt den freien Speicherplatz an (englisch: disk freespace).
  • du Zeigt den belegten Speicherplatz an (englisch: disk usage).
  • dmesg Zeigt Meldungen des Betriebssystemkerns an (englisch: display messages).
  • echo Ausgabe von Texten auf dem Bildschirm.
  • exit Konsolenfenster schließen bzw. Arbeiten in der Konsole beenden (abmelden).
  • fdisk Verwalten und anlegen von Festplatten-Partitionen.
  • grep Extrahiert Zeilen aus einer Textdatei, die einem bestimmten Muster entsprechen (englisch: global/regular expression/print).
  • gzip Komprimiert und dekomprimiert Dateien.
  • head Anzeige der ersten Zeilen einer Datei.
  • host Ausgabe des zu einer IP gehörigen Rechnernamens und umgekehrt.
  • hostname Zeigen oder Setzen des aktuellen Computernamens.
  • kill Beenden eines Prozesses (Programms).
  • ln Erzeugen von Verknüpfungen zu einer Datei (englisch: link).
  • ls Anzeige des Inhalts von Verzeichnissen (englisch: list).
  • man gefolgt vom entsprechenden Kommando/Befehl ruft das Manual also das Handbuch zu dem entsprechenden Befehl (oder auch anderen Dingen wie z. B. Konfigurationsdateien) auf. Bei den meisten Distributionen liegen die als manpages bezeichneten Handbücher auch auf Deutsch vor. Generell sind die manpages immer die erste Anlaufstelle bei Fragen zu einem Befehl. Es gibt zwar genügend Foren und Mailing-Listen zu den einzelnen Distributionen, bei denen man sich Rat holen kann. Dennoch sollte man bei Fragen zuerst hier nachsehen, um nicht eine Antwort wie RTFM zu erhalten.
  • mkdir Anlegen eines Verzeichnisses (englisch: make directory).
  • mkfs Linux-Dateisystem anlegen (englisch: make filesystem. Unter Linx können die unterschiedlichsten Dateisysteme zur Anwendung kommen. Näheres findet sich in den man-pages.
  • more Seitenweises Anzeigen von Dateien.
  • mount Einhängen von Dateisystemen.
  • mv Verschieben und Umbenennen von Dateien und Verzeichnissen (englisch: move).
  • netstat Anzeige von Netzwerkstatusinformationen (englisch: network status)
  • ping Versenden und Empangen von Datenpaketen, um festzustellen, ob ein Rechner im Netzwerk erreichbar ist.
  • ps Prozessstatus anzeigen (englisch: process status).
  • pwd Anzeigen des aktuellen Verzeichnisses (englisch: print working directory).
  • reboot Rechner neu starten.
  • rm Löschen von Dateien und Verzeichnissen (englisch: remove).
  • rmdir Löschen leerer Verzeichnisse (englisch: remove directory).
  • sed Tool zur Manipulation von Zeichenketten (englisch: stream editor).
  • shutdown Rechner herunterfahren.
  • sort Sortieren des Inhalts von Dateien.
  • su Benutzeridentität wechseln (englisch: substitute user).
  • sudo Befehle als anderer Benutzer ausführen (englisch: substitute user do).
  • tail Anzeigen der letzten Zeilen einer Datei.
  • tar Verwalten von Dateiarchiven (englisch: tape archiver).
  • top Anzeigen der Prozesstabelle.
  • touch Erzeugen einer leeren Datei.
  • umount Aushängen von Dateisystemen (englisch: unmount).
  • uname Ausgabe von Systeminformationen (englisch: Unix name).

Neben den eigentlichen Shell-Befehlen stehen Ihnen eine Menge von Programmen zur Verfügung, die in einer Shell ausgeführt werden können. So können Musikliebhaber CDs komplett mittels der Kommandozeile einlesen und in die verschiedensten Audio-Formate konvertieren. Ja auch das Brennen von CDs oder DVDs ist aus der Shell heraus möglich. Natürlich funktioniert das nur, sofern die dazu benötigten Programme installiert sind.

Außerdem stehen in der Shell verschiedene Editoren für das Bearbeiten von Konfigurationsdateien zur Verfügung. Konfigurationsdateien unter unixoiden Betriebssystemen sind immer reine Textdateien. Der Standard-Editor, den Sie auf jedem unixoiden System finden ist vi (englisch: visual). Allerdings ist dieser Editor grauenhaft zu bedienen, da man sich eine Menge von Tastenkombinationen merken muss, was nicht Jedermanns Sache ist. Dennoch sollte man die wenigstens die Grundzüge der Bedienung dieses Editors kennen, da er auf jedem unixoiden Betriebssystem vorhanden ist. Eine leichter handhabbare Variante von vi, vim (englisch: vi improved) ist eher zu empfehlen, weil leichter bedienbar, allerdings bleibt einem auch hier das Auswendiglernen von Tastenkombinationen nicht erspart. Daneben gibt es auch noch jede Menge weiterer Editoren wie joe, nano oder pico, um nur einige zu nennen, die leichter bedienbar sind. Ich selbst bevorzuge beim Arbeiten auf der Shell mc, den Midnight Commander, einen Dateimanager mit integriertem Editor, der auch in jeder Distribution enthalten ist, aber meist nicht standardmäßig installiert wird. Sie müssen dieses Programm also in der Regel, wie auch einige der vorher zusätzlich genannten Editoren, nachträglich installieren.

Ausgabeumlenkung

Normalerweise geben die Programme Ihre Ausgabe auf stdout, also auf den Bildschirm, aus. Will man aber z. B. diese Ausgabe in eine Datei schreiben, so verwendet man das Zeichen >, um dies zu bewerkstelligen. Beispiel:
ls -alh > verzeichnisinhalt.txt schreibt eine ausführliche (Option l) Liste aller (Option a) im aktuellen Verzeichnis enthaltenen Dateien (auch die versteckten) zusammen mit in Kilo-, Mega- bzw. Giga-Byte angegebener Dateigröße (Option h) in die Datei verzeichnisinhalt.txt. Ist die Datei verzeichnisinhalt.txt nicht vorhanden, wird sie angelegt, ist sie vorhanden, wird sie überschrieben.

Verwendet man das Zeichen > zwei Mal hintereinander, so werden die Daten an die danach angegebene Datei angehängt, falls sie schon existiert, ansonsten wird die Datei neu erzeugt.

Pipes

Pipes (englisch für Röhre) sind sehr nützlich und dafür gedacht, die Ausgabe eines Programms in die Eingabe eines anderen weiterzuleiten. Eine Pipe wird durch das Zeichen | erzeugt. Beispiel:
netstat -an | grep :25 zeigt an, ob am Port 25 (Postausgangsserver) ein Prozess auf eingehende Informationen lauscht.

Neben den Befehlen und den beiden beschriebenen Mechanismen bietet die Shell natürlich noch jede Menge anderer Möglichkeiten. So können z. B. sogenannte Shell-Skripte erstellt werden, mit denen man Routineaufgaben automatisieren kann. Die meisten automatisch auf einem Linux-System gestarteten Prozesse werden über solche Skripte initiiert. Sie spielen unter Linux eine außerordentlich wichtige Rolle. In solchen Skripten können auch Kontrollstrukturen wie Verzweigungen und Schleifen angewendet werden, die eine richtig flexible Programmierung ermöglichen.

Die Shell besonders die bash bietet einige angenehme Eigenschaften, die das Arbeiten mit ihr ungemein erleichtern. So "merkt" sich die Shell einmal eingegebene Befehle auch nach ihrer Beendigung (einmal ausgeführte Befehle werden in der Datei .bash_history im home-Verzeichnis des jeweiligen Benutzers gespeichert). Man kann diese Befehle mit der Pfeil-nach-oben-Taste wieder her holen und muss sie nicht immer wieder neu eingeben. Außerdem bietet die Shell eine weitere sehr angenehme Eigenschaft, die Kommandozeilen-Vervollständigung. Gibt man die Anfangsbuchstaben eines Befehls ein und drückt die Tabulator-Taste, so wird der gewünschte Befehl automatisch vervollständigt, sofern Eindeutigkeit herrscht. Ist dies nicht der Fall, so gibt ein doppeltes Drücken der Tabulator-Taste eine Liste mit den verfügbaren Alternativen aus. Sehr praktisch ist diese Eigenschaft auch, wenn Befehle Verzeichnispfade als Argumente benötigen. Das Drücken der Tabulatortaste vervollständigt auch diese, sofern die Anfangsbuchstaben auf einen bestimmten Pfad passen.

Runlevel

Linux kann wie manche andere unixoide Betriebssysteme auch, zumindest die, die vom Original AT&T-Unix abstammen, in verschiedenen Betriebsmodi, den Runlevels, gestartet werden. Auch im laufenden Betrieb kann zwischen den verschiedenen Runlevels umgeschaltet werden. Gesteuert werden die Runlevels durch die Einträge in der Datei /etc/inittab, in der Sie auch nachsehen können, in welchem Modus Ihr Linux betrieben wird (default run level). In den unterschiedlichen Runlevels werden auch unterschiedliche Dienste (Dämonen) gestartet, bzw. sie werden beim Verlassen des entsprechenden Runlevels wieder beendet. Der Start und das Beenden der Dämonen wird durch so genannte init-Skripte gesteuert. Diese befinden sich im Verzeichnis /etc/init.d. Außerdem finden Sie im Verzeichnis /etc noch Unterordner namens rc<runlevel>, wobei <runlevel> den entsprechenden Runlevel angibt. Darin finden sich Verknüpfungen zu den Dateien in /etc/init.d. Die Verknüpfungen in den Verzeichnissen für die entsprechenden Runlevel beginnen entweder mit dem Buchstaben S für Start oder mit dem Buchstaben K für Kill, d.h., Erstere sind für den Start und Letztere für das Beenden des jeweiligen Dienstes zuständig. Die Bedeutung der einzenen Runlevel, vor Allem der Runlevel 2-5, kann sich von Distribution zu Distribution unterscheiden. Folgende Tabelle zeigt die Runlevel für Debian

RunlevelBedeutung
0System halt, Herunterfahren des Betriebssystem
SSingel user mode, Einzelbenutzer-Modus z.B. für Wartungsarbeiten
1wie S
2Default-Runlevel, Mehrbenutzermodus, in der Regel mit grafischer Benutzeroberfläche
3Mehrbenutzermodus
4Mehrbenutzermodus
5Mehrbenutzermodus
6System reboot, Neustarten des Betriebssystems

Zwischen den einzelnen Runlevels kann mittels des Befehls init gefolgt vom jeweiligen Runlevel umgeschaltet werden. Natärlich ist dies nur dem Superuser gestattet. So löst z.B. init 6 einen Neustart des Sytems aus (entspricht also dem Befehl reboot s. o.), während init 0 das System herunterfährt (entspricht also dem Befehl shutdown s. o.). Mit init S wechselt man in den Einzelbenutzermodus. Achtung: hier landen Sie auf einer simplen Shell, d.h. es steht Ihnen keine grafische Benutzeroberfläche mehr zur Verfügung.

Wie bereits erwähnt, haben die Runlevel 2-5 bei den verschiedenen Distributionen oft auch unterschiedliche Bedeutung. So bedeutet bei OpenSuSE der Runlevel 5: Mehrbenutzermodus mit grafischer Benutzeroberfläche und der Runlevel 3: Mehrbenutzermodus ohne grafische Benutzeroberfläche.

Näheres finden Sie in der Dokumentation der entsprechenden Distribution.

Softwareinstallation und -aktualisierung

Linux-Distributionen kommen mit einer Unmenge an Software daher. Bei der Installation einer Distribution wird in der Regel eine mehr oder weniger sinnvolle Auswahl an Software vorgegeben, oder man kann bereits bei der Installation auswählen, welche Software installiert werden soll.

Der einfachste Weg, Software zu installieren, führt über das jeweilige Paketmanagement der einzelnen Distributionen. Debian, Ubuntu und verwandte Distributionen besitzen hierbei ein eigenes Management-System, das entweder über das Kommandozeilen-Programm apt-get, das Shell-Programm aptitude, das zusammen mit Eingabeparametern auch als Kommandozeilen-Programm genutzt werden kann, ohne dass dabei eine Benutzeroberfläche aufgerufen wird, oder mit dem grafischen Programm synaptics bedient werden kann. Das Kürzel apt steht dabei für "another package tool". OpenSuSE und auch die meisten anderen Distributionen arbeiten mit dem Kommandozeilen-Tool rpm, was fü den "redhat package manager" steht, oder mit dem entsprechenden Menü-Punkt aus dem SuSE-eigenen Konfigurations-Tool YaST (Yet another Setup Tool). Das Paket-Management nimmt einem einen Haufen Arbeit ab, da es die Abhängigkeiten von Paketen untereinander auflöst und auch dafür sorgt, dass man Software auch wieder rückstandsfei deinstallieren kann.

Bei allen Distributionen kann man auch Quellen für die Installation von Software im Internet angeben, oder diese werden bereits bei der Installation festgelegt. Dies erspart einem das ständige Bereithalten der Installations-DVD und sorgt dafür, dass stets die neuesten für die jeweilige Distribution verfügbaren Versionen der Programme installiert werden

Natürlich kann man Software auch installieren, indem man die Programme aus dem immer vorhandenen Quellcode selbst kompiliert und installiert. Dies ist allerdings besonders für Anfänger nicht zu empfehlen. Denn einerseits muss man selbst Sorge dafür tragen, dass alle Abhängigkeiten des zu installierenden Programms von anderen Programmen oder Bibliotheken aufgelöst werden können, andererseits werden so installierte Programme nicht automatisch aktualisiert, falls verbesserte Versionen zur Verfügung stehen.

Besonders wichtig ist es natürlich sowohl bezüglich des Betriebssystems und auch der Software auf dem neuesten Stand zu bleiben. Sicherheitslücken werden bei Linux-Distributionen äußerst schnell behoben und nicht wie bei Microsoft Windows nur einmal im Monat. Oft sind Aktualisierungen bereits einige Stunden nach Bekanntwerden von Sicherheitslücken verfügbar. Einen weiteren Vorteil der Aktualisierungsmechanismen von Linux-Distributionen gegenüber Windows hat man, da diese neben dem Betriebssystem selbst auch die installierte Software aktualisieren, während ein Windows-Update maximal noch die Programme aktualisiert, die von Microsoft selbst stammen. Die restlichen Programme werden von einem Windows-Update nicht aktualisiert. Man muss sich also selbst darum kümmern, ob sicherheitskritische Updates für ein bestimmtes Programm zu Verfügung stehen, sofern man überhaupt davon erfährt, dass Sicherheitslücken vorhanden sind und auch vom Hersteller beseitigt wurden. Schließlich kennt ja in einem solchen Fall nur der Hersteller selbst den Quellcode, und es wachen nicht wie bei Open Source Software viele Betreuer und Benutzer über die Qualität des zugrundeliegenden Codes.

Installation von Programmen

Unter den grafischen Benutzeroberflächen stehen Ihnen die verschiedensten Programme zu Installation zusätzlicher Software zur Verfügung. Unter OpenSuSE ist hier vor Allem das universale Konfigurationsptogramm YaST zu nennen, das auf dem Programm rpm aufsetzt, und das neben der Softwareverwaltung auch noch als universales Konfigurationzentum dient. Die Softwarepakete haben dann auch die Dateiendung .rpm. Auf Debian basierende Distributionen bieten Ihnen Synaptics und Adept als Werkzeuge für die Verwaltung von Software-Paketen, die für solche Systeme die Dateiendung .deb haben. YaST ist auch in einer Variante für die Verwendung in der Shell bei OpenSuSE verfügbar, während bei auf Debian basierende Distributionen aptitude und apt-get die entsprechenden Shell-Programme zur Installation bzw. Aktualisierung von Software darstellen. Diese beiden Shell-Programme basieren ihrerseits wiederum auf dem Programm dpkg, das das eigentliche Paketmanagement dieser Distributionen darstellt.

Bei der Installation von Programmen sorgen die verschiedenen Paketmanager dafür, dass Abhängigkeiten von anderen Programmen und Programm-Bibliotheken aufgelöst, und auch Konflikte zwischen verschiedenen Applikationen bzw. deren Versionen vermieden werden. Zusätzlich dienen all diese Programme auch dazu, dass Sie eimal installierte Software wieder rückstandslos von Ihrem System entfernen können. Ein Vorteil gegenüber Windows, der gar nicht hoch genug eingeschätzt werden kann.

Alle Software kann aus dem Internet heruntergeladen werden, sofern die Quellen auf Ziele im Internet verweisen, was bei z. B. bei Ubuntu die Standard-Einstellung ist. Zusätzliche Installations-Quellen lassen sich bei YaST im Programm selbst festlegen. Bei auf Debian basierenden Distributionen rate ich dazu, diese zusätzlichen Quellen (man recherchiere einfach mal ein wenig darzu bei Google oder auch (es gibt sie wirklich!) anderen Suchmaschinen zu diesem Thema direkt in die Datei /etc/apt/sources.lst einzutragen oder die entsprechenden Menüpunkte in Synaptics oder Adept bzw. aptitude zu nutzen. Vergessen Sie auch nicht den öffentlichen Schlüssel der neuen Paketquelle herunterzuladen und per apt-key add <Schlüsseldatei> zu installieren, damit die Integrität der Softwarepakete aus dieser Quelle und die Authentizität derselben festgestellt werden kann (siehe auch Verschlüsselung und digitale Signatur auf dieser Website. Ich halte diesen Punkt für einen der wichtigsten, um einen Rechner frei von Schadsoftware zu halten. Die Installation irgendwelcher Software aus dubiosen Quellen ist eine der häufigsten Gründe, warum Rechner kompromittiert werden. Wer sich hier nicht strikt an das eben Empfohlene hält, dem ist einfach nicht zu helfen. Dies gilt übrigens für alle Betriebssystem-Plattformen.

Eine Methode der Software-Installation, die natürlich immer besteht, ist die Übersetztung der Programme aus den Quellcodes. Dazu müssen allerdings der C-Compiler gcc und die entsprechenden Bibliotheken installiert sein. Allerdings müssen Sie bei der Wahl dieses Weges selbst dafür Sorge tragen, dass alle Bibliotheken installiert sind, damit alle Abhängigkeiten auch aufgelöst werden. Für Anfänger ist dies oft nicht ganz einfach zu bewerkstelligen, weshalb ich in einem solchen Fall dringend dazu rate, zuerst im Internet zu recherchieren, ob nicht doch irgendwo eine fertig kompilierte Version des gewünschten Programms für die entsprechende Distribution aufzutreiben ist. Nochmals will ich hier betonen, dass dabei besondere Vorsicht angebracht ist. Grundsätzlich sollte man Software, und das gilt für alle Betriebssysteme, nur aus Quellen installieren, denen man auch vertrauen kann. Hinweise zu weiteren Quellen von Software für auf Debian basierende Distributionen finden Sie unter apt-get.org. Zusätzliche Pakete für Distributionen, die ihre Software mittels rpm verwalten findet man häufig bei rpmseek.
Ein weiterer Grund, warum von dieser Installationsvariante abzuraten ist, ist die Tatsache, dass so erstellte Software nicht der automatischen Aktualisierung durch die Aktualisierungsverwaltung unterliegen. Sie müssen sich also selbst darum kümmern, diese Programme immer auf dem neuesten Stand zu halten. Es gibt zwar auch hierzu Hilfsmittel, doch sollten sich vor Allem Anfänger an die oben gemachten Tipps halten.

Egal wie Sie neue Software installieren, werden Sie einen sehr angenehmen Unterschied zu Microsoft Windows bemerken: Sie müssen nie den Rechner neu starten, sofern Sie nur ein Programm installieren, deinstallieren oder aktualisieren. Ein Neustart des Systems ist nur notwendig, wenn ein neuer Betriebssystemkern (kernel) aufgrund einer Aktualisierung installiert wurde. Ansonsten können Sie dieses nervige Verhalten Ihrer früheren Windows-Systeme getrost vergessen.