Changeset View
Changeset View
Standalone View
Standalone View
head/de_DE.ISO8859-1/books/handbook/basics/chapter.xml
- This file uses an unknown character encoding.
<?xml version="1.0" encoding="iso-8859-1"?> | <?xml version="1.0" encoding="iso-8859-1"?> | ||||
<!-- | <!-- | ||||
The FreeBSD Documentation Project | The FreeBSD Documentation Project | ||||
The FreeBSD German Documentation Project | The FreeBSD German Documentation Project | ||||
$FreeBSD$ | $FreeBSD$ | ||||
$FreeBSDde$ | $FreeBSDde$ | ||||
basiert auf: r40588 | basiert auf: r40856 | ||||
--> | --> | ||||
<chapter xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0" xml:id="basics"> | <chapter xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0" xml:id="basics"> | ||||
<info><title>Grundlagen des UNIX Betriebssystems</title> | <info><title>Grundlagen des UNIX Betriebssystems</title> | ||||
<authorgroup> | <authorgroup> | ||||
<author><personname><firstname>Chris</firstname><surname>Shumway</surname></personname><contrib>Umgeschrieben von </contrib></author> | <author><personname><firstname>Chris</firstname><surname>Shumway</surname></personname><contrib>Umgeschrieben von </contrib></author> | ||||
</authorgroup> | </authorgroup> | ||||
<authorgroup> | <authorgroup> | ||||
<author><personname><firstname>Uwe</firstname><surname>Pierau</surname></personname><contrib>Übersetzt von </contrib></author> | <author><personname><firstname>Uwe</firstname><surname>Pierau</surname></personname><contrib>Übersetzt von </contrib></author> | ||||
</authorgroup> | </authorgroup> | ||||
</info> | </info> | ||||
<sect1 xml:id="basics-synopsis"> | <sect1 xml:id="basics-synopsis"> | ||||
<title>Übersicht</title> | <title>Übersicht</title> | ||||
<para>Das folgende Kapitel umfasst die grundlegenden Kommandos | <para>Dieses Kapitel umfasst die grundlegenden Kommandos | ||||
und Funktionsweisen des Betriebssystems FreeBSD. Viel von dem folgenden | und Funktionsweisen des &os;-Betriebssystems. Viel von diesem | ||||
Material gilt auch für jedes andere &unix;-artige System. | Material gilt auch für jedes andere &unix;-artige System. | ||||
Falls Sie mit dem Material schon vertraut sind, können Sie dieses | Neue Benutzer von &os; sollten dieses Kapitel aufmerksam | ||||
Kapitel überlesen. Wenn FreeBSD neu für Sie ist, dann sollten | lesen.</para> | ||||
Sie dieses Kapitel auf jeden Fall aufmerksam lesen.</para> | |||||
<para>Dieser Abschnitt behandelt die folgenden Themen:</para> | <para>Dieser Abschnitt behandelt die folgenden Themen:</para> | ||||
<itemizedlist> | <itemizedlist> | ||||
<listitem> | <listitem> | ||||
<para>virtuelle Konsolen,</para> | <para>virtuelle Konsolen,</para> | ||||
</listitem> | </listitem> | ||||
<listitem> | <listitem> | ||||
Show All 33 Lines | <chapter xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0" xml:id="basics"> | ||||
</itemizedlist> | </itemizedlist> | ||||
</sect1> | </sect1> | ||||
<sect1 xml:id="consoles"> | <sect1 xml:id="consoles"> | ||||
<title>Virtuelle Konsolen und Terminals</title> | <title>Virtuelle Konsolen und Terminals</title> | ||||
<indexterm><primary>virtuelle Konsole</primary></indexterm> | <indexterm><primary>virtuelle Konsole</primary></indexterm> | ||||
<indexterm><primary>Terminals</primary></indexterm> | <indexterm><primary>Terminals</primary></indexterm> | ||||
<para>Sie können FreeBSD mit einem Terminal benutzen, der nur Text | <para>Sie können &os; mit einem Terminal benutzen, der nur Text | ||||
darstellen kann. Wenn Sie FreeBSD auf diese Weise benutzen, stehen | darstellen kann. Wenn Sie FreeBSD auf diese Weise benutzen, stehen | ||||
Ihnen alle Möglichkeiten eines &unix; Betriebssystems zur | Ihnen alle Möglichkeiten eines &unix; Betriebssystems zur | ||||
Verfügung. Dieser Abschnitt beschreibt was Terminals und | Verfügung. Dieser Abschnitt beschreibt was Terminals und | ||||
Konsolen sind und wie sie unter FreeBSD eingesetzt werden.</para> | Konsolen sind und wie sie unter &os; eingesetzt werden.</para> | ||||
<sect2 xml:id="consoles-intro"> | <sect2 xml:id="consoles-intro"> | ||||
<title>Die Konsole</title> | <title>Die Konsole</title> | ||||
<indexterm><primary>Konsole</primary></indexterm> | <indexterm><primary>Konsole</primary></indexterm> | ||||
<para>Wenn Ihr FreeBSD-System ohne eine graphische | <para>Wenn das &os;-System so konfiguriert wurde, dass es ohne | ||||
Benutzeroberfläche startet, wird am Ende des Systemstarts, | eine grafische Benutzeroberfläche startet, wird das System | ||||
nachdem die Startskripten gelaufen sind, ein Anmeldeprompt | nach dem Start einen Anmeldeprompt ausgeben, wie in diesem | ||||
ausgegeben. Die letzten Startmeldungen sollten ähnlich wie | Beispiel zu sehen:</para> | ||||
die Folgenden aussehen:</para> | |||||
<screen>Additional ABI support:. | <screen>FreeBSD/amd64 (pc3.example.org) (ttyv0) | ||||
Local package initialization:. | |||||
Additional TCP options:. | |||||
Fri Sep 20 13:01:06 EEST 2002 | |||||
FreeBSD/i386 (pc3.example.org) (ttyv0) | |||||
login:</screen> | login:</screen> | ||||
<para>Beachten Sie die letzten beiden Zeilen der Ausgabe, die | <para>Die erste Zeile enthält einige Informationen über das | ||||
vorletzte lautet:</para> | System. <literal>amd64</literal> zeigt an, dass auf dem | ||||
System in diesem Beispiel eine 64-Bit Version von &os; | |||||
läuft. Der Hostname ist | |||||
<systemitem>pc3.example.org</systemitem> und | |||||
<filename>ttyv0</filename> gibt an, dass dies die | |||||
Systemkonsole ist.</para> | |||||
<programlisting>FreeBSD/i386 (pc3.example.org) (ttyv0)</programlisting> | <para>Die zweite Zeile zeigt den Anmeldeprompt. Im nächsten | ||||
Abschnitt wird beschrieben, wie Sie sich an diesem Prompt | |||||
<para>Diese Zeile enthält einige Informationen über das | anmelden.</para> | ||||
gerade gestartete System. Die Ausgabe stammt von der | |||||
FreeBSD-Konsole einer Maschine mit einem Intel oder | |||||
Intel-kompatiblen Prozessor der x86-Architektur<footnote> | |||||
<para>Genau das ist mit <literal>i386</literal> gemeint. Auch | |||||
wenn Ihr System keine Intel 386 CPU besitzt, wird | |||||
<literal>i386</literal> ausgegeben. Es wird immer die | |||||
Architektur und nicht der Typ des Prozessors ausgegeben.</para> | |||||
</footnote>. Der Name des Systems (jedes &unix; System besitzt | |||||
einen Namen) ist <systemitem>pc3.example.org</systemitem> und die Ausgabe | |||||
stammt von der Systemkonsole, dem Terminal | |||||
<filename>ttyv0</filename>.</para> | |||||
<para>Das Ende der Ausgabe ist immer die Aufforderung zur Eingabe | |||||
eines Benutzernamens:</para> | |||||
<programlisting>login:</programlisting> | |||||
<para>Der Anmeldevorgang wird im nächsten Abschnitt | |||||
erläutert.</para> | |||||
</sect2> | </sect2> | ||||
<sect2 xml:id="consoles-login"> | <sect2 xml:id="consoles-login"> | ||||
<title>Der Anmeldevorgang</title> | <title>Der Anmeldevorgang</title> | ||||
<para>FreeBSD ist ein Mehrbenutzersystem, das Multitasking | <para>&os; ist ein Mehrbenutzersystem, das Multitasking | ||||
unterstützt. Das heißt mehrere Benutzer können | unterstützt. Das heißt mehrere Benutzer können | ||||
gleichzeitig viele Programme auf einem System laufen lassen.</para> | gleichzeitig viele Programme auf einem System laufen lassen.</para> | ||||
<para>Jedes Mehrbenutzersystem muss die Benutzer voneinander | <para>Jedes Mehrbenutzersystem muss die Benutzer voneinander | ||||
unterscheiden können. Bei FreeBSD und allen anderen | unterscheiden können. Bei &os; und allen anderen | ||||
&unix;-artigen | &unix;-artigen | ||||
Betriebssystemen wird dies dadurch erreicht, dass sich die | Betriebssystemen wird dies dadurch erreicht, dass sich die | ||||
Benutzer anmelden müssen, bevor sie Programme laufen lassen | Benutzer anmelden müssen, bevor sie Programme laufen lassen | ||||
können. Jeder Benutzer besitzt einen eindeutigen Namen (den | können. Jeder Benutzer besitzt einen eindeutigen Namen (den | ||||
Account) und ein dazugehörendes Passwort, die beide bei | Account) und ein dazugehörendes Passwort. &os; wird beides | ||||
der Anmeldung abgefragt werden.</para> | abfragen, bevor es dem Benutzer ermöglicht Programme laufen zu | ||||
lassen.</para> | |||||
<indexterm><primary>Startskripten</primary></indexterm> | <indexterm><primary>Startskripten</primary></indexterm> | ||||
<para>Nachdem FreeBSD gestartet ist und die Startskripten<footnote> | <para>Wenn ein &os;-System startet, werden automatisch | ||||
<para>Startskripten sind Programme, die FreeBSD automatisch bei | Startskripte ausgeführt, um das System vorzubereiten und | ||||
jedem Startvorgang ausführt. Der Zweck der Skripte | entsprechend konfigurierte Dienste zu starten. Nachdem das | ||||
besteht darin, das System zu konfigurieren und nützliche | System die Startskripte abgearbeitet hat, wird es einen | ||||
Dienste im Hintergrund zu starten.</para> | Anmeldeprompt präsentieren:</para> | ||||
</footnote>, gelaufen sind, erscheint eine Aufforderung zur Eingabe | |||||
des Benutzernamens:</para> | |||||
<screen>login:</screen> | <screen>login:</screen> | ||||
<para>Wenn Ihr Benutzername beispielsweise <systemitem class="username">john</systemitem> | <para>Geben Sie den Benutzernamen ein, der während der | ||||
ist, geben Sie jetzt <literal>john</literal> gefolgt von | <link linkend="bsdinstall-addusers">Systeminstallation</link> | ||||
<keycap>Enter</keycap> ein. Sie sollten dann eine Aufforderung zur | konfiguriert wurde und drücken Sie <keycap>Enter</keycap>. | ||||
Eingabe des Passworts erhalten:</para> | Geben Sie dann das zum Benutzernamen zugeordnete Passwort ein | ||||
und drücken <keycap>Enter</keycap>. Das Passwort wird aus | |||||
Sicherheitsgründen | |||||
<emphasis>nicht angezeigt</emphasis>.</para> | |||||
<screen>login: <userinput>john</userinput> | <para>Sobald das richtige Passwort eingegeben wird, wird die | ||||
Password:</screen> | Nachricht des Tages (<acronym>MOTD</acronym>) gefolgt von | ||||
einer Eingabeaufforderung (dem Zeichen <literal>#</literal>, | |||||
<para>Geben Sie jetzt das Passwort von <systemitem class="username">john</systemitem> | <literal>$</literal> oder <literal>%</literal>) angezeigt. | ||||
gefolgt von <keycap>Enter</keycap> ein. Das Passwort wird aus | Sie sind nun an der &os;-Systemkonsole angemeldet und bereit, | ||||
Sicherheitsgründen nicht auf dem Bildschirm angezeigt.</para> | alle verfügbaren Kommandos zu probieren.</para> | ||||
<para>Wenn Sie das richtige Passwort eingegeben haben, sind Sie | |||||
am System angemeldet und können nun alle verfügbaren | |||||
Kommandos absetzen.</para> | |||||
<para>Anmgemeldet sind Sie, wenn Sie die Tagesmeldungen | |||||
(<foreignphrase>message of today</foreignphrase>) gefolgt | |||||
von einer Eingabeaufforderung (dem Zeichen <literal>#</literal>, | |||||
<literal>$</literal> oder <literal>%</literal>) gesehen | |||||
haben.</para> | |||||
</sect2> | </sect2> | ||||
<sect2 xml:id="consoles-virtual"> | <sect2 xml:id="consoles-virtual"> | ||||
<title>Virtuelle Konsolen</title> | <title>Virtuelle Konsolen</title> | ||||
<para>Da FreeBSD mehrere Programme gleichzeitig laufen lassen kann, | <para>&os; kann so konfiguriert werden, dass viele virtuelle | ||||
ist eine einzige Konsole, an der Kommandos abgesetzt werden | Konsolen zur Eingabe von Befehlen zur Verfügung stehen. Jede | ||||
können, zu wenig. Abhilfe schaffen virtuelle Konsolen, die | virtuelle Konsole verfügt über einen eigenen Anmeldeprompt und | ||||
mehrere Konsolen zur Verfügung stellen.</para> | Ausgabekanal, und &os; kümmert sich um die ordnungsgemäße | ||||
Umleitung von Tastatureingaben und Monitorausgaben, wenn Sie | |||||
zwischen den virtuellen Konsolen umschalten.</para> | |||||
<para>Die Anzahl der virtuellen Konsolen unter FreeBSD können Sie | <para>Zum Umschalten der Konsolen stellt &os; spezielle | ||||
einstellen. Zwischen den einzelnen Konsolen können Sie mit | |||||
speziellen Tastenkombinationen wechseln. Jede Konsole verfügt | |||||
über einen eigenen Ausgabekanal und FreeBSD ordnet die | |||||
Tastatureingaben und Monitorausgaben der richtigen Konsole zu, wenn | |||||
Sie zwischen den Konsolen wechseln.</para> | |||||
<para>Zum Umschalten der Konsolen stellt FreeBSD spezielle | |||||
Tastenkombinationen bereit<footnote> | Tastenkombinationen bereit<footnote> | ||||
<para>Eine recht technische und genaue Beschreibung der FreeBSD-Konsole | <para>Lesen Sie &man.syscons.4;, &man.atkbd.4;, | ||||
und der Tastatur-Treiber finden Sie in den Hilfeseiten | &man.vidcontrol.1; und &man.kbdcontrol.1; für eine recht | ||||
&man.syscons.4;, &man.atkbd.4;, &man.vidcontrol.1; und | technische Beschreibung der &os;-Konsole und der | ||||
&man.kbdcontrol.1;. Lesen Sie diese Seiten, wenn Sie an den | Tastatur-Treiber.</para></footnote>. Benutzen Sie | ||||
Einzelheiten interessiert sind.</para> | |||||
</footnote>. Benutzen Sie | |||||
<keycombo><keycap>Alt</keycap><keycap>F1</keycap></keycombo>, | <keycombo><keycap>Alt</keycap><keycap>F1</keycap></keycombo>, | ||||
<keycombo><keycap>Alt</keycap><keycap>F2</keycap></keycombo> bis | <keycombo><keycap>Alt</keycap><keycap>F2</keycap></keycombo> | ||||
bis | |||||
<keycombo><keycap>Alt</keycap><keycap>F8</keycap></keycombo>, | <keycombo><keycap>Alt</keycap><keycap>F8</keycap></keycombo>, | ||||
um zwischen den verschiedenen Konsolen umzuschalten.</para> | um zwischen den verschiedenen virtuellen Konsolen | ||||
umzuschalten.</para> | |||||
<para>Wenn Sie zu einer anderen Konsole wechseln, sichert FreeBSD den | <para>Wird von einer Konsole zur nächsten gewechselt, sichert | ||||
Bildschirminhalt und gibt den Bildschirminhalt der neuen Konsole | &os; den Bildschirminhalt und gibt den Bildschirminhalt der | ||||
aus. Dies erzeugt die Illusion mehrerer Bildschirme und | neuen Konsole aus. Dies erzeugt die Illusion mehrerer | ||||
Tastaturen, an denen Sie Kommandos absetzen können. Wenn eine | Bildschirme und Tastaturen, an denen Kommandos abgesetzt | ||||
Konsole nicht sichtbar ist, weil Sie auf eine andere Konsole | werden können. Wenn eine Konsole nicht sichtbar ist, weil | ||||
gewechselt haben, laufen die dort abgesetzten Kommandos | ein Benutzer auf eine andere Konsole gewechselt hat, laufen | ||||
weiter.</para> | die dort abgesetzten Kommandos trotzdem weiter.</para> | ||||
</sect2> | </sect2> | ||||
<sect2 xml:id="consoles-ttys"> | <sect2 xml:id="consoles-ttys"> | ||||
<title><filename>/etc/ttys</filename></title> | <title><filename>/etc/ttys</filename></title> | ||||
<para>In der Voreinstellung stehen unter FreeBSD acht virtuelle | <para>In der Voreinstellung startet &os; acht virtuelle | ||||
Konsolen zur Verfügung, deren Anzahl Sie leicht erhöhen | Konsolen, deren Anzahl Sie leicht erhöhen | ||||
oder verringern können. Die Anzahl und Art der Konsolen wird | oder verringern können. Die Anzahl und Art der Konsolen wird | ||||
in <filename>/etc/ttys</filename> eingestellt.</para> | in <filename>/etc/ttys</filename> eingestellt.</para> | ||||
<para>Jede Zeile in <filename>/etc/ttys</filename>, die nicht mit | <para>Jede Zeile in <filename>/etc/ttys</filename>, die nicht | ||||
<literal>#</literal> anfängt, konfiguriert einen Terminal oder | mit <literal>#</literal> anfängt, konfiguriert einen Terminal | ||||
eine virtuelle Konsole. In der Voreinstellung werden in dieser | oder eine virtuelle Konsole. In der Voreinstellung werden | ||||
Datei neun virtuelle Konsolen definiert, von denen acht aktiviert | neun virtuelle Konsolen definiert, von denen acht aktiviert | ||||
sind. Die Konsolen sind in den Zeilen, die mit | sind. Die Zeilen, die mit <literal>ttyv</literal> beginnen, | ||||
<literal>ttyv</literal> beginnen, definiert:</para> | kennzeichnen die Konsolen:</para> | ||||
<programlisting># name getty type status comments | <programlisting># name getty type status comments | ||||
# | # | ||||
ttyv0 "/usr/libexec/getty Pc" cons25 on secure | ttyv0 "/usr/libexec/getty Pc" cons25 on secure | ||||
# Virtual terminals | # Virtual terminals | ||||
ttyv1 "/usr/libexec/getty Pc" cons25 on secure | ttyv1 "/usr/libexec/getty Pc" cons25 on secure | ||||
ttyv2 "/usr/libexec/getty Pc" cons25 on secure | ttyv2 "/usr/libexec/getty Pc" cons25 on secure | ||||
ttyv3 "/usr/libexec/getty Pc" cons25 on secure | ttyv3 "/usr/libexec/getty Pc" cons25 on secure | ||||
ttyv4 "/usr/libexec/getty Pc" cons25 on secure | ttyv4 "/usr/libexec/getty Pc" cons25 on secure | ||||
ttyv5 "/usr/libexec/getty Pc" cons25 on secure | ttyv5 "/usr/libexec/getty Pc" cons25 on secure | ||||
ttyv6 "/usr/libexec/getty Pc" cons25 on secure | ttyv6 "/usr/libexec/getty Pc" cons25 on secure | ||||
ttyv7 "/usr/libexec/getty Pc" cons25 on secure | ttyv7 "/usr/libexec/getty Pc" cons25 on secure | ||||
ttyv8 "/usr/X11R6/bin/xdm -nodaemon" xterm off secure</programlisting> | ttyv8 "/usr/X11R6/bin/xdm -nodaemon" xterm off secure</programlisting> | ||||
<para>Die Hilfeseite &man.ttys.5; enthält eine ausführliche | <para>Die Manualpage &man.ttys.5; enthält eine ausführliche | ||||
Beschreibung der Spalten dieser Datei und der Optionen, die Sie zum | Beschreibung der Spalten dieser Datei und der verfügbaren | ||||
Konfigurieren der virtuellen Konsolen benutzen können.</para> | Optionen für virtuelle Konsolen.</para> | ||||
</sect2> | </sect2> | ||||
<sect2 xml:id="consoles-singleuser"> | <sect2 xml:id="consoles-singleuser"> | ||||
<title>Die Konsole im Single-User-Modus</title> | <title>Die Konsole im Single-User-Modus</title> | ||||
<para>Eine eingehende Beschreibung des Single-User-Modus finden Sie | <para>Eine eingehende Beschreibung des Single-User-Modus findet sich | ||||
in <xref linkend="boot-singleuser"/>. Im Single-User-Modus steht | in <xref linkend="boot-singleuser"/>. Im Single-User-Modus steht | ||||
Ihnen nur <emphasis>eine</emphasis> Konsole zur Verfügung. | nur <emphasis>eine</emphasis> Konsole zur Verfügung. | ||||
Die Definition dieser Konsole befindet sich ebenfalls in | Die Einstellungen dieser Konsole befinden sich in diesem | ||||
<filename>/etc/ttys</filename>. Suchen Sie nach einer Zeile, die | Abschnitt von <filename>/etc/ttys</filename>:</para> | ||||
mit <literal>console</literal> beginnt:</para> | |||||
<programlisting># name getty type status comments | <programlisting># name getty type status comments | ||||
# | # | ||||
# If console is marked "insecure", then init will ask for the root password | # If console is marked "insecure", then init will ask for the root password | ||||
# when going to single-user mode. | # when going to single-user mode. | ||||
console none unknown off secure</programlisting> | console none unknown off secure</programlisting> | ||||
<note> | <note> | ||||
<para>In der Zeile, die mit <literal>console</literal> beginnt, | <para>In der Zeile, die mit <literal>console</literal> beginnt, | ||||
können Sie <literal>secure</literal> durch | kann <literal>secure</literal> durch | ||||
<literal>insecure</literal> ersetzen. Wenn Sie danach in den | <literal>insecure</literal> ersetzt werden. Wenn danach in | ||||
Single-User-Modus booten, verlangt das System ebenfalls die | den Single-User-Modus gebootet wird, verlangt das System die | ||||
Eingabe des <systemitem class="username">root</systemitem>-Passworts.</para> | Eingabe des <systemitem | ||||
class="username">root</systemitem>-Passworts. In der | |||||
Standardeinstellung wird beim Betreten des Single-User-Modus | |||||
kein Passwort verlangt.</para> | |||||
<para><emphasis>Setzen Sie <literal>insecure</literal> nicht | <para><emphasis>Setzen Sie <literal>insecure</literal> nicht | ||||
leichtfertig ein.</emphasis> Wenn Sie das Passwort von | leichtfertig ein.</emphasis> Wenn Sie das | ||||
<systemitem class="username">root</systemitem> vergessen, wird es schwierig, in den | <systemitem class="username">root</systemitem>-Passwort | ||||
Single-User-Modus zu gelangen, wenn Sie den | vergessen, wird es schwierig, in den | ||||
FreeBSD-Boot-Prozess nicht genau verstehen.</para> | Single-User-Modus zu gelangen, wenn man den Bootprozess von | ||||
&os; nicht genau versteht.</para> | |||||
</note> | </note> | ||||
</sect2> | </sect2> | ||||
<sect2 xml:id="consoles-vidcontrol"> | <sect2 xml:id="consoles-vidcontrol"> | ||||
<title>Den Videomodus der Konsole anpassen</title> | <title>Den Videomodus der Konsole anpassen</title> | ||||
<para>Der Standard-Videomodus der FreeBSD-Konsole kann auf jeden | <para>Der Standard-Videomodus der &os;-Konsole kann auf jeden | ||||
Modus eingestellt werden, der von Ihrer Grafikkarte und Ihrem | Modus eingestellt werden, der von der Grafikkarte und dem | ||||
Monitor unterstützt wird (beispielsweise 1024x768 oder | Monitor unterstützt wird (beispielsweise 1024x768 oder | ||||
1280x1024). Wollen Sie eine andere Einstellung verwenden, | 1280x1024). Um eine andere Einstellung zu verwenden, muss | ||||
müssen Sie das <literal>VESA</literal>-Modul laden:</para> | das <literal>VESA</literal>-Modul geladen werden:</para> | ||||
<screen>&prompt.root; <userinput>kldload vesa</userinput></screen> | <screen>&prompt.root; <userinput>kldload vesa</userinput></screen> | ||||
<para>Um festzustellen welche Video-Modi von Ihrer Hardware | <para>Um festzustellen, welche Video-Modi von der Hardware | ||||
unterstützt werden, nutzen Sie das Werkzeug | unterstützt werden, nutzen Sie &man.vidcontrol.1;. Um eine | ||||
&man.vidcontrol.1;. Um beispielsweise einer Liste aller | Liste aller unterstützten Modi zu sehen, verwenden Sie diesen | ||||
unterstützten Modi zu erhalten, verwenden Sie den folgenden | |||||
Befehl:</para> | Befehl:</para> | ||||
<screen>&prompt.root; <userinput>vidcontrol -i mode</userinput></screen> | <screen>&prompt.root; <userinput>vidcontrol -i mode</userinput></screen> | ||||
<para>Als Ergebnis erhalten Sie eine Liste aller Videomodi, | <para>Die Ausgabe dieses Befehls listet alle Videomodi, die von | ||||
die von Ihrer Hardware unterstützt werden. Sie wählen | der Hardware unterstützt werden. Um einen neuen Video-Modi zu | ||||
einen neuen Modus aus, indem Sie den entsprechenden Wert | wählen, wird der entsprechende Modus als | ||||
(wiederum als Benutzer <systemitem class="username">root</systemitem>) an | <systemitem class="username">root</systemitem>-Benutzer an | ||||
&man.vidcontrol.1; übergeben:</para> | &man.vidcontrol.1; übergeben:</para> | ||||
<screen>&prompt.root; <userinput>vidcontrol MODE_279</userinput></screen> | <screen>&prompt.root; <userinput>vidcontrol MODE_279</userinput></screen> | ||||
<para>Um diese Einstellung dauerhaft zu speichern, müssen Sie | <para>Um diese Einstellung dauerhaft zu speichern, muss | ||||
die folgende Zeile in die Datei | folgende Zeile in <filename>/etc/rc.conf</filename> | ||||
<filename>/etc/rc.conf</filename> aufnehmen:</para> | hinzugefügt werden:</para> | ||||
<programlisting>allscreens_flags="MODE_279"</programlisting> | <programlisting>allscreens_flags="MODE_279"</programlisting> | ||||
</sect2> | </sect2> | ||||
</sect1> | </sect1> | ||||
<sect1 xml:id="permissions"> | <sect1 xml:id="permissions"> | ||||
<title>Zugriffsrechte</title> | <title>Zugriffsrechte</title> | ||||
<indexterm><primary>UNIX</primary></indexterm> | <indexterm><primary>UNIX</primary></indexterm> | ||||
<para>FreeBSD, das ein direkter Abkömmling von BSD &unix; ist, | <para>&os;, das ein direkter Abkömmling von BSD &unix; ist, | ||||
stützt sich auf mehrere Grundkonzepte von &unix; Systemen. | stützt sich auf mehrere Grundkonzepte von &unix; Systemen. | ||||
Das erste und ausgeprägteste: FreeBSD ist | Das erste und ausgeprägteste: &os; ist | ||||
ein Mehrbenutzer-Betriebssystem. Das System ermöglicht, | ein Mehrbenutzer-Betriebssystem, das es ermöglicht, | ||||
dass mehrere Benutzer gleichzeitig an völlig verschiedenen | dass mehrere Benutzer gleichzeitig an völlig verschiedenen | ||||
und unabhängigen Aufgaben arbeiten können. Es ist | und unabhängigen Aufgaben arbeiten können. Es ist | ||||
verantwortlich für eine gerechte Auf- und Zuteilung von | verantwortlich für eine gerechte Auf- und Zuteilung von | ||||
Nachfragen nach Hardware- und Peripheriegeräten, Speicher | Anfragen nach Hardware- und Peripheriegeräten, Speicher | ||||
und CPU-Zeit unter den Benutzern.</para> | und CPU-Zeit unter den Benutzern.</para> | ||||
<para>Da das System mehrere Benutzer unterstützt, hat alles, | <para>Da das System mehrere Benutzer unterstützt, hat alles, | ||||
was das System verwaltet, einen Satz von Rechten, die bestimmen, | was das System verwaltet, einen Satz von Rechten, die bestimmen, | ||||
wer die jeweilige Ressource lesen, schreiben oder ausführen | wer die jeweilige Ressource lesen, schreiben oder ausführen | ||||
darf. Diese Zugriffsrechte stehen in drei Achtergruppen, die in | darf. Diese Zugriffsrechte stehen in drei Achtergruppen, die in | ||||
drei Teile unterteilt sind: einen für den Besitzer der | drei Teile unterteilt sind: einen für den Besitzer der | ||||
Datei, einen für die Gruppe, zu der die Datei gehört | Datei, einen für die Gruppe, zu der die Datei gehört | ||||
▲ Show 20 Lines • Show All 65 Lines • ▼ Show 20 Lines | console none unknown off secure</programlisting> | ||||
</tbody> | </tbody> | ||||
</tgroup> | </tgroup> | ||||
</informaltable> | </informaltable> | ||||
<indexterm> | <indexterm> | ||||
<primary><command>ls</command></primary> | <primary><command>ls</command></primary> | ||||
</indexterm> | </indexterm> | ||||
<indexterm><primary>Verzeichnisse</primary></indexterm> | <indexterm><primary>Verzeichnisse</primary></indexterm> | ||||
<para>Sie können <option>-l</option> auf der Kommandozeile | <para>Benutzen Sie das Argument <option>-l</option> mit | ||||
von &man.ls.1; angeben, um eine ausführliche Verzeichnisauflistung | &man.ls.1;, um eine ausführliche Verzeichnisauflistung | ||||
zu sehen, die in einer Spalte die Zugriffsrechte für den | zu sehen, die in einer Spalte die Zugriffsrechte für den | ||||
Besitzer, die Gruppe und alle anderen enthält. | Besitzer, die Gruppe und alle anderen enthält. | ||||
Die Ausgabe von <command>ls -l</command> könnte | Die Ausgabe von <command>ls -l</command> könnte | ||||
wie folgt aussehen:</para> | wie folgt aussehen:</para> | ||||
<screen>&prompt.user; <userinput>ls -l</userinput> | <screen>&prompt.user; <userinput>ls -l</userinput> | ||||
total 530 | 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 myfile | ||||
-rw-r--r-- 1 root wheel 512 Sep 5 12:31 otherfile | -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 | -rw-r--r-- 1 root wheel 7680 Sep 5 12:31 email.txt</screen> | ||||
...</screen> | |||||
<para>Die erste Spalte der Ausgabe enthält die | <para>Das erste Zeichen (ganz links) der ersten Spalte zeigt an, | ||||
Zugriffsrechte:</para> | |||||
<screen>-rw-r--r--</screen> | |||||
<para>Das erste Zeichen von links ist ein Symbol, welches angibt, | |||||
ob es sich um eine normale Datei, ein Verzeichnis, ein | ob es sich um eine normale Datei, ein Verzeichnis, ein | ||||
zeichenorientiertes Gerät, ein Socket oder irgendeine andere | zeichenorientiertes Gerät, ein Socket oder irgendeine andere | ||||
Pseudo-Datei handelt. In diesem Beispiel zeigt <literal>-</literal> eine | Pseudo-Datei handelt. In diesem Beispiel zeigt <literal>-</literal> eine | ||||
normale Datei an. Die nächsten drei Zeichen, | normale Datei an. Die nächsten drei Zeichen, | ||||
dargestellt als <literal>rw-</literal>, ergeben die Rechte | dargestellt als <literal>rw-</literal>, ergeben die Rechte | ||||
für den Datei-Besitzer. Die drei Zeichen danach | für den Datei-Besitzer. Die drei Zeichen danach | ||||
<literal>r--</literal> die Rechte der Gruppe, zu der die Datei | <literal>r--</literal> die Rechte der Gruppe, zu der die Datei | ||||
gehört. Die letzten drei Zeichen, <literal>r--</literal>, | gehört. Die letzten drei Zeichen, <literal>r--</literal>, | ||||
geben die Rechte für den Rest der Welt an. Ein Minus | geben die Rechte für den Rest der Welt an. Ein Minus | ||||
bedeutet, dass das Recht nicht gegeben ist. In diesem Fall | bedeutet, dass das Recht nicht gegeben ist. In diesem Beispiel | ||||
sind die Zugriffsrechte also: der Eigentümer kann die Datei | sind die Zugriffsrechte also: der Eigentümer kann die Datei | ||||
lesen und schreiben, die Gruppe kann lesen und alle anderen | lesen und schreiben, die Gruppe kann lesen und alle anderen | ||||
können auch nur lesen. Entsprechend obiger Tabelle | können auch nur lesen. Entsprechend obiger Tabelle | ||||
wären die Zugriffsrechte für diese Datei | wären die Zugriffsrechte für diese Datei | ||||
<literal>644</literal>, worin jede Ziffer die drei Teile der | <literal>644</literal>, worin jede Ziffer die drei Teile der | ||||
Zugriffsrechte dieser Datei verkörpert.</para> | Zugriffsrechte dieser Datei verkörpert.</para> | ||||
<para>Das ist alles schön und gut, aber wie kontrolliert das | <para>Wie kontrolliert das System die Rechte von Hardware-Geräten? | ||||
System die Rechte von Hardware-Geräten? FreeBSD behandelt | &os; behandelt die meisten Hardware-Geräte als Dateien, welche | ||||
die meisten Hardware-Geräte als Dateien, welche Programme | Programme öffnen, lesen und mit Daten beschreiben können. Diese | ||||
öffnen, lesen und mit Daten beschreiben können wie | speziellen Gerätedateien sind in <filename>/dev</filename> | ||||
alle anderen Dateien auch. Diese Spezial-Dateien sind im | gespeichert.</para> | ||||
Verzeichnis <filename>/dev</filename> gespeichert.</para> | |||||
<para>Verzeichnisse werden ebenfalls wie Dateien behandelt. Sie | <para>Verzeichnisse werden ebenfalls wie Dateien behandelt. Sie | ||||
haben Lese-, Schreib- und Ausführ-Rechte. Das | haben Lese-, Schreib- und Ausführ-Rechte. Das | ||||
Ausführungs-Bit hat eine etwas andere Bedeutung für | Ausführungs-Bit hat eine etwas andere Bedeutung für | ||||
ein Verzeichnis als für eine Datei. Die Ausführbarkeit | ein Verzeichnis als für eine Datei. Die Ausführbarkeit | ||||
eines Verzeichnisses bedeutet, dass in das Verzeichnis | eines Verzeichnisses bedeutet, dass in das Verzeichnis, | ||||
zum Beispiel mit <command>cd</command> gewechselt werden kann. | zum Beispiel mit <command>cd</command>, gewechselt werden kann. | ||||
Das bedeutet auch, dass in dem Verzeichnis auf Dateien, deren | Das bedeutet auch, dass in dem Verzeichnis auf Dateien, deren | ||||
Namen bekannt sind, zugegriffen werden kann, vorausgesetzt die | Namen bekannt sind, zugegriffen werden kann, vorausgesetzt die | ||||
Zugriffsrechte der Dateien lassen dies zu.</para> | Zugriffsrechte der Dateien lassen dies zu.</para> | ||||
<para>Das Leserecht auf einem Verzeichnis erlaubt es, sich den Inhalt | <para>Das Leserecht auf einem Verzeichnis erlaubt es, sich den Inhalt | ||||
des Verzeichnisses anzeigen zu lassen. Um eine Datei mit bekanntem | des Verzeichnisses anzeigen zu lassen. Um eine Datei mit bekanntem | ||||
Namen in einem Verzeichnis zu löschen, müssen auf dem | Namen in einem Verzeichnis zu löschen, müssen auf dem | ||||
Verzeichnis Schreib- <emphasis>und</emphasis> Ausführ-Rechte | Verzeichnis Schreib- <emphasis>und</emphasis> Ausführ-Rechte | ||||
Show All 13 Lines | </authorgroup> | ||||
</info> | </info> | ||||
<indexterm> | <indexterm> | ||||
<primary>Zugriffsrechte</primary> | <primary>Zugriffsrechte</primary> | ||||
<secondary>symbolische</secondary> | <secondary>symbolische</secondary> | ||||
</indexterm> | </indexterm> | ||||
<para>Die Zugriffsrechte lassen sich auch über Symbole | <para>Symbolische Zugriffsrechte verwenden Zeichen anstelle von | ||||
anstelle von oktalen Werten festlegen. Symbolische | oktalen Werten, um die Berechtigungen für Dateien oder | ||||
Zugriffsrechte werden in der Reihenfolge | Verzeichnisse festzulegen. Zugriffsrechte verwenden die | ||||
<replaceable>Wer</replaceable>, <replaceable>Aktion</replaceable> | Syntax <replaceable>Wer</replaceable>, | ||||
und <replaceable>Berechtigung</replaceable> angegeben. | <replaceable>Aktion</replaceable> und | ||||
Die folgenden Symbole stehen zur Auswahl:</para> | <replaceable>Berechtigung</replaceable>. Die folgenden | ||||
Werte stehen zur Auswahl:</para> | |||||
<informaltable frame="none" pgwide="1"> | <informaltable frame="none" pgwide="1"> | ||||
<tgroup cols="3"> | <tgroup cols="3"> | ||||
<thead> | <thead> | ||||
<row> | <row> | ||||
<entry>Option</entry> | <entry>Option</entry> | ||||
<entry>Symbol</entry> | <entry>Symbol</entry> | ||||
<entry>Bedeutung</entry> | <entry>Bedeutung</entry> | ||||
▲ Show 20 Lines • Show All 72 Lines • ▼ Show 20 Lines | <row> | ||||
<entry><replaceable>Berechtigung</replaceable></entry> | <entry><replaceable>Berechtigung</replaceable></entry> | ||||
<entry>s</entry> | <entry>s</entry> | ||||
<entry>Set-UID oder Set-GID</entry> | <entry>Set-UID oder Set-GID</entry> | ||||
</row> | </row> | ||||
</tbody> | </tbody> | ||||
</tgroup> | </tgroup> | ||||
</informaltable> | </informaltable> | ||||
<para>Symbolische Zugriffsrechte werden wie die numerischen | <para>Diese symbolischen Werte werden zusammen mit &man.chmod.1; | ||||
mit dem Kommando &man.chmod.1; vergeben. Wenn | verwendet. Beispielsweise würde der folgende Befehl den Zugriff | ||||
Sie beispielsweise allen anderen Benutzern den Zugriff auf | auf <replaceable>FILE</replaceable> für alle anderen Benutzer | ||||
die Datei <replaceable>FILE</replaceable> verbieten wollen, | verbieten:</para> | ||||
benutzen Sie den nachstehenden Befehl:</para> | |||||
<screen>&prompt.user; <userinput>chmod go= FILE</userinput></screen> | <screen>&prompt.user; <userinput>chmod go= FILE</userinput></screen> | ||||
<para>Wenn Sie mehr als eine Änderung der Rechte einer | <para>Wenn Sie mehr als eine Änderung der Rechte einer | ||||
Datei vornehmen wollen, können Sie eine durch Kommata | Datei vornehmen wollen, können Sie eine durch Kommata | ||||
getrennte Liste der Rechte angeben. Das folgende Beispiel | getrennte Liste der Rechte angeben. Das folgende Beispiel | ||||
entzieht der Gruppe und der Welt (den anderen) die | entzieht der Gruppe und der Welt die Schreibberechtigung auf | ||||
Schreibberechtigung auf die Datei <replaceable>FILE</replaceable> | <replaceable>FILE</replaceable> und fügt für jeden | ||||
und fügt dann für alle Ausführungsrechte | Ausführungsrechte hinzu:</para> | ||||
hinzu:</para> | |||||
<screen>&prompt.user; <userinput>chmod go-w,a+x FILE</userinput></screen> | <screen>&prompt.user; <userinput>chmod go-w,a+x FILE</userinput></screen> | ||||
<!-- | <!-- | ||||
<para>Mit symbolischen Zugriffsrechten können Sie Rechte | <para>Mit symbolischen Zugriffsrechten können Sie Rechte | ||||
hinzufügen oder Rechte wegnehmen. Numerische Zugriffsrechte | hinzufügen oder Rechte wegnehmen. Numerische Zugriffsrechte | ||||
erlauben nur das explizite Setzen der Zugriffsrechte.</para> | erlauben nur das explizite Setzen der Zugriffsrechte.</para> | ||||
--> | --> | ||||
</sect2> | </sect2> | ||||
<sect2> | <sect2> | ||||
<info><title>&os; Datei-Flags</title> | <info><title>&os; Datei-Flags</title> | ||||
<authorgroup> | <authorgroup> | ||||
<author><personname><firstname>Tom</firstname><surname>Rhodes</surname></personname><contrib>Beigetragen von </contrib></author> | <author><personname><firstname>Tom</firstname><surname>Rhodes</surname></personname><contrib>Beigetragen von </contrib></author> | ||||
</authorgroup> | </authorgroup> | ||||
</info> | </info> | ||||
<para>Zusätzlich zu den vorhin diskutierten Zugriffsrechten | <para>Zusätzlich zu den Zugriffsrechten | ||||
unterstützt &os; auch die sogenannten | unterstützt &os; auch die Nutzung von | ||||
<quote>Datei-Flags</quote>. Diese erhöhen die Sicherheit | <quote>Datei-Flags</quote>. Diese erhöhen die Sicherheit | ||||
Ihres Systems, indem sie eine verbesserte Kontrolle von | Ihres Systems, indem sie eine verbesserte Kontrolle von | ||||
Dateien erlauben. Verzeichnisse werden allerdings nicht | Dateien erlauben. Verzeichnisse werden allerdings nicht | ||||
unterstützt.</para> | unterstützt. Mit dem Einsatz von Datei-Flags kann sogar | ||||
<systemitem class="username">root</systemitem> daran gehindert | |||||
werden, Dateien zu löschen oder zu verändern.</para> | |||||
<para>Diese verbesserte Sicherheit führt dazu, dass manche | <para>Datei-Flags werden mit &man.chflags.1; verändert. Um | ||||
Dateien nicht einmal von <systemitem class="username">root</systemitem> gelöscht | beispielsweise auf der Datei <filename>file1</filename> das | ||||
oder bearbeitet werden können.</para> | <quote>unlöschbar</quote>-Flag zu aktivieren, geben Sie | ||||
<para>Datei-Flags können über &man.chflags.1; gesetzt | |||||
oder gelöscht werden. Um beispielsweise die Datei | |||||
<filename>file1</filename> mit dem | |||||
<quote>unlöschbar</quote>-Flag zu sichern, geben Sie | |||||
folgenden Befehl ein:</para> | folgenden Befehl ein:</para> | ||||
<screen>&prompt.root; <userinput>chflags sunlink file1</userinput></screen> | <screen>&prompt.root; <userinput>chflags sunlink file1</userinput></screen> | ||||
<para>Um dieses Flag wieder zu löschen, geben Sie den | <para>Um dieses Flag zu deaktivieren, setzen Sie ein | ||||
Befehl erneut ein. Allerdings setzen Sie ein | |||||
<quote>no</quote> vor <option>sunlink</option>:</para> | <quote>no</quote> vor <option>sunlink</option>:</para> | ||||
<screen>&prompt.root; <userinput>chflags nosunlink file1</userinput></screen> | <screen>&prompt.root; <userinput>chflags nosunlink file1</userinput></screen> | ||||
<para>Um die Flags dieser Datei anzuzeigen, verwenden Sie | <para>Um die Flags einer Datei anzuzeigen, verwenden Sie | ||||
&man.ls.1; zusammen mit der Option <option>-lo</option>:</para> | &man.ls.1; zusammen mit <option>-lo</option>:</para> | ||||
<screen>&prompt.root; <userinput>ls -lo file1</userinput></screen> | <screen>&prompt.root; <userinput>ls -lo file1</userinput></screen> | ||||
<para>Dadurch erhalten Sie eine Ausgabe ähnlich der | |||||
folgenden:</para> | |||||
<programlisting>-rw-r--r-- 1 trhodes trhodes sunlnk 0 Mar 1 05:54 file1</programlisting> | <programlisting>-rw-r--r-- 1 trhodes trhodes sunlnk 0 Mar 1 05:54 file1</programlisting> | ||||
<para>Viele Flags können nur von <systemitem class="username">root</systemitem> | <para>Einige Datei-Flags können nur vom | ||||
<systemitem class="username">root</systemitem>-Benutzer | |||||
gesetzt oder gelöscht werden. Andere wiederum können | gesetzt oder gelöscht werden. Andere wiederum können | ||||
auch vom Eigentümer der Datei gesetzt werden. Weitere | auch vom Eigentümer der Datei gesetzt werden. Weitere | ||||
Informationen zu Datei-Flags finden sich in den Manualpages | Informationen hierzu finden sich in &man.chflags.1; und | ||||
&man.chflags.1; und &man.chflags.2;.</para> | &man.chflags.2;.</para> | ||||
</sect2> | </sect2> | ||||
<sect2> | <sect2> | ||||
<info><title>Die Berechtigungen <literal>setuid</literal>, | <info><title>Die Berechtigungen <literal>setuid</literal>, | ||||
<literal>setgid</literal>, und | <literal>setgid</literal>, und | ||||
<literal>sticky</literal></title> | <literal>sticky</literal></title> | ||||
<authorgroup> | <authorgroup> | ||||
<author><personname><firstname>Tom</firstname><surname>Rhodes</surname></personname><contrib>Beigetragen von </contrib></author> | <author><personname><firstname>Tom</firstname><surname>Rhodes</surname></personname><contrib>Beigetragen von </contrib></author> | ||||
Show All 20 Lines | <sect2> | ||||
Beispielsweise wird &man.passwd.1; mit der realen ID des Benutzers | Beispielsweise wird &man.passwd.1; mit der realen ID des Benutzers | ||||
ausgeführt, der sein Passwort ändert. Um jedoch die | ausgeführt, der sein Passwort ändert. Um jedoch die | ||||
Passwortdatenbank zu bearbeiten, wird es effektiv als | Passwortdatenbank zu bearbeiten, wird es effektiv als | ||||
<systemitem class="username">root</systemitem>-Benutzer ausgeführt. Das | <systemitem class="username">root</systemitem>-Benutzer ausgeführt. Das | ||||
ermöglicht es normalen Benutzern, ihr Passwort zu ändern, ohne | ermöglicht es normalen Benutzern, ihr Passwort zu ändern, ohne | ||||
einen <errorname>Permission Denied</errorname>-Fehler angezeigt zu | einen <errorname>Permission Denied</errorname>-Fehler angezeigt zu | ||||
bekommen.</para> | bekommen.</para> | ||||
<note> | |||||
<para>Die <literal>nosuid</literal> &man.mount.8;-Option wird dafür | |||||
sorgen, dass diese Anwendungen stillschweigend scheitern. Genauer | |||||
gesagt, sie werden nicht ausgeführt und der Anwender wird | |||||
darüber auch nicht informiert. Auf diese Option kann man sich | |||||
nicht vollständig verlassen, da ein | |||||
<literal>nosuid</literal>-Wrapper in der Lage wäre, dies zu | |||||
umgehen, wie in der &man.mount.8; Manualpage zu lesen ist.</para> | |||||
</note> | |||||
<para>Die setuid-Berechtigung kann durch das Voranstellen bei einer | <para>Die setuid-Berechtigung kann durch das Voranstellen bei einer | ||||
Berechtigungsgruppe mit der Nummer Vier (4) gesetzt werden, wie im | Berechtigungsgruppe mit der Nummer Vier (4) gesetzt werden, wie im | ||||
folgenden Beispiel gezeigt wird:</para> | folgenden Beispiel gezeigt wird:</para> | ||||
<screen>&prompt.root; <userinput>chmod 4755 suidexample.sh</userinput></screen> | <screen>&prompt.root; <userinput>chmod 4755 suidexample.sh</userinput></screen> | ||||
<para>Die Berechtigungen auf der | <para>Die Berechtigungen auf <filename>suidexample.sh</filename> | ||||
<filename>suidexample.sh</filename>-Datei | sehen jetzt wie folgt aus:</para> | ||||
sollten jetzt wie folgt aussehen:</para> | |||||
<programlisting>-rwsr-xr-x 1 trhodes trhodes 63 Aug 29 06:36 suidexample.sh</programlisting> | <programlisting>-rwsr-xr-x 1 trhodes trhodes 63 Aug 29 06:36 suidexample.sh</programlisting> | ||||
<para>In dem Beispiel sollte auffallen, dass ein <literal>s</literal> | <para>Beachten Sie, dass ein <literal>s</literal> jetzt Teil der | ||||
jetzt Teil der Berechtigungen des Dateibesitzers geworden ist, welches | Berechtigungen des Dateibesitzers geworden ist, welches | ||||
das Ausführen-Bit ersetzt. Dies ermöglicht es Werkzeugen | das Ausführen-Bit ersetzt. Dies ermöglicht es Werkzeugen | ||||
mit erhöhten Berechtigungen zu laufen, wie z.B. | mit erhöhten Berechtigungen zu laufen, wie z.B. | ||||
<command>passwd</command>.</para> | <command>passwd</command>.</para> | ||||
<note> | |||||
<para>Die <literal>nosuid</literal> &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 | |||||
<literal>nosuid</literal>-Wrapper in der Lage wäre, dies zu | |||||
umgehen.</para> | |||||
</note> | |||||
<para>Um dies in Echtzeit zu beobachten, öffnen Sie zwei Terminals. | <para>Um dies in Echtzeit zu beobachten, öffnen Sie zwei Terminals. | ||||
Starten Sie auf einem den <command>passwd</command>-Prozess als normaler | Starten Sie auf einem den <command>passwd</command>-Prozess als normaler | ||||
Benutzer. Während es auf die Passworteingabe wartet, | Benutzer. Während es auf die Passworteingabe wartet, | ||||
überprüfen Sie die Prozesstabelle und sehen Sie sich die | überprüfen Sie die Prozesstabelle und sehen Sie sich die | ||||
Informationen des <command>passwd</command>-Kommandos an.</para> | Informationen für <command>passwd</command> an.</para> | ||||
<para>Im Terminal A:</para> | <para>Im Terminal A:</para> | ||||
<screen>Changing local password for trhodes | <screen>Changing local password for trhodes | ||||
Old Password:</screen> | Old Password:</screen> | ||||
<para>Im Terminal B:</para> | <para>Im Terminal B:</para> | ||||
Show All 10 Lines | root 5211 0.0 0.2 3620 1724 2 I+ 2:09AM 0:00.01 passwd</screen> | ||||
Aktion wie die <literal>setuid</literal>-Berechtigung durch, allerdings | Aktion wie die <literal>setuid</literal>-Berechtigung durch, allerdings | ||||
verändert sie die Gruppenberechtigungen. Wenn eine Anwendung | verändert sie die Gruppenberechtigungen. Wenn eine Anwendung | ||||
oder ein Werkzeug mit dieser Berechtigung ausgeführt wird, | oder ein Werkzeug mit dieser Berechtigung ausgeführt wird, | ||||
erhält es die Berechtigungen basierend auf der Gruppe, welche die | erhält es die Berechtigungen basierend auf der Gruppe, welche die | ||||
Datei besitzt und nicht die des Benutzers, der den Prozess gestartet | Datei besitzt und nicht die des Benutzers, der den Prozess gestartet | ||||
hat.</para> | hat.</para> | ||||
<para>Um die <literal>setgid</literal>-Berechtigung auf einer Datei zu | <para>Um die <literal>setgid</literal>-Berechtigung auf einer Datei zu | ||||
setzen, geben Sie dem <command>chmod</command>-Befehl eine | setzen, geben Sie <command>chmod</command> eine | ||||
führende Zwei (2) mit, wie im folgenden gezeigt:</para> | führende Zwei (2) mit:</para> | ||||
<screen>&prompt.root; <userinput>chmod 2755 sgidexample.sh</userinput></screen> | <screen>&prompt.root; <userinput>chmod 2755 sgidexample.sh</userinput></screen> | ||||
<para>Die neue Einstellung kann wie zuvor betrachtet werden. Beachten Sie, | <para>Beachten Sie in der folgenden Auflistung, | ||||
dass das <literal>s</literal> sich jetzt in dem Feld befindet, das | dass das <literal>s</literal> sich jetzt in dem Feld befindet, das | ||||
für die Berechtigungen der Gruppe bestimmt ist:</para> | für die Berechtigungen der Gruppe bestimmt ist:</para> | ||||
<screen>-rwxr-sr-x 1 trhodes trhodes 44 Aug 31 01:49 sgidexample.sh</screen> | <screen>-rwxr-sr-x 1 trhodes trhodes 44 Aug 31 01:49 sgidexample.sh</screen> | ||||
<note> | <note> | ||||
<para>Obwohl es sich bei dem in diesen Beispielen gezeigten Shellskript | <para>Obwohl es sich bei dem in diesen Beispielen gezeigten Shellskript | ||||
um eine ausführbare Datei handelt, wird es nicht mit einer | um eine ausführbare Datei handelt, wird es nicht mit einer | ||||
anderen <acronym>EUID</acronym> oder effektiven Benutzer-ID | anderen <acronym>EUID</acronym> oder effektiven Benutzer-ID | ||||
ausgeführt. Das ist so, weil Shellskripte keinen Zugriff auf | ausgeführt. Das ist so, weil Shellskripte keinen Zugriff auf | ||||
&man.setuid.2;-Systemaufrufe erhalten.</para> | &man.setuid.2;-Systemaufrufe erhalten.</para> | ||||
</note> | </note> | ||||
<para>Diese beiden ersten angesprochenen Spezialberechtigungen (die | <para>Die <literal>setuid</literal> und | ||||
<literal>setuid</literal> und <literal>setgid</literal> | <literal>setgid</literal> Berechtigungs-Bits können die | ||||
Berechtigungs-Bits) können die Systemsicherheit verringern, da | Systemsicherheit verringern, da sie erhöhte Rechte | ||||
sie erhöhte Rechte ermöglichen. Es gibt noch ein drittes | ermöglichen. Das dritte Berechtigungs-Bit, das | ||||
Berechtigungs-Bit, das die Sicherheit eines Systems erhöhen kann: | <literal>sticky bit</literal> kann die Sicherheit eines | ||||
das <literal>sticky bit</literal>.</para> | Systems erhöhen.</para> | ||||
<para>Das <literal>sticky bit</literal> erlaubt, wenn es auf ein | <para>Wenn das <literal>sticky bit</literal> auf einem | ||||
Verzeichnis angewendet wird, nur dem Besitzer der Datei diese Dateien | Verzeichnis angewendet wird, erlaubt es das Löschen von | ||||
auch zu löschen. Dieses Recht ist nützlich, um die | Dateien nur durch den Besitzer der Datei. Dies ist nützlich, | ||||
Löschung von Dateien in öffentlichen Verzeichnissen durch | um die Löschung von Dateien in öffentlichen Verzeichnissen wie | ||||
Benutzer, denen diese Dateien nicht gehören, zu verhindern, wie | <filename>/tmp</filename>, durch Benutzer denen diese Dateien | ||||
z.B. in <filename>/tmp</filename>. Um diese Berechtigung anzuwenden, | nicht gehören, zu verhindern. Um diese Berechtigung | ||||
stellen Sie der Berechtigung eine Eins (1) voran, beispielsweise | anzuwenden, stellen Sie der Berechtigung eine Eins (1) | ||||
so:</para> | voran:</para> | ||||
<screen>&prompt.root; <userinput>chmod 1777 /tmp</userinput></screen> | <screen>&prompt.root; <userinput>chmod 1777 /tmp</userinput></screen> | ||||
<para>Den Effekt können Sie sich ansehen, indem Sie | <para>Das <literal>sticky bit</literal> kann anhand des | ||||
das Kommando <command>ls</command> ausführen:</para> | <literal>t</literal> ganz am Ende der Berechtigungen abgelesen | ||||
werden.</para> | |||||
<screen>&prompt.root; <userinput>ls -al / | grep tmp</userinput></screen> | <screen>&prompt.root; <userinput>ls -al / | grep tmp</userinput></screen> | ||||
<screen>drwxrwxrwt 10 root wheel 512 Aug 31 01:49 tmp</screen> | <screen>drwxrwxrwt 10 root wheel 512 Aug 31 01:49 tmp</screen> | ||||
<para>Das <literal>sticky bit</literal> kann anhand des | |||||
<literal>t</literal> ganz am Ende der Berechtigungen abgelesen | |||||
werden.</para> | |||||
</sect2> | </sect2> | ||||
</sect1> | </sect1> | ||||
<sect1 xml:id="dirstructure"> | <sect1 xml:id="dirstructure"> | ||||
<title>Verzeichnis-Strukturen</title> | <title>Verzeichnis-Strukturen</title> | ||||
<indexterm><primary>Verzeichnis Hierarchien</primary></indexterm> | <indexterm><primary>Verzeichnis Hierarchien</primary></indexterm> | ||||
<para>Die FreeBSD-Verzeichnishierarchie ist die Grundlage, um | <para>Die &os;-Verzeichnishierarchie ist die Grundlage, um | ||||
ein umfassendes Verständnis des Systems zu erlangen. | ein umfassendes Verständnis des Systems zu erlangen. | ||||
Das wichtigste Konzept, das Sie verstehen sollten, ist das | Das wichtigste Verzeichnis ist das Root-Verzeichnis | ||||
Root-Verzeichnis <quote>/</quote>. Dieses Verzeichnis ist das | <quote>/</quote>. Dieses Verzeichnis ist das | ||||
erste, das während des Bootens eingehangen wird. Es | erste, das während des Bootens eingehangen wird. Es | ||||
enthält das notwendige Basissystem, um das System in den | enthält das notwendige Basissystem, um das Betriebssystem in den | ||||
Mehrbenutzerbetrieb zu bringen. Das Root-Verzeichnis enthält | Mehrbenutzerbetrieb zu bringen. Das Root-Verzeichnis enthält | ||||
auch die Mountpunkte für Dateisysteme, die beim Wechsel in | auch die Mountpunkte für Dateisysteme, die beim Wechsel in | ||||
den Multiuser-Modus eingehängt werden.</para> | den Multiuser-Modus eingehängt werden.</para> | ||||
<para>Ein Mountpunkt ist ein Verzeichnis, in das zusätzliche | <para>Ein Mountpunkt ist ein Verzeichnis, in das zusätzliche | ||||
Dateisysteme (in der Regel unterhalb des Wurzelverzeichnisses) | Dateisysteme (in der Regel unterhalb des Wurzelverzeichnisses) | ||||
eingehängt werden können. Dieser Vorgang wird in | eingehängt werden können. Dieser Vorgang wird in | ||||
<xref linkend="disk-organization"/> ausführlich beschrieben. | <xref linkend="disk-organization"/> ausführlich beschrieben. | ||||
Standard-Mountpunkte sind <filename>/usr</filename>, | Standard-Mountpunkte sind <filename>/usr</filename>, | ||||
<filename>/var</filename>, <filename>/tmp</filename>, | <filename>/var</filename>, <filename>/tmp</filename>, | ||||
<filename>/mnt</filename> sowie <filename>/cdrom</filename>. | <filename>/mnt</filename> sowie <filename>/cdrom</filename>. | ||||
Auf diese Verzeichnisse verweisen üblicherweise Einträge | Auf diese Verzeichnisse verweisen üblicherweise Einträge | ||||
in der Datei <filename>/etc/fstab</filename>. | in <filename>/etc/fstab</filename>. Diese Datei ist | ||||
<filename>/etc/fstab</filename> ist | eine Tabelle mit verschiedenen Dateisystemen und Mountpunkten, | ||||
eine Tabelle mit verschiedenen Dateisystemen und Mountpunkten | vom System gelesen werden. Die meisten der Dateisysteme in | ||||
als Referenz des Systems. Die meisten der Dateisysteme in | |||||
<filename>/etc/fstab</filename> werden beim Booten automatisch | <filename>/etc/fstab</filename> werden beim Booten automatisch | ||||
durch das Skript &man.rc.8; gemountet, wenn die zugehörigen | durch das Skript &man.rc.8; gemountet, wenn die zugehörigen | ||||
Einträge nicht mit der Option <option>noauto</option> | Einträge nicht mit <option>noauto</option> | ||||
versehen sind. Weitere Informationen zu diesem Thema finden Sie | versehen sind. Weitere Informationen zu diesem Thema finden Sie | ||||
im <xref linkend="disks-fstab"/>.</para> | im <xref linkend="disks-fstab"/>.</para> | ||||
<para>Eine vollständige Beschreibung der Dateisystem-Hierarchie | <para>Eine vollständige Beschreibung der Dateisystem-Hierarchie | ||||
finden Sie in &man.hier.7;. Als Beispiel sei eine kurze | finden Sie in &man.hier.7;. Die folgende Aufstellung gibt einen | ||||
Übersicht über die am häufigsten verwendeten | kurzen Überblick über die am häufigsten verwendeten | ||||
Verzeichnisse gegeben:</para> | Verzeichnisse:</para> | ||||
<para> | <para> | ||||
<informaltable frame="none" pgwide="1"> | <informaltable frame="none" pgwide="1"> | ||||
<tgroup cols="2"> | <tgroup cols="2"> | ||||
<thead> | <thead> | ||||
<row> | <row> | ||||
<entry>Verzeichnis</entry> | <entry>Verzeichnis</entry> | ||||
<entry>Beschreibung</entry> | <entry>Beschreibung</entry> | ||||
Show All 14 Lines | sowie den Mehrbenutzerbetrieb.</entry> | ||||
<row> | <row> | ||||
<entry><filename>/boot/</filename></entry> | <entry><filename>/boot/</filename></entry> | ||||
<entry>Programme und Konfigurationsdateien, die während | <entry>Programme und Konfigurationsdateien, die während | ||||
des Bootens benutzt werden.</entry> | des Bootens benutzt werden.</entry> | ||||
</row> | </row> | ||||
<row> | <row> | ||||
<entry><filename>/boot/defaults/</filename></entry> | <entry><filename>/boot/defaults/</filename></entry> | ||||
<entry>Vorgaben für die Boot-Konfiguration, siehe | <entry>Vorgaben für die Boot-Konfiguration. Weitere | ||||
&man.loader.conf.5;.</entry> | Details finden Sie in &man.loader.conf.5;.</entry> | ||||
</row> | </row> | ||||
<row> | <row> | ||||
<entry><filename>/dev/</filename></entry> | <entry><filename>/dev/</filename></entry> | ||||
<entry>Gerätedateien, siehe &man.intro.4;.</entry> | <entry>Gerätedateien. Weitere Details finden Sie in | ||||
&man.intro.4;.</entry> | |||||
</row> | </row> | ||||
<row> | <row> | ||||
<entry><filename>/etc/</filename></entry> | <entry><filename>/etc/</filename></entry> | ||||
<entry>Konfigurationsdateien und Skripten des Systems.</entry> | <entry>Konfigurationsdateien und Skripten des Systems.</entry> | ||||
</row> | </row> | ||||
<row> | <row> | ||||
<entry><filename>/etc/defaults/</filename></entry> | <entry><filename>/etc/defaults/</filename></entry> | ||||
<entry>Vorgaben für die System Konfigurationsdateien, | <entry>Vorgaben für die System Konfigurationsdateien. | ||||
siehe &man.rc.8;.</entry> | Weitere Details finden Sie in &man.rc.8;.</entry> | ||||
</row> | </row> | ||||
<row> | <row> | ||||
<entry><filename>/etc/mail/</filename></entry> | <entry><filename>/etc/mail/</filename></entry> | ||||
<entry>Konfigurationsdateien von MTAs wie | <entry>Konfigurationsdateien von MTAs wie | ||||
&man.sendmail.8;.</entry> | &man.sendmail.8;.</entry> | ||||
</row> | </row> | ||||
<row> | <row> | ||||
<entry><filename>/etc/namedb/</filename></entry> | <entry><filename>/etc/namedb/</filename></entry> | ||||
<entry>Konfigurationsdateien von <command>named</command>, | <entry>Konfigurationsdateien von | ||||
siehe &man.named.8;.</entry> | <command>named</command>. Weitere Details finden Sie | ||||
in &man.named.8;.</entry> | |||||
</row> | </row> | ||||
<row> | <row> | ||||
<entry><filename>/etc/periodic/</filename></entry> | <entry><filename>/etc/periodic/</filename></entry> | ||||
<entry>Täglich, wöchentlich oder monatlich | <entry>Täglich, wöchentlich oder monatlich laufende | ||||
ablaufende Skripte, die von &man.cron.8; gestartet werden. | Skripte, die von &man.cron.8; gestartet werden. | ||||
Siehe &man.periodic.8;.</entry> | Weitere Details finden Sie in | ||||
&man.periodic.8;.</entry> | |||||
</row> | </row> | ||||
<row> | <row> | ||||
<entry><filename>/etc/ppp/</filename></entry> | <entry><filename>/etc/ppp/</filename></entry> | ||||
<entry>Konfigurationsdateien von <command>ppp</command>, | <entry>Konfigurationsdateien von <command>ppp</command>, | ||||
siehe &man.ppp.8;.</entry> | wie in &man.ppp.8; beschrieben.</entry> | ||||
</row> | </row> | ||||
<row> | <row> | ||||
<entry><filename>/mnt/</filename></entry> | <entry><filename>/mnt/</filename></entry> | ||||
<entry>Ein leeres Verzeichnis, das von Systemadministratoren | <entry>Ein leeres Verzeichnis, das von Systemadministratoren | ||||
häufig als temporärer Mountpunkt genutzt wird.</entry> | häufig als temporärer Mountpunkt genutzt wird.</entry> | ||||
</row> | </row> | ||||
<row> | <row> | ||||
<entry><filename>/proc/</filename></entry> | <entry><filename>/proc/</filename></entry> | ||||
<entry>Prozess Dateisystem, siehe &man.procfs.5; | <entry>Prozess Dateisystem. Weitere Details finden Sie | ||||
und &man.mount.procfs.8;.</entry> | in &man.procfs.5; und &man.mount.procfs.8;.</entry> | ||||
</row> | </row> | ||||
<row> | <row> | ||||
<entry><filename>/rescue/</filename></entry> | <entry><filename>/rescue/</filename></entry> | ||||
<entry>Statisch gelinkte Programme zur Wiederherstellung | <entry>Statisch gelinkte Programme zur Wiederherstellung | ||||
des Systems, lesen Sie dazu auch &man.rescue.8;.</entry> | des Systems, wie in &man.rescue.8; | ||||
beschrieben.</entry> | |||||
</row> | </row> | ||||
<row> | <row> | ||||
<entry><filename>/root/</filename></entry> | <entry><filename>/root/</filename></entry> | ||||
<entry>Home Verzeichnis von <systemitem class="username">root</systemitem>.</entry> | <entry>Home Verzeichnis von <systemitem class="username">root</systemitem>.</entry> | ||||
</row> | </row> | ||||
<row> | <row> | ||||
<entry><filename>/sbin/</filename></entry> | <entry><filename>/sbin/</filename></entry> | ||||
<entry>Systemprogramme und administrative Werkzeuge, die | <entry>Systemprogramme und administrative Werkzeuge, die | ||||
grundlegend für den Single-User-Modus und den | grundlegend für den Single-User-Modus und den | ||||
Mehrbenutzerbetrieb sind.</entry> | Mehrbenutzerbetrieb sind.</entry> | ||||
</row> | </row> | ||||
<row> | <row> | ||||
<entry><filename>/tmp/</filename></entry> | <entry><filename>/tmp/</filename></entry> | ||||
<entry>Temporäre Dateien, die für gewöhnlich | <entry>Temporäre Dateien, die für gewöhnlich | ||||
bei einem Neustart des Systems verloren gehen. | bei einem Neustart des Systems verloren gehen. | ||||
Häufig wird ein speicherbasiertes Dateisystem unter | Häufig wird ein speicherbasiertes Dateisystem unter | ||||
<filename>/tmp</filename> | <filename>/tmp</filename> | ||||
eingehängt. Dieser Vorgang kann automatisiert werden, | eingehängt. Dieser Vorgang kann automatisiert werden, | ||||
wenn Sie die tmpmfs-bezogenen Variablen von | wenn tmpmfs-bezogene Variablen von &man.rc.conf.5; | ||||
&man.rc.conf.5; verwenden. Alternativ können Sie | verwendet werden, oder ein entsprechender | ||||
auch einen entsprechenden Eintrag in | Eintrag in <filename>/etc/fstab</filename> existiert. | ||||
<filename>/etc/fstab</filename> aufnehmen. Weitere | Weitere Informationen finden Sie in | ||||
Informationen finden Sie in &man.mdmfs.8;.</entry> | &man.mdmfs.8;.</entry> | ||||
</row> | </row> | ||||
<row> | <row> | ||||
<entry><filename>/usr/</filename></entry> | <entry><filename>/usr/</filename></entry> | ||||
<entry>Der Großteil der Benutzerprogramme und | <entry>Der Großteil der Benutzerprogramme und | ||||
Anwendungen.</entry> | Anwendungen.</entry> | ||||
</row> | </row> | ||||
Show All 23 Lines | Anwendungen.</entry> | ||||
<entry><filename>/usr/libexec/</filename></entry> | <entry><filename>/usr/libexec/</filename></entry> | ||||
<entry>System-Dämonen und System-Werkzeuge, die von | <entry>System-Dämonen und System-Werkzeuge, die von | ||||
anderen Programmen ausgeführt werden.</entry> | anderen Programmen ausgeführt werden.</entry> | ||||
</row> | </row> | ||||
<row> | <row> | ||||
<entry><filename>/usr/local/</filename></entry> | <entry><filename>/usr/local/</filename></entry> | ||||
<entry>Lokale Programme, Bibliotheken usw. Die Ports-Sammlung | <entry>Lokale Programme und Bibliotheken. Die | ||||
benutzt dieses Verzeichnis als Zielverzeichnis für zu | Ports-Sammlung von &os; benutzt dieses Verzeichnis | ||||
installierende Anwendungen. Innerhalb von | als Zielverzeichnis für Anwendungen. Innerhalb von | ||||
<filename>/usr/local</filename> sollte das von | <filename>/usr/local</filename> sollte das von | ||||
&man.hier.7; beschriebene Layout für | &man.hier.7; beschriebene Layout für | ||||
<filename>/usr</filename> benutzt werden. Das | <filename>/usr</filename> benutzt werden. Das | ||||
<filename>man</filename> Verzeichnis wird direkt unter | <filename>man</filename> Verzeichnis wird direkt unter | ||||
<filename>/usr/local</filename> anstelle unter | <filename>/usr/local</filename> anstelle unter | ||||
<filename>/usr/local/share</filename> angelegt. Die | <filename>/usr/local/share</filename> angelegt. Die | ||||
Dokumentation der Ports findet sich in | Dokumentation der Ports findet sich in | ||||
<filename>share/doc/port</filename>. | <filename>share/doc/port</filename>. | ||||
</entry> | </entry> | ||||
</row> | </row> | ||||
<row> | <row> | ||||
<entry><filename>/usr/obj/</filename></entry> | <entry><filename>/usr/obj/</filename></entry> | ||||
<entry>Von der Architektur abhängiger Verzeichnisbaum, | <entry>Von der Architektur abhängiger Verzeichnisbaum, | ||||
der durch das Bauen von <filename>/usr/src</filename> | der durch das Bauen von <filename>/usr/src</filename> | ||||
entsteht.</entry> | entsteht.</entry> | ||||
</row> | </row> | ||||
<row> | <row> | ||||
<entry><filename>/usr/ports/</filename></entry> | <entry><filename>/usr/ports/</filename></entry> | ||||
<entry>Die FreeBSD-Ports-Sammlung (optional).</entry> | <entry>Die &os;-Ports-Sammlung (optional).</entry> | ||||
</row> | </row> | ||||
<row> | <row> | ||||
<entry><filename>/usr/sbin/</filename></entry> | <entry><filename>/usr/sbin/</filename></entry> | ||||
<entry>System-Dämonen und System-Werkzeuge, die von | <entry>System-Dämonen und System-Werkzeuge, die von | ||||
Benutzern ausgeführt werden.</entry> | Benutzern ausgeführt werden.</entry> | ||||
</row> | </row> | ||||
<row> | <row> | ||||
<entry><filename>/usr/share/</filename></entry> | <entry><filename>/usr/share/</filename></entry> | ||||
<entry>Von der Architektur unabhängige Dateien.</entry> | <entry>Von der Architektur unabhängige Dateien.</entry> | ||||
</row> | </row> | ||||
<row> | <row> | ||||
<entry><filename>/usr/src/</filename></entry> | <entry><filename>/usr/src/</filename></entry> | ||||
<entry>Quelldateien von BSD und/oder lokalen | <entry>Quelldateien von BSD und/oder lokalen | ||||
Ergänzungen.</entry> | Ergänzungen.</entry> | ||||
</row> | </row> | ||||
<row> | <row> | ||||
<entry><filename>/usr/X11R6/</filename></entry> | |||||
<entry>Optionale X11R6-Programme und Bibliotheken.</entry> | |||||
</row> | |||||
<row> | |||||
<entry><filename>/var/</filename></entry> | <entry><filename>/var/</filename></entry> | ||||
<entry>Wird für mehrere Zwecke genutzt und enthält | <entry>Wird für mehrere Zwecke genutzt und enthält | ||||
Logdateien, temporäre Daten und Spooldateien. | Logdateien, temporäre Daten und Spooldateien. | ||||
Manchmal wird ein speicherbasiertes Dateisystem unter | Manchmal wird ein speicherbasiertes Dateisystem unter | ||||
<filename>/var</filename> | <filename>/var</filename> | ||||
eingehängt. Dieser Vorgang kann automatisiert werden, | eingehängt. Dieser Vorgang kann automatisiert werden, | ||||
wenn Sie die varmfs-bezogenen Variablen von | wenn die varmfs-bezogenen Variablen von | ||||
&man.rc.conf.5; verwenden. Alternativ können Sie | &man.rc.conf.5; verwendet werden, oder ein | ||||
auch einen entsprechenden Eintrag in | entsprechender Eintrag in | ||||
<filename>/etc/fstab</filename> aufnehmen. Weitere | <filename>/etc/fstab</filename> existiert. Weitere | ||||
Informationen finden Sie in &man.mdmfs.8;.</entry> | Informationen finden Sie in &man.mdmfs.8;.</entry> | ||||
</row> | </row> | ||||
<row> | <row> | ||||
<entry><filename>/var/log/</filename></entry> | <entry><filename>/var/log/</filename></entry> | ||||
<entry>Verschiedene Logdateien des Systems.</entry> | <entry>Verschiedene Logdateien des Systems.</entry> | ||||
</row> | </row> | ||||
<row> | <row> | ||||
<entry><filename>/var/mail/</filename></entry> | <entry><filename>/var/mail/</filename></entry> | ||||
<entry>Postfächer der Benutzer.</entry> | <entry>Postfächer der Benutzer.</entry> | ||||
</row> | </row> | ||||
<row> | <row> | ||||
<entry><filename>/var/spool/</filename></entry> | <entry><filename>/var/spool/</filename></entry> | ||||
<entry>Verschiedene Spool-Verzeichnisse der Drucker- und | <entry>Verschiedene Spool-Verzeichnisse der Drucker- und | ||||
Mailsysteme.</entry> | Mailsysteme.</entry> | ||||
</row> | </row> | ||||
<row> | <row> | ||||
<entry><filename>/var/tmp/</filename></entry> | <entry><filename>/var/tmp/</filename></entry> | ||||
<entry>Temporäre Dateien. Dateien in diesem | <entry>Temporäre Dateien, die in der Regel auch bei | ||||
Verzeichnis bleiben in der Regel auch bei einem Neustart | einem Neustart des Systems erhalten bleiben, es sei | ||||
des Systems erhalten, es sei denn, bei | denn, bei | ||||
<filename>/var</filename> handelt es | <filename>/var</filename> handelt es | ||||
sich um ein speicherbasiertes Dateisystem.</entry> | sich um ein speicherbasiertes Dateisystem.</entry> | ||||
</row> | </row> | ||||
<row> | <row> | ||||
<entry><filename>/var/yp/</filename></entry> | <entry><filename>/var/yp/</filename></entry> | ||||
<entry>NIS maps.</entry> | <entry>NIS maps.</entry> | ||||
</row> | </row> | ||||
</tbody> | </tbody> | ||||
</tgroup> | </tgroup> | ||||
</informaltable> | </informaltable> | ||||
</para> | </para> | ||||
</sect1> | </sect1> | ||||
<sect1 xml:id="disk-organization"> | <sect1 xml:id="disk-organization"> | ||||
<title>Festplatten, Slices und Partitionen</title> | <title>Festplatten, Slices und Partitionen</title> | ||||
<para>&os; identifiziert Dateien anhand eines Dateinamens. | <para>&os; identifiziert Dateien anhand eines Dateinamens. | ||||
In Dateinamen wird zwischen Groß- und Kleinschreibung | In Dateinamen wird zwischen Groß- und Kleinschreibung | ||||
unterschieden: <filename>readme.txt</filename> und | unterschieden: <filename>readme.txt</filename> und | ||||
<filename>README.TXT</filename> bezeichnen daher zwei | <filename>README.TXT</filename> bezeichnen daher zwei | ||||
verschiedene Dateien. &os; benutzt keine Dateiendungen wie | verschiedene Dateien. &os; benutzt keine Dateiendungen, | ||||
<filename>.txt</filename>, um den Typ der Datei | um den Typ der Datei zu bestimmen, egal ob es sich um ein | ||||
(ein Programm, ein Dokument oder andere Daten) zu | Programm, ein Dokument oder um andere Daten handelt.</para> | ||||
bestimmen.</para> | |||||
<para>Dateien werden in Verzeichnissen gespeichert. In einem | <para>Dateien werden in Verzeichnissen gespeichert. In einem | ||||
Verzeichnis können sich keine oder hunderte Dateien | Verzeichnis können sich keine oder hunderte Dateien | ||||
befinden. Ein Verzeichnis kann auch andere Verzeichnisse | befinden. Ein Verzeichnis kann auch andere Verzeichnisse | ||||
enthalten und so eine Hierarchie von Verzeichnissen aufbauen, | enthalten und so eine Hierarchie von Verzeichnissen aufbauen, | ||||
die Ihnen die Ablage von Daten erleichtert.</para> | die die Ablage von Daten erleichtert.</para> | ||||
<para>In Dateinamen werden Verzeichnisse durch einen | <para>In Dateinamen werden Verzeichnisse durch einen | ||||
Schrägstrich (<literal>/</literal>, | Schrägstrich (<literal>/</literal>, | ||||
<foreignphrase>Slash</foreignphrase>) getrennt. Wenn | <foreignphrase>Slash</foreignphrase>) getrennt. Wenn z.B. | ||||
das Verzeichnis <filename>foo</filename> | das Verzeichnis <filename>foo</filename> | ||||
ein Verzeichnis <filename>bar</filename> | ein Verzeichnis <filename>bar</filename> | ||||
enthält, in dem sich die Datei <filename>readme.txt</filename> | enthält, in dem sich die Datei <filename>readme.txt</filename> | ||||
befindet, lautet der vollständige Name der Datei | befindet, lautet der vollständige Name der Datei (oder der | ||||
(oder der <firstterm>Pfad</firstterm> zur Datei) | <firstterm>Pfad</firstterm> zur Datei) | ||||
<filename>foo/bar/readme.txt</filename>.</para> | <filename>foo/bar/readme.txt</filename>. Beachten Sie, dass | ||||
sich dies von &windows; unterscheidet, wo der | |||||
<literal>\</literal> (<foreignphrase>Backslash</foreignphrase> | |||||
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 <filename>c:/foo/bar/readme.txt</filename> | |||||
eingeben.</para> | |||||
<para>Verzeichnisse und Dateien werden in einem Dateisystem | <para>Verzeichnisse und Dateien werden in einem Dateisystem | ||||
gespeichert. Jedes Dateisystem besitzt ein | gespeichert. Jedes Dateisystem besitzt genau ein | ||||
<firstterm>Wurzelverzeichnis</firstterm> | <firstterm>Wurzelverzeichnis</firstterm>, das so genannte | ||||
(<foreignphrase>Root-Directory</foreignphrase>), | <foreignphrase>Root-Directory</foreignphrase>. Dieses | ||||
das weitere Verzeichnisse enthalten kann.</para> | Wurzelverzeichnis kann weitere Verzeichnisse enthalten. | ||||
Ein Dateisystem wird als Wurzeldateisystem festgelegt, und | |||||
jedes weitere Dateisystem wird unter dem Wurzeldateisystem | |||||
<firstterm>eingehangen</firstterm>. Daher scheint jedes | |||||
Verzeichnis, unabhängig von der Anzahl der Platten, auf der | |||||
selben Platte zu liegen.</para> | |||||
<para>Dieses Konzept kennen Sie vielleicht von anderen | <para>Angenommen, Sie haben drei Dateisysteme <literal>A</literal>, | ||||
Betriebssystemen, aber es gibt einige Unterschiede: | |||||
In &ms-dos; werden Datei- und Verzeichnisnamen mit dem | |||||
Zeichen <literal>\</literal> getrennt, &macos; benutzt | |||||
dazu das Zeichen <literal>:</literal>.</para> | |||||
<para>&os; kennt keine Laufwerksbuchstaben und in Pfaden | |||||
werden keine Bezeichnungen für Laufwerke benutzt. | |||||
Die Pfadangabe <filename>c:/foo/bar/readme.txt</filename> | |||||
gibt es in &os; nicht.</para> | |||||
<para>Stattdessen wird ein Dateisystem als Wurzeldateisystem | |||||
(<foreignphrase>root file system</foreignphrase>) | |||||
ausgewählt. Das Wurzelverzeichnis dieses Dateisystems | |||||
wird <filename>/</filename> genannt. | |||||
Jedes andere Dateisystem wird unter dem Wurzeldateisystem | |||||
<firstterm>eingehangen</firstterm> | |||||
(<foreignphrase>mount</foreignphrase>). Daher scheint | |||||
jedes Verzeichnis, unabhängig von der Anzahl der | |||||
Platten, auf derselben Platte zu liegen.</para> | |||||
<para>Betrachten wir drei Dateisysteme <literal>A</literal>, | |||||
<literal>B</literal> und <literal>C</literal>. Jedes | <literal>B</literal> und <literal>C</literal>. Jedes | ||||
Dateisystem besitzt ein eigenes Wurzelverzeichnis, das | Dateisystem besitzt ein eigenes Wurzelverzeichnis, das | ||||
zwei andere Verzeichnisse enthält: | zwei andere Verzeichnisse enthält: | ||||
<filename>A1</filename>, | <filename>A1</filename>, | ||||
<filename>A2</filename>, | <filename>A2</filename>, | ||||
<filename>B1</filename>, | <filename>B1</filename>, | ||||
<filename>B2</filename>, | <filename>B2</filename>, | ||||
<filename>C1</filename> und | <filename>C1</filename> und | ||||
<filename>C2</filename>.</para> | <filename>C2</filename>.</para> | ||||
<para>Das Wurzeldateisystem soll <literal>A</literal> sein. | <para>Das Wurzeldateisystem soll <literal>A</literal> sein. | ||||
Das Kommando <command>ls</command> zeigt darin | <command>ls</command> zeigt darin | ||||
die beiden Verzeichnisse <filename>A1</filename> | die beiden Verzeichnisse <filename>A1</filename> | ||||
und <filename>A2</filename> an. | und <filename>A2</filename> an. | ||||
Der Verzeichnisbaum sieht wie folgt aus:</para> | Der Verzeichnisbaum sieht wie folgt aus:</para> | ||||
<mediaobject> | <mediaobject> | ||||
<imageobject> | <imageobject> | ||||
<imagedata fileref="install/example-dir1"/> | <imagedata fileref="install/example-dir1"/> | ||||
</imageobject> | </imageobject> | ||||
▲ Show 20 Lines • Show All 126 Lines • ▼ Show 20 Lines | `--- A2 | ||||
`--- B2</literallayout> | `--- B2</literallayout> | ||||
</textobject> | </textobject> | ||||
</mediaobject> | </mediaobject> | ||||
<para>Der &ms-dos;-Befehl <command>join</command> kann Ähnliches | <para>Der &ms-dos;-Befehl <command>join</command> kann Ähnliches | ||||
bewirken.</para> | bewirken.</para> | ||||
<para>Normalerweise müssen Sie sich nicht mit Dateisystemen | <para>Normalerweise müssen Sie sich nicht mit Dateisystemen | ||||
beschäftigen. Während der Installation werden | beschäftigen. Während der Installation von &os; werden | ||||
die Dateisysteme und die Stellen, in der sie eingehangen werden, | die Dateisysteme und die Stellen, in der sie eingehangen werden, | ||||
festgelegt. Dateisysteme müssen Sie erst wieder anlegen, | festgelegt. Dateisysteme müssen erst wieder angelegt werden, | ||||
wenn Sie eine neue Platte hinzufügen.</para> | wenn Sie eine neue Platte hinzufügen.</para> | ||||
<para>Sie können sogar mit nur einem großen | <para>Sie können sogar mit nur einem großen | ||||
Dateisystem auskommen. Dies hat mehrere Nachteile | Dateisystem auskommen. Dies hat mehrere Nachteile | ||||
und einen Vorteil.</para> | und einen Vorteil.</para> | ||||
<itemizedlist> | <itemizedlist> | ||||
<title>Vorteile mehrerer Dateisysteme</title> | <title>Vorteile mehrerer Dateisysteme</title> | ||||
<listitem> | <listitem> | ||||
<para>Die Dateisysteme können mit unterschiedlichen | <para>Die Dateisysteme können mit unterschiedlichen | ||||
Optionen (<foreignphrase>mount options</foreignphrase>) | Optionen (<foreignphrase>mount options</foreignphrase>) | ||||
eingehangen werden. Bei sorgfältiger Planung können | eingehangen werden. Beispielsweise kann das | ||||
Sie beispielsweise das Wurzeldateisystem nur lesbar | Wurzeldateisystem schreibgeschützt eingehangen werden, | ||||
einhängen. Damit schützen Sie sich vor dem | sodass es für Benutzer nicht möglich ist, versehentlich | ||||
unabsichtlichen Löschen oder Editieren kritischer | kritische Dateien zu editieren oder zu löschen. | ||||
Dateien. Von Benutzern beschreibbare Dateisysteme | Von Benutzern beschreibbare Dateisysteme | ||||
wie <filename>/home</filename> | wie <filename>/home</filename> | ||||
können Sie mit der Option <firstterm>nosuid</firstterm> | können Sie mit der Option <firstterm>nosuid</firstterm> | ||||
einhängen, wenn sie von anderen Dateisystemen getrennt | einhängen, wenn sie von anderen Dateisystemen getrennt | ||||
sind. Die <firstterm>SUID</firstterm>- und | sind. Die <firstterm>SUID</firstterm>- und | ||||
<firstterm>GUID</firstterm>-Bits verlieren auf solchen | <firstterm>GUID</firstterm>-Bits verlieren auf solchen | ||||
Dateisystemen ihre Wirkung und die Sicherheit des | Dateisystemen ihre Wirkung und die Sicherheit des | ||||
Systems kann dadurch erhöht werden.</para> | Systems kann dadurch erhöht werden.</para> | ||||
</listitem> | </listitem> | ||||
Show All 18 Lines | <para>In der Regel übersteht ein &os;-Dateisystem auch | ||||
das Zurückspielen von Datensicherungen.</para> | das Zurückspielen von Datensicherungen.</para> | ||||
</listitem> | </listitem> | ||||
</itemizedlist> | </itemizedlist> | ||||
<itemizedlist> | <itemizedlist> | ||||
<title>Vorteil eines einzelnen Dateisystems</title> | <title>Vorteil eines einzelnen Dateisystems</title> | ||||
<listitem> | <listitem> | ||||
<para>Die Größe von Dateisystemen liegt fest. | <para>Dateisysteme haben eine festgelegte Größe. | ||||
Es kann passieren, dass Sie eine Partition | Es kann passieren, dass Sie eine Partition | ||||
vergrößern müssen. Dies ist nicht leicht: | vergrößern müssen. Dies ist nicht leicht: | ||||
Sie müssen die Daten sichern, das Dateisystem | Sie müssen die Daten sichern, das Dateisystem | ||||
vergrößert anlegen und die gesicherten | vergrößert anlegen und die gesicherten | ||||
Daten zurückspielen.</para> | Daten zurückspielen.</para> | ||||
<important> | <important> | ||||
<para>&os; kennt den Befehl &man.growfs.8;, mit dem man | <para>&os; kennt den Befehl &man.growfs.8;, mit dem man | ||||
Dateisysteme im laufenden Betrieb | Dateisysteme im laufenden Betrieb | ||||
vergrößern kann.</para> | vergrößern kann.</para> | ||||
</important> | </important> | ||||
</listitem> | </listitem> | ||||
</itemizedlist> | </itemizedlist> | ||||
<para>Dateisysteme befinden sich in Partitionen (damit sind | <para>Dateisysteme befinden sich in Partitionen (damit sind | ||||
nicht die normalen &ms-dos;-Partitionen gemeint). Jede Partition | nicht die normalen &ms-dos;-Partitionen gemeint). Jede Partition | ||||
wird mit einem Buchstaben von <literal>a</literal> bis | wird mit einem Buchstaben von <literal>a</literal> bis | ||||
<literal>h</literal> bezeichnet und kann nur ein Dateisystem | <literal>h</literal> bezeichnet und kann nur ein Dateisystem | ||||
enthalten. Dateisysteme können daher über ihren | enthalten. Dateisysteme können daher über ihren | ||||
Mount-Point, den Punkt an dem sie eingehangen sind, oder | Mount-Point, den Punkt an dem sie eingehangen sind, oder | ||||
den Buchstaben der Partition, in der sie liegen, identifiziert | den Buchstaben der Partition, in der sie liegen, identifiziert | ||||
werden.</para> | werden.</para> | ||||
<para>&os; benutzt einen Teil der Platte für den | <para>&os; benutzt einen Teil der Platte für den | ||||
<firstterm>Swap-Bereich</firstterm>, der dem Rechner | <firstterm>Swap-Bereich</firstterm>, um | ||||
<firstterm>virtuellen Speicher</firstterm> zur Verfügung | <firstterm>virtuellen Speicher</firstterm> zur Verfügung zu | ||||
stellt. Dadurch kann der Rechner Anwendungen mehr Speicher | stellen. Dadurch kann der Rechner Anwendungen mehr Speicher | ||||
zur Verfügung stellen als tatsächlich eingebaut | zur Verfügung stellen als tatsächlich eingebaut | ||||
ist. Wenn der Speicher knapp wird, kann &os; nicht benutzte | ist. Wenn der Speicher knapp wird, kann &os; nicht benutzte | ||||
Daten in den Swap-Bereich auslagern. Die ausgelagerten | Daten in den Swap-Bereich auslagern. Die ausgelagerten | ||||
Daten können später wieder in den Speicher | Daten können später wieder in den Speicher | ||||
geholt werden (dafür werden dann andere Daten | geholt werden (dafür werden dann andere Daten | ||||
ausgelagert).</para> | ausgelagert).</para> | ||||
<para>Für einige Partitionen gelten besondere | <para>Für einige Partitionen gelten besondere | ||||
Show All 12 Lines | <thead> | ||||
</row> | </row> | ||||
</thead> | </thead> | ||||
<tbody valign="top"> | <tbody valign="top"> | ||||
<row> | <row> | ||||
<entry><literal>a</literal></entry> | <entry><literal>a</literal></entry> | ||||
<entry>Enthält normalerweise | <entry>Enthält normalerweise | ||||
das Wurzeldateisystem</entry> | das Wurzeldateisystem.</entry> | ||||
</row> | </row> | ||||
<row> | <row> | ||||
<entry><literal>b</literal></entry> | <entry><literal>b</literal></entry> | ||||
<entry>Enthält normalerweise | <entry>Enthält normalerweise | ||||
den Swap-Bereich</entry> | den Swap-Bereich.</entry> | ||||
</row> | </row> | ||||
<row> | <row> | ||||
<entry><literal>c</literal></entry> | <entry><literal>c</literal></entry> | ||||
<entry>Ist normalerweise genauso groß wie | <entry>Ist normalerweise genauso groß wie | ||||
die Slice in der die Partition liegt. Werkzeuge, | die Slice in der die Partition liegt. Werkzeuge, | ||||
die auf der kompletten Slice arbeiten, wie ein | die auf der kompletten Slice arbeiten, wie ein | ||||
▲ Show 20 Lines • Show All 51 Lines • ▼ Show 20 Lines | IDE-Platte.</para> | ||||
<para>Schließlich wird noch jede Festplatte des Systems | <para>Schließlich wird noch jede Festplatte des Systems | ||||
eindeutig bezeichnet. Der Name einer Festplatte beginnt mit | eindeutig bezeichnet. Der Name einer Festplatte beginnt mit | ||||
einem Code, der den Typ der Platte bezeichnet. Es folgt eine | einem Code, der den Typ der Platte bezeichnet. Es folgt eine | ||||
Nummer, die angibt, um welche Festplatte es sich handelt. | Nummer, die angibt, um welche Festplatte es sich handelt. | ||||
Anders als bei Slices werden Festplatten von Null beginnend | Anders als bei Slices werden Festplatten von Null beginnend | ||||
durchnummeriert. Gängige Festplatten-Namen sind in | durchnummeriert. Gängige Festplatten-Namen sind in | ||||
<xref linkend="basics-dev-codes"/> zusammengestellt.</para> | <xref linkend="basics-dev-codes"/> zusammengestellt.</para> | ||||
<para>Wenn Sie eine Partition angeben, erwartet &os;, dass Sie | <para>Wenn Sie eine Partition angeben, beinhaltet das den | ||||
auch die Slice und die Platte angeben, in denen sich die | Plattennamen, <literal>s</literal>, die Slice-Nummer und den | ||||
Partition befindet. Wenn Sie eine Slice angeben, müssen | Buchstaben der Partition. | ||||
Sie auch die Platte der Slice angeben. Setzen Sie den Namen | |||||
aus dem Plattennamen gefolgt von einem <literal>s</literal>, | |||||
der Slice-Nummer und dem Buchstaben der Partition zusammen. | |||||
Einige Beispiele finden Sie in | Einige Beispiele finden Sie in | ||||
<xref linkend="basics-disk-slice-part"/>.</para> | <xref linkend="basics-disk-slice-part"/>.</para> | ||||
<para>Der Aufbau einer Festplatte wird in | <para>Der Aufbau einer Festplatte wird in | ||||
<xref linkend="basics-concept-disk-model"/> dargestellt.</para> | <xref linkend="basics-concept-disk-model"/> dargestellt.</para> | ||||
<para>Um &os; zu installieren, müssen Sie zuerst Slices | <para>Bei der Installation von &os; legen Sie Slices auf der | ||||
auf den Festplatten anlegen. Innerhalb der Slices, die Sie | Festplatte an, erstellen Partitionen für &os; innerhalb der | ||||
für &os; verwenden wollen, müssen Sie dann | Slice, erstellen ein Dateisystem oder Auslagerungsbereiche und | ||||
Partitionen anlegen. In den Partitionen wiederum werden | entscheiden, welche Dateisysteme wo eingehangen werden.</para> | ||||
die Dateisysteme (oder der Auslagerungsbereich) angelegt. | |||||
Für Dateisysteme müssen Sie schließlich | |||||
noch festlegen, wo diese eingehangen werden (Mount-Point).</para> | |||||
<table frame="none" pgwide="1" xml:id="basics-dev-codes"> | <table frame="none" pgwide="1" xml:id="basics-dev-codes"> | ||||
<title>Laufwerk-Codes</title> | <title>Laufwerk-Codes</title> | ||||
<tgroup cols="2"> | <tgroup cols="2"> | ||||
<colspec colwidth="1*"/> | <colspec colwidth="1*"/> | ||||
<colspec colwidth="5*"/> | <colspec colwidth="5*"/> | ||||
▲ Show 20 Lines • Show All 76 Lines • ▼ Show 20 Lines | <informaltable frame="none" pgwide="1"> | ||||
</tgroup> | </tgroup> | ||||
</informaltable> | </informaltable> | ||||
</example> | </example> | ||||
<example xml:id="basics-concept-disk-model"> | <example xml:id="basics-concept-disk-model"> | ||||
<title>Aufteilung einer Festplatte</title> | <title>Aufteilung einer Festplatte</title> | ||||
<para>Das folgende Diagramm zeigt die Sicht von &os; auf die | <para>Das folgende Diagramm zeigt die Sicht von &os; auf die | ||||
erste IDE-Festplatte eines Rechners. Die Platte soll | erste IDE-Festplatte des Systems. Die Platte soll | ||||
4 GB groß sein und zwei Slices (&ms-dos;-Partitionen) | 4 GB groß sein und zwei Slices (&ms-dos;-Partitionen) | ||||
mit je 2 GB besitzen. Die erste Slice enthält | mit je 2 GB besitzen. Die erste Slice enthält | ||||
ein &ms-dos;-Laufwerk (<filename>C:</filename>), die zweite | ein &ms-dos;-Laufwerk (<filename>C:</filename>), die zweite | ||||
Slice wird von &os; benutzt. Im Beispiel verwendet die | Slice wird von &os; benutzt. Die &os;-Installation in | ||||
&os;-Installationen drei Datenpartitionen und einen | diesem Beispiel verwendet drei Datenpartitionen und einen | ||||
Auslagerungsbereich.</para> | Auslagerungsbereich.</para> | ||||
<para>Jede der drei Partitionen enthält ein Dateisystem. | <para>Jede der drei Partitionen enthält ein Dateisystem. | ||||
Das Wurzeldateisystem ist die <literal>a</literal>-Partition. | Das Wurzeldateisystem ist die <literal>a</literal>-Partition. | ||||
In der <literal>e</literal>-Partition befindet sich | In der <literal>e</literal>-Partition befindet sich | ||||
der <filename>/var</filename>-Verzeichnisbaum | der <filename>/var</filename>-Verzeichnisbaum | ||||
und in der <literal>f</literal>-Partition befindet sich | und in der <literal>f</literal>-Partition befindet sich | ||||
der Verzeichnisbaum unterhalb von | der Verzeichnisbaum unterhalb von | ||||
▲ Show 20 Lines • Show All 68 Lines • ▼ Show 20 Lines | <sect2 xml:id="disks-fstab"> | ||||
<indexterm> | <indexterm> | ||||
<primary>Dateisysteme</primary> | <primary>Dateisysteme</primary> | ||||
<secondary>fstab</secondary> | <secondary>fstab</secondary> | ||||
</indexterm> | </indexterm> | ||||
<para>Während des <link linkend="boot">Boot-Prozesses</link> | <para>Während des <link linkend="boot">Boot-Prozesses</link> | ||||
werden in <filename>/etc/fstab</filename> aufgeführte | werden in <filename>/etc/fstab</filename> aufgeführte | ||||
Verzeichnisse, sofern sie nicht mit der Option <option>noauto</option> | Verzeichnisse, sofern sie nicht mit der Option <option>noauto</option> | ||||
versehen sind, automatisch angehangen.</para> | versehen sind, automatisch angehangen. Diese Datei enthält | ||||
Einträge in folgendem Format:</para> | |||||
<para>Die Zeilen in <filename>/etc/fstab</filename> haben das | |||||
folgende Format:</para> | |||||
<programlisting><replaceable>device</replaceable> <replaceable>/mount-point</replaceable> <replaceable>fstype</replaceable> <replaceable>options</replaceable> <replaceable>dumpfreq</replaceable> <replaceable>passno</replaceable></programlisting> | <programlisting><replaceable>device</replaceable> <replaceable>/mount-point</replaceable> <replaceable>fstype</replaceable> <replaceable>options</replaceable> <replaceable>dumpfreq</replaceable> <replaceable>passno</replaceable></programlisting> | ||||
<variablelist> | <variablelist> | ||||
<varlistentry> | <varlistentry> | ||||
<term><literal>device</literal></term> | <term><literal>device</literal></term> | ||||
<listitem> | <listitem> | ||||
<para>Ein existierender Gerätename | <para>Ein existierender Gerätename | ||||
wie in <xref linkend="disks-naming"/> beschrieben.</para> | wie in <xref linkend="disks-naming"/> beschrieben.</para> | ||||
</listitem> | </listitem> | ||||
</varlistentry> | </varlistentry> | ||||
<varlistentry> | <varlistentry> | ||||
<term><literal>mount-point</literal></term> | <term><literal>mount-point</literal></term> | ||||
<listitem> | <listitem> | ||||
<para>Ein existierendes Verzeichnis, | <para>Ein existierendes Verzeichnis, auf dem | ||||
an das das Dateisystem angehangen wird.</para> | das Dateisystem gemountet wird.</para> | ||||
</listitem> | </listitem> | ||||
</varlistentry> | </varlistentry> | ||||
<varlistentry> | <varlistentry> | ||||
<term><literal>fstype</literal></term> | <term><literal>fstype</literal></term> | ||||
<listitem> | <listitem> | ||||
<para>Der Typ des Dateisystems, | <para>Der Typ des Dateisystems, | ||||
der an &man.mount.8; weitergegeben wird. FreeBSDs | der an &man.mount.8; weitergegeben wird. &os;s | ||||
Standarddateisystem ist <literal>ufs</literal>.</para> | Standarddateisystem ist <literal>ufs</literal>.</para> | ||||
</listitem> | </listitem> | ||||
</varlistentry> | </varlistentry> | ||||
<varlistentry> | <varlistentry> | ||||
<term><literal>options</literal></term> | <term><literal>options</literal></term> | ||||
<listitem> | <listitem> | ||||
<para>Entweder <option>rw</option> | <para>Entweder <option>rw</option> | ||||
für beschreibbare Dateisysteme oder <option>ro</option> | für beschreibbare Dateisysteme oder <option>ro</option> | ||||
für schreibgeschützte Dateisysteme, gefolgt von | für schreibgeschützte Dateisysteme, gefolgt von | ||||
weiteren benötigten Optionen. Eine häufig verwendete | weiteren benötigten Optionen. Eine häufig verwendete | ||||
Option ist <option>noauto</option> für Dateisysteme, | Option ist <option>noauto</option> für Dateisysteme, | ||||
die während der normalen Bootsequenz nicht angehangen | die während der normalen Bootsequenz nicht angehangen | ||||
werden sollen. Weitere Optionen finden sich | werden sollen. Weitere Optionen finden sich | ||||
in &man.mount.8;.</para> | in &man.mount.8;.</para> | ||||
</listitem> | </listitem> | ||||
</varlistentry> | </varlistentry> | ||||
<varlistentry> | <varlistentry> | ||||
<term><literal>dumpfreq</literal></term> | <term><literal>dumpfreq</literal></term> | ||||
<listitem><para>Gibt die Anzahl der Tage an, nachdem das | <listitem><para>Wird von &man.dump.8; benutzt, um bestimmen | ||||
Dateisystem gesichert werden soll. Fehlt der Wert, wird | zu können, welche Dateisysteme gesichert werden müssen. | ||||
<literal>0</literal> angenommen.</para> | Fehlt der Wert, wird <literal>0</literal> | ||||
angenommen.</para> | |||||
</listitem> | </listitem> | ||||
</varlistentry> | </varlistentry> | ||||
<varlistentry> | <varlistentry> | ||||
<term><literal>passno</literal></term> | <term><literal>passno</literal></term> | ||||
<listitem><para>Bestimmt die Reihenfolge, in der die Dateisysteme | <listitem><para>Bestimmt die Reihenfolge, in der die Dateisysteme | ||||
überprüft werden sollen. Für Dateisysteme, | überprüft werden sollen. Für Dateisysteme, | ||||
die übersprungen werden sollen, ist | die übersprungen werden sollen, ist | ||||
<literal>passno</literal> auf null zu setzen. Für das | <literal>passno</literal> auf <literal>0</literal> zu setzen. Für das | ||||
Root-Dateisystem, das vor allen anderen überprüft | Root-Dateisystem, das vor allen anderen überprüft | ||||
werden muss, sollte der Wert von | werden muss, sollte der Wert von | ||||
<literal>passno</literal> eins betragen. Allen anderen | <literal>passno</literal> <literal>1</literal> betragen. Allen anderen | ||||
Dateisystemen sollten Werte größer eins zugewiesen | Dateisystemen sollten Werte größer <literal>1</literal> zugewiesen | ||||
werden. Wenn mehrere Dateisysteme den gleichen Wert | werden. Wenn mehrere Dateisysteme den gleichen Wert | ||||
besitzen, wird &man.fsck.8; versuchen, diese parallel zu | besitzen, wird &man.fsck.8; versuchen, diese parallel zu | ||||
überprüfen.</para> | überprüfen.</para> | ||||
</listitem> | </listitem> | ||||
</varlistentry> | </varlistentry> | ||||
</variablelist> | </variablelist> | ||||
<para>Lesen Sie &man.fstab.5; für weitere Informationen über das | |||||
Format von <filename>/etc/fstab</filename> und dessen | |||||
Optionen.</para> | |||||
</sect2> | </sect2> | ||||
<sect2 xml:id="disks-mount"> | <sect2 xml:id="disks-mount"> | ||||
<title>Das <command>mount</command> Kommando</title> | <title>Das <command>mount</command> Kommando</title> | ||||
<indexterm> | <indexterm> | ||||
<primary>Dateisysteme</primary> | <primary>Dateisysteme</primary> | ||||
<secondary>anhängen</secondary> | <secondary>anhängen</secondary> | ||||
</indexterm> | </indexterm> | ||||
<para>&man.mount.8; hängt schließlich Dateisysteme | <para>Dateisysteme werden mit &man.mount.8; eingehängt. In der | ||||
an.</para> | grundlegenden Form wird es wie folgt benutzt:</para> | ||||
<para>In der grundlegenden Form wird es wie folgt benutzt:</para> | |||||
<informalexample> | <informalexample> | ||||
<screen>&prompt.root; <userinput>mount device mountpoint</userinput></screen> | <screen>&prompt.root; <userinput>mount <replaceable>device</replaceable> | ||||
<replaceable>mountpoint</replaceable></userinput></screen> | |||||
</informalexample> | </informalexample> | ||||
<para>Viele Optionen werden in &man.mount.8; beschrieben, | <para>Dieser Befehl bietet viele Optionen, die in &man.mount.8; | ||||
die am häufigsten verwendeten sind:</para> | beschrieben werden. Die am häufigsten verwendeten Optionen | ||||
sind:</para> | |||||
<variablelist> | <variablelist> | ||||
<title>Optionen von <command>mount</command></title> | <title>Optionen von <command>mount</command></title> | ||||
<varlistentry> | <varlistentry> | ||||
<term><option>-a</option></term> | <term><option>-a</option></term> | ||||
<listitem> | <listitem> | ||||
Show All 18 Lines | <varlistentry> | ||||
</listitem> | </listitem> | ||||
</varlistentry> | </varlistentry> | ||||
<varlistentry> | <varlistentry> | ||||
<term><option>-f</option></term> | <term><option>-f</option></term> | ||||
<listitem> | <listitem> | ||||
<para>Erzwingt das Anhängen eines unsauberen Dateisystems | <para>Erzwingt das Anhängen eines unsauberen Dateisystems | ||||
oder erzwingt die Rücknahme des Schreibzugriffs, wenn | (riskant) oder die Rücknahme des Schreibzugriffs, wenn | ||||
der Status des Dateisystems von beschreibbar auf | der Status des Dateisystems von beschreibbar auf | ||||
schreibgeschützt geändert wird.</para> | schreibgeschützt geändert wird.</para> | ||||
</listitem> | </listitem> | ||||
</varlistentry> | </varlistentry> | ||||
<varlistentry> | <varlistentry> | ||||
<term><option>-r</option></term> | <term><option>-r</option></term> | ||||
<listitem> | <listitem> | ||||
<para>Hängt das Dateisystem schreibgeschützt ein. Das | <para>Hängt das Dateisystem schreibgeschützt ein. Dies | ||||
kann auch durch Angabe von <option>ro</option> als Argument | kann auch durch Angabe von <option>-o ro</option> | ||||
der Option <option>-o</option> erreicht werden.</para> | erreicht werden.</para> | ||||
</listitem> | </listitem> | ||||
</varlistentry> | </varlistentry> | ||||
<varlistentry> | <varlistentry> | ||||
<term><option>-t</option> | <term><option>-t</option> | ||||
<replaceable>fstype</replaceable></term> | <replaceable>fstype</replaceable></term> | ||||
<listitem> | <listitem> | ||||
<para>Hängt das Dateisystem mit dem angegebenen Typ an, | <para>Hängt das Dateisystem mit dem angegebenen Typ an, | ||||
oder hängt nur Dateisysteme mit dem angegebenen Typ | oder hängt nur Dateisysteme mit dem angegebenen Typ | ||||
an, wenn auch <option>-a</option> angegeben | an, wenn <option>-a</option> angegeben wurde. | ||||
wurde.</para> | <quote>ufs</quote> ist das Standarddateisystem.</para> | ||||
<para>Die Voreinstellung für den Typ des Dateisystems | |||||
ist <quote>ufs</quote>.</para> | |||||
</listitem> | </listitem> | ||||
</varlistentry> | </varlistentry> | ||||
<varlistentry> | <varlistentry> | ||||
<term><option>-u</option></term> | <term><option>-u</option></term> | ||||
<listitem> | <listitem> | ||||
<para>Aktualisiert die Mountoptionen des Dateisystems.</para> | <para>Aktualisiert die Mountoptionen des Dateisystems.</para> | ||||
Show All 12 Lines | <varlistentry> | ||||
<term><option>-w</option></term> | <term><option>-w</option></term> | ||||
<listitem> | <listitem> | ||||
<para>Hängt das Dateisystem beschreibbar an.</para> | <para>Hängt das Dateisystem beschreibbar an.</para> | ||||
</listitem> | </listitem> | ||||
</varlistentry> | </varlistentry> | ||||
</variablelist> | </variablelist> | ||||
<para><option>-o</option> erwartet eine durch Kommata separierte Liste | <para>Die folgenden Optionen können durch eine Kommata | ||||
von Optionen, unter anderem die folgenden:</para> | separierte Liste an <option>-o</option> übergeben | ||||
werden:</para> | |||||
<variablelist> | <variablelist> | ||||
<varlistentry> | <varlistentry> | ||||
<term>noexec</term> | <term>noexec</term> | ||||
<listitem> | <listitem> | ||||
<para>Verbietet das Ausführen von binären | <para>Verbietet das Ausführen von binären | ||||
Dateien auf dem Dateisystem. Dies ist eine | Dateien auf dem Dateisystem. Dies ist eine | ||||
Show All 15 Lines | </varlistentry> | ||||
<sect2 xml:id="disks-umount"> | <sect2 xml:id="disks-umount"> | ||||
<title>Das <command>umount</command> Kommando</title> | <title>Das <command>umount</command> Kommando</title> | ||||
<indexterm> | <indexterm> | ||||
<primary>Dateisysteme</primary> | <primary>Dateisysteme</primary> | ||||
<secondary>abhängen</secondary> | <secondary>abhängen</secondary> | ||||
</indexterm> | </indexterm> | ||||
<para>&man.umount.8; akzeptiert als Parameter entweder | <para>&man.umount.8; hängt ein Dateisysstem ab. Dieser Befehl | ||||
einen Mountpoint, einen Gerätenamen, oder die | akzeptiert als Parameter entweder | ||||
Optionen <option>-a</option> oder <option>-A</option>.</para> | einen Mountpoint, einen Gerätenamen, <option>-a</option> | ||||
oder <option>-A</option>.</para> | |||||
<para>Jede Form akzeptiert <option>-f</option>, um das | <para>Jede Form akzeptiert <option>-f</option>, um das | ||||
Abhängen zu erzwingen, und <option>-v</option>, um | Abhängen zu erzwingen, und <option>-v</option>, um | ||||
etwas geschwätziger zu sein. Seien Sie bitte vorsichtig mit | etwas geschwätziger zu sein. Seien Sie bitte vorsichtig mit | ||||
<option>-f</option>: Ihr Computer kann abstürzen oder es | <option>-f</option>, da der Computer abstürzen kann oder es | ||||
können Daten auf dem Dateisystem beschädigt werden, wenn | können Daten auf dem Dateisystem beschädigt werden.</para> | ||||
Sie das Abhängen erzwingen.</para> | |||||
<para><option>-a</option> und <option>-A</option> werden benutzt | <para>Um alle Dateisysteme abzuhängen, oder nur diejenigen, die | ||||
um alle Dateisysteme, deren Typ durch <option>-t</option> | mit <option>-t</option> gelistet werden, wird | ||||
modifiziert werden kann, abzuhängen. <option>-A</option> | <option>-a</option> oder <option>-A</option> benutzt. | ||||
hängt das Rootdateisystem nicht ab.</para> | Beachten Sie, dass <option>-a</option> das Root-Dateisystem | ||||
nicht aushängt.</para> | |||||
</sect2> | </sect2> | ||||
</sect1> | </sect1> | ||||
<sect1 xml:id="basics-processes"> | <sect1 xml:id="basics-processes"> | ||||
<title>Prozesse</title> | <title>Prozesse</title> | ||||
<para>Da FreeBSD ein Multitasking-Betriebssystem ist, sieht es so aus, | <para>&os; ist ein Multitasking-Betriebssystem. Jedes | ||||
als ob mehrere Prozesse zur gleichen Zeit laufen. Jedes Programm, | Programm, das zu irgendeiner Zeit läuft wird als | ||||
das zu irgendeiner Zeit läuft, wird | <firstterm>Prozess</firstterm> bezeichnet. Jedes laufende | ||||
<firstterm>Prozess</firstterm> genannt. Jedes Kommando | Kommando startet mindestens einen neuen Prozess. Dazu gibt | ||||
startet mindestens einen Prozess. Einige Systemprozesse | es eine Reihe von Systemprozessen, die von &os; ausgeführt | ||||
laufen ständig und stellen die Funktion des Systems sicher.</para> | werden.</para> | ||||
<para>Jeder Prozess wird durch eine eindeutige Nummer identifiziert, | <para>Jeder Prozess wird durch eine eindeutige Nummer identifiziert, | ||||
die <firstterm>Prozess-ID</firstterm> oder | die <firstterm>Prozess-ID</firstterm> | ||||
<firstterm>PID</firstterm> genannt wird. Prozesse haben ebenso | (<firstterm>PID</firstterm>) genannt wird. Prozesse haben ebenso | ||||
wie Dateien einen Besitzer und eine Gruppe, die festlegen, welche | wie Dateien einen Besitzer und eine Gruppe, die festlegen, welche | ||||
Dateien und Geräte der Prozess benutzen kann. Dabei | Dateien und Geräte der Prozess benutzen kann. Die meisten | ||||
finden die vorher beschriebenen Zugriffsrechte Anwendung. Die meisten | |||||
Prozesse haben auch einen Elternprozess, der sie gestartet hat. | Prozesse haben auch einen Elternprozess, der sie gestartet hat. | ||||
Wenn Sie in der Shell Kommandos eingeben, dann ist die Shell ein | Beispielsweise ist die Shell ein Prozess. Jedes in Shell | ||||
Prozess und jedes Kommando, das Sie starten, ist auch ein | gestartete Kommando ist dann ein neuer Prozess, der die Shell | ||||
Prozess. Jeder Prozess, den Sie auf diese Weise starten, | als Elternprozess besitzt. Die Ausnahme hiervon ist ein | ||||
besitzt den Shell-Prozess als Elternprozess. Die Ausnahme | spezieller Prozess namens &man.init.8;, der beim booten immer | ||||
hiervon ist ein spezieller Prozess, der &man.init.8; | als erstes gestartet wird und der immer die PID 1 hat.</para> | ||||
heißt. <command>init</command> ist immer der erste Prozess | |||||
und hat somit die PID 1. <command>init</command> wird vom Kernel | |||||
beim Booten von FreeBSD gestartet.</para> | |||||
<para>Die Kommandos &man.ps.1; und &man.top.1; sind besonders | <para>Um die Prozesse auf dem System zu sehen, benutzen Sie | ||||
nützlich, um sich die Prozesse auf einem System anzusehen. | &man.ps.1; und &man.top.1;. Eine statische Liste der laufenden | ||||
<command>ps</command> zeigt eine statische Liste der laufenden | Prozesse, deren PID, Speicherverbauch und die Kommandozeile, mit | ||||
Prozesse und kann deren PID, Speicherverbrauch und die | der sie gestartet wurden, erhalten Sie mit &man.ps.1;. Um alle | ||||
Kommandozeile, mit der sie gestartet wurden und vieles mehr | laufenden Prozesse in einer Anzeige zu sehen, die alle paar | ||||
anzeigen. <command>top</command> zeigt alle laufenden Prozesse | Sekunden aktualisiert wird, so dass Sie interaktiv sehen können | ||||
an und aktualisiert die Anzeige, so dass Sie Ihrem Computer | was der Computer macht, benutzen Sie &man.top.1;.</para> | ||||
bei der Arbeit zuschauen können.</para> | |||||
<para>Normal zeigt Ihnen <command>ps</command> nur die laufenden | <para>Normal zeigt <command>ps</command> nur die laufenden | ||||
Prozesse, die Ihnen gehören. Zum Beispiel:</para> | Prozesse, die dem Benutzer gehören. Zum Beispiel:</para> | ||||
<screen>&prompt.user; <userinput>ps</userinput> | <screen>&prompt.user; <userinput>ps</userinput> | ||||
PID TT STAT TIME COMMAND | PID TT STAT TIME COMMAND | ||||
298 p0 Ss 0:01.10 tcsh | 298 p0 Ss 0:01.10 tcsh | ||||
7078 p0 S 2:40.88 xemacs mdoc.xsl (xemacs-21.1.14) | 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) | 37393 p0 I 0:03.11 xemacs freebsd.dsl (xemacs-21.1.14) | ||||
48630 p0 S 2:50.89 /usr/local/lib/netscape-linux/navigator-linux-4.77.bi | 48630 p0 S 2:50.89 /usr/local/lib/netscape-linux/navigator-linux-4.77.bi | ||||
48730 p0 IW 0:00.00 (dns helper) (navigator-linux-) | |||||
72210 p0 R+ 0:00.00 ps | 72210 p0 R+ 0:00.00 ps | ||||
390 p1 Is 0:01.14 tcsh | 390 p1 Is 0:01.14 tcsh | ||||
7059 p2 Is+ 1:36.18 /usr/local/bin/mutt -y | 7059 p2 Is+ 1:36.18 /usr/local/bin/mutt -y | ||||
6688 p3 IWs 0:00.00 tcsh | 6688 p3 IWs 0:00.00 tcsh | ||||
10735 p4 IWs 0:00.00 tcsh | 10735 p4 IWs 0:00.00 tcsh | ||||
20256 p5 IWs 0:00.00 tcsh | 20256 p5 IWs 0:00.00 tcsh | ||||
262 v0 IWs 0:00.00 -tcsh (tcsh) | 262 v0 IWs 0:00.00 -tcsh (tcsh) | ||||
270 v0 IW+ 0:00.00 /bin/sh /usr/X11R6/bin/startx -- -bpp 16 | 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 | 280 v0 IW+ 0:00.00 xinit /home/nik/.xinitrc -- -bpp 16 | ||||
284 v0 IW 0:00.00 /bin/sh /home/nik/.xinitrc | 284 v0 IW 0:00.00 /bin/sh /home/nik/.xinitrc | ||||
285 v0 S 0:38.45 /usr/X11R6/bin/sawfish</screen> | 285 v0 S 0:38.45 /usr/X11R6/bin/sawfish</screen> | ||||
<para>Wie Sie sehen, gibt &man.ps.1; mehrere Spalten aus. In der | <para>Die Ausgabe von &man.ps.1; ist in einer Anzahl von Spalten | ||||
<literal>PID</literal> Spalte findet sich die vorher besprochene | organisiert. Die <literal>PID</literal> Splate zeigt die | ||||
Prozess-ID. PIDs werden von 1 beginnend bis 99999 zugewiesen | Prozess-ID. PIDs werden von 1 beginnend bis 99999 zugewiesen und | ||||
und fangen wieder von vorne an, wenn die Grenze überschritten | fangen wieder von vorne an. Ist eine PID breits vergeben, wird | ||||
wird. Ist eine PID bereits vergeben, wird diese allerdings nicht | diese allerdings nicht erneut vergeben. | ||||
erneut vergeben. | |||||
Die Spalte <literal>TT</literal> zeigt den Terminal, auf dem das | Die Spalte <literal>TT</literal> zeigt den Terminal, auf dem das | ||||
Programm läuft. <literal>STAT</literal> zeigt den Status | Programm läuft. <literal>STAT</literal> zeigt den Status | ||||
des Programms an und kann für die Zwecke dieser Diskussion ebenso | des Programms an und kann für die Zwecke dieser Diskussion ebenso | ||||
wie <literal>TT</literal> ignoriert werden. <literal>TIME</literal> | wie <literal>TT</literal> ignoriert werden. <literal>TIME</literal> | ||||
gibt die Zeit an, die das Programm auf der CPU gelaufen ist – | gibt die Zeit an, die das Programm auf der CPU gelaufen ist. | ||||
dies ist nicht unbedingt die Zeit, die seit dem Start des Programms | Dies ist nicht unbedingt die Zeit, die seit dem Start des Programms | ||||
vergangen ist, da die meisten Programme hauptsächlich auf | vergangen ist, da die meisten Programme hauptsächlich auf | ||||
bestimmte Dinge warten, bevor sie wirklich CPU-Zeit verbrauchen. | bestimmte Dinge warten, bevor sie wirklich CPU-Zeit verbrauchen. | ||||
Unter der Spalte <literal>COMMAND</literal> finden Sie schließlich | Unter der Spalte <literal>COMMAND</literal> finden Sie schließlich | ||||
die Kommandozeile, mit der das Programm gestartet wurde.</para> | die Kommandozeile, mit der das Programm gestartet wurde.</para> | ||||
<para>&man.ps.1; besitzt viele Optionen, um die angezeigten Informationen | <para>&man.ps.1; besitzt viele Optionen, um die angezeigten Informationen | ||||
zu beeinflussen. Eine nützliche Kombination ist | zu beeinflussen. Eine nützliche Kombination ist | ||||
<literal>auxww</literal>. Mit <option>a</option> werden Information | <literal>auxww</literal>. <option>a</option> zeigt Information | ||||
über alle laufenden Prozesse und nicht nur Ihrer eigenen | über alle laufenden Prozesse aller Benutzer. Der Name des | ||||
angezeigt. Der Name des Besitzers des Prozesses, sowie Informationen | Besitzers des Prozesses, sowie Informationen | ||||
über den Speicherverbrauch werden mit <option>u</option> | über den Speicherverbrauch werden mit <option>u</option> | ||||
angezeigt. <option>x</option> zeigt auch Dämonen-Prozesse an, | angezeigt. <option>x</option> zeigt auch Dämonen-Prozesse an, | ||||
und <option>ww</option> veranlasst &man.ps.1; die komplette | und <option>ww</option> veranlasst &man.ps.1; die komplette | ||||
Kommandozeile für jeden Befehl anzuzeigen, anstatt sie | Kommandozeile für jeden Befehl anzuzeigen, anstatt sie | ||||
abzuschneiden, wenn sie zu lang für die Bildschirmausgabe | abzuschneiden, wenn sie zu lang für die Bildschirmausgabe | ||||
wird.</para> | wird.</para> | ||||
<para>Die Ausgabe von &man.top.1; sieht ähnlich aus:</para> | <para>Die Ausgabe von &man.top.1; sieht ähnlich aus:</para> | ||||
Show All 20 Lines | <para>Die Ausgabe ist in zwei Abschnitte geteilt. In den ersten | ||||
Systemauslastung (engl. <foreignphrase>load average</foreignphrase>), | Systemauslastung (engl. <foreignphrase>load average</foreignphrase>), | ||||
die Systemlaufzeit (die Zeit seit dem letzten Reboot) und die | die Systemlaufzeit (die Zeit seit dem letzten Reboot) und die | ||||
momentane Zeit. Die weiteren Zahlen im Kopf beschreiben wie viele | momentane Zeit. Die weiteren Zahlen im Kopf beschreiben wie viele | ||||
Prozesse momentan laufen (im Beispiel 47), wie viel Speicher | Prozesse momentan laufen (im Beispiel 47), wie viel Speicher | ||||
und Swap verbraucht wurde und wie viel Zeit das System in den | und Swap verbraucht wurde und wie viel Zeit das System in den | ||||
verschiedenen CPU-Modi verbringt.</para> | verschiedenen CPU-Modi verbringt.</para> | ||||
<para>Darunter befinden sich einige Spalten mit ähnlichen | <para>Darunter befinden sich einige Spalten mit ähnlichen | ||||
Informationen wie in der Ausgabe von &man.ps.1;. Wie im vorigen | Informationen wie in der Ausgabe von &man.ps.1;, wie | ||||
Beispiel können Sie die PID, den Besitzer, die verbrauchte | beispielsweise die PID, den Besitzer, die verbrauchte | ||||
CPU-Zeit und das Kommando erkennen. &man.top.1; zeigt auch den | CPU-Zeit und das Kommando, das den Prozess gestartet hat. | ||||
Speicherverbrauch des Prozesses an, der in zwei Spalten aufgeteilt | &man.top.1; zeigt auch den Speicherverbrauch des Prozesses an, | ||||
ist. Die erste Spalte gibt den gesamten Speicherverbrauch des | der in zwei Spalten aufgeteilt ist. Die erste Spalte gibt den | ||||
Prozesses an, in der zweiten Spalte wird der aktuelle Verbrauch | gesamten Speicherverbrauch des Prozesses an, in der zweiten | ||||
angegeben. <application>&netscape;</application> hat im gezeigten | Spalte wird der aktuelle Verbrauch angegeben. | ||||
<application>&netscape;</application> hat im gezeigten | |||||
Beispiel insgesamt 30 MB Speicher verbraucht. Momentan benutzt | Beispiel insgesamt 30 MB Speicher verbraucht. Momentan benutzt | ||||
es allerdings nur 9 MB.</para> | es allerdings nur 9 MB.</para> | ||||
<para>Die Anzeige wird von &man.top.1; automatisch alle zwei Sekunden | <para>Die Anzeige wird von &man.top.1; automatisch alle zwei | ||||
aktualisiert. Der Zeitraum kann mit <option>-s</option> eingestellt | Sekunden aktualisiert. Ein anderer Intervall kann mit | ||||
werden.</para> | <option>-s</option> spezifiziert werden.</para> | ||||
</sect1> | </sect1> | ||||
<sect1 xml:id="basics-daemons"> | <sect1 xml:id="basics-daemons"> | ||||
<title>Dämonen, Signale und Stoppen von Prozessen</title> | <title>Dämonen, Signale und Stoppen von Prozessen</title> | ||||
<para>Wenn Sie einen Editor starten, können Sie ihn leicht bedienen | <para>Wenn Sie einen Editor benutzen, können Sie ihn leicht | ||||
und Dateien laden. Sie können das, weil der Editor dafür | bedienen und Dateien laden, weil der Editor dafür Vorsorge | ||||
Vorsorge getroffen hat und auf einem <firstterm>Terminal</firstterm> | getroffen hat und auf einem <firstterm>Terminal</firstterm> | ||||
läuft. Manche Programme erwarten keine Eingaben von einem | läuft. Manche Programme erwarten keine Eingaben von einem | ||||
Benutzer und lösen sich bei erster Gelegenheit von ihrem | Benutzer und lösen sich bei erster Gelegenheit von ihrem | ||||
Terminal. Ein Web-Server zum Beispiel verbringt den ganzen Tag | Terminal. Ein Webserver zum Beispiel antwortet auf | ||||
damit, auf Anfragen zu antworten und erwartet keine Eingaben von Ihnen. | Web-Anfragen und nicht auf Benutzereingaben. Mail-Server sind | ||||
Programme, die E-Mail von einem Ort zu einem anderen Ort transportieren | ein weiteres Beispiel für diesen Typ von Anwendungen.</para> | ||||
sind ein weiteres Beispiel für diesen Typ von Anwendungen.</para> | |||||
<para>Wir nennen diese Programme <firstterm>Dämonen</firstterm>. | <para>Diese Programme sind als <firstterm>Dämonen</firstterm> | ||||
Dämonen stammen aus der griechischen Mythologie und waren | bekannt. Der Begriff Dämon stammt aus der griechischen | ||||
weder gut noch böse. Sie waren kleine dienstbare Geister, | Mythologie und bezeichnet ein Wesen, das weder gut noch böse ist | ||||
die meistens nützliche Sachen für die Menschheit vollbrachten. | und welches unsichtbar nützliche Aufgaben verrichtet. Deshalb | ||||
Ähnlich wie heutzutage Web-Server und Mail-Server nützliche | ist das BSD Maskottchen dieser fröhlich aussehende Dämon mit | ||||
Dienste verrichten. Seit langer Zeit ist daher das BSD Maskottchen | Turnschuhen und Dreizack.</para> | ||||
dieser fröhlich aussehende Dämon mit Turnschuhen | |||||
und Dreizack.</para> | |||||
<para>Programme, die als Dämon laufen, werden entsprechend einer | <para>Programme, die als Dämon laufen, werden entsprechend einer | ||||
Konvention mit einem <quote>d</quote> am Ende benannt. | Konvention mit einem <quote>d</quote> am Ende benannt. | ||||
<application>BIND</application> steht beispielsweise für | <application>BIND</application> steht beispielsweise für | ||||
Berkeley Internet Name Domain, das tatsächlich laufende Programm | Berkeley Internet Name Domain, das tatsächlich laufende Programm | ||||
heißt aber | heißt aber <command>named</command>. Der | ||||
<command>named</command>. Der Apache Webserver wird | <application>Apache</application> Webserver wird | ||||
<command>httpd</command> genannt, der Druckerspool-Dämon heißt | <command>httpd</command> genannt und der Druckerspool-Dämon | ||||
<command>lpd</command> usw. Dies ist allerdings eine Konvention | heißt <command>lpd</command>. Dies ist allerdings nur eine | ||||
und keine unumstößliche Regel: Der Dämon der | Konvention. Der Dämon der Anwendung | ||||
Anwendung <application>sendmail</application> heißt | <application>sendmail</application> heißt beispielsweise | ||||
<command>sendmail</command> und nicht <command>maild</command>, wie | <command>sendmail</command> und nicht | ||||
Sie vielleicht gedacht hatten.</para> | <command>maild</command>.</para> | ||||
<para>Manchmal müssen Sie mit einem Dämon kommunizieren. Dazu | <para>Eine Möglichkeit mit einem Dämon oder einem laufenden | ||||
verwenden Sie <firstterm>Signale</firstterm>. Sie können | Prozess zu kommunizieren, ist über das Versenden von | ||||
mit einem Dämonen oder jedem anderen laufenden Prozess | <firstterm>Signalen</firstterm> mittels &man.kill.1;. Es gibt | ||||
kommunizieren, indem Sie diesem ein Signal schicken. Sie können | eine Reihe von verschiedenen Signalen. Manche haben eine feste | ||||
verschiedene Signale verschicken – manche haben eine festgelegte | Bedeutung, während andere in der Dokumentation der Anwendung | ||||
Bedeutung, andere werden von der Anwendung interpretiert. Die | beschrieben sind. Ein Benutzer kann ein Signal nur an einen | ||||
Dokumentation zur fraglichen Anwendung wird erklären, wie | Prozess senden, welcher ihm gehört. Wird versucht ein Signal | ||||
die Anwendung Signale interpretiert. Sie können nur Signale | an einen Prozess eines anderen Benutzers zu senden, resultiert | ||||
zu Prozessen senden, die Ihnen gehören. Normale Benutzer haben | dies in einem Zugriffsfehler mangels fehlender Berechtigungen. | ||||
nicht die Berechtigung, Prozessen anderer Benutzer mit &man.kill.1; | Die Ausnahme ist der | ||||
oder &man.kill.2; Signale zu schicken. Der Benutzer | <systemitem class="username">root</systemitem>-Benutzer, welcher | ||||
<systemitem class="username">root</systemitem> darf jedem Prozess Signale schicken.</para> | jedem Prozess Signale senden kann.</para> | ||||
<para>In manchen Fällen wird FreeBSD Signale senden. Wenn eine | <para>&os; kann auch ein Signal an einen Prozess senden. Wenn | ||||
Anwendung schlecht geschrieben ist und auf Speicher zugreift, auf | eine Anwendung schlecht geschrieben ist und auf Speicher | ||||
den sie nicht zugreifen soll, so sendet FreeBSD dem Prozess | zugreift, auf den sie nicht zugreifen soll, so sendet &os; dem | ||||
das <firstterm>Segmentation Violation</firstterm> Signal | Prozess das <firstterm>Segmentation Violation</firstterm> Signal | ||||
(<literal>SIGSEGV</literal>). Wenn eine Anwendung den &man.alarm.3; | (<literal>SIGSEGV</literal>). Wenn eine Anwendung den &man.alarm.3; | ||||
Systemaufruf benutzt hat, um nach einiger Zeit benachrichtigt zu | Systemaufruf benutzt hat, um nach einiger Zeit benachrichtigt zu | ||||
werden, bekommt sie das Alarm Signal (<literal>SIGALRM</literal>) | werden, bekommt sie das Alarm Signal (<literal>SIGALRM</literal>) | ||||
gesendet.</para> | gesendet.</para> | ||||
<para>Zwei Signale können benutzt werden, um Prozesse zu stoppen: | <para>Zwei Signale können benutzt werden, um einen Prozess zu stoppen: | ||||
<literal>SIGTERM</literal> und <literal>SIGKILL</literal>. Mit | <literal>SIGTERM</literal> und <literal>SIGKILL</literal>. | ||||
<literal>SIGTERM</literal> fordern Sie den Prozess höflich zum | <literal>SIGTERM</literal> fordert den Prozess höflich zum | ||||
Beenden auf. Der Prozess kann das Signal abfangen und merken, | Beenden auf. Der Prozess kann das Signal abfangen und hat dann | ||||
dass er sich beenden soll. Er hat dann Gelegenheit Logdateien | Gelegenheit Logdateien zu schließen und die Aktion, die er | ||||
zu schließen und die Aktion, die er vor der Aufforderung | durchführte, abzuschließen. In manchen Situationen kann der | ||||
sich zu beenden durchführte, abzuschließen. Er kann | Prozess <literal>SIGTERM</literal> ignorieren, wenn er eine | ||||
sogar <literal>SIGTERM</literal> ignorieren, wenn er eine Aktion | Aktion durchführt, die nicht unterbrochen werden darf.</para> | ||||
durchführt, die nicht unterbrochen werden darf.</para> | |||||
<para><literal>SIGKILL</literal> kann von keinem Prozess ignoriert | <para><literal>SIGKILL</literal> kann von keinem Prozess ignoriert | ||||
werden. Das Signal lässt sich mit <quote>Mich interessiert | werden. Das Signal lässt sich mit <quote>Mich interessiert | ||||
nicht, was du gerade machst, hör sofort auf damit!</quote> | nicht, was du gerade machst, hör sofort auf damit!</quote> | ||||
umschreiben. Wenn Sie einem Prozess <literal>SIGKILL</literal> | umschreiben. Wird einem Prozess <literal>SIGKILL</literal> | ||||
schicken, dann wird FreeBSD diesen sofort beenden<footnote><para> | geschickt, dann wird &os; diesen sofort beenden<footnote> | ||||
Das stimmt nicht ganz: Es gibt Fälle, in denen ein Prozess | <para>Es gibt Fälle, in denen ein Prozess nicht unterbrochen | ||||
nicht unterbrochen werden kann. Wenn der Prozesss zum Beispiel | werden kann. Wenn ein Prozess zum Beispiel eine Datei von | ||||
eine Datei von einem anderen Rechner auf dem Netzwerk liest und dieser | einem anderen Rechner auf dem Netzwerk liest und dieser | ||||
Rechner aus irgendwelchen Gründen nicht erreichbar ist | Rechner nicht erreichbar ist, dann ist der Prozess nicht zu | ||||
(ausgeschaltet, oder ein Netzwerkfehler), dann ist der Prozess | unterbrechen. Wenn der Prozess den Lesezugriff nach einem | ||||
nicht zu unterbrechen. Wenn der Prozess den Lesezugriff | Timeout von typischerweise zwei Minuten aufgibt, dann wird | ||||
nach einem Timeout von typischerweise zwei Minuten aufgibt, | er beendet.</para> | ||||
dann wird er beendet.</para> | |||||
</footnote>.</para> | </footnote>.</para> | ||||
<para>Andere Signale, die Sie vielleicht verschicken wollen, sind | <para>Andere häufig verwendete Signale sind | ||||
<literal>SIGHUP</literal>, <literal>SIGUSR1</literal> und | <literal>SIGHUP</literal>, <literal>SIGUSR1</literal> und | ||||
<literal>SIGUSR2</literal>. Diese Signale sind für allgemeine | <literal>SIGUSR2</literal>. Diese Signale sind für allgemeine | ||||
Zwecke vorgesehen und verschiedene Anwendungen werden unterschiedlich | Zwecke vorgesehen und verschiedene Anwendungen werden | ||||
auf diese Signale reagieren.</para> | unterschiedlich auf diese Signale reagieren.</para> | ||||
<para>Nehmen wir an, Sie haben die Konfiguration Ihres Webservers | <para>Ändern Sie beispielsweise die Konfiguration eines | ||||
verändert und möchten dies dem Server mitteilen. Sie | Webservers, so muss dieser angewiesen werden, seine | ||||
könnten den Server natürlich stoppen und | Konfiguration neu zu lesen. Ein Neustart von | ||||
<command>httpd</command> wieder starten. Die Folge wäre eine | <command>httpd</command> würde dazu führen, dass der Server für | ||||
kurze Zeit, in der der Server nicht erreichbar ist. Die meisten | kurze Zeit nicht erreichbar ist. Senden Sie dem Dämon | ||||
Dämonen lesen Ihre Konfigurationsdatei beim Empfang eines | stattdessen das <literal>SIGHUP</literal>-Signal. Es sei | ||||
<literal>SIGHUP</literal> neu ein. Da es keinen Standard gibt, der | erwähnt, dass verschiedene Dämonen sich anders verhalten. Lesen | ||||
vorschreibt, wie auf diese Signale zu reagieren ist, lesen | Sie bitte die Dokumentation des entsprechenden Dämonen um zu | ||||
Sie bitte die Dokumentation zu dem in Frage kommenden Dämon.</para> | überprüfen, ob der Dämon bei einem <literal>SIGHUP</literal> die | ||||
gewünschten Ergebnisse erzielt.</para> | |||||
<para>Mit &man.kill.1; können Sie, wie unten gezeigt, Signale | |||||
verschicken.</para> | |||||
<procedure> | <procedure> | ||||
<title>Verschicken von Signalen</title> | <title>Verschicken von Signalen</title> | ||||
<para>Das folgende Beispiel zeigt, wie Sie &man.inetd.8; ein | <para>Das folgende Beispiel zeigt, wie Sie &man.inetd.8; ein | ||||
Signal schicken. Die Konfigurationsdatei von | Signal schicken. Die Konfigurationsdatei von | ||||
<command>inetd</command> ist <filename>/etc/inetd.conf</filename>. | <command>inetd</command> ist <filename>/etc/inetd.conf</filename>. | ||||
Diese Konfigurationsdatei liest <command>inetd</command> ein, | Diese Konfigurationsdatei liest <command>inetd</command> ein, | ||||
wenn er ein <literal>SIGHUP</literal> empfängt.</para> | wenn er <literal>SIGHUP</literal> empfängt.</para> | ||||
<step> | <step> | ||||
<para>Suchen Sie die Prozess-ID des Prozesses, dem Sie ein | <para>Suchen Sie mit &man.pgrep.1; die Prozess-ID des | ||||
Signal schicken wollen. Benutzen Sie | Prozesses, dem Sie ein Signal schicken wollen. In diesem | ||||
dazu &man.pgrep.1;.</para> | Beispiel ist die PID von &man.inetd.8; 198:</para> | ||||
<screen>&prompt.user; <userinput>pgrep -l inetd</userinput> | <screen>&prompt.user; <userinput>pgrep -l inetd</userinput> | ||||
198 inetd -wW</screen> | 198 inetd -wW</screen> | ||||
<para>Die Prozess-ID von &man.inetd.8; ist 198.</para> | |||||
</step> | </step> | ||||
<step> | <step> | ||||
<para>Senden Sie das Signal mit &man.kill.1;. Da &man.inetd.8; | <para>Benutzen Sie &man.kill.1;, um ein Signal zu senden. Da | ||||
unter dem Benutzer <systemitem class="username">root</systemitem> läuft, müssen | &man.inetd.8; dem Benutzer <systemitem | ||||
Sie zuerst mit &man.su.1; <systemitem class="username">root</systemitem> werden:</para> | class="username">root</systemitem> gehört, müssen | ||||
Sie zuerst mit &man.su.1; | |||||
<systemitem class="username">root</systemitem> | |||||
werden:</para> | |||||
<screen>&prompt.user; <userinput>su</userinput> | <screen>&prompt.user; <userinput>su</userinput> | ||||
<prompt>Password:</prompt> | <prompt>Password:</prompt> | ||||
&prompt.root; <userinput>/bin/kill -s HUP 198</userinput></screen> | &prompt.root; <userinput>/bin/kill -s HUP 198</userinput></screen> | ||||
<para>&man.kill.1; wird, wie andere Kommandos von &unix; Systemen auch, keine Ausgabe | <para>&man.kill.1; wird, wie andere &unix; Kommandos auch, | ||||
erzeugen, wenn das Kommando erfolgreich war. Wenn Sie versuchen, | keine Ausgabe erzeugen, wenn das Kommando erfolgreich war. | ||||
einem Prozess, der nicht Ihnen gehört, ein Signal zu | Wenn Sie versuchen, einem Prozess, der nicht Ihnen gehört, | ||||
senden, dann werden Sie die Meldung | ein Signal zu senden, dann werden Sie die Meldung | ||||
<errorname>kill: <replaceable>PID</replaceable>: Operation not | <errorname>kill: <replaceable>PID</replaceable>: Operation | ||||
permitted</errorname> sehen. Wenn Sie sich bei der Eingabe der | not permitted</errorname> sehen. Ein Tippfehler bei der | ||||
PID vertippen, werden Sie das Signal dem falschen Prozess | Eingabe der PID führt dazu, dass das Signal an einen | ||||
schicken, was schlecht sein kann. Wenn Sie Glück haben, | falschen Prozess gesendet wird, was zu negativen Ergebnissen | ||||
existiert der Prozess nicht und Sie werden mit der Ausgabe | führen kann, oder das Signal wird an eine PID gesendet die | ||||
derzeit nicht in Gebrauch ist, was zu dem Fehler | |||||
<errorname>kill: <replaceable>PID</replaceable>: No such | <errorname>kill: <replaceable>PID</replaceable>: No such | ||||
process</errorname> belohnt.</para> | process</errorname> führt.</para> | ||||
<note> | <note> | ||||
<title>Warum soll ich <command>/bin/kill</command> benutzen?</title> | <title>Warum sollte man <command>/bin/kill</command> | ||||
benutzen?</title> | |||||
<para>Viele Shells stellen <command>kill</command> als internes | <para>Viele Shells stellen <command>kill</command> als internes | ||||
Kommando zur Verfügung, das heißt die Shell sendet | Kommando zur Verfügung, das heißt die Shell sendet | ||||
das Signal direkt, anstatt <filename>/bin/kill</filename> | das Signal direkt, anstatt <filename>/bin/kill</filename> | ||||
zu starten. Das kann nützlich sein, aber die | zu starten. Beachten Sie, dass die unterschiedlichen | ||||
unterschiedlichen Shells benutzen eine verschiedene Syntax, | Shells eine andere Syntax benutzen, um die Namen der | ||||
um die Namen der Signale anzugeben. Anstatt jede Syntax zu | Signale anzugeben. Anstatt jede Syntax zu | ||||
lernen, kann es einfacher sein, <command>/bin/kill | lernen, kann es einfacher sein, <command>/bin/kill | ||||
...</command> direkt aufzurufen.</para> | <replaceable>...</replaceable></command> direkt | ||||
aufzurufen.</para> | |||||
</note> | </note> | ||||
</step> | </step> | ||||
</procedure> | </procedure> | ||||
<para>Andere Signale senden Sie auf die gleiche Weise, ersetzen | <para>Beim Versenden von anderen Signalen, ersetzen | ||||
Sie nur <literal>TERM</literal> oder <literal>KILL</literal> | Sie <literal>TERM</literal> oder <literal>KILL</literal> in der | ||||
entsprechend.</para> | Kommandozeile mit dem entsprechenden Signal.</para> | ||||
<important> | <important> | ||||
<para>Es kann gravierende Auswirkungen haben, wenn Sie zufällig | <para>Das zufällige Beenden eines Prozesses kann gravierende | ||||
Prozesse beenden. Insbesondere &man.init.8; mit der Prozess-ID | Auswirkungen haben. Insbesondere &man.init.8;, mit der PID 1, | ||||
ist ein Spezialfall. Mit <command>/bin/kill -s KILL 1</command> | ist ein Spezialfall. <command>/bin/kill -s KILL 1</command> | ||||
können Sie Ihr System schnell herunterfahren. | ist ein schneller, jedoch nicht empfohlener Weg, das System | ||||
herunterzufahren. | |||||
Überprüfen Sie die Argumente von &man.kill.1; | Überprüfen Sie die Argumente von &man.kill.1; | ||||
<emphasis>immer</emphasis> zweimal <emphasis>bevor</emphasis> | <emphasis>immer</emphasis> zweimal <emphasis>bevor</emphasis> | ||||
Sie <keycap>Return</keycap> drücken.</para> | Sie <keycap>Return</keycap> drücken.</para> | ||||
</important> | </important> | ||||
</sect1> | </sect1> | ||||
<sect1 xml:id="shells"> | <sect1 xml:id="shells"> | ||||
<title>Shells</title> | <title>Shells</title> | ||||
<indexterm><primary>Shells</primary></indexterm> | <indexterm><primary>Shells</primary></indexterm> | ||||
<indexterm><primary>Kommandozeile</primary></indexterm> | <indexterm><primary>Kommandozeile</primary></indexterm> | ||||
<para>Von der tagtäglichen Arbeit mit FreeBSD wird eine Menge | <para>&os; stellt mit der Shell eine Kommandozeilen-Schnittstelle | ||||
mit der Kommandozeilen Schnittstelle der Shell erledigt. Die | zur Verfügung. Eine Shell empfängt Befehle von einem | ||||
Hauptaufgabe einer Shell besteht darin, Kommandos der Eingabe | Eingabekanal und führt diese aus. Viele Shells bieten bieten | ||||
anzunehmen und diese auszuführen. Viele Shells haben | eingebaute Funktionen, die die tägliche Arbeit erleichtern, | ||||
außerdem eingebaute Funktionen, die die tägliche | beispielsweise eine Dateiverwaltung, die Vervollständigung von | ||||
Arbeit erleichtern, beispielsweise eine Dateiverwaltung, | Dateinamen (Globbing), Kommandozeilen-Editor, sowie Makros und | ||||
die Vervollständigung von Dateinamen (Globbing), einen | Umgebungsvariablen. &os; enthält die Shells | ||||
Kommandozeileneditor, sowie Makros und Umgebungsvariablen. FreeBSD | <command>sh</command> (Bourne Shell) und <command>tcsh</command> | ||||
enthält die Shells <command>sh</command> (die Bourne Shell) und | (verbesserte C-Shell) im Basissystem. Weitere Shells, wie | ||||
<command>tcsh</command> (die verbesserte C-Shell) im Basissystem. | <command>zsh</command> oder <command>bash</command>, befinden | ||||
Viele andere Shells, wie <command>zsh</command> oder | sich in der Ports-Sammlung.</para> | ||||
<command>bash</command>, befinden sich in der Ports-Sammlung.</para> | |||||
<para>Welche Shell soll ich benutzen? Das ist wirklich eine | <para>Die verwendete Shell ist letztlich eine Frage des | ||||
Geschmacksfrage. Sind Sie ein C-Programmierer, finden Sie | Geschmacks. Ein C-Programmierer, findet vielleicht eine | ||||
vielleicht eine C-artige Shell wie die <command>tcsh</command> | C-artige Shell wie <command>tcsh</command> angenehmer. Ein | ||||
angenehmer. Kommen Sie von Linux oder ist Ihnen der Umgang mit &unix; Systemen | Linux-Benutzer bevorzugt vielleicht <command>bash</command>. | ||||
neu, so könnten Sie die <command>bash</command> probieren. | Jede Shell hat ihre speziellen Eigenschaften, die mit der | ||||
Der Punkt ist, dass | bevorzugten Arbeitsumgebung des Benutzers harmonieren kann oder | ||||
jede Shell ihre speziellen Eigenschaften hat, die mit Ihrer | nicht. Deshalb stehen mehrere Shells zur Auswahl.</para> | ||||
bevorzugten Arbeitsumgebung harmonieren können oder nicht. | |||||
Sie müssen sich eine Shell aussuchen.</para> | |||||
<para>Ein verbreitetes Merkmal in Shells ist die | <para>Ein verbreitetes Merkmal in Shells ist die | ||||
Dateinamen-Vervollständigung. Sie müssen nur einige | Dateinamen-Vervollständigung. Nachdem der Benutzer einige | ||||
Buchstaben eines Kommandos oder eines Dateinamen eingeben und | Buchstaben eines Kommandos oder eines Dateinamen eingeben hat, | ||||
die Shell vervollständigt den Rest automatisch durch | vervollständigt die Shell den Rest automatisch durch | ||||
drücken der <keycap>Tab</keycap>-Taste. Hier ist ein Beispiel. | drücken der <keycap>Tab</keycap>-Taste. Angenommen, Sie | ||||
Angenommen, Sie | |||||
haben zwei Dateien <filename>foobar</filename> und | haben zwei Dateien <filename>foobar</filename> und | ||||
<filename>foo.bar</filename>. Die Datei | <filename>foo.bar</filename>. Um <filename>foo.bar</filename> | ||||
<filename>foo.bar</filename> möchten Sie löschen. Nun | zu löschen, geben Sie folgendes ein: | ||||
würden Sie an der Tastatur eingeben: | <command>rm fo[Tab].[Tab]</command></para> | ||||
<command>rm fo[Tab]. | |||||
[Tab]</command>.</para> | |||||
<para>Die Shell würde dann <command>rm | <para>Die Shell sollte dann <command>rm | ||||
foo[BEEP].bar</command> ausgeben.</para> | foo[BEEP].bar</command> ausgeben.</para> | ||||
<para>[BEEP] meint den Rechner-Piepser. Diesen gibt die Shell | <para>[BEEP] meint den Rechner-Piepser, den die Shell ausgibt um | ||||
aus, um anzuzeigen, dass es den Dateinamen nicht | anzuzeigen, dass es den Dateinamen nicht vervollständigen | ||||
vervollständigen konnte, da es mehrere Möglichkeiten | konnte, da es mehrere Möglichkeiten gibt. Beide Dateien | ||||
gibt. Beide Dateien <filename>foobar</filename> und | <filename>foobar</filename> und <filename>foo.bar</filename> | ||||
<filename>foo.bar</filename> beginnen mit <literal>fo</literal>, | beginnen mit <literal>fo</literal>. Nach der Eingabe von | ||||
so konnte nur bis <literal>foo</literal> ergänzt werden. | <literal>.</literal> und erneutem drücken der | ||||
Nachdem Sie <literal>.</literal> eingaben und dann die | <keycap>Tab</keycap>-Taste, war die Shell in der Lage den Rest | ||||
<keycap>Tab</keycap>-Taste | auszufüllen.</para> | ||||
drückten, konnte die Shell den Rest für Sie | |||||
ausfüllen.</para> | |||||
<indexterm><primary>Umgebungsvariablen</primary></indexterm> | <indexterm><primary>Umgebungsvariablen</primary></indexterm> | ||||
<para>Ein weiteres Merkmal der Shell ist der Gebrauch von | <para>Ein weiteres Merkmal der Shell ist der Gebrauch von | ||||
Umgebungsvariablen. Dies sind veränderbare Schlüsselpaare | Umgebungsvariablen. Dies sind veränderbare Schlüsselpaare | ||||
im Umgebungsraum der Shell, die jedes von der Shell aufgerufene | im Umgebungsraum der Shell, die jedes von der Shell aufgerufene | ||||
Programm lesen kann. Daher enthält der Umgebungsraum viele | Programm lesen kann. Daher enthält der Umgebungsraum viele | ||||
Konfigurationsdaten für Programme. Die folgende Liste zeigt | Konfigurationsdaten für Programme. Die folgende Liste zeigt | ||||
verbreitete Umgebungsvariablen und was sie bedeuten:</para> | verbreitete Umgebungsvariablen und deren Bedeutung:</para> | ||||
<indexterm><primary>Umgebungsvariablen</primary></indexterm> | <indexterm><primary>Umgebungsvariablen</primary></indexterm> | ||||
<informaltable frame="none" pgwide="1"> | <informaltable frame="none" pgwide="1"> | ||||
<tgroup cols="2"> | <tgroup cols="2"> | ||||
<thead> | <thead> | ||||
<row> | <row> | ||||
<entry>Variable</entry> | <entry>Variable</entry> | ||||
<entry>Beschreibung</entry> | <entry>Beschreibung</entry> | ||||
Show All 9 Lines | <tbody> | ||||
<row> | <row> | ||||
<entry><envar>PATH</envar></entry> | <entry><envar>PATH</envar></entry> | ||||
<entry>Liste mit Verzeichnissen (getrennt durch Doppelpunkt) | <entry>Liste mit Verzeichnissen (getrennt durch Doppelpunkt) | ||||
zum Suchen nach Programmen.</entry> | zum Suchen nach Programmen.</entry> | ||||
</row> | </row> | ||||
<row> | <row> | ||||
<entry><envar>DISPLAY</envar></entry> | <entry><envar>DISPLAY</envar></entry> | ||||
<entry>Der Name des X11-Bildschirms, auf dem | <entry>Der Name des | ||||
<application>Xorg</application>-Bildschirms, auf dem | |||||
Ausgaben erfolgen sollen.</entry> | Ausgaben erfolgen sollen.</entry> | ||||
</row> | </row> | ||||
<row> | <row> | ||||
<entry><envar>SHELL</envar></entry> | <entry><envar>SHELL</envar></entry> | ||||
<entry>Die aktuelle Shell.</entry> | <entry>Die aktuelle Shell.</entry> | ||||
</row> | </row> | ||||
<row> | <row> | ||||
<entry><envar>TERM</envar></entry> | <entry><envar>TERM</envar></entry> | ||||
<entry>Name des Terminaltyps des Benutzers. Benutzt, um die | <entry>Name des Terminaltyps des Benutzers. Benutzt, um die | ||||
Fähigkeiten des Terminals zu bestimmen.</entry> | Fähigkeiten des Terminals zu bestimmen.</entry> | ||||
</row> | </row> | ||||
<row> | <row> | ||||
<entry><envar>TERMCAP</envar></entry> | <entry><envar>TERMCAP</envar></entry> | ||||
<entry>Datenbankeintrag der Terminal Escape Codes, | <entry>Datenbankeintrag der Terminal Escape Codes, | ||||
benötigt um verschieden Terminalfunktionen | benötigt um verschieden Terminalfunktionen | ||||
auszuführen.</entry> | auszuführen.</entry> | ||||
</row> | </row> | ||||
<row> | <row> | ||||
<entry><envar>OSTYPE</envar></entry> | <entry><envar>OSTYPE</envar></entry> | ||||
<entry>Typ des Betriebsystems, beispielsweise FreeBSD.</entry> | <entry>Typ des Betriebssystems.</entry> | ||||
</row> | </row> | ||||
<row> | <row> | ||||
<entry><envar>MACHTYPE</envar></entry> | <entry><envar>MACHTYPE</envar></entry> | ||||
<entry>Die CPU Architektur auf dem das System | <entry>Die CPU-Architektur des Systems.</entry> | ||||
läuft.</entry> | |||||
</row> | </row> | ||||
<row> | <row> | ||||
<entry><envar>EDITOR</envar></entry> | <entry><envar>EDITOR</envar></entry> | ||||
<entry>Vom Benutzer bevorzugter Text-Editor.</entry> | <entry>Vom Benutzer bevorzugter Text-Editor.</entry> | ||||
</row> | </row> | ||||
<row> | <row> | ||||
Show All 9 Lines | &prompt.root; <userinput>/bin/kill -s HUP 198</userinput></screen> | ||||
</tbody> | </tbody> | ||||
</tgroup> | </tgroup> | ||||
</informaltable> | </informaltable> | ||||
<indexterm> | <indexterm> | ||||
<primary>Shells</primary> | <primary>Shells</primary> | ||||
<secondary>Bourne Shell</secondary> | <secondary>Bourne Shell</secondary> | ||||
</indexterm> | </indexterm> | ||||
<para>Das Setzen von Umgebungsvariablen funktioniert | <para>Das Setzen von Umgebungsvariablen unterscheidet sich | ||||
von Shell zu Shell unterschiedlich. Zum Beispiel benutzt man | von Shell zu Shell. In <command>tcsh</command> und | ||||
in C-artigen Shells wie der <command>tcsh</command> dazu | <command>csh</command> wird dazu <command>setenv</command> | ||||
<command>setenv</command>. Unter Bourne-Shells wie <command>sh</command> | benutzt. <command>sh</command> und <command>bash</command> | ||||
oder <command>bash</command> benutzen Sie zum Setzen von | benutzen <command>export</command> um Umgebungsvariablen zu | ||||
Umgebungsvariablen <command>export</command>. Um | setzen. Dieses Beispiel für die <command>tcsh</command>-Shell | ||||
beispielsweise die Variable <envar>EDITOR</envar> mit | setzt die Variable <envar>EDITOR</envar> auf | ||||
<command>csh</command> oder <command>tcsh</command> auf | <filename>/usr/local/bin/emacs</filename>:</para> | ||||
<filename>/usr/local/bin/emacs</filename> zu setzen, setzen Sie das | |||||
folgende Kommando ab:</para> | |||||
<screen>&prompt.user; <userinput>setenv EDITOR /usr/local/bin/emacs</userinput></screen> | <screen>&prompt.user; <userinput>setenv EDITOR /usr/local/bin/emacs</userinput></screen> | ||||
<para>Unter Bourne-Shells:</para> | <para>Der entsprechende Befehl für <command>bash</command> | ||||
wäre:</para> | |||||
<screen>&prompt.user; <userinput>export EDITOR="/usr/local/bin/emacs"</userinput></screen> | <screen>&prompt.user; <userinput>export EDITOR="/usr/local/bin/emacs"</userinput></screen> | ||||
<para>Sie können die meisten Shells Umgebungsvariablen | <para>Um eine Umgebungsvariable zu expandieren, geben Sie in der | ||||
expandieren lassen, in dem Sie in der Kommandozeile ein | Kommandozeile das Zeichen <literal>$</literal> vor dessen Namen | ||||
<literal>$</literal> davor eingeben. Zum Beispiel gibt | ein. Zum Beispiel gibt <command>echo $TERM</command> den | ||||
<command>echo $TERM</command> aus, worauf <envar>$TERM</envar> | aktuellen Wert von<envar>$TERM</envar> aus.</para> | ||||
gesetzt ist, weil die Shell <envar>$TERM</envar> expandiert | |||||
und das Ergebnis an <command>echo</command> gibt.</para> | |||||
<para>Shells behandeln viele Spezialzeichen, so genannte | <para>Shells behandeln Spezialzeichen, so genannte | ||||
Metazeichen, als besondere Darstellungen für Daten. | Metazeichen, als besondere Darstellungen für Daten. | ||||
Das allgemeinste ist das Zeichen <literal>*</literal>, das eine | Das häufigste Zeichen ist <literal>*</literal>, das eine | ||||
beliebige Anzahl Zeichen in einem Dateinamen repräsentiert. | beliebige Anzahl Zeichen in einem Dateinamen repräsentiert. | ||||
Diese Metazeichen können zum Vervollständigen von | Metazeichen können zur Vervollständigung von | ||||
Dateinamen (Globbing) benutzt werden. Beispielsweise liefert | Dateinamen (Globbing) benutzt werden. Beispielsweise liefert | ||||
das Kommando <command>echo *</command> nahezu das gleiche | <command>echo *</command> nahezu das gleiche wie | ||||
wie die Eingabe von <command>ls</command>, da die Shell alle | <command>ls</command>, da die Shell alle | ||||
Dateinamen die mit <literal>*</literal> übereinstimmen, an | Dateinamen die mit <literal>*</literal> übereinstimmen, an | ||||
<command>echo</command> weitergibt.</para> | <command>echo</command> weitergibt.</para> | ||||
<para>Um zu verhindern, dass die Shell diese Sonderzeichen | <para>Um zu verhindern, dass die Shell ein Sonderzeichen | ||||
interpretiert, kann man sie schützen, indem man ihnen einen | interpretiert, schützt man es, indem man einen | ||||
Backslash (<literal>\</literal>) voranstellt. <command>echo | Backslash (<literal>\</literal>) voranstellt. Zum Beispiel | ||||
$TERM</command> gibt aus, auf was auch immer Ihr Terminal | zeigt <command>echo $TERM</command> die Einstellung des | ||||
gesetzt ist. <command>echo \$TERM</command> gibt | Terminals an, wohingegen <command>echo \$TERM</command> einfach | ||||
<envar>$TERM</envar> genauso aus, wie es hier steht.</para> | die Zeichenfolge <literal>$TERM</literal> ausgibt.</para> | ||||
<sect2 xml:id="changing-shells"> | <sect2 xml:id="changing-shells"> | ||||
<title>Ändern der Shell</title> | <title>Ändern der Shell</title> | ||||
<para>Der einfachste Weg Ihre Shell zu ändern, ist das | <para>Der einfachste Weg die Standard Shell zu ändern, ist | ||||
Kommando <command>chsh</command> zu benutzen. | <command>chsh</command> zu benutzen. | ||||
<command>chsh</command> platziert Sie im Editor, welcher durch | <command>chsh</command> startet den Editor, welcher durch | ||||
Ihre Umgebungsvariable <envar>EDITOR</envar> gesetzt ist, | die Umgebungsvariable <envar>EDITOR</envar> gesetzt ist. | ||||
im <command>vi</command> wenn die Variable nicht gesetzt ist. | Standardmäßig ist dies <command>vi</command>. | ||||
Ändern Sie die Zeile mit <quote>Shell:</quote> | Tragen Sie in die Zeile die mit <quote>Shell:</quote> beginnt, | ||||
entsprechend Ihren Wünschen.</para> | den absoluten Pfad der neuen Shell ein.</para> | ||||
<para>Sie können auch <command>chsh</command> mit der Option | <para>Alternativ setzt <command>chsh -s</command> die Shell, | ||||
<option>-s</option> aufrufen, dann wird Ihre Shell gesetzt, | ohne dabei einen Editor aufzurufen. Um die Shell | ||||
ohne dass Sie in einen Editor gelangen. Um Ihre Shell | zum Beispiel auf <command>bash</command> zu ändern, geben Sie | ||||
zum Beispiel auf die <command>bash</command> zu ändern, | folgenden Befehl ein:</para> | ||||
geben Sie das folgende Kommando ein:</para> | |||||
<screen>&prompt.user; <userinput>chsh -s /usr/local/bin/bash</userinput></screen> | <screen>&prompt.user; <userinput>chsh -s /usr/local/bin/bash</userinput></screen> | ||||
<note> | <note> | ||||
<para>Die von Ihnen gewünschte Shell | <para>Die neue Shell <emphasis>muss</emphasis> in | ||||
<emphasis>muss</emphasis> in <filename>/etc/shells</filename> | <filename>/etc/shells</filename> aufgeführt sein. Wurde die | ||||
aufgeführt sein. Haben Sie eine Shell aus der | Shell aus der <link linkend="ports">Ports-Sammlung</link> | ||||
<link linkend="ports">Ports-Sammlung</link> installiert, | installiert, sollte sie automatisch zu dieser Datei | ||||
sollte das schon automatisch erledigt werden. Installierten | hinzugefügt worden sein. Wenn der Eintrag fehlt, nutzen Sie | ||||
Sie die Shell von Hand, so müssen Sie sie dort | folgenden Befehl, und ersetzen Sie den Pfad mit dem Pfad zur | ||||
eintragen.</para> | gewünschten Shell:</para> | ||||
<para>Haben Sie beispielsweise die <command>bash</command> nach | |||||
<filename>/usr/local/bin</filename> installiert, geben Sie | |||||
Folgendes ein:</para> | |||||
<screen>&prompt.root; <userinput>echo "/usr/local/bin/bash" >> /etc/shells</userinput></screen> | <screen>&prompt.root; <userinput>echo "/usr/local/bin/bash" >> /etc/shells</userinput></screen> | ||||
<para>Danach können Sie <command>chsh</command> aufrufen.</para> | <para>Danach können Sie <command>chsh</command> aufrufen.</para> | ||||
</note> | </note> | ||||
</sect2> | </sect2> | ||||
</sect1> | </sect1> | ||||
<sect1 xml:id="editors"> | <sect1 xml:id="editors"> | ||||
<title>Text-Editoren</title> | <title>Text-Editoren</title> | ||||
<indexterm><primary>Text Editoren</primary></indexterm> | <indexterm><primary>Text Editoren</primary></indexterm> | ||||
<indexterm><primary>Editoren</primary></indexterm> | <indexterm><primary>Editoren</primary></indexterm> | ||||
<para>Eine großer Teil der Konfiguration wird bei FreeBSD durch | <para>Die meiste Konfiguration unter &os; wird durch | ||||
das Editieren von Textdateien erledigt. Deshalb ist es eine | das Editieren von Textdateien erledigt. Deshalb ist es eine | ||||
gute Idee, mit einem Texteditor vertraut zu werden. FreeBSD hat | gute Idee, mit einem Texteditor vertraut zu werden. &os; hat | ||||
ein paar davon im Basissystem und sehr viel mehr in der | ein paar davon im Basissystem und sehr viel mehr in der | ||||
Ports-Sammlung.</para> | Ports-Sammlung.</para> | ||||
<indexterm> | <indexterm> | ||||
<primary><command>ee</command></primary> | <primary><command>ee</command></primary> | ||||
</indexterm> | </indexterm> | ||||
<indexterm> | <indexterm> | ||||
<primary>Text Editoren</primary> | <primary>Text Editoren</primary> | ||||
<secondary><command>ee</command></secondary> | <secondary><command>ee</command></secondary> | ||||
</indexterm> | </indexterm> | ||||
<para>Der am leichtesten und einfachsten zu erlernende Editor nennt | <para>Ein einfach zu erlernender Editor ist | ||||
sich <application>ee</application>, was für | <application>ee</application>, was für | ||||
<foreignphrase>easy editor</foreignphrase> steht. | <foreignphrase>easy editor</foreignphrase> steht. | ||||
Um <application>ee</application> zu starten, gibt man in der | Um diesen Editor zu starten, gibt man in der | ||||
Kommandozeile <command>ee filename</command> ein, wobei | Kommandozeile <command>ee filename</command> ein, wobei | ||||
<replaceable>filename</replaceable> den Namen der zu editierenden | <replaceable>filename</replaceable> den Namen der zu editierenden | ||||
Datei darstellt. Um zum Beispiel <filename>/etc/rc.conf</filename> | Datei darstellt. Einmal im Editor, finden sich alle Editor-Funktionen oben im | ||||
zu editieren, tippen Sie <command>ee /etc/rc.conf</command> ein. | |||||
Einmal im Editor, finden Sie alle Editor-Funktionen oben im | |||||
Display aufgelistet. Das Einschaltungszeichen | Display aufgelistet. Das Einschaltungszeichen | ||||
<literal>^</literal> steht für die <keycap>Ctrl</keycap> (oder | <literal>^</literal> steht für die <keycap>Ctrl</keycap> (oder | ||||
<keycap>Strg</keycap>) Taste, mit <literal>^e</literal> ist also die | <keycap>Strg</keycap>) Taste, mit <literal>^e</literal> ist also die | ||||
Tastenkombination <keycombo action="simul"><keycap>Ctrl</keycap><keycap>e</keycap></keycombo> | Tastenkombination <keycombo action="simul"><keycap>Ctrl</keycap><keycap>e</keycap></keycombo> | ||||
gemeint. Um <application>ee</application> zu verlassen, drücken | gemeint. Um <application>ee</application> zu verlassen, drücken | ||||
Sie <keycap>Esc</keycap> und wählen dann <option>leave | Sie <keycap>Esc</keycap> und wählen dann im Hauptmenü <option>leave | ||||
editor</option> aus. Der Editor fragt nach, ob Sie speichern | editor</option> aus. Der Editor fragt nach, ob Sie speichern | ||||
möchten, wenn die Datei verändert wurde.</para> | möchten, wenn die Datei verändert wurde.</para> | ||||
<indexterm> | <indexterm> | ||||
<primary><command>vi</command></primary> | <primary><command>vi</command></primary> | ||||
</indexterm> | </indexterm> | ||||
<indexterm> | <indexterm> | ||||
<primary>Text Editoren</primary> | <primary>Text Editoren</primary> | ||||
<secondary><command>vi</command></secondary> | <secondary><command>vi</command></secondary> | ||||
</indexterm> | </indexterm> | ||||
<indexterm> | <indexterm> | ||||
<primary><command>emacs</command></primary> | <primary><command>emacs</command></primary> | ||||
</indexterm> | </indexterm> | ||||
<indexterm> | <indexterm> | ||||
<primary>Text Editoren</primary> | <primary>Text Editoren</primary> | ||||
<secondary><command>emacs</command></secondary> | <secondary><command>emacs</command></secondary> | ||||
</indexterm> | </indexterm> | ||||
<para>FreeBSD verfügt über leistungsfähigere | <para>&os; verfügt über leistungsfähigere | ||||
Editoren wie <application>vi</application> als Teil des | Editoren wie <application>vi</application> als Teil des | ||||
Basissystems, andere Editoren wie <application>emacs</application> | Basissystems. Andere Editoren wie <application>emacs</application> | ||||
oder <application>vim</application> sind Teil der Ports-Sammlung. | und <application>vim</application> sind Teil der Ports-Sammlung. | ||||
Diese Editoren bieten höhere Funktionalität und | Diese Editoren bieten höhere Funktionalität, jedoch auf Kosten einer etwas | ||||
Leistungsfähigkeit, jedoch auf Kosten einer etwas | schwierigeren Erlernbarkeit. Das Erlernen eines | ||||
schwierigeren Erlernbarkeit. Wenn Sie viele Textdateien | leistungsfähigeren Editors, wie <application>vim</application> | ||||
editieren, sparen Sie auf lange Sicht mehr Zeit durch das Erlernen | oder <application>Emacs</application>, kann auf lange Sicht Zeit | ||||
von Editoren wie <application>vim</application> oder | einsparen.</para> | ||||
<application>emacs</application> ein.</para> | |||||
<para>Viele Anwendungen, die Dateien verändern oder Texteingabe | <para>Viele Anwendungen, die Dateien verändern oder Texteingabe | ||||
erwarten, werden automatisch einen Texteditor öffnen. Um den | erwarten, werden automatisch einen Texteditor öffnen. Um den | ||||
Standardeditor zu ändern, setzen Sie die Umgebungsvariable | Standardeditor zu ändern, wird die Umgebungsvariable | ||||
<envar>EDITOR</envar>. Um mehr darüber zu erfahren, lesen Sie den | <envar>EDITOR</envar> gesetzt, wie im Abschnitt | ||||
Abschnitt <link linkend="shells">Shells</link>.</para> | <link linkend="shells">Shells</link> beschrieben.</para> | ||||
</sect1> | </sect1> | ||||
<sect1 xml:id="basics-devices"> | <sect1 xml:id="basics-devices"> | ||||
<title>Geräte und Gerätedateien</title> | <title>Geräte und Gerätedateien</title> | ||||
<para>Der Begriff Gerät wird meist in Verbindung mit Hardware | <para>Der Begriff Gerät wird meist in Verbindung mit Hardware | ||||
wie Laufwerken, Druckern, Grafikkarten oder Tastaturen gebraucht. | wie Laufwerken, Druckern, Grafikkarten oder Tastaturen gebraucht. | ||||
Der Großteil der Meldungen, die beim Booten von FreeBSD angezeigt | Der Großteil der Meldungen, die beim Booten von &os; angezeigt | ||||
werden, beziehen sich auf gefundene Geräte. Sie können sich | werden, beziehen sich auf gefundene Geräte. Eine Kopie dieser | ||||
die Bootmeldungen später in <filename>/var/run/dmesg.boot</filename> | Bootmeldungen wird in <filename>/var/run/dmesg.boot</filename> | ||||
ansehen.</para> | gespeichert.</para> | ||||
<para>Gerätenamen, die Sie wahrscheinlich in den Bootmeldungen sehen | <para>Jedes Gerät verfügt über einen Gerätenamen und Gerätenummer. | ||||
werden, sind zum Beispiel <filename>acd0</filename>, das erste | Zum Beispiel steht <filename>acd0</filename> für das erste | ||||
IDE CD-ROM oder <filename>kbd0</filename>, die Tastatur.</para> | IDE CD-ROM Laufwerk, während <filename>kbd0</filename> die | ||||
Tastatur repräsentiert.</para> | |||||
<para>Auf die meisten Geräte wird unter &unix; Systemen über spezielle | <para>Auf die meisten Geräte wird unter &os; über spezielle | ||||
Gerätedateien im <filename>/dev</filename> Verzeichnis | Gerätedateien im <filename>/dev</filename> Verzeichnis | ||||
zugegriffen.</para> | zugegriffen.</para> | ||||
<sect2> | <sect2> | ||||
<title>Anlegen von Gerätedateien</title> | <title>Anlegen von Gerätedateien</title> | ||||
<para>Wenn sie ein neues Gerät zu Ihrem System hinzufügen, | <para>Wenn sie ein neues Gerät zu Ihrem System hinzufügen, | ||||
oder die Unterstützung für zusätzliche Geräte | oder die Unterstützung für zusätzliche Geräte | ||||
kompilieren, müssen ein oder mehrere Gerätedateien | kompilieren, müssen ein oder mehrere Gerätedateien | ||||
erstellt werden.</para> | erstellt werden.</para> | ||||
<sect3> | <sect3> | ||||
<title><literal>DEVFS</literal> (Gerätedateisystem)</title> | <title><literal>DEVFS</literal> (Gerätedateisystem)</title> | ||||
<para>Das Gerätedateisystem <literal>DEVFS</literal> | <para>Das Gerätedateisystem <literal>DEVFS</literal> | ||||
ermöglicht durch den | ermöglicht durch den | ||||
Namensraum des Dateisystems Zugriff auf den Namensraum der | Namensraum des Dateisystems Zugriff auf den Namensraum der | ||||
Geräte im Kernel. Damit müssen Gerätedateien | Geräte im Kernel. Damit müssen Gerätedateien | ||||
nicht mehr extra angelegt werden, sondern werden von | nicht mehr extra angelegt werden, sondern werden von | ||||
<literal>DEVFS</literal> verwaltet.</para> | <literal>DEVFS</literal> automatisch verwaltet. Weitere | ||||
Informationen finden Sie in &man.devfs.5;.</para> | |||||
<para>Weitere Informationen finden Sie in &man.devfs.5;.</para> | |||||
</sect3> | </sect3> | ||||
</sect2> | </sect2> | ||||
</sect1> | </sect1> | ||||
<sect1 xml:id="binary-formats"> | <sect1 xml:id="binary-formats"> | ||||
<title>Binärformate</title> | <title>Binärformate</title> | ||||
<para>Um zu verstehen, warum &os; das Format | <para>Um zu verstehen, warum &os; das Format | ||||
&man.elf.5; benutzt, müssen Sie | &man.elf.5; benutzt, müssen zunächst die drei gegenwärtig | ||||
zunächst etwas über die drei gegenwärtig | |||||
<quote>dominanten</quote> ausführbaren Formate | <quote>dominanten</quote> ausführbaren Formate | ||||
für &unix; Systeme wissen:</para> | für &unix; beschrieben werden:</para> | ||||
<itemizedlist> | <itemizedlist> | ||||
<listitem> | <listitem> | ||||
<para>&man.a.out.5;</para> | <para>&man.a.out.5;</para> | ||||
<para>Das älteste und <quote>klassische</quote> | <para>Das älteste und <quote>klassische</quote> | ||||
Objektformat von &unix; Systemen. Es benutzt einen kurzen, | Objektformat von &unix; Systemen. Es benutzt einen kurzen, | ||||
kompakten Header mit einer magischen Nummer am Anfang, die oft | kompakten Header mit einer | ||||
benutzt wird, um das Format zu charakterisieren | <foreignphrase>&man.magic.5; number</foreignphrase> am | ||||
(weitere Details finden Sie unter &man.a.out.5;). Es | Anfang, die oft benutzt wird, um das Format zu | ||||
enthält drei geladene Segmente: .text, .data und | charakterisieren. Es enthält drei geladene Segmente: .text, | ||||
.bss, sowie eine Symboltabelle und eine | .data und .bss, sowie eine Symboltabelle und eine | ||||
Stringtabelle.</para> | Stringtabelle.</para> | ||||
</listitem> | </listitem> | ||||
<listitem> | <listitem> | ||||
<para><acronym>COFF</acronym></para> | <para><acronym>COFF</acronym></para> | ||||
<para>Das Objektformat von SVR3. Der Header | <para>Das Objektformat von SVR3. Der Header | ||||
enthält nun eine <quote>Sectiontable</quote>. Man kann | enthält eine <quote>Sectiontable</quote>, die mehr enthalten | ||||
also mit mehr als nur den Sections .text, .data und .bss | kann als nur .text, .data und .bss Sektionen..</para> | ||||
arbeiten.</para> | |||||
</listitem> | </listitem> | ||||
<listitem> | <listitem> | ||||
<para>&man.elf.5;</para> | <para>&man.elf.5;</para> | ||||
<para>Der Nachfolger von <acronym>COFF</acronym>. | <para>Der Nachfolger von <acronym>COFF</acronym>. | ||||
Kennzeichnend sind mehrere Sections und mögliche | Kennzeichnend sind mehrere Sections und mögliche | ||||
32-Bit- oder 64-Bit-Werte. Ein wesentlicher Nachteil: | 32-Bit- oder 64-Bit-Werte. Ein wesentlicher Nachteil ist, | ||||
<acronym>ELF</acronym> wurde auch unter der Annahme | dass <acronym>ELF</acronym> unter der Annahme entworfen | ||||
entworfen, dass es nur eine ABI (Application | wurde, dass es nur eine ABI (Application Binary Interface) | ||||
Binary Interface) pro Systemarchitektur geben wird. | pro Systemarchitektur geben wird. Tatsächlich ist diese | ||||
Tatsächlich ist diese Annahme falsch – nicht | Annahme falsch, denn nicht einmal für die kommerzielle | ||||
einmal für die kommerzielle SYSV-Welt (in der es | SYSV-Welt (in der es mindestens drei ABIs gibt: SVR4, | ||||
mindestens drei ABIs gibt: SVR4, Solaris, SCO) trifft | Solaris, SCO) trifft sie zu.</para> | ||||
sie zu.</para> | |||||
<para>FreeBSD versucht, dieses Problem zu umgehen, indem | <para>&os; versucht dieses Problem zu umgehen, indem | ||||
ein Werkzeug bereitgestellt wird, um ausführbare | ein Werkzeug bereitgestellt wird, um ausführbare | ||||
Dateien im <acronym>ELF</acronym>-Format mit | Dateien im <acronym>ELF</acronym>-Format mit | ||||
Informationen über die ABI zu versehen, zu der | Informationen über die ABI zu versehen, zu der | ||||
sie passen. Weitere Informationen finden Sie in der | sie passen. Weitere Informationen finden Sie in | ||||
Manualpage &man.brandelf.1;.</para> | &man.brandelf.1;.</para> | ||||
</listitem> | </listitem> | ||||
</itemizedlist> | </itemizedlist> | ||||
<para>FreeBSD kommt aus dem <quote>klassischen</quote> Lager | <para>&os; kommt aus dem <quote>klassischen</quote> Lager | ||||
und verwendete traditionell das Format &man.a.out.5;, eine | und verwendete traditionell das Format &man.a.out.5;, eine | ||||
Technik, die bereits über viele BSD-Releases | Technik, die bereits über viele BSD-Releases | ||||
hinweg eingesetzt und geprüft worden ist. Obwohl es | hinweg eingesetzt und geprüft worden ist. Obwohl es | ||||
bereits seit einiger Zeit möglich war, auf einem | bereits seit einiger Zeit möglich war, auf einem | ||||
FreeBSD-System auch Binaries (und Kernel) im | &os;-System auch Binaries (und Kernel) im | ||||
<acronym>ELF</acronym>-Format zu erstellen und | <acronym>ELF</acronym>-Format zu erstellen und | ||||
auszuführen, widersetzte FreeBSD sich anfangs dem | auszuführen, widersetzte &os; sich anfangs dem | ||||
<quote>Druck</quote>, auf <acronym>ELF</acronym> als | <quote>Druck</quote>, auf <acronym>ELF</acronym> als | ||||
Standardformat umzusteigen. Warum? Nun, als das | Standardformat umzusteigen. Warum? Nun, als | ||||
Linux-Lager die schmerzhafte Umstellung auf | Linux die schmerzhafte Umstellung auf | ||||
<acronym>ELF</acronym> durchführte, ging es nicht so | <acronym>ELF</acronym> durchführte, weil der | ||||
sehr darum, dem ausführbaren Format | unflexible, auf Sprungtabellen basierte Mechanismus | ||||
<filename>a.out</filename> zu entkommen, als dem | |||||
unflexiblen, auf Sprungtabellen basierten Mechanismus | |||||
für <quote>Shared-Libraries</quote> der die Konstruktion von | für <quote>Shared-Libraries</quote> der die Konstruktion von | ||||
Shared-Libraries für Hersteller und Entwickler | Shared-Libraries für Hersteller und Entwickler kompliziert | ||||
gleichermaßen sehr kompliziert machte. Da die | machte. Da die verfügbaren <acronym>ELF</acronym>-Werkzeuge | ||||
verfügbaren <acronym>ELF</acronym>-Werkzeuge eine | eine Lösung für das Problem mit den Shared-Libraries | ||||
Lösung für das Problem mit den Shared-Libraries | anboten und generell als <quote>ein Schritt | ||||
anboten und ohnehin generell als <quote>ein Schritt | |||||
vorwärts</quote> angesehen wurden, wurde der Aufwand | vorwärts</quote> angesehen wurden, wurde der Aufwand | ||||
für die Umstellung als notwendig akzeptiert und die | für die Umstellung als notwendig akzeptiert und die | ||||
Umstellung wurde durchgeführt. Unter FreeBSD ist der | Umstellung wurde durchgeführt. Unter &os; ist der | ||||
Mechanismus von Shared-Libraries enger an den Stil des | Mechanismus von Shared-Libraries enger an den Stil des | ||||
Shared-Library-Mechanismus von Suns &sunos; | Shared-Library-Mechanismus von &sunos; | ||||
angelehnt und von daher sehr einfach zu verwenden.</para> | angelehnt und einfacher zu verwenden.</para> | ||||
<para>Ja, aber warum gibt es so viele unterschiedliche Formate?</para> | <para>Ja, aber warum gibt es so viele unterschiedliche Formate? | ||||
Damals zu Zeiten der PDP-11, als simple Hardware ein einfaches, | |||||
kleines System unterstützte, war <filename>a.out</filename> | |||||
absolut passend für die Aufgabe, Binaries darzustellen. Als | |||||
&unix; portiert wurde, wurde auch das | |||||
<filename>a.out</filename>-Format beibehalten, weil es für die | |||||
frühen Portierungen auf Architekturen wie den Motorola 68k oder | |||||
die VAX ausreichte.</para> | |||||
<para>In alter, grauer Vorzeit gab es simple Hardware. | |||||
Diese simple Hardware unterstützte ein einfaches, | |||||
kleines System. <filename>a.out</filename> war absolut passend | |||||
für die Aufgabe, Binaries auf diesem simplen System (eine PDP-11) | |||||
darzustellen. Als &unix; von diesem simplen System portiert | |||||
wurde, wurde auch das <filename>a.out</filename>-Format beibehalten, | |||||
weil es für die frühen Portierungen auf Architekturen | |||||
wie den Motorola 68000 und VAX ausreichte.</para> | |||||
<para>Dann dachte sich ein schlauer Hardware-Ingenieur, | <para>Dann dachte sich ein schlauer Hardware-Ingenieur, | ||||
dass, wenn er Software zwingen könnte, einige | dass, wenn er Software zwingen könnte, einige | ||||
Tricks anzustellen, es ihm möglich wäre, ein | Tricks anzustellen, es ihm möglich wäre, ein | ||||
paar Gatter im Design zu sparen, und seinen CPU-Kern | paar Gatter im Design zu sparen, und die CPU | ||||
schneller zu machen. Obgleich es dazu gebracht wurde, mit | schneller zu machen. <filename>a.out</filename> war für diese | ||||
dieser neuen Art von Hardware (heute als <acronym>RISC</acronym> | neue Art von Hardware, bekannt als <acronym>RISC</acronym>, | ||||
bekannt) zu arbeiten, war <filename>a.out</filename> für | schlecht geeignet. Viele neue Formate wurden entwickelt, um | ||||
diese Hardware schlecht geeignet. Deshalb wurden viele neue | eine bessere Leistung auf dieser Hardware zu erreichen, als mit | ||||
Formate entwickelt, um eine bessere Leistung auf dieser | dem begrenzten, simplen <filename>a.out</filename>-Format. | ||||
Hardware zu erreichen, als mit dem begrenzten, simplen | |||||
<filename>a.out</filename>-Format. Dinge wie | |||||
<acronym>COFF</acronym>, <acronym>ECOFF</acronym> und | <acronym>COFF</acronym>, <acronym>ECOFF</acronym> und | ||||
einige andere obskure wurden erdacht und ihre Grenzen | einige andere wurden erdacht und ihre Grenzen | ||||
untersucht, bevor die Dinge sich in Richtung | untersucht, bevor man sich auf <acronym>ELF</acronym> | ||||
<acronym>ELF</acronym> entwickelten.</para> | festgelegt hat.</para> | ||||
<para>Hinzu kam, dass die Größe von | <para>Hinzu kam, dass die Größe von | ||||
Programmen gewaltig wurde und Festplatten sowie | Programmen gewaltig wurde und Festplatten sowie | ||||
physikalischer Speicher immer noch relativ klein waren. | physikalischer Speicher immer noch relativ klein waren. | ||||
Also wurde das Konzept von Shared-Libraries geboren. Das | Also wurde das Konzept von Shared-Libraries geboren. Die | ||||
VM-System wurde auch immer fortgeschrittener. Obwohl bei | virtuelle Speicherverwaltung wurde auch immer fortgeschrittener. | ||||
jedem dieser Fortschritte das | Obwohl bei jedem dieser Fortschritte das | ||||
<filename>a.out</filename>-Format benutzt worden ist, | <filename>a.out</filename>-Format benutzt worden ist, | ||||
wurde sein Nutzen mit jedem neuen Merkmal mehr und mehr | wurde sein Nutzen mit jedem neuen Merkmal mehr gedehnt. | ||||
gedehnt. Zusätzlich wollte man Dinge dynamisch zur | Zusätzlich wollte man Dinge dynamisch zur | ||||
Ausführungszeit laden, oder Teile ihres Programms | Ausführungszeit laden, oder Teile eines Programms | ||||
nach der Initialisierung wegwerfen, um Hauptspeicher | nach der Initialisierung wegwerfen, um Hauptspeicher | ||||
oder Swap-Speicher zu sparen. Programmiersprachen | oder Swap-Speicher zu sparen. Programmiersprachen | ||||
wurden immer fortschrittlicher und man wollte, dass | wurden immer fortschrittlicher und man wollte, dass | ||||
Code automatisch vor der main-Funktion aufgerufen wird. | Code automatisch vor der main-Funktion aufgerufen wird. | ||||
Das <filename>a.out</filename>-Format wurde oft | Das <filename>a.out</filename>-Format wurde oft | ||||
überarbeitet, um alle diese Dinge zu ermöglichen | überarbeitet, um alle diese Dinge zu ermöglichen | ||||
und sie funktionierten auch für einige Zeit. | und sie funktionierten auch für einige Zeit. | ||||
<filename>a.out</filename> konnte diese Probleme nicht | <filename>a.out</filename> konnte diese Probleme nicht | ||||
ohne ein ständiges Ansteigen eines Overheads im Code | ohne ein ständiges Ansteigen eines Overheads im Code | ||||
und in der Komplexität handhaben. Obwohl | und in der Komplexität handhaben. Obwohl | ||||
<acronym>ELF</acronym> viele dieser Probleme löste, | <acronym>ELF</acronym> viele dieser Probleme löste, | ||||
wäre es sehr aufwändig, ein System umzustellen, das | wäre es sehr aufwändig, ein System umzustellen, das | ||||
im Grunde genommen funktionierte. Also musste | im Grunde genommen funktionierte. Also musste | ||||
<acronym>ELF</acronym> warten, bis es aufwändiger war, bei | <acronym>ELF</acronym> warten, bis es aufwändiger war, bei | ||||
<filename>a.out</filename> zu bleiben, als zu | <filename>a.out</filename> zu bleiben, als zu | ||||
<acronym>ELF</acronym> überzugehen.</para> | <acronym>ELF</acronym> überzugehen.</para> | ||||
<para>Im Laufe der Zeit haben sich die Erstellungswerkzeuge, | <para>Im Laufe der Zeit haben sich die Erstellungswerkzeuge, | ||||
von denen FreeBSD seine Erstellungswerkzeuge abgeleitet | von denen &os; seine Erstellungswerkzeuge abgeleitet | ||||
hat (speziell der Assembler und der Loader), in zwei | hat, speziell der Assembler und der Loader, in zwei | ||||
parallele Zweige entwickelt. Im FreeBSD-Zweig wurden | parallele Zweige entwickelt. Im &os;-Zweig wurden | ||||
Shared-Libraries hinzugefügt und einige Fehler | Shared-Libraries hinzugefügt und einige Fehler | ||||
behoben. Das GNU-Team, das diese Programme | behoben. Das GNU-Team, das diese Programme | ||||
ursprünglich geschrieben hat, hat sie umgeschrieben | ursprünglich geschrieben hat, hat sie umgeschrieben | ||||
und eine simplere Unterstützung zur Erstellung von | und eine simplere Unterstützung zur Erstellung von | ||||
Cross-Compilern durch beliebiges Einschalten verschiedener | Cross-Compilern durch beliebiges Einschalten verschiedener | ||||
Formate usw. hinzugefügt. Viele Leute wollten | Formate hinzugefügt. Viele Leute wollten | ||||
Cross-Compiler für FreeBSD erstellen, aber sie hatten | Cross-Compiler für &os; erstellen, aber sie hatten | ||||
kein Glück, denn FreeBSD's ältere Sourcen | kein Glück, denn &os;'s ältere Sourcen | ||||
für <application>as</application> und <application>ld</application> | für <application>as</application> und <application>ld</application> | ||||
waren hierzu nicht geeignet. Die neuen | waren hierzu nicht geeignet. Die neuen | ||||
GNU-Werkzeuge (<application>binutils</application>) unterstützen | GNU-Werkzeuge (<application>binutils</application>) unterstützen | ||||
Cross-Compilierung, <acronym>ELF</acronym>, Shared-Libraries, | Cross-Compilierung, <acronym>ELF</acronym>, Shared-Libraries und | ||||
C++-Erweiterungen und mehr. Weiterhin geben viele | C++-Erweiterungen. Weiterhin geben viele | ||||
Hersteller <acronym>ELF</acronym>-Binaries heraus und es | Hersteller <acronym>ELF</acronym>-Binaries heraus und &os; | ||||
ist gut, wenn FreeBSD sie ausführen kann.</para> | sollte in der Lage sein, diese ausführen.</para> | ||||
<para><acronym>ELF</acronym> ist ausdrucksfähiger als | <para><acronym>ELF</acronym> ist ausdrucksfähiger als | ||||
<filename>a.out</filename> und gestattet eine bessere Erweiterbarkeit | <filename>a.out</filename> und gestattet eine bessere Erweiterbarkeit | ||||
des Basissystems. Die <acronym>ELF</acronym>-Werkzeuge werden | des Basissystems. Die <acronym>ELF</acronym>-Werkzeuge werden | ||||
besser gewartet und bieten Unterstützung von | besser gewartet und bieten Unterstützung für Cross-Compilierung. | ||||
Cross-Compilierung, was für viele Leute wichtig ist. | |||||
<acronym>ELF</acronym> mag etwas langsamer sein, als | <acronym>ELF</acronym> mag etwas langsamer sein, als | ||||
<filename>a.out</filename>, aber zu versuchen, das zu messen, | <filename>a.out</filename>, aber zu versuchen, das zu messen, | ||||
könnte schwierig werden. Es gibt unzählige Details, in | könnte schwierig werden. Es gibt unzählige Details, in | ||||
denen sich die beiden Formate unterscheiden, wie sie Pages | denen sich die beiden Formate unterscheiden, wie sie Pages | ||||
abbilden, Initialisierungscode handhaben usw. Keins davon | abbilden, oder Initialisierungscode handhaben. Irgendwann | ||||
ist sehr wichtig, aber es sind Unterschiede. Irgendwann | |||||
wird die Unterstützung für Programme im | wird die Unterstützung für Programme im | ||||
<filename>a.out</filename>-Format aus dem | <filename>a.out</filename>-Format aus dem | ||||
<filename>GENERIC</filename>-Kernel entfernt werden. | <filename>GENERIC</filename>-Kernel entfernt werden. | ||||
Wenn es dann keinen oder kaum noch | Wenn es dann keinen oder kaum noch | ||||
Bedarf für die Unterstützung dieses Formates | Bedarf für die Unterstützung dieses Formates | ||||
gibt, werden die entsprechenden Routinen ganz entfernt | gibt, werden die entsprechenden Routinen ganz entfernt | ||||
werden.</para> | werden.</para> | ||||
</sect1> | </sect1> | ||||
<sect1 xml:id="basics-more-information"> | <sect1 xml:id="basics-more-information"> | ||||
<title>Weitere Informationen</title> | <title>Weitere Informationen</title> | ||||
<sect2 xml:id="basics-man"> | <sect2 xml:id="basics-man"> | ||||
<title>Manualpages</title> | <title>Manualpages</title> | ||||
<indexterm><primary>Manualpages</primary></indexterm> | <indexterm><primary>Manualpages</primary></indexterm> | ||||
<para>Die umfassendste Dokumentation rund um FreeBSD gibt es in | <para>Die umfassendste Dokumentation rund um &os; gibt es in | ||||
Form von Manualpages. Annähernd jedes Programm im System | Form von Manualpages. Annähernd jedes Programm im System | ||||
bringt eine kurze Referenzdokumentation mit, die die | bringt eine kurze Referenzdokumentation mit, die die | ||||
grundsätzliche Funktion und verschiedene Parameter | grundsätzliche Funktion und verschiedene Parameter | ||||
erklärt. Diese Dokumentationen kann man mit dem | erklärt. Diese Manuals können mit <command>man</command> | ||||
<command>man</command> Kommando benutzen. Die Benutzung des | eingesehen werden:</para> | ||||
<command>man</command> Kommandos ist einfach:</para> | |||||
<screen>&prompt.user; <userinput>man Kommando</userinput></screen> | <screen>&prompt.user; <userinput>man Kommando</userinput></screen> | ||||
<para><literal>Kommando</literal> ist der Name des Kommandos, | <para><literal>Kommando</literal> ist der Name des Kommandos, | ||||
über das Sie etwas erfahren wollen. Um beispielsweise | über das Sie etwas erfahren wollen. Um beispielsweise | ||||
mehr über das Kommando <command>ls</command> zu lernen, | mehr über das Kommando <command>ls</command> zu lernen, | ||||
geben Sie ein:</para> | geben Sie ein:</para> | ||||
<screen>&prompt.user; <userinput>man ls</userinput></screen> | <screen>&prompt.user; <userinput>man ls</userinput></screen> | ||||
<para>Die Online-Dokumentation ist in nummerierte Sektionen | <para>Die Online-Manuals sind in nummerierte Sektionen | ||||
unterteilt:</para> | unterteilt:</para> | ||||
<orderedlist> | <orderedlist> | ||||
<listitem> | <listitem> | ||||
<para>Benutzerkommandos.</para> | <para>Benutzerkommandos.</para> | ||||
</listitem> | </listitem> | ||||
<listitem> | <listitem> | ||||
Show All 27 Lines | &prompt.root; <userinput>/bin/kill -s HUP 198</userinput></screen> | ||||
<listitem> | <listitem> | ||||
<para>Kernel Entwickler.</para> | <para>Kernel Entwickler.</para> | ||||
</listitem> | </listitem> | ||||
</orderedlist> | </orderedlist> | ||||
<para>In einigen Fällen kann dasselbe Thema in mehreren | <para>In einigen Fällen kann dasselbe Thema in mehreren | ||||
Sektionen auftauchen. Es gibt zum Beispiel ein <command>chmod</command> | Sektionen auftauchen. Es gibt zum Beispiel ein <command>chmod</command> | ||||
Benutzerkommando und einen <function>chmod()</function> | Benutzerkommando und einen <function>chmod()</function> | ||||
Systemaufruf. In diesem Fall können Sie dem | Systemaufruf. Sie können <command>man</command> | ||||
<command>man</command> Kommando | |||||
sagen, aus welcher Sektion Sie die Information erhalten | sagen, aus welcher Sektion Sie die Information erhalten | ||||
möchten, indem Sie die Sektion mit angeben:</para> | möchten, indem Sie die Sektionsnummer mit angeben:</para> | ||||
<screen>&prompt.user; <userinput>man 1 chmod</userinput></screen> | <screen>&prompt.user; <userinput>man 1 chmod</userinput></screen> | ||||
<para>Dies wird Ihnen die Manualpage für das Benutzerkommando | <para>Dies wird Ihnen die Manualpage für das Benutzerkommando | ||||
<command>chmod</command> zeigen. Verweise auf eine Sektion | <command>chmod</command> zeigen. Verweise auf eine Sektion | ||||
der Manualpages werden traditionell in Klammern | der Manualpages werden traditionell in Klammern | ||||
gesetzt. So bezieht sich &man.chmod.1; auf das | gesetzt. So bezieht sich &man.chmod.1; auf das | ||||
Benutzerkommando <command>chmod</command> und mit | Benutzerkommando <command>chmod</command> und mit | ||||
&man.chmod.2; ist der Systemaufruf gemeint.</para> | &man.chmod.2; ist der Systemaufruf gemeint.</para> | ||||
<para>Das ist nett, wenn Sie den Namen eines Kommandos wissen, | <para>Wenn Sie den Namen des Kommandos kennen, benutzen Sie | ||||
und lediglich wissen wollen, wie es zu benutzen ist. Aber was | <command>man -k</command>, um nach Schlüsselbegriffen in den | ||||
tun Sie, wenn Sie Sich nicht an den Namen des Kommandos | Kommandobeschreibungen zu suchen:</para> | ||||
erinnern können? Sie können mit <command>man</command> | |||||
nach Schlüsselbegriffen in den | |||||
Kommandobeschreibungen zu suchen, indem Sie den Parameter | |||||
<option>-k</option> benutzen:</para> | |||||
<screen>&prompt.user; <userinput>man -k mail</userinput></screen> | <screen>&prompt.user; <userinput>man -k <replaceable>mail</replaceable> | ||||
</userinput></screen> | |||||
<para>Mit diesem Kommando bekommen Sie eine Liste der | <para>Dieser Befehl zeigt eine Liste von Kommandos, deren | ||||
Kommandos, deren Beschreibung das Schlüsselwort | Beschreibung das Schlüsselwort | ||||
<quote>mail</quote> enthält. Diese Funktionalität | <quote>mail</quote> enthält. Die gleiche Funktionalität | ||||
erhalten Sie auch, wenn Sie das Kommando <command>apropos</command> | erhalten Sie auch, wenn Sie &man.apropos.1; | ||||
benutzen.</para> | benutzen.</para> | ||||
<para>Nun, Sie schauen Sich alle die geheimnisvollen Kommandos | <para>Um herauszufinden, was die Kommandos in | ||||
in <filename>/usr/bin</filename> an, haben aber nicht den | <filename>/usr/bin</filename> tun, geben Sie ein:</para> | ||||
blassesten Schimmer, wozu die meisten davon gut sind? Dann | |||||
rufen Sie doch das folgende Kommando auf:</para> | |||||
<screen>&prompt.user; <userinput>cd /usr/bin</userinput> | <screen>&prompt.user; <userinput>cd /usr/bin</userinput> | ||||
&prompt.user; <userinput>man -f *</userinput></screen> | &prompt.user; <userinput>man -f *</userinput></screen> | ||||
<para>Dasselbe erreichen Sie durch Eingabe von:</para> | <para>Dasselbe erreichen Sie durch Eingabe von:</para> | ||||
<screen>&prompt.user; <userinput>cd /usr/bin</userinput> | <screen>&prompt.user; <userinput>cd /usr/bin</userinput> | ||||
&prompt.user; <userinput>whatis *</userinput></screen> | &prompt.user; <userinput>whatis *</userinput></screen> | ||||
</sect2> | </sect2> | ||||
<sect2 xml:id="basics-info"> | <sect2 xml:id="basics-info"> | ||||
<title>GNU Info Dateien</title> | <title>GNU Info Dateien</title> | ||||
<para>FreeBSD enthält viele Anwendungen und Utilities | <para>&os; enthält viele Anwendungen und Utilities | ||||
der Free Software Foundation (FSF). Zusätzlich zu den | der Free Software Foundation (FSF). Zusätzlich zu den | ||||
Manualpages bringen diese Programme ausführlichere | Manualpages können diese Programme Hypertext-Dokumente | ||||
Hypertext-Dokumente (<literal>info</literal> genannt) mit, | enthalten, die <literal>info</literal>-Seiten genannt werden. | ||||
welche man sich mit dem Kommando <command>info</command> | Diese Dokumente können mit <command>info</command> | ||||
ansehen kann. Wenn Sie <application>emacs</application> | ansehen kann. Wenn Sie <package>editors/emacs</package> | ||||
installiert haben, können Sie auch dessen info-Modus | installiert haben, können Sie auch den info-Modus von | ||||
benutzen.</para> | <application>emacs</application> benutzen.</para> | ||||
<para>Um das Kommando &man.info.1; zu benutzen, geben Sie | <para>Um &man.info.1; zu benutzen, geben Sie ein:</para> | ||||
ein:</para> | |||||
<screen>&prompt.user; <userinput>info</userinput></screen> | <screen>&prompt.user; <userinput>info</userinput></screen> | ||||
<para>Eine kurze Einführung gibt es mit | <para>Eine kurze Einführung gibt es mit | ||||
<literal>h</literal>; eine Befehlsreferenz erhalten Sie durch | <literal>h</literal>; eine Befehlsreferenz erhalten Sie durch | ||||
Eingabe von: <literal>?</literal>.</para> | Eingabe von: <literal>?</literal>.</para> | ||||
</sect2> | </sect2> | ||||
</sect1> | </sect1> | ||||
</chapter> | </chapter> |