Index: head/de_DE.ISO8859-1/books/handbook/basics/chapter.xml =================================================================== --- head/de_DE.ISO8859-1/books/handbook/basics/chapter.xml (revision 47943) +++ head/de_DE.ISO8859-1/books/handbook/basics/chapter.xml (revision 47944) @@ -1,2568 +1,2574 @@ - Grundlagen des UNIX Betriebssystems + Grundlagen des UNIX Betriebssystems + Übersicht Dieses Kapitel umfasst die grundlegenden Kommandos und Funktionsweisen des &os;-Betriebssystems. Viel von diesem Material gilt auch für jedes andere &unix;-artige System. Neue Benutzer von &os; sollten dieses Kapitel aufmerksam lesen. Dieser Abschnitt behandelt die folgenden Themen: virtuelle Konsolen, Zugriffsrechte unter &unix; sowie Datei-Flags unter &os;, Zugriffskontrolllisten für Dateisysteme, die Verzeichnisstruktur von &os;, Organisation von Dateisystemen unter &os;, Ein- und Abhängen von Dateisystemen, Prozesse, Dämonen und Signale, Shells und die Login-Umgebung, Texteditoren, Geräte und Gerätedateien, wie Sie in den Manualpages nach weiteren Informationen suchen können. Virtuelle Konsolen und Terminals virtuelle Konsole Terminals + Konsole - &os; kann mit einem Terminal benutzt werden, der nur Text - darstellen kann. Wird &os; auf diese Weise benutzt, so steht - einem ein großer Teil der Flexibilität und Leistungsfähigkeit - eines &unix; Betriebssystems zur Verfügung. Dieser Abschnitt - beschreibt was Terminals und Konsolen sind und wie sie unter - &os; eingesetzt werden. - - - Die Konsole - Konsole - Wenn das &os;-System so konfiguriert wurde, dass es ohne eine grafische Benutzeroberfläche startet, wird das System nach dem Start einen Anmeldeprompt ausgeben, wie in diesem Beispiel zu sehen: FreeBSD/amd64 (pc3.example.org) (ttyv0) login: Die erste Zeile enthält einige Informationen über das System. amd64 zeigt an, dass auf dem System in diesem Beispiel eine 64-Bit Version von &os; läuft. Der Hostname ist pc3.example.org und ttyv0 gibt an, dass dies die - Systemkonsole ist. + Systemkonsole ist. Die zweite Zeile zeigt den + Anmeldeprompt. - Die zweite Zeile zeigt den Anmeldeprompt. Im nächsten - Abschnitt wird beschrieben, wie Sie sich an diesem Prompt - anmelden. - + Da &os; ein Mehrbenutzersystem ist, muss es die + verschiedenen Benutzer voneinander unterscheiden können. Dies + wird dadurch erreicht, dass sich jeder Benutzer zuerst am + System anmelden muss, um Zugriff auf die Programme zu + bekommen. Jeder Benutzer hat einen eindeutigen + Benutzernamen und ein persönliches + Kennwort. - - Der Anmeldevorgang - - &os; ist ein Mehrbenutzersystem, das Multitasking - unterstützt. Das heißt mehrere Benutzer können - gleichzeitig viele Programme auf einem System laufen lassen. - - Jedes Mehrbenutzersystem muss die Benutzer voneinander - unterscheiden können. Bei &os; und allen anderen - &unix;-artigen - Betriebssystemen wird dies dadurch erreicht, dass sich die - Benutzer anmelden müssen, bevor sie Programme laufen lassen - können. Jeder Benutzer besitzt einen eindeutigen Namen (den - Account) und ein dazugehörendes Passwort. &os; wird beides - abfragen, bevor es dem Benutzer ermöglicht Programme laufen zu - lassen. - - Startskripten - Wenn ein &os;-System startet, werden automatisch - Startskripte ausgeführt, um das System vorzubereiten und - entsprechend konfigurierte Dienste zu starten. Nachdem das - System die Startskripte abgearbeitet hat, wird es einen - Anmeldeprompt präsentieren: - - login: - - Geben Sie den Benutzernamen ein, der während der - Systeminstallation, wie in beschrieben, + Um sich auf der Systemkonsole anzumelden, geben Sie den + Benutzernamen ein, der während der Systeminstallation, wie in + beschrieben, konfiguriert wurde und drücken Sie Enter. Geben Sie dann das zum Benutzernamen zugeordnete Passwort ein und drücken Enter. Das Passwort wird aus Sicherheitsgründen nicht angezeigt. Sobald das richtige Passwort eingegeben wird, wird die Nachricht des Tages (MOTD) gefolgt von - einer Eingabeaufforderung (dem Zeichen #, - $ oder %) angezeigt. - Sie sind nun an der &os;-Systemkonsole angemeldet und bereit, - alle verfügbaren Kommandos zu probieren. - + einer Eingabeaufforderung ausgegeben. In Abhängigkeit der + verwendeten Shell des Benutzers wird der Prompt mit dem + Zeichen #, $ oder + % dargestellt. Der Prompt zeigt an, dass + der Benutzer jetzt an der &os; Systemkonsole angemeldet ist + und nun alle verfügbaren Befehle probieren kann. Virtuelle Konsolen - &os; kann so konfiguriert werden, dass viele virtuelle - Konsolen zur Eingabe von Befehlen zur Verfügung stehen. Jede - virtuelle Konsole verfügt über einen eigenen Anmeldeprompt und - Ausgabekanal, und &os; kümmert sich um die ordnungsgemäße - Umleitung von Tastatureingaben und Monitorausgaben, wenn - zwischen den virtuellen Konsolen umgeschaltet wird. + Obwohl die Systemkonsole dazu verwendet werden kann, um + mit dem System zu interagieren, wird sich ein Benutzer in der + Regel an einer virtuellen Konsole im &os;-System anmelden. + Das liegt daran, dass die Systemmeldungen standardmäßig auf + der Systemkonsole angezeigt werden und somit die Meldungen des + Befehls oder einer Datei, die der Benutzer gerade bearbeitet, + überschrieben werden. - Zum Umschalten der Konsolen stellt &os; spezielle - Tastenkombinationen bereit - Lesen Sie &man.syscons.4;, &man.atkbd.4;, - &man.vidcontrol.1; und &man.kbdcontrol.1; für eine recht - technische Beschreibung der &os;-Konsole und der - Tastatur-Treiber.. Benutzen Sie - AltF1, - AltF2 + In der Voreinstellung ist &os; so konfiguriert, dass viele + virtuelle Konsolen zur Eingabe von Befehlen zur Verfügung + stehen. Jede virtuelle Konsole verfügt über einen eigenen + Anmeldeprompt und eine Shell. Sie können ganz einfach + zwischen den virtuellen Konsolen umschalten. Dies ist + vergleichbar mit mehreren geöffneten Fenstern in einer + graphischen Umgebung. + + Die Tastenkombinationen + AltF1 bis - AltF8, - um zwischen den verschiedenen virtuellen Konsolen - umzuschalten. + AltF8 + sind in &os; zum Umschalten zwischen virtuellen Konsolen + reserviert. Verwenden Sie + AltF1 + um auf die Systemkonsole (ttyv0) zu + wechseln, + AltF2 + für die erste virtuelle Konsole (ttyv1, + AltF3 + für die zweite virtuelle Konsole (ttyv2, + und so weiter. - Wird von einer Konsole zur nächsten gewechselt, sichert - &os; den Bildschirminhalt und gibt den Bildschirminhalt der - neuen Konsole aus. Dies erzeugt die Illusion mehrerer - Bildschirme und Tastaturen, an denen Kommandos abgesetzt - werden können. Wenn eine Konsole nicht sichtbar ist, weil - ein Benutzer auf eine andere Konsole gewechselt hat, laufen - die dort abgesetzten Kommandos trotzdem weiter. - + Beim Wechsel von einer Konsole zur nächsten wird die + Bildschirmausgabe von &os; verwaltet. Dies erzeugt die + Illusion mehrerer Bildschirme und Tastaturen, an denen + Kommandos abgesetzt werden können. Die Programme, die in + einer virtuellen Konsole gestartet werden, laufen auch dann + weiter, wenn der Benutzer auf eine andere virtuelle Konsole + wechselt. - - <filename>/etc/ttys</filename> + Lesen Sie &man.syscons.4;, &man.atkbd.4;, + &man.vidcontrol.1; und &man.kbdcontrol.1; für eine recht + technische Beschreibung der &os;-Konsole und der + Tastatur-Treiber. - In der Voreinstellung startet &os; acht virtuelle - Konsolen, deren Anzahl Sie leicht erhöhen - oder verringern können. Die Anzahl und Art der Konsolen wird - in /etc/ttys eingestellt. + In &os; wird die Anzahl der verfügbaren virtuellen + Konsolen in diesem Abschnitt von + /etc/ttys konfiguriert: - Jede Zeile in /etc/ttys, die nicht - mit # anfängt, konfiguriert einen Terminal - oder eine virtuelle Konsole. In der Voreinstellung werden - neun virtuelle Konsolen definiert, von denen acht aktiviert - sind. Die Zeilen, die mit ttyv beginnen, - kennzeichnen die Konsolen: - # name getty type status comments # ttyv0 "/usr/libexec/getty Pc" cons25 on secure # Virtual terminals ttyv1 "/usr/libexec/getty Pc" cons25 on secure ttyv2 "/usr/libexec/getty Pc" cons25 on secure ttyv3 "/usr/libexec/getty Pc" cons25 on secure ttyv4 "/usr/libexec/getty Pc" cons25 on secure ttyv5 "/usr/libexec/getty Pc" cons25 on secure ttyv6 "/usr/libexec/getty Pc" cons25 on secure ttyv7 "/usr/libexec/getty Pc" cons25 on secure ttyv8 "/usr/X11R6/bin/xdm -nodaemon" xterm off secure - Die Manualpage &man.ttys.5; enthält eine ausführliche + Um eine virtuelle Konsole zu deaktivieren, setzen Sie ein + Kommentarzeichen (# an den Anfang der Zeile + für die entsprechende Konsole. Um bspw. die Anzahl der + verfügbaren virtuellen Konsolen von acht auf vier zu + reduzieren, setzen Sie ein # an den Anfang + der letzten vier Zeilen, den virtuellen Konsolen + ttyv5 bis ttyv8. + Kommentieren Sie nicht die Zeile für die Systemkonsole + ttyv0 aus! Beachten Sie, dass die + letzte virtuelle Konsole (ttyv8) zum + Wechsel auf die graphische Oberfläche gedacht ist, wenn + &xorg; wie im installiert und + konfiguriert ist. + + &man.ttys.5; enthält eine ausführliche Beschreibung der Spalten dieser Datei und der verfügbaren Optionen für virtuelle Konsolen. - Die Konsole im Single-User-Modus + Single-User-Modus - Eine eingehende Beschreibung des - Single-User-Modus findet sich in - . Im Single-User-Modus steht - nur eine Konsole zur Verfügung. - Die Einstellungen dieser Konsole befinden sich in diesem - Abschnitt von /etc/ttys: + Das &os; Boot-Menü verfügt über eine Option + Boot Single User. Wird diese Option + gewählt, bootet das System in einen speziellen Modus, der als + Single-User-Modus bekannt ist. Dieser Modus + wird normalerweise zur Reparatur des Systems verwendet, + bspw. wenn das System nicht mehr startet, oder das + root-Passwort + zurückgesetzt werden muss. Im Single-User-Modus haben Sie + keinen Zugriff auf das Netzwerk und es stehen Ihnen keine + weiteren virtuellen Konsolen zur Verfügung. Allerdings + haben Sie vollen Zugriff auf das System und in der + Voreinstellung wird das root-Passwort nicht + benötigt. Aus diesem Grund wird ein physischer Zugriff + auf die Tastatur benötigt, um in diesem Modus zu booten. + Zur Absicherung eines &os;-Systems sollte ermittelt werden, + welche Personen physischen Zugriff auf die Tastatur bekommen + sollen. + Die Einstellungen für den Single-User-Modus befinden sich + diesem Abschnitt von /etc/ttys: + # name getty type status comments # # If console is marked "insecure", then init will ask for the root password # when going to single-user mode. console none unknown off secure - - In der Zeile, die mit console - beginnt, kann secure durch - insecure ersetzt werden. Wenn danach in - den Single-User-Modus gebootet wird, verlangt das System die - Eingabe des root-Passworts. In der - Standardeinstellung wird beim Betreten des Single-User-Modus - kein Passwort verlangt. + In der Voreinstellung ist der Status auf + secure eingestellt. Das setzt voraus, dass + der physische Zugriff auf die Tastatur entweder unwichtig ist, + oder über eine Sicherheitsrichtlinie geregelt wird. Wenn der + Status auf insecure eingestellt wird, wird + davon ausgegangen, dass die Umgebung selbst unsicher ist, da + jeder Zugriff auf die Tastatur hat. &os; wird dann nach dem + root-Passwort + fragen, wenn ein Benutzer versucht in den Single-User-Modus zu + booten. + Setzen Sie insecure nicht - leichtfertig ein. Wenn das + leichtfertig ein! Wenn das root-Passwort vergessen wird, wird es schwierig in den Single-User-Modus zu gelangen, wenn man den Bootprozess von &os; nicht genau versteht. Den Videomodus der Konsole anpassen Der Standard-Videomodus der &os;-Konsole kann auf jeden Modus eingestellt werden, der von der Grafikkarte und dem Monitor unterstützt wird (beispielsweise 1024x768 oder 1280x1024). Um eine andere Einstellung zu verwenden, muss das VESA-Modul geladen werden: &prompt.root; kldload vesa Um festzustellen, welche Video-Modi von der Hardware unterstützt werden, nutzen Sie &man.vidcontrol.1;. Um eine Liste aller unterstützten Modi zu sehen, verwenden Sie diesen Befehl: &prompt.root; vidcontrol -i mode Die Ausgabe dieses Befehls listet alle Videomodi, die von der Hardware unterstützt werden. Um einen neuen Video-Modi zu wählen, wird der entsprechende Modus als root-Benutzer an &man.vidcontrol.1; übergeben: &prompt.root; vidcontrol MODE_279 Um diese Einstellung dauerhaft zu speichern, muss folgende Zeile in /etc/rc.conf hinzugefügt werden: allscreens_flags="MODE_279" Zugriffsrechte UNIX - &os;, das ein direkter Abkömmling von BSD &unix; ist, - stützt sich auf mehrere Grundkonzepte von &unix; Systemen. - Das erste und ausgeprägteste: &os; ist - ein Mehrbenutzer-Betriebssystem, das es ermöglicht, - dass mehrere Benutzer gleichzeitig an völlig verschiedenen - und unabhängigen Aufgaben arbeiten können. Es ist - verantwortlich für eine gerechte Auf- und Zuteilung von - Anfragen nach Hardware- und Peripheriegeräten, Speicher - und CPU-Zeit unter den Benutzern. + In &os; besitzt jede Datei und jedes Verzeichnis einen Satz + von Zugriffsrechten. Es stehen mehrere Programme zum Anzeigen + und Bearbeiten dieser Rechte zur Verfügung. Ein Verständnis für + die Funktionsweise von Zugriffsrechten ist notwendig, um + sicherzustellen, dass Benutzer nur auf die von ihnen benötigten + Dateien zugreifen können und nicht auf die Dateien des + Betriebssystems oder von anderen Benutzern. - Weitere Informationen über Benutzerkonten finden Sie im - Kapitel Benutzer und grundlegende - Account-Verwaltung. Es ist wichtig zu verstehen, dass - jeder Person (Benutzer) die den Computer verwendet, ein eigener - Benutzername und Passwort zugewiesen wird. Das System erkennt - die Personen auf Grundlage dieser Benutzernamen. Da es häufig - vorkommt, dass mehrere Personen am gleichen Projekt arbeiten, - stellt &unix; auch Gruppen zur Verfügung. Mehrere Benutzer - können der gleichen Gruppe zugewiesen werden. + In diesem Abschnitt werden die traditionellen + Zugriffsrechte von &unix; beschrieben. Informationen + zu feingranularen Zugriffsrechten für Dateisysteme finden + Sie im . - Da das System mehrere Benutzer unterstützt, hat alles, - was das System verwaltet, einen Satz von Rechten, die bestimmen, - wer die jeweilige Ressource lesen, schreiben oder ausführen - darf. Diese Zugriffsrechte stehen in drei Achtergruppen, die in - drei Teile unterteilt sind: einen für den Besitzer der - Datei, einen für die Gruppe, zu der die Datei gehört - und einen für alle anderen. Die numerische Darstellung - sieht wie folgt aus: + In &unix; werden die grundlegenden Zugriffsrechte in + drei Typen unterteilt: Lesen, Scheiben und Ausführen. + Diese Zugriffstypen werden verwendet, um den Dateizugriff + für den Besitzer der Datei, die Gruppe und alle anderen zu + bestimmen. Die Lese-, Schreib- und Ausführungsberechtigungen + werden mit den Buchstaben r, + w und x dargestellt. + Alternativ können die Berechtigungen als binäre Zahlen + dargestellt werden, da jede Berechtigung entweder aktiviert + oder deaktiviert (0) ist. Wenn die + Berechtigung als Zahl dargestellt wird, ist die Reihenfolge + immer als rwx zu lesen, wobei + r den Wert 4 hat, + w den Wert 2 und + x den Wert 1. - - In diesem Abschnitt werden die traditionellen - Zugriffsrechte von &unix; beschrieben. Informationen - zu fein granulierten Zugriffsrechten für Dateisysteme finden - Sie in Zugriffskontrolllisten - für Dateisysteme. - + In Tabelle 4.1 sind die einzelnen nummerischen und + alphabetischen Möglichkeiten zusammengefasst. Das Zeichen + - in der Spalte + Auflistung im Verzeichnis besagt, dass eine + eine Berechtigung deaktiviert ist. Zugriffsrechte Dateizugriffsrechte - + + &unix; Zugriffsrechte + Wert Zugriffsrechte Auflistung im Verzeichnis 0 Kein Lesen, Kein Schreiben, Kein Ausführen --- 1 Kein Lesen, Kein Schreiben, Ausführen --x 2 Kein Lesen, Schreiben, Kein Ausführen -w- 3 Kein Lesen, Schreiben, Ausführen -wx 4 Lesen, Kein Schreiben, Kein Ausführen r-- 5 Lesen, Kein Schreiben, Ausführen r-x 6 Lesen, Schreiben, Kein Ausführen rw- 7 Lesen, Schreiben, Ausführen rwx - +
+ &man.ls.1; Verzeichnisse Benutzen Sie das Argument mit &man.ls.1;, um eine ausführliche Verzeichnisauflistung zu sehen, die in einer Spalte die Zugriffsrechte für den Besitzer, die Gruppe und alle anderen enthält. Die Ausgabe von ls -l könnte wie folgt aussehen: &prompt.user; ls -l total 530 -rw-r--r-- 1 root wheel 512 Sep 5 12:31 myfile -rw-r--r-- 1 root wheel 512 Sep 5 12:31 otherfile -rw-r--r-- 1 root wheel 7680 Sep 5 12:31 email.txt Das erste Zeichen (ganz links) der ersten Spalte zeigt an, ob es sich um eine normale Datei, ein Verzeichnis, ein zeichenorientiertes Gerät, ein Socket oder irgendeine andere Pseudo-Datei handelt. In diesem Beispiel zeigt - eine normale Datei an. Die nächsten drei Zeichen, dargestellt als rw-, ergeben die Rechte für den Datei-Besitzer. Die drei Zeichen danach r-- die Rechte der Gruppe, zu der die Datei gehört. Die letzten drei Zeichen, r--, geben die Rechte für den Rest der Welt an. Ein Minus bedeutet, dass das Recht nicht gegeben ist. In diesem Beispiel sind die Zugriffsrechte also: der Eigentümer kann die Datei lesen und schreiben, die Gruppe kann lesen und alle anderen können auch nur lesen. Entsprechend obiger Tabelle wären die Zugriffsrechte für diese Datei 644, worin jede Ziffer die drei Teile der Zugriffsrechte dieser Datei verkörpert. Wie kontrolliert das System die Rechte von Hardware-Geräten? &os; behandelt die meisten Hardware-Geräte als Dateien, welche Programme öffnen, lesen und mit Daten beschreiben können. Diese speziellen Gerätedateien sind in /dev gespeichert. Verzeichnisse werden ebenfalls wie Dateien behandelt. Sie haben Lese-, Schreib- und Ausführ-Rechte. Das Ausführungs-Bit hat eine etwas andere Bedeutung für ein Verzeichnis als für eine Datei. Die Ausführbarkeit eines Verzeichnisses bedeutet, dass in das Verzeichnis, zum Beispiel mit &man.cd.1;, gewechselt werden kann. Das bedeutet auch, dass in dem Verzeichnis auf Dateien, deren Namen bekannt sind, zugegriffen werden kann, vorausgesetzt die Zugriffsrechte der Dateien lassen dies zu. Das Leserecht auf einem Verzeichnis erlaubt es, sich den Inhalt des Verzeichnisses anzeigen zu lassen. Um eine Datei mit bekanntem Namen in einem Verzeichnis zu löschen, müssen auf dem Verzeichnis Schreib- und Ausführ-Rechte gesetzt sein. Es gibt noch mehr Rechte, aber die werden vor allem in speziellen Umständen benutzt, wie zum Beispiel bei SetUID-Binaries und Verzeichnissen mit gesetztem Sticky-Bit. Mehr über Zugriffsrechte von Dateien und wie sie gesetzt werden, finden Sie in &man.chmod.1;. Symbolische Zugriffsrechte TomRhodesBeigesteuert von Zugriffsrechte symbolische Symbolische Zugriffsrechte verwenden Zeichen anstelle von oktalen Werten, um die Berechtigungen für Dateien oder Verzeichnisse festzulegen. Zugriffsrechte verwenden die Syntax Wer, Aktion und Berechtigung. Die folgenden Werte stehen zur Auswahl: Option Symbol Bedeutung Wer u Benutzer (user) Wer g Gruppe (group) Wer o Andere (other) Wer a Alle Aktion + Berechtigungen hinzufügen Aktion - Berechtigungen entziehen Aktion = Berechtigungen explizit setzen Berechtigung r lesen (read) Berechtigung w schreiben (write) Berechtigung x ausführen (execute) Berechtigung t Sticky-Bit Berechtigung s Set-UID oder Set-GID Diese symbolischen Werte werden zusammen mit &man.chmod.1; verwendet. Beispielsweise würde der folgende Befehl den Zugriff auf FILE für alle anderen Benutzer verbieten: &prompt.user; chmod go= FILE Wenn Sie mehr als eine Änderung der Rechte einer Datei vornehmen wollen, können Sie eine durch Kommata getrennte Liste der Rechte angeben. Das folgende Beispiel entzieht der Gruppe und der Welt die Schreibberechtigung auf FILE und fügt für jeden Ausführungsrechte hinzu: &prompt.user; chmod go-w,a+x FILE &os; Datei-Flags TomRhodesBeigetragen von Zusätzlich zu den Zugriffsrechten unterstützt &os; auch die Nutzung von Datei-Flags. Diese erhöhen die Sicherheit des Systems, indem sie eine verbesserte Kontrolle von Dateien erlauben. Verzeichnisse werden allerdings nicht unterstützt. Mit dem Einsatz von Datei-Flags kann sogar root daran gehindert werden, Dateien zu löschen oder zu verändern. Datei-Flags werden mit &man.chflags.1; verändert. Um beispielsweise auf der Datei file1 das unlöschbar-Flag zu aktivieren, geben Sie folgenden Befehl ein: &prompt.root; chflags sunlink file1 Um dieses Flag zu deaktivieren, setzen Sie ein no vor : &prompt.root; chflags nosunlink file1 Um die Flags einer Datei anzuzeigen, verwenden Sie &man.ls.1; zusammen mit : &prompt.root; ls -lo file1 -rw-r--r-- 1 trhodes trhodes sunlnk 0 Mar 1 05:54 file1 Einige Datei-Flags können nur vom root-Benutzer gesetzt oder gelöscht werden. Andere wiederum können auch vom Eigentümer der Datei gesetzt werden. Weitere Informationen hierzu finden sich in &man.chflags.1; und &man.chflags.2;. Die Berechtigungen <literal>setuid</literal>, <literal>setgid</literal>, und <literal>sticky</literal> TomRhodesBeigetragen von Anders als die Berechtigungen, die bereits angesprochen wurden, existieren drei weitere Einstellungen, über die alle Administratoren Bescheid wissen sollten. Dies sind die Berechtigungen setuid, setgid und sticky. Diese Einstellungen sind wichtig für manche &unix;-Operationen, da sie Funktionalitäten zur Verfügung stellen, die normalerweise nicht an gewöhnliche Anwender vergeben wird. Um diese zu verstehen, muss der Unterschied zwischen der realen und der effektiven Benutzer-ID erwähnt werden. Die reale Benutzer-ID ist die UID, welche den Prozess besitzt oder gestartet hat. Die effektive UID ist diejenige, als die der Prozess läuft. Beispielsweise wird &man.passwd.1; mit der realen ID des Benutzers ausgeführt, der sein Passwort ändert. Um jedoch die Passwortdatenbank zu bearbeiten, wird es effektiv als root-Benutzer ausgeführt. Das ermöglicht es normalen Benutzern, ihr Passwort zu ändern, ohne einen Permission Denied-Fehler angezeigt zu bekommen. Die setuid-Berechtigung kann durch das Voranstellen bei einer Berechtigungsgruppe mit der Nummer Vier (4) gesetzt werden, wie im folgenden Beispiel gezeigt wird: &prompt.root; chmod 4755 suidexample.sh Die Berechtigungen auf suidexample.sh sehen jetzt wie folgt aus: -rwsr-xr-x 1 trhodes trhodes 63 Aug 29 06:36 suidexample.sh Beachten Sie, dass ein s jetzt Teil der Berechtigungen des Dateibesitzers geworden ist, welches das Ausführen-Bit ersetzt. Dies ermöglicht es Werkzeugen mit erhöhten Berechtigungen zu laufen, wie z.B. passwd. Die nosuid &man.mount.8;-Option bewirkt, dass solche Anwendungen stillschweigend scheitern, ohne den Anwender darüber zu informieren. Diese Option ist nicht völlig zuverlässig, da ein nosuid-Wrapper in der Lage wäre, dies zu umgehen. Um dies in Echtzeit zu beobachten, öffnen Sie zwei Terminals. Starten Sie auf einem passwd als normaler Benutzer. Während es auf die Passworteingabe wartet, überprüfen Sie die Prozesstabelle und sehen Sie sich die Informationen für &man.passwd.1; an: Im Terminal A: Changing local password for trhodes Old Password: Im Terminal B: &prompt.root; ps aux | grep passwd trhodes 5232 0.0 0.2 3420 1608 0 R+ 2:10AM 0:00.00 grep passwd root 5211 0.0 0.2 3620 1724 2 I+ 2:09AM 0:00.01 passwd Obwohl &man.passwd.1; als normaler Benutzer ausgeführt wird, benutzt es die effektive UID von root. Die setgid-Berechtigung führt die gleiche Aktion wie die setuid-Berechtigung durch, allerdings verändert sie die Gruppenberechtigungen. Wenn eine Anwendung oder ein Werkzeug mit dieser Berechtigung ausgeführt wird, erhält es die Berechtigungen basierend auf der Gruppe, welche die Datei besitzt und nicht die des Benutzers, der den Prozess gestartet hat. Um die setgid-Berechtigung auf einer Datei zu setzen, geben Sie &man.chmod.1; eine führende Zwei (2) mit: &prompt.root; chmod 2755 sgidexample.sh Beachten Sie in der folgenden Auflistung, dass das s sich jetzt in dem Feld befindet, das für die Berechtigungen der Gruppe bestimmt ist: -rwxr-sr-x 1 trhodes trhodes 44 Aug 31 01:49 sgidexample.sh Obwohl es sich bei dem in diesen Beispielen gezeigten Shellskript um eine ausführbare Datei handelt, wird es nicht mit einer anderen EUID oder effektiven Benutzer-ID ausgeführt. Das ist so, weil Shellskripte keinen Zugriff auf &man.setuid.2;-Systemaufrufe erhalten. Die setuid und setgid Berechtigungs-Bits können die Systemsicherheit verringern, da sie erhöhte Rechte ermöglichen. Das dritte Berechtigungs-Bit, das sticky bit kann die Sicherheit eines Systems erhöhen. Wenn das sticky bit auf einem Verzeichnis angewendet wird, erlaubt es das Löschen von Dateien nur durch den Besitzer der Datei. Dies ist nützlich, um die Löschung von Dateien in öffentlichen Verzeichnissen wie /tmp, durch Benutzer denen diese Dateien nicht gehören, zu verhindern. Um diese Berechtigung anzuwenden, stellen Sie der Berechtigung eine Eins (1) voran: &prompt.root; chmod 1777 /tmp Das sticky bit kann anhand des t ganz am Ende der Berechtigungen abgelesen werden. &prompt.root; ls -al / | grep tmp drwxrwxrwt 10 root wheel 512 Aug 31 01:49 tmp
Verzeichnis-Strukturen Verzeichnis Hierarchien Die &os;-Verzeichnishierarchie ist die Grundlage, um ein umfassendes Verständnis des Systems zu erlangen. Das wichtigste Verzeichnis ist das Root-Verzeichnis /. Dieses Verzeichnis ist das erste, das während des Bootens eingehangen wird. Es enthält das notwendige Basissystem, um das Betriebssystem in den Mehrbenutzerbetrieb zu bringen. Das Root-Verzeichnis enthält auch die Mountpunkte für Dateisysteme, die beim Wechsel in den Multiuser-Modus eingehängt werden. Ein Mountpunkt ist ein Verzeichnis, in das zusätzliche Dateisysteme (in der Regel unterhalb des Wurzelverzeichnisses) eingehängt werden können. Dieser Vorgang wird in ausführlich beschrieben. Standard-Mountpunkte sind /usr, /var, /tmp, /mnt sowie /cdrom. Auf diese Verzeichnisse verweisen üblicherweise Einträge in /etc/fstab. Diese Datei ist eine Tabelle mit verschiedenen Dateisystemen und Mountpunkten, vom System gelesen werden. Die meisten der Dateisysteme in /etc/fstab werden beim Booten automatisch durch das Skript &man.rc.8; gemountet, wenn die zugehörigen Einträge nicht mit versehen sind. Weitere Informationen zu diesem Thema finden Sie im . Eine vollständige Beschreibung der Dateisystem-Hierarchie finden Sie in &man.hier.7;. Die folgende Aufstellung gibt einen kurzen Überblick über die am häufigsten verwendeten Verzeichnisse: Verzeichnis Beschreibung / Wurzelverzeichnis des Dateisystems. /bin/ Grundlegende Werkzeuge für den Single-User-Modus sowie den Mehrbenutzerbetrieb. /boot/ Programme und Konfigurationsdateien, die während des Bootens benutzt werden. /boot/defaults/ Vorgaben für die Boot-Konfiguration. Weitere Details finden Sie in &man.loader.conf.5;. /dev/ Gerätedateien. Weitere Details finden Sie in &man.intro.4;. /etc/ Konfigurationsdateien und Skripten des Systems. /etc/defaults/ Vorgaben für die System Konfigurationsdateien. Weitere Details finden Sie in &man.rc.8;. /etc/mail/ Konfigurationsdateien von MTAs wie &man.sendmail.8;. /etc/namedb/ Konfigurationsdateien von &man.named.8;. /etc/periodic/ Täglich, wöchentlich oder monatlich laufende Skripte, die von &man.cron.8; gestartet werden. Weitere Details finden Sie in &man.periodic.8;. /etc/ppp/ Konfigurationsdateien von &man.ppp.8;. /mnt/ Ein leeres Verzeichnis, das von Systemadministratoren häufig als temporärer Mountpunkt genutzt wird. /proc/ Prozess Dateisystem. Weitere Details finden Sie in &man.procfs.5; und &man.mount.procfs.8;. /rescue/ Statisch gelinkte Programme zur Wiederherstellung des Systems, wie in &man.rescue.8; beschrieben. /root/ Home Verzeichnis von root. /sbin/ Systemprogramme und administrative Werkzeuge, die grundlegend für den Single-User-Modus und den Mehrbenutzerbetrieb sind. /tmp/ Temporäre Dateien, die für gewöhnlich bei einem Neustart des Systems verloren gehen. Häufig wird ein speicherbasiertes Dateisystem unter /tmp eingehängt. Dieser Vorgang kann automatisiert werden, wenn tmpmfs-bezogene Variablen von &man.rc.conf.5; verwendet werden, oder ein entsprechender Eintrag in /etc/fstab existiert. Weitere Informationen finden Sie in &man.mdmfs.8;. /usr/ Der Großteil der Benutzerprogramme und Anwendungen. /usr/bin/ Gebräuchliche Werkzeuge, Programmierhilfen und Anwendungen. /usr/include/ Standard C include-Dateien. /usr/lib/ Bibliotheken. /usr/libdata/ Daten verschiedener Werkzeuge. /usr/libexec/ System-Dämonen und System-Werkzeuge, die von anderen Programmen ausgeführt werden. /usr/local/ Lokale Programme und Bibliotheken. Die Ports-Sammlung von &os; benutzt dieses Verzeichnis als Zielverzeichnis für Anwendungen. Innerhalb von /usr/local sollte das von &man.hier.7; beschriebene Layout für /usr benutzt werden. Das man Verzeichnis wird direkt unter /usr/local anstelle unter /usr/local/share angelegt. Die Dokumentation der Ports findet sich in share/doc/port. /usr/obj/ Von der Architektur abhängiger Verzeichnisbaum, der durch das Bauen von /usr/src entsteht. /usr/ports/ Die &os;-Ports-Sammlung (optional). /usr/sbin/ System-Dämonen und System-Werkzeuge, die von Benutzern ausgeführt werden. /usr/share/ Von der Architektur unabhängige Dateien. /usr/src/ Quelldateien von BSD und/oder lokalen Ergänzungen. /var/ Wird für mehrere Zwecke genutzt und enthält Logdateien, temporäre Daten und Spooldateien. Manchmal wird ein speicherbasiertes Dateisystem unter /var eingehängt. Dieser Vorgang kann automatisiert werden, wenn die varmfs-bezogenen Variablen von &man.rc.conf.5; verwendet werden, oder ein entsprechender Eintrag in /etc/fstab existiert. Weitere Informationen finden Sie in &man.mdmfs.8;. /var/log/ Verschiedene Logdateien des Systems. /var/mail/ Postfächer der Benutzer. /var/spool/ Verschiedene Spool-Verzeichnisse der Drucker- und Mailsysteme. /var/tmp/ Temporäre Dateien, die in der Regel auch bei einem Neustart des Systems erhalten bleiben, es sei denn, bei /var handelt es sich um ein speicherbasiertes Dateisystem. /var/yp/ NIS maps. Festplatten, Slices und Partitionen &os; identifiziert Dateien anhand eines Dateinamens. In Dateinamen wird zwischen Groß- und Kleinschreibung unterschieden: readme.txt und README.TXT bezeichnen daher zwei verschiedene Dateien. &os; benutzt keine Dateiendungen, um den Typ der Datei zu bestimmen, egal ob es sich um ein Programm, ein Dokument oder um andere Daten handelt. Dateien werden in Verzeichnissen gespeichert. In einem Verzeichnis können sich keine oder hunderte Dateien befinden. Ein Verzeichnis kann auch andere Verzeichnisse enthalten und so eine Hierarchie von Verzeichnissen aufbauen, die die Ablage von Daten erleichtert. In Dateinamen werden Verzeichnisse durch einen Schrägstrich (/, Slash) getrennt. Wenn z.B. das Verzeichnis foo ein Verzeichnis bar enthält, in dem sich die Datei readme.txt befindet, lautet der vollständige Name der Datei (oder der Pfad zur Datei) foo/bar/readme.txt. Beachten Sie, dass sich dies von &windows; unterscheidet, wo der \ (Backslash für die Trennung von Datei- und Verzeichnisnamen verwendet wird. &os; benutzt keine Laufwerkbuchstaben oder Laufwerknamen im Pfad. Beispielsweise würde man unter &os; nicht c:/foo/bar/readme.txt eingeben. Verzeichnisse und Dateien werden in einem Dateisystem gespeichert. Jedes Dateisystem besitzt genau ein Wurzelverzeichnis, das so genannte Root-Directory. Dieses Wurzelverzeichnis kann weitere Verzeichnisse enthalten. Ein Dateisystem wird als Wurzeldateisystem festgelegt, und jedes weitere Dateisystem wird unter dem Wurzeldateisystem eingehangen. Daher scheint jedes Verzeichnis, unabhängig von der Anzahl der Platten, auf der selben Platte zu liegen. Betrachten wir die drei Dateisysteme A, B und C. Jedes Dateisystem besitzt ein eigenes Wurzelverzeichnis, das zwei andere Verzeichnisse enthält: A1, A2, B1, B2, C1 und C2. Das Wurzeldateisystem soll A sein. &man.ls.1; zeigt darin die beiden Verzeichnisse A1 und A2 an. Der Verzeichnisbaum sieht wie folgt aus: / | +--- A1 | `--- A2 Ein Dateisystem wird in einem Verzeichnis eines anderen Dateisystems eingehangen. Wir hängen nun das Dateisystem B in das Verzeichnis A1 ein. Das Wurzelverzeichnis von B ersetzt nun das Verzeichnis A1 und die Verzeichnisse des Dateisystems B werden sichtbar: / | +--- A1 | | | +--- B1 | | | `--- B2 | `--- A2 Jede Datei in den Verzeichnissen B1 oder B2 kann über den Pfad /A1/B1 oder /A1/B2 erreicht werden. Dateien aus dem Verzeichnis /A1 sind jetzt verborgen. Wenn das Dateisystem B wieder abgehangen wird (umount), erscheinen die verborgenen Dateien wieder. Wenn das Dateisystem B unter dem Verzeichnis A2 eingehangen würde, sähe der Verzeichnisbaum so aus: / | +--- A1 | `--- A2 | +--- B1 | `--- B2 Die Dateien des Dateisystems B wären unter den Pfaden /A2/B1 und /A2/B2 erreichbar. Dateisysteme können übereinander eingehangen werden. Der folgende Baum entsteht, wenn im letzten Beispiel das Dateisystem C in das Verzeichnis B1 des Dateisystems B eingehangen wird: / | +--- A1 | `--- A2 | +--- B1 | | | +--- C1 | | | `--- C2 | `--- B2 C könnte auch im Verzeichnis A1 eingehangen werden: / | +--- A1 | | | +--- C1 | | | `--- C2 | `--- A2 | +--- B1 | `--- B2 Sie können sogar mit nur einem großen Dateisystem auskommen. Dies hat mehrere Nachteile und einen Vorteil. Vorteile mehrerer Dateisysteme Die Dateisysteme können mit unterschiedlichen Optionen (mount options) eingehangen werden. Beispielsweise kann das Wurzeldateisystem schreibgeschützt eingehangen werden, sodass es für Benutzer nicht möglich ist, versehentlich kritische Dateien zu editieren oder zu löschen. Von Benutzern beschreibbare Dateisysteme wie /home können mit der Option nosuid eingehangen werden, wenn sie von anderen Dateisystemen getrennt sind. Die SUID- und GUID-Bits verlieren auf solchen Dateisystemen ihre Wirkung und die Sicherheit des Systems kann dadurch erhöht werden. Die Lage von Dateien im Dateisystem wird, abhängig vom Gebrauch des Dateisystems, automatisch von &os; optimiert. Ein Dateisystem mit vielen kleinen Dateien, die häufig geschrieben werden, wird anders behandelt als ein Dateisystem mit wenigen großen Dateien. Mit nur einem Dateisystem ist diese Optimierung unmöglich. In der Regel übersteht ein &os;-Dateisystem auch einen Stromausfall. Allerdings kann ein Stromausfall zu einem kritischen Zeitpunkt das Dateisystem beschädigen. Wenn die Daten über mehrere Dateisysteme verteilt sind, lässt sich das System mit hoher Wahrscheinlichkeit noch starten. Dies erleichtert das Zurückspielen von Datensicherungen. Vorteil eines einzelnen Dateisystems Dateisysteme haben eine festgelegte Größe. Es kann passieren, dass Sie eine Partition vergrößern müssen. Dies ist nicht leicht: Sie müssen die Daten sichern, das Dateisystem vergrößert anlegen und die gesicherten Daten zurückspielen. &os; kennt den Befehl &man.growfs.8;, mit dem man Dateisysteme im laufenden Betrieb vergrößern kann. Dateisysteme befinden sich in Partitionen (damit sind nicht die normalen &ms-dos;-Partitionen gemeint). Jede Partition wird mit einem Buchstaben von a bis h bezeichnet und kann nur ein Dateisystem enthalten. Dateisysteme können daher über ihren Mount-Point, den Punkt an dem sie eingehangen sind, oder den Buchstaben der Partition, in der sie liegen, identifiziert werden. &os; benutzt einen Teil der Platte für den Swap-Bereich, um virtuellen Speicher zur Verfügung zu stellen. Dadurch kann der Rechner Anwendungen mehr Speicher zur Verfügung stellen als tatsächlich eingebaut ist. Wenn der Speicher knapp wird, kann &os; nicht benutzte Daten in den Swap-Bereich auslagern. Die ausgelagerten Daten können später wieder in den Speicher geholt werden (dafür werden dann andere Daten ausgelagert). Für einige Partitionen gelten besondere Konventionen: Partition Konvention a Enthält normalerweise das Wurzeldateisystem. b Enthält normalerweise den Swap-Bereich. c Ist normalerweise genauso groß wie die Slice in der die Partition liegt. Werkzeuge, die auf der kompletten Slice arbeiten, wie ein Bad-Block-Scanner, können so die c-Partition benutzen. Für gewöhnlich wird in dieser Partition kein Dateisystem angelegt. d Früher hatte die d-Partition eine besondere Bedeutung. Heute ist dies nicht mehr der Fall und die Partition d kann wie jede andere Partition auch verwendet werden. In &os; werden Festplatten in Slices, welche in &windows; als Partitionen bekannt sind, aufgeteilt und von 1 bis 4 durchnummeriert. Diese werden dann in Partitionen unterteilt, welche wiederum Dateisysteme enthalten und mit Buchstaben benannt werden. Slices Partitionen dangerously dedicated Die Slice-Nummern werden mit vorgestelltem s hinter den Gerätenamen gestellt: da0s1 ist die erste Slice auf dem ersten SCSI-Laufwerk. Auf einer Festplatte gibt es höchstens vier Slices. In einer Slice des passenden Typs kann es weitere logische Slices geben. Diese erweiterten Slices werden ab fünf durchnummeriert: ad0s5 ist die erste erweiterte Slice auf einer IDE-Platte. Diese Geräte werden von Dateisystemen benutzt, die sich in einer kompletten Slice befinden müssen. Slices, dangerously dedicated-Festplatten und andere Platten enthalten Partitionen, die mit Buchstaben von a bis h bezeichnet werden. Der Buchstabe wird an den Gerätenamen gehangen: da0a ist die a-Partition des ersten da-Laufwerks. Dieses Laufwerk ist dangerously dedicated. ad1s3e ist die fünfte Partition in der dritten Slice der zweiten IDE-Platte. Schließlich wird noch jede Festplatte des Systems eindeutig bezeichnet. Der Name einer Festplatte beginnt mit einem Code, der den Typ der Platte bezeichnet. Es folgt eine Nummer, die angibt, um welche Festplatte es sich handelt. Anders als bei Slices werden Festplatten von Null beginnend durchnummeriert. Gängige Festplatten-Namen sind in aufgeführt. Wenn Sie eine Partition angeben, beinhaltet das den Plattennamen, s, die Slice-Nummer und den Buchstaben der Partition. Einige Beispiele finden Sie in . Der Aufbau einer Festplatte wird in dargestellt. Bei der Installation von &os; legen Sie Slices auf der Festplatte an, erstellen Partitionen für &os; innerhalb der Slice, erstellen ein Dateisystem oder Auslagerungsbereiche und entscheiden, welche Dateisysteme wo eingehangen werden. Laufwerk-Codes Code Bedeutung ad ATAPI (IDE) Festplatte da SCSI-Festplatte acd ATAPI (IDE) CD-ROM cd SCSI-CD-ROM fd Disketten-Laufwerk
Namen von Platten, Slices und Partitionen Name Bedeutung ad0s1a Die erste Partition (a) in der ersten Slice (s1) der ersten IDE-Festplatte (ad0). da1s2e Die fünfte Partition (e) der zweiten Slice (s2) auf der zweiten SCSI-Festplatte (da1). Aufteilung einer Festplatte Das folgende Diagramm zeigt die Sicht von &os; auf die erste IDE-Festplatte des Systems. Die Platte soll 4 GB groß sein und zwei Slices (&ms-dos;-Partitionen) mit je 2 GB besitzen. Die erste Slice enthält ein &ms-dos;-Laufwerk (C:), die zweite Slice wird von &os; benutzt. Die &os;-Installation in diesem Beispiel verwendet drei Datenpartitionen und einen Auslagerungsbereich. Jede der drei Partitionen enthält ein Dateisystem. Das Wurzeldateisystem ist die a-Partition. In der e-Partition befindet sich der /var-Verzeichnisbaum und in der f-Partition befindet sich der Verzeichnisbaum unterhalb von /usr. .-----------------. --. | | | | DOS / Windows | | : : > First slice, ad0s1 : : | | | | :=================: ==: --. | | | Partition a, mounted as / | | | > referred to as ad0s2a | | | | | :-----------------: ==: | | | | Partition b, used as swap | | | > referred to as ad0s2b | | | | | :-----------------: ==: | Partition c, no | | | Partition e, used as /var > file system, all | | > referred to as ad0s2e | of FreeBSD slice, | | | | ad0s2c :-----------------: ==: | | | | | : : | Partition f, used as /usr | : : > referred to as ad0s2f | : : | | | | | | | | --' | `-----------------' --'
Anhängen und Abhängen von Dateisystemen Ein Dateisystem wird am besten als ein Baum mit der Wurzel / veranschaulicht. /dev, /usr, und die anderen Verzeichnisse im Rootverzeichnis sind Zweige, die wiederum eigene Zweige wie /usr/local haben können. Root-Dateisystem Es gibt verschiedene Gründe, bestimmte dieser Verzeichnisse auf eigenen Dateisystemen anzulegen. /var enthält log/, spool/ sowie verschiedene andere temporäre Dateien und kann sich daher schnell füllen. Es empfiehlt sich, /var von / zu trennen, da es schlecht ist, wenn das Root-Dateisystem voll läuft. Ein weiterer Grund bestimmte Verzeichnisbäume auf andere Dateisysteme zu legen, ist gegeben, wenn sich die Verzeichnisbäume auf gesonderten physikalischen oder virtuellen Platten, wie Network File System oder CD-ROM-Laufwerken, befinden. Die <filename>fstab</filename> Datei Dateisysteme fstab Während des Boot-Prozesses () werden in /etc/fstab aufgeführte Verzeichnisse, sofern sie nicht mit der Option versehen sind, automatisch angehangen. Diese Datei enthält Einträge in folgendem Format: device /mount-point fstype options dumpfreq passno device Ein existierender Gerätename wie in beschrieben. mount-point Ein existierendes Verzeichnis, auf dem das Dateisystem gemountet wird. fstype Der Typ des Dateisystems, der an &man.mount.8; weitergegeben wird. &os;s Standarddateisystem ist ufs. options Entweder für beschreibbare Dateisysteme oder für schreibgeschützte Dateisysteme, gefolgt von weiteren benötigten Optionen. Eine häufig verwendete Option ist für Dateisysteme, die während der normalen Bootsequenz nicht angehangen werden sollen. Weitere Optionen finden sich in &man.mount.8;. dumpfreq Wird von &man.dump.8; benutzt, um bestimmen zu können, welche Dateisysteme gesichert werden müssen. Fehlt der Wert, wird 0 angenommen. passno Bestimmt die Reihenfolge, in der die Dateisysteme überprüft werden sollen. Für Dateisysteme, die übersprungen werden sollen, ist passno auf 0 zu setzen. Für das Root-Dateisystem, das vor allen anderen überprüft werden muss, sollte der Wert von passno 1 betragen. Allen anderen Dateisystemen sollten Werte größer 1 zugewiesen werden. Wenn mehrere Dateisysteme den gleichen Wert besitzen, wird &man.fsck.8; versuchen, diese parallel zu überprüfen. Lesen Sie &man.fstab.5; für weitere Informationen über das Format von /etc/fstab und dessen Optionen. Verwendung von &man.mount.8; Dateisysteme anhängen Dateisysteme werden mit &man.mount.8; eingehängt. In der grundlegenden Form wird es wie folgt benutzt: &prompt.root; mount device mountpoint Dieser Befehl bietet viele Optionen, die in &man.mount.8; beschrieben werden. Die am häufigsten verwendeten Optionen sind: Optionen von <command>mount</command> Hängt alle Dateisysteme aus /etc/fstab an. Davon ausgenommen sind Dateisysteme, die mit noauto markiert sind, die mit der Option ausgeschlossen wurden und Dateisysteme, die schon angehangen sind. Führt alles bis auf den mount-Systemaufruf aus. Nützlich ist diese Option in Verbindung mit . Damit wird angezeigt, was &man.mount.8; tatsächlich versuchen würde, um das Dateisystem anzuhängen. Erzwingt das Anhängen eines unsauberen Dateisystems (riskant) oder die Rücknahme des Schreibzugriffs, wenn der Status des Dateisystems von beschreibbar auf schreibgeschützt geändert wird. Hängt das Dateisystem schreibgeschützt ein. Dies kann auch durch Angabe von erreicht werden. fstype Hängt das Dateisystem mit dem angegebenen Typ an, oder hängt nur Dateisysteme mit dem angegebenen Typ an, wenn angegeben wurde. ufs ist das Standarddateisystem. Aktualisiert die Mountoptionen des Dateisystems. Geschwätzig sein. Hängt das Dateisystem beschreibbar an. Die folgenden Optionen können durch eine Kommata separierte Liste an übergeben werden: nosuid SetUID und SetGID Bits werden auf dem Dateisystem nicht beachtet. Dies ist eine nützliche Sicherheitsfunktion. Verwendung von &man.umount.8; Dateisysteme abhängen &man.umount.8; hängt ein Dateisysstem ab. Dieser Befehl akzeptiert als Parameter entweder einen Mountpoint, einen Gerätenamen, oder . Jede Form akzeptiert , um das Abhängen zu erzwingen, und , um etwas geschwätziger zu sein. Seien Sie bitte vorsichtig mit , da der Computer abstürzen kann oder es können Daten auf dem Dateisystem beschädigt werden. Um alle Dateisysteme abzuhängen, oder nur diejenigen, die mit gelistet werden, wird oder benutzt. Beachten Sie, dass das Root-Dateisystem nicht aushängt. Prozesse &os; ist ein Multitasking-Betriebssystem. Jedes Programm, das zu irgendeiner Zeit läuft wird als Prozess bezeichnet. Jedes laufende Kommando startet mindestens einen neuen Prozess. Dazu gibt es eine Reihe von Systemprozessen, die von &os; ausgeführt werden. Jeder Prozess wird durch eine eindeutige Nummer identifiziert, die Prozess-ID (PID) genannt wird. Prozesse haben ebenso wie Dateien einen Besitzer und eine Gruppe, die festlegen, welche Dateien und Geräte der Prozess benutzen kann. Die meisten Prozesse haben auch einen Elternprozess, der sie gestartet hat. Beispielsweise ist die Shell ein Prozess. Jedes in Shell gestartete Kommando ist dann ein neuer Prozess, der die Shell als Elternprozess besitzt. Die Ausnahme hiervon ist ein spezieller Prozess namens &man.init.8;, der beim booten immer als erstes gestartet wird und der immer die PID 1 hat. Um die Prozesse auf dem System zu sehen, benutzen Sie &man.ps.1; und &man.top.1;. Eine statische Liste der laufenden Prozesse, deren PIDs, Speicherverbrauch und die Kommandozeile, mit der sie gestartet wurden, erhalten Sie mit &man.ps.1;. Um alle laufenden Prozesse in einer Anzeige zu sehen, die alle paar Sekunden aktualisiert wird, so dass Sie interaktiv sehen können was der Computer macht, benutzen Sie &man.top.1;. In der Voreinstellung zeigt &man.ps.1; nur die laufenden Prozesse, die dem Benutzer gehören. Zum Beispiel: &prompt.user; ps PID TT STAT TIME COMMAND 298 p0 Ss 0:01.10 tcsh 7078 p0 S 2:40.88 xemacs mdoc.xsl (xemacs-21.1.14) 37393 p0 I 0:03.11 xemacs freebsd.dsl (xemacs-21.1.14) 72210 p0 R+ 0:00.00 ps 390 p1 Is 0:01.14 tcsh 7059 p2 Is+ 1:36.18 /usr/local/bin/mutt -y 6688 p3 IWs 0:00.00 tcsh 10735 p4 IWs 0:00.00 tcsh 20256 p5 IWs 0:00.00 tcsh 262 v0 IWs 0:00.00 -tcsh (tcsh) 270 v0 IW+ 0:00.00 /bin/sh /usr/X11R6/bin/startx -- -bpp 16 280 v0 IW+ 0:00.00 xinit /home/nik/.xinitrc -- -bpp 16 284 v0 IW 0:00.00 /bin/sh /home/nik/.xinitrc 285 v0 S 0:38.45 /usr/X11R6/bin/sawfish Die Ausgabe von &man.ps.1; ist in einer Anzahl von Spalten organisiert. Die PID Spalte zeigt die Prozess-ID. PIDs werden von 1 beginnend bis 99999 zugewiesen und fangen wieder von vorne an. Ist eine PID bereits vergeben, wird diese allerdings nicht erneut vergeben. Die Spalte TT zeigt den Terminal, auf dem das Programm läuft. STAT zeigt den Status des Programms und TIME gibt die Zeit an, die das Programm auf der CPU gelaufen ist. Dies ist nicht unbedingt die Zeit, die seit dem Start des Programms vergangen ist, da die meisten Programme hauptsächlich auf bestimmte Dinge warten, bevor sie wirklich CPU-Zeit verbrauchen. Unter der Spalte COMMAND findet sich schließlich die Kommandozeile, mit der das Programm gestartet wurde. &man.ps.1; besitzt viele Optionen, um die angezeigten Informationen zu beeinflussen. Eine nützliche Kombination ist auxww. zeigt Information über alle laufenden Prozesse aller Benutzer. Der Name des Besitzers des Prozesses, sowie Informationen über den Speicherverbrauch werden mit angezeigt. zeigt auch Dämonen-Prozesse an, und veranlasst &man.ps.1; die komplette Kommandozeile für jeden Befehl anzuzeigen, anstatt sie abzuschneiden, wenn sie zu lang für die Bildschirmausgabe wird. Die Ausgabe von &man.top.1; sieht ähnlich aus: &prompt.user; top last pid: 72257; load averages: 0.13, 0.09, 0.03 up 0+13:38:33 22:39:10 47 processes: 1 running, 46 sleeping CPU states: 12.6% user, 0.0% nice, 7.8% system, 0.0% interrupt, 79.7% idle Mem: 36M Active, 5256K Inact, 13M Wired, 6312K Cache, 15M Buf, 408K Free Swap: 256M Total, 38M Used, 217M Free, 15% Inuse PID USERNAME PRI NICE SIZE RES STATE TIME WCPU CPU COMMAND 72257 nik 28 0 1960K 1044K RUN 0:00 14.86% 1.42% top 7078 nik 2 0 15280K 10960K select 2:54 0.88% 0.88% xemacs-21.1.14 281 nik 2 0 18636K 7112K select 5:36 0.73% 0.73% XF86_SVGA 296 nik 2 0 3240K 1644K select 0:12 0.05% 0.05% xterm 175 root 2 0 924K 252K select 1:41 0.00% 0.00% syslogd 7059 nik 2 0 7260K 4644K poll 1:38 0.00% 0.00% mutt ... Die Ausgabe ist in zwei Abschnitte geteilt. In den ersten fünf Kopfzeilen finden sich die zuletzt zugeteilte PID, die Systemauslastung (engl. load average), die Systemlaufzeit (die Zeit seit dem letzten Reboot) und die momentane Zeit. Die weiteren Zahlen im Kopf beschreiben wie viele Prozesse momentan laufen (im Beispiel 47), wie viel Speicher und Swap verbraucht wurde und wie viel Zeit das System in den verschiedenen CPU-Modi verbringt. Darunter befinden sich einige Spalten mit ähnlichen Informationen wie in der Ausgabe von &man.ps.1;, beispielsweise die PID, den Besitzer, die verbrauchte CPU-Zeit und das Kommando, das den Prozess gestartet hat. &man.top.1; zeigt in zwei Spalten den Speicherverbrauch des Prozesses an. Die erste Spalte gibt den gesamten Speicherverbrauch des Prozesses an, in der zweiten Spalte wird der aktuelle Verbrauch angegeben. mutt hat im gezeigten Beispiel insgesamt 8 MB Speicher verbraucht. Momentan benutzt es allerdings nur 5 MB. Die Anzeige wird von &man.top.1; automatisch alle zwei Sekunden aktualisiert. Ein anderer Intervall kann mit spezifiziert werden. Dämonen, Signale und Stoppen von Prozessen Wenn Sie einen Editor benutzen, können Sie ihn leicht bedienen und Dateien laden, weil der Editor dafür Vorsorge getroffen hat und auf einem Terminal läuft. Manche Programme erwarten keine Eingaben von einem Benutzer und lösen sich bei erster Gelegenheit von ihrem Terminal. Ein Webserver zum Beispiel antwortet auf Web-Anfragen und nicht auf Benutzereingaben. Mail-Server sind ein weiteres Beispiel für diesen Typ von Anwendungen. Diese Programme sind als Dämonen bekannt. Der Begriff Dämon stammt aus der griechischen Mythologie und bezeichnet ein Wesen, das weder gut noch böse ist und welches unsichtbar nützliche Aufgaben verrichtet. Deshalb ist das BSD Maskottchen dieser fröhlich aussehende Dämon mit Turnschuhen und Dreizack. Programme, die als Dämon laufen, werden entsprechend einer Konvention mit einem d am Ende benannt. BIND steht beispielsweise für Berkeley Internet Name Domain, das tatsächlich laufende Programm heißt aber &man.named.8;. Der Apache Webserver wird httpd genannt und der Druckerspool-Dämon heißt &man.lpd.8;. Dies ist allerdings nur eine Konvention. Der Dämon der Anwendung Sendmail heißt beispielsweise &man.sendmail.8; und nicht maild. Eine Möglichkeit mit einem Dämon oder einem laufenden Prozess zu kommunizieren, ist über das Versenden von Signalen mittels &man.kill.1;. Es gibt eine Reihe von verschiedenen Signalen. Manche haben eine feste Bedeutung, während andere in der Dokumentation der Anwendung beschrieben sind. Ein Benutzer kann ein Signal nur an einen Prozess senden, welcher ihm gehört. Wird versucht ein Signal an einen Prozess eines anderen Benutzers zu senden, resultiert dies in einem Zugriffsfehler mangels fehlender Berechtigungen. Die Ausnahme ist der root-Benutzer, welcher jedem Prozess Signale senden kann. &os; kann auch ein Signal an einen Prozess senden. Wenn eine Anwendung schlecht geschrieben ist und auf Speicher zugreift, auf den sie nicht zugreifen soll, so sendet &os; dem Prozess das Segmentation Violation Signal (SIGSEGV). Wenn eine Anwendung den &man.alarm.3; Systemaufruf benutzt hat, um nach einiger Zeit benachrichtigt zu werden, bekommt sie das Alarm Signal (SIGALRM) gesendet. Zwei Signale können benutzt werden, um einen Prozess zu stoppen: SIGTERM und SIGKILL. SIGTERM fordert den Prozess höflich zum Beenden auf. Der Prozess kann das Signal abfangen und hat dann Gelegenheit Logdateien zu schließen und die Aktion, die er durchführte, abzuschließen. In manchen Situationen kann der Prozess SIGTERM ignorieren, wenn er eine Aktion durchführt, die nicht unterbrochen werden darf. SIGKILL kann von keinem Prozess ignoriert werden. Das Signal lässt sich mit Mich interessiert nicht, was du gerade machst, hör sofort auf damit! umschreiben. Wird einem Prozess SIGKILL geschickt, dann wird &os; diesen sofort beenden Es gibt Fälle, in denen ein Prozess nicht unterbrochen werden kann. Wenn ein Prozess zum Beispiel eine Datei von einem anderen Rechner auf dem Netzwerk liest und dieser Rechner nicht erreichbar ist, dann ist der Prozess nicht zu unterbrechen. Wenn der Prozess den Lesezugriff nach einem Timeout von typischerweise zwei Minuten aufgibt, dann wird er beendet. . Andere häufig verwendete Signale sind SIGHUP, SIGUSR1 und SIGUSR2. Diese Signale sind für allgemeine Zwecke vorgesehen und verschiedene Anwendungen werden unterschiedlich auf diese Signale reagieren. Ändern Sie beispielsweise die Konfiguration eines Webservers, so muss dieser angewiesen werden, seine Konfiguration neu zu lesen. Ein Neustart von httpd würde dazu führen, dass der Server für kurze Zeit nicht erreichbar ist. Senden Sie dem Dämon stattdessen das SIGHUP-Signal. Es sei erwähnt, dass verschiedene Dämonen sich anders verhalten. Lesen Sie bitte die Dokumentation des entsprechenden Dämonen um zu überprüfen, ob der Dämon bei einem SIGHUP die gewünschten Ergebnisse erzielt. Verschicken von Signalen Das folgende Beispiel zeigt, wie Sie &man.inetd.8; ein Signal schicken. Die Konfigurationsdatei von &man.inetd.8; ist /etc/inetd.conf. Diese Konfigurationsdatei liest &man.inetd.8; ein, wenn er SIGHUP empfängt. Suchen Sie mit &man.pgrep.1; die PID des Prozesses, dem Sie ein Signal schicken wollen. In diesem Beispiel ist die PID von &man.inetd.8; 198: &prompt.user; pgrep -l inetd 198 inetd -wW Benutzen Sie &man.kill.1;, um ein Signal zu senden. Da &man.inetd.8; dem Benutzer root gehört, müssen Sie zuerst mit &man.su.1; root werden: &prompt.user; su Password: &prompt.root; /bin/kill -s HUP 198 &man.kill.1; wird, wie andere &unix; Kommandos auch, keine Ausgabe erzeugen, wenn das Kommando erfolgreich war. Wird versucht, einem Prozess der nicht dem Benutzer gehört, ein Signal zu senden, dann wird die Meldung kill: PID: Operation not permitted ausgegeben. Ein Tippfehler bei der Eingabe der PID führt dazu, dass das Signal an einen falschen Prozess gesendet wird, was zu negativen Ergebnissen führen kann, oder das Signal wird an eine PID gesendet die derzeit nicht in Gebrauch ist, was zu dem Fehler kill: PID: No such process führt. Warum sollte man <command>/bin/kill</command> benutzen? Viele Shells stellen kill als internes Kommando zur Verfügung, das heißt die Shell sendet das Signal direkt, anstatt /bin/kill zu starten. Beachten Sie, dass die unterschiedlichen Shells eine andere Syntax benutzen, um die Namen der Signale anzugeben. Anstatt jede Syntax zu lernen, kann es einfacher sein, /bin/kill ... direkt aufzurufen. Beim Versenden von anderen Signalen, ersetzen Sie TERM oder KILL in der Kommandozeile mit dem entsprechenden Signal. Das zufällige Beenden eines Prozesses kann gravierende Auswirkungen haben. Insbesondere &man.init.8;, mit der PID 1, ist ein Spezialfall. /bin/kill -s KILL 1 ist ein schneller, jedoch nicht empfohlener Weg, das System herunterzufahren. Überprüfen Sie die Argumente von &man.kill.1; immer zweimal bevor Sie Return drücken. Shells Shells Kommandozeile &os; stellt mit der Shell eine Kommandozeilen-Schnittstelle zur Verfügung. Eine Shell empfängt Befehle von einem Eingabekanal und führt diese aus. Viele Shells bieten bieten eingebaute Funktionen, die die tägliche Arbeit erleichtern, beispielsweise eine Dateiverwaltung, die Vervollständigung von Dateinamen (Globbing), Kommandozeilen-Editor, sowie Makros und Umgebungsvariablen. &os; enthält einige Shells, darunter die Bourne Shell (&man.sh.1;) und die verbesserte C-Shell (&man.tcsh.1;). Weitere Shells, wie zsh oder bash, befinden sich in der Ports-Sammlung. Die verwendete Shell ist letztlich eine Frage des Geschmacks. Ein C-Programmierer, findet vielleicht eine C-artige Shell wie &man.tcsh.1; angenehmer. Ein &linux;-Benutzer bevorzugt vielleicht bash. Jede Shell hat ihre speziellen Eigenschaften, die mit der bevorzugten Arbeitsumgebung des Benutzers harmonieren kann oder nicht. Deshalb stehen mehrere Shells zur Auswahl. Ein verbreitetes Merkmal in Shells ist die Dateinamen-Vervollständigung. Nachdem der Benutzer einige Buchstaben eines Kommandos oder eines Dateinamen eingeben hat, vervollständigt die Shell den Rest automatisch durch drücken der Tab-Taste. Angenommen, Sie haben zwei Dateien foobar und foo.bar. Um foo.bar zu löschen, geben Sie folgendes ein: rm fo[Tab].[Tab] Die Shell sollte dann rm foo[BEEP].bar ausgeben. [BEEP] meint den Rechner-Piepser, den die Shell ausgibt um anzuzeigen, dass es den Dateinamen nicht vervollständigen konnte, da es mehrere Möglichkeiten gibt. Beide Dateien foobar und foo.bar beginnen mit fo. Nach der Eingabe von . und erneutem drücken der Tab-Taste, war die Shell in der Lage den Rest auszufüllen. Umgebungsvariablen Ein weiteres Merkmal der Shell ist der Gebrauch von Umgebungsvariablen. Dies sind veränderbare Schlüsselpaare im Umgebungsraum der Shell, die jedes von der Shell aufgerufene Programm lesen kann. Daher enthält der Umgebungsraum viele Konfigurationsdaten für Programme. Die folgende Liste zeigt verbreitete Umgebungsvariablen und deren Bedeutung: Variable Beschreibung USER Name des angemeldeten Benutzers. PATH Liste mit Verzeichnissen (getrennt durch Doppelpunkt) zum Suchen nach Programmen. DISPLAY Der Name des Xorg-Bildschirms, auf dem Ausgaben erfolgen sollen. SHELL Die aktuelle Shell. TERM Name des Terminaltyps des Benutzers. Benutzt, um die Fähigkeiten des Terminals zu bestimmen. TERMCAP Datenbankeintrag der Terminal Escape Codes, benötigt um verschieden Terminalfunktionen auszuführen. OSTYPE Typ des Betriebssystems. MACHTYPE Die CPU-Architektur des Systems. EDITOR Vom Benutzer bevorzugter Text-Editor. PAGER Vom Benutzer bevorzugter Text-Betrachter. MANPATH Liste mit Verzeichnissen (getrennt durch Doppelpunkt) zum Suchen nach Manualpages. Shells Bourne Shell Das Setzen von Umgebungsvariablen unterscheidet sich von Shell zu Shell. In &man.tcsh.1; und &man.csh.1; wird dazu setenv benutzt. &man.sh.1; und bash benutzen export um Umgebungsvariablen zu setzen. Dieses Beispiel für die &man.tcsh.1;-Shell setzt die Variable EDITOR auf /usr/local/bin/emacs: &prompt.user; setenv EDITOR /usr/local/bin/emacs Der entsprechende Befehl für bash wäre: &prompt.user; export EDITOR="/usr/local/bin/emacs" Um eine Umgebungsvariable zu expandieren, geben Sie in der Kommandozeile das Zeichen $ vor dessen Namen ein. Zum Beispiel gibt echo $TERM den aktuellen Wert von$TERM aus. Shells behandeln Spezialzeichen, so genannte Metazeichen, als besondere Darstellungen für Daten. Das häufigste Zeichen ist *, das eine beliebige Anzahl Zeichen in einem Dateinamen repräsentiert. Metazeichen können zur Vervollständigung von Dateinamen (Globbing) benutzt werden. Beispielsweise liefert echo * nahezu das gleiche wie &man.ls.1;, da die Shell alle Dateinamen die mit * übereinstimmen, an echo weitergibt. Um zu verhindern, dass die Shell ein Sonderzeichen interpretiert, schützt man es, indem man einen Backslash (\) voranstellt. Zum Beispiel zeigt echo $TERM die Einstellung des Terminals an, wohingegen echo \$TERM einfach die Zeichenfolge $TERM ausgibt. Ändern der Shell Der einfachste Weg die Standard Shell zu ändern, ist chsh zu benutzen. chsh startet den Editor, welcher durch die Umgebungsvariable EDITOR gesetzt ist. Standardmäßig ist dies &man.vi.1;. Tragen Sie in die Zeile die mit Shell: beginnt, den absoluten Pfad der neuen Shell ein. Alternativ setzt chsh -s die Shell, ohne dabei einen Editor aufzurufen. Um die Shell zum Beispiel auf bash zu ändern, geben Sie folgenden Befehl ein: &prompt.user; chsh -s /usr/local/bin/bash Die neue Shell muss in /etc/shells aufgeführt sein. Wurde die Shell aus der &os; Ports-Sammlung installiert, so wie in beschrieben, sollte sie automatisch zu dieser Datei hinzugefügt worden sein. Wenn der Eintrag fehlt, nutzen Sie folgenden Befehl, und ersetzen Sie den Pfad mit dem Pfad zur gewünschten Shell: &prompt.root; echo "/usr/local/bin/bash" >> /etc/shells Danach kann &man.chsh.1; erneut aufgerufen werden. Text-Editoren Text Editoren Editoren Die meiste Konfiguration unter &os; wird durch das Editieren von Textdateien erledigt. Deshalb ist es eine gute Idee, mit einem Texteditor vertraut zu werden. &os; hat ein paar davon im Basissystem und sehr viel mehr in der Ports-Sammlung. &man.ee.1; Text Editoren ee Ein einfach zu erlernender Editor ist &man.ee.1;, was für easy editor steht. Um diesen Editor zu starten, gibt man in der Kommandozeile ee filename ein, wobei filename den Namen der zu editierenden Datei darstellt. Einmal im Editor, finden sich alle Editor-Funktionen oben im Display aufgelistet. Das Einschaltungszeichen ^ steht für die Ctrl (oder Strg) Taste, mit ^e ist also die Tastenkombination Ctrle gemeint. Um &man.ee.1; zu verlassen, drücken Sie Esc und wählen dann im Hauptmenü aus. Der Editor fragt nach, ob Sie speichern möchten, wenn die Datei verändert wurde. &man.vi.1; Text Editoren &man.vi.1; emacs Text Editoren emacs &os; verfügt über leistungsfähigere Editoren wie &man.vi.1; als Teil des Basissystems. Andere Editoren wie editors/emacs und editors/vim sind Teil der Ports-Sammlung. Diese Editoren bieten höhere Funktionalität, jedoch auf Kosten einer etwas schwierigeren Erlernbarkeit. Das Erlernen eines leistungsfähigeren Editors, wie vim oder Emacs, kann auf lange Sicht Zeit einsparen. Viele Anwendungen, die Dateien verändern oder Texteingabe erwarten, werden automatisch einen Texteditor öffnen. Um den Standardeditor zu ändern, wird die Umgebungsvariable EDITOR gesetzt, wie im Abschnitt beschrieben. Geräte und Gerätedateien Der Begriff Gerät wird meist in Verbindung mit Hardware wie Laufwerken, Druckern, Grafikkarten oder Tastaturen gebraucht. Der Großteil der Meldungen, die beim Booten von &os; angezeigt werden, beziehen sich auf gefundene Geräte. Eine Kopie dieser Bootmeldungen wird in /var/run/dmesg.boot gespeichert. Jedes Gerät verfügt über einen Gerätenamen und Gerätenummer. Zum Beispiel steht acd0 für das erste IDE CD-ROM Laufwerk, während kbd0 die Tastatur repräsentiert. Auf die meisten Geräte wird unter &os; über spezielle Gerätedateien im /dev Verzeichnis zugegriffen. Weitere Informationen Manualpages Manualpages Die umfassendste Dokumentation rund um &os; gibt es in Form von Manualpages. Annähernd jedes Programm im System bringt eine kurze Referenzdokumentation mit, die die grundsätzliche Funktion und verschiedene Parameter erklärt. Diese Manuals können mit man eingesehen werden: &prompt.user; man Kommando Kommando ist der Name des Kommandos, über das man etwas erfahren will. Um beispielsweise mehr über das Kommando &man.ls.1; zu erfahren, geben Sie ein: &prompt.user; man ls Die Online-Manuals sind in nummerierte Sektionen unterteilt: Benutzerkommandos. Systemaufrufe und Fehlernummern. Funktionen der C Bibliothek. Gerätetreiber. Dateiformate. Spiele und andere Unterhaltung. Verschiedene Informationen. Systemverwaltung und -Kommandos. Kernel Entwickler. In einigen Fällen kann dasselbe Thema in mehreren Sektionen auftauchen. Es gibt zum Beispiel ein &man.chmod.1; Benutzerkommando und einen chmod() Systemaufruf. Um &man.man.1; mitzuteilen, aus welcher Sektion die Information angezeigt werden soll, kann die Sektionsnummer mit angeben werden: &prompt.user; man 1 chmod Dies wird Ihnen die Manualpage für das Benutzerkommando &man.chmod.1; zeigen. Verweise auf eine Sektion der Manualpages werden traditionell in Klammern gesetzt. So bezieht sich &man.chmod.1; auf das Benutzerkommando und &man.chmod.2; auf den Systemaufruf. Wenn der Name des Kommandos nicht bekannt ist, benutzt man man -k, um nach Schlüsselbegriffen in den Kommandobeschreibungen zu suchen: &prompt.user; man -k mail Dieser Befehl zeigt eine Liste von Kommandos, deren Beschreibung das Schlüsselwort mail enthält. Die gleiche Funktionalität erhalten Sie auch, wenn Sie &man.apropos.1; benutzen. Um herauszufinden, was die Kommandos in /usr/bin tun, geben Sie ein: &prompt.user; cd /usr/bin &prompt.user; man -f * Dasselbe erreichen Sie durch Eingabe von: &prompt.user; cd /usr/bin &prompt.user; whatis * GNU Info Dateien &os; enthält viele Anwendungen und Utilities der Free Software Foundation (FSF). Zusätzlich zu den Manualpages können diese Programme Hypertext-Dokumente enthalten, die info-Seiten genannt werden. Diese Dokumente können mit &man.info.1; ansehen kann. Wenn editors/emacs installiert ist, kann auch der info-Modus von emacs benutzt werden. Um &man.info.1; zu benutzen, geben Sie ein: &prompt.user; info Eine kurze Einführung gibt es mit h; eine Befehlsreferenz erhalten Sie durch Eingabe von: ?.