diff --git a/de_DE.ISO8859-1/books/fdp-primer/sgml-markup/chapter.sgml b/de_DE.ISO8859-1/books/fdp-primer/sgml-markup/chapter.sgml
index a136fe7115..1522c1c7a3 100644
--- a/de_DE.ISO8859-1/books/fdp-primer/sgml-markup/chapter.sgml
+++ b/de_DE.ISO8859-1/books/fdp-primer/sgml-markup/chapter.sgml
@@ -1,2998 +1,3009 @@
SGML-Dokumente erstellenIn diesem Kapitel werden die beiden vom FDP eingesetzen
Auszeichnungssprachen HTML und DocBook behandelt. Hierbei
beschränkt sich dieses Kapitel auf die Elemente, die bei der
täglichen Arbeit am ehesten zum Einsatz kommen werden.Beide Sprachen besitzen eine große Anzahl von Elementen.
Das erschwert es, das richtige Element in der richtigen Situation
auszuwählen. Aus diesem Grund werden zu jedem Element auch
immer Beispiele angeboten, die den richtigen Einsatz des Elements
verdeutlichen sollen.Es ist nicht das Ziel dieses Kapitels möglichst viele
Elemente beider Sprachen zu behandeln – dies wäre nur
eine Wiederholung der eigentlichen Sprachreferenz. Sofern es
Unklarheiten zur Verwendung einzelner Elemente und Auszeichnung
von bestimmten Sachverhalten gibt, können diese an &a.doc;
geschickt werden.Fluß- kontra BlockelementeWenn im folgenden von
Flußelementen die Rede ist, sind
damit Elemente gemeint, die in einem Blockelement auftreten
können und keinen Zeilenumbruch hervorrufen.
Blockelemente hingegen erzeugen unter
anderem einen ZeilenumbruchDie englische
Bezeichnung inline element
wurde in Anlehnung an das Wort Fließtext
mit Flußelement
übersetzt..HTMLHTML, die HyperText Markup
Language, ist die Auszeichnungssprache des
Internets. Weitere Informationen zu HTML finden sich unter
.Sie kommt bei der Erstellung der Webseiten des
FreeBSD-Projektes zum Einsatz. Für technische Dokumentationen
sollte HTML jedoch nicht eingesetzt werden, da DocBook eine
größere und bessere Auswahl an Elementen bietet. Folglich
sollte HTML nur für die FreeBSD-Webseiten verwendet werden.Die HTML-Spezifikation liegt bis jetzt in mehreren Versionen
vor: 1, 2, 3.0, 3.2 und (die aktuelle) 4.0. Von letzterer
existieren zwei Varianten: streng (HTML 4.0
Strict) und locker (HTML 4.0
Transitional).Die HTML-DTDs sind über den Port textproc/html verfügbar und werden
automatisch als Teil des Metaports textproc/docproj
mitinstalliert.Formale Öffentliche BezeichnerDa es mehrere Version von HTML gibt, existieren auch
mehrere FÖPs, zu denen ein HTML-Dokument konform
erklärt werden kann. Die Mehrzahl der sich auf der
FreeBSD-Webseite befindenen HTML-Seiten sind zu der lockeren
Version von HTML 4.0 konform.PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"Die Elemente head und
bodyEin HTML-Dokument unterteilt sich normalerweise in zwei
Bereiche: head und body. Der
Kopf (head) enthält Metadaten
wie den Dokumententitel und Angaben zum Autor. Der Rumpf
(body) umfaßt den eigentlichen
Dokumenteninhalt, der für den Leser bestimmt ist. In einem
HTML-Dokument werden diese Bereiche über die Elemente
head und body
voneinander abgegrenzt. Beide sind Kinder des Wurzelelementes
html.Die Struktur eines HTML-Dokumentes<html>
<head>
<title>Der Dokumententitel</title>
</head>
<body>
…
</body>
</html>BlockelementeÜberschriftenHTML kennt sechs verschiedene Elemente, mit denen
Überschriften ausgezeichnet werden können. Das bekannteste
Element ist h1, das sich am Anfang der
Überschriftenhierarchie befindet. h1
folgen die Überschriftenelemente h2 bis
h6. Der Inhalt von
hN stellt den
Text der Überschrift dar.h1, h2…Fügen Sie in eine der existierenden Übungsdateien folgendes ein:Erstes Kapitel
Das ist die Überschrift des ersten Kapitels
Das ist die Überschrift des ersten Unterkapitels
Das ist die Überschrift des zweiten Kapitels
]]>Eine HTML-Seite sollte immer nur eine Überschrift
h1 haben. Dieser Überschrift können
beliebig viele Kapitel mit einer Überschrift
h2 folgen, die selbst wiederum eine
beliebige Anzahl von Kapiteln mit einer Überschrift
h3 enthalten können. Diese
Verschachtelung setzt sich bis zu Kapiteln mit einer
h6-Überschrift fort. Es sollte vermieden
werden, Elemente in der Überschriftenhierarchie
auszulassen.Falsche Verschachtelung von ÜberschriftenFügen Sie in eine der existierenden Übungsdateien folgendes ein:Erstes Kapitel
Unterkapitel
]]>AbsätzeAbsätze können in HTML mit Hilfe des Elementes
p ausgezeichnet werden.Absätze mit dem Element pFügen Sie in eine der existierenden Übungsdateien folgendes ein:Das hier, das ist ein Absatz. Absätze können
andere Elemente enhalten.
]]>
BlockzitateEin Blockzitat ist ein etwas umfangreicheres Zitat aus
einem anderen Text, das nicht zum aktuellen Absatz
gehört.BlockzitatFügen Sie in eine der existierenden Übungsdateien
folgendes ein:
Artikel 1: Menschenwürde; Grundrechtsbindung der
staatlichen Gewalt
Die Würde des Menschen ist unantastbar. Sie zu achten
und zu schützen ist Verpflichtung aller staatlichen
Gewalten.
Das Deutsche Volk bekennt sich darum zu unverletzlichen
und unveräußerlichen Menschenrechten als Grundlage jeder
menschlichen Gemeinschaft, des Friedens und der
Gerechtigkeit in der Welt.
Die nachfolgenden Grundrechte binden Gesetzgebung,
vollziehende Gewalt und Rechtsprechung als
unmittelbar geltendes Recht.
]]>ListenHTML kennt drei Arten von Listen: sortierte, unsortierte
und Definitionslisten. Ein Eintrag in einer sortierten Liste
wird üblicherweise mit einer Nummer versehen, Einträge in
unsortierten Listen hingegen mit einem Aufzählungspunkt.
Definitionslisten wiederum bestehen aus zwei Teilen: Der
erste enthält den Begriff der definiert werden soll und der
zweite dessen Erläuterung.Sortierte Listen werden mit dem Element
ol (für
ordered
list) ausgezeichnet,
unsortierte Listen mit ul (für
unordered
list) und
Definitionslisten mit dl.Listenpunkte sortierter und unsortierter Listen werden
mit dem Element li ausgezeichnet,
welches Text oder andere Blockelemente enthalten kann.
Begriffe, die in einer Definitionslisten enthalten sind,
werden mit dem Element dt (für
definition
term) ausgezeichnet.
Die Erklärung zu diesem Begriff wird mit Hilfe des Elementes
dd (für definition
description) markiert. So wie
li, kann das Element
dd ebenfalls andere Blockelemente
aufnehmen.Listen mit ul und
ol erstellenFügen Sie in eine der existierenden Übungsdateien
folgendes ein:Jetzt folgt eine unsortierte Liste. Wahrscheinlich werden
die einzelnen Einträge mit einem vorangehenden Punkt dargestellt.
Erster Eintrag
Zweiter Eintrag
Dritter Eintrag
Die zweite Liste ist sortiert und ihre Einträge bestehen aus mehreren Absätzen.
Jeder Listeneintrag ist nummeriert.
Das ist der erste Eintrag mit nur einem Absatz.
Das ist der erste Absatz des zweiten Eintrags.
Und das ist der zweite Absatz des zweiten Eintrags.
Der dritte Eintrag besteht ebenfalls nur aus einem Eintrag.
]]>Definitionslisten mit dl erstellenFügen Sie in eine der existierenden Übungsdateien folgendes ein:
Erster Begriff
Erster Absatz der Erklärung
Zweiter Absatz der Erklärung.
Zweiter Begriff
Erster Absatz der Erklärung.
Dritter Begriff
-
Erster Absatz der Erklärung zum dritten Begriff.
- Beachtenswert ist, daß <p> nicht notwendig ist.
+
Erster Absatz der Erklärung zum dritten Begriff.
]]>Vorformatierter TextIn einigen Fällen ist es gewollt, daß die Formatierung
eines Textes im Quelldokument erhalten bleibt, so daß der
Leser diesen genau so sieht, wie ihn der Autor erstellt hat.
In der HTML-Spezifikation ist dafür das Element
pre vorgesehen, welches dafür sorgt, daß
Zeilenumbrüche erhalten bleiben und Leerzeichen nicht
zusammengefaßt werden. Browser verwenden für den
Inhalt des Elementes pre
üblicherweise eine Fixschrift.Vorformatierten Text mit pre erstellenDer Originaltext einer E-Mail läßt sich beispielsweise
wie folgt einbinden: From: nik@FreeBSD.org
To: freebsd-doc@FreeBSD.org
Subject: Neue Version verfügbar
Es ist eine neue Version der Fibel für neue Mitarbeiter am
FreeBSD-Dokumentationsprojekt verfügbar:
- URL:http://people.FreeBSD.org/~nik/primer/index.html
+ <URL:http://people.FreeBSD.org/~nik/primer/index.html>
Kommentare und Anmerkungen sind willkommen.
N]]>
+
+ Beachten Sie, dass < und
+ & nach wie vor als Sonderzeichen
+ erkannt werden. Daher wird in diesem Beispiel auch
+ < an Stelle von
+ < verwendet. Aus dem gleichen
+ Grund wurde auch > an Stelle
+ von > verwendet. Achten Sie also
+ stets auf Sonderzeichen, wenn Sie normalen Text
+ aus E-Mails, Programmcode oder einer anderen Quelle
+ kopieren.
+
TabellenDie meisten Textbrowser, beispielsweise Lynx, können
Tabellen nicht besonders gut darstellen. Deshalb sollten
Auszeichnungsalternativen in Betracht gezogen werden, um
eine angemessene Darstellung sicherzustellen.Tabellen lassen sich in HTML mit Hilfe des Elements
table auszeichnen. Eine Tabelle setzt
sich aus einer oder mehreren Zeilen (tr)
zusammen, von denen jede mindestens eine Zelle
(td) enthält. Zellen können wiederum
andere Blockelemente, wie Absätze oder Listen, enthalten.
Auch können sie auch andere Tabellen aufnehmen, wobei die
Verschachtelungstiefe unbegrenzt ist. Soll die Tabellenzelle
nur einen Textabsatz enthalten, ist es nicht notwendig den
Text mit einem p zu umschließen.Einfache Tabelle mit tableFügen Sie in eine der existierenden Übungsdateien folgendes ein:Eine einfache 2x2 Tabelle.
Obere linke Zelle
Obere rechte Zelle
Untere linke Zelle
Untere rechte Zelle
]]>HTML kennt die Möglichkeit, daß sich eine
Zelle mehrere Zeilen und/oder Spalten erstrecken kann.
Sollen beispielsweise mehrere Spalten zusammenfassen werden,
kann dies mit mit Hilfe des Attributes
colspan erreicht werden, indem man ihm
die Anzahl der zusammenzufassenden Spalten zuweist.
Ähnliches gilt für die Zusammenfassung von Zeilen:
Hierfür wird dem Attribut rowspan
die Anzahl der zusammenzufassenden Zeilen zugewiesen.Anwendung des Attributes rowspanDiese Tabelle besteht aus einer langen Zelle auf der
linken Seite und zwei kleineren Zellen auf der rechten.
Lang und dünn
Obere Zelle
Untere Zelle
]]>Anwendung des Attributes colspanEine breite Zeile oben und zwei schmalere Zeilen
darunter.
Obere Zelle
Linke untere Zelle
Rechte untere Zelle
]]>Gemeinsame Anwendung der Attrbute rowspan und
colspanEine Tablle mit 3-mal-3 Zellen. Oben links
werden 2 mal 2 Zelle zusammengezogen.
Große obere linke Zelle
Obere rechte Zelle
Mittlere rechte Zelle
Untere linke Zelle
Untere mittlere Zelle
Untere rechte Zelle
]]>FlußelementeHervorheben von InformationSollen sich bestimmte Informationen von anderen optisch
abheben, kann dies mit den HTML-Tags
strong und em erreicht
werden. strong stellt dabei eine
stärkere Hervorhebung als em dar,
wobei mit strong ausgezeichnete Elemente
fett und mit em ausgezeichnete Elemente
kursiv dargestellt werden. Allerdings ist diese Aussage
nicht verläßlich, da die Darstellung vom Browser
abhängig ist.Text mit em und strong
hervorhebenDieses Wort ist hervorgehoben,
während dieses noch stärker hervorgehoben ist.]]>Fett- und SchrägschriftDa mittels HTML auch Festlegungen über die
Darstellung getroffen werden können, gibt es die
Möglichkeit direkt zu bestimmen, daß bestimmte
Inhalte fett oder kursiv dargestellt werden sollen. Mit
b eingefaßte Inhalte werden fett
und mit i eingefaßte kursiv
dargestellt.Text mit b und i
formatierenDieses Wort wird fett dargestellt,
während dieses kursiv dargestellt wird.]]>Nicht-proportionale Schrift für TexteDer Tag tt erlaubt es,
Text in einer schreibmaschinenähnlichen
Schrift darzustellen.Nicht-proportionale Schrift mit
ttDieses Dokument wurde ursprünglich von
Nik Clayton geschrieben. Nick Clayton kann unter der E-Mail-Adresse
nik@FreeBSD.org erreicht werden.]]>Änderung der SchriftgrößeHTML bietet auch Möglichkeiten, um Einfluß
auf die Schriftgröße zu nehmen, das heißt,
zu bestimmen, ob die Schrift größer oder kleiner
als die Standardschrift dargestellt werden soll. Es gibt
drei verschiedene Wege, dies zu erreichen:Mittels der Tags big und
small kann die
Darstellungsgröße des eingeschlossenen Textes
vergrößert respektive verkleinert werden.
HTML erlaubt es zudem, diese Tags zu verschachteln, so
daß auch <big><big>Das ist
wesentlich
größer.</big></big>
geschrieben werden kann.Das gleiche Ergebnis kann über die Zuweisung der
Werte 1 und -1 an
das Attribut size
des Tags font erreicht werden. Diese
Vorgehensweise sollte allerdings als veraltet betrachtet
werden, da der Einsatz eines CSS hierfür die bessere
Lösung darstellt.Über die Zuweisung von absoluten Werten im Bereich
von 1 bis 7 an das
Attribut size des Tags
fontDer Standardwert für size ist
3.. Diese
Herangehensweise ist ebenfalls veraltet und sollte nicht
mehr angewandt werden.Schriftgröße ändern mit
big, small und
fontDie folgenden HTML-Schnipsel bewirken alle das gleiche:Dieser Text ist etwas kleiner. Dieser
jedoch ein wenig größer.
Dieser Text ist etwas kleiner. Dieser
jedoch ein wenig größer.
Dieser Text ist etwas kleiner. Dieser
jedoch ein wenig größer.
]]>LinksBei Links handelt es sich ebenfalls Flußelemente.Auf andere Dokumente im WWW verweisenUm auf ein anderes Dokument im WWW zu verweisen,
müssen Sie die URL dieses Dokuments kennen.Links auf andere Dokumente im WWW werden in HTML durch
den Tag a und dessen Attribute href, das die Zieladresse
enthält, angelegt. Der Inhalt des Elementes wird selbst
zum Link und seine Darstellung erfolgt verschieden vom
übrigen Text. Meist geschieht das durch eine andere
Schriftfarbe oder dadurch, daß der Linktext
unterstrichen wird.<a href="..."> benutzenWeitere Informationen stehen auf der
FreeBSD-Webseite zur Verfügung.]]>Beim Aufruf dieses Links wird das referenzierte Dokument vom
Browser geladen und mit dessen Seitenanfang dargestellt.Auf bestimmte Dokumentenabschnitte verweisenHTML unterstützt neben einfachen Links auch solche, die
auf einen bestimmten Abschnitt innerhalb eines Dokumentes
verweisen. Dazu müssen die Abschnitte, auf die verwiesen
werden soll, mit Hilfe von sogenannten Ankern
markiert werden. Diese Anker können ebenfalls mit Hilfe des
Tags a gesetzt werden, nur das anstelle
von href das Attribut
name gesetzt werden
- muß.
+ muss.
Anwendung von <a name="...">Auf diesen Absatz kann mit
Hilfe seines Namens (absatz1) verwiesen werden.]]>Um auf einen so gekennzeichneten Abschnitt zu verweisen,
- muß die URL des Dokumentes um das Zeichen
+ muss die URL des Dokumentes um das Zeichen
# und den Namen des Zielankers erweitert
werden.Auf einen Abschnitt eines anderen Dokumentes
verweisenFür dieses Beispiel wird davon ausgegangen, daß der mit
absatz1 gekennzeichnete Absatz sich in
der HTML-Datei foo.html
befindet.Weitere Informationen können im
ersten Absatz der Datei
foo.html gefunden werden.]]>Die DocBook DTDDocBook wurde ursprüglich von HaL Computer Systems and
O'Reilly & Associates als DTD für das Erstellen von
technischen Dokumenten entwickelt
Einen kurzen historischen Abriss finden Sie unter
..
Seit 1998 wird es vom
DocBook Technical Committee gewartet. DocBook ist sehr
stark auf die Beschreibung von Inhalten, und nicht auf die
Darstellung des Inhalts ausgerichtet. Damit steht es im Gegensatz
zu LinuxDoc und HTML.Formelle und informelle ElementeEinige Elemente der DocBook DTD sind in zwei Varianten
vorhanden: formell und
informell. Üblicherweise besitzt die
formelle Variante einen Titel, dem der eigentliche
Elementeninhalt folgt. Die informelle Variante hingegen hat
keinen Titel.Die DocBook DTD ist in der Portssammlung im Port textproc/docbook enthalten und wird
bei der Installation von textproc/docproj automatisch
mitinstalliert.Die FreeBSD-ErweiterungenFür das FDP wurde die DocBook DTD durch das
FreeBSD-Dokumentationsproject um zusätzliche Elemente
erweitert, um damit präzisiere
Auszeichnungsmöglichkeiten zur Verfügung zu haben.
Sofern im folgenden FreeBSD-spezifische Elemente genutzt
werden, wird explizit darauf hingewiesen werden.Wenn nachfolgend im Text der Begriff
DocBook verwendet wird, ist damit die durch das
FDP erweiterte Version der DocBook DTD gemeint.Die durch das FDP vorgenommenen Erweiterungen sind nicht
FreeBSD-spezifisch. Sie wurden lediglich vorgenommen, da sie
für die Arbeit des FDPs als nützlich erschienen.
Für den Fall, das in den anderen *nix-Lagern (NetBSD,
OpenBSD, Linux,…) Interesse daran besteht, gemeinsam
eine Standarderweiterung für die DocBook DTD zu
entwickeln, kann mit dem &a.doceng; Verbindung aufgenommen
werden.Zum jetzigen Zeitpunkt sind die FreeBSD-Erweiterungen
nicht Bestandteil der Portssammlung. Sie werden im
FreeBSD-CVS-Archiv (doc/share/sgml/freebsd.dtd)
verwaltet.Formelle Öffentliche BezeichnerIn Übereinstimmung mir der DocBook-Richtlinie zur
Erstellung von Bezeichnern für DocBook-Erweiterungen lautet
der Bezeichner der erweiterten FreeBSD-Variante:PUBLIC "-//FreeBSD//DTD DocBook V4.1-Based Extension//EN"Die Struktur von DocBook-DokumentenDocBook erlaubt es, Dokumente auf verschiedene Weise zu
strukturieren. Innerhalb des FDPs werden hauptsächlich zwei
Arten von DocBook-Dokumenten verwendet: Buch und Artikel.
Beide unterscheiden sich darin, daß ein Buch auf der obersten
Ebene durch chapter-Elemente strukturiert
wird. Sollte das noch nicht ausreichend sein, können die
einzelnen Kapitel eines Buches mit Hilfe des Elementes
part in Teile aufgespalten werden. Das
Handbuch zum Beispiel ist auf diese Weise aufgebaut.Kapitel (chapter) können weiterhin in
Unterkapitel unterteilt werden. Diese werden durch die
Elemente sect1 ausgezeichnet. Soll ein
Unterkapitel selbst weitere Unterkapitel enthalten, kann das
über das Element sect2 geschehen. Diese
Unterteilung kann bis zur Tiefe von fünf Unterkapiteln –
über die Elemente sect3,
sect4 und sect5 –
fortgeführt werden. Der eigentliche Inhalt, um den es ja in
dem Artikel oder Buch geht, wird unterhalb der hier genannten
Elemente eingefügt.Vom Aufbau her ist ein Artikel ist einfacher strukturiert
als ein Buch. So kann ein Artikel beispielsweise keine Kapitel
(chapter) enthalten. Stattdessen kann der
Inhalt eines Artikels nur durch die schon bekannten
sectN-Elemente
in einen oder mehrere Abschnitte gegliedert werden.
Überlegen Sie sich vor dem Schreiben eines Textes,
ob der zu schreibende Text am
besten als Buch oder als Artikel angelegt wird. Artikel eignen
sich besser für Texte, die nicht in mehrere Kapitel
aufgeteilt werden müssen und mit einem Umfang von
ungefähr 20 bis 25 Seiten vergleichsweise kurz sind.
Natürlich ist das nur eine Richtlinie. Bücher sind
dementsprechend am besten für lange Texte geeignet, die
sich sinnvoll in Kapitel unterteilen lassen und
möglichweiser noch Anhänge und ähnliches
enthalten können.Alle Tutorien von
FreeBSD sind als Artikel verfaßt, während
hingegen die FreeBSD-FAQ und das FreeBSD-Handbuch als
Bücher verfaßt wurden.Bücher schreibenDer Inhalt eines Buches wird in einem
book-Element abgelegt. Neben dem
Textteil des Buches kann dieses Element weitergehende
Informationen über das Buch selbst,
wie Meta-Informationen zum Erstellen eines
Stichwortverzeichnisses oder zusätzliche
Inhalte zum Erstellen einer Titelei, enthalten. Diese
zusätzlichen Inhalte sollten in einem
bookinfo-Element abgelegt werden.Buchvorlage book mit
bookinfo<book>
<bookinfo>
<title>Titel</title>
<author>
<firstname>Vorname</firstname>
<surname>Nachname</surname>
<affiliation>
- <address><email>Emailadresse</email></address>
+ <address><email>E-Mail-Adresse</email></address>
</affiliation>
</author>
<copyright>
<year>1998</year>
- <holder role="mailto:Emailadresse">Vollständiger Name</holder>
+ <holder role="mailto:E-Mail-Adresse">Vollständiger Name</holder>
</copyright>
<releaseinfo>$FreeBSD$</releaseinfo>
<abstract>
<para>Kurze Zusammenfassung des Buchinhaltes.</para>
</abstract>
</bookinfo>
…
</book>Artikel schreibenDer Inhalt eines Artikels wird in einem
article-Element abgelegt. Neben
dem Textteil kann dieses Element weitere Teile,
wie Meta-Informationen zum Erstellen eines
Stichwortverzeichnisses oder zusätzliche
Inhalte zum Erstellen einer Titelei, enthalten.
Analog zu einem Buch, sollten diese Informationen in einem
articleinfo-Element abgelegt
werden.Artikelvorlage article mit
articleinfo<article>
<articleinfo>
<title>Titel</title>
<author>
<firstname>Vorname</firstname>
<surname>Nachname</surname>
<affiliation>
- <address><email>Emailadresse</email></address>
+ <address><email>E-Mail-Adresse</email></address>
</affiliation>
</author>
<copyright>
<year>1998</year>
- <holder role="mailto:Emailadresse">Vollständiger Name</holder>
+ <holder role="mailto:E-Mail-Adresse">Vollständiger Name</holder>
</copyright>
<releaseinfo>$FreeBSD$</releaseinfo>
<abstract>
<para>Kurze Zusammenfassung des Artikelinhalts.</para>
</abstract>
</articleinfo>
…
</article>KapitelKapitel werden mit dem
chapter-Element angelegt und müssen ein
title-Element enthalten. Verwendet werden
können sie nur in Büchern.Ein einfaches KapitelKapitelüberschrift
…
]]>Kapitel können nicht leer sein. Nebem einem
title-Element müssen sie weiteren Inhalt
beinhalten. Falls ein leeres Kapitel benötig wird, kann dies
durch das Einfügen eines leeren Absatzes
(para) erreicht werden.Ein leeres KapitelDas ist ein leeres Kapitel
]]>UnterkapitelBücher werden auf der obersten Gliederungsebene
durch chapter-Elemente in Kapitel
unterteilt. Eine weitergehende Untergliederung kann durch
das Anlegen von Unterkapiteln erreicht werden. Im Gegensatz
zu Kapiteln, die durch chapter-Elemente
ausgezeichnet werden, erfolgt die Auszeichnung von
Unterkapitel mit dem Element
sectn. Das
n in Elementnamen trifft eine
Aussage über die Gliederungstiefe, auf der sich das
Unterkapitel befindet. Ein sect1-Element
kann mehrere Elemente vom Typ sect2
enthalten, die die Unterkapitel der
nächsten Gliederungsebene darstellen.
sect5 ist das letzte Element, das auf
diese Art zur Gliederung eingesetzt werden kann.UnterkapitelEin BeispielkapitelEin beliebiger Text.Erster Abschnitt (1.1)
…
Zweiter Abschnitt (1.2)Erster Unterabschnitt (1.2.1)Erster Unterunterabschnitt (1.2.1.1)
…
Zweiter Unterabschnitt (1.2.2)
…
]]>Die Unterkapitel dieses Beispiels wurden zu
Demonstrationszwecken manuell durchnummeriert. In
normalen Dokumenten wird diese Aufgabe von
den Stylesheets übernommen.Bücher mittels part
unterteilenIn den Fällen, in denen die Unteilung eines Buches in
Kapitel nicht ausreichend ist, können mehrere
Kapitel mit dem Element part zu
einem Teil zusammengefasst werden.EinführungÜberblick
…
Was ist FreeBSD?
…
Die Geschichte von FreeBSD
…
]]>BlockelementeAbsätzeDocBook kennt drei Arten von Absätzen: Absätze
mit Überschrift (formalpara),
normale Absätze (para) und einfache
Absätze (simpara).Normale Absätze und einfache Absätze
unterscheiden sich dadurch, daß innerhalb von
para Blockelemente erlaubt sind,
innerhalb von simpara hingegen nicht. Es
ist empfehlenswert, para den Vorzug
zu geben.Absatz mit paraDas ist ein Absatz. Absätze können fast jedes andere
Element aufnehmen.]]>Darstellung:Das ist ein Absatz. Absätze können fast jedes andere
Element aufnehmen.BlockzitateBlockzitate sind textlich umfangreichere Zitate aus
einem anderen Text, die nicht innerhalb des aktuellen
Absatzes angezeigt werden sollen. Wahlweise können
Blockzitate eine Überschrift haben und die Zitatquelle
nennen.blockquoteEin Auszug aus dem Grundgesetz:
Menschenwürde; Grundrechtsbindung der staatlichen GewaltAus dem GrundgesetzDie Würde des Menschen ist unantastbar. Sie zu achten
und zu schützen ist Verpflichtung aller staatlichen
Gewalten.Das Deutsche Volk bekennt sich darum zu unverletzlichen
und unveräußerlichen Menschenrechten als Grundlage jeder
menschlichen Gemeinschaft, des Friedens und der
Gerechtigkeit in der Welt.Die nachfolgenden Grundrechte binden Gesetzgebung,
vollziehende Gewalt und Rechtsprechung als
unmittelbar geltendes Recht.
]]>Darstellung:
Menschenwürde; Grundrechtsbindung der
staatlichen GewaltAus dem GrundgesetzDie Würde des Menschen ist unantastbar. Sie
zu achten und zu schützen ist Verpflichtung
aller staatlichen Gewalten.Das Deutsche Volk bekennt sich darum zu
unverletzlichen und unveräußerlichen
Menschenrechten als Grundlage jeder menschlichen
Gemeinschaft, des Friedens und der Gerechtigkeit in
der Welt.Die nachfolgenden Grundrechte binden
Gesetzgebung, vollziehende Gewalt und Rechtsprechung
als unmittelbar geltendes Recht.
Tipps, Anmerkungen, Warnungen, wichtige Informationen
und RandbemerkungenIn bestimmten Fällen kann es nützlich sein,
dem Leser zusätzliche Informationen zu geben, die sich
vom Haupttext abheben, damit der Leser sie besser wahrnimmt.
Abhängig von der Art der Information, können
solche Stellen mit einem der Elemente tip
(für Tipps), note (für
Anmerkungen), warning (für
Warnungen), caution (für besonders
ernstzunehmende Warnungen) und important
(für wichtige Anmerkungen) ausgezeichnet werden. Trifft
keines dieser Element für die auszuzeichnende Stelle
zu, sollte diese mit dem Element sidebar
ausgezeichnet werden.Da die richtige Einordnung einer auszuzeichnenden
Textstelle nicht immer leicht zu treffen ist, werden in der
DocBook-Dokumentation folgende Empfehlungen gegeben:Eine Anmerkung (note) ist eine
Information, die von jedem Leser beachtet werden
sollte.Eine wichtige Anmerkung
(important) eine Variation einer
Anmerkung.Eine Warnung (warning)
betrifft einen möglichen Hardwareschaden
oder weist auf eine Gefahr für Leib und Leben
hin.Eine besonders ernstzunehmende Warnung
(caution) betrifft einen möglichen
Datenverlust oder Softwareschaden.warningWenn Sie FreeBSD auf Ihrer Festplatte installieren,
kann es sein, daß Sie Windows nie mehr benutzen wollen.
]]>Wenn Sie FreeBSD auf Ihrer Festplatte installieren,
kann es sein, daß Sie Windows nie mehr benutzen wollen.Listen und HandlungsanweisungenListen sind ein oft gebrauchtes Hilfsmittel, wenn es
darum geht, Informationen für den Benutzer
übersichtlich darzustellen oder eine Abfolge von
Arbeitsschritten zu beschreiben, die notwendig sind, um ein
bestimmtes Ziel zu erreichen. Zur Auszeichnung von Listen
stellt DocBook die Elemente itemizedlist,
orderedlist und
procedure zur Verfügung.DocBook kennt noch andere Elemente für die
Auszeichnung von Listen, die an dieser Stelle jedoch
nicht behandelt werden..itemizedlist und
orderedlist ähneln sehr stark ihren
HTML-Gegenstücken ul und
ol. Beide Listenarten müssen
mindestens ein Element listitem
enthalten. Das listitem Element
- muß mindestens ein weiteres Blockelement
+ muss mindestens ein weiteres Blockelement
enthalten.procedure unterscheidet sich ein
wenig von den vorhergehenden. Es enthält
step-Elemente, die wiederum
step- oder
substel-Elemente enthalten können.
Ein step-Element kann nur Blockelemente
aufnehmen.itemizedlist,
orderedlist und
procedureDas ist das erste Listenelement.Das ist das zweite Listenelement.Das ist das erste Aufzählungselement.Das ist das zweite Aufzählungselement.Machen Sie zuerst dies.Und dann machen Sie das..Und jetzt noch das…]]>Darstellung:Das ist das erste Listenelement.Das ist das zweite Listenelement.Das ist das erste Aufzählungselement.Das ist das zweite Aufzählungselement.Machen Sie zuerst dies.Und dann machen Sie das..Und jetzt noch das…Dateiinhalte auszeichnenTechnische Dokumente enthalten oft auch
Konfigurationsbeispiele oder Quellcodeschnipsel. Zur
Auszeichnung dieser Inhalte, stellt Docbook das Element
programmlisting zur Verfügung. Im
Gegensatz zu anderen DocBook-Elementen wird der
Elementinhalt von programmlistingnicht normalisiert, das heißt,
daß alle Leerzeichen, Tabulatoren und
Zeilenumbrüche unverändert übernommen werden.
Aus diesem Grund ist es unter anderem wichtig, daß
sich der öffende Tag in der selben Zeile wie der Anfang
des darzustellenden Textes befindet. Gleiches gilt für
- den schließenden Tag: Er muß sich am Ende der
+ den schließenden Tag: Er muss sich am Ende der
letzten Zeile befinden. Wird das nicht beachtet, kann es
sein, daß unerwartete Leerzeichen und Leerzeilen in
der Ausgabe auftauchen.programlistingAm Ende sollte Ihr Programm wie folgt
aussehen:
#include <stdio.h>
int
main(void)
{
printf("Hallo Welt!\n");
}]]>Die spitzen Klammern der
#include-Anweisung können nicht direkt
verwendet werden, sondern müssen über ihre Entitäten
eingebunden werden.Darstellung:Am Ende sollte Ihr Programm wie folgt aussehen:#include <stdio.h>
int
main(void)
{
printf("Hallo Welt!\n");
}TextanmerkungenTextanmerkungen
auf Englisch:
callout
sind ein Mechanismus, um auf bestimmte Stellen in einem
vorhergehenden Beispiel oder Text zu verweisen.Um solche Verweise anzulegen, müssen die betreffenden
Stellen in den Beispielen
(programlisting,
literallayout, …) mit
co-Elementen markiert werden, wobei jedes
Element ein eindeutiges id-Attribut
- besitzen muß. Anschließend sollte ein
+ besitzen muss. Anschließend sollte ein
calloutlist-Element eingefügt werden,
dessen Elemente sich auf die co-Elemente
des Beispiels beziehen und die jeweiligen Anmerkungen
enthalten.Das co- und das
calloutlist-ElementAm Ende sollte Ihr Programm wie folgt
aussehen:
#include <stdio.h>
int
main(void)
{
printf("Hallo Welt\n");
}Bindet die Headerdatei stdio.h ein.Bestimmt den Typ des Rückgabewertes von main().Ruft die Funktion printf() auf, die
Hallo Welt! auf der Standardausgabe ausgibt]]>Darstellung:Am Ende sollte Ihr Programm wie folgt aussehen:#include <stdio.h>
int
main(void)
{
printf("Hallo Welt\n");
}Bindet die Headerdatei stdio.h ein.Bestimmt den Typ des Rückgabewertes von main().Ruft die Funktion printf() auf, die
Hallo Welt! auf der Standardausgabe ausgibtTabellenIm Gegensatz zu HTML ist es nicht notwendig, Tabellen zu
Layoutzwecken einzusetzen, da die Layoutaufgabe von den
Stylesheets übernommen wird. Stattdessen sollten Tabellen
nur für die Auszeichnung von Daten in Tabellenform genutzt
werden.Vereinfacht betrachtet (für Details sollte die
DocBook-Dokumentation zu Rate gezogen werden) besteht eine
Tabelle, die entweder als formelle oder als informelle
Tabelle angelegt werden kann, aus einem
table-Element. Dieses Element selbst
beinhaltet mindestens ein Element tgroup,
das über ein Attribut die Spaltenanzahl der Tabelle
bestimmt. Innerhalb des Elementes tgroup
kann sich ein Element thead mit den
Spaltenüberschriften und ein Element
tbody mit dem eigentlichen Tabelleninhalt
befinden. Beide Elemente beinhalten
row-Elemente, die wiederum
entry-Elemente beinhalten. Jedes
entry-Element stellt eine einzelne
Tabellenzelle dar.Tabellen mittels informaltable
auszeichnenSpaltenüberschrift 1Spaltenüberschrift 2Zeile 1, Spalte 1Zeile 1, Spalte 2Zeile 2, Spalte 1Zeile 2, Spalte 2
]]>Darstellung:Spaltenüberschrift 1Spaltenüberschrift 2Zeile 1, Spalte 1Zeile 1, Spalte 2Zeile 2, Spalte 1Zeile 2, Spalte 2Verwenden Sie stets das Attribut pgwide
mit dem Wert 1, wenn Sie das Element
informaltable benutzen. Ein Bug des
Internet Explorers verhindert ansonsten die korrekte
Darstellung dieser Tabellen.Soll die Tabelle keinen Rand haben, kann das Attribut
frame mit dem Wert
none dem Element
informaltable hinzugefügt werden
(<informaltable frame="none">)).Tabelle mit Attribut
frame="none"Darstellung:Spaltenüberschrift 1Spaltenüberschrift 2Zeile 1, Spalte 1Zeile 1, Spalte 2Zeile 2, Spalte 1Zeile 2, Spalte 2Beispiele für den LeserOft gilt es, für dem Benutzer Beispiele
zu geben, die er dann selber nachvollziehen soll. Meist
handelt es sich dabei um interaktive Dialoge zwischen Mensch
und Maschine: Der Benutzer gibt einen Befehl ein und
erhält eine Antwort vom System. Ein Satz
von speziellen Elementen und Entitäten unterstützt
den Autor bei der Auszeichnung solcher Textstellen:screenGedacht zur Auszeichnung von Bildschirminhalten.
Im Unterschied zu anderen Elementen werden Leerzeichen
innerhalb des Elementes screen
unverändert übernommen.prompt,
&prompt.root; und
&prompt.user;Eingabeaufforderungen des Rechners
(Betriebssysten, Shell oder Anwendung) sind ein häufig
auftretender Teil dessen, was der Benutzer auf dem
Bildschirm zu sehen bekommt. Sie sollten mit
prompt ausgezeichnet werden.Ein Spezialfall sind die beiden
Eingabeaufforderungen der Shell für normale
Benutzer und den Superuser root.
Jedesmal wenn auf eine von diesen beiden Nutzerrollen
hingewiesen werden soll, sollte entweder
&prompt.root; oder
&prompt.user; eingesetzt
werden. Beide Entitäten können auch
außerhalb von screen
verwendet werden.&prompt.root; und
&prompt.user; sind
FreeBSD-spezifische Erweiterungen der DocBook DTD
und nicht in der originalen DocBook DTD
enthalten.userinputDas Element userinput ist
für die Auszeichnung von Benutzereingaben
gedacht.screen, prompt
und userinput&prompt.user; ls -1
foo1
foo2
foo3
&prompt.user; ls -1 | grep foo2
foo2
&prompt.user; suPassword:
&prompt.root; cat foo2
This is the file called 'foo2']]>Darstellung:&prompt.user; ls -1
foo1
foo2
foo3
&prompt.user; ls -1 | grep foo2
foo2
&prompt.user; suPassword:
&prompt.root; cat foo2
This is the file called 'foo2'Obgleich der Inhalt der Datei
foo2 in dem obigen Beispiel angezeigt
wird, sollte dieser nicht mit
programlisting ausgezeichnet werden.
Vielmehr sollte programlisting einzig
und allein für die Darstellung von Dateifragmenten
außerhalb von Benutzeraktionen gewählt
werden.FlußelementeHervorhebungenWenn es darum geht bestimmte Wörter oder Textstellen
hervorzuheben, sollte dafür das Element
emphasis verwendet werden. Das so
ausgezeichnete Text wird dann kursiv oder fett dargestellt;
im Falle einer Sprachausgabe würde es anders betont
werden.Im Gegensatz zu den HTML mit seinen Elementen
b und i, kennt DocBook
keinen Weg, um diese Darstellung zu
ändernAnmerkung des
Übersetzers: Hier sollte man sich noch einmal ins
Gedächtnis rufen, daß mittels der DocBook DTD nur
Inhalte ausgezeichnet werden und nicht das Layout
bestimmt wird.. Handelt es sich bei
dem darzustellenden um eine wichtige Information, kann
alternativ important verwendet
werden.Das Element emphasisFreeBSD ist zweifelslos das führende
Unix-artige Bestriebssystem für die Intel-Plattform.]]>Darstellung:FreeBSD ist zweifelslos das führende
Unix-artige Bestriebssystem für die Intel-Plattform.ZitateUm einen Auszug aus einer anderen Quelle zu zitieren
oder kenntlich zu machen, daß eine bestimmte Wendung
im übertragenen Sinne zu verstehen ist, kann der
betreffende Text mit Hilfe des Elementes
quote ausgezeichnet werden. Innerhalb von
quote können die meisten der
normalerweise zur Verfügung stehenden Elemente genutzt
werden.Richtig zitierenEs sollte immer sichergestellt werden, daß die Suche die Grenzen
zwischen lokaler und öffentlicher Administration
(RFC 1535) einhält.]]>Darstellung:Es sollte immer sichergestellt werden, das die Suche
die Grenzen zwischen lokaler und öffentlicher
Administration (RFC 1535) einhält.Tasten, Maustasten und TastenkombinationenDas Element keycap beschreibt
eine bestimmte Taste der Tastatur.
Für die Auszeichnung von Maustasten
steht analog das Element mousebutton zur
Verfügung. Mit Hilfe von keycombo
können beliebige Tasten- und Maustastenkombinationen
beschrieben werden.Das Element keycombo besitzt ein
Attribut action, dem einer der Werte
click, double-click,
other, press,
seq oder simul
zugewiesen werden kann. Die letzten beiden Werte deuten an,
daß die genannte Kombination nacheinander oder
gleichzeitig gedrückt werden soll. Die Stylesheets
fügen zwischen die einzelnen Unterelemente von
keycombo+-Zeichen
ein.Tasten, Maustasten und TastenkombinationenDiese Eingaben zeichnen Sie wie folgt aus:Mit der Tastenkombination AltF1 kann auf die zweite virtuelle Konsole
umgeschaltet werden.
Um vi zu beenden, ohne die Änderungen zu
- speichern, muß Esc
+ speichern, muss Esc:q! eingegeben werden.Der Fenstermanager ist so konfiguriert, daß mittels
Altrechter Maustaste
Fenster verschoben werden können.]]>Darstellung:Mit der Tastenkombination AltF1 kann auf die zweite
virtuelle Konsole umgeschaltet werden.Um vi zu beenden, ohne die
- Änderungen zu speichern, muß Esc:q! eingegeben werden.Der Fenstermanager ist so konfiguriert, daß mittels
Altrechter Maustaste
Fenster verschoben werden können.Anwendungen, Befehle, Optionen und HilfeseitenOft besteht die Notwendigkeit auf bestimmte Anwendungen
und Befehle zu verweisen. Der Unterschied zwischen einer
Anwendung und einem Befehl liegt darin, daß eine
Anwendung ein einzelnes oder eine Gruppe von Programmen ist,
mit denen eine bestimmte Aufgabe erledigt werden kann. Ein
Befehl hingegen ist der Name eines Programmes, daß der
Benutzer aufrufen kannDer Befehl
mozilla startet das Programm
mozilla..Desweiteren kann es auch vorkommen, daß die
von einem Programm (in einem bestimmten Fall)
akzeptierten Optionen genannt werden müssen.Schlußendlich ist es oft gewünscht, zu einem
Befehl dessen Abschnitt der Manualseiten im
Unix-üblichen Stil Befehl(Zahl)
anzugeben.Anwendungsnamen können mit application
ausgezeichnet werden.Befehle können zusammen mit der betreffenden
Hilfeseite über das DocBook-Element
citerefentry ausgezeichnet werden.
- citerefentry muß zwei weitere
+ citerefentry muss zwei weitere
Elemente enthalten: refentrytitle,
für den Befehlsnamen, und manvolnum,
für die Kategorie der Hilfeseite.Diese Art auf Befehle zu verweisen kann sehr
ermüdent sein. Daher gibt es einen Satz von
Allgemeinen
Entitäten, der diese Arbeit erleichtert. Er
ist in der Datei
doc/share/sgml/man-refs.ent enhalten
und kann über den folgenden Bezeichner eingebunden
werden:PUBLIC "-//FreeBSD//ENTITIES DocBook Manual Page Entities//EN"Jede Entität in dieser Datei ist wie folgt aufgebaut:
&man.Hilfeseite.Kategorie;.Der Anfang eines Dokumentes, das diese Entitäten
einbindet, könnte so aussehen:<!DOCTYPE book PUBLIC "-//FreeBSD//DTD DocBook V4.1-Based Extension//EN" [
<!ENTITY % man PUBLIC "-//FreeBSD//ENTITIES DocBook Manual Page Entities//EN">
%man; … ]>Um Befehle innerhalb des Fließtextes auszuzeichen,
kann das Element command genutzt werden.
Die Optionen eines Befehles können mit Hilfe von
option ausgezeichnet werden.Wenn man sich mehrmals hintereinander auf den gleichen
Befehl bezieht, sollte man beim ersten Auftreten die Notation
&man.command.section;
verwenden. Für alle folgenden Referenzen sollte hingegen
command verwendet werden. Dadurch
verbessert sich das Erscheinungsbild, insbesondere von HTML,
deutlich.Die Unterscheidung zwischen command
und application kann schwer sein, und
manchmal ist die Entscheidung, welches Element das richtige
ist, nicht leicht. Das folgende Beispiel soll diese
Unterscheidung erleichtern.Anwendungen, Befehle und OptionenSendmail ist der verbreitetste
UNIX-Mailserver.
Sendmail besteht aus den Programmen
sendmail8, &man.mailq.8;, und &man.newaliases.8;.Mittels der Option kann
sendmail8 den Status der Mailwarteschlange ausgeben.
Der Status der Mailwarteschlange kann durch den Befehl
sendmail -bp überprüft werden.]]>Darstellung:Sendmail ist der
verbreitetste UNIX-Mailserver.Sendmail besteht aus den
Programmen
sendmail8,
mailq8 und
newaliases8.Mittels der Option kann
sendmail8 den Status der Mailwarteschlange ausgeben.
Der Status der Mailwarteschlange kann durch den Befehl
sendmail -bp überprüft
werden.Die Schreibweise
&man.Hilfeseite.Kategorie;
ist leichter lesbar.Dateien, Verzeichnisse und ErweiterungenImmer wenn in einem Text der Name einer Datei, eines
Verzeichnisses oder eine Dateierweiterung vorkommt, sollte
die betreffende Stelle mit dem Element
filename ausgezeichnet werden.Das Element filenameDie SGML-Quellen des englischen Handbuches befinden
sich im Verzeichnis /usr/doc/en/handbook/. In
diesem Verzeichnis befindet sich eine Datei
handbook.sgml. Desweiteren sollte sich eine
Datei mit dem Namen Makefile zusammen mit
mehreren Dateien mit der Endung .ent
in diesem Verzeichnis befinden.]]>Darstellung:Die SGML-Quellen des englischen Handbuches befinden
sich im Verzeichnis
/usr/doc/en/handbook/. In diesem
Verzeichnis befindet sich eine Datei
handbook.sgml. Desweiteren sollte
sich eine Datei mit dem Namen
Makefile zusammen mit mehreren
Dateien mit der Endung .ent in diesem
Verzeichnis befinden.PortnamenFreeBSD-ErweiterungDie hier genannten Elemente sind Bestandteil der
FreeBSD-Erweiterung für DocBook und sind nicht in der
originalen DocBook DTD enthalten.An einigen Stellen ist es notwendig, den Namen eines
Ports aus FreeBSDs Portssammlung in Dokumenten zu verwenden.
In diesem Fall sollte ebenfalls das Element
filename eingesetzt werden, dabei aber
dem Element das Attribut role mit dem
Wert package zugewiesen werden. Da die
Portssammlung an jeder beliebigen Stelle im Dateisystem
installiert werden kann, sollte filename
nur die Kategorie und den Namen des Ports enthalten, aber
nicht das Verzeichnis
/usr/ports.Portsnamen und das Element filenameWenn Sie Ihr Netz und dessen Datenverkehr analysieren
möchten, dann installieren Sie bitte den Port net/ethereal.]]>Darstellung:Wenn Sie Ihr Netz und dessen Datenverkehr analysieren
möchten, dann installieren Sie bitte den Port net/ethereal.Gerätedateien unterhalb von
/devFreeBSD-ErweiterungDie hier genannten Elemente sind Bestandteil der
FreeBSD-Erweiterung für DocBook und sind nicht in der
originalen DocBook DTD enthalten.Wird in einem Dokument Bezug auf Gerätedateien
unterhalb von dev
genommen, dann gibt es zwei Möglichkeiten diese
auszuzeichnen. Zum einen kann man sich auf das Gerät
beziehen, so wie es unter /dev zu
finden ist, und zum anderen kann man sich auf den
Gerätenamen beziehen, wie es innerhalb des Kerns
verwendet wird. Für letztere Möglichkeit sollte
das Element devicename genutzt
werden.Allerdings besteht nicht immer diese
Wahlmöglichkeit. Einige Geräte, wie zum Beispiel
Netzwerkkartenm haben keinen Eintrag unter
/dev oder werden anders
dargestellt.Gerätenamen per devicename
auszeichnenUnter FreeBSD wird die serielle Datenübertragung über
sio abgewickelt, das unterhalb von
/dev eine Reihe von Einträgen anlegt.
Zu diesen Einträgen behören beispielsweise
/dev/ttyd0 und
/dev/cuaa0.
Andererseits erscheinen Geräte wie beispielsweise
ed0 nicht unterhalb von
/dev.Unter MS-DOS wird das erste Diskettelaufwerk als
a: bezeichnet. FreeBSD
bezeichnet es als /dev/fd0.]]>Darstellung:Unter FreeBSD wird die serielle Datenübertragung
über sio abgewickelt, das
unterhalb von /dev eine Reihe von
Einträgen anlegt. Zu diesen Einträgen
behören beispielsweise
/dev/ttyd0 und
/dev/cuaa0.Andererseits erscheinen Geräte wie beispielsweise
ed0 nicht unterhalb von
/dev.
Unter MS-DOS wird das erste Diskettelaufwerk als
a: bezeichnet. FreeBSD bezeichnet
es als /dev/fd0.Rechner, Domains, IP-Adressen und mehrFreeBSD-ErweiterungDie hier genannten Elemente sind Bestandteil der
FreeBSD-Erweiterung für DocBook und sind nicht in der
originalen DocBook DTD enthalten.Bezeichner für Rechner können in Abhängigkeit
der Bezeichnungsweise auf verschiedene Art und Weise
ausgezeichnet werden. Gemeinsam ist allen, daß sie
das Element hostid benutzen. Über das
Attribut role wird die Art des Bezeichners
genauer bestimmt.Kein Rollenattribut oder
role="hostname"Ohne Rollenattribut stellt der umschlossene Text
einen normlen Rechnernamen wie
freefall oder
wcarchive dar. Wenn es
gewünscht ist, kann mittels
role="hostname" explizit angegeben
werden, daß es sich um einen Rechnernamen
handelt.role="domainname"Ein Domainname wie FreeBSD.org
oder ngo.org.uk. Er enthält keinen
Rechnernamen.role="fqdn"Vollqualifizierter Domainname wie
www.FreeBSD.org. Enthält sowohl
einen Domainnamen als auch einen Rechnernamen.role="ipaddr"Eine IP-Adresse, meistens als durch Doppelpunkte
getrenntes Tupel von vier Zahlen dargestellt.role="ip6addr"Eine IPv6-Adresse.role="netmask"Eine Netzwerkmaske, dargestellt als ein durch
Doppelpunkte getrenntes Vierzahlentupel, einer Hexzahl
oder als ein /, dem eine Zahl
folgt.role="mac"Eine MAC-Adresse, dargestellt durch zweistellige
Hexzahlen, die durch Doppelpunkte getrennt
sind.role und
hostidDer lokale Rechner kann immer über den Namen
localhost angesprochen werden, dem immer
die IP-Adresse
127.0.0.1 zugeordnet ist.
Zur Domain FreeBSD.org
gehören verschiedene Rechner, inklusive freefall.FreeBSD.org und bento.FreeBSD.org.Wenn eine IP-Adresse einer Netzwerkkarte zugeordnet wird,
was mit der Hilfe von ifconfig geschieht,
sollte immer die Netzmaske
255.255.255.255, die auch
hexadezimal als 0xffffffff
abgegeben werden kann, benutzt werden.Die MAC-Adresse ist für jede existierende Netzwerkkarte
auf der Welt eindeutig. Eine typische MAC-Adresse ist
beispielsweise 08:00:20:87:ef:d0.]]>Darstellung:Der lokale Rechner kann immer über den Namen
localhost angesprochen werden, dem immer
die IP-Adresse 127.0.0.1
zugeordnet ist.Zur Domain FreeBSD.org gehören
verschieden Rechner, inklusive freefall.FreeBSD.org und bento.FreeBSD.org.Wenn eine IP-Adresse einer Netzwerkkarte zugeordnet
wird, was mit der Hilfe von ifconfig
geschieht, sollte immer die Netzmaske
255.255.255.255, die auch
hexadezimal als 0xffffffff
abgegeben werden kann, benutzt werden.Die MAC-Adresse ist für jede existierende
Netzwerkkarte auf der Welt eindeutig. Eine typische
MAC-Adresse ist beispielsweise 08:00:20:87:ef:d0.BenutzernamenFreeBSD-ErweiterungDie hier genannten Elemente sind Bestandteil der
FreeBSD-Erweiterung für DocBook und sind nicht in der
originalen DocBook DTD enthalten.Namen von Benutzern, wie
root oder bib,
können mit dem Element username
ausgezeichnet werden.Das Element usernameFür die meisten Administrationsaufgaben müssen
Sie als root angemeldet sein.]]>Darstellung:Für die meisten Administrationsaufgaben müssen Sie als
root angemeldet sein.Beschreibung von MakefilesFreeBSD-ErweiterungDie hier genannten Elemente sind Bestandteil der
FreeBSD-Erweiterung für DocBook und sind nicht in der
originalen DocBook DTD enthalten.Zur Beschreibung von Teilen einer Makedatei stehen die
beiden Elemente marketarget und
makevar zur Verfügung.
maketarget bezeichnet ein Ziel eines
Makefiles, das als Parameter beim
Aufruf von make angegeben werden kann.
makevar hingegen bezeichnet eine
Variable, die entweder in einem
Makefile definiert oder
make auf der Befehlszeile übergeben
werden kann, um so den Bauprozess zu beeinflussen.maketarget und
makevarZwei übliche Ziele in einem Makefile
sind all und
clean.
Üblicherweise wird, wenn das Ziel all
aufgerufen wird, die gesamte Anwendung neu erstellt. Der Aufruf
des Zieles clean veranlaßt das
Löschen aller temporären Dateien (zum Beispiel
.o), die während der Übersetzung erzeugt
wurden.Das genaue Verhalten von clean
kann von einer Reihe von Variablen beeinflußt werden.
Stellvertretend seien hier CLOBBER und
RECURSE genannt.]]>Darstellung:Zwei übliche Ziele in einem
Makefile sind
all und
clean.Üblicherweise wird, wenn das Ziel
all aufgerufen wird, die gesamte
Anwendung neu erstellt. Der Aufruf des Zieles
clean veranlaßt das
Löschen aller temporären Dateien (zum Beispiel
.o), die während der
Übersetzung erzeugt wurden.Das genaue Verhalten von
clean kann von einer Reihe von
Variablen beeinflußt werden. Stellvertretend seien
hier CLOBBER und
RECURSE genannt.Text buchstabengetreu übernehmenFür das Handbuch ist es oft notwendig, Textausschnitte
buchstabengetreu darzustellen. Hierbei kann es sich um Texte
handeln, die aus einer anderen Datei stammen oder die der
Leser eins-zu-eins aus dem Handbuch kopieren können
soll.In einigen Fällen ist zu diesem Zwecke
programlisting ausreichend, jedoch nicht
immer. So ist programlisting zum Beispiel
nicht einsetzbar, wenn es darum geht einen Auszug aus einer
Datei innerhalb eines Absatzes einzufügen. In solchen Fällen
sollte das Element literal zum Einsatz
kommen.literalDie Zeile maxusers 10 in der
Kernelkonfigurationsdatei beeinflußt die Größe vieler
Systemtabellen und kann als ungefähr als Richtwert dafür
gelten, wie viele paralle Anmeldungen das System handhaben
kann.]]>Darstellung:Die Zeile maxusers 10 in der
Kernelkonfigurationsdatei beeinflußt die Größe vieler
Systemtabellen und kann als ungefähr als Richtwert dafür
gelten, wie viele paralle Anmeldungen das System handhaben
kann.Benutzerspezifische Eingaben darstellenEs kommt oft vor, daß der Leser Beispiele,
Dateinamen oder Kommandozeilen verändern muss.
Für einen solchen Anwendungsfall
ist das Element replaceable gedacht. Es
kann innerhalb von anderen Elementen
genutzt werden, um die Teile auszuzeichnen, die es zu
ersetzen gilt.Das Element replaceable&prompt.user; man command
]]>Darstellung:&prompt.user; man commandDieses Beispiel zeigt, daß nur der Text mit
replaceable umschlossen werden soll,
den der Benutzer einzusetzen hat. Sämtlicher anderer
Text sollte wie üblich ausgezeichnet werden.Die Zeile
maxusers n
in der Kernelkonfigurationsdatei bestimmt die Größe vieler Systemtabellen
und stellt einen groben Richtwert dafür dar, wie viele gleichzeitige Anmeldungen
das System unterstützt.
Für einen Arbeitsplatzrechner stellt 32 einen guten
Wert für n dar.]]>Darstellung:Die Zeile maxusers
n in der
Kernelkonfigurationsdatei bestimmt die Größe
vieler Systemtabellen und stellt einen groben Richtwert
dafür dar, wie viele gleichzeitige Anmeldungen das
System unterstützt.Für einen Arbeitsplatzrechner stellt
32 einen guten Wert für
n dar.Fehlermeldungen des Systems darstellenIn manchen Fällen kann es nötig sein,
Fehlermeldungen darzustellen, die von FreeBSD erzeugt werden
können. Für solche Fälle ist das Element
errorname vorgesehen.Das Element errornamePanic: cannot mount root ]]>Darstellung:Panic: cannot mount rootBilder und GrafikenDie Verwendung von Grafiken innerhalb der Dokumentation
ist momentan noch in einem experimentellen Stadium. Es ist
daher wahrscheinlich, daß sich die hier beschriebenen
Mechanismen noch ändern werden.Für die Verwendung von Grafiken ist es notwendig,
den Port graphics/ImageMagick
zusätzlich zu installieren, da er
nicht vom Port textproc/docproj mitinstalliert
wird.Das beste Beispiel für den Einsatz von Grafiken ist
der unter
doc/en_US.ISO8859-1/articles/vm-design/
zu findene Artikel Design elements of the FreeBSD VM
system. Falls beim Lesen der folgenden Kapitel
Fragen unbeantwortet oder unklar bleiben, empfiehlt es sich,
die unter dem genannten Verzeichnis befindlichen Dateien zu
studieren und anhand ihrer zu verstehen, wie alles
zusammenhängt. Es empfiehlt sich, den Artikel in
verschiedenen Ausgabeformaten zu erzeugen, da man so sehen
kann, wie die Grafiken in Abhängigkeit vom
Ausgabemedium angeordnet werden.Unterstütze GrafikformateZur Zeit werden nur zwei Grafikformate unterstützt.
Welches von beiden Formaten zum Einsatz kommen sollte,
hängt von der Art der Grafik ab.Für Bilder, die vorrangig Vektorelemente wie
Netzwerkdiagramme, Zeitlinien und ähnliches beinhalten,
sollte Encapsulated Postscript als Format gewählt
werden. Wichtig ist es in diesem Fall, daß die
Grafikdatei die Endung .eps hat.
Für Bitmapgrafiken, wie zum Beispiel Bildschirmfotos,
steht das Portable Network Grafic Format zur
Verfügung. In diesem Fall, sollte die Grafikdatei immer
die Endung .png haben.In das CVS-Archiv sollten nur
Grafiken in diesen beiden Formaten übernommen
werden.Es sollte darauf sehr darauf geachtet werden, das
richtige Format für das richtige Bild zu wählen.
Erwartungsgemäß wird es Dokumente geben, die eine
Mischung aus PNG- und EPS-Grafiken enthalten. In solchen
Fällen, stellen die Makedateien die Verwendung des
richtigen Formats in Abhängigkeit vom Ausgabeformat
sicher. Deshalb sollte die gleiche Grafik niemals
in zwei unterschiedlichen Formaten in das CVS-Archiv
übernommen werden.Es ist absehbar, daß das Dokumentationsprojekt
in Zukunft das Scalable Vector Graphic-Format (SVG) als
Standardformat für Vektorgrafiken übernehmen
wird. Zum jetzigen Zeitpunkt ist dieser Wechsel noch nicht
möglich, da der Stand der jetzigen SVG-Anwendungen
noch nicht den dafür notwendigen Erfordernissen
entspricht.DocBook-Elemente für den GrafikeinsatzDas Auszeichnen von Bildern mittels DocBook ist relativ
einfach. Zuerst wird ein
mediaobject-Element eingefügt, das
als Container für medienspezifische Elemente fungieren
kann. Für die Zwecke des FDPs sind das die Elemente
imageobject und
textobject.In das mediaobject-Element sollten
ein Element vom Typ imageobject und zwei
textobject-Elemente eingefügt
werden. Das imageobject-Element verweist
auf die eigentliche Grafikdatei. Dabei ist allerdings nur
der Dateipfad ohne Erweiterung anzugegeben. Die
textobject-Elemente werden dafür
genutzt, Texte aufzunehmen, die dem Leser anstelle des
Bildes oder zusammen mit dem Bild angezeigt werden.Dies kann unter zwei Umständen geschehen:Wenn ein Dokument als HTML-Datei durch einem Browser
- angezeigt wird. In diesem Falle muß jeder Grafik
+ angezeigt wird. In diesem Falle muss jeder Grafik
ein Alternativtext zugeordnet werden, der dem Leser
angezeigt werden kann. Meist ist das notwendig, wenn der
Browser die Grafik noch nicht geladen hat oder wenn der
Benutzer den Mauszeiger über die Grafik
führt.Wenn das Dokument als Textdatei gelesen wird. Da in
einer Textdatei keine Grafiken angezeigt werden können,
sollte es für die Grafik eine Textentsprechung geben,
die alternativ angezeigt werden kann.Das folgende Beispiel soll das bisher geschriebene
illustrieren. Angenommen es liegt eine einzubindene Grafik
in der Datei bild1 vor, die die
Darstellung eines As in einem Rechteck enthält. Die
ASCII-Alternative könnte so ausgezeichnet werden:<mediaobject>
<imageobject>
<imagedata fileref="bild1">
</imageobject>
<textobject>
<literallayout class="monospaced">+ - - - - - - - - - - - - - - -+
| A |
+- - - - - - - - - - - - - - -+</literallayout>
</textobject>
<textobject>
<phrase>Ein Bild</phrase>
</textobject>
</mediaobject>Innerhalb vom Element imageobject
befindet sich ein Element imagedata,
welches mit Hilfe des Attributes
fileref den Namen der Grafikdatei
(ohne Erweiterung) angibt. Die Bestimmung der
Dateierweiterung wird von den Stylesheets
übernommen.Das erste textobject-Element
enthält ein literallayout-Element,
dessen Attribut class den Wert
monospaced zugewiesen bekommt. Der
Inhalt dieses Elements wird genutzt, wenn das Dokument
in Textform ausgegeben wird. An dieser Stelle hat der
Autor die Möglichkeit seine
Textzeichenkünste unter Beweis zu
stellen.Wichtig ist, daß die erste und die letzte
Zeile sich gleichauf mit dem öffenden und dem
schließenden Tag befindet. Dadurch wird
sichergestellt, daß keine unnötigen
Leerzeichen in die Ausgabe aufgenommen werden.Das zweite textobject-Element
sollte lediglich ein phrase-Element
enthalten. Wird das Dokument nach HTML konvertiert, wird
dessen Inhalt für das Attribut
alt des img-Tags
verwendet.Die Makefile-EinträgeAlle in einem Dokument verwendeten Grafiken müssen in
dem zugehörigen Makefile in der Variable
IMAGES enthalten sein.
IMAGES sollte immer die Namen der
Quellgrafiken enthalten. Werden in
einem Dokument beispielsweise die drei Grafiken
bild1.eps,
bild2.png und
bild3.png referenziert, sollte das
Makefile die folgende Zeile
enthalten:…
IMAGES= bild1.eps bild2.png bild3.png
…Eine andere Möglichkeit wäre:…
IMAGES= bild1.eps
IMAGES+= bild2.png
IMAGES+= bild3.png
…Es kann nicht oft genug betont werden: Welche
Grafikdateien für das zu erzeugende Dokument benötigt
werden, wird von dem Makefiles bestimmt.
IMAGES darf nur die Originaldateien
enthalten.Grafiken und Kapitel in UnterverzeichnissenWenn Sie Ihre Dokumentation in mehrere kleine
Dateien aufspalten (siehe
),
müssen Sie sorgfältig vorgehen.Angenommen es handelt sich um ein Buch, dessen drei
Kapitel in separaten Verzeichnissen angelegt wurden
(kapitel1/kapitel.sgml,
kapitel2/kapitel.sgml und
kapitel3/kapitel.sgml). Enthalten die
Kapitel Grafiken, empfiehlt es sich, diese in den gleichen
Verzeichnisses abzulegen, wie die Kapitel selbst. In diesem
Falle gilt es jedoch zu beachten, daß die Pfade der
Grafikdateien in der Variable IMAGES und
in den imagedata-Elementen immer auch den
Verzeichnisnamen mitenthalten.Soll beispielsweise die Datei
kapitel1/bild1.png in das in
kapitel1/kapitel.sgml enthaltene
- Kapitel eingebunden werden, sollte die so erfolgen:
+ Kapitel eingebunden werden, sollte dies so erfolgen:
<mediaobject>
<imageobject>
<imagedata fileref="kapitel1/bild1">
</imageobject>
…
</mediaobject>
- fileref muß den
+ fileref muss den
Datei- und den Verzeichnisnamen enthalten.
- Das Makefile muß dementsprechend
+ Das Makefile muss dementsprechend
die Zeile
…
IMAGES= kapitel1/bild1.png
…
enthalten.Wird dies beachtet, sollte es zu keinen Problemen
kommen.QuerverweiseQuerverweise sind auch Flußelemente.Querverweise innerhalb eines Dokumentes
- Um innerhalb eines Dokumentes Verweise anzulegen, muß
+ Um innerhalb eines Dokumentes Verweise anzulegen, muss
angegeben werden, von welcher Textstelle aus wohin verwiesen
werden soll.Jedes DocBook-Element besitzt ein Attribut
id, über das seinem Element ein
eindeutiger Bezeichner zugewiesen werden kann.In den meisten Fällen werden Querverweise nur zu
Kapiteln gesetzt. Die chaper- und
sect*-Elemente sollten aus diesem Grunde
ein gesetztes id-Attribut
besitzen.chapter und section
mit dem Attribut idEinführungDas ist eine Einführung. Sie enthält ein Unterkapitel, das
ebenfalls einen eigenen Bezeichner hat.Unterkapitel 1Das ist ein Unterkapitel.
]]>Als Wert für das Attribut id
sollte immer ein selbsterklärender Bezeichner gewählt
werden. Zudem ist es notwendig, daß dieser Bezeichner
innerhalb des Dokumentes eindeutig ist. Im obigen Beispiel
wurde der Bezeichner für das Unterkapitel gebildet,
indem der Bezeichner des übergeordneten Kapitels um den
Titel des Unterkapitels erweitert wurde. Diese
Vorgehensweise hilft sicherzustellen, daß Bezeichner
eindeutig sind und bleiben.Manchmal soll jedoch nicht auf den Anfang eines Kapitels
verwiesen werden, sondern zum Beispiel auf eine Stelle in
einem Absatz oder auf ein bestimmtes Beispiel. In solchen
Fällen kann an der Stelle, auf die verwiesen werden
soll, das Element anchor mit gesetztem
Attribut id eingefügt werden.
anchor kann selber keinen weiteren Inhalt
aufnehmen.Querverweise und das Element
anchorDieser Absatz enthält ein
Ziel für Querverweise, was jedoch keine
Auswirkung auf dessen Darstellung hat.]]>
Zum Anlegen des eigentlichen Querverweises selbst kann
eines der beiden Elemente xref oder
link genutzt werden. Beide besitzen das
Attribut linkend, dem der
id-Wert des Verweiszieles zugewiesen
wird. Ob sich das Ziel vor oder nach dem Verweis befindet,
spielt keine Rolle.xref und link
unterscheiden sich jedoch hinsichtlich der Art und Weise,
auf die der Text erzeugt wird, auf dem der Querverweis
liegt. Kommt xref zum Einsatz, hat der
Autor keine Kontrolle darüber – der Text wird
automatisch für ihn erzeugt.Einsatz von xrefFür dieses Beispiel wird davon ausgegangen, daß sich
folgendes Textfragment irgendwo innerhalb eines Dokumentes
auftaucht, daß das vorherige
id-Beispiel enthält.Weitere Informationen gibt
es im .
Genauere Informationen können im
gefunden werden.]]>Der Verweistext wird automatisch von den Stylesheets
erzeugt und so hervorgehoben, daß ersichtlich ist,
daß es sich bei dem Text um einen Verweis
handelt.
Weitere Informationen können in der
Einführung gefunden
werden.Genauere Informationen können im
Unterkapitel 1 gefunden
werden.
Der Text, auf dem der HTML-Link für den Querverweis
liegt, wurde von den Kapitelüberschriften
übernommen.Das bedeutet, daß es nicht
möglich ist, mit der Hilfe von
xref einen Querverweis zu einer mit
anchor gekennzeichneten Stelle
anzulegen. Da anchor keinen Inhalt
aufnehmen kann, können die Stylesheets nicht
automatisch einen Text für den Verweis
erzeugen.Möchte man selber den für den Verweis
benutzten Text bestimmen können, sollte das Element
link verwendet werden. Im Gegensatz zu
xref kann link Inhalt
aufnehmen, der dann für den Verweis verwendet
wird.link beutzenFür dieses Beispiel wird davon ausgegangen, daß
es sich in dem Dokument befindet, das auch
das id-Beispiel enthält.Weitere Informationen können
im ersten Kapitel gefunden
werden.
Genauere Informationen können in
diesem Kapitel
gefunden werden.]]>Aus diesem SGML-Fragment würden die Stylesheets
folgendes generieren (der hervorgehobene Text deutet den
erzeugten Verweis an):
Weitere Informationen können im ersten
Kapitel gefunden werden.Genauere Informationen können in
diesem Kapitel gefunden
werden.
Das letzte Beispiel ist schlecht. Es sollten niemals
Wörter wie dieses oder
hier als Linktext benutzt werden. Solche
Wörter zwingen den Leser dazu, den Kontext des
Verweises zu lesen, um zu verstehen, wohin der Verweis
führt.Mit dem Element linkkann auf mit
anchor gekennzeichnete Stellen im
Dokument verwiesen werden, da der Inhalt von
link als Text für den Querverweise
genutzt wird.Verweise auf Dokumente im WWWDas Anlegen von Verweisen auf externe Dokumente ist
wesentlich einfacher – solange die URL des zu
referenzierenden Dokumentes bekannt ist. Um von einem
bestimmten Textabschnitt auf das gewünschte externe
- Dokument zu verweisen, muß die jeweilige Stelle mit
+ Dokument zu verweisen, muss die jeweilige Stelle mit
dem Element ulink ausgezeichnet werden.
Mittels des Attributes url kann die
Adresse des Zieldokumentes angegeben werden. Bei der
Umformung des Quelldokumentes in die verschiedenen
Ausgabeformate wird der sich zwischen Start- und Endtag
befindliche Text für den Verweis übernommen, den
der Leser aufrufen kann.Verweise mit ulinkNatürlich ist es möglich, anstatt diesen Text
weiterzulesen, sofort die
FreeBSD-Homepage
aufzurufen.]]>Darstellung:Natürlich ist es möglich, anstatt diesen Text
weiterzulesen, sofort die FreeBSD-Homepage
aufzurufen.
diff --git a/de_DE.ISO8859-1/books/fdp-primer/sgml-primer/chapter.sgml b/de_DE.ISO8859-1/books/fdp-primer/sgml-primer/chapter.sgml
index 666b7069a2..1875a78fe0 100644
--- a/de_DE.ISO8859-1/books/fdp-primer/sgml-primer/chapter.sgml
+++ b/de_DE.ISO8859-1/books/fdp-primer/sgml-primer/chapter.sgml
@@ -1,1969 +1,1976 @@
Die SGML-FibelDie Mehrzahl der Dokumente des FDPs sind in SGML geschrieben.
Ziel dieses Kapitels ist es, genau zu erklären, was
das bedeutet und wie man die SGML-Quellen liest und versteht.
Ebenso werden die in den Quellen genutzten Kniffe erklärt,
auf die man beim Lesen der Dokumente stoßen wird.Teile dieses Kapitels basieren auf Mark Galassis Get
Going With DocBook.ÜberblickIn den guten alten Zeiten war der Umgang mit
elektronischem Text einfach. Man musste
lediglich wissen, welcher Zeichensatz (ASCII, EBCDIC oder ein
anderer) vorlag. Text war einfach Text und sah so aus, wie man
ihn sah. Keine Extras, keine Formatierungen und kein sonstiger
Schnickschnack.Für viele Zwecke war dies allerdings nicht ausreichend.
Von einem machinenlesbaren Text wird erwartet, dass er auch von
Maschinen gelesen und intelligent weiterverarbeitet werden kann.
Einzelne Stellen sollen hervorgehoben werden, andere sollen in ein
Glossar aufgenommen werden oder auf andere Textstellen
verweisen. Dateinamen wiederum sollen in einer
schreibmaschinenähnlichen Schrift auf dem
Bildschirm dargestellt werden, der Ausdruck soll jedoch in
Schrägschrift oder in einer beliebigen anderen
Darstellungsform erfolgen.Anfänglich gab es die Hoffnung, dass die
Künstliche Intelligenz (KI) helfen würde, dieses Ziel
zu erreichen. Computer sollte den Text lesen und dazu in der Lage
sein, selbstständig wichtige Formulierungen, Dateinamen,
Benutzereingaben oder Beispiele zu erkennen. Leider verlief die
Entwicklung in diesem Bereich nicht wie gewünscht und Computer
benötigen nach wie vor etwas Unterstützung, bevor sie
Texte vernünftig verarbeiten können.Genauer gesagt, man muss ihnen sagen, was was ist. Sehen
wir Menschen uns folgende Zeilen an:
Löschen Sie /tmp/foo mittels &man.rm.1;.&prompt.user; rm /tmp/foo
fällt es uns leicht zu erkennen, was ein Dateiname, ein
einzugebender Befehl oder ein Verweis auf eine Hilfeseite ist. Das
kann ein Computer, der einen Text verarbeitet, nicht. Aus diesem
Grund ist es notwendig, Texte mit weiteren Informationen
auszuzeichnen.Der Begriff AuszeichnungIm
angelsächischschen Sprachraum wird von
markup
gesprochen. bedeutet, dass
sich der Wert eines Textes erhöht, aber auch seine Kosten.
Durch Auszeichnungen wird einem Dokument zusätzlicher Text
hinzugefügt, der aber von dem eigentlichen Dokumenteninhalt
auf eine bestimmte Art und Weise unterschieden werden kann, so
dass Programme die Auszeichnung erkennen können und
mittels dieser Informationen während der Verarbeitung in
der Lage sind, Entscheidungen zu treffen. Texteditoren
können diese Auszeichnungselemente vor dem Benutzer
verbergen, um zu vermeiden, dass er durch sie abgelenkt
wird.Die durch die Auszeichnungselemente im Textdokument
zusätzlich abgelegten Informationen erhöhen den Wert
des Dokuments. Allerdings muss diese Arbeit in den meisten
Fällen von einem Menschen getan werden – wären
Maschinen dazu fähig, wären zusätzliche
Auszeichnungselemente unnötig. Der damit verbundene Aufwand
erhöht die Kosten, die durch die
Erstellung des Dokuments entstehen.Das etwas weiter oben gegebene Beispiel sieht im Quelltext
so aus:Löschen Sie /tmp/foo mittels &man.rm.1;.
&prompt.user; rm /tmp/foo]]>Die Auszeichnungselemente sind deutlich vom eigentlichen
Inhalt zu unterscheiden.Die Einführung von Auszeichnungselementen setzt voraus,
dass festgelegt wird, welche Bedeutung einzelne Elemente haben
und wie diese interpretiert werden. Sie brauchen daher eine
Auszeichnungssprache, der Sie folgen, wenn Sie eigene
Dokumente verfassen.Natürlich kann es keine universelle
Auszeichnungssprache geben und eine einzige mag nicht
ausreichend für alle möglichen Anwendungsfälle
sein. Eine Sprache für technische Dokumente wird sich
wahrscheinlich stark von einer für Kochrezepte
unterscheiden. Die universelle Lösung ist eine
Basissprache, mit deren Hilfe weitere Sprachen entwickelt werden
können – eine
Meta-Auszeichungssprache also.Genau diese Anforderung wird von der Standard Generalized
Markup Language (SGML) erfüllt. Mit ihrer
Hilfe wurden viele andere Auszeichungssprachen wie
beispielsweise HTML und DocBook, welche beide von FDP genutzt
werden, entwickelt.Die eigentliche Sprachdefinition erfolgt in einer
Dokumenten-Typ-Definition (DTD). Innerhalb dieser DTD werden die
Namen der einzelnen Elemente, deren mögliche Reihenfolge
und Verschachtelung sowie weitere Informationen
festgelegt.
-
Eine DTD ist eine
vollständige Definition aller
möglichen Sprachelemente, ihrer
ReihenfolgeBei natürlichen Sprachen spricht
man vom Satzbau – demjenigen Konstrukt, das unter
anderem die Position des Subjekts, Objekts und
Prädikats in einem Satz festlegt.,
optionaler Elemente und so weiter und so weiter. Dank dieser
recht formalen Festlegung ist es möglich,
SGML-Parser zu entwickeln, die sowohl ein
Dokument als auch seine DTD einlesen und anhand dieser DTD
prüfen können, ob das Dokument allen Anforderungen der
DTD entspricht. Dieser Vorgang wird allgemein als
Validierung des Dokuments
bezeichnet.Das Validieren eines SGML-Dokuments gegen eine DTD
überprüft lediglich die korrekte Syntax des
Dokuments, dass heißt, ob nur gültige
Auszeichnungselemente verwendet wurden und ihre Reihenfolge
stimmt. Dabei wird nicht geprüft, ob
die Elemente der DTD sinngemäß
verwandt wurden. Sollten beispielsweise alle Dateinamen als
Funktionsnamen ausgezeichnet worden sein, so würde der
Parser keinen Fehler signalisieren. Formaler ausgedrückt:
Der Parser prüft die Syntax, aber nicht die
Semantik.Es ist anzunehmen, dass, wenn man selber vor hat
Dokumentation für das FDP zu schreiben, der
größte Teil davon mit Hilfe von HTML oder DocBook
geschrieben werden wird. Aus diesem Grunde wird an dieser Stelle
nicht erklärt, wie eine DTD entwickelt wird.Von Elementen, Tags und AttributenAlle in SGML geschriebenen DTDs haben bestimmte gemeinsame
Eigenschaften. Das ist nicht verwunderlich, da sich die hinter
SGML stehende Idee unweigerlich bemerkbar macht. Zwei der
markantesten Merkmale dieser Idee sind die Begriffe
Inhalt und
Element.Von einem Dokument, unabhängig, ob es sich um eine
einzelne Webseite oder ein langes Buch handelt, wird angenommen,
dass es einen wie auch immer gearteten Inhalt hat. Dieser
- läßt sich selbst wiederum in Teilelemente
+ lässt sich selbst wiederum in Teilelemente
aufspalten, die ebenso zerlegbar sind. Durch die Aufnahme von
Auszeichnungselementen in einen Text, werden diese einzelnen
Elemente eindeutig benannt und voneinander abgegrenzt.Nimmt man zum Beispiel ein typisches Buch, so kann man es
auf der obersten Ebene als ein Ganzes, als ein Element
betrachten. Dieses Buch-Element enthält nun
Kapitel, die wiederum selbst als Elemente bezeichnet werden
können. Jedes einzelne Kapitel enthält weitere
Elemente. So gibt es beispielsweise Absätze, Zitate und
Fußnoten. Jeder Absatz kann wiederum selbst Elemente
enthalten, die helfen, den Absatzinhalt als direkte Rede oder
als Namen eines der Protagonisten einer Geschichte zu
identifizieren.Wenn man möchte, kann man sich das als
UnterteilungIm
angelsächsichen Sprachraum wird hier von
chunking gesprochen. des
Inhalts vorstellen. Auf der obersten Ebene gibt es ein Element:
das Buch selbst. Schaut man ein wenig tiefer, findet man weitere
Teilelemente: die einzelnen Kapitel. Diese sind wiederum
unterteilt in Absätze, Fußnoten, Namen und so weiter
und so weiter.Anzumerken ist an dieser Stelle, dass das eben gesagte
ohne weiteres auf jeden Inhaltstyp angewandt werden kann, auch
ohne dass von SGML die Rede ist. Man
könnte beispielsweise einfach verschiedene Stifte nehmen
und einen Ausdruck dieser Fibel vor sich hinlegen und dann mit
verschiedenen Farben die einzelnen Abschnitte des Buchinhalts
markieren.Leider gibt es keinen elektronischen Stift, um das zu tun.
Deshalb muss ein anderer Weg gewählt werden, um zu
bestimmen, zu welchem Element die einzelnen Inhalte
gehören. In SGML-basierten Auszeichnungssprachen wie HTML
und DocBook werden dafür so genannte
Tags eingesetzt.Mit einem solchen Tag wird eindeutig festgelegt, wo ein
bestimmtes Element beginnt und wo es endet. Allerdings
gehört der Tag selber nicht zum Element. Er
legt lediglich die Grenzen des Elements fest. Da jede DTD mit dem Ziel
entwickelt wurde, einen speziellen Inhaltstyp auszuzeichnen,
wird jede DTD verschiedene Elemente kennen, die daher
natürlich auch unterschiedlich benannt sein werden.Der Starttag für ein imaginäres Element mit dem
Namen elementname ist
<elementname>.
Sein Gegenstück, der schließende Endtag, ist
</elementname>.Verwendung eines Elements (Start- und Endtag)HTML kennt das Element p, um
festzulegen, dass ein bestimmter abgegrenzter Bereich
einen Absatz darstellt. Dieses Element hat sowohl einen Start-
als auch einen Endtag.Das ist ein Absatz. Er beginnt mit Starttag
für das Element 'p' und endet mit dem Endtag für
das Element 'p'.
Das ist ein etwas kürzerer Absatz.
]]>Elemente müssen nicht notwendigerweise einen Endtag
haben. Ebenso ist es nicht notwendig, dass Elemente einen
Inhalt haben. Beispielsweise kann in HTML-Dokumenten mittels
eines speziellen Elements festgelegt werden, dass eine
horizontale Linie an einer bestimmten Stelle erscheinen soll. Da
dieses Element offensichtlich keinen Inhalt hat, wird auch kein
Endtag benötigt.Verwendung eines Elements (nur Starttag)In HTML kann man mit dem Element hr
festlegen, dass an einer bestimmten Stelle eine
horizontale Linie angezeigt werden soll. Da dieses Element
keinen Inhalt umschließt, hat es nur einen
Starttag.Das ist ein Abschnitt.
Das ist ein weiterer Absatz. Eine horizontale Linie
trennt ihn vom vorherigen Absatz.
]]>Elemente können andere Elemente enthalten. Im
anfangs erwähnten Buch enthielt das Buch-Element
alle Kapitel-Elemente, die wiederum alle Absatz-Elemente
enthielten und so fort.Verschachtelte Elemente: emDas ist ein einfacher Abschnitt, in dem
einige Wortehervorgehoben wurden.]]>Welche Elemente andere Elemente enthalten können und
welche das sind, wird innerhalb der DTD eines Dokuments
festgelegt.Viele Leute sind oft verwirrt, wenn es um die richtige
Benutzung der Begriffe Tag und Element geht. Im Ergebnis werden
sie oft so genutzt, als wären sie austauschbar.
Allerdings sind sie das nicht.Ein Element ist ein konzeptioneller Teil eines Dokuments
und hat einen festgelegten Anfang und ein festgelegtes
Ende. Ein Tag hingegen markiert die Stelle, an der ein Element
beginnt und endet.Wenn in diesem Dokument von dem Tag
<p> gesprochen wird, ist damit der Text
gemeint, der aus den drei Zeichen <,
p und > besteht. Wird
hingegen von dem Element <p> gesprochen,
ist damit das gesamte Element gemeint.Diese Unterscheidung ist sicherlich subtil. Trotzdem
sollte man sie sich vergegenwärtigen.Elemente können selber Attribute haben, die aus einem
Namen und einem Wert bestehen. Die Attribute haben die Aufgabe,
dem Element zusätzliche Informationen hinzuzufügen.
Denkbar sind hier Festlegungen über die Darstellung,
Bezeichner, über die das Element eindeutig identifiziert
werden kann, oder beliebige andere Informationen.Elementattribute werden in den Starttag
eingefügt und haben die Form
Attributename="Wert".Bei einigen HTML-Versionen kennt das Element
p das Attribut align, mit
dessen Hilfe die Textausrichtung eines Absatzes bestimmt werden
kann. align akzeptiert einen von vier
vorgegebenen Werten: left,
center, right und
justify. Ist align nicht
angegeben, wird vom Standardwert left
ausgegangen.Elemente mit Attributen nutzenDie Verwendung des align-Attributs
für diesen Absatz ist überflüssig, da left
der Standardwert ist.
Dieser Absatz wird hoffentlich mittig dargestellt.
]]>Einige Attribute akzeptieren nur bestimmte Werte, wie
beispielsweise left oder
justify. Andere akzeptieren jeden beliebigen
Wert. Enthält Attributwert doppelte Anführungszeichen
("), wird der Wert in einfachen
Anführungszeichen eingeschlossen.Attribute mit einfachen AnführungszeichenIch stehe rechts!]]>Manchmal können die Anführungszeichen um den
Attributwert weggelassen werden. Allerdings sind die Regeln,
die festlegen wann dies zulässig ist, sehr spitzfindig.
Am besten schließen Sie Attributwerte
immer in Anführungszeichen ein.Die Informationen über Attribute, Elemente und Tags
sind in SGML-Katalogen abgelegt und werden von den verschiedenen
Werkzeugen des Dokumentationsprojektes genutzt, um die
geschriebenen Dokumente zu validieren. Die Programme die durch
textproc/docproj installiert
werden, bringen ihre eigenen Katalogvarianten mit, zudem pflegt
das FDP seine eigenen Kataloge. Beide Katalogarten müssen
von allen Programmen gefunden werden können.Was dafür getan werden muss;…Damit die Beispiele dieser Fibel ausgeführt werden
können, ist es notwendig, dass einige Programme auf
dem Rechner installiert sind und das eine Umgebungsvariable
korrekt gesetzt wird.Der erste Schritt ist die Installation des Ports
textproc/docproj
über das FreeBSD-Portsystem. textproc/docproj ist ein
Metaport, der alle vom FDP
benötigten Programme und Daten aus dem Netz laden und
installieren sollte.Anschließend muss in den Shellkonfigurationsdateien die
Variable SGML_CATALOG_FILESSofern man nicht an der deutschen
Dokumentation arbeitet, müssen die
- Verzeichnisangaben entsprechend anpaßt
+ Verzeichnisangaben entsprechend angepasst
werden. gesetzt werden..profile, für &man.sh.1; und
&man.bash.1; BenutzerSGML_ROOT=/usr/local/share/sgml
SGML_CATALOG_FILES=${SGML_ROOT}/jade/catalog
SGML_CATALOG_FILES=${SGML_ROOT}/iso8879/catalog:$SGML_CATALOG_FILES
SGML_CATALOG_FILES=${SGML_ROOT}/html/catalog:$SGML_CATALOG_FILES
SGML_CATALOG_FILES=${SGML_ROOT}/docbook/4.1/catalog:$SGML_CATALOG_FILES
SGML_CATALOG_FILES=/usr/doc/share/sgml/catalog:$SGML_CATALOG_FILES
SGML_CATALOG_FILES=/usr/doc/en_US.ISO8859-1/share/sgml/catalog:$SGML_CATALOG_FILES
SGML_CATALOG_FILES=/usr/doc/de_DE.ISO8859-1/share/sgml/catalog:$SGML_CATALOG_FILES
export SGML_CATALOG_FILES.cshrc, für &man.csh.1;- und
&man.tcsh.1;-Benutzersetenv SGML_ROOT /usr/local/share/sgml
setenv SGML_CATALOG_FILES ${SGML_ROOT}/jade/catalog
setenv SGML_CATALOG_FILES ${SGML_ROOT}/iso8879/catalog:$SGML_CATALOG_FILES
setenv SGML_CATALOG_FILES ${SGML_ROOT}/html/catalog:$SGML_CATALOG_FILES
setenv SGML_CATALOG_FILES ${SGML_ROOT}/docbook/4.1/catalog:$SGML_CATALOG_FILES
setenv SGML_CATALOG_FILES /usr/doc/share/sgml/catalog:$SGML_CATALOG_FILES
setenv SGML_CATALOG_FILES /usr/doc/en_US.ISO8859-1/share/sgml/catalog:$SGML_CATALOG_FILES
setenv SGML_CATALOG_FILES /usr/doc/de_DE.ISO8859-1/share/sgml/catalog:$SGML_CATALOG_FILESDamit die Änderungen wirksam werden, meldet man
sich ab und anschließend wieder an – oder man
führt die obigen Anweisungen direkt in der Shell
aus und setzt so die benötigten Umgebungsvariablen.Nun sollte man eine Datei
beispiel.sgml anlegen, die den
folgenden Text enthält:Eine Beispieldatei in HTML
Das ist ein Absatz mit etwas Text.
Das ist ein Absatz mit anderem Text.
Dieser Absatz wird rechtsbündig
ausgerichtet.
]]>Nachdem die Datei abgespeichert wurde, kann sie
mit Hilfe eines SGML-Parsers validiert werden.Bestandteil von textproc/docproj
ist nsgmls - ein validierender Parser.
nsgmls liest ein Dokument entsprechend einer SGML-DTD
ein und gibt anschließend ein Element-Structure-Information-Set
(ESIS) aus. Allerdings ist das an dieser Stelle nicht weiter
wichtig.Wird nsgmls mit der Option
aufgerufen, werden nur Fehlermeldungen ausgegeben. Dadurch
kann leicht geprüft werden, ob ein Dokument gültig
ist oder nicht.So prüft man mit nsgmls, ob die neuangelegte
Beispieldatei gültig ist:&prompt.user; nsgmls -s beispiel.sgmlSofern das Beispiel korrekt abgetippt wurde, wird sich
nsgmls ohne jegliche Ausgabe beenden. Das bedeutet,
dass das Dokument erfolgreich validiert werden konnte
und somit gültig ist.Jetzt sollten die Tags title und
/title aus dem Dokument gelöscht
und das Dokument erneut validiert werden:&prompt.user; nsgmls -s beispiel.sgml
nsgmls:beispiel.sgml:5:4:E: character data is not allowed here
nsgmls:beispiel.sgml:6:8:E: end tag for "HEAD" which is not finishedDie Fehlermeldungen, die von nsgmls
ausgegeben werden, sind in durch Doppelpunkte getrennte
Spalten unterteilt.SpalteBedeutung1Der Name des Programms, das den Fehler
meldet. Hier wird immer nsgmls
stehen.2Der Name der fehlerhaften Datei.3Die Zeilennummer des Fehlers.4Die Spaltenummer des Fehlers.5Ein einbuchstabiger Code, der über die
Art des Fehlers informiert. I
steht für eine informelle Meldung,
W für eine Warnung und
E für FehlerNicht immer besteht eine Meldung aus
fünf Spalten. Die Ausgabe von
nsgmls -sv ist
beispielsweise nsgmls:I: SP version
"1.3" (natürlich
abhängig von der Version). Wie man sehen
kann, handelt es sich hier um eine informelle
Meldung. und X für
einen Querverweis. Bei den oben stehenden Ausgaben
handelt es sich also um Fehlermeldungen.6Die Fehlermeldung.Durch das Weglassen des Tags title
sind zwei unterschiedliche Fehler entstanden.Der erste Fehler besagt, dass Inhalt (in diesem
Falle Zeichen anstatt eines Starttags) an einer Stelle
gefunden wurde, an der der Parser etwas anderes erwartet
hat. Genauer gesagt wurde der Starttag eines Elements
erwartet, das innerhalb von head
auftreten kann.Der zweite Fehler wurde dadurch verursacht, dass
das Element head ein
Element title enthalten
muss und nsgmls
nicht berücksichtigt, dass dieser Fehler auf dem
vorhergehenden beruht. Es wird lediglich festgestellt,
dass der Endtag von head auftritt,
obwohl nicht alle notwendigen Elemente vorhanden sind.Zum Schluß sollte der Tag
title wieder in die Beispieldatei
eingefügt werden.Die DOCTYPE-DeklarationAm Anfang jedes Dokuments muss der Name der dem
Dokument zugrundeliegenden DTD angegeben werden. Mit Hilfe
dieser Information können SGML-Parser die verwendete DTD
feststellen und prüfen, ob das Dokument zu ihr konform ist.Üblicherweise steht diese Information in einer Zeile,
die als DOCTYPE-Deklaration bezeichnet wird.Eine Deklaration für ein HTML-Dokument, das nach den
Vorgaben der DTD für HTML 4.0 geschrieben wurde, sieht so
aus:]]>und besteht aus verschiedenen Teilen.<!Die Zeichenkette <! dient hier
als Indikator, dass es sich bei
diesem Ausdruck um eine SGML-Deklaration handelt und diese
Zeile den Dokumententyp festlegt.DOCTYPEZeigt an, dass dies die SGML-Deklaration für
den Dokumententyp ist.htmlNennt das erste Element, das im
Dokument auftaucht.PUBLIC "-//W3C//DTD HTML 4.0//EN"Nennt den Formalen Öffentlichen Bezeichner
auf Englisch Formal Public
Identifier (FPI) der DTD des Dokuments. Diese Information wird
von SGML-Parsern ausgewertet, um die von dem Dokument
referenzierte DTD zu bestimmen.Das Schlüsselwort PUBLIC
gehört nicht zum öffentlichen Bezeichner,
sondern legt fest, wie ein SGML-Parser die DTD finden
kann. Alternative Wege eine DTD zu referenzieren werden
später
gezeigt.>Schließt den mit <! begonnenen
Ausdruck ab.Formale Öffentliche BezeichnerDieser Abschnitt braucht nicht unbedingt zu gelesen zu
werden. Dennoch ist es empfehlenswert, da er nützliche
Hintergrundinformationen enthält, die hilfreich sein
können, falls der SGML-Prozessor die genutzte DTD nicht
finden kann.Jeder öffentliche Bezeichner muss eine bestimmte Syntax
haben, die wie folgt lautet:"Besitzer//SchlüsselwortBeschreibung//Sprache"BesitzerNennt den Besitzer des öffentlichen Bezeichners.Falls diese Zeichenkette mit ISO
beginnt, gehört der Bezeichner dem ISO-Kommitee.
Der Bezeichner "ISO 8879:1986//ENTITIES Greek
Symbols//EN" nennt ISO
8879:1986 als den Besitzer des Satzes von
Entitäten für griechische Zeichen. ISO
8879:1986 ist die ISO-Bezeichnung für den
SGML-Standard.Beginnt die Zeichenkette nicht mit
ISO, sieht sie entweder so
-//Besitzer
oder so
+//Besitzer
aus. Beide Varianten unterscheiden sich also nur durch
das anfängliche + bzw.
-.Sofern am Anfang ein - steht, ist
der Bezeichner nicht öffentlich registriert, steht
hingegen ein + am Anfang, ist er
registriert.Im ISO-Standard ISO 9070:1991 wurde festgelegt, wie
registrierte Namen erzeugt werden können. Unter
anderem können sie von den Bezeichnungen von
ISO-Publikationen, von ISBN-Nummern oder einer
Organisationsbezeichnungen entsprechend ISO 6523
abgeleitet werden. Anträge für neue offiziell
registrierte Bezeichner werden vom ISO-Kommitee an das
American National Standards Institute (ANSI)
weitergeleitet.Da das FreeBSD-Projekt seine Bezeichner nicht hat
registrieren lassen, ist der Besitzer
-//FreeBSD. Unter anderem kann man
daran auch sehen, dass das W3C sich nicht hat
registrieren lassen.SchlüsselwortEs gibt verschiedene Schlüsselwörter mit
denen man die Art der gegebenen Informationen beschreiben
kann. Einige der üblichsten sind
DTD, ELEMENT,
ENTITIES und TEXT.
DTD wird nur für Dateien mit
DTDs verwandt, ELEMENT findet
für Dateien mit Fragmenten von DTDs Verwendung, die
nur Deklarationen für Entitäten und Elemente
enthalten. TEXT wird für
SGML-Inhalte (Texte und Tags) verwendet.BeschreibungEine frei wählbare Beschreibung des Inhalts der
referenzierten Datei. Möglich sind hier
Versionsnummern oder ein kurzer und sinnvoller Text, der
innerhalb der SGML-Welt eindeutig ist.SpracheEin ISO-Code aus zwei Buchstaben, der die für
die Datei verwendete Sprache nennt.
EN steht hier für Englisch,
DE für Deutsch.Die catalog-DateienWenn man die oben beschriebene Syntax für
Bezeichner verwendet und ein Dokument durch einen
SGML-Prozessor schickt, muss dieser die
Möglichkeit haben, den Bezeichner auf eine real
existierende Datei abzubilden, die die benötigte DTD
enthält.Einer der möglichen Wege hierfür sind
Katalogdateien. Eine solche Datei, die üblicherweise
catalog heißt, besteht aus
einzelnen Zeilen, die Bezeichner auf Dateinamen abbilden.
Enthält ein Katalog beispielsweise die ZeilePUBLIC "-//W3C//DTD HTML 4.0//EN" "4.0/strict.dtd"kann ein SGML-Prozessor darüber feststellen, dass die
benötigte DTD in der Datei strict.dtd
im Unterverzeichnis 4.0
des Verzeichnisses des Katalogs zu finden ist.Ein gutes Beispiel für einen Katalog ist
/usr/local/share/sgml/html/catalog.
Diese Datei enthält den Katalog für alle HTML
DTDs, die im Zuge der Installation von textproc/docproj installiert
wurden.Die Variable SGML_CATALOG_FILESNatürlich muss einem SGML-Prozessor noch
mitgeteilt werden können, wo er seine Kataloge finden
kann. Viele Programme bieten hierfür
Kommandozeilenoptionen an, über die man einen oder
mehrere Kataloge angeben kann.Zusätzlich besteht noch die Möglichkeit mit
der Umgebungsvariablen SGML_CATALOG_FILES auf
SGML-Kataloge zu verweisen. Die Einträge von
SGML_CATALOG_FILES müssen aus den
vollständigen Pfadnamen der Kataloge, jeweils durch
Komma getrennt, bestehen.Üblicherweise werden die folgenden Kataloge über
SGML_CATALOG_FILES für
die Arbeit an den Dokumenten des FDPs eingebunden:/usr/local/share/sgml/docbook/4.1/catalog/usr/local/share/sgml/html/catalog/usr/local/share/sgml/iso8879/catalog/usr/local/share/sgml/jade/catalogAllerdings sollte das
schon geschehen
sein.Alternativen zu Formalen Öffentlichen BezeichnernAnstatt mit einem Bezeichner die zum Dokument
gehörende DTD zu referenzieren, kann auch explizit auf
die Datei der DTD verwiesen werden.Die Syntax des DOCTYPE-Deklaration ist in diesem Falle
anders:]]>Das Schlüsselwort SYSTEM legt
fest, dass ein SGML-Prozessor die DTD auf
systemspezifische Art und Weise bestimmen soll.
Meistens, aber nicht immer, wird so auf eine Datei im
Dateisystem verwiesen.Allerdings sollte man öffentliche Bezeichner aus
Gründen der Portabilität bevorzugen, da man so
nicht eine Kopie der DTD mit dem Dokument selber verteilen
muss, beziehungsweise da man, wenn man mit
SYSTEM arbeitet, nicht davon ausgehen kann,
dass die benötigte DTD auf anderen Systemen genau
unter dem gleichen Pfad verfügbar ist.Die Rückkehr zu SGMLAn einer früheren Stelle wurde erwähnt, dass
man SGML nur benötigt, falls man selbst eine DTD entwickeln
möchte. Genaugenommen ist das nicht 100%ig richtig. Einige
Teile der SGML-Syntax können auch in normalen Dokumenten
verwendet werden, falls dies gewünscht oder notwendig
ist.In diesem Falle muss dafür Sorge getragen werden,
dass ein SGML-Prozessor feststellen kann, dass ein
bestimmter Abschnitt des Inhalts SGML ist, das er verarbeiteten
muss.Solche SGML-Abschnitte werden mittels
<! ... > in Dokumenten
besonders gekennzeichnet. Alles, was sich zwischen diesen
Begrenzungen befindet, ist SGML, wie es auch in DTDs gefunden
werden kann.Demnach ist die DOCTYPE-Deklaration
ein gutes Beispiel für SGML, das in Dokumenten verwendet
werden muss…KommentareKommentare sind SGML-Konstrukte, die normalerweise nur
in DTDs gültig sind. Dennoch ist es, wie in
gezeigt,
möglich Fragmente mit SGML-Syntax in Dokumenten zu
verwenden.Zum Abgrenzen von SGML-Kommentaren wird ein doppelter
Bindestrich -- verwendet. Mit
seinem ersten Auftreten öffnet er einen Kommentar, mit
seinem zweiten schließt er ihn wieder.Beispiele für Kommentare in SGML<!-- Testkommentar -->
]]>Es sind zwei BindestricheEs gibt ein Problem mit den PostScript- oder
PDF-Versionen dieses Dokuments. Das obige Beispiel
zeigt vielleicht nur einen Bindestrich (-)
hinter <! und vor
>.Es müssen zwei Bindestriche
und nicht nur einer benutzt werden.
Die PostScript- und PDF-Versionen haben vielleicht
beide Bindestriche zu einem längeren Strich, dem
- em-dash, zusammengefaßt.
+ em-dash, zusammengefasst.
Die HTML-, nur-Text und RTF-Versionen dieses Dokuments
sind nicht von diesem Problem betroffen.
]]>
Hat man früher schon Erfahrungen mit HTML gesammelt,
wird man vielleicht andere Regeln für den Gebrauch von
Kommentaren kennengelernt haben. Beispielsweise wird oft
angenommen, dass Kommentare mit <!--
begonnen und nur mit --> beendet
werden.Dies ist nicht der Fall. Viele
Webbrowser haben fehlerhafte HTML-Parser, die dies akzeptieren.
Die SGML-Parser, die vom FDP verwendet werden, halten sich
strenger an die SGML-Spezifikation und verwerfen Dokumente mit
solchen Fehlern.Fehlerhafte SGML-Kommentare]]>SGML-Parser würden die mittlere Zeile wie folgt
interpretieren:<!DIES IST NICHT TEIL EINES KOMMENTARS>Da es sich hierbei nicht um gültiges SGML handelt, kann
diese Zeile zur verwirrenden Fehlermeldungen führen.]]>Wie das Beispiel zeigt, sollten solche Kommentare
tunlichst vermieden werden.]]>Ein solcher Kommentar ist (ein wenig) besser, kann aber
jemanden, der mit SGML noch nicht so vertraut ist,
verwirren.Fingerübungen…Zur Übung können Sie einige Kommentare in
die Datei beispiel.sgml einfügen
und überprüfen, ob die Datei nun noch erfolgreich
von nsgmls validiert werden kann.Zu Testzwecken sollten Sie
auch noch ein paar fehlerhafte Kommentare hinzufügen
und sich die resultierenden Fehlermeldungen von
nsgmls ansehen.EntitätenEntitäten stellen einen Mechanismus dar, mit dem
einzelnen Dokumententeilen ein Name zugewiesen werden kann.
Findet ein SGML-Parser während des Parsens eine
Entität, ersetzt er diese durch den ihr zugewiesenen
Inhalt.Dadurch steht eine einfache Möglichkeit zur
Verfügung, mit der variabler Inhalt in SGML-Dokumenten
eingebunden werden kann. Zusätzlich sind Entitäten der
einzige Weg, über den eine Datei in eine andere Datei mit
SGML-Mitteln eingebunden werden kann.Es werden zwei Arten von Entitäten unterschieden:
Allgemeine Entitäten und
Parameterentitäten.Allgemeine EntitätenAllgemeine Entitäten können nur in
Dokumenten benutzt werden. Sie können zwar im
SGML-Kontext definiert aber dort nicht benutzt
werden. Vergleichen Sie dies mit
Im Parameterentitäten.Jede allgemeine Entität hat einen Namen, über
den sie angesprochen werden kann, um den von ihr
referenzierten Inhalt in ein Dokument einzubinden. Dafür
muss an der betreffenden Stelle der Namen der
Entität per
&entitaetenname;
einfügt werden. Eine Entität
current.version könnte beispielsweise
durch die aktuelle Versionsnummer eines Programms ersetzt
werden. Man könnte also schreiben:Die aktuelle Version des
Programms ist ¤t.version;.]]>Wenn sich die Versionsnummer ändert, muss
- nur die Entität angepaßt und anschließend
+ nur die Entität angepasst und anschließend
das Dokument neu erzeugt werden.Eine weitere Einsatzmöglichkeit für Allgemeine
Entitäten ist das Einbinden von Zeichen, die auf andere
Weise nicht in ein SGML-Dokument eingefügt werden
könnten. Ein Beispiel für solche Zeichen sind
- < und &, die normalerweise nicht direkt in
+ < und &, die
+ normalerweise nicht direkt in
SGML-Dokumenten erlaubt sind. Stößt ein SGML-Parser
- bei seiner Arbeit auf das Symbol <, nimmt er an, dass
- der Anfang eines Start- oder Endtags gefunden wurde. Bei einem
- & wird er annehmen, den Anfang einer Entität gefunden
- zu haben.
+ bei seiner Arbeit auf das Symbol <,
+ nimmt er an, dass der Anfang eines Start- oder Endtags
+ gefunden wurde. Bei einem & wird er
+ annehmen, den Anfang einer Entität gefunden zu haben.
Wenn eines der beiden Zeichen benötigt wird, werden
- die allgemeinen Entitäten < und &
- verwendet.
+ daher die allgemeinen Entitäten <
+ und & verwendet.
Allgemeine Entitäten können nur in einem
SGML-Kontext definiert werden. Üblich ist es, dies direkt
nach der DOCTYPE-Deklaration zu tun:Allgemeine Entitäten festlegen
]>]]>Wichtig ist an dieser Stelle, dass die
DOCTYPE-Deklaration durch eine eckige Klammer am Ende der
ersten Zeile erweitert wurde. Die beiden Entitäten
selber werden in den folgenden zwei Zeilen definiert, bevor
in der letzten Zeile die eckige Klammer und die
DOCTYPE-Deklaration wieder geschlossen werden.Die eckigen Klammern sind notwendig um festzulegen, dass
man die über DOCTYPE genannte DTD erweitern möchte.ParameterentitätenGenau wie Allgemeine
Entitäten werden Parameterentitäten
eingesetzt um wiederverwendbare Inhaltsteile mit Namen zu
versehen. Im Gegensatz zu Allgemeinen Entitäten
können sie aber nur innerhalb eines SGML-Kontextes
genutzt werden.Die Definition von Parameterentitäten erfolgt
ähnlich zu der Allgemeiner Entitäten. Sie werden
lediglich mit
%entitaetenname;
anstelle von
&entitaetenname;
referenziertEs wird das Prozentzeichen anstelle des
kaufmännischen Unds verwendet.. Wichtig ist, dass das
%-Zeichen zwischen
ENTITY und dem Entitätennamen ein Teil
der Definition ist.Parameterentitäten festlegen
]>]]>Fingerübungen…Fügen Sie in beispiel.sgml
eine Allgemeine Entität ein.
]>
Eine HTML-Beispieldatei
Das ist ein Absatz mit etwas Text.
Das ist ein Absatz mit anderem Text.
Dieser Absatz wird rechtsbündig
ausgerichtet.
Die aktuelle Version ist: &version;
]]>Validieren Sie diese Datei mit
nsgmlsÖffnen Sie nun beispiel.sgml
mit Ihrem Webbrowser. Es kann notwendig sein, dass
Sie die Datei vorher in beispiel.html
umbenennen müssen, damit die Datei auch als
HTML-Dokument erkannt wird.Nur wenn Sie einen sehr modernen Browser haben, werden
Sie sehen können, dass
&version; durch die Versionsnummer
ersetzt wurde. Leider haben die meisten Webbrowser
sehr einfache SGML-Parser, die nicht richtig mit SGML
umgehen könnenEigentlich ist das eine Schande. Man stelle sich
vor, welche Probleme und Hacks, wie beispielsweise
Server Side Includes, man an dieser Stelle hätte
vermeiden können..Die Lösung hierfür ist, das Dokument zu
normalisieren. Zu diesem Zweck liest
ein Normer
das Dokument ein und gibt anschließend semantisch
gleichwertiges SGML wieder aus, dass auf verschiedene
Arten transformiert worden sein kann. Eine dieser
möglichen Transformationen ist das Ersetzen der
Referenzen auf Entitäten mit dem von ihnen
präsentierten Inhalt.Versuchen Sie, die Beispieldatei mittels
sgmlnorm zu normalisieren:&prompt.user; sgmlnorm beispiel.sgml > beispiel.htmlAnschließend sollten Sie eine normalisierte
Version, dass heißt eine, bei der die
Entitäten gegen ihren Inhalt ersetzt wurden, in der
Datei beispiel.html finden. Diese
Datei können Sie sich nun mit Ihrem Browser
ansehen.Wenn Sie sich die Ausgaben von sgmlnorm
ansehen, werden Sie feststellen, dass
die DOCTYPE-Deklaration am Anfang der Datei nicht mehr
enthalten ist. Möchten Sie die Deklaration behalten,
muss sgmlnorm mit der Option
aufrufen werden:&prompt.user; sgmlnorm -d beispiel.sgml > beispiel.htmlDateien mit Entitäten einbindenSowohl Allgemeine als
auch Parameterentitäten
sind nützliche Helfer, wenn es darum geht, eine Datei in
eine andere einzubinden.Dateien mit Allgemeinen Entitäten einbindenAngenommen man hat ein Buch geschrieben, dessen Inhalt
auf mehrere Dateien aufgeteilt und mittels SGML
ausgezeichnet. Jedes Kapitel wurde dazu in einer eigenen Datei
(kapitel1.sgml,
kapitel2.sgml usw.) abgelegt und
über eine Datei buch.sgml sollen
alle physischen Dateien wieder mit der Hilfe von
Entitäten zu einem logischen Dokument
zusammengeführt werden.Damit der Inhalt der Dateien mit Entitäten
eingebunden werden kann, muss die Deklaration der
Entitäten das Schlüsselwort
SYSTEM enthalten. SGML-Parser werden so
angewiesen, den Inhalt der referenzierten Datei als Wert
für die jeweilige Entität zu nehmen.Dateien mit Allgemeinen Entitäten einbinden
]>
&kapitel.1;
&kapitel.2;
&kapitel.3;
]]>Wenn man Allgemeine Entitäten benutzt, um andere
Dateien einzubinden, dürfen diese Dateien
(kapitel1.sgml,
kapitel2.sgml, ...)
keine eigene DOCTYPE-Deklaration
haben.Dateien mit Parameterentitäten einbindenWie bereits festgestellt, können
Parameterentitäten nur innerhalb eines SGML-Kontexts
genutzt werden. Warum möchte man aber Dateien innerhalb
eines SGML-Kontexts einbinden? Der Vorteil liegt in der
Möglichkeit, die Deklaration von Entitäten in eine
andere Datei auslagern zu können, wodurch diese leichter
wiederverwendbar sind.Angenommen das Buch aus dem vorherigen Kapitel besteht aus
sehr vielen Kapiteln und diese sollen auch in einem anderen
Buch, aber in einer anderen Reihenfolge, verwendet werden.
Eine Möglichkeit wäre es, die dafür notwendigen
Entitäten am Anfang jedes Buches einzeln festzulegen
– was allerdings mit der Zeit unhandlich und
fehlerträchtig wird.Alternativ bietet sich dazu an, die Deklarationen in eine
separate Datei auszulagern und deren Inhalt anschließend
in beide Bücher über Parameterentitäten
einzubinden.Dateien mit Parameterentitäten einbindenZuerst werden die Entitäten in einer separaten
Datei namens kapitel.ent deklariert.
kapitel.ent enthält für
dieses Beispiel die folgenden Zeilen:
]]>Im zweiten Schritt fügt man in beide Bücher
eine Parameterentität ein, die den Inhalt von
kapitel.ent referenziert, und lädt
über diese dann die Deklarationen. Anschließend
können die so geladenen Entitäten wie gewohnt
genutzt werden.
%kapitel;
]>
&kapitel.1;
&kapitel.2;
&kapitel.3;
]]>Fingerübungen…Binden Sie Dateien über Allgemeine Entitäten einLegen Sie drei Dateien (absatz1.sgml,
absatz2.sgml und absatz3.sgml)
mit jeweils einer Zeile wie
Erster Absatz.]]>
an.Ändern Sie beispiel.sgml so
ab, dass sie wie folgt aussieht:
]>
Eine HTML-Beispieldatei
Die aktuelle Version dieses Dokuments ist &version;
&absatz1;
&absatz2;
&absatz3;
]]>Erzeugen Sie nun die Datei
beispiel.html, indem Sie
beispiel.sgml normalisieren:&prompt.user; sgmlnorm -d beispiel.sgml > beispiel.htmlÖffnen Sie beispiel.html
nun mit einem Webbrowser und vergewissern Sie sich,
dass der Inhalt der Dateien
absatzN.sgml
in beispiel.html übernommen
wurde.Binden Sie Dateien mit Parameterentitäten einHierfür müssen Sie die vorherige Fingerübung gemacht haben.Ändern Sie beispiel.sgml so
ab, dass es wie folgt aussieht: %entitaeten;
]>
Eine HTML-Beispieldatei
Die aktuelle Version dieses Dokuments ist &version;
&absatz1;
&absatz2;
&absatz3;
]]>Legen Sie eine weitere Datei entitaeten.sgml an,
die folgenden Inhalt hat:
]]>Erzeugen Sie die Datei
beispiel.html, indem Sie
beispiel.sgml normalisieren:&prompt.user; sgmlnorm -d beispiel.sgml > beispiel.htmlÖffnen Sie beispiel.html
nun mit einem Webbrowser und vergewissern Sie sich,
dass der Inhalt der Dateien
absatzN.sgml
in beispiel.html übernommen
wurde.Markierte BereicheSGML erlaubt es, dass bestimmte Dokumentabschnitte
während der Verarbeitung besonders behandelt werden sollen.
Diese Abschnitte werden als markierte Bereicheauf Englisch marked
sections
bezeichnet.Aufbau eines markierten Bereiches<![ SCHLÜSSELWORT [
Inhalt des markierten Bereiches
]]>Da es sich bei markierten Bereichen um SGML-Konstrukte
handelt, werden sie mit <! eingeleitet.
Der eigentliche Anfang des markierten Bereiches wird von der
folgenden eckigen Klammer bestimmt. Das darauf folgende
SCHLÜSSELWORT legt fest, wie der
markierte Inhalt durch einen SGML-Prozessor
während der Verarbeitung behandelt werden soll. Der
markierte Inhalt selbst beginnt erst nach der
zweiten eckigen Klammer und erstreckt sich bis zu den zwei
schließenden eckigen Klammern am Ende des Bereiches. Mit
Hilfe des > Zeichens wird der mit
<! begonnene SGML-Kontext wieder
verlassen.Schlüsselworte für markierte BereicheCDATA und RCDATADie Schlüsselworte CDATA und
RCDATA bestimmen das
Inhaltsmodell für markierte
Bereiche. Dadurch ist es möglich, vom Standardmodell
abzuweichen.Ein SGML-Prozessor muss während der
Verarbeitung eines Dokuments zu jedem Zeitpunkt wissen,
welches Inhaltsmodell gerade anzuwenden
ist.Was ist ein Inhaltsmodell? Kurz gesagt beschreibt das
Inhaltsmodell, welche Art von Inhalt der Parser zu erwarten
und wie er damit umzugehen hat.Bei CDATA und
RCDATA handelt es sich wahrscheinlich um
die nützlichsten Inhaltsmodelle.
CDATA steht für
Zeichendatenauf Englisch character
data. Trifft ein
Parser auf dieses Inhaltsmodell, wird er annehmen, dass
sich im zugehörigen Dokumentenbereich nur
gewöhnliche Zeichen befinden. Das
- bedeutet, dass < und & ihre besondere Bedeutung
+ bedeutet, dass < und
+ & ihre besondere Bedeutung
verlieren und als einfache Zeichen behandelt werden.RCDATA steht für
Entitätenreferenzen und Zeichendatenauf
Englisch
Entity references and character
data. Für einen
Bereich mit diesem Inhaltsmodell, wird ein Parser davon
ausgehen, dass er sowohl Zeichen als auch
- Enitätenreferenzen finden kann. < verliert hier zwar
- auch seine besondere Bedeutung, doch & wird weiterhin
- als Anfang einer Entität interpretiert.
+ Enitätenreferenzen finden kann. <
+ verliert hier zwar auch seine besondere Bedeutung, doch
+ & wird weiterhin als Anfang einer
+ Entität interpretiert.
Nützlich ist das CDATA-Modell
vor allem dann, wenn es darum geht Texte eins-zu-eins zu
- übernehmen, in denen < und & gehäuft
+ übernehmen, in denen < und
+ & gehäuft
auftreten. Zwar kann man solche Texte überarbeiten und
- jedes < durch ein < und jedes & durch ein
- & ersetzen, doch es wird in den meisten Fällen
+ jedes < durch ein
+ < und jedes
+ & durch ein &
+ ersetzen, doch es wird in den meisten Fällen
einfacher sein, für den betreffenden Text
CDATA als Inhaltsmodell festzulegen. Ein
- SGML-Parser wird dann, sobald er auf < und & trifft,
+ SGML-Parser wird dann, sobald er auf
+ < oder & trifft,
diese als Zeichen in einem Text betrachten.Bei der Verwendung von CDATA und
RCDATA als Inhaltsmodell für
SGML-Beispiele, wie sie in diesem Dokument enthalten sind,
muss bedacht werden, dass der Inhalt eines
CDATA-Bereiches nicht validiert wird.
dass das SGML in diesen Bereichen gültig ist,
muss auf andere Weise sichergestellt werden. Denkbar ist
beispielsweise, es in einem separaten Dokument zu
erstellen, dort zu prüfen und erst dann in das
eigentliche Dokument einzufügen.CDATA als Inhaltsmodell für markierte Bereiche<para>Das ist ein Beispiel, wie man einen Text,
- der viele < und & Entitäten enthält, in ein
- Dokument einbinden kann.
+ der viele <- und &-
+ Entitäten enthält, in ein Dokument einbinden kann.
Das Beispiel selbst, das sich innerhalb des markierten Bereiches befindet,
ist ein HTML-Fragment. Der diesen Text umschließende Tag, beginnend mit
mit para und endend mit /para, stammt aus der DocBook DTD.</para>
<programlisting>
<![ RCDATA [ Dieses Beispiel demonstriert die Verwendung von HTML-Elementen.
Da spitze Klammern so oft vorkommen, ist es einfacher, das
gesamte Beispiel als CDATA Abschnitt auszuweisen, als die
entsprechenden Entitäten zu nutzen.
Das ist ein Listenelement.
Das ist ein zweites Listenelement.
Das ist ein drittes Listenelement.
Und das hier, das ist das Ende des Beispiels.
]]>
]]>
</programlisting>Liest man die Quellen dieser Fibel, wird man
feststellen, dass diese Technik durchgängig
angewandt wurde.INCLUDE und
IGNOREDas Schlüsselwort INCLUDE legt
fest, dass der Inhalt des betreffenden Abschnittes
mitverarbeitet wird. Demgegenüber bestimmt
IGNORE, dass er ignoriert wird,
dass heißt, dass er bei der Verarbeitung
übergangen wird und in der Ausgabe nicht enthalten
ist.Anwendung von INCLUDE und
IGNORE in markierten
Abschnitten<![ INCLUDE [
Dieser Text wird verarbeitet und eingebunden.
]]>
<![ IGNORE [
Dieser Text wird weder verarbeitet noch eingebunden.
]]>Für sich alleine ist IGNORE als
Anweisung nicht besonders nützlich, da ein Bereich, der
von der Verarbeitung ausgenommen sein soll, auch
auskommentiert werden kann.Kombiniert man IGNORE hingegen mit
Parameterentitäten,
steht so ein Weg zur Verfügung, um dessen Anwendung
besser steuern zu können. Zwar können
Parameterentitäten nur in einem SGML-Kontext einsetzt
werden, da aber markierte Bereiche ebenfalls SGML-Konstrukte
sind, ist diese Einschränkung irrelevant.Soll beispielsweise ein und dasselbe Dokument in zwei
unterschiedlichen Varianten produziert werden, einer
gedruckten und einer digitalen, und soll nur die digitale
zusätzliche Informationen enthalten, kann dies mit
einem Trick erreicht werden.Man definiert eine Parameterentität, der man als
Wert die Zeichenkette INCLUDE zuweist und
deklariert den betreffenden Bereich, der nur in der
digitalen Variante erscheinen soll, als markierten Abschnitt
und setzt als Schlüsselwort die zuvor definierte
Parameterentität ein.Soll anstelle der digitalen die gedruckte Variante
produziert werden, muss lediglich der Entität
IGNORE als Wert zugewiesen und das
Ursprungsdokument erneut durch den SGML-Prozessor geschickt
werden.Kontrolle von markierten Bereichen über
Parameterentitäten<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0//EN" [
<!ENTITY % digitale.kopie "INCLUDE">
]]>
...
<![ %digitale.kopie [
Dieser Satz sollte nur in der digitalen Version enthalten sein.
]]>Bei der Produktion der gedruckten Variante muss
der Wert der Entität geändert werden.<!ENTITY % digitale.kopie "IGNORE">Bei der Verarbeitung wird als Schlüsselwort in
beiden Fällen der von
%digitale.kopie repräsentierte
Wert verwendet. Im ersten Fall wird der Inhalt des
markierten Bereichs mitverarbeitet, im zweiten Fall
nicht.Fingerübung…Legen Sie eine neue Datei
abschnitt.sgml an, die folgenden
Inhalt hat:<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0//EN" [
<!ENTITY % text.ausgabe "INCLUDE">
]>
<html>
<head>
<title>Ein Beispiel mit markierten Abschnitten</title>
</head>
<body>
<p>Dieser Absatz <![ CDATA [beinhaltet viele <
Zeichen (< < < < <). Weshalb es einfacher ist,
ihn als CDATA Bereich auszuweisen. ]></p>
<![ IGNORE [
<p>Dieser Absatz wird NICHT in der Ausgabe enthalten sein.</p>
]]>
<![ [
<p>Dieser Absatz wird in Abhängigkeit von %text.ausgabe
mitausgegeben.</p>
]]>
</body>
</html>Normalisieren Sie den Inhalt dieser Datei mit Hilfe
von sgmlnorm und sehen Sie sich das
Ergebnis an. Achten Sie dabei darauf, welche Absätze
enthalten beziehungsweise nicht enthalten sind und was aus
den CDATA-Bereichen geworden ist.Ändern Sie die Definition von
text.ausgabe so, dass es den
Wert IGNORE zugewiesen bekommt.
Verarbeiten Sie dann die Datei erneut mit
sgmlnorm und vergleichen die Ausgabe mit
der vom ersten sgmlnorm Lauf.SchlußbemerkungAus Platzgründen, und um der Verständlichkeit
Willen, wurden viele Gesichtspunkte nicht in aller Tiefe
beziehungsweise gar nicht besprochen. Trotzdem sollte in den
bisherigen Kapiteln genügend Wissen über SGML
vermittelt worden sein, um den Aufbau der Dokumentation des FDPs
zu verstehen.
diff --git a/de_DE.ISO8859-1/books/fdp-primer/translations/chapter.sgml b/de_DE.ISO8859-1/books/fdp-primer/translations/chapter.sgml
index 7d3360d89c..fefeea3caa 100644
--- a/de_DE.ISO8859-1/books/fdp-primer/translations/chapter.sgml
+++ b/de_DE.ISO8859-1/books/fdp-primer/translations/chapter.sgml
@@ -1,516 +1,516 @@
JohannKoisÜbersetzt von ÜbersetzungenDieses Kapitel enthält die FAQ für die Übersetzung
der FreeBSD Dokumentation (FAQ, Handbuch, Artikel, Manualpages und
sonstige Dokumente) in andere Sprachen.Es beruht sehr stark auf den
Übersetzungs-FAQ des FreeBSD German Documentation Projects, die
ursprünglich von Frank Gründer
elwood@mc5sys.in-berlin.de geschrieben und danach von
Bernd Warken bwarken@mayn.de ins Englische
übersetzt wurden.Diese FAQ wird vom &a.doceng; gepflegt.Warum eine FAQ?Es melden sich immer mehr Leute auf der Mailingliste
freebsd-doc, die Teile der FreeBSD Dokumentation in andere
Sprachen übersetzen wollen. Diese FAQ soll die
am häufigsten gestellten Fragen beantworten, damit
möglichst rasch mit der Übersetzung begonnen
werden kann.Was bedeuten die Abkürzungen i18n
und l10n?i18n steht für
internationalization
(Internationalisierung), l10n für
localization (Lokalisierung).
Es handelt sich dabei um besser handhabbare Abkürzungen
dieser Begriffe.i18n kann als i, gefolgt
von 18 Buchstaben, gefolgt von einem n, gelesen
werden. Analog steht l10n für
l, gefolgt von 10 Buchstaben, gefolgt von einem
n.Gibt es eigene Mailinglisten für Übersetzer?Ja. Die verschiedenen Übersetzergruppen haben jeweils
eigene Mailinglisten. Genauere Informationen finden Sie in der
Liste der Übersetzungsprojekte. Diese Liste
enthält die Mailinglisten und Internetseiten, die von den
einzelnen Übersetzungsprojekten betrieben werden.Werden noch Übersetzer benötigt?Ja. Je mehr Leute an der Übersetzung arbeiten, desto
schneller wird diese fertig, und umso schneller sind
Änderungen im englischen Original auch in den
übersetzten Dokumenten vorhanden.Sie müsssen kein professioneller Dolmetscher sein, um
dabei zu helfen.Welche Sprachen muss ich dafür kennen/können?Idealerweise haben Sie gute Kenntnisse in geschriebenem
Englisch, außerdem sollten Sie natürlich fit in
der Sprache sein, in die Sie übersetzen wollen.Englisch ist allerdings nicht unbedingt nötig. Sie
könnten beispielsweise auch die FAQ vom Spanischen ins
Ungarische übersetzen.Welche Software wird benötigt?Es ist sehr empfehlenswert, eine lokale Kopie des FreeBSD
CVS-Repository (als Minimum den Dokumentationsteil) anzulegen,
entweder mit CTM oder mit
CVSup. Das Kapitel Das
Neueste und Beste des Handbuchs beschreibt die
Nutzung dieser Programme.Sie sollten außerdem mit
CVS vertraut sein. Damit ist es
möglich, festzustellen, was sich zwischen einzelnen
Versionen eines Dokuments geändert hat.[XXX Aufgabe -- Ein Tutorial schreiben, das die Verwendung
von CVSup beschreibt, um die Dokumentation herunterzuladen,
auszuchecken und festzustellen, was sich zwischen zwei
Versionen geändert hat.]Wie finde ich heraus, ob noch jemand Teile der
Dokumentation in die gleiche Sprache übersetzt?Die
Übersetzungsseite des Documentation Projects
listet alle Übersetzungs-Teams auf, die derzeit aktiv
sind. Arbeitet bereits jemand an der Übersetzung in
Ihre Sprache, so kontaktieren Sie dieses Team, damit
Dokumente nicht unnötigerweise mehrfach übersetzt
werden.Wenn Ihre Sprache nicht aufgeführt ist, senden Sie
bitte eine E-Mail an das &a.doc;. Vielleicht denkt ja jemand
über eine Übersetzung nach, hat sich aber noch nicht
dafür entschieden.Niemand übersetzt in meine Sprache. Was soll ich
machen?Gratulation, Sie haben gerade das FreeBSD
Ihre-Sprache Documentation
Translation Project gestartet. Willkommen.Entscheiden Sie zuerst, ob Sie die dafür nötige
Zeit zur Verfügung haben. Da Sie als Einziger an der
Übersetzung in Ihre Sprache arbeiten, sind Sie dafür
verantwortlich, Ihre Arbeit zu veröffentlichen und die
Arbeit von Freiwilligen, die Ihnen dabei helfen wollen, zu
koordinieren.Senden Sie eine E-Mail an die Mailingliste des
Documentation Projects, in der Sie bekanntgeben, dass Sie an
der Übersetzung der Dokumentation arbeiten, damit die
Internetseiten aktualisiert werden können.Gibt es in Ihrem Land einen FreeBSD-Spiegelserver, so
sollten Sie den dafür Zuständigen kontaktieren und
nachfragen, ob er Ihnen Speicherplatz oder E-Mailadressen
für Ihr Projekt zur Verfügung stellen würde.Danach wählen Sie ein Dokument aus und beginnen
mit der Übersetzung. Am besten beginnen Sie mit kleineren
Dateien, beispielsweise den FAQ oder einem der Artikel.Ich habe ein Dokument übersetzt. Wo soll ich es
hinschicken?Das kommt darauf an. Wenn Sie bereits in einem
Übersetzer-Team arbeiten (etwa dem japanischen oder dem
deutschen Team), dann sollten Sie deren Richtlinien zum Umgang
mit neuer Dokumentation folgen, die auf deren Internetseiten
beschrieben werden.Wenn Sie die einzige Person sind, die an der
Übersetzung in eine Sprache arbeitet, oder wenn Sie
für ein Übersetzungsprojekt verantwortlich sind,
und Ihre Aktualisierungen an das FreeBSD Project
übermitteln wollen, sollten Sie Ihre Übersetzungen
dorthin senden (lesen Sie dazu auch die nächste
Frage).Ich arbeite als einziger an der Übersetzung in diese
Sprache, wie versende ich meine Übersetzungen?oderWir sind ein Übersetzer-Team, und wollen Dokumente
versenden, die unsere Mitglieder übersetzt haben?Stellen Sie zuerst sicher, dass Ihre Übersetzungen
korrekt organisiert sind. Sie sollte sich also im
existierenden Dokumentationsbaum befinden, und ohne Fehler
bauen lassen.Zurzeit wird die FreeBSD Dokumentation unterhalb des
Verzeichnisses doc/ gespeichert. Die
direkten Unterverzeichnisse werden entsprechend der
Sprachkodierung benannt, in der sie geschrieben sind. Diese
Kodierung nach ISO639 finden Sie auf einem FreeBSD-System
unter /usr/share/misc/iso639,
vorausgesetzt, das System wurde nach dem 20. Januar 1999
gebaut.Wenn in Ihrer Sprache mehrere Kodierungen (wie dies etwa
für Chinesisch der Fall ist) vorhanden sind, existiert
für jede Kodierung ein eigenes Unterverzeichnis.Zuletzt existieren auch noch Verzeichnisse für die
einzelnen Dokumente.Die Verzeichnishierarchie für eine hypothetische
schwedische Übersetzung könnte etwa so
aussehen:doc/
sv_SE.ISO8859-1/
Makefile
books/
faq/
Makefile
book.sgmlBei sv_SE.ISO8859-1 handelt es sich um
den Namen der Übersetzung in der
lang.encoding
Form. Beachten Sie auch, dass zum Bauen der Dokumentation
zwei Makefiles notwendig sind.Komprimieren Sie Ihre Übersetzungen mit &man.tar.1;
und &man.gzip.1; und senden Sie sie an das FreeBSD
Project.&prompt.user; cd doc
&prompt.user; tar cf swedish-docs.tar sv
&prompt.user; gzip -9 swedish-docs.tarLegen Sie das Archiv swedish-docs.tar.gz
irgendwo ab. Wenn Sie keinen eigenen Webspace haben (etwa weil
Ihr Internetprovider Ihnen keinen zur Verfügung stellt),
können Sie auch eine E-Mail an das &a.doceng; schicken, um
abzuklären, ob Sie die Datei auch als E-Mail schicken
können.In beiden Fällen sollten Sie mit &man.send-pr.1;
einen Bericht über den Versand der Dokumentation
erstellen. Es ist sehr hilfreich, wenn Sie Ihre
Übersetzung vorher korrekturlesen lassen und
überprüfen, da es unwahrscheinlich ist, dass
der Committer Ihre Sprache sehr gut beherrscht.Danach wird jemand (meistens der Documentation Project
Manager, derzeit ist dies das &a.doceng;) überprüfen,
ob sich Ihre Übersetzungen problemlos bauen lassen. Dabei
wird besonders auf folgende Punkte geachtet:Verwenden alle Dateien RCS-Strings (wie "ID")?Arbeitet make all im Verzeichnis
sv_SE.ISO8859-1 korrekt?Funktioniert make install ohne
Probleme?Gibt es dabei Probleme, so wird die Person, die Ihren
Beitrag durchsieht, sich wieder an Sie wenden, damit Sie
das Problem beheben.Treten keine Probleme auf, wird Ihre Übersetzung
so rasch als möglich committed.Kann ich landes- oder sprachspezifische Informationen
in meine Übersetzung aufnehmen?Wir bitten Sie, dies nicht zu tun.Nehmen wir an, dass Sie das Handbuch ins Koreanische
übersetzen und einen Abschnitt mit
Händlerinformationen in das Handbuch aufnehmen
wollen.Es gibt keinen Grund, warum diese Information nicht auch
in der englischen (oder der deutschen, oder der spanischen,
oder der japanischen oder der …) Version vorhanden sein
sollte. Es ist etwa denkbar, dass sich jemand mit englischer
Muttersprache während eines Aufenthalts in Korea eine
FreeBSD-Kopie kaufen möchte. Außerdem wird dadurch
die weltweite Präsenz von FreeBSD verdeutlicht, was
natürlich ebenfalls von Vorteil ist.Wenn Sie also länderspezifische Informationen
ergänzen wollen, sollten Sie dies zuerst in der englischen
Version (mittels &man.send-pr.1;) tun, und die Änderung
anschließend in Ihre Sprache übersetzen.Vielen Dank.Wie lassen sich sprachspezifische Zeichen darstellen?Nicht-ASCII-Zeichen innerhalb der Dokumentation werden
durch SGML-Entities dargestellt.Diese bestehen aus: Kaufmännischem Und (&),
den Namen der Entity, und einem Strichpunkt (;).Die Namen der Entities sind in ISO8879 definiert, die als
Port textproc/iso8879
installiert werden kann.Dazu einige Beispiele:EntityDarstellungBeschreibungééKleines e mit (akutem) AkzentÉÉGroßes E mit (akutem) AkzentüüKleines Umlaut-uNachdem Sie den iso8879-Port installiert haben, ist die
vollständige Liste unter
/usr/local/share/sgml/iso8879
vorhanden.Wie spricht man den Leser an?In englischen Dokumenten wird der Leser mit
you angesprochen, es wird nicht zwischen
formeller/informeller Anrede unterschieden, wie dies in
manchen anderen Sprachen der Fall ist.Wenn Sie in eine Sprache übersetzen, die diese
Unterscheidung trifft, verwenden Sie die Form, die auch in
den anderen technischen Dokumentationen dieser Sprache
verwendet wird. Für deutsche Versionen ist dies die
dritte Person Plural (Sie).Muss ich zusätzliche Informationen in meine
Übersetzungen einbauen?Ja.Der Header der englischen Version jedes Textes sieht in
etwa so aus:<!--
The FreeBSD Documentation Project
$FreeBSD: doc/en_US.ISO8859-1/books/fdp-primer/translations/chapter.sgml,v 1.5 2000/07/07 18:38:38 dannyboy Exp $
-->Das exakte Aussehen kann unterschiedlich sein, die Zeile
mit $FreeBSD$ sowie der Ausdruck The
FreeBSD Documentation Project sind allerdings immer
enthalten. Beachten Sie, dass die Zeile mit $FreeBSD
von CVS automatisch expandiert wird, daher sollte an dieser
Stelle in Ihren neuen Dokumenten nur
$FreeBSD$ stehen.Ihre übersetzten Dokumente sollten eine eigene
$FreeBSD$-Zeile enthalten. Zusätzlich
sollten Sie die Zeile mit The FreeBSD Documentation
Project in The FreeBSD
Ihre-Sprache Documentation
Project ändern.Außerdem sollten Sie eine weitere Zeile
einfügen, die festlegt, auf welcher Version des englischen
Originals Ihre Übersetzung basiert.Die spanische Version dieser Datei könnte etwa so
beginnen:<!--
The FreeBSD Spanish Documentation Project
$FreeBSD: doc/es_ES.ISO8859-1/books/fdp-primer/translations/chapter.sgml,v 1.3 1999/06/24 19:12:32 jesusr Exp $
Original revision: 1.11
-->
diff --git a/de_DE.ISO8859-1/books/fdp-primer/writing-style/chapter.sgml b/de_DE.ISO8859-1/books/fdp-primer/writing-style/chapter.sgml
index e9f5b6a7e1..a5c2ed2803 100644
--- a/de_DE.ISO8859-1/books/fdp-primer/writing-style/chapter.sgml
+++ b/de_DE.ISO8859-1/books/fdp-primer/writing-style/chapter.sgml
@@ -1,535 +1,535 @@
JohannKoisÜbersetzt von Der SchreibstilDamit von verschiedenen Autoren geschriebene Dokumente
zueinander konsistent bleiben, gibt es einige Richtlinien, denen
Autoren bei der Erstellung ihrer Dokumente folgen müssen.Verwendung von amerikanischem EnglischEs gibt mehrere englische Varianten und damit verbunden
verschiedene Schreibweisen für das gleiche Wort. Wo dies
der Fall ist, ist die amerikanische Schreibweise zu verwenden.
Man schreibt daher color statt
colour, rationalize statt
rationalise, und so weiter.Die Verwendung von Britischem Englisch ist akzeptabel,
wenn es sich einen neuen Beitrag handelt, solange die
gesamte Schreibweise eines Dokuments einheitlich bleibt.
Alle anderen Dokumente wie Bücher, Internetseiten,
Manualpages und andere müssen allerdings
Amerikanisches Englisch verwenden.Vermeiden von ZusammenziehungenVerwenden Sie keine Zusammenziehungen, sondern schreiben
Sie die Phrase immer aus. Die Schreibweise
Don't use contractions. wäre also nicht
korrekt.Die Vermeidung von Zusammenziehungen sorgt für einen
etwas formelleren Ton, ist präziser und erleichtert die
Arbeit der Übersetzer.Nutzung von Kommas bei AufzählungenBei einer Aufzählung innerhalb eines Absatzes sollten
Sie zwischen den einzelnen Begriffen Kommas setzen. Zwischen
dem letzten und vorletzten Begriff setzen Sie ein Komma und
das Wort und.Dazu ein Beispiel:
Das ist eine Liste von ein, zwei und drei Dingen.
Handelt es sich dabei um eine Liste von drei Begriffen,
ein, zwei, und
drei, oder um eine Liste von zwei Begriffen,
ein und zwei und drei?Es ist daher besser, explizit ein serielles Komma zu
setzen:
Das ist eine Liste von ein, zwei, und drei Dingen.
Vermeidung von redundanten BegriffenVersuchen Sie, keine redundanten Phrasen zu verwenden.
Dies gilt insbesondere für die Ausdrücke
der Befehl, die Datei, und
man command.Die folgenden zwei Beispiele veranschaulichen dies
für Befehle. Bevorzugt wird die Schreibweise des
zweiten Beispiels.Verwenden Sie den Befehl cvsup, um
Ihre Quellen zu aktualisieren.Verwenden Sie cvsup, um Ihre Quellen
zu aktualisieren.Analoges gilt für Dateinamen, wobei wiederum die
zweite Schreibweise bevorzugt wird.… in der Datei
/etc/rc.local…… in
/etc/rc.local…Auch für Manualpages gibt es zwei Schreibweisen.
Auch hier wird die zweite Schreibweise bevorzugt (das
zweite Beispiel nutzt das Tag
citerefentry).Weitere Informationen finden Sie in
man csh.Weitere Informationen finden Sie in &man.csh.1;.Zwei Leerzeichen am SatzendeVerwenden Sie immer zwei Leerzeichen am Ende eines Satzes.
Dadurch erhöht sich die Lesbarkeit des Textes und die
Nutzung von Werkzeugen wie Emacs
wird vereinfacht.Nun könnte man behaupten, dass ein Punkt vor einem
Großbuchstaben das Satzende markiert. Vor allem bei
Namen, beispielsweise bei Jordan K. Hubbard,
ist dies allerdings nicht der Fall. Wir haben hier ein
großes H, gefolgt von einem Punkt
und einem Leerzeichen. Dennoch handelt es sich nicht um
den Anfang eines neuen Satzes.Eine ausführliche Beschreibung des korrekten Schreibstils
finden Sie im Buch Elements
of Style von William Strunk.Anleitungen für einen korrekten SchreibstilDamit die Quellen der Dokumentation selbst dann konsistent
bleiben, wenn viele Leute daran arbeiten, folgen Sie bitte den
folgenden Konventionen.Groß- und KleinschreibungTags werden in Kleinbuchstaben geschrieben, Sie schreiben
also <para>, nicht<PARA>.Text im SGML-Kontext wird hingegen in Großbuchstaben
geschrieben. Man schreibt also
<!ENTITY…> und
<!DOCTYPE…>,
nicht<!entity…> und
<!doctype…>.Abkürzungen (Akronyme)Abkürzungen sollten bei ihrer ersten Verwendung immer
ausgeschrieben werden. Man schreibt also beispielsweise
"Network Time Protocol
(NTP)." Nachdem
die Abkürzung definiert wurde, sollte hingegen nur noch die
Abkürzung verwendet werden, es sei denn, die Verwendung des
gesamten Begriffes macht im jeweiligen Kontext mehr Sinn.
Im Normalfall werden Akronyme in jedem Buch nur einmal definiert.
Es ist allerdings auch möglich, sie für jedes Kapitel
erneut zu definieren.Die drei ersten Vorkommen der Abkürzung sollten in
<acronym>-Tags eingeschlossen werden. Zusätzlich
wird ein role-Attribut mit dem
vollständigen Begriff definiert. Dadurch kann ein Link
zu einem Glossar erzeugt werden. Außerdem wird der
komplette Begriff angezeigt, wenn man den Mauscursor über
die Abkürzung bewegt.EinrückungDie erste Zeile jeder Datei hat die Einrückung 0, und
zwar unabhängig von der Einrückung
der Datei, in der sie enthalten ist.Öffnende Tags erhöhen die Einrückung um zwei
Leerzeichen. Schließende Tags verringern sie hingegen um
zwei Leerzeichen. Ein Block von acht Leerzeichen wird durch
einen Tabulator ersetzt. Ein solcher Block beginnt immer am
Anfang einer Zeile, führende Leerzeichen sind hier also
nicht erlaubt. Vermeiden Sie außerdem Leerzeichen am
Zeilenende. Der Inhalt von Elementen wird um zwei Leerzeichen
eingerückt, wenn er sich über mehr als eine Zeile
erstreckt.Der Quellcode dieses Abschnitts sieht daher in etwa so
aus:......EinrückungDie erste Zeile jeder Datei hat die Einrückung 0, und
zwar unabhängig von der Einrückung
der Datei, in der sie enthalten ist.
...
]]>
Wenn Sie Emacs oder
XEmacs verwenden, um Ihre Dateien zu
bearbeiten, sollte der sgml-mode automatisch
geladen werden, und die lokalen
Emacs-Variablen am Ende einer Datei
sollten diesen Stil erzwingen.Verwenden Sie Vim, sollten Sie
Ihren Editor so konfigurieren:augroup sgmledit
autocmd FileType sgml set formatoptions=cq2l " Special formatting options
autocmd FileType sgml set textwidth=70 " Wrap lines at 70 columns
autocmd FileType sgml set shiftwidth=2 " Automatically indent
autocmd FileType sgml set softtabstop=2 " Tab key indents 2 spaces
autocmd FileType sgml set tabstop=8 " Replace 8 spaces with a tab
autocmd FileType sgml set autoindent " Automatic indentation
augroup ENDDie korrekte Schreibweise von TagsEinrücken von TagsTags, die die gleiche Einrückung aufweisen wie das
vorangegangene Tag, sollten durch eine Leerzeile getrennt
werden, Tags mit unterschiedlicher Einrückung hingegen
nicht:NISOctober 1999...
...
...............
]]>Gliederung von TagsTags wie zum Beispiel itemizedlist, die
immer weitere Tags einschließen und selbst keine Zeichen
enthalten, befinden sich immer in einer eigenen Zeile.Tags wie para und
term können selbst Text enthalten,
und ihr Inhalt beginnt direkt nach dem Tag, und zwar
in der gleichen Zeile.Dies gilt analog, wenn diese zwei Tag-Arten wieder
geschlossen werden.Eine Vermischung dieser Tags kann daher zu Problemen
führen.Wenn auf ein Start-Tag, das keine Zeichen enthalten kann,
unmittelbar ein Tag folgt, das andere Tags einschließen
muss, um Zeichen darzustellen, befinden sich diese Tags auf
verschiedenen Zeilen. Das zweite Tag wird dabei
entsprechend eingerückt.Wenn ein Tag, das Zeichen enthalten kann, direkt nach
einem Tag, das keine Zeichen enthalten kann, geschlossen wird,
befinden sich beide Tags in der gleichen Zeile.Markup-Änderungen (white space
changes)Wenn Sie Änderungen committen, committen Sie
niemals Inhalts- und Formatierungsänderungen zur gleichen
Zeit.Nur auf diese Weise können die Übersetzungs-Teams
sofort erkennen, welche Änderungen durch Ihren Commit
verursacht wurden, ohne darüber nachdenken zu müssen,
ob sich eine Zeile geädert hat, weil Sie den Inhalt
geändert haben, oder weil Sie sie nur umformatiert
haben.Nehmen wir an, Sie haben zwei Sätze in einen Absatz
eingefügt. Daher sind zwei Zeilen nun länger als
80 Zeichen. Zuerst committen Sie Ihre inhaltliche
Änderung inklusive der zu langen Zeilen. Im nächsten
Commit korrigieren Sie den Zeilenumbruch und geben in der
Commit-Mitteilung an, dass es sich nur um Änderung am
Markup handelt (whitespace-only
change), und Übersetzer den Commit daher
ignorieren können.Vermeiden von fehlerhaften Zeilenumbrüchen
(Nutzung von nonbreaking space)Vermeiden Sie Zeilenumbrüche an Stellen, an denen diese
häßlich aussehen oder es erschweren, einem Satz zu
folgen. Zeilenumbrüche hängen von der Breite des
gewählten Augabemedium ab. Insbesondere bei der Verwendung
von Textbrowsern können schlecht formatierte Absätze
wie der folgende entstehen:Data capacity ranges from 40 MB to 15
GB. Hardware compression …Die Nutzung der Entity
verhindert Zeilenumbrüche zwischen zusammengehörenden
Teilen. Verwenden Sie nonbreaking
spaces daher in den folgenden Fällen:Zwischen Zahlen und Einheiten:Zwischen Programmnamen und Versionsnummern:Zwischen mehreren zusammengehörenden Wörtern
(Vorsicht bei Namen, die aus mehr als 3-4 Wörtern
bestehen, wie The FreeBSD Brazilian Portuguese
Documentation Project):Häufig verwendete WörterDie folgende Liste enthält einige Beispiele, wie
bestimmte Wörter innerhalb des FreeBSD
Documentation Projects geschrieben werden. Finden Sie ein
gesuchtes Wort hier nicht, sehen Sie bitte in der
Liste häufig verwendeter Wörter von
O'Reilly nach.2.2.X4.X-STABLECD-ROMDoS (Denial of Service)Ports CollectionIPsecInternetMHzSoft UpdatesUnixdisk labelemailfile systemmanual pagemail servername servernull-modemweb server
diff --git a/de_DE.ISO8859-1/books/handbook/basics/chapter.sgml b/de_DE.ISO8859-1/books/handbook/basics/chapter.sgml
index 43cadd3f75..b4b78a4316 100644
--- a/de_DE.ISO8859-1/books/handbook/basics/chapter.sgml
+++ b/de_DE.ISO8859-1/books/handbook/basics/chapter.sgml
@@ -1,2751 +1,2752 @@
ChrisShumwayUmgeschrieben von UwePierauÜbersetzt von Grundlagen des UNIX BetriebssystemsÜbersichtDas folgende Kapitel umfasst die grundlegenden Kommandos
und Funktionsweisen des Betriebssystems FreeBSD. Viel von dem folgenden
Material gilt auch für jedes andere &unix; System.
Falls Sie mit dem Material schon vertraut sind, können Sie dieses
Kapitel überlesen. Wenn FreeBSD neu für Sie ist, dann sollten
Sie dieses Kapitel auf jeden Fall aufmerksam lesen.Dieser Abschnitt behandelt die folgenden Themen:virtuelle Konsolen,Zugriffsrechte unter &unix; sowie Datei-Flags unter &os;,Zugriffskontrolllisten für Dateisysteme,die Verzeichnisstruktur von &os;,Organisation von Dateisystemen unter &os;,Ein- und Abhängen von Dateisystemen,Prozesse, Dämonen und Signale,Shells und die Login-Umgebung,Texteditoren,Geräte und Gerätedateien,Binärformate unter &os; undwie Sie in den Manualpages nach weiteren Informationen
suchen können.Virtuelle Konsolen und Terminalsvirtuelle KonsoleTerminalsSie können FreeBSD mit einem Terminal benutzen, der nur Text
darstellen kann. Wenn Sie FreeBSD auf diese Weise benutzen, stehen
Ihnen alle Möglichkeiten eines &unix; Betriebssystems zur
Verfügung. Dieser Abschnitt beschreibt was Terminals und
Konsolen sind und wie sie unter FreeBSD eingesetzt werden.Die KonsoleKonsoleWenn Ihr FreeBSD-System ohne eine graphische
Benutzeroberfläche startet, wird am Ende des Systemstarts,
nachdem die Startskripten gelaufen sind, ein Anmeldeprompt
ausgegeben. Die letzten Startmeldungen sollten ähnlich wie
die Folgenden aussehen:Additional ABI support:.
Local package initialization:.
Additional TCP options:.
Fri Sep 20 13:01:06 EEST 2002
FreeBSD/i386 (pc3.example.org) (ttyv0)
login:Beachten Sie die letzten beiden Zeilen der Ausgabe, die
vorletzte lautet:FreeBSD/i386 (pc3.example.org) (ttyv0)Diese Zeile enthält einige Informationen über das
gerade gestartete System. Die Ausgabe stammt von der
FreeBSD-Konsole einer Maschine mit einem Intel oder
Intel-kompatiblen Prozessor der x86-ArchitekturGenau das ist mit i386 gemeint. Auch
wenn Ihr System keine Intel 386 CPU besitzt, wird
i386 ausgegeben. Es wird immer die
Architektur und nicht der Typ des Prozessors ausgegeben.. Der Name des Systems (jedes &unix; System besitzt
einen Namen) ist pc3.example.org und die Ausgabe
stammt von der Systemkonsole, dem Terminal
ttyv0.Das Ende der Ausgabe ist immer die Aufforderung zur Eingabe
eines Benutzernamens:login:Der Anmeldevorgang wird im nächsten Abschnitt
erläutert.Der AnmeldevorgangFreeBSD ist ein Mehrbenutzersystem, das Multitasking
unterstützt. Das heißt mehrere Benutzer können
gleichzeitig viele Programme auf einem System laufen lassen.Jedes Mehrbenutzersystem muss die Benutzer voneinander
unterscheiden können. Bei FreeBSD und allen anderen &unix;
Betriebssystemen wird dies dadurch erreicht, dass sich die
Benutzer anmelden müssen, bevor sie Programme laufen lassen
können. Jeder Benutzer besitzt einen eindeutigen Namen (den
Account) und ein dazugehörendes Passwort, die beide bei
der Anmeldung abgefragt werden.StartskriptenNachdem FreeBSD gestartet ist und die StartskriptenStartskripten sind Programme, die FreeBSD automatisch bei
jedem Startvorgang ausführt. Der Zweck der Skripte
besteht darin, das System zu konfigurieren und nützliche
Dienste im Hintergrund zu starten., gelaufen sind, erscheint eine Aufforderung zur Eingabe
des Benutzernamens:login:Wenn Ihr Benutzername beispielsweise john
ist, geben Sie jetzt john gefolgt von
Enter ein. Sie sollten dann eine Aufforderung zur
Eingabe des Passworts erhalten:login: john
Password:Geben Sie jetzt das Passwort von john
gefolgt von Enter ein. Das Passwort wird aus
Sicherheitsgründen nicht auf dem Bildschirm angezeigt.Wenn Sie das richtige Passwort eingegeben haben, sind Sie
am System angemeldet und können nun alle verfügbaren
Kommandos absetzen.Anmgemeldet sind Sie, wenn Sie die Tagesmeldungen
(message of today) gefolgt
von einer Eingabeaufforderung (dem Zeichen #,
$ oder %) gesehen
haben.Virtuelle KonsolenDa FreeBSD mehrere Programme gleichzeitig laufen lassen kann,
ist eine einzige Konsole, an der Kommandos abgesetzt werden
können, zu wenig. Abhilfe schaffen virtuelle Konsolen, die
mehrere Konsolen zur Verfügung stellen.Die Anzahl der virtuellen Konsolen unter FreeBSD können Sie
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.Zum Umschalten der Konsolen stellt FreeBSD spezielle
Tastenkombinationen bereitEine recht technische und genaue Beschreibung der FreeBSD-Konsole
und der Tastatur-Treiber finden Sie in den Hilfeseiten
&man.syscons.4;, &man.atkbd.4;, &man.vidcontrol.1; und
&man.kbdcontrol.1;. Lesen Sie diese Seiten, wenn Sie an den
Einzelheiten interessiert sind.. Benutzen Sie
AltF1,
AltF2 bis
AltF8,
um zwischen den verschiedenen Konsolen umzuschalten.Wenn Sie zu einer anderen Konsole wechseln, sichert FreeBSD den
Bildschirminhalt und gibt den Bildschirminhalt der neuen Konsole
aus. Dies erzeugt die Illusion mehrerer Bildschirme und
Tastaturen, an denen Sie Kommandos absetzen können. Wenn eine
Konsole nicht sichtbar ist, weil Sie auf eine andere Konsole
gewechselt haben, laufen die dort abgesetzten Kommandos
weiter./etc/ttysIn der Voreinstellung stehen unter FreeBSD acht virtuelle
Konsolen zur Verfügung, deren Anzahl Sie leicht erhöhen
oder verringern können. Die Anzahl und Art der Konsolen wird
in /etc/ttys eingestellt.Jede Zeile in /etc/ttys, die nicht mit
# anfängt, konfiguriert einen Terminal oder
eine virtuelle Konsole. In der Voreinstellung werden in dieser
Datei neun virtuelle Konsolen definiert, von denen acht aktiviert
sind. Die Konsolen sind in den Zeilen, die mit
ttyv beginnen, definiert:# name getty type status comments
#
ttyv0 "/usr/libexec/getty Pc" cons25 on secure
# Virtual terminals
ttyv1 "/usr/libexec/getty Pc" cons25 on secure
ttyv2 "/usr/libexec/getty Pc" cons25 on secure
ttyv3 "/usr/libexec/getty Pc" cons25 on secure
ttyv4 "/usr/libexec/getty Pc" cons25 on secure
ttyv5 "/usr/libexec/getty Pc" cons25 on secure
ttyv6 "/usr/libexec/getty Pc" cons25 on secure
ttyv7 "/usr/libexec/getty Pc" cons25 on secure
ttyv8 "/usr/X11R6/bin/xdm -nodaemon" xterm off secureDie Hilfeseite &man.ttys.5; enthält eine ausführliche
Beschreibung der Spalten dieser Datei und der Optionen, die Sie zum
Konfigurieren der virtuellen Konsolen benutzen können.Die Konsole im Single-User-ModusEine eingehende Beschreibung des Single-User-Modus finden Sie
in . Im Single-User-Modus steht
Ihnen nur eine Konsole zur Verfügung.
Die Definition dieser Konsole befindet sich ebenfalls in
/etc/ttys. Suchen Sie nach einer Zeile, die
mit console beginnt:# name getty type status comments
#
# If console is marked "insecure", then init will ask for the root password
# when going to single-user mode.
console none unknown off secureIn der Zeile, die mit console beginnt,
können Sie secure durch
insecure ersetzen. Wenn Sie danach in den
Single-User-Modus booten, verlangt das System ebenfalls die
Eingabe des root-Passworts.Setzen Sie insecure nicht
leichtfertig ein. Wenn Sie das Passwort von
root vergessen, wird es schwierig, in den
Single-User-Modus zu gelangen, wenn Sie den
FreeBSD-Boot-Prozess nicht genau verstehen.ZugriffsrechteUNIXFreeBSD, das ein direkter Abkömmling von BSD &unix; ist,
stützt sich auf mehrere Grundkonzepte von &unix; Systemen.
Das erste und ausgeprägteste: FreeBSD ist
ein Mehrbenutzer-Betriebssystem. Das System ermöglicht,
dass mehrere Benutzer gleichzeitig an völlig verschiedenen
und unabhängigen Aufgaben arbeiten können. Es ist
verantwortlich für eine gerechte Auf- und Zuteilung von
Nachfragen nach Hardware- und Peripheriegeräten, Speicher
und CPU-Zeit unter den Benutzern.Da das System mehrere Benutzer unterstützt, hat alles,
was das System verwaltet, einen Satz von Rechten, die bestimmen,
wer die jeweilige Ressource lesen, schreiben oder ausführen
darf. Diese Zugriffsrechte stehen in drei Achtergruppen, die in
drei Teile unterteilt sind: einen für den Besitzer der
Datei, einen für die Gruppe, zu der die Datei gehört
und einen für alle anderen. Die numerische Darstellung
sieht wie folgt aus:ZugriffsrechteDateizugriffsrechteWertZugriffsrechteAuflistung im Verzeichnis0Kein Lesen, Kein Schreiben, Kein Ausführen---1Kein Lesen, Kein Schreiben, Ausführen--x2Kein Lesen, Schreiben, Kein Ausführen-w-3Kein Lesen, Schreiben, Ausführen-wx4Lesen, Kein Schreiben, Kein Ausführenr--5Lesen, Kein Schreiben, Ausführenr-x6Lesen, Schreiben, Kein Ausführenrw-7Lesen, Schreiben, AusführenrwxlsVerzeichnisseSie können auf der Kommandozeile
von &man.ls.1; angeben, um eine ausführliche Verzeichnisauflistung
zu sehen, die in einer Spalte die Zugriffsrechte für den
Besitzer, die Gruppe und alle anderen enthält.
Die Ausgabe von ls -l könnte
wie folgt aussehen:&prompt.user; ls -l
total 530
-rw-r--r-- 1 root wheel 512 Sep 5 12:31 myfile
-rw-r--r-- 1 root wheel 512 Sep 5 12:31 otherfile
-rw-r--r-- 1 root wheel 7680 Sep 5 12:31 email.txt
...Die erste Spalte der Ausgabe enthält die
Zugriffsrechte:-rw-r--r--Das erste Zeichen von links ist ein Symbol, welches angibt,
ob es sich um eine normale Datei, ein Verzeichnis, ein
zeichenorientiertes Gerät, ein Socket oder irgendeine andere
Pseudo-Datei handelt. In diesem Beispiel zeigt - eine
normale Datei an. Die nächsten drei Zeichen,
dargestellt als rw-, ergeben die Rechte
für den Datei-Besitzer. Die drei Zeichen danach
r-- die Rechte der Gruppe, zu der die Datei
gehört. Die letzten drei Zeichen, r--,
geben die Rechte für den Rest der Welt an. Ein Minus
bedeutet, dass das Recht nicht gegeben ist. In diesem Fall
sind die Zugriffsrechte also: der Eigentümer kann die Datei
lesen und schreiben, die Gruppe kann lesen und alle anderen
können auch nur lesen. Entsprechend obiger Tabelle
wären die Zugriffsrechte für diese Datei
644, worin jede Ziffer die drei Teile der
Zugriffsrechte dieser Datei verkörpert.Das ist alles schön und gut, aber wie kontrolliert das
System die Rechte von Hardware-Geräten? FreeBSD behandelt
die meisten Hardware-Geräte als Dateien, welche Programme
öffnen, lesen und mit Daten beschreiben können wie
alle anderen Dateien auch. Diese Spezial-Dateien sind im
Verzeichnis /dev gespeichert.Verzeichnisse werden ebenfalls wie Dateien behandelt. Sie
haben Lese-, Schreib- und Ausführ-Rechte. Das
Ausführungs-Bit hat eine etwas andere Bedeutung für
ein Verzeichnis als für eine Datei. Die Ausführbarkeit
eines Verzeichnisses bedeutet, dass in das Verzeichnis
zum Beispiel mit cd gewechselt werden kann.
Das bedeutet auch, dass in dem Verzeichnis auf Dateien, deren
Namen bekannt sind, zugegriffen werden kann, vorausgesetzt die
Zugriffsrechte der Dateien lassen dies zu.Das Leserecht auf einem Verzeichnis erlaubt es, sich den Inhalt
des Verzeichnisses anzeigen zu lassen. Um eine Datei mit bekanntem
Namen in einem Verzeichnis zu löschen, müssen auf dem
Verzeichnis Schreib- und Ausführ-Rechte
gesetzt sein.Es gibt noch mehr Rechte, aber die werden vor allem in
speziellen Umständen benutzt, wie zum Beispiel bei
SetUID-Binaries und Verzeichnissen mit gesetztem Sticky-Bit.
Mehr über Zugriffsrechte von Dateien und wie sie gesetzt werden,
finden Sie in &man.chmod.1;.TomRhodesBeigesteuert von Symbolische ZugriffsrechteZugriffsrechtesymbolischeDie Zugriffsrechte lassen sich auch über Symbole
anstelle von oktalen Werten festlegen. Symbolische
Zugriffsrechte werden in der Reihenfolge
Wer, Aktion
und Berechtigung angegeben.
Die folgenden Symbole stehen zur Auswahl:OptionSymbolBedeutungWeruBenutzer (user)WergGruppe (group)WeroAndere (other)WeraAlleAktion+Berechtigungen hinzufügenAktion-Berechtigungen entziehenAktion=Berechtigungen explizit setzenBerechtigungrlesen (read)Berechtigungwschreiben (write)Berechtigungxausführen
(execute)BerechtigungtSticky-BitBerechtigungsSet-UID oder Set-GIDSymbolische Zugriffsrechte werden wie die numerischen
mit dem Kommando &man.chmod.1; vergeben. Wenn
Sie beispielsweise allen anderen Benutzern den Zugriff auf
die Datei FILE verbieten wollen,
benutzen Sie den nachstehenden Befehl:&prompt.user; chmod go= FILEWenn Sie mehr als eine Änderung der Rechte einer
Datei vornehmen wollen, können Sie eine durch Kommata
getrennte Liste der Rechte angeben. Das folgende Beispiel
entzieht der Gruppe und der Welt (den anderen) die
Schreibberechtigung auf die Datei FILE
und fügt dann für alle Ausführungsrechte
hinzu:&prompt.user; chmod go-w,a+x FILETomRhodesBeigetragen von &os; Datei-FlagsZusätzlich zu den vorhin diskutierten Zugriffsrechten
unterstützt &os; auch die sogenannten
Datei-Flags. Diese erhöhen die Sicherheit
Ihres Systems, indem sie eine verbesserte Kontrolle von
Dateien erlauben. Verzeichnisse werden allerdings nicht
unterstützt.Diese verbesserte Sicherheit führt dazu, dass manche
Dateien nicht einmal von root gelöscht
oder bearbeitet werden können.Datei-Flags können über &man.chflags.1; gesetzt
oder gelöscht werden. Um beispielsweise die Datei
file1 mit dem
unlöschbar-Flag zu sichern, geben Sie
folgenden Befehl ein:&prompt.root; chflags sunlink file1Um dieses Flag wieder zu löschen, geben Sie den
Befehl erneut ein. Allerdings setzen Sie ein
no vor :&prompt.root; chflags nosunlink file1Um die Flags dieser Datei anzuzeigen, verwenden Sie
&man.ls.1; zusammen mit der Option :&prompt.root; ls -lo file1Dadurch erhalten Sie eine Ausgabe ähnlich der
folgenden:-rw-r--r-- 1 trhodes trhodes sunlnk 0 Mar 1 05:54 file1Viele Flags können nur von root
gesetzt oder gelöscht werden. Andere wiederum können
auch vom Eigentümer der Datei gesetzt werden. Weitere
Informationen zu Datei-Flags finden sich in den Manualpages
&man.chflags.1; und &man.chflags.2;.Verzeichnis-StrukturenVerzeichnis HierarchienDie FreeBSD-Verzeichnishierarchie ist die Grundlage, um
ein umfassendes Verständnis des Systems zu erlangen.
Das wichtigste Konzept, das Sie verstehen sollten, ist das
Root-Verzeichnis /. Dieses Verzeichnis ist das
erste, das während des Bootens eingehangen wird. Es
enthält das notwendige Basissystem, um das System in den
Mehrbenutzerbetrieb zu bringen. Das Root-Verzeichnis enthält
auch die Mountpunkte anderer Dateisysteme, die später
eingehangen werden.Ein Mountpunkt ist ein Verzeichnis, in das zusätzliche
Dateisysteme in das / Verzeichnis eingepflanzt
werden können.
Standard-Mountpunkte sind /usr,
/var, /tmp,
/mnt sowie /cdrom.
Auf diese Verzeichnisse verweisen üblicherweise Einträge
in der Datei /etc/fstab.
/etc/fstab ist
eine Tabelle mit verschiedenen Dateisystemen und Mountpunkten
als Referenz des Systems. Die meisten der Dateisysteme in
/etc/fstab werden beim Booten automatisch
durch das Skript &man.rc.8; gemountet, wenn die zugehörigen
Einträge nicht mit der Option
- versehen sind. Weitere Informationen zu diesem Thema enthält
- der Abschnitt .
+ versehen sind. Weitere Informationen zu diesem Thema finden Sie
+ im .
Eine vollständige Beschreibung der Dateisystem-Hierarchie
finden Sie in &man.hier.7;. Als Beispiel sei eine kurze
- Übersicht über die gebräuchlisten Verzeichnisse
- gegeben:
+ Übersicht über die am häufigsten verwendeten
+ Verzeichnisse gegeben:
VerzeichnisBeschreibung
-
+
/
- Root-Verzeichnis des Dateisystems.
+ Wurzelverzeichnis des Dateisystems./bin/Grundlegende Werkzeuge für den Single-User-Modus
sowie den Mehrbenutzerbetrieb./boot/Programme und Konfigurationsdateien, die während
des Bootens benutzt werden./boot/defaults/Vorgaben für die Boot-Konfiguration, siehe
&man.loader.conf.5;./dev/Gerätedateien, siehe &man.intro.4;./etc/Konfigurationsdateien und Skripten des Systems./etc/defaults/Vorgaben für die System Konfigurationsdateien,
siehe &man.rc.8;./etc/mail/Konfigurationsdateien von MTAs wie
&man.sendmail.8;./etc/namedb/Konfigurationsdateien von named,
siehe &man.named.8;./etc/periodic/Täglich, wöchentlich oder monatlich
ablaufende Skripte, die von &man.cron.8; gestartet werden.
Siehe &man.periodic.8;./etc/ppp/Konfigurationsdateien von ppp,
siehe &man.ppp.8;./mnt/Ein leeres Verzeichnis, das von Systemadministratoren
häufig als temporärer Mountpunkt genutzt wird./proc/Prozess Dateisystem, siehe &man.procfs.5;
und &man.mount.procfs.8;./rescue/Statisch gelinkte Programme zur Wiederherstellung
des Systems, lesen Sie dazu auch &man.rescue.8;./root/Home Verzeichnis von root./sbin/Systemprogramme und administrative Werkzeuge, die
grundlegend für den Single-User-Modus und den
Mehrbenutzerbetrieb sind./stand/Programme, die ohne andere Programme oder Bibliotheken
laufen.
-
/tmp/Temporäre Dateien, die für gewöhnlich
- nicht nach einem Reboot erhalten werden. Dies kann
- ein speicherbasiertes Dateisystem, siehe &man.mfs.8;,
- sein.
+ nicht nach einem Reboot erhalten werden. Häufig wird
+ ein speicherbasiertes Dateisystem unter
+ /tmp
+ eingehängt. Weitere Informationen finden Sie in den
+ Manualpages &man.mdmfs.8; sowie &man.mfs.8; (für
+ &os; 4.X).
-
/usr/Der Großteil der Benutzerprogramme und
Anwendungen./usr/bin/Gebräuchliche Werkzeuge, Programmierhilfen und
Anwendungen./usr/include/Standard C include-Dateien./usr/lib/Bibliotheken./usr/libdata/Daten verschiedener Werkzeuge./usr/libexec/System-Dämonen und System-Werkzeuge, die von
anderen Programmen ausgeführt werden./usr/local/Lokale Programme, Bibliotheken usw. Die Ports-Sammlung
benutzt dieses Verzeichnis als Zielverzeichnis für zu
installierende Anwendungen. Innerhalb von
/usr/local sollte das von
&man.hier.7; beschriebene Layout für
/usr benutzt werden. Das
man Verzeichnis wird direkt unter
/usr/local anstelle unter
/usr/local/share angelegt. Die
Dokumentation der Ports findet sich in
share/doc/port.
/usr/obj/Von der Architektur abhängiger Verzeichnisbaum,
der durch das Bauen von /usr/src
entsteht./usr/portsDie FreeBSD-Ports-Sammlung (optional)./usr/sbin/System-Dämonen und System-Werkzeuge, die von
Benutzern ausgeführt werden./usr/share/Von der Architektur unabhängige Dateien./usr/src/Quelldateien von BSD und/oder lokalen
Ergänzungen./usr/X11R6/Optionale X11R6-Programme und Bibliotheken./var/Wird für mehrere Zwecke genutzt und enthält
Logdateien, temporäre Daten und Spooldateien./var/log/Verschiedene Logdateien des Systems./var/mail/Postfächer der Benutzer./var/spool/Verschiedene Spool-Verzeichnisse der Drucker- und
Mailsysteme./var/tmp/Temporäre Dateien, die über Reboots erhalten
bleiben./var/ypNIS maps.Festplatten, Slices und Partitionen&os; identifiziert Dateien anhand eines Dateinamens.
In Dateinamen wird zwischen Groß- und Kleinschreibung
unterschieden: readme.txt und
README.TXT bezeichnen daher zwei
verschiedene Dateien. &os; benutzt keine Dateiendungen wie
.txt, um den Typ der Datei
(ein Programm, ein Dokument oder andere Daten) zu
bestimmen.Dateien werden in Verzeichnissen gespeichert. In einem
Verzeichnis können sich keine oder hunderte Dateien
befinden. Ein Verzeichnis kann auch andere Verzeichnisse
enthalten und so eine Hierarchie von Verzeichnissen aufbauen,
die Ihnen die Ablage von Daten erleichtert.In Dateinamen werden Verzeichnisse durch einen
Schrägstrich (/,
Slash) getrennt. Wenn
das Verzeichnis foo
ein Verzeichnis bar
enthält, in dem sich die Datei readme.txt
befindet, lautet der vollständige Name der Datei
(oder der Pfad zur Datei)
foo/bar/readme.txt.Verzeichnisse und Dateien werden in einem Dateisystem
gespeichert. Jedes Dateisystem besitzt ein
Wurzelverzeichnis
(Root-Directory),
das weitere Verzeichnisse enthalten kann.Dieses Konzept kennen Sie vielleicht von anderen
Betriebssystemen, aber es gibt einige Unterschiede:
In &ms-dos; werden Datei- und Verzeichnisnamen mit dem
Zeichen \ getrennt, &macos; benutzt
dazu das Zeichen :.&os; kennt keine Laufwerksbuchstaben und in Pfaden
werden keine Bezeichnungen für Laufwerke benutzt.
Die Pfadangabe c:/foo/bar/readme.txt
gibt es in &os; nicht.Stattdessen wird ein Dateisystem als Wurzeldateisystem
- (Root-Filesystem)
+ (root file system)
ausgewählt. Das Wurzelverzeichnis dieses Dateisystems
wird / genannt.
Jedes andere Dateisystem wird unter dem Wurzeldateisystem
eingehangen
(mount). Daher scheint
jedes Verzeichnis, unabhängig von der Anzahl der
Platten, auf derselben Platte zu liegen.Betrachten wir drei Dateisysteme A,
B und C. Jedes
Dateisystem besitzt ein eigenes Wurzelverzeichnis, das
zwei andere Verzeichnisse enthält:
A1,
A2,
B1,
B2,
C1 und
C2.Das Wurzeldateisystem soll A sein.
Das Kommando ls zeigt darin
die beiden Verzeichnisse A1
und A2 an.
Der Verzeichnisbaum sieht wie folgt aus: /
|
+--- A1
|
`--- A2Ein Dateisystem wird in einem Verzeichnis eines anderen
Dateisystems eingehangen. Wir hängen nun das Dateisystem
B in das Verzeichnis
A1 ein. Das
Wurzelverzeichnis von B ersetzt nun
das Verzeichnis A1 und
die Verzeichnisse des Dateisystems B
werden sichtbar: /
|
+--- A1
| |
| +--- B1
| |
| `--- B2
|
`--- A2Jede Datei in den Verzeichnissen
B1 oder
B2 kann
über den Pfad /A1/B1
oder /A1/B2
erreicht werden. Dateien aus dem Verzeichnis
/A1 sind jetzt
verborgen. Wenn das Dateisystem B
wieder abgehangen wird
(umount), erscheinen
die verborgenen Dateien wieder.Wenn das Dateisystem B unter dem
Verzeichnis A2
eingehangen würde, sähe der Verzeichnisbaum
so aus: /
|
+--- A1
|
`--- A2
|
+--- B1
|
`--- B2Die Dateien des Dateisystems B wären
unter den Pfaden /A2/B1 und
/A2/B2 erreichbar.Dateisysteme können übereinander eingehangen
werden. Der folgende Baum entsteht, wenn im letzten
Beispiel das Dateisystem C in das Verzeichnis
B1 des Dateisystems
B eingehangen wird: /
|
+--- A1
|
`--- A2
|
+--- B1
| |
| +--- C1
| |
| `--- C2
|
`--- B2C könnte auch im Verzeichnis
A1 eingehangen
werden: /
|
+--- A1
| |
| +--- C1
| |
| `--- C2
|
`--- A2
|
+--- B1
|
`--- B2Der &ms-dos;-Befehl join kann Ähnliches
bewirken.Normalerweise müssen Sie sich nicht mit Dateisystemen
beschäftigen. Während der Installation werden
die Dateisysteme und die Stellen, in der sie eingehangen werden,
festgelegt. Dateisysteme müssen Sie erst wieder anlegen,
wenn Sie eine neue Platte hinzufügen.Sie können sogar mit nur einem großen
Dateisystem auskommen. Dies hat mehrere Nachteile
und einen Vorteil.Vorteile mehrerer DateisystemeDie Dateisysteme können mit unterschiedlichen
Optionen (mount options)
eingehangen werden. Bei sorgfältiger Planung können
Sie beispielsweise das Wurzeldateisystem nur lesbar
einhängen. Damit schützen Sie sich vor dem
unabsichtlichen Löschen oder Editieren kritischer
Dateien. Von Benutzern beschreibbare Dateisysteme
wie /home
können Sie mit der Option nosuid
einhängen, wenn sie von anderen Dateisystemen getrennt
sind. Die SUID- und
GUID-Bits verlieren auf solchen
Dateisystemen ihre Wirkung und die Sicherheit des
Systems kann dadurch erhöht werden.Die Lage von Dateien im Dateisystem wird, abhängig
vom Gebrauch des Dateisystems, automatisch von &os;
optimiert. Ein Dateisystem mit vielen kleinen Dateien,
die häufig geschrieben werden, wird anders behandelt
als ein Dateisystem mit wenigen großen Dateien.
Mit nur einem Dateisystem ist diese Optimierung
unmöglich.In der Regel übersteht ein &os;-Dateisystem auch
einen Stromausfall. Allerdings kann ein Stromausfall zu
einem kritischen Zeitpunkt das Dateisystem beschädigen.
Wenn die Daten über mehrere Dateisysteme verteilt
sind, lässt sich das System mit hoher
Wahrscheinlichkeit noch starten. Dies erleichtert
das Zurückspielen von Datensicherungen.Vorteil eines einzelnen DateisystemsDie Größe von Dateisystemen liegt fest.
Es kann passieren, dass Sie eine Partition
vergrößern müssen. Dies ist nicht leicht:
Sie müssen die Daten sichern, das Dateisystem
vergrößert anlegen und die gesicherten
Daten zurückspielen.Ab &os; 4.4 existiert diese Beschränkung
nicht mehr: Das Kommando &man.growfs.8; kann Dateisysteme
im laufenden Betrieb vergrößern.Dateisysteme befinden sich in Partitionen (damit sind
nicht die normalen &ms-dos;-Partitionen gemeint). Jede Partition
wird mit einem Buchstaben von a bis
h bezeichnet und kann nur ein Dateisystem
enthalten. Dateisysteme können daher über ihren
Mount-Point, den Punkt an dem sie eingehangen sind, oder
den Buchstaben der Partition, in der sie liegen, identifiziert
werden.&os; benutzt einen Teil der Platte für den
Swap-Bereich, der dem Rechner
virtuellen Speicher zur Verfügung
stellt. Dadurch kann der Rechner Anwendungen mehr Speicher
zur Verfügung stellen als tatsächlich eingebaut
ist. Wenn der Speicher knapp wird, kann &os; nicht benutzte
Daten in den Swap-Bereich auslagern. Die ausgelagerten
Daten können später wieder in den Speicher
geholt werden (dafür werden dann andere Daten
ausgelagert).Für einige Partitionen gelten besondere
Konventionen:PartitionKonvention
-
+
aEnthält normalerweise
das WurzeldateisystembEnthält normalerweise
den Swap-BereichcIst normalerweise genauso groß wie
die Slice in der die Partition liegt. Werkzeuge,
die auf der kompletten Slice arbeiten, wie ein
Bad-Block-Scanner, können so die
c-Partition benutzen.
Für gewöhnlich legen Sie in dieser
Partition kein Dateisystem an.dFrüher hatte die d-Partition
eine besondere Bedeutung. Bis heute haben einige
Werkzeuge Schwierigkeiten mit der
d-Partition, sodass
sysinstall normalerweise
keine d-Partition anlegt.Jede Partition, die ein Dateisystem enthält,
wird in einer Slice angelegt.
Slice ist der Begriff, den &os; für &ms-dos;-Partitionen
verwendet. Slices werden von eins bis vier durchnummeriert.SlicesPartitionendangerously dedicatedDie Slice-Nummern werden mit vorgestelltem
s hinter den Gerätenamen gestellt:
da0s1
ist die erste Slice auf dem ersten SCSI-Laufwerk. Auf einer
Festplatte gibt es höchstens vier Slices. In einer
Slice des passenden Typs kann es weitere logische Slices
geben. Diese erweiterten Slices werden ab fünf durchnummeriert:
ad0s5 ist
die erste erweiterte Slice auf einer IDE-Platte. Diese
Geräte werden von Dateisystemen benutzt, die sich in
einer kompletten Slice befinden müssen.Slices, dangerously dedicated-Festplatten
und andere Platten enthalten Partitionen, die mit Buchstaben
von a bis h bezeichnet
werden. Der Buchstabe wird an den Gerätenamen
gehangen: da0a
ist die a-Partition des ersten
da-Laufwerks. Dieses Laufwerk ist
dangerously dedicated.
ad1s3e ist
die fünfte Partition in der dritten Slice der zweiten
IDE-Platte.Schließlich wird noch jede Festplatte des Systems
eindeutig bezeichnet. Der Name einer Festplatte beginnt mit
einem Code, der den Typ der Platte bezeichnet. Es folgt eine
Nummer, die angibt, um welche Festplatte es sich handelt.
Anders als bei Slices werden Festplatten von Null beginnend
durchnummeriert. Gängige Festplatten-Namen sind in
zusammengestellt.Wenn Sie eine Partition angeben, erwartet &os; dass Sie
auch die Slice und die Platte angeben, in denen sich die
Partition befindet. Wenn Sie eine Slice angeben, müssen
Sie auch die Platte der Slice angeben. Setzen Sie den Namen
aus dem Plattennamen gefolgt von einem s,
der Slice-Nummer und dem Buchstaben der Partition zusammen.
Einige Beispiele finden Sie in
.Der Aufbau einer Festplatte wird in
dargestellt.Um &os; zu installieren, müssen Sie zuerst Slices
auf den Festplatten anlegen. Innerhalb der Slices, die Sie
für &os; verwenden wollen, müssen Sie dann
Partitionen anlegen. In den Partitionen wiederum werden
die Dateisysteme (oder der Auslagerungsbereich) angelegt.
Für Dateisysteme müssen Sie schließlich
noch festlegen, wo diese eingehangen werden (Mount-Point).
Namen von Platten, Slices und PartitionenNameBedeutungad0s1aDie erste Partition (a)
in der ersten Slice (s1) der
ersten IDE-Festplatte (ad0).da1s2eDie fünfte Partition (e)
der zweiten Slice (s2) auf
der zweiten SCSI-Festplatte
(da1).Aufteilung einer FestplatteDas folgende Diagramm zeigt die Sicht von &os; auf die
erste IDE-Festplatte eines Rechners. Die Platte soll
4 GB groß sein und zwei Slices (&ms-dos;-Partitionen)
mit je 2 GB besitzen. Die erste Slice enthält
ein &ms-dos;-Laufwerk (C:), die zweite
Slice wird von &os; benutzt. Im Beispiel verwendet die
&os;-Installationen drei Partitionen und einen
Auslagerungsbereich.Jede der drei Partitionen enthält ein Dateisystem.
Das Wurzeldateisystem ist die a-Partition.
In der e-Partition befindet sich
der /var-Verzeichnisbaum
und in der f-Partition befindet sich
der Verzeichnisbaum unterhalb von
/usr..-----------------. --.
| | |
| DOS / Windows | |
: : > First slice, ad0s1
: : |
| | |
:=================: ==: --.
| | | Partition a, mounted as / |
| | > referred to as ad0s2a |
| | | |
:-----------------: ==: |
| | | Partition b, used as swap |
| | > referred to as ad0s2b |
| | | |
:-----------------: ==: | Partition c, no
-| | | Partition e, used as /var > filesystem, all
+| | | Partition e, used as /var > file system, all
| | > referred to as ad0s2e | of FreeBSD slice,
| | | | ad0s2c
:-----------------: ==: |
| | | |
: : | Partition f, used as /usr |
: : > referred to as ad0s2f |
: : | |
| | | |
| | --' |
`-----------------' --'Anhängen und Abhängen von DateisystemenEin Dateisystem wird am besten als ein Baum mit der
Wurzel / veranschaulicht.
/dev, /usr, und
die anderen Verzeichnisse im Rootverzeichnis sind Zweige,
die wiederum eigene Zweige wie /usr/local
haben können.Root-DateisystemEs gibt verschiedene Gründe, bestimmte dieser Verzeichnisse
auf eigenen Dateisystemen anzulegen. /var
enthält log/, spool/
sowie verschiedene andere temporäre
Dateien und kann sich daher schnell füllen. Es empfiehlt sich,
/var von / zu trennen,
da es schlecht ist, wenn das Root-Dateisystem voll
läuft.Ein weiterer Grund bestimmte Verzeichnisbäume auf
andere Dateisysteme zu legen, ist gegeben, wenn sich die
Verzeichnisbäume auf gesonderten physikalischen oder
virtuellen Platten, wie
Network File System
oder CD-ROM-Laufwerken, befinden.Die fstab DateiDateisystemefstabWährend des Boot-Prozesses
werden in /etc/fstab aufgeführte
Verzeichnisse, sofern sie nicht mit der Option
versehen sind, automatisch angehangen.Die Zeilen in /etc/fstab haben das
folgende Format:device/mount-pointfstypeoptionsdumpfreqpassnodeviceEin existierender Gerätename
wie in beschrieben.mount-pointEin existierendes Verzeichnis,
an das das Dateisystem angehangen wird.fstypeDer Typ des Dateisystems,
der an &man.mount.8; weitergegeben wird. FreeBSDs
Standarddateisystem ist ufs.optionsEntweder
für beschreibbare Dateisysteme oder
für schreibgeschützte Dateisysteme, gefolgt von
weiteren benötigten Optionen. Eine häufig verwendete
Option ist für Dateisysteme,
die während der normalen Bootsequenz nicht angehangen
werden sollen. Weitere Optionen finden sich
in &man.mount.8;.dumpfreqGibt die Anzahl der Tage an, nachdem das
Dateisystem gesichert werden soll. Fehlt der Wert, wird
0 angenommen.passnoBestimmt die Reihenfolge, in der die Dateisysteme
überprüft werden sollen. Für Dateisysteme,
die übersprungen werden sollen, ist
passno auf null zu setzen. Für das
Root-Dateisystem, das vor allen anderen überprüft
werden muss, sollte der Wert von
passno eins betragen. Allen anderen
Dateisystemen sollten Werte größer eins zugewiesen
werden. Wenn mehrere Dateisysteme den gleichen Wert
besitzen, wird &man.fsck.8; versuchen, diese parallel zu
überprüfen.Das mount KommandoDateisystemeanhängen&man.mount.8; hängt schließlich Dateisysteme
an.In der grundlegenden Form wird es wie folgt benutzt:&prompt.root; mount devicemountpointViele Optionen werden in &man.mount.8; beschrieben,
die am häufigsten verwendeten sind:Optionen von mountHängt alle Dateisysteme aus
/etc/fstab an. Davon ausgenommen
sind Dateisysteme, die mit noauto markiert
sind, die mit der Option ausgeschlossen
wurden und Dateisysteme, die schon angehangen sind.Führt alles bis auf den
mount-Systemaufruf aus.
Nützlich ist diese Option in Verbindung
mit . Damit wird angezeigt, was
&man.mount.8; tatsächlich versuchen
würde, um das Dateisystem anzuhängen.Erzwingt das Anhängen eines unsauberen Dateisystems
oder erzwingt die Rücknahme des Schreibzugriffs, wenn
der Status des Dateisystems von beschreibbar auf
schreibgeschützt geändert wird.Hängt das Dateisystem schreibgeschützt ein. Das
kann auch durch Angabe von als Argument
( vor FreeBSD 5.2) der Option
erreicht werden.fstypeHängt das Dateisystem mit dem angegebenen Typ an,
oder hängt nur Dateisysteme mit dem angegebenen Typ
an, wenn auch angegeben
wurde.Die Voreinstellung für den Typ des Dateisystems
ist ufs.Aktualisiert die Mountoptionen des Dateisystems.Geschwätzig sein.Hängt das Dateisystem beschreibbar an. erwartet eine durch Kommata separierte Liste
von Optionen, unter anderem die folgenden:nodevBeachtet keine Gerätedateien auf dem Dateisystem.
Dies ist eine nützliche Sicherheitsfunktion.noexecVerbietet das Ausführen von binären
Dateien auf dem Dateisystem. Dies ist eine
nützliche Sicherheitsfunktion.nosuidSetUID und SetGID Bits werden auf dem Dateisystem
nicht beachtet. Dies ist eine nützliche
Sicherheitsfunktion.Das umount KommandoDateisystemeabhängen&man.umount.8; akzeptiert als Parameter entweder
einen Mountpoint, einen Gerätenamen, oder die
Optionen oder .Jede Form akzeptiert , um das
Abhängen zu erzwingen, und , um
etwas geschwätziger zu sein. Seien Sie bitte vorsichtig mit
: Ihr Computer kann abstürzen oder es
können Daten auf dem Dateisystem beschädigt werden, wenn
Sie das Abhängen erzwingen. und werden benutzt
um alle Dateisysteme, deren Typ durch
modifiziert werden kann, abzuhängen.
hängt das Rootdateisystem nicht ab.ProzesseDa FreeBSD ein Multitasking-Betriebssystem ist, sieht es so aus,
als ob mehrere Prozesse zur gleichen Zeit laufen. Jedes Programm,
das zu irgendeiner Zeit läuft, wird
Prozess genannt. Jedes Kommando
startet mindestens einen Prozess. Einige Systemprozesse
laufen ständig und stellen die Funktion des Systems sicher.Jeder Prozess wird durch eine eindeutige Nummer identifiziert,
die Prozess-ID oder
PID genannt wird. Prozesse haben ebenso
wie Dateien einen Besitzer und eine Gruppe, die festlegen, welche
Dateien und Geräte der Prozess benutzen kann. Dabei
finden die vorher beschriebenen Zugriffsrechte Anwendung. Die meisten
Prozesse haben auch einen Elternprozess, der sie gestartet hat.
Wenn Sie in der Shell Kommandos eingeben, dann ist die Shell ein
Prozess und jedes Kommando, das Sie starten, ist auch ein
Prozess. Jeder Prozess, den Sie auf diese Weise starten,
besitzt den Shell-Prozess als Elternprozess. Die Ausnahme
hiervon ist ein spezieller Prozess, der &man.init.8;
heißt. init ist immer der erste Prozess
und hat somit die PID 1. init wird vom Kernel
beim Booten von FreeBSD gestartet.Die Kommandos &man.ps.1; und &man.top.1; sind besonders
nützlich, um sich die Prozesse auf einem System anzusehen.
ps zeigt eine statische Liste der laufenden
Prozesse und kann deren PID, Speicherverbrauch und die
Kommandozeile, mit der sie gestartet wurden und vieles mehr
anzeigen. top zeigt alle laufenden Prozesse
an und aktualisiert die Anzeige, so dass Sie Ihrem Computer
bei der Arbeit zuschauen können.Normal zeigt Ihnen ps nur die laufenden
Prozesse, die Ihnen gehören. Zum Beispiel:&prompt.user; ps
PID TT STAT TIME COMMAND
298 p0 Ss 0:01.10 tcsh
7078 p0 S 2:40.88 xemacs mdoc.xsl (xemacs-21.1.14)
37393 p0 I 0:03.11 xemacs freebsd.dsl (xemacs-21.1.14)
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
390 p1 Is 0:01.14 tcsh
7059 p2 Is+ 1:36.18 /usr/local/bin/mutt -y
6688 p3 IWs 0:00.00 tcsh
10735 p4 IWs 0:00.00 tcsh
20256 p5 IWs 0:00.00 tcsh
262 v0 IWs 0:00.00 -tcsh (tcsh)
270 v0 IW+ 0:00.00 /bin/sh /usr/X11R6/bin/startx -- -bpp 16
280 v0 IW+ 0:00.00 xinit /home/nik/.xinitrc -- -bpp 16
284 v0 IW 0:00.00 /bin/sh /home/nik/.xinitrc
285 v0 S 0:38.45 /usr/X11R6/bin/sawfishWie Sie sehen, gibt &man.ps.1; mehrere Spalten aus. In der
PID Spalte findet sich die vorher besprochene
Prozess-ID. PIDs werden von 1 beginnend bis 99999 zugewiesen
und fangen wieder von vorne an, wenn die Grenze überschritten
wird. Die Spalte TT zeigt den Terminal, auf dem das
Programm läuft. STAT zeigt den Status
des Programms an und kann für die Zwecke dieser Diskussion ebenso
wie TT ignoriert werden. TIME
gibt die Zeit an, die das Programm auf der CPU gelaufen ist –
dies ist nicht unbedingt die Zeit, die seit dem Start des Programms
vergangen ist, da die meisten Programme hauptsächlich auf
bestimmte Dinge warten, bevor sie wirklich CPU-Zeit verbrauchen.
Unter der Spalte COMMAND finden Sie schließlich
die Kommandozeile, mit der das Programm gestartet wurde.&man.ps.1; besitzt viele Optionen, um die angezeigten Informationen
zu beeinflussen. Eine nützliche Kombination ist
auxww. Mit werden Information
über alle laufenden Prozesse und nicht nur Ihrer eigenen
angezeigt. Der Name des Besitzers des Prozesses, sowie Informationen
über den Speicherverbrauch werden mit
angezeigt. zeigt auch Dämonen-Prozesse an,
und veranlasst &man.ps.1; die komplette
Kommandozeile anzuzeigen, anstatt sie abzuschneiden, wenn sie
zu lang für die Bildschirmausgabe wird.Die Ausgabe von &man.top.1; sieht ähnlich aus:&prompt.user; top
last pid: 72257; load averages: 0.13, 0.09, 0.03 up 0+13:38:33 22:39:10
47 processes: 1 running, 46 sleeping
CPU states: 12.6% user, 0.0% nice, 7.8% system, 0.0% interrupt, 79.7% idle
Mem: 36M Active, 5256K Inact, 13M Wired, 6312K Cache, 15M Buf, 408K Free
Swap: 256M Total, 38M Used, 217M Free, 15% Inuse
PID USERNAME PRI NICE SIZE RES STATE TIME WCPU CPU COMMAND
72257 nik 28 0 1960K 1044K RUN 0:00 14.86% 1.42% top
7078 nik 2 0 15280K 10960K select 2:54 0.88% 0.88% xemacs-21.1.14
281 nik 2 0 18636K 7112K select 5:36 0.73% 0.73% XF86_SVGA
296 nik 2 0 3240K 1644K select 0:12 0.05% 0.05% xterm
48630 nik 2 0 29816K 9148K select 3:18 0.00% 0.00% navigator-linu
175 root 2 0 924K 252K select 1:41 0.00% 0.00% syslogd
7059 nik 2 0 7260K 4644K poll 1:38 0.00% 0.00% mutt
...Die Ausgabe ist in zwei Abschnitte geteilt. In den ersten
fünf Kopfzeilen finden sich die zuletzt zugeteilte PID, die
Systemauslastung (engl. load average),
die Systemlaufzeit (die Zeit seit dem letzten Reboot) und die
momentane Zeit. Die weiteren Zahlen im Kopf beschreiben wie viele
Prozesse momentan laufen (im Beispiel 47), wie viel Speicher
und Swap verbraucht wurde und wie viel Zeit das System in den
verschiedenen CPU-Modi verbringt.Darunter befinden sich einige Spalten mit ähnlichen
Informationen wie in der Ausgabe von &man.ps.1;. Wie im vorigen
Beispiel können Sie die PID, den Besitzer, die verbrauchte
CPU-Zeit und das Kommando erkennen. &man.top.1; zeigt auch den
Speicherverbrauch des Prozesses an, der in zwei Spalten aufgeteilt
ist. Die erste Spalte gibt den gesamten Speicherverbrauch des
Prozesses an, in der zweiten Spalte wird der aktuelle Verbrauch
angegeben. &netscape; hat im gezeigten
Beispiel insgesamt 30 MB Speicher verbraucht. Momentan benutzt
es allerdings nur 9 MB.Die Anzeige wird von &man.top.1; automatisch alle zwei Sekunden
aktualisiert. Der Zeitraum kann mit eingestellt
werden.Dämonen, Signale und Stoppen von ProzessenWenn Sie einen Editor starten, können Sie ihn leicht bedienen
und Dateien laden. Sie können das, weil der Editor dafür
Vorsorge getroffen hat und auf einem Terminal
läuft. Manche Programme erwarten keine Eingaben von einem
Benutzer und lösen sich bei erster Gelegenheit von ihrem
Terminal. Ein Web-Server zum Beispiel verbringt den ganzen Tag
damit, auf Anfragen zu antworten und erwartet keine Eingaben von Ihnen.
Programme, die E-Mail von einem Ort zu einem anderen Ort transportieren
sind ein weiteres Beispiel für diesen Typ von Anwendungen.Wir nennen diese Programme Dämonen.
Dämonen stammen aus der griechischen Mythologie und waren
weder gut noch böse. Sie waren kleine dienstbare Geister,
die meistens nützliche Sachen für die Menschheit vollbrachten.
Ähnlich wie heutzutage Web-Server und Mail-Server nützliche
Dienste verrichten. Seit langer Zeit ist daher das BSD Maskottchen
dieser fröhlich aussehende Dämon mit Turnschuhen
und Dreizack.Programme, die als Dämon laufen, werden entsprechend einer
Konvention mit einem d am Ende benannt.
BIND ist der Berkeley Internet Name Daemon
und das tatsächlich laufende Programm heißt
named. Der Apache Webserver wird
httpd genannt, der Druckerspool-Dämon heißt
lpd usw. Dies ist allerdings eine Konvention
und keine unumstößliche Regel: Der Dämon der
Anwendung sendmail heißt
sendmail und nicht maild, wie
Sie vielleicht gedacht hatten.Manchmal müssen Sie mit einem Dämon kommunizieren und
dazu benutzen Sie Signale. Sie können
mit einem Dämonen oder jedem anderen laufenden Prozess
kommunizieren, indem Sie diesem ein Signal schicken. Sie können
verschiedene Signale verschicken – manche haben eine festgelegte
Bedeutung, andere werden von der Anwendung interpretiert. Die
Dokumentation zur fraglichen Anwendung wird erklären, wie
die Anwendung Signale interpretiert. Sie können nur Signale
zu Prozessen senden, die Ihnen gehören. Normale Benutzer haben
nicht die Berechtigung, Prozessen anderer Benutzer mit &man.kill.1;
oder &man.kill.2; Signale zu schicken. Der Benutzer
root darf jedem Prozess Signale schicken.In manchen Fällen wird FreeBSD Signale senden. Wenn eine
Anwendung schlecht geschrieben ist und auf Speicher zugreift, auf
den sie nicht zugreifen soll, so sendet FreeBSD dem Prozess
das Segmentation Violation Signal
(SIGSEGV). Wenn eine Anwendung den &man.alarm.3;
Systemaufruf benutzt hat, um nach einiger Zeit benachrichtigt zu
werden, bekommt sie das Alarm Signal (SIGALRM)
gesendet.Zwei Signale können benutzt werden, um Prozesse zu stoppen:
SIGTERM und SIGKILL. Mit
SIGTERM fordern Sie den Prozess höflich zum
Beenden auf. Der Prozess kann das Signal abfangen und merken,
dass er sich beenden soll. Er hat dann Gelegenheit Logdateien
zu schließen und die Aktion, die er vor der Aufforderung
sich zu beenden durchführte, abzuschließen. Er kann
sogar SIGTERM ignorieren, wenn er eine Aktion
durchführt, die nicht unterbrochen werden darf.SIGKILL kann von keinem Prozess ignoriert
werden. Das Signal lässt sich mit Mich interessiert
nicht, was du gerade machst, hör sofort auf damit!
umschreiben. Wenn Sie einem Prozess SIGKILL
schicken, dann wird FreeBSD diesen sofort beenden
Das stimmt nicht ganz: Es gibt Fälle, in denen ein Prozess
nicht unterbrochen werden kann. Wenn der Prozesss zum Beispiel
eine Datei von einem anderen Rechner auf dem Netzwerk liest und dieser
Rechner aus irgendwelchen Gründen nicht erreichbar ist
(ausgeschaltet, oder ein Netzwerkfehler), dann ist der Prozess
nicht zu unterbrechen. Wenn der Prozess den Lesezugriff
nach einem Timeout von typischerweise zwei Minuten aufgibt,
dann wir er beendet..Andere Signale, die Sie vielleicht verschicken wollen, sind
SIGHUP, SIGUSR1 und
SIGUSR2. Diese Signale sind für allgemeine
Zwecke vorgesehen und verschiedene Anwendungen werden unterschiedlich
auf diese Signale reagieren.Nehmen wir an, Sie haben die Konfiguration Ihres Webservers
verändert und möchten dies dem Server mitteilen. Sie
könnten den Server natürlich stoppen und
httpd wieder starten. Die Folge wäre eine
kurze Zeit, in der der Server nicht erreichbar ist. Die meisten
Dämonen lesen Ihre Konfigurationsdatei beim Empfang eines
SIGHUP neu ein. Da es keinen Standard gibt, der
vorschreibt, wie auf diese Signale zu reagieren ist, lesen
Sie bitte die Dokumentation zu dem in Frage kommenden Dämon.Mit &man.kill.1; können Sie, wie unten gezeigt, Signale
verschicken.Verschicken von SignalenDas folgende Beispiel zeigt, wie Sie &man.inetd.8; ein
Signal schicken. Die Konfigurationsdatei von
inetd ist /etc/inetd.conf.
Diese Konfigurationsdatei liest inetd ein,
wenn er ein SIGHUP empfängt.Suchen Sie die Prozess-ID des Prozesses, dem Sie ein Signal
schicken wollen. Benutzen Sie dazu &man.ps.1; und &man.grep.1;.
Mit &man.grep.1; können Sie in einer Ausgabe nach einem
String suchen. Da &man.inetd.8; unter dem Benutzer
root läuft und Sie das Kommando als
normaler Benutzer absetzen, müssen Sie &man.ps.1; mit
aufrufen:&prompt.user; ps -ax | grep inetd
198 ?? IWs 0:00.00 inetd -wWDie Prozess-ID von &man.inetd.8; ist 198. In einigen
Fällen werden Sie auch das grep inetd
Kommando in der Ausgabe sehen. Dies hat damit zu tun, wie
&man.ps.1; die Liste der laufenden Prozesse untersucht.Senden Sie das Signal mit &man.kill.1;. Da &man.inetd.8;
unter dem Benutzer root läuft, müssen
Sie zuerst mit &man.su.1; root werden:&prompt.user; suPassword:
&prompt.root; /bin/kill -s HUP 198&man.kill.1; wird, wie andere Kommandos von &unix; Systemen auch, keine Ausgabe
erzeugen, wenn das Kommando erfolgreich war. Wenn Sie versuchen,
einem Prozess, der nicht Ihnen gehört, ein Signal zu
senden, dann werden Sie die Meldung
kill: PID: Operation not
permitted sehen. Wenn Sie sich bei der Eingabe der
PID vertippen, werden Sie das Signal dem falschen Prozess
schicken, was schlecht sein kann. Wenn Sie Glück haben,
existiert der Prozess nicht und Sie werden mit der Ausgabe
kill: PID: No such
process belohnt.Warum soll ich /bin/kill benutzen?Viele Shells stellen kill als internes
Kommando zur Verfügung, das heißt die Shell sendet
das Signal direkt, anstatt /bin/kill
zu starten. Das kann nützlich sein, aber die
unterschiedlichen Shells benutzen eine verschiedene Syntax,
um die Namen der Signale anzugeben. Anstatt jede Syntax zu
lernen, kann es einfacher sein, /bin/kill
... direkt aufzurufen.Andere Signale senden Sie auf die gleiche Weise, ersetzen
Sie nur TERM oder KILL
entsprechend.Es kann gravierende Auswirkungen haben, wenn Sie zufällig
Prozesse beenden. Insbesondere &man.init.8; mit der Prozess-ID
ist ein Spezialfall. Mit /bin/kill -s KILL 1
können Sie Ihr System schnell herunterfahren.
Überprüfen Sie die Argumente von &man.kill.1;
immer zweimal bevor
Sie Return drücken.ShellsShellsKommandozeileVon der tagtäglichen Arbeit mit FreeBSD wird eine Menge
mit der Kommandozeilen Schnittstelle der Shell erledigt. Die
Hauptaufgabe einer Shell besteht darin, Kommandos der Eingabe
anzunehmen und diese auszuführen. Viele Shells haben
außerdem eingebaute Funktionen, die die tägliche
Arbeit erleichtern, beispielsweise eine Dateiverwaltung,
die Vervollständigung von Dateinamen (Globbing), einen
Kommandozeileneditor, sowie Makros und Umgebungsvariablen. FreeBSD
enthält die Shells sh (die Bourne Shell) und
tcsh (die verbesserte C-Shell) im Basissystem.
Viele andere Shells, wie zsh oder
bash, befinden sich in der Ports-Sammlung.Welche Shell soll ich benutzen? Das ist wirklich eine
Geschmacksfrage. Sind Sie ein C-Programmierer, finden Sie
vielleicht eine C-artige Shell wie die tcsh
angenehmer. Kommen Sie von Linux oder ist Ihnen der Umgang mit &unix; Systemen
neu, so könnten Sie die bash probieren.
Der Punkt ist, dass
jede Shell ihre speziellen Eigenschaften hat, die mit Ihrer
bevorzugten Arbeitsumgebung harmonieren können oder nicht.
Sie müssen sich eine Shell aussuchen.Ein verbreitetes Merkmal in Shells ist die
Dateinamen-Vervollständigung. Sie müssen nur einige
Buchstaben eines Kommandos oder eines Dateinamen eingeben und
die Shell vervollständigt den Rest automatisch durch
drücken der Tab-Taste. Hier ist ein Beispiel.
Angenommen, Sie
haben zwei Dateien foobar und
foo.bar. Die Datei
foo.bar möchten Sie löschen. Nun
würden Sie an der Tastatur eingeben:
rm fo[Tab].
[Tab].Die Shell würde dann rm
foo[BEEP].bar ausgeben.[BEEP] meint den Rechner-Piepser. Diesen gibt die Shell
aus, um anzuzeigen, dass es den Dateinamen nicht
vervollständigen konnte, da es mehrere Möglichkeiten
gibt. Beide Dateien foobar und
foo.bar beginnen mit fo,
so konnte nur bis foo ergänzt werden.
Nachdem Sie . eingaben und dann die
Tab-Taste
drückten, konnte die Shell den Rest für Sie
ausfüllen.UmgebungsvariablenEin weiteres Merkmal der Shell ist der Gebrauch von
Umgebungsvariablen. Dies sind veränderbare Schlüsselpaare
im Umgebungsraum der Shell, die jedes von der Shell aufgerufene
Programm lesen kann. Daher enthält der Umgebungsraum viele
Konfigurationsdaten für Programme. Die folgende Liste zeigt
verbreitete Umgebungsvariablen und was sie bedeuten:UmgebungsvariablenVariableBeschreibungUSERName des angemeldeten Benutzers.PATHListe mit Verzeichnissen (getrennt durch Doppelpunkt)
zum Suchen nach Programmen.DISPLAYDer Name des X11-Bildschirms, auf dem
Ausgaben erfolgen sollen.SHELLDie aktuelle Shell.TERMName des Terminals des Benutzers. Benutzt, um die
Fähigkeiten des Terminals zu bestimmen.TERMCAPDatenbankeintrag der Terminal Escape Codes,
benötigt um verschieden Terminalfunktionen
auszuführen.OSTYPETyp des Betriebsystems, beispielsweise FreeBSD.MACHTYPEDie CPU Architektur auf dem das System
läuft.EDITORVom Benutzer bevorzugter Text-Editor.PAGERVom Benutzer bevorzugter Text-Betrachter.MANPATHListe mit Verzeichnissen (getrennt durch Doppelpunkt)
zum Suchen nach Manualpages.ShellsBourne ShellDas Setzen von Umgebungsvariablen funktioniert
von Shell zu Shell unterschiedlich. Zum Beispiel benutzt man
in C-artigen Shells wie der tcsh dazu
setenv. Unter Bourne-Shells wie sh
oder bash benutzen Sie zum Setzen von
Umgebungsvariablen export. Um
beispielsweise die Variable EDITOR mit
csh oder tcsh auf
/usr/local/bin/emacs zu setzen, setzen Sie das
folgende Kommando ab:&prompt.user; setenv EDITOR /usr/local/bin/emacsUnter Bourne-Shells:&prompt.user; export EDITOR="/usr/local/bin/emacs"Sie können die meisten Shells Umgebungsvariablen
expandieren lassen, in dem Sie in der Kommandozeile ein
$ davor eingeben. Zum Beispiel gibt
echo $TERM aus, worauf $TERM
gesetzt ist, weil die Shell $TERM expandiert
und das Ergebnis an echo gibt.Shells behandeln viele Spezialzeichen, so genannte
Metazeichen, als besondere Darstellungen für Daten.
Das allgemeinste ist das Zeichen *, das eine
beliebige Anzahl Zeichen in einem Dateinamen repräsentiert.
Diese Metazeichen können zum Vervollständigen von
Dateinamen (Globbing) benutzt werden. Beispielsweise liefert
das Kommando echo * nahezu das gleiche
wie die Eingabe von ls, da die Shell alle
Dateinamen die mit * übereinstimmen, an
echo weitergibt.Um zu verhindern, dass die Shell diese Sonderzeichen
interpretiert, kann man sie schützen, indem man ihnen einen
Backslash (\) voranstellt. echo
$TERM gibt aus, auf was auch immer Ihr Terminal
gesetzt ist. echo \$TERM gibt
$TERM genauso aus, wie es hier steht.Ändern der ShellDer einfachste Weg Ihre Shell zu ändern, ist das
Kommando chsh zu benutzen.
chsh platziert Sie im Editor, welcher durch
Ihre Umgebungsvariable EDITOR gesetzt ist,
im vi wenn die Variable nicht gesetzt ist.
Ändern Sie die Zeile mit Shell:
entsprechend Ihren Wünschen.Sie können auch chsh mit der Option
aufrufen, dann wird Ihre Shell gesetzt,
ohne dass Sie in einen Editor gelangen. Um Ihre Shell
zum Beispiel auf die bash zu ändern,
geben Sie das folgende Kommando ein:&prompt.user; chsh -s /usr/local/bin/bashDasselbe Ergebnis hätten Sie erzielt, wenn Sie einfach
chsh ohne Optionen aufgerufen und die
entsprechende Zeile editiert hätten.Die von Ihnen gewünschte Shell
muss in /etc/shells
aufgeführt sein. Haben Sie eine Shell aus der
Ports-Sammlung installiert,
sollte das schon automatisch erledigt werden. Installierten
Sie die Shell von Hand, so müssen Sie sie dort
eintragen.Haben Sie beispielsweise die bash nach
/usr/local/bin installiert, wollen Sie
dies tun:&prompt.root; echo "/usr/local/bin/bash" >> /etc/shellsDanach können Sie chsh aufrufen.Text-EditorenText EditorenEditorenEine großer Teil der Konfiguration wird bei FreeBSD durch
das Editieren von Textdateien erledigt. Deshalb ist es eine
gute Idee, mit einem Texteditor vertraut zu werden. FreeBSD hat
ein paar davon im Basissystem und sehr viel mehr in der
Ports-Sammlung.eeText EditoreneeDer am leichtesten und einfachsten zu erlernende Editor nennt
sich ee, was für
easy editor steht.
Um ee zu starten, gibt man in der
Kommandozeile ee filename ein, wobei
filename den Namen der zu editierenden
Datei darstellt. Um zum Beispiel /etc/rc.conf
zu editieren, tippen Sie ee /etc/rc.conf ein.
Einmal im Editor, finden Sie alle Editor-Funktionen oben im
Display aufgelistet. Das Einschaltungszeichen
^ steht für die Ctrl (oder
Strg) Taste, mit ^e ist also die
Tastenkombination Ctrle
gemeint. Um ee zu verlassen, drücken
Sie Esc und wählen dann aus. Der Editor fragt nach, ob Sie speichern
möchten, wenn die Datei verändert wurde.viText EditorenviemacsText EditorenemacsFreeBSD verfügt über leistungsfähigere
Editoren wie vi als Teil des
Basissystems, andere Editoren wie emacs
oder vim sind Teil der Ports-Sammlung.
Diese Editoren bieten höhere Funktionalität und
Leistungsfähigkeit, jedoch auf Kosten einer etwas
schwierigeren Erlernbarkeit. Wenn Sie viele Textdateien
editieren, sparen Sie auf lange Sicht mehr Zeit durch das Erlernen
von Editoren wie vim oder
emacs ein.Geräte und GerätedateienDer Begriff Gerät wird meist in Verbindung mit Hardware
wie Laufwerken, Druckern, Grafikkarten oder Tastaturen gebraucht.
Der Großteil der Meldungen, die beim Booten von FreeBSD angezeigt
werden, beziehen sich auf gefundene Geräte. Sie können sich
die Bootmeldungen später in /var/run/dmesg.boot
ansehen.Gerätenamen, die Sie wahrscheinlich in den Bootmeldungen sehen
werden, sind zum Beispiel acd0, das erste
IDE CD-ROM oder kbd0, die Tastatur.Auf die meisten Geräte wird unter &unix; Systemen über spezielle
Gerätedateien im /dev Verzeichnis
zugegriffen.Anlegen von GerätedateienWenn sie ein neues Gerät zu Ihrem System hinzufügen,
oder die Unterstützung für zusätzliche Geräte
kompilieren, müssen oft ein oder mehrere Gerätedateien
erstellt werden.MAKEDEV SkriptAuf Systemen ohne DEVFS (das sind alle
Systeme vor FreeBSD 5.0) müssen Gerätedateien mit
&man.MAKEDEV.8; wie unten gezeigt angelegt werden:&prompt.root; cd /dev
&prompt.root; sh MAKEDEV ad1Im Beispiel werden alle Gerätedateien für das
zweite IDE Laufwerk angelegt.DEVFS (Gerätedateisystem)Das Gerätedateisystem DEVFS
ermöglicht durch den
Namensraum des Dateisystems Zugriff auf den Namensraum der
Geräte im Kernel. Damit müssen Gerätedateien
nicht mehr extra angelegt werden, sondern werden von
DEVFS verwaltet.Weitere Informationen finden Sie in &man.devfs.5;.DEVFS ist ab &os; 5.0
in der Grundeinstellung aktiviert.BinärformateUm zu verstehen, warum &os; das Format
&man.elf.5; benutzt, müssen Sie
zunächst etwas über die drei gegenwärtig
dominanten ausführbaren Formate
für &unix; Systeme wissen:&man.a.out.5;Das älteste und klassische
Objektformat von &unix; Systemen. Es benutzt einen kurzen,
kompakten Header mit einer magischen Nummer am Anfang, die oft
benutzt wird, um das Format zu charakterisieren
(weitere Details finden Sie unter &man.a.out.5;). Es
enthält drei geladene Segmente: .text, .data und
.bss, sowie eine Symboltabelle und eine
Stringtabelle.COFFDas Objektformat von SVR3. Der Header
enthält nun eine Sectiontable. Man kann
also mit mehr als nur den Sections .text, .data und .bss
arbeiten.&man.elf.5;Der Nachfolger von COFF.
Kennzeichnend sind mehrere Sections und mögliche
32-Bit- oder 64-Bit-Werte. Ein wesentlicher Nachteil:
ELF wurde auch unter der Annahme
entworfen, dass es nur eine ABI (Application
Binary Interface) pro Systemarchitektur geben wird.
Tatsächlich ist diese Annahme falsch – nicht
einmal für die kommerzielle SYSV-Welt (in der es
mindestens drei ABIs gibt: SVR4, Solaris, SCO) trifft
sie zu.FreeBSD versucht, dieses Problem zu umgehen, indem
ein Werkzeug bereitgestellt wird, um ausführbare
Dateien im ELF-Format mit
Informationen über die ABI zu versehen, zu der
sie passen. Weitere Informationen finden Sie in der
Manualpage &man.brandelf.1;.FreeBSD kommt aus dem klassischen Lager
und verwendete traditionell das Format &man.a.out.5;, eine
Technik, die bereits über viele BSD-Releases
hinweg eingesetzt und geprüft worden ist. Obwohl es
bereits seit einiger Zeit möglich war, auf einem
FreeBSD-System auch Binaries (und Kernel) im
ELF-Format zu erstellen und
auszuführen, widersetzte FreeBSD sich anfangs dem
Druck, auf ELF als
Standardformat umzusteigen. Warum? Nun, als das
Linux-Lager die schmerzhafte Umstellung auf
ELF durchführte, ging es nicht so
sehr darum, dem ausführbaren Format
a.out zu entkommen, als dem
unflexiblen, auf Sprungtabellen basierten Mechanismus
für Shared-Libraries der die Konstruktion von
Shared-Libraries für Hersteller und Entwickler
gleichermaßen sehr kompliziert machte. Da die
verfügbaren ELF-Werkzeuge eine
Lösung für das Problem mit den Shared-Libraries
anboten und ohnehin generell als ein Schritt
vorwärts angesehen wurden, wurde der Aufwand
für die Umstellung als notwendig akzeptiert und die
Umstellung wurde durchgeführt. Unter FreeBSD ist der
Mechanismus von Shared-Libraries enger an den Stil des
Shared-Library-Mechanismus von Suns &sunos;
angelehnt und von daher sehr einfach zu verwenden.Ja, aber warum gibt es so viele unterschiedliche Formate?In alter, grauer Vorzeit gab es simple Hardware.
Diese simple Hardware unterstützte ein einfaches,
kleines System. a.out 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 a.out-Format beibehalten,
weil es für die frühen Portierungen auf Architekturen
wie den Motorola 68000 und VAX ausreichte.Dann dachte sich ein schlauer Hardware-Ingenieur,
dass, wenn er Software zwingen könnte, einige
Tricks anzustellen, es ihm möglich wäre, ein
paar Gatter im Design zu sparen, und seinen CPU-Kern
schneller zu machen. Obgleich es dazu gebracht wurde, mit
dieser neuen Art von Hardware (heute als RISC
bekannt) zu arbeiten, war a.out für
diese Hardware schlecht geeignet. Deshalb wurden viele neue
Formate entwickelt, um eine bessere Leistung auf dieser
Hardware zu erreichen, als mit dem begrenzten, simplen
a.out-Format. Dinge wie
COFF, ECOFF und
einige andere obskure wurden erdacht und ihre Grenzen
untersucht, bevor die Dinge sich in Richtung
ELF entwickelten.Hinzu kam, dass die Größe von
Programmen gewaltig wurde und Festplatten sowie
physikalischer Speicher immer noch relativ klein waren.
Also wurde das Konzept von Shared-Libraries geboren. Das
VM-System wurde auch immer fortgeschrittener. Obwohl bei
jedem dieser Fortschritte das
a.out-Format benutzt worden ist,
wurde sein Nutzen mit jedem neuen Merkmal mehr und mehr
gedehnt. Zusätzlich wollte man Dinge dynamisch zur
Ausführungszeit laden, oder Teile ihres Programms
nach der Initialisierung wegwerfen, um Hauptspeicher
oder Swap-Speicher zu sparen. Programmiersprachen
wurden immer fortschrittlicher und man wollte, dass
Code automatisch vor der main-Funktion aufgerufen wird.
Das a.out-Format wurde oft
überarbeitet, um alle diese Dinge zu ermöglichen
und sie funktionierten auch für einige Zeit.
a.out konnte diese Probleme nicht
ohne ein ständiges Ansteigen eines Overheads im Code
und in der Komplexität handhaben. Obwohl
ELF viele dieser Probleme löste,
wäre es sehr aufwändig, ein System umzustellen, das
im Grunde genommen funktionierte. Also musste
ELF warten, bis es aufwändiger war, bei
a.out zu bleiben, als zu
ELF überzugehen.Im Laufe der Zeit haben sich die Erstellungswerkzeuge,
von denen FreeBSD seine Erstellungswerkzeuge abgeleitet
hat (speziell der Assembler und der Loader), in zwei
parallele Zweige entwickelt. Im FreeBSD-Zweig wurden
Shared-Libraries hinzugefügt und einige Fehler
behoben. Das GNU-Team, das diese Programme
ursprünglich geschrieben hat, hat sie umgeschrieben
und eine simplere Unterstützung zur Erstellung von
Cross-Compilern durch beliebiges Einschalten verschiedener
Formate usw. hinzugefügt. Viele Leute wollten
Cross-Compiler für FreeBSD erstellen, aber sie hatten
kein Glück, denn FreeBSD's ältere Sourcen
für as und ld
waren hierzu nicht geeignet. Die neuen
GNU-Werkzeuge (binutils) unterstützen
Cross-Compilierung, ELF, Shared-Libraries,
C++-Erweiterungen und mehr. Weiterhin geben viele
Hersteller ELF-Binaries heraus und es
ist gut, wenn FreeBSD sie ausführen kann.ELF ist ausdrucksfähiger als
a.out und gestattet eine bessere Erweiterbarkeit
des Basissystems. Die ELF-Werkzeuge werden
besser gewartet und bieten Unterstützung von
Cross-Compilierung, was für viele Leute wichtig ist.
ELF mag etwas langsamer sein, als
a.out, aber zu versuchen, das zu messen,
könnte schwierig werden. Es gibt unzählige Details, in
denen sich die beiden Formate unterscheiden, wie sie Pages
abbilden, Initialisierungscode handhaben usw. Keins davon
ist sehr wichtig, aber es sind Unterschiede. Irgendwann
wird die Unterstützung für Programme im
a.out-Format aus dem
GENERIC-Kernel entfernt werden.
Wenn es dann keinen oder kaum noch
Bedarf für die Unterstützung dieses Formates
gibt, werden die entsprechenden Routinen ganz entfernt
werden.Weitere InformationenManualpagesManualpagesDie umfassendste Dokumentation rund um FreeBSD gibt es in
Form von Manualpages. Annähernd jedes Programm im System
bringt eine kurze Referenzdokumentation mit, die die
grundsätzliche Funktion und verschiedene Parameter
erklärt. Diese Dokumentationen kann man mit dem
man Kommando benutzen. Die Benutzung des
man Kommandos ist einfach:&prompt.user; man KommandoKommando ist der Name des Kommandos,
über das Sie etwas erfahren wollen. Um beispielsweise
mehr über das Kommando ls zu lernen,
geben Sie ein:&prompt.user; man lsDie Online-Dokumentation ist in nummerierte Sektionen
unterteilt:Benutzerkommandos.Systemaufrufe und Fehlernummern.Funktionen der C Bibliothek.Gerätetreiber.Dateiformate.Spiele und andere Unterhaltung.Verschiedene Informationen.Systemverwaltung und -Kommandos.Kernel Entwickler.In einigen Fällen kann dasselbe Thema in mehreren
Sektionen auftauchen. Es gibt zum Beispiel ein chmod
Benutzerkommando und einen chmod()
Systemaufruf. In diesem Fall können Sie dem
man Kommando
sagen, aus welcher Sektion Sie die Information erhalten
möchten, indem Sie die Sektion mit angeben:&prompt.user; man 1 chmodDies wird Ihnen die Manualpage für das Benutzerkommando
chmod zeigen. Verweise auf eine Sektion
der Manualpages werden traditionell in Klammern
gesetzt. So bezieht sich &man.chmod.1; auf das
Benutzerkommando chmod und mit
&man.chmod.2; ist der Systemaufruf gemeint.Das ist nett, wenn Sie den Namen eines Kommandos wissen,
und lediglich wissen wollen, wie es zu benutzen ist. Aber was
tun Sie, wenn Sie Sich nicht an den Namen des Kommandos
erinnern können? Sie können mit man
nach Schlüsselbegriffen in den
Kommandobeschreibungen zu suchen, indem Sie den Parameter
benutzen:&prompt.user; man -k mailMit diesem Kommando bekommen Sie eine Liste der
Kommandos, deren Beschreibung das Schlüsselwort
mail enthält. Diese Funktionalität
erhalten Sie auch, wenn Sie das Kommando apropos
benutzen.Nun, Sie schauen Sich alle die geheimnisvollen Kommandos
in /usr/bin an, haben aber nicht den
blassesten Schimmer, wozu die meisten davon gut sind? Dann
rufen Sie doch einfach das folgende Kommando auf:&prompt.user; cd /usr/bin
&prompt.user; man -f *Dasselbe erreichen Sie durch Eingabe von:&prompt.user; cd /usr/bin
&prompt.user; whatis *GNU Info DateienFreeBSD enthält viele Anwendungen und Utilities
der Free Software Foundation (FSF). Zusätzlich zu den
Manualpages bringen diese Programme ausführlichere
Hypertext-Dokumente (info genannt) mit,
welche man sich mit dem Kommando info
ansehen kann. Wenn Sie emacs
installiert haben, können Sie auch dessen info-Modus
benutzen.Um das Kommando &man.info.1; zu benutzen, geben Sie
einfach ein:&prompt.user; infoEine kurze Einführung gibt es mit
h; eine Befehlsreferenz erhalten Sie durch
Eingabe von: ?.
diff --git a/de_DE.ISO8859-1/books/handbook/boot/chapter.sgml b/de_DE.ISO8859-1/books/handbook/boot/chapter.sgml
index c99f7f3862..bbdc6668a8 100644
--- a/de_DE.ISO8859-1/books/handbook/boot/chapter.sgml
+++ b/de_DE.ISO8859-1/books/handbook/boot/chapter.sgml
@@ -1,881 +1,890 @@
Hans-ChristianEbkeÜbersetzt von FreeBSDs BootvorgangÜbersichtbootenBootstrapDas Starten des Computers und das Laden des Betriebssystems
wird im Allgemeinen als Bootstrap-Vorgang
bezeichnet, oder einfach als Booten. FreeBSDs
Bootvorgang ermöglicht große Flexibilität, was
das Anpassen dessen anbelangt, was passiert, wenn das System
gestartet wird. Es kann zwischen verschiedenen Betriebssystemen,
die auf demselben Computer installiert sind oder verschiedenen
Versionen desselben Betriebssystems oder installierten Kernels
gewählt werden.Dieses Kapitel zeigt die zur Verfügung stehenden
Konfigurationsmöglichkeiten und wie man den Bootvorgang anpasst.
Dies schließt alles ein, bis der Kernel gestartet worden ist,
der dann alle Geräte gefunden hat und &man.init.8; gestartet hat.
Falls Sie sich nicht ganz sicher sind, wann dies passiert:
Es passiert, wenn die Farbe des Textes während des Bootvorgangs
von weiß zu Hellgrau wechselt.Dieses Kapitel informiert über folgende Punkte:Die Komponenten des FreeBSD-Bootvorgangs und deren
Interaktion.Die Optionen, mit denen Sie den FreeBSD-Bootvorgang steuern
können.Wie Geräte mit &man.device.hints.5; konfiguriert
werden.nur x86Dieses Kapitel erklärt den Bootvorgang von FreeBSD auf
Intel X86 Plattformen.Das Problem des BootensWenn der Computer eingeschaltet wird und das Betriebssystem
gestartet werden soll, entsteht ein interessantes Dilemma, denn der
Computer weiß per Definition nicht, wie er irgendetwas tut, bis
das Betriebssystem gestartet wurde. Das schließt das Starten von
Programmen, die sich auf der Festplatte befinden, ein. Wenn nun
der Computer kein Programm von der Festplatte starten kann, sich
das Betriebssystem aber dummerweise genau dort befindet, wie
wird es dann gestartet?Dieses Problem ähnelt einer Geschichte des Barons von
Münchhausen. Dort war eine Person in einen Sumpf gefallen
und hat sich selbst an den Riemen seiner Stiefel (engl.
bootstrap) herausgezogen. In den
jungen Jahren des Computerzeitalters wurde mit dem Begriff
Bootstrap dann die Technik das Betriebssystem zu laden bezeichnet
und wurde hinterher mit booten abgekürzt.Auf x86 Plattformen ist das BIOS (Basic Input/Output System)
dafür verantwortlich, das Betriebssystem zu laden. Dazu
liest das BIOS den Master Bootsektor (MBR; Master Boot Record)
aus, der sich an einer bestimmten Stelle auf der
Festplatte/Diskette befinden muss. Das BIOS kann den MBR
selbstständig laden und ausführen und geht davon aus,
dass der die restlichen Dinge, die für das Laden des
Betriebssystems notwendig sind, selber erledigen kann.BIOSBasic Input/Output SystemBIOSFalls nur ein Betriebssystem installiert ist, ist der
Standard MBR ausreichend. Dieser MBR sucht nach dem ersten
bootbaren Slice auf dem Laufwerk und führt ihn aus, um das
restliche Betriebssystem zu laden.Falls mehrere Betriebssysteme installiert sind, sollte
man einen anderen MBR installieren, der eine Liste der
verfügbaren Betriebssysteme anzeigt und einen wählen
lässt, welches man booten möchte. FreeBSD liegt ein
solcher MBR bei und andere Hersteller bieten Alternativen
an.Das restliche FreeBSD-Bootstrap-System ist in drei Phasen
unterteilt. Die erste Phase wird vom MBR durchgeführt, der
gerade genug Funktionalität besitzt um den Computer in
einen bestimmten Status zu verhelfen und die zweite Phase zu
starten. Die zweite Phase führt ein wenig mehr Operationen
durch und startet schließlich die dritte Phase, die das Laden
des Betriebssystems abschließt. Der ganze Prozess wird in drei
Phasen durchgeführt, weil der PC Standard die Größe
der Programme, die in Phase eins und zwei ausgeführt
werden, limitiert. Durch das Verketten der durchzuführenden
Aufgaben wird es FreeBSD möglich, ein sehr flexibles
Ladeprogramm zu besitzen.KernelinitAls nächstes wird der Kernel gestartet, der zunächst nach
Geräten sucht und sie für den Gebrauch
initialisiert. Nach dem Booten des Kernels übergibt dieser
die Kontrolle an den Benutzer Prozess &man.init.8;, der erst
sicherstellt, dass alle Laufwerke benutzbar sind und die
Ressourcen Konfiguration auf Benutzer Ebene startet. Diese
wiederum mountet Dateisysteme, macht die Netzwerkkarten für
die Kommunikation mit dem Netzwerk bereit und startet generell
alle Prozesse, die auf einem FreeBSD-System normalerweise beim
Hochfahren gestartet werden.Der MBR, und die Boot-Phasen Eins, Zwei und DreiDer MBR, /boot/boot0Master Boot Record (MBR)
- Eine Kopie des Master Boot Records (MBR)
- von FreeBSD befindet sich in /boot/boot0.
- Der richtige MBR wird in einem nicht benutzbaren Teil des Laufwerks
- gespeichert.
+ Der vom FreeBSD-Installationsprogramm und &man.boot0cfg.8;
+ installierte Master Boot Record (MBR) basiert auf
+ /boot/boot0 und wird in den ersten Sektor
+ der Platte (also außerhalb der Slices) installiert.
+ (Der von &man.fdisk.8; installierte MBR basiert hingegen auf
+ /boot/mbr und ähnelt dem MBR von
+ PC-DOS. Die Aufgabe dieses MBRs ist das Booten der als
+ active markierten Slice. Im Gegensatz
+ zum FreeBSD-MBR erfolgt dies ohne Rückfrage.)boot0 ist ein ziemlich simples
Programm, und zwar aus dem einfachen Grund, dass der MBR nur
- 512 Bytes groß sein darf. Falls Sie den FreeBSD-MBR
- installiert haben und sich mehrere Betriebssysteme auf Ihrer
+ 512 Bytes groß sein darf. (Tatsächlich
+ darf er nur 446 Bytes groß sein, da der restliche
+ Platz für die Partitionstabelle und den
+ 0x55AA-Identifier am Ende des MBRs benötigt wird.)
+ Falls Sie den FreeBSD-MBR installiert haben und sich mehrere
+ Betriebssysteme auf Ihrer
Festplatte befinden, werden Sie beim Starten des Computers
eine Anzeige sehen, ähnlich der Folgenden:boot0-ScreenshotF1 DOS
F2 FreeBSD
F3 Linux
F4 ??
F5 Drive 1
Default: F2Diverse Betriebssysteme, insbesondere &windows;,
überschreiben den MBR ungefragt mit ihrem
eigenen. Falls einem dies passiert sein sollte, kann man mit
folgendem Kommando den momentanen MBR durch den FreeBSD-MBR
ersetzen:&prompt.root; fdisk -B -b /boot/boot0 GerätWobei Gerät das Gerät ist,
von dem gebootet wird, also z.B. ad0
für die erste IDE-Festplatte,
ad2 für die erste IDE-Festplatte
am zweiten IDE-Controller, da0
für die erste SCSI-Festplatte, usw.Wenn Sie auf demselben Rechner FreeBSD und Linux benutzen
möchten, können Sie den FreeBSD-Bootmanager oder
LILO benutzen. Wollen Sie den MBR von
LILO benutzen, wählen Sie
bei der FreeBSD-Installation im Bootmanager Menü
aus. Damit
Sie das FreeBSD-System aus LILO booten
können, tragen Sie in /etc/lilo.conf die
folgenden Zeilen ein:other=/dev/diskXY
table=/dev/diskX
loader=/boot/chain.b
label=FreeBSDErsetzen Sie dabei diskXY mit
hdXY, wenn Sie
ein IDE-Laufwerk benutzen, oder mit
sdXY, wenn Sie
ein SCSI-Laufwerk benutzen. Mit
XY geben Sie die Slice des FreeBSD
Systems, zum Beispiel /dev/hdb1, an. Wenn sich
beide Betriebssysteme auf derselben Platte befinden, können
Sie auch weglassen. Mit
geben Sie das Gerät an, auf dem die
Partitionstabelle liegt, /dev/hdb bezeichnet
zum Beispiel das zweite IDE-Laufwerk. Die Änderungen
können Sie nun mit /sbin/lilo -v
aktivieren. Achten Sie dabei auf die Bildschirmausgabe, die den
Erfolg der Operation anzeigt.Phase Eins, /boot/boot1 und Phase Zwei,
/boot/boot2Im Prinzip sind die erste und die zweite Phase Teile
desselben Programms, im selben Bereich auf der
Festplatte. Aufgrund von Speicherplatz-Beschränkungen
wurden sie aufgeteilt, aber man installiert sie eigentlich
generell zusammen.Sie befinden sich beide im Bootsektor des Boot-Slices,
wo boot0 und jedes andere
Programm im MBR das Programm erwartet, das
den weiteren Bootvorgang durchführt. Die Dateien im
Verzeichnis /boot sind nur Kopien der
eigentlichen Dateien, die sich außerhalb FreeBSDs Dateisystems
befinden.boot1 ist ebenfalls ein sehr simples
Programm, da es auch nur 512 Bytes groß sein darf, und es
besitzt gerade genug Funktionalität um FreeBSDs
disklabel, das Informationen über
den Slice enthält, auszulesen um
boot2 zu finden und
auszuführen.boot2 ist schon ein wenig
umfangreicher und besitzt genügend Funktionalität um
Dateien in FreeBSDs Dateisystem zu finden. Außerdem hat es
eine einfache Schnittstelle, die es ermöglicht, den zu
ladenden Kernel oder Loader auszuwählen.Da der Loader einen
weitaus größeren Funktionsumfang hat und eine schöne
und einfach zu bedienende Boot-Konfigurations-Schnittstelle zur
Verfügung stellt, wird er gewöhnlich von
boot2 anstatt des Kernels
gestartet. Früher war es jedoch dazu da den Kernel direkt
zu starten.boot2-Screenshot>> FreeBSD/i386 BOOT
Default: 0:ad(0,a)/kernel
boot:Um das installierte
boot1 und boot2 zu
ersetzen, benutzt man &man.disklabel.8;:&prompt.root; disklabel -B SliceWobei Slice das Laufwerk und die Slice
darstellt, von dem gebootet wird, beispielsweise
ad0s1 für die erste Slice
auf der ersten IDE-Festplatte.Dangerously Dedicated ModeWenn man nur den Festplatten-Namen, also
z.B. ad0, in &man.disklabel.8;
benutzt wird eine "dangerously dedicated disk" erstellt,
ohne Slices. Das ist ein Zustand, den man meistens nicht
hervorrufen möchte. Aus diesem Grund sollte man ein
&man.disklabel.8; Kommando noch einmal prüfen, bevor
man Return betätigt.Phase drei, /boot/loaderboot-loaderDer boot-loader ist der letzte von drei Schritten im
Bootstrap Prozess und kann im Dateisystem normalerweise unter
/boot/loader gefunden werden.Der Loader soll eine benutzerfreundliche
Konfigurations-Schnittstelle sein mit einem einfach zu
bedienenden eingebauten Befehlssatz, ergänzt durch einen
umfangreichen Interpreter mit einem komplexeren
Befehlssatz.Loader AblaufDer Loader sucht während seiner Initialisierung
nach Konsolen und Laufwerken, findet heraus, von welchem
Laufwerk er gerade bootet und setzt dementsprechend
bestimmte Variablen. Dann wird ein Interpreter gestartet,
der Befehle interaktiv oder von einem Skript empfangen
kann.loaderloader KonfigurationDanach liest der Loader die Datei
/boot/loader.rc aus, welche ihn
standardmäßig anweist
/boot/defaults/loader.conf zu lesen, wo
sinnvolle Standardeinstellungen für diverse Variablen
festgelegt werden und wiederum
/boot/loader.conf für lokale
Änderungen an diesen Variablen ausgelesen
wird. Anschließend arbeitet dann
loader.rc entsprechend dieser Variablen
und lädt die ausgewählten Module und den
gewünschten Kernel.In der Voreinstellung wartet der Loader
10 Sekunden lang auf eine Tastatureingabe und bootet den
Kernel, falls keine Taste betätigt wurde. Falls doch
eine Taste betätigt wurde wird dem Benutzer eine
Eingabeaufforderung angezeigt. Sie nimmt einen einfach zu
bedienenden Befehlssatz entgegen, der es dem Benutzer
erlaubt, Änderungen an Variablen vorzunehmen, Module zu
laden, alle Module zu entladen oder schließlich zu booten
bzw. neu zu booten.Die eingebauten Befehle des LoadersHier werden nur die gebräuchlichsten Befehle
bearbeitet. Für eine erschöpfende Diskussion aller
verfügbaren Befehle konsultieren Sie bitte
&man.loader.8;.autoboot SekundenEs wird mit dem Booten des Kernels fortgefahren,
falls keine Taste in der gegebenen Zeitspanne
betätigt wurde. In der gegebenen Zeitspanne, Vorgabe
sind 10 Sekunden, wird ein Countdown angezeigt.boot
-optionsKernelnameBewirkt das sofortige Booten des Kernels mit den
gegebenen Optionen, falls welche angegeben wurden, und
mit den angegebenen Kernel, falls denn einer angegeben
wurde.boot-confBewirkt die automatische Konfiguration der Module,
abhängig von den entsprechenden Variablen. Dieser
Vorgang ist identisch zu dem Vorgang, den der Bootloader
ausführt und daher nur sinnvoll, wenn zuvor
unload benutzt wurde und Variablen
(gewöhnlich kernel) verändert
wurden.help
ThemaZeigt die Hilfe an, die zuvor aus der Datei
/boot/loader.help gelesen
wird. Falls index als Thema angegeben
wird, wird die Liste der zur Verfügung stehenden
Hilfe-Themen angezeigt.include Dateiname
…Verarbeitet die angegebene Datei. Das Einlesen und
Interpretieren geschieht Zeile für Zeile und wird im Falle eines
Fehlers umgehend unterbrochen.load TypDateinameLädt den Kernel, das Kernel-Modul, oder die Datei
des angegebenen Typs. Optionen, die auf den Dateinamen folgen, werden
der Datei übergeben.ls PfadListet die Dateien im angegebenen Pfad auf, oder das
root-Verzeichnis(/), falls kein Pfad angegeben
wurde. Die Option bewirkt, dass die
Dateigrössen ebenfalls angezeigt werden.lsdev Listet alle Geräte auf, für die Module geladen
werden können. Die Option bewirkt
eine detailreichere Ausgabe.lsmod Listet alle geladenen Module auf. Die Option
bewirkt eine detailreichere
Ausgabe.more DateinameZeigt den Dateinhalt der angegebenen Datei an, wobei
eine Pause alle LINES Zeilen gemacht
wird.rebootBewirkt einen umgehenden Neustart des Systems.set Variableset
Variable=WertSetzt die Umgebungsvariablen des Loaders.unloadEntlädt sämtliche geladenen Module.Beispiele für die Loader BedienungHier ein paar praktische Beispiele für die Bedienung
des Loaders.Single-User ModusUm den gewöhnlichen Kernel im Single-User Modus zu
starten:boot -sUm alle gewöhnlichen Kernelmodule zu entladen und dann
nur den alten (oder jeden beliebigen anderen) Kernel zu
laden:kernel.oldunloadload kernel.oldEs kann kernel.GENERIC verwendet
werden, um den allgemeinen, Kernel zu bezeichnen, der
vorinstalliert wird. kernel.old
bezeichnet den Kernel, der vor dem aktuellen installiert
war (falls man einen neuen Kernel compiliert und
installiert hat, zum Beispiel).Der folgende Befehl lädt die gewöhnlichen Module mit
einem anderen Kernel:unloadset kernel="kernel.old"boot-confFolgendes lädt ein Kernelkonfigurations-Skript (ein
automatisiertes Skript, dass dasselbe tut, was der
Benutzer normalerweise von Hand an der Eingabeaufforderung
durchführen würde):load -t userconfig_script /boot/kernel.confKernel Interaktion während des BootprozessesKernelboot interactionWenn der Kernel einmal geladen ist, entweder durch den Loader (die Standardmethode) oder
durch boot2 (den Loader
umgehend), verhält sich gemäß seiner Boot-Flags, falls es
welche gibt.KernelbootflagsKernel Boot-FlagsEs folgt eine Auflistung der gebräuchlichsten
Boot-Flags:Bewirkt, dass der Benutzer während der
Kernel-Initialisierung gefragt wird, welches Gerät als
Root-Dateisystem gemounted werden soll.Es wird von CD-ROM gebootet.UserConfig, das Boot-Zeit Konfigurationsprogramm,
wird gestartet.Bewirkt den Start des Single-User Modus.Zeigt mehr Informationen während des Starten des
Kernels an.Andere Boot-Flags sind in der Hilfeseite
&man.boot.8; erläutert.TomRhodesBeigetragen von device.hintsKonfiguration von GerätenDiese Funktion steht erst ab FreeBSD 5.0 zur
Verfügung.Der Boot-Loader liest während des Systemstarts die Datei
&man.device.hints.5;, die Variablen, auch device hints
genannt, zur Konfiguration von Geräten enthält.Die Variablen können auch mit Kommandos in der Phase 3 des Boot-Loaders bearbeitet
werden. Neue Variablen werden mit set gesetzt,
unset löscht schon definierte Variablen und
show zeigt Variablen an. Variablen aus
/boot/device.hints können zu diesem Zeitpunkt
überschrieben werden. Die hier durchgeführten Änderungen
sind nicht permanent und beim nächsten Systemstart nicht mehr
gültig.Nach dem Systemstart können alle Variablen mit &man.kenv.1;
angezeigt werden.Pro Zeile enthält /boot/device.hints eine
Variable. Kommentare werden, wie üblich, durch
# eingeleitet. Die verwendete Syntax
lautet:hint.driver.unit.keyword="value"Der Boot-Loader verwendet die nachstehende Syntax:set hint.driver.unit.keyword=valueDer Gerätetreiber wird mit driver,
die Nummer des Geräts mit unit
angegeben. keyword ist eine Option aus
der folgenden Liste:: Gibt den Bus, auf dem sich das
Gerät befindet, an.: Die Startadresse des
I/O-Bereichs.: Gibt die zu verwendende
Unterbrechungsanforderung (IRQ) an.: Die Nummer des DMA Kanals.: Die physikalische Speicheradresse des
Geräts.: Setzt verschiedene
gerätespezifische Optionen.: Deaktiviert das Gerät, wenn
der Wert auf 1 gesetzt wird.Ein Gerätetreiber kann mehr Optionen, als die hier
beschriebenen, besitzen oder benötigen. Schlagen Sie die
Optionen bitte in der Online-Hilfe des Treibers nach. Weitere
Informationen erhalten Sie in &man.device.hints.5;, &man.kenv.1;,
&man.loader.conf.5; und &man.loader.8;.initInit: Initialisierung der Prozess-KontrolleNachdem der Kernel den Bootprozess abgeschlossen hat,
übergibt er die Kontrolle an den Benutzer-Prozess
&man.init.8;. Dieses Programm befindet sich in
/sbin/init, oder dem Pfad, der durch die
Variable init_path im Loader
spezifiziert wird.Der automatische Reboot-VorgangDer automatische Reboot-Vorgang stellt sicher, dass alle
Dateisysteme des Systems konsistent sind. Falls dies nicht der
Fall ist und die Inkonsistenz nicht durch
&man.fsck.8; behebbar ist, schaltet
&man.init.8; das System in den Single-User Modus, damit der
Systemadministrator sich des Problems annehmen kann.Der Single-User ModusSingle-User ModusKonsoleDas Schalten in diesen Modus kann erreicht werden durch den automatischen
Reboot-Vorgang, durch das Booten mit der Option
oder das Setzen der
boot_single Variable in
Loader.Weiterhin kann der Single-User Modus aus dem Mehrbenutzermodus heraus durch
den Befehl &man.shutdown.8; ohne die reboot
() oder halt () Option
erreicht werden.Falls die System-Konsole (console) in
/etc/ttys auf insecure
(dt.: unsicher) gesetzt ist, fordert das System allerdings zur
Eingabe des Passworts von root auf,
bevor es den Single-User Modus aktiviert.Auf insecure gesetzte Konsole in
/etc/ttys# name getty type status comments
#
# If console is marked "insecure", then init will ask for the root password
# when going to single-user mode.
console none unknown off insecureEine Konsole sollte auf insecure
gesetzt sein, wenn die physikalische Sicherheit der Konsole
nicht gegeben ist und sichergestellt werden soll, dass nur
Personen, die das Passwort von root kennen,
den Single-User Modus benutzen können. Es bedeutet nicht,
dass die Konsole "unsicher" laufen wird. Daher sollte man
insecure wählen, wenn man auf Sicherheit
bedacht ist, nicht secure.MehrbenutzermodusMehrbenutzermodusStellt &man.init.8; fest, dass das Dateisystem
in Ordnung ist, oder der Benutzer den Single-User Modus beendet,
schaltet das System in den Mehrbenutzermodus, in dem dann die
Ressourcen Konfiguration des Systems gestartet wird.rc-DateienRessourcen Konfiguration, rc-DateienDas Ressourcen Konfigurationssystem (engl.
resource configuration, rc)
liest seine Standardkonfiguration von
/etc/defaults/rc.conf und
System-spezifische Details von
/etc/rc.conf. Dann mountet es die
Dateisysteme gemäß /etc/fstab, startet
die Netzwerkdienste, diverse System Daemons und führt
schließlich die Start-Skripten der lokal installierten
Anwendungen aus.Die &man.rc.8; Handbuch Seite ist eine gute Quelle für
Informationen über das Ressourcen Konfigurationssystem und
ebenso über die Skripte an sich.Der Shutdown-VorgangshutdownIm Falle eines regulären Herunterfahrens durch
&man.shutdown.8; führt &man.init.8;
/etc/rc.shutdown aus, sendet dann
sämtlichen Prozessen ein TERM Signal und
schließlich ein KILL Signal an alle Prozesse,
die sich nicht schnell genug beendet haben.FreeBSD-Systeme, die Energieverwaltungsfunktionen
unterstützen, können Sie mit dem Kommando
shutdown -p now ausschalten. Zum Neustart des
Systems benutzen Sie shutdown -r now. Das
Kommando &man.shutdown.8; kann nur von root oder
Mitgliedern der Gruppe operator benutzt
werden. Sie können auch die Kommandos &man.halt.8; und
&man.reboot.8; verwenden. Weitere Informationen finden Sie in den
Hilfeseiten der drei Kommandos.Mit FreeBSD 5.0 müssen Sie die
&man.acpi.4;-Unterstützung im Kernel aktivieren oder das Modul
geladen haben, damit Sie die Energieverwaltungsfunktionen benutzen
können. Mit FreeBSD 4.0 benötigen Sie die
&man.apm.4;-Unterstützung.
diff --git a/de_DE.ISO8859-1/books/handbook/cutting-edge/chapter.sgml b/de_DE.ISO8859-1/books/handbook/cutting-edge/chapter.sgml
index 516b6739d1..757df8a390 100644
--- a/de_DE.ISO8859-1/books/handbook/cutting-edge/chapter.sgml
+++ b/de_DE.ISO8859-1/books/handbook/cutting-edge/chapter.sgml
@@ -1,2006 +1,1989 @@
JimMockUmstrukturiert und aktualisiert von JordanHubbardIm Original von Poul-HenningKampJohnPolstraNikClaytonMartinHeinenÜbersetzt von Das Neueste und BesteÜbersicht&os; wird zwischen einzelnen Releases konstant weiter entwickelt.
Es gibt mehrere einfache Möglichkeiten, ein System auf dem
aktuellen Stand der Entwicklung zu halten. Seien Sie jedoch gewarnt:
Die neueste Version ist nicht für jeden geeignet! Dieses
Kapitel hilft Ihnen bei der Entscheidung, ob Sie mit dem
Entwicklungssystem Schritt halten oder ein Release verwenden
wollen.Nachdem Sie dieses Kapitel gelesen haben, werden Sieden Unterschied der beiden Entwicklerversionen
&os.stable; und &os.current; kennen,wissen, wie Sie Ihr System mit
CVSup, CVS
oder CTM aktualisieren.Wissen, wie Sie das komplette Basissystem
mit make buildworld neu bauen und
installieren.Bevor Sie dieses Kapitel lesen, sollten SieIhr Netzwerk richtig konfiguriert haben
() undwissen, wie Sie Software Dritter installieren
().&os.current; vs. &os.stable;-CURRENT-STABLEFreeBSD besitzt zwei Entwicklungszweige: &os.current; und
&os.stable;. Dieser Abschnitt beschreibt beide Zweige und
erläutert, wie Sie Ihr System auf dem aktuellen Stand
eines Zweiges halten. Zuerst wird &os.current; vorgestellt, dann
&os.stable;.&os.current;Beachten Sie im Folgenden, dass &os.current; die Spitze
der Entwicklung von &os; ist. Benutzer von &os.current; sollten
über sehr gute technische Fähigkeiten verfügen und
in der Lage sein, schwierige Probleme alleine zu lösen. Wenn
&os; neu für Sie ist, überlegen Sie sich genau, ob Sie
&os.current; benutzen wollen.Was ist &os.current;?Snapshot&os.current; besteht aus den neuesten Quellen des
FreeBSD-Systems. Es enthält Sachen, an denen gerade
gearbeitet wird, experimentelle Änderungen und
Übergangsmechanismen, die im nächsten offiziellen
Release der Software enthalten sein können oder nicht.
Obwohl &os.current; täglich von vielen Entwicklern gebaut
wird, gibt es Zeiträume, in denen sich das System nicht
bauen lässt. Diese Probleme werden so schnell wie
möglich gelöst, aber ob Sie mit &os.current;
Schiffbruch erleiden oder die gewünschten Verbesserungen
erhalten, kann von dem Zeitpunkt abhängen, an dem Sie sich
den Quelltext besorgt haben!Wer braucht &os.current;?&os.current; wird hauptsächlich für 3
Interessengruppen zur Verfügung gestellt:Entwickler, die an einem Teil des Quellbaums arbeiten und
daher über die aktuellen Quellen verfügen
müssen.Tester, die bereit sind, Zeit in das Lösen von
Problemen zu investieren und sicherstellen, dass
&os.current; so stabil wie möglich bleibt. Weiterhin
Leute, die Vorschläge zu Änderungen oder der
generellen Entwicklung von &os; machen und Patches
bereitstellen, um diese Vorschläge zu realisieren.Für Leute, die die Entwicklung im Auge behalten
wollen, oder die Quellen zu Referenzzwecken (zum Beispiel
darin lesen, aber nicht verwenden) benutzen wollen. Auch diese
Gruppe macht Vorschläge oder steuert Quellcode
bei.Was &os.current; nicht ist!Der schnellste Weg, neue Sachen vor dem offiziellen
Release auszuprobieren. Bedenken Sie, dass der erste,
der die neuen Sachen ausprobiert, auch der erste ist, der die
neuen Fehler findet.Ein schneller Weg, um an Fehlerbehebungen (engl.
bug fixes) zu kommen. Jede
Version von &os.current; führt mit gleicher
Wahrscheinlichkeit neue Fehler ein, mit der sie alte
behebt.In irgendeiner Form offiziell
unterstützt. Wir tun unser Bestes, um Leuten
aus den drei legitimen Benutzergruppen von
&os.current; zu helfen, aber wir haben einfach nicht
die Zeit, technische Unterstützung zu
erbringen. Das kommt nicht daher, dass wir kleinliche,
gemeine Leute sind, die anderen nicht helfen wollen (wenn
wir das wären, würden wir &os; nicht machen), wir
können einfach nicht jeden Tag Hunderte Nachrichten
beantworten und an &os; arbeiten! Vor
die Wahl gestellt, &os; zu verbessern oder jede Menge Fragen
zu experimentellem Code zu beantworten, haben sich die
Entwickler für ersteres entschieden.Benutzen von &os.current;-CURRENTbenutzenEs ist essentiell, die Mailinglisten
&a.current.name; und &a.cvsall.name; zu lesen. Wenn Sie
&a.current.name; nicht lesen, verpassen Sie die Kommentare
anderer über den momentanen Zustand des Systems und rennen
demzufolge in viele bekannte Probleme, die schon gelöst
sind. Noch kritischer ist, dass Sie wichtige
Bekanntmachungen verpassen, die erhebliche Auswirkungen
auf die Stabilität Ihres Systems haben können.In der &a.cvsall.name; Mailingliste sehen Sie zu jeder
Änderung das Commit-Log, das Informationen zu
möglichen Seiteneffekten enthält.Um diese Listen zu abonnieren (oder zu lesen)
besuchen Sie bitte die Seite &a.mailman.lists.link;.
Weitere Informationen erhalten Sie, wenn Sie dort
auf die gewünschte Liste klicken.Beschaffen Sie sich die Quellen von einem
&os;-Spiegel. Sie haben
dazu zwei Möglichkeiten:cvsupcron-CURRENTmit CVSup
synchronisierenBenutzen Sie das Programm
cvsup
mit der Datei standard-supfile
aus dem Verzeichnis
/usr/share/examples/cvsup.
Dies ist die empfohlene Methode, da Sie die ganzen
Quellen nur einmal herunterladen und danach nur noch
Änderungen beziehen. Viele lassen
cvsup aus cron
heraus laufen, um ihre Quellen automatisch auf Stand
zu bringen. Sie müssen die obige Sup-Datei
anpassen und cvsup
in Ihrer Umgebung konfigurieren.-CURRENTmit CTM synchronisierenCTM
kommt in Frage, wenn Sie
über eine schlechte Internet-Anbindung (hoher Preis
oder nur E-Mail Zugriff) verfügen. Der Umgang mit
CTM ist allerdings recht
mühsam und Sie können beschädigte Dateien
erhalten. Daher wird es selten benutzt, was wiederum
dazu führt, dass es über längere Zeit
nicht funktioniert. Wir empfehlen jedem mit einem
9600 bps oder schnellerem Modem,
CVSup
zu benutzen.Wenn Sie die Quellen einsetzen und nicht nur darin
lesen wollen, besorgen Sie sich bitte die
kompletten Quellen von &os.current; und
nicht nur ausgesuchte Teile. Der Grund hierfür ist,
dass die verschiedenen Teile der Quellen voneinander
abhängen. Es ist ziemlich sicher, dass Sie in
Schwierigkeiten geraten, wenn Sie versuchen, nur einen Teil
der Quellen zu übersetzen.-CURRENTübersetzenSehen Sie sich das Makefile in
/usr/src genau an, bevor Sie
&os.current; übersetzen. Wenn Sie
&os; das erste Mal aktualisieren, sollten Sie sowohl
einen Kernel als auch das
System neu installieren.
Lesen Sie bitte die Mailingliste &a.current;
und /usr/src/UPDATING, um über
Änderungen im Installationsverfahren, die manchmal
vor der Einführung eines neuen Releases notwendig sind,
informiert zu sein.Seien Sie aktiv! Wenn Sie &os.current; laufen lassen,
wollen wir wissen, was Sie darüber denken, besonders
wenn Sie Verbesserungsvorschläge oder Fehlerbehebungen
haben. Verbesserungsvorschläge, die Code enthalten,
werden übrigens begeistert entgegengenommen.&os.stable;Was ist &os.stable;?-STABLE&os.stable; ist der Entwicklungszweig, auf dem Releases
erstellt werden. Dieser Zweig ändert sich langsamer als
&os.current; und alle Änderungen hier sollten zuvor in
&os.current; ausgetestet sein. Beachten Sie, dass dies
immer noch ein Entwicklungszweig ist und
daher zu jedem Zeitpunkt die Quellen von &os.stable; verwendbar
sein können oder nicht. &os.stable; ist Teil des
Entwicklungsprozesses und nicht für Endanwender
gedacht.Wer braucht &os.stable;?Wenn Sie den FreeBSD-Entwicklungsprozess, besonders im
Hinblick auf das nächste Release, verfolgen oder
dazu beitragen wollen, sollten Sie erwägen, &os.stable; zu
benutzen.Auch wenn sicherheitsrelevante Fehlerbehebungen in den
&os.stable; Zweig einfließen, müssen Sie deswegen
noch lange nicht &os.stable; verfolgen. Jeder der FreeBSD
Sicherheitshinweise beschreibt für jedes betroffene Release,
Das stimmt nicht ganz. Obwohl wir alte FreeBSD
Releases für einige Jahre unterstützen, können
wir sie nicht ewig unterstützen. Eine vollständige
Beschreibung der Sicherheitspolitik für alte FreeBSD
Releases entnehmen Sie bitte http://www.FreeBSD.org/security/.
wie sie einen sicherheitsrelevanten Fehler beheben.
Wenn Sie den Entwicklungszweig aus Sicherheitsgründen
verfolgen wollen, bedenken Sie, dass Sie neben
Fehlerbehebungen auch eine Vielzahl unerwünschter
Änderungen erhalten werden.Obwohl wir versuchen sicherzustellen, dass der
&os.stable; Zweig sich jederzeit übersetzen lässt
und läuft, können wir dafür keine Garantie
übernehmen. Auch wenn Neuentwicklungen in &os.current;
stattfinden, ist es jedoch so, dass mehr Leute
&os.stable; benutzen als &os.current; und es daher unvermeidlich
ist, dass Fehler und Grenzfälle erst in &os.stable;
auffallen.Aus diesen Gründen empfehlen wir Ihnen
nicht, blindlings &os.stable; zu benutzen.
Es ist wichtig, dass Sie &os.stable; zuerst sorgfältig
in einer Testumgebung austesten, bevor Sie Ihre Produktion
auf &os.stable; migrieren.Wenn Sie dies nicht leisten können, empfehlen wir Ihnen,
das aktuelle FreeBSD-Release zu verwenden. Benutzen Sie dann den
binären Update-Mechanismus, um auf neue Releases
zu migrieren.Benutzen von &os.stable;-STABLEbenutzenLesen Sie Mailingliste &a.stable.name;, damit Sie über
Abhängigkeiten beim Bau von &os.stable; und Sachen, die
besondere Aufmerksamkeit erfordern, informiert sind.
Umstrittene Fehlerbehebungen oder Änderungen werden von
den Entwicklern auf dieser Liste bekannt gegeben. Dies
erlaubt es den Benutzern, Einwände gegen die
vorgeschlagenen Änderungen vorzubringen.In der &a.cvsall.name; Mailingliste sehen Sie zu jeder
Änderung das Commit-Log, das Informationen zu
möglichen Seiteneffekten enthält.Um diese Listen oder andere Listen zu abonnieren
besuchen Sie bitte die Seite &a.mailman.lists.link;.
Weitere Informationen erhalten Sie, wenn Sie dort
auf die gewünschte Liste klicken.Wenn Sie ein neues System installieren und so aktuell wie
möglich sein wollen, holen Sie sich einfach den neusten
Snapshot von
und installieren ihn wie ein normales Release. Sie
können ebenfalls das neuste &os.stable; von
den Spiegeln beziehen
und Ihr System nach den folgenden Anweisungen
aktualisieren.Wenn Sie schon ein älteres Release von &os;
und das System mit dem Quellcode aktualisieren wollen,
benutzen Sie einen der &os;-Spiegel. Sie haben
dazu zwei Möglichkeiten:cvsupcron-STABLEmit CVSup
synchronisierenBenutzen Sie das Programm
cvsup
mit der Datei stable-supfile
aus dem Verzeichnis
/usr/share/examples/cvsup.
Dies ist die empfohlene Methode, da Sie die ganzen
Quellen nur einmal herunterladen und danach nur noch
Änderungen beziehen. Viele lassen
cvsup aus cron
heraus laufen, um ihre Quellen automatisch auf Stand
zu bringen. Sie müssen das oben erwähnte
supfile anpassen und cvsup konfigurieren.-STABLEmit CTM synchronisierenBenutzen Sie
CTM. Wenn Sie über
keine schnelle und billige Internet-Anbindung
verfügen, sollten Sie diese Methode in Betracht
ziehen.Benutzen Sie cvsup oder
ftp, wenn Sie schnellen Zugriff auf die
Quellen brauchen und die Bandbreite keine Rolle spielt,
andernfalls benutzen Sie
CTM.-STABLEübersetzenBevor Sie &os.stable; übersetzen, sollten Sie sich
das Makefile in
/usr/src genau anschauen. Wenn Sie
&os; das erste Mal aktualisieren, sollten Sie sowohl
einen Kernel als auch das
System neu installieren.
Lesen Sie bitte die Mailingliste &a.stable;
und /usr/src/UPDATING, um über
Änderungen im Installationsverfahren, die manchmal
vor der Einführung eines neuen Releases notwendig sind,
informiert zu sein.Synchronisation der QuellenSie können eine Internet-Verbindung (oder E-Mail) dazu
nutzen, Teile von &os;, wie die Quellen zu einzelnen Projekten, oder
das Gesamtsystem, aktuell zu halten. Dazu bieten wir die Dienste
AnonymousCVS,
CVSup und
CTM an.Obwohl es möglich ist, nur Teile des Quellbaums zu
aktualisieren, ist die einzige unterstütze Migrationsprozedur,
den kompletten Quellbaum zu aktualisieren und alles, das
heißt das Userland (z.B. alle Programme in
/bin und /sbin) und die
Kernelquellen, neu zu übersetzen. Wenn Sie nur einen Teil der
Quellen, zum Beispiel nur den Kernel oder nur die Programme aus dem
Userland, aktualisieren, werden Sie oft Probleme haben, die von
Übersetzungsfehlern über Kernel-Panics bis hin zu
Beschädigungen Ihrer Daten reichen können.CVSanonymousAnonymous CVS und
CVSup benutzen die
Pull-Methode
Von engl. to pull =
ziehen. Der Client holt sich bei dieser
Methode die Dateien ab., um die Quellen zu aktualisieren. Im Fall von
CVSup ruft der Benutzer oder ein
cron-Skript cvsup auf, das
wiederum mit einem cvsupd Server interagiert, um
Ihre Quellen zu aktualisieren. Mit beiden Methoden erhalten Sie
aktuelle Updates zu einem genau von Ihnen bestimmten Zeitpunkt. Sie
können die Prozedur auf bestimmte Dateien oder Verzeichnisse
einschränken, so dass Sie nur die Updates bekommen, die
für Sie von Interesse sind. Die Updates werden zur Laufzeit,
abhängig von den Sachen, die Sie schon haben und den Sachen, die
Sie haben wollen, auf dem Server generiert. Anonymous
CVS ist eine Erweiterung von
CVS, die es Ihnen erlaubt, Änderungen
direkt aus einem entfernten CVS-Repository zu ziehen.
Anonymous CVS ist leichter zu handhaben
als CVSup, doch ist letzteres sehr viel
effizienter.CTMIm Gegensatz dazu vergleicht CTM Ihre
Quellen nicht mit denen auf einem Server. Stattdessen läuft auf
dem Server ein Skript, das Änderungen an Dateien gegenüber
seinem vorigen Lauf bemerkt, die Änderungen komprimiert, mit
einer Sequenznummer versieht und für das Verschicken per E-Mail
kodiert (es werden nur druckbare ASCII-Zeichen verwendet). Wenn Sie
diese CTM-Deltas erhalten haben, können Sie sie
mit &man.ctm.rmail.1; benutzen, welches die Deltas dekodiert,
verifiziert und dann die Änderungen an Ihren Quellen vornimmt.
Dieses Verfahren ist viel effizienter als
CVSup und erzeugt auch weniger Last auf
unseren Servern, da es die
Push-Methode
Von engl. to push =
schieben. Der Server schickt dem Client die
Dateien. verwendet.Es gibt natürlich noch weitere Unterschiede, die Sie
beachten sollten. Wenn Sie unabsichtlich Teile Ihres Archivs
löschen, wird das von CVSup
wie Anonymous CVS erkannt
und repariert. Wenn sich fehlerhafte Dateien in Ihrem Quellbaum
befinden, löschen Sie diese einfach und synchronisieren erneut.
CTM leistet das nicht,
wenn Sie Teile des Quellbaums gelöscht haben und keine Sicherung
besitzen, müssen Sie von neuem, das heißt vom letzten
Basis-Delta, starten und die Änderungen wieder
mit CTM nachziehen.Das komplette Basissystem neu bauenBau des BasissystemsWenn Sie Ihren lokalen Quellbaum mit einer bestimmten FreeBSD
Version (&os.stable;, &os.current;, usw.) synchronisiert haben,
können Sie diesen benutzen, um das System neu zu
bauen.Erstellen Sie eine Sicherung!Es kann nicht oft genug betont werden, wie wichtig es ist, Ihr
System zu sichern, bevor Sie die nachfolgenden
Schritte ausführen. Obwohl der Neubau des Systems eine
- einfache Aufgabe ist, solange Sie sich an die folgende Anleitung
- halten, ist es unvermeidlich, dass Sie Fehler machen, oder Ihr
- System nicht mehr bootet, weil andere Fehler in den Quellbaum
- eingeführt haben.
+ einfache Aufgabe ist, wenn Sie sich an die folgende Anleitung
+ halten, kann es dennoch vorkommen, dass Sie einen Fehler machen,
+ oder dass Ihr System nicht mehr bootet, weil andere Entwickler
+ Fehler in den Quellbaum eingeführt haben.
Stellen Sie sicher, dass Sie eine Sicherung erstellt haben
und über eine Fixit-Floppy oder eine startfähige CD
verfügen. Wahrscheinlich werden Sie die Startmedien
nicht benötigen, aber gehen Sie auf Nummer Sicher!Abonnieren Sie die richtige MailinglisteMailinglisteDie &os.stable; und &os.current; Zweige befinden sich in
ständiger Entwicklung. Die Leute, die zu
&os; beitragen, sind Menschen und ab und zu machen sie
Fehler.Manchmal sind diese Fehler harmlos und lassen Ihr System eine
Warnung ausgeben. Die Fehler können allerdings auch
katastrophal sein und dazu führen, dass Sie Ihr System
nicht mehr booten können, Dateisysteme beschädigt
werden oder Schlimmeres passiert.Wenn solche Probleme auftauchen, wird ein
heads up an die passende Mailingliste geschickt, welches
das Problem erklärt und die betroffenen Systeme benennt. Eine
all clear Meldung wird versendet, wenn das
Problem gelöst ist.Wenn Sie &os.stable; oder &os.current; benutzen und nicht die
Mailinglisten &a.stable; beziehungsweise &a.current; lesen, bringen
Sie sich nur unnötig in Schwierigkeiten.Finger weg von make worldÄltere Dokumentationen empfehlen, das Kommando
make world für den Neubau.
Das Kommando überspringt wichtige Schritte. Setzen
Sie es nur ein, wenn Sie wissen was Sie tun. In fast
allen Fällen ist make world
falsch, benutzen Sie stattdessen die nachstehende
Anleitung.Richtig aktualisierenUm Ihr System zu aktualisieren, sollten Sie zuerst
/usr/src/UPDATING lesen, und
eventuelle, für Ihre Quellcodeversion nötigen
Aufgaben erledigen, bevor Sie das System bauen. Danach
aktualisieren Sie Ihr System mit den folgenden
Schritten:&prompt.root; make buildworld
&prompt.root; make buildkernel
&prompt.root; make installkernel
&prompt.root; rebootEs gibt einige, sehr seltene Situationen, in denen Sie
mergemaster -p zusätzlich
ausführen müssen, bevor Sie das System mit
buildworld bauen. Diese Situationen
werden in UPDATING beschrieben. Solche
Situationen treten aber in der Regel nur dann auf, wenn Sie
Ihr &os;-System um eine oder mehrere Hauptversionen
aktualisieren.Nachdem installkernel erfolgreich
abgeschlossen wurde, starten Sie das System im Single-User-Modus
(etwa durch die Eingabe von boot -s am
Loaderprompt). Danach führen Sie die folgenden Anweisungen
aus:&prompt.root; mergemaster -p
&prompt.root; make installworld
&prompt.root; mergemaster
&prompt.root; rebootLesen Sie bitte weiterDie obige Vorschrift ist nur eine
Gedächtnisstütze. Um die einzelnen
Schritte zu verstehen, lesen Sie bitte die
folgenden Abschnitte, insbesondere wenn Sie
einen angepassten Kernel erstellen.Lesen Sie /usr/src/UPDATINGBevor Sie etwas anderes tun, lesen Sie bitte
/usr/src/UPDATING (oder die entsprechende
Datei, wenn Sie den Quellcode woanders installiert haben). Die
Datei enthält wichtige Informationen zu Problemen, auf die Sie
stoßen könnten oder gibt die Reihenfolge vor, in der Sie
bestimmte Kommandos laufen lassen müssen. Die Anweisungen in
UPDATING sind aktueller als die in diesem
Handbuch. Im Zweifelsfall folgen Sie bitte den Anweisungen aus
UPDATING.Das Lesen von UPDATING ersetzt nicht das
Abonnieren der richtigen Mailingliste. Die beiden Voraussetzungen
ergänzen sich, es reicht nicht aus, nur eine zu
erfüllen.Überprüfen Sie
/etc/make.confmake.confÜberprüfen Sie die Dateien
/usr/share/examples/etc/make.conf
(/etc/defaults/make.conf unter &os; 4.X)
und /etc/make.conf. Die erste enthält
Vorgabewerte, von denen die meisten auskommentiert sind. Um diese
während des Neubaus des Systems zu nutzen, tragen Sie die
Werte in /etc/make.conf ein. Beachten Sie,
dass alles, was Sie in /etc/make.conf
eintragen, bei jedem Aufruf von make angezogen
wird. Es ist also klug, hier etwas Sinnvolles einzutragen.Typischerweise wollen Sie die Zeilen, die
CFLAGS und NOPROFILE
enthalten, aus
/usr/share/examples/etc/make.conf
(/etc/defaults/make.conf unter &os; 4.X)
nach /etc/make.conf übertragen und dort
aktivieren.Sehen Sie sich auch die anderen Definitionen, wie
COPTFLAGS oder NOPORTDOCS an
und entscheiden Sie, ob Sie diese aktivieren wollen.Aktualisieren Sie die Dateien in /etcDas Verzeichnis /etc enthält den
Großteil der Konfigurationsdateien des Systems und Skripten,
die beim Start des Systems ausgeführt werden. Einige dieser
Skripten ändern sich bei einer Migration auf eine neue
FreeBSD-Version.Einige der Konfigurationsdateien, besonders
/etc/group, werden für den Normalbetrieb
des Systems gebraucht.Es gab Fälle, in denen das Kommando
make installworld auf bestimmte
Accounts oder Gruppen angewiesen war, die aber während
der Aktualisierung fehlten. Demzufolge kam es zu Problemen
bei der Aktualisierung. In einigen Fällen prüft
make buildworld ob die Accounts oder
Gruppen vorhanden sind.Ein Beispiel dafür ist der vor kurzem hinzugefügte
Benutzer smmsp. Die Installationsprozedur
schlug an der Stelle fehl, an der &man.mtree.8;
versuchte, /var/spool/clientmqueue
anzulegen.Um dieses Problem zu umgehen, vergleichen Sie die Gruppen in
/usr/src/etc/group mit den auf Ihrem System
vorhandenen Gruppen. Wenn sich in dieser Datei neue Gruppen
befinden, kopieren Sie diese nach /etc/group.
Gruppen, die in /etc/group dieselbe GID wie in
/usr/src/etc/group aber einen
unterschiedlichen Namen haben, sollten Sie umbenennen.Seit 4.6-RELEASE besitzt &man.mergemaster.8; einen
prä-buildworld Modus, der mit aktiviert
wird. In diesem Modus werden nur Dateien verglichen, die für
den Erfolg von buildworld oder
installworld essentiell sind. Wenn Ihre
alte Version von mergemaster die Option
noch nicht unterstützt, nehmen Sie beim
ersten Lauf die neue Version aus dem Quellbaum:&prompt.root; cd /usr/src/usr.sbin/mergemaster
&prompt.root; ./mergemaster.sh -pWenn Sie besonders paranoid sind, sollten Sie Ihr System nach
Dateien absuchen, die der Gruppe, die Sie umbenennen oder
löschen, gehören:&prompt.root; find / -group GID -printDas obige Kommando zeigt alle Dateien an, die der Gruppe
GID (dies kann entweder ein
Gruppenname oder eine numerische ID sein) gehören.
- Wechseln Sie in den Single-User Modus
- Single-User Modus
+ Wechseln Sie in den Single-User-Modus
+ Single-User-Modus
- Sie können das System im Single-User Modus
+ Sie können das System im Single-User-Modus
übersetzen. Abgesehen davon, dass dies etwas schneller
ist, werden bei der Installation des Systems viele wichtige Dateien,
wie die Standard-Systemprogramme, die Bibliotheken und
Include-Dateien, verändert. Sie bringen sich in
Schwierigkeiten, wenn Sie diese Dateien auf einem laufenden System
verändern, besonders dann, wenn zu dieser Zeit Benutzer auf
dem System aktiv sind.MehrbenutzermodusEine andere Methode übersetzt das System im
- Mehrbenutzermodus und wechselt für die Installation den
- Single-User Modus. Wenn Sie diese Methode benutzen wollen, warten
+ Mehrbenutzermodus und wechselt für die Installation in den
+ Single-User-Modus. Wenn Sie diese Methode benutzen wollen, warten
Sie mit den folgenden Schritten, bis der Bau des Systems fertig
ist und Sie mit installkernel oder
installworld installieren wollen.Als Superuser können Sie mit dem folgenden Kommando ein
- laufendes System in den Single-User Modus bringen:
+ laufendes System in den Single-User-Modus bringen:
- &prompt.root;
+ &prompt.root; shutdown nowAlternativ können Sie das System mit der Option
- in den Single-User Modus booten. Setzen Sie
+ in den Single-User-Modus booten. Setzen Sie
dann die folgenden Kommandos ab:&prompt.root; fsck -p
&prompt.root; mount -u /
&prompt.root; mount -a -t ufs
&prompt.root; swapon -aDie Kommandos überprüfen die Dateisysteme,
hängen / wieder beschreibbar ein,
hängen dann alle anderen UFS Dateisysteme aus
/etc/fstab ein und aktivieren den
Swap-Bereich.Zeigt Ihre CMOS-Uhr die lokale Zeit und nicht GMT an, dies
erkennen Sie daran, dass &man.date.1; die
falsche Zeit und eine flasche Zeitzone anzeigt, setzen Sie das
folgende Kommando ab:&prompt.root; adjkerntz -iDies stellt sicher, dass Ihre Zeitzone richtig
eingestellt ist. Ohne dieses Kommando werden Sie
vielleicht später Probleme bekommen.Entfernen Sie /usr/objDie neugebauten Teile des Systems werden in der Voreinstellung
unter /usr/obj gespeichert. Die Verzeichnisse
dort spiegeln die Struktur unter
/usr/src.Sie können den make buildworld Prozess
beschleunigen, indem Sie dieses Verzeichnis entfernen. Dies
erspart Ihnen zudem einigen Ärger aufgrund von
Abhängigkeiten.Einige Dateien unter /usr/obj sind
vielleicht durch die -Option
(siehe &man.chflags.1;) schreibgeschützt, die vor dem
Löschen entfernt werden muss.&prompt.root; cd /usr/obj
&prompt.root; chflags -R noschg *
&prompt.root; rm -rf *Übersetzen der QuellenSichern der AusgabenFür den Fall, dass etwas schief geht, sollten Sie
die Ausgaben von &man.make.1; in einer Datei sichern, damit Sie
eine Kopie der Fehlermeldung besitzen. Das mag Ihnen nicht
helfen, den Fehler zu finden, kann aber anderen helfen, wenn Sie
Ihr Problem in einer der &os;-Mailinglisten schildern.Dazu können Sie einfach das Kommando &man.script.1;
benutzen, dem Sie beim Aufruf als Parameter den Dateinamen
für die Ausgaben mitgeben. Setzen Sie das Kommando
unmittelbar vor dem Neubau ab und geben Sie
exit ein, wenn der Bau abgeschlossen
ist:&prompt.root; script /var/tmp/mw.out
Script started, output file is /var/tmp/mw.out
&prompt.root; make TARGET… Ausgaben des Kommandos …
&prompt.root; exit
Script done, …Sichern Sie die Ausgaben nicht in /tmp,
da dieses Verzeichnis beim nächsten Boot aufgeräumt
werden kann. Ein geeigneteres Verzeichnis ist
/var/tmp, wie im vorigen Beispiel gezeigt,
oder das Heimatverzeichnis von root.Übersetzen des BasissystemsWechseln Sie in das Verzeichnis, in dem die Quellen liegen
(in der Voreinstellung ist das
/usr/src):&prompt.root; cd /usr/srcmakeZum Neubau der Welt benutzen Sie &man.make.1;. Dieses
Kommando liest ein Makefile, das Anweisungen
enthält, wie die Programme, aus denen &os; besteht, zu bauen
sind und in welcher Reihenfolge diese zu bauen sind.Ein typischer Aufruf von make sieht wie
folgt aus:&prompt.root; make -x -DVARIABLEtargetIn diesem Beispiel ist
eine Option, die
Sie an &man.make.1; weitergeben wollen. Eine Liste gültiger
Optionen finden Sie in der &man.make.1; Manualpage.Das Verhalten eines Makefiles wird von
Variablen bestimmt. Mit
setzen Sie
eine Variable. Diese Variablen sind dieselben, die auch in
/etc/make.conf gesetzt werden, dies ist nur
ein alternativer Weg, Variablen zu setzen.Um zu verhindern, dass die profiled
Bibliotheken gebaut werden, rufen Sie make wie
folgt auf:&prompt.root; make -DNOPROFILE targetDieser Aufruf entspricht dem folgenden Eintrag in
/etc/make.conf:NOPROFILE= true # Avoid compiling profiled librariesJedes Makefile definiert einige
Ziele, die festlegen, was genau zu tun ist. Mit
target wählen Sie eins dieser
Ziele aus.Einige Ziele im Makefile sind nicht
für den Endanwender gedacht, sondern unterteilen den
Bauprozess in eine Reihe von Einzelschritten.Im Regelfall müssen Sie &man.make.1; keine Parameter
mitgeben, so dass Ihre Kommandozeile wie folgt aussehen
wird:&prompt.root; make targetIn der &os; Version 2.2.5 wurde das Ziel
world in zwei Ziele aufgespalten:
buildworld und
installworld. Tatsächlich ist das
zuerst in &os.current; passiert und wurde dann irgendwann
zwischen den Versionen 2.2.2 und 2.2.5 in &os.stable;
eingebaut. In der Voreinstellung wird das Ziel
world ab &os; 5.3 nicht mehr
funktionieren, da es in den meisten Fällen Schaden
anrichtet.Mit buildworld wird ein kompletter
Baum unterhalb von /usr/obj gebaut, der mit
installworld auf dem System installiert
werden kann.Dies ist aus zwei Gründen nützlich. Erstens
können Sie das System auf einem laufenden System bauen, da die
Bauprozedur abgekapselt vom Rest des Systems ist. Das System
lässt sich im Mehrbenutzermodus ohne negative
Seiteneffekte bauen. Die Installation mit
installworld sollte aber immer noch im
- Single-User Modus erfolgen.
+ Single-User-Modus erfolgen.
Zweitens können Sie NFS benutzen, um mehrere Maschinen
in Ihrem Netzwerk zu aktualisieren. Wenn Sie die Maschinen
A, B und C
aktualisieren wollen, lassen sie make
buildworld und make installworld auf
A laufen. Auf den Maschinen B
und C können Sie die
Verzeichnisse /usr/src und
/usr/obj von A einhängen
und brauchen dort nur noch make installworld
auszuführen, um die Bauresultate zu installieren.Obwohl das Ziel world noch
existiert, sollten Sie es wirklich nicht mehr benutzen.Um das System zu bauen, setzen Sie das folgende Kommando
ab:&prompt.root; make buildworldMit können Sie
make anweisen, mehrere Prozesse zu starten.
Besonders effektiv ist das auf Mehrprozessor-Systemen. Da aber
der Übersetzungsprozess hauptsächlich von IO statt
der CPU bestimmt wird, ist diese Option auch auf
Einprozessor-Systemen nützlich.Auf einem typischen Einprozessor-System können Sie den
folgenden Befehl absetzen:&prompt.root; make -j4 buildworld&man.make.1; wird dann bis zu vier Prozesse gleichzeitig
laufen lassen. Erfahrungsberichte aus den Mailinglisten zeigen,
dass dieser Aufruf typischerweise den besten
Geschwindigkeitsgewinn bringt.Wenn Sie ein Mehrprozessor-System besitzen und SMP in Ihrem
Kernel konfiguriert ist, probieren Sie Werte zwischen 6 und 10
aus.Beachten Sie bitte, dass dies noch nicht richtig
unterstützt wird und dass es bei einigen
Änderungen am Quellbaum zu Fehlern kommen kann. Wenn Sie
diesen Parameter benutzt haben und der Bau nicht funktioniert,
bauen Sie bitte noch einmal ohne den Parameter, bevor Sie ein
Problem melden.LaufzeitenBau des BasissystemsLaufzeitenDie Laufzeit eines Baus wird von vielen Faktoren
beeinflusst. Ein 500 MHz &pentium; III braucht
ungefähr zwei Stunden um &os.stable; zu bauen. Der Bau von
&os.current; dauert etwas länger.Übersetzen und Installation des KernelsKernelÜbersetzenUm das Beste aus Ihrem System zu holen, sollten Sie einen neuen
Kernel kompilieren. Praktisch gesehen ist das sogar notwendig, da
sich einige Datenstrukturen geändert haben und Programme wie
&man.ps.1; oder &man.top.1; nur mit einem Kernel zusammen arbeiten,
der auch zu dem entsprechenden Quellcode passt.Am einfachsten und sichersten bauen Sie dazu den
GENERIC Kernel. Obwohl der
GENERIC Kernel vielleicht nicht alle
Ihre Geräte unterstützt, sollte er alles enthalten,
- um das System in den Single-User Modus zu booten. Dies ist auch
+ um das System in den Single-User-Modus zu booten. Dies ist auch
ein guter Test, um zu sehen, dass das System
ordnungsgemäß funktioniert. Nachdem Sie mit
GENERIC gebootet und sichergestellt haben,
dass Ihr System funktioniert, können Sie einen neuen
Kernel mit Ihrer Konfigurationsdatei bauen.In aktuellen &os;-Versionen müssen Sie das
Basissystem neu bauen,
bevor Sie einen neuen Kernel erstellen.Wenn Sie einen angepassten Kernel erstellen wollen und
bereits über eine Konfigurationsdatei verfügen,
geben Sie diese, wie im folgenden Beispiel gezeigt, auf der
Kommandozeile an:&prompt.root; cd /usr/src
&prompt.root; make buildkernel KERNCONF=MYKERNEL
&prompt.root; make installkernel KERNCONF=MYKERNEL
- Wenn Sie FreeBSD 4.2 oder eine ältere Version
- verwenden, ersetzen Sie KERNCONF= durch
- KERNEL=. Ab der 4.2-STABLE Version vom
- 2. Februar 2001 können Sie die Variable
- KERNCONF verwenden.Wenn kern.securelevel einen Wert
größer als 1 besitzt
und der Kernel mit noschg
oder ähnlichen Optionen geschützt ist, müssen Sie
installkernel im Einbenutzermodus
ausführen. Wenn das nicht der Fall ist, sollten die beiden
Kommandos problemlos im Mehrbenutzermodus laufen. Weitere
Informationen über kern.securelevel finden
Sie in &man.init.8; und &man.chflags.1; erläutert Optionen, die
Sie auf Dateien setzen können.
-
- Wenn Sie ein Update auf eine &os; Version vor 4.0
- durchführen, sollten Sie die herkömmliche
- Methode benutzen. Es ist allerdings empfohlen, dazu die frisch
- gebaute Version von &man.config.8; zu benutzen:
-
- &prompt.root; /usr/obj/usr/src/usr.sbin/config/config KERNELNAME
- Booten Sie in den Single-User Modus
- Single-User Modus
+ Booten Sie in den Single-User-Modus
+ Single-User-ModusUm zu prüfen, ob der neue Kernel funktioniert, sollten Sie
- in den Single-User Modus booten. Folgen Sie dazu der Anleitung aus
+ in den Single-User-Modus booten. Folgen Sie dazu der Anleitung aus
.Installation des SystemsWenn Sie make buildworld benutzt haben, um
das System zu bauen, sollten Sie jetzt
installworld benutzen, um es zu
installieren. Rufen Sie dazu das folgende Kommando auf:&prompt.root; cd /usr/src
&prompt.root; make installworldWenn Sie mit dem make buildworld Kommando
Variablen verwenden haben, müssen Sie dieselben Variablen
auch bei dem make installworld Kommando
angeben. Auf die anderen Optionen trifft das nur bedingt zu:
darf mit installworld
nicht benutzt werden.Sie haben zum Bauen die folgende Kommandozeile
verwendet:&prompt.root; make -DNOPROFILE buildworldBei der Installation setzen Sie dann das folgende Kommando
ab:&prompt.root; make -DNOPROFILE installworldWürden Sie die Variable bei der Installation weglassen,
so würde das System versuchen, die profiled
Bibliotheken, die aber gar nicht gebaut wurden, zu
installieren.Aktualisieren der von make installworld
ausgelassenen DateienNeue oder geänderte Konfigurationsdateien aus einigen
Verzeichnissen, besonders /etc,
/var und /usr werden bei
der Installationsprozedur nicht berücksichtigt.Sie können diese Dateien mit &man.mergemaster.8;
aktualisieren. Alternativ können Sie das auch manuell
durchführen, obwohl wir diesen Weg nicht empfehlen. Egal
welchen Weg Sie beschreiten, sichern Sie vorher den Inhalt von
/etc für den Fall, dass etwas schief
geht.TomRhodesBeigetragen von mergemastermergemasterDas Bourne-Shell Skript &man.mergemaster.8; hilft Ihnen dabei,
die Unterschiede zwischen den Konfigurationsdateien in
/etc und denen im Quellbaum unter
/usr/src/etc zu finden.
mergemaster ist der empfohlene Weg, Ihre
Systemkonfiguration mit dem Quellbaum abzugleichen.
- Zwischen 3.3-RELEASE und 3.4-RELEASE wurde
- mergemaster in das Basissystem integriert, so
- dass es in allen -STABLE und -CURRENT Systemen seit der
- Version 3.3 vorhanden ist.
-
Rufen Sie mergemaster einfach auf und
schauen Sie zu. Ausgehend von / wird
mergemaster einen virtuellen Root-Baum
aufbauen und darin die neuen Konfigurationsdateien ablegen.
Diese Dateien werden dann mit den auf Ihrem System installierten
verglichen. Unterschiede zwischen den Dateien werden im
&man.diff.1;-Format dargestellt. Neue oder geänderte Zeilen
werden mit gekennzeichnet. Zeilen die
gelöscht oder ersetzt werden, sind mit einem
gekennzeichnet. Das Anzeigeformat wird in
&man.diff.1; genauer erklärt.&man.mergemaster.8; zeigt Ihnen jede geänderte Datei an
und Sie haben die Wahl, die neue Datei (in
mergemaster wird sie temporäre Datei
genannt) zu löschen, sie unverändert zu installieren,
den Inhalt der neuen Datei mit dem Inhalt der alten Datei
abzugleichen, oder die &man.diff.1; Ausgabe noch einmal zu
sehen. Sie können die aktuelle Datei auch
überspringen, sie wird dann noch einmal angezeigt, nachdem
alle anderen Dateien abgearbeitet wurden. Sie erhalten Hilfe,
wenn Sie bei der Eingabeaufforderung von
mergemaster ein ?
eingeben.Wenn Sie die temporäre Datei löschen, geht
mergemaster davon aus, dass Sie Ihre
aktuelle Datei behalten möchten. Wählen Sie die Option
bitte nur dann, wenn Sie keinen Grund sehen, die aktuelle Datei
zu ändern.Wenn Sie die temporäre Datei installieren, wird Ihre
aktuelle Datei mit der neuen Datei überschrieben. Sie
sollten alle unveränderten Konfigurationsdateien auf diese
Weise aktualisieren.Wenn Sie sich entschließen den Inhalt beider Dateien
abzugleichen, wird ein Texteditor aufgerufen, indem Sie beide
Dateien nebeneinander betrachten können. Mit der Taste
l übernehmen Sie die aktuelle Zeile der
links dargestellten Datei, mit der Taste r
übernehmen Sie die Zeile der rechts dargestellten Datei.
Das Ergebnis ist eine Datei, die aus Teilen der beiden
ursprünglichen Dateien besteht und installiert werden kann.
Dieses Verfahren wird gewöhnlich bei veränderten
Dateien genutzt.Haben Sie sich entschieden die Differenzen noch einmal
anzuzeigen, zeigt Ihnen &man.mergemaster.8; dieselbe Ausgabe, die
Sie gesehen haben, bevor die Eingabeaufforderung ausgegeben
wurde.Wenn &man.mergemaster.8; alle Systemdateien abgearbeitet hat,
werden weitere Optionen abgefragt. Sie werden unter
Umständen gefragt, ob Sie die Passwort-Datei neu bauen
oder &man.MAKEDEV.8; laufen lassen wollen. Am Ende
haben Sie die Möglichkeit, den Rest der temporären Dateien
zu löschen.Manueller Abgleich der KonfigurationsdateienWenn Sie den Abgleich lieber selbst ausführen wollen,
beachten Sie bitte, dass Sie nicht einfach die Dateien aus
/usr/src/etc nach /etc
kopieren können. Einige dieser Dateien müssen zuerst
installiert werden, bevor sie benutzt werden
können. Das liegt daran, dass
/usr/src/etc keine exakte Kopie von
/etc ist. Zudem gibt es Dateien, die sich
in /etc befinden aber nicht in
/usr/src/etc. Wenn Sie, wie empfohlen,
mergemaster benutzen, lesen Sie bitte im
nächsten Abschnitt
weiter.Am einfachsten ist es, wenn Sie die neuen Dateien in ein
temporäres Verzeichnis installieren und sie nacheinander auf
Differenzen zu den bestehenden Dateien durchsehen.Sichern Sie die Inhalte von /etcObwohl bei dieser Prozedur keine Dateien in
/etc automatisch verändert werden,
sollten Sie dessen Inhalt an einen sicheren Ort
kopieren:&prompt.root; cp -Rp /etc /etc.oldMit wird rekursiv kopiert und
erhält die Attribute der kopierten
Dateien, wie Zugriffszeiten und Eigentümer.Sie müssen die neuen Dateien in einem temporären
Verzeichnis installieren. /var/tmp/root ist
eine gute Wahl für das temporäre Verzeichnis, in dem
auch noch einige Unterverzeichnisse angelegt werden
müssen.&prompt.root; mkdir /var/tmp/root
&prompt.root; cd /usr/src/etc
&prompt.root; make DESTDIR=/var/tmp/root distrib-dirs distributionDie obigen Kommandos bauen die nötige
Verzeichnisstruktur auf und installieren die neuen Dateien in
diese Struktur. Unterhalb von /var/tmp/root
wurden einige leere Verzeichnisse angelegt, die Sie am besten wie
folgt entfernen:&prompt.root; cd /var/tmp/root
&prompt.root; find -d . -type d | xargs rmdir 2>/dev/nullIm obigen Beispiel wurde die Fehlerausgabe nach
/dev/null umgeleitet, um die Warnungen
über nicht leere Verzeichnisse zu unterdrücken./var/tmp/root enthält nun alle
Dateien, die unterhalb von / installiert
werden müssen. Sie müssen nun jede dieser Dateien mit
den schon existierenden Dateien vergleichen.Einige der installierten Dateien unter
/var/tmp/root beginnen mit einem
..
Als dieses Kapitel verfasst wurde, waren das nur die
Startdateien für die Shells in
/var/tmp/root/ und
/var/tmp/root/root/. Abhängig davon,
wann Sie dieses Handbuch lesen, können mehr Dateien dieser
Art existieren. Verwenden Sie ls -a um
sicherzustellen, dass Sie alle derartigen Dateien
finden.Benutzen Sie &man.diff.1; um Unterschiede zwischen zwei
Dateien festzustellen:&prompt.root; diff /etc/shells /var/tmp/root/etc/shellsDas obige Kommando zeigt Ihnen die Unterschiede zwischen der
installierten Version von /etc/shells und
der neuen Version in /var/tmp/root/etc/shells.
Entscheiden Sie anhand der Unterschiede, ob
Sie beide Dateien abgleichen oder die neue Version über die
alte kopieren wollen.Versehen Sie das temporäre Verzeichnis mit einem
ZeitstempelWenn Sie das System oft neu bauen, müssen Sie
/etc genauso oft aktualisieren. Dies kann
mit der Zeit sehr lästig werden.Sie können das Verfahren beschleunigen, wenn Sie sich
eine Kopie der Dateien behalten, die Sie zuletzt nach
/etc installiert haben. Das folgende
Verfahren zeigt Ihnen, wie das geht.Folgen Sie der normalen Prozedur um das System zu
bauen. Wenn Sie /etc und die anderen
Verzeichnisse aktualisieren wollen, geben Sie dem
temporären Verzeichnis einen Namen, der das aktuelle
Datum enthält. Wenn Sie dies zum Beispiel am
14. Februar 1998 durchführten, hätten Sie die
folgenden Kommandos abgesetzt:&prompt.root; mkdir /var/tmp/root-19980214
&prompt.root; cd /usr/src/etc
&prompt.root; make DESTDIR=/var/tmp/root-19980214 \
distrib-dirs distributionGleichen Sie die Änderungen entsprechend der
Anleitung von oben ab.Wenn Sie fertig sind, entfernen Sie das Verzeichnis
/var/tmp/root-19980214nicht.Wenn Sie nun neue Quellen heruntergeladen und gebaut
haben, folgen Sie bitte Schritt 1. Wenn Sie zwischen den
Updates eine Woche gewartet haben, haben Sie nun ein
Verzeichnis mit dem Namen
/var/tmp/root-19980221.Sie können nun die Unterschiede, die sich in einer
Woche ergeben haben, sehen, indem Sie &man.diff.1; rekursiv
anwenden:&prompt.root; cd /var/tmp
&prompt.root; diff -r root-19980214 root-19980221Üblicherweise sind die Differenzen, die Sie jetzt
sehen, kleiner als die Differenzen zwischen
/var/tmp/root-19980221/etc und
/etc. Da die angezeigten Differenzen
kleiner sind, ist es jetzt einfacher den Abgleich der
Dateien durchzuführen.Sie können nun das älteste der beiden
/var/tmp/root-* Verzeichnisse
entfernen:&prompt.root; rm -rf /var/tmp/root-19980214Wiederholen Sie diesen Prozess jedes Mal wenn Sie
Dateien in /etc abgleichen
müssen.Mit &man.date.1; können Sie den Verzeichnisnamen
automatisch erzeugen:&prompt.root; mkdir /var/tmp/root-`date "+%Y%m%d"`Aktualisieren Sie /devDEVFSÜberspringen Sie diesen Abschnitt, wenn Sie
FreeBSD 5.0 oder eine neuere Version benutzen. In diesen
Versionen werden die Gerätedateien automatisch von
&man.devfs.5; angelegt.In den meisten Fällen bemerkt &man.mergemaster.8; wann es
notwendig ist, Gerätedateien in /dev
zu erstellen. Die folgenden Anweisungen zeigen Ihnen, wie Sie dies
manuell durchführen.Um sicher zu gehen, besteht dieser Prozess aus mehreren
Schritten.Kopieren Sie /var/tmp/root/dev/MAKEDEV
nach /dev:&prompt.root; cp /var/tmp/root/dev/MAKEDEV /devMAKEDEVWenn Sie &man.mergemaster.8; benutzt haben, sollte
MAKEDEV schon aktualisiert sein, obwohl es
nicht schadet, das mit diff zu
überprüfen und die Datei, wenn nötig, manuell zu
kopieren.Sichern Sie jetzt die Dateiinformationen aus
/dev. Sie brauchen die Rechte,
Eigentümer, sowie die Major und Minor Nummern der
Gerätedateien (die Zeitstempel sind nicht wichtig). Am
besten erledigen Sie das mit &man.awk.1;:&prompt.root; cd /dev
&prompt.root; ls -l | awk '{print $1, $2, $3, $4, $5, $6, $NF}' > /var/tmp/dev.outErstellen Sie alle Gerätedateien neu:&prompt.root; Sammeln Sie erneut die Dateiinformationen aus
/dev, diesmal in der Datei
/var/tmp/dev2.out ein. Vergleichen Sie
beide Dateien und suchen Sie nach Gerätedateien, die nicht
erstellt wurden. Sie sollten keine finden, aber es ist besser
das jetzt wirklich zu kontrollieren:&prompt.root; diff /var/tmp/dev.out /var/tmp/dev2.outWenn es doch fehlende Einträge gibt, sind dies
wahrscheinlich fehlende Geräte für Slices. Diese
können Sie mit einem Befehl wie dem folgenden
wiederherstellen:&prompt.root; sh MAKEDEV sd0s1Die genauen Geräte können bei Ihnen
natürlich andere sein.Aktualisieren Sie /standDieser Schritt wurde nur der Vollständigkeit wegen
aufgenommen. Sie können ihn komplett auslassen.
Ab &os; 5.2 werden beim Lauf von
make installworld automatisch
aktuelle statisch übersetzte Programme im Verzeichnis
/rescue installiert. Daher ist
es überflüssig, /stand
zu aktualisieren (das ab &os; 6.0 ohnehin nicht
mehr existiert).Der Vollständigkeit halber wollen Sie vielleicht auch die
Dateien in /stand aktualisieren. Alle Dateien
in diesem Verzeichnis sind Hardlinks zu
/stand/sysinstall. Dieses Programm ist
statisch gelinkt, so dass es unabhängig von den Dateien
in anderen Dateisystemen, insbesondere /usr,
ist.&prompt.root; cd /usr/src/release/sysinstall
&prompt.root; make all installBootenSie sind nun am Ende der Prozedur angelangt. Nachdem Sie sich
davon überzeugt haben, dass Ihr System funktioniert,
booten Sie das System mit &man.shutdown.8;:&prompt.root; shutdown -r nowEndeHerzlichen Glückwunsch! Sie haben gerade erfolgreich Ihr
&os; System aktualisiert.Es ist übrigens leicht einen Teil des Systems
wiederherzustellen, für den Fall, dass Ihnen ein kleiner
Fehler unterlaufen ist. Wenn Sie beispielsweise während des
Updates oder Abgleichs /etc/magic aus Versehen
gelöscht haben, wird &man.file.1; nicht mehr funktionieren.
In diesem Fall können Sie das Problem mit dem folgenden
Kommando beheben:&prompt.root; cd /usr/src/usr.bin/file
&prompt.root; FragenMuss ich wirklich immer alles neu bauen, wenn sich
etwas geändert hat?Darauf gibt es keine einfache Antwort. Was zu tun ist,
hängt von den Änderungen ab. Es lohnt
wahrscheinlich nicht, alles neu zu bauen, wenn sich bei einem
CVSup-Lauf nur die folgenden
Dateien geändert haben:src/games/cribbage/instr.csrc/games/sail/pl_main.csrc/release/sysinstall/config.csrc/release/sysinstall/media.csrc/share/mk/bsd.port.mkIn diesem Fall können Sie in die entsprechenden
Unterverzeichnisse wechseln und dort make all
install ausführen. Wenn sich allerdings etwas
Wichtiges, wie src/lib/libc/stdlib,
geändert hat, sollten Sie die Welt oder
mindestens die statisch gelinkten Teile des Systems (sowie
Ihre statisch gelinkten Ergänzungen) neu bauen.Letztendlich ist das Ihre Entscheidung. Sie sind
vielleicht damit zufrieden, das System alle zwei Wochen neu
zu bauen und in der Zwischenzeit die anfallenden
Änderungen zu sammeln. Wenn Sie sich zutrauen, alle
Abhängigkeiten zu erkennen, bauen Sie vielleicht auch
nur die geänderten Sachen neu.Das hängt natürlich auch noch davon ab, wie oft
Sie ein Update durchführen wollen und ob Sie &os.stable;
oder &os.current; benutzen.Der Bau bricht mit vielen
Signal 11-Fehlern (oder anderen
Signalnummern) ab. Was ist da passiert?Signal 11Normalerweise zeigen diese Meldungen Hardwarefehler an.
Ein Neubau der Welt ist ein guter Belastungstest für
Ihre Hardware und zeigt oft Probleme mit dem Speicher auf.
Dies äußert sich darin, dass der Kompiler
mit dem Erhalt von seltsamen Signalen abbricht.Es liegt garantiert ein Hardwarefehler vor, wenn ein
neuer Übersetzungslauf an einer anderen Stelle
abbricht.In diesem Fall können Sie nur einzelne Komponenten
Ihres Systems tauschen, um zu bestimmen, welche Komponente den
Fehler verursacht.Kann ich /usr/obj löschen, wenn
ich fertig bin?Kurze Antwort: Ja.In /usr/obj werden alle Dateien
abgelegt, die während der Übersetzungsphase erstellt
wurden. Dieses Verzeichnis wird in einem der ersten Schritte
der Bauprozedur entfernt. Es macht daher
wenig Sinn, dieses Verzeichnis zu behalten und Sie setzen
eine Menge Plattenplatz, momentan ungefähr 340 MB,
frei, wenn Sie es löschen.Wenn Sie allerdings genau wissen, was Sie tun, können
Sie diesen Schritt bei make buildworld
auslassen. Nachfolgende Bauprozeduren werden dadurch erheblich
schneller, da die meisten Quelldateien nicht mehr neu
übersetzt werden. Dafür können aber subtile
Abhängigkeitsprobleme entstehen, die dazu führen,
dass der Bau auf merkwürdige Weise abbrechen kann.
Dies führt häufig zu unnötigen Diskussionen auf
den &os; Mailinglisten, wenn sich jemand über einen
kaputten Bau beschwert, aber nicht sieht, dass er
Probleme hat, weil er eine Abkürzung genommen hat.Kann ein abgebrochener Bau weitergeführt
werden?Das hängt davon ab, wieweit der Bauprozess
fortgeschritten ist.Üblicherweise werden
essentielle Werkzeuge, wie &man.gcc.1; und &man.make.1;,
und die Systembibliotheken während des Bauprozesses
neu erstellt (dies ist aber keine allgemein gültige
Regel). Die neu erstellen Werkzeuge und Bibliotheken werden
dann benutzt, um sich selbst noch einmal zu bauen, und wieder
installiert. Anschließend wird das Gesamtsystem mit
den neu erstellten Systemdateien gebaut.Wenn Sie sich im letzten Schritt befinden und Sie wissen,
dass Sie dort sind, weil Sie durch die Ausgaben, die Sie
ja sichern, der Bauprozedur gesehen haben, können Sie
mit ziemlicher Sicherheit den Bau weiterführen:… Fehler beheben …
&prompt.root; cd /usr/src
&prompt.root; make -DNOCLEAN allDie Variable NOCLEAN verhindert,
dass make buildworld die vorher erstellten
Dateien löscht.Das Sie sich im letzten Schritt der Bauprozedur
befinden, erkennen Sie daran, dass Sie in der Ausgabe die
folgenden Zeilen finden:--------------------------------------------------------------
Building everything..
--------------------------------------------------------------Wenn Sie diese Meldung nicht finden, oder sich nicht sicher
sind, dann ist es besser, noch einmal ganz von Vorne
anzufangen.Wie kann ich den Bauprozesss beschleunigen?
- Bauen Sie im Single-User Modus.
+ Bauen Sie im Single-User-Modus.Legen Sie /usr/src und
/usr/obj in getrennte Dateisysteme auf
unterschiedliche Festplatten. Benutzen Sie nach
Möglichkeit auch getrennte Platten-Controller.Noch besser ist es, diese Dateisysteme auf mehrere
Festplatten mit &man.ccd.4; zu verteilen.Bauen Sie die profiled-Bibliotheken,
die Sie wahrscheinlich sowieso nicht brauchen, nicht.
/etc/make.conf sollte dazu
NOPROFILE=true enthalten.Setzen Sie die CFLAGS in
/etc/make.conf auf . Die Optimierungsstufe
ist deutlich langsamer und die
Performance-Unterschiede zwischen und
sind vernachlässigbar klein.
veranlasst den Kompiler Pipes
anstelle von Dateien für die Kommunikation zu
benutzen. Dies spart einige Plattenzugriffe, geht aber
auf Kosten des Speichers.Benutzen Sie
, um
mehrere Prozesse parallel laufen zu lassen.
Normalerweise beschleunigt dies den Bauprozess
unabhängig davon, ob Sie ein Einprozessor oder
Mehrprozessor System einsetzen.Sie können das Dateisystem
/usr/src mit der Option
einhängen. Dies
verhindert, dass die Zugriffszeiten der Dateien
aktualisiert werden (eine Information, die Sie vielleicht
gar nicht brauchen).&prompt.root; mount -u -o noatime /usr/srcDas Beispiel geht davon aus, dass sich
/usr/src auf einem separaten
Dateisystem befindet. Wenn das nicht der Fall ist,
weil das Verzeichnis beispielsweise Teil des
/usr Dateisystems ist,
müssen Sie anstelle von
/usr/src den Mountpoint des
Dateisystems angeben.Das Dateisystem, in dem sich
/usr/obj befindet, kann mit der
Option eingehangen werden. Dies
bewirkt, dass Schreibzugriffe auf die Platte
asynchron stattfinden, das heißt ein Schreibzugriff
ist sofort beendet, die Daten werden allerdings erst einige
Sekunden später geschrieben. Dadurch können
Schreibzugriffe zusammengefasst werden, was einen
erheblichen Geschwindigkeitszuwachs mit sich bringen
kann.Beachten Sie, dass dies Ihr Dateisystem
anfälliger für Fehler macht. Im Fall eines
Stromausfalls besteht eine erhöhte
Wahrscheinlichkeit, dass das Dateisystem beim
Start der Maschine zerstört ist.Wenn sich /usr/obj auf einem
extra Dateisystem befindet, ist das kein Problem. Wenn
sich allerdings auf diesem Dateisystem noch andere
wertvolle Daten befinden, stellen Sie sicher, dass
Sie aktuelle Sicherungen besitzen.&prompt.root; mount -u -o async /usr/objErsetzen Sie /usr/obj durch
den Mountpoint des entsprechenden Dateisystems, wenn es
sich nicht auf einem eigenen Dateisystem
befindet.Was mache ich, wenn etwas nicht funktioniert?Stellen Sie sicher, dass sich in Ihrer Umgebung
keine Reste eines vorherigen Baus befinden. Das geht ganz
einfach:&prompt.root; chflags -R noschg /usr/obj/usr
&prompt.root; rm -rf /usr/obj/usr
&prompt.root; cd /usr/src
&prompt.root; make cleandir
&prompt.root; make cleandirJa, make cleandir muss wirklich
zweimal aufgerufen werden.Nachdem Sie aufgeräumt haben, starten Sie den
Bauprozess wieder mit make
buildworld.Wenn Sie immer noch Probleme haben, schicken Sie die
Fehlermeldungen und die Ausgabe von uname
-a an die Mailingliste &a.de.questions;. Bereiten
Sie sich darauf vor, weitere Fragen zu Ihrer Umgebung zu
beantworten.MikeMeyerBeigetragen von Installation mehrerer MaschinenWenn Sie mehrere Maschinen besitzen, die Sie alle auf dem
gleichen Stand halten wollen, ist es eine Verschwendung von
Ressourcen, die Quellen auf jeder Maschine vorzuhalten und zu
übersetzen. Die Lösung dazu ist, eine Maschine den
Großteil der Arbeit durchführen zu lassen und den anderen
Maschinen das Ergebnis mit NFS zur Verfügung zu stellen. Dieser
Abschnitt zeigt Ihnen wie das geht.VoraussetzungenStellen Sie zuerst eine Liste der Maschinen zusammen, die auf
demselben Stand sein sollen. Wir nennen diese Maschinen die
Baugruppe. Jede dieser Maschinen kann mit
einem eigenen Kernel laufen, doch sind die Programme des Userlands
auf allen Maschinen gleich. Wählen Sie aus der Baugruppe eine
Maschine aus, auf der der Bau durchgeführt wird, den
Bau-Master. Dies sollte eine Maschine sein,
die über die nötigen Ressourcen für
make buildworld und
make installworld verfügt.
Sie brauchen auch eine
Testmaschine, auf der Sie die Updates testen,
bevor Sie sie in Produktion installieren. Dies sollte eine
Maschine, eventuell der Bau-Master, sein, die über einen
längeren Zeitraum nicht zur Verfügung stehen kann.Alle Maschinen der Baugruppe müssen
/usr/obj und /usr/src von
derselben Maschine an gleichem Ort einhängen. Idealerweise
befinden sich die beiden Verzeichnisse auf dem Bau-Master auf
verschiedenen Festplatten, sie können allerdings auch auf dem
Bau-Master über NFS zur Verfügung gestellt werden. Wenn
Sie mehrere Baugruppen haben, sollte sich
/usr/src auf einem Bau-Master befinden und
über NFS für den Rest der Maschinen zur Verfügung
gestellt werden.Stellen Sie sicher, dass
/etc/make.conf auf allen Maschinen einer
Baugruppe mit der Datei des Bau-Masters übereinstimmt. Der
Bau-Master muss jeden Teil des Systems bauen, den irgendeine
Maschine der Baugruppe benötigt. Auf dem Bau-Master
müssen in /etc/make.conf alle zu bauenden
Kernel mit der Variablen KERNCONF bekannt gegeben
werden. Geben Sie dabei den Kernel des Bau-Masters zuerst an.
Für jeden zu bauenden Kernel muss auf dem Bau-Master die
entsprechende Konfigurationsdatei unter
/usr/src/sys/arch/conf
abgelegt werden.Installation des BasissystemsNach diesen Vorbereitungen können Sie mit dem Bau
beginnen. Bauen Sie auf dem Bau-Master, wie in beschrieben, den Kernel und die Welt,
installieren Sie aber nichts. Wechseln Sie auf die Testmaschine
und installieren Sie den gerade gebauten Kernel. Wenn diese
Maschine /usr/src und
/usr/obj über NFS bekommt, müssen
- Sie das Netzwerk im Single-User Modus aktivieren und die beiden
+ Sie das Netzwerk im Single-User-Modus aktivieren und die beiden
Dateisysteme einhängen. Am einfachsten ist dies, wenn Sie
auf der Testmaschine ausgehend vom Mehrbenutzermodus mit
- shutdown now in den Single-User Modus wechseln.
+ shutdown now in den Single-User-Modus wechseln.
Sie können dann mit der normalen Prozedur den neuen Kernel
und das System installieren und anschließend
mergemaster laufen lassen. Wenn Sie damit
fertig sind, können Sie die Maschine wieder in den
Mehrbenutzermodus booten.Nachdem Sie sichergestellt haben, dass die Testmaschine
einwandfrei funktioniert, wiederholen Sie diese Prozedur für
jede Maschine in der Baugruppe.Die Ports-SammlungDasselbe Verfahren können Sie auch für die
Ports-Sammlung anwenden. Zuerst müssen alle Maschinen einer
Baugruppe /usr/ports von derselben Maschine
über NFS zur Verfügung gestellt bekommen. Setzen Sie
dann ein Verzeichnis für die Quellen auf, das sich alle
Maschinen teilen. Dieses Verzeichnis können Sie in
/etc/make.conf mit der Variablen
DISTDIR angeben. Das Verzeichnis sollte
für den Benutzer beschreibbar sein, auf den der Benutzer
root vom NFS Subsystem abgebildet wird. Jede
Maschine sollte noch WRKDIRPREFIX auf ein
lokales Bauverzeichnis setzen. Wenn Sie vorhaben, Pakete zu bauen
und zu verteilen, sollten Sie PACKAGES auf ein
Verzeichnis mit den gleichen Eigenschaften wie
DISTDIR setzen.
diff --git a/de_DE.ISO8859-1/books/handbook/mail/chapter.sgml b/de_DE.ISO8859-1/books/handbook/mail/chapter.sgml
index 15afc3456e..eceb5ac277 100644
--- a/de_DE.ISO8859-1/books/handbook/mail/chapter.sgml
+++ b/de_DE.ISO8859-1/books/handbook/mail/chapter.sgml
@@ -1,2523 +1,2552 @@
BillLloydUrsprüglicher Text von JimMockNeugeschrieben von RobertDrehmelÜbersetzt von Elektronische Post (E-Mail)TerminologieE-MailTerminologieDas Akronym MTA steht für
Mail Transfer Agent was übersetzt
Mailübertragungs-Agent bedeutet.Während die Bezeichnung Server-Dämon
die Komponente eines MTA benennt, die für eingehende Verbindungen
zuständig ist, wird mit dem Begriff Mailer
öfters die Komponente des MTA bezeichnet, die E-Mails versendet.
ÜbersichtE-MailElektronische Post, besser bekannt als E-Mail, ist
eine der am weit verbreitetsten Formen der Kommunikation heutzutage.
Dieses Kapitel bietet eine grundlegende Einführung in das
Betreiben eines E-Mail-Servers unter &os;. Ebenfalls wird der
Versand und Empfang von E-Mails unter &os; behandelt. Das
Kapitel ist jedoch keine komplette
Referenz und es werden viele wichtige Überlegungen außer
Acht gelassen. Wenn Sie das Thema detaillierter betrachten
möchten, werden Sie bei einem der exzellenten Bücher
fündig, die in aufgelistet sind.
Dieses Kapitel behandelt die folgenden Punkte:Welche Software-Komponenten beim Senden und
Empfangen von elektronischer Post involviert sind.Wo sich grundlegende sendmail
Konfigurationsdateien in FreeBSD befinden.Den Unterschied zwischen entfernten und lokalen
Postfächern.Wie man Versender von Massennachrichten daran hindern kann,
Ihren E-Mail-Server illegalerweise als Weiterleitung zu verwenden.
Wie man den Standard-Mailer des Systems,
sendmail, ersetzt.Wie man oft auftretende E-Mail-Server Probleme behebt.Wie E-Mails mit UUCP verschickt werden.Wie E-Mails über einen Relay verschickt werden.Wie E-Mails über eine Einwahlverbindung gehandhabt
werden.Wie Sie die SMTP-Authentifizierung einrichten.Den Empfang und den Versand von E-Mails mithilfe
von Programmen wie mutt.Wie E-Mails von einem entfernten Server mit
POP oder IMAP
abgeholt werden.Wie eingehende E-Mail automatisch gefiltert wird.Bevor Sie dieses Kapitel lesen, sollten Sie:Ihre Netzwerk-Verbindung richtig einrichten.
().Die DNS-Information für Ihren E-Mail-Server einstellen
().Wissen, wie man zusätzliche Dritthersteller-Software
installiert ().Elektronische Post benutzenPOPIMAPDNSFünf größere Teile sind am E-Mail-Austausch beteiligt:
Das Benutzerprogramm,
der Server-Dämon,
DNS,
ein entferntes oder lokales
Postfach und natürlich
der E-Mail-Server selbst.Das BenutzerprogrammDas beinhaltet Kommandozeilenprogramme wie
mutt, pine,
elm, mail
und Programme mit grafischer Benutzeroberfläche, wie
balsa und xfmail
um einige zu nennen, und aufwändigere, wie WWW-Browser.
Diese Programme geben die E-Mail-Transaktionen an den lokalen
E-Mail-Server,
weiter, entweder über einen der verfügbaren
Server-Dämonen oder eine
TCP-Verbindung.E-Mail-Server DämonE-Mail-Server DämonensendmailE-Mail-Server DämonenpostfixE-Mail-Server DämonenqmailE-Mail-Server Dämonenexim&os; enthält standardmäßig
sendmail; es lassen
sich aber auch andere E-Mail-Server Dämonen
betreiben, beispielsweiseexim,postfix oderqmail.Der Server-Dämon hat üblicherweise zwei
Funktionen: Er kümmert sich um das Empfangen von
eingehenden E-Mails und stellt ausgehende E-Mails zu. Es
ist nicht Aufgabe des Dämons,
E-Mails über POP oder
IMAP bereit zu stellen, noch Zugriffe
auf das lokale Postfach mbox
oder Verzeichnisse mit Postfächern zu gewähren.
Dafür benötigen Sie einen zusätzlichen
Dämon.Alte Versionen von sendmail
enthalten schwerwiegende Sicherheitslöcher, die
einem Angreifer Zugriff auf Ihren Rechner verschaffen
können. Um Sicherheitsprobleme zu umgehen,
sollten Sie eine aktuelle
sendmail-Version benutzen.
Sie können auch einen anderen MTA
aus der &os; Ports-Sammlung
benutzen.E-Mail und DNSDas Domain Name System (DNS) und sein Dämon
named spielen eine große Rolle in der
Auslieferung von E-Mails. Um E-Mails auszuliefern,
fragt der Mail-Server-Dämon im DNS den Rechner ab,
der E-Mails für das Zielsystem entgegennimmt.
Der gleiche Vorgang läuft ab, wenn eine E-Mail
von einem entfernten Server auf Ihrem Mail-Server
zugestellt wird.MX-EintragIm DNS werden Rechnernamen auf
IP-Adressen abgebildet. Daneben werden spezielle
Informationen für das Mail-System gespeichert,
die MX-Einträge
(MX record) genannt werden.
Der MX-Eintrag (von Mail eXchanger)
gibt an, welcher Rechner oder welche Rechner E-Mails
für eine Domain annehmen. Existiert kein MX-Record
für einen Rechner oder dessen Domain, werden
E-Mails direkt an den Rechner zugestellt, vorausgesetzt
der Rechner besitzt einen A-Eintrag, der den Rechnernamen
auf seine IP-Adresse abbildet.Mit dem Kommando &man.host.1; können Sie die
MX-Einträge für eine Domain abfragen:&prompt.user; host -t mx FreeBSD.org
FreeBSD.org mail is handled (pri=10) by mx1.FreeBSD.orgE-Mails empfangenE-MailempfangenDer E-Mail-Server empfängt alle E-Mails für Ihre
Domäne. Er speichert die E-Mails entweder im
mbox-Format (die Vorgabe) oder im
Maildir-Format. Die E-Mails können lokal mit
Programmen wie &man.mail.1; oder mutt
gelesen werden. Mithilfe von Protokollen wie
POP oder IMAP können
die E-Mails auch von entfernten Rechnern gelesen werden. Wenn
Sie die E-Mails direkt auf dem E-Mail-Server lesen möchten,
wird kein POP- oder
IMAP-Server gebraucht.Auf entfernte Postfächer mit POP
und IMAP zugreifenPOPIMAPWenn Sie auf entfernte Postfächer zugreifen
wollen, benötigen Sie den Zugang zu einem
POP- oder IMAP-Server.
Beide Protokolle bieten einen einfachen Zugriff auf entfernte
Postfächer. IMAP besitzt allerdings
einige Vorteile, unter anderem:IMAP kann sowohl Nachrichten
auf einem entfernten Server speichern als auch von
dort abholen.IMAP unterstützt
gleichzeitig ablaufende Aktualisierungen.Da es nicht gleich die komplette Nachricht
herunterlädt, ist IMAP
über langsame Verbindungen sehr nützlich.
Weiterhin können E-Mails auf dem Server
durchsucht werden, was den Datenverkehr zwischen
Clients und dem Server minimiert.Wenn Sie einen POP- oder
IMAP-Server installieren wollen,
gehen Sie nach den folgenden Schritten vor:Wählen Sie einen IMAP-
oder POP-Server aus, der
Ihre Anforderungen erfüllt. Die nachstehenden
Server sind sehr bekannt:qpopperteapopimap-uwcourier-imapInstallieren Sie den ausgewählten
POP- oder IMAP-Daemon
aus der Ports-Sammlung.Wenn erforderlich, passen Sie die Datei
/etc/inetd.conf an, um
den POP- oder
IMAP-Server zu starten.Beachten Sie, dass sowohl POP
als auch IMAP Daten, wie den
Benutzernamen und das Passwort, im Klartext
übertragen. Wenn Sie die mit diesen Protokollen
übertragenen Daten schützen wollen, können
Sie SSH-Tunnel (siehe )
verwenden.Auf lokale Postfächer zugreifenAuf Postfächer können Sie lokal mithilfe
spezieller Benutzerprogramme, die
Mail-User-Agents
(MUAs) genannt werden, zugreifen.
Beispiele für solche Programme sind
mutt oder &man.mail.1;.Der E-Mail-ServerE-Mail-ServerE-Mail-Server wird der Rechner genannt, welcher
für die Zustellung und das Empfangen von E-Mails auf Ihrem
Rechner oder vielleicht Ihrem Netzwerk zuständig ist.ChristopherShumwayBeigesteuert von sendmail-Konfigurationsendmail&man.sendmail.8; ist das standardmäßig in
FreeBSD installierte Mailübertragungsprogramm (MTA).
Die Aufgabe von sendmail ist es,
E-Mails von E-Mail-Benutzerprogrammen (MUA)
anzunehmen und diese zu den
entsprechenden Mailern zu liefern, die in der Konfigurationsdatei
definiert sind. sendmail kann auch
Netzwerkverbindungen annehmen und E-Mails zu lokalen
MailboxenMailbox = Post- beziehungsweise Briefkasten
oder anderen Programmen liefern.sendmail benutzt folgende
Konfigurationsdateien:/etc/mail/access/etc/mail/aliases/etc/mail/local-host-names/etc/mail/mailer.conf/etc/mail/mailertable/etc/mail/sendmail.cf/etc/mail/virtusertableDateinameFunktion/etc/mail/accessDatenbank, in der Zugriffsrechte auf
sendmail verwaltet werden/etc/mail/aliasesMailbox Aliase/etc/mail/local-host-namesListe der Rechner für die
sendmail E-Mails akzeptiert/etc/mail/mailer.confMailer Programmkonfiguration/etc/mail/mailertableMailer Versand-Zuordnungstabelle/etc/mail/sendmail.cfHauptkonfigurationsdatei für
sendmail/etc/mail/virtusertableVirtuelle Benutzer und Domänen-Tabellen/etc/mail/accessDie Zugriffsdatenbank bestimmt, welche(r) Rechner oder IP-Adresse(n)
Zugriff auf den lokalen E-Mail-Server haben und welche Art von Zugriff
ihnen gestattet wird.
Rechner können als ,
oder eingetragen oder einfach an
sendmails Fehlerbehandlungsroutine mit einem
angegebenen Mailer-Fehler übergeben werden.
Rechner, die als eingetragen sind, was die
Grundeinstellung ist, sind berechtigt E-Mails zu diesem Rechner zu
schicken, solange die endgültige Zieladresse der lokale Rechner ist.
Verbindungen von Rechnern, die als
aufgelistet sind, werden abgelehnt.
Rechnern mit gesetzter -Option für
ihren Rechnernamen wird erlaubt Post für jede Zieladresse
durch diesen Mail-Server zu senden.Konfigurieren der sendmail
Zugriffsdatenbankcyberspammer.com 550 We do not accept mail from spammers
FREE.STEALTH.MAILER@ 550 We do not accept mail from spammers
another.source.of.spam REJECT
okay.cyberspammer.com OK
128.32 RELAYIn diesem Beispiel haben wir fünf Einträge.
E-Mail-Versender, die mit der linken Spalte der Tabelle
übereinstimmen, sind betroffen von der Aktion in der rechten
Spalte. Die ersten beiden Beispiele übergeben einen Fehlercode an
sendmails Fehlerbehandlungsroutine.
Die Nachricht wird an den entfernten Rechner gesendet, wenn eine
Nachricht mit der linken Spalte der Tabelle übereinstimmt.
Der nächste Eintrag lehnt Post von einem bestimmten Rechner
des Internets ab (another.source.of.spam).
Der nächste Eintrag akzeptiert E-Mail-Verbindungen des Rechners
okay.cyberspammer.com, der exakter angegeben
wurde als cyberspammer.com in der Zeile
darüber.
Genauere Übereinstimmungen haben den Vorrang vor weniger genauen.
Der letzte Eintrag erlaubt die Weiterleitung von elektronischer Post
von Rechnern mit einer IP-Adresse die mit 128.32
beginnt. Diese Rechner würden E-Mails durch diesen
E-Mail-Server senden können, die für andere E-Mail-Server
bestimmt sind.Wenn diese Datei geändert wird, müssen Sie
make in /etc/mail
ausführen um die Datenbank zu aktualisieren./etc/mail/aliasesDie Alias-Datenbank enthält eine Liste der virtuellen
Mailboxen, die in andere Benutzer, Dateien, Programme oder
andere Aliase expandiert werden. Hier sind ein paar Beispiele,
die in /etc/mail/aliases benutzt werden
können:E-Mail Aliasesroot: localuser
ftp-bugs: joe,eric,paul
bit.bucket: /dev/null
procmail: "|/usr/local/bin/procmail"Das Dateiformat ist simpel; Der Name der Mailbox auf der linken
Seite des Doppelpunkts wird mit den Zielen auf der rechten Seite
ersetzt.
Das erste Beispiel ersetzt die Mailbox root
mit der Mailbox localuser, die dann wieder in der
Alias-Datenbank gesucht wird. Wird kein passender Eintrag
gefunden, wird die Nachricht zum lokalen Benutzer
localuser geliefert. Das nächste Beispiel
zeigt eine E-Mail-Verteilerliste. E-Mails an die Mailbox
ftp-bugs werden zu den drei lokalen Mailboxen
joe, eric und
paul gesendet. Eine lokale Mailbox kann auch
als user@example.com angegeben werden. Das
nächste Beispiel zeigt das Schreiben von E-Mails in eine Datei,
in diesem Fall /dev/null. Das letzte Beispiel
verdeutlicht das Senden von E-Mails an ein Programm, in diesem Fall
wird die Nachricht in die Standardeingabe von
/usr/local/bin/procmail mittels einer UNIX Pipe
geschrieben.Wenn diese Datei geändert wird, müssen Sie
make in /etc/mail
ausführen um die Änderungen in die Datenbank zu
übernehmen./etc/mail/local-host-namesDas ist die Liste der Rechnernamen, die &man.sendmail.8; als
lokalen Rechnernamen akzeptiert. Setzen Sie alle Domänen oder
Rechner, für die sendmail
Mail empfangen soll, in diese Datei.
Wenn dieser Mail-Server zum Beispiel E-Mails für die
Domäne example.com und den Rechner
mail.example.com annehmen soll,
könnte seine local-host-names Datei so
aussehen:example.com
mail.example.comWird diese Datei geändert, muss &man.sendmail.8; neu
gestartet werden, damit es die Neuerungen einliest./etc/mail/sendmail.cfDie Hauptkonfigurations-Datei von
sendmail (sendmail.cf)
kontrolliert das allgemeine Verhalten von
sendmail, einschließlich allem vom
Umschreiben von E-Mail Adressen bis hin zum Übertragen von
Ablehnungsnachrichten an entfernte E-Mail-Server.
Mit solch einer mannigfaltigen Rolle ist die Konfigurationsdatei
natürlich ziemlich komplex und ihre Einzelheiten können
in diesem Kapitel nicht besprochen werden.
Glücklicherweise muss diese Datei selten für
Standard E-Mail-Server geändert werden.Die sendmail Hauptkonfigurationsdatei
kann mit &man.m4.1; Makros erstellt werden, die Eigenschaften
und Verhalten von sendmail definieren.
Einige der Details finden Sie in
/usr/src/contrib/sendmail/cf/README.Wenn Änderungen an dieser Datei vorgenommen werden, muss
sendmail neu gestartet werden, damit die
Änderungen Wirkung zeigen./etc/mail/virtusertableDie Datei virtusertable ordnet
Adressen für virtuelle Domänen und Mailboxen reellen
Mailboxen zu. Diese Mailboxen können lokal, auf entfernten
Systemen, Aliase in /etc/mail/aliases oder
eine Datei sein.Beispiel einer virtuellen Domänen Zuordnungroot@example.com root
postmaster@example.com postmaster@noc.example.net
@example.com joeIn dem obigen Beispiel haben wir einen Eintrag für die
Domäne example.com. Diese
Datei wird nach dem ersten übereinstimmenden Eintrag durchsucht.
Die erste Zeile ordnet root@example.com der
lokalen Mailbox root zu. Der nächste Eintrag ordnet
postmaster@example.com der Mailbox
postmaster auf dem Rechner
noc.example.net zu. Zuletzt, wenn keine
Übereinstimmung von example.com
gefunden wurde, wird der letzte Eintrag verglichen, der mit jeder
Mail-Nachricht übereinstimmt, die an jemanden bei
example.com adressiert wurde.
Diese werden der lokalen Mailbox joe zugeordnet.AndrewBoothmanGeschrieben von GregoryNeil ShapiroInformationen entnommen aus E-Mails geschrieben von
Wechseln des Mailübertragungs-AgentenE-MailMTA, wechselnWie bereits erwähnt, ist bei FreeBSD
sendmail schon als Ihr
Mailübertragungs-Agent installiert.
Deswegen ist es standardmäßig für Ihre aus- und
eingehenden E-Mails verantwortlich.Jedoch wollen einige Systemadministratoren den MTA ihres Systems
wechseln, was eine Reihe von Gründen haben kann. Diese Gründe
reichen von einfach einen anderen MTA ausprobieren wollen bis hin dazu
eine bestimmte Besonderheit zu benötigen oder ein Paket, welches
auf einen anderen Mailer angewiesen ist. Glücklicherweise macht
FreeBSD das Wechseln einfach, egal aus welchem Grund.Installieren eines neuen MTASie haben eine große Auswahl an verfügbaren
MTA-Programmen. Ein guter Startpunkt ist die
FreeBSD-Ports-Sammlung, wo Sie viele
finden werden. Selbstverständlich steht es Ihnen frei, jeden
MTA von überall her zu verwenden, solange Sie ihn unter
FreeBSD zum Laufen bekommen.Fangen Sie an, indem Sie Ihren neuen MTA installieren. Sobald
er installiert ist, gibt er Ihnen die Chance zu entscheiden ob er
wirklich Ihren Bedürfnissen genügt. Zusätzlich gibt
er Ihnen die Möglichkeit die neue Software zu konfigurieren,
bevor sie den Job von sendmail
übernimmt. Dabei sollten Sie sicherstellen, dass beim
Installieren der neuen Software keine Versuche unternommen werden,
System-Programme wie /usr/bin/sendmail zu
überschreiben. Ansonsten wurde Ihre neue E-Mail-Software in
den Dienst gestellt, bevor Sie sie konfiguriert haben.Für Informationen über die Konfiguration des von
Ihnen gewählten MTAs sehen Sie bitte in der dazugehörigen
Dokumentation nach.
-
+ Ausschalten von sendmailDie Prozedur des Startens von sendmail
- hat sich zwischen 4.5-RELEASE und 4.6-RELEASE signifikant
- verändert. Daher beinhaltet auch die Prozedur des Abschaltens
- subtile Unterschiede.
+ hat sich zwischen 4.5-RELEASE, 4.6-RELEASE sowie den folgenden
+ Versionen signifikant verändert. Daher beinhaltet auch die
+ Prozedur des Abschaltens subtile Unterschiede.
+
+
+ Wenn Sie die Sendefunktion von
+ sendmail deaktivieren, müssen
+ Sie für den E-Mail-Versand ein alternatives System
+ installieren. Tun Sie dies nicht, sind Systemfunktionen wie
+ &man.periodic.8; nicht mehr in der Lage, ihre Resulate und
+ Meldungen als E-Mail zu versenden. Aber auch viele andere
+ Teile Ihres Systems erwarten, dass Sie über ein
+ sendmail-kompatibles System
+ verfügen. Sind Programme auf (die von Ihnen
+ deaktivierten)
+ sendmail-Binärdateien
+ angewiesen, landen deren E-Mails ansonsten in einer inaktiven
+ sendmail-Warteschlange und
+ können nicht ausgeliefert werden.
+ FreeBSD 4.5-STABLE vor dem 4.4.2002 (inklusive 4.5-RELEASE und
frühere Versionen)Schreiben Siesendmail_enable="NO"in /etc/rc.conf. Das schaltet die
Verarbeitung eingehender E-Mails durch
sendmail ab. Aber bis
/etc/mail/mailer.conf nicht geändert
ist, wird sendmail weiterhin zum
Senden von E-Mails verwendet.FreeBSD 4.5-STABLE nach dem 4.4.2002 (inklusive 4.6-RELEASE
und spätere Versionen)
- Um sendmail komplett abzuschalten,
- müssen Sie
+ Um sendmail komplett (also
+ inklusive der Funktion zum Versenden von E-Mails)
+ abzuschalten, müssen Sie den Eintragsendmail_enable="NONE"
- in Ihre /etc/rc.conf schreiben.
+ in Ihre /etc/rc.conf
+ aufnehmen.
-
- Wenn Sie sendmails Dienst für
- ausgehende E-Mails auf diesem Weg abschalten, ist es wichtig,
- dass Sie es mit einem voll funktionsfähigen alternativen
- E-Mail-Zustellungssystem ersetzen. Wenn Sie wählen das nicht
- zu tun, werden System-Funktionen wie &man.periodic.8; nicht
- fähig sein, Ihre Ergebnisse per E-Mail zuzustellen, wie sie
- es normalerweise erwarten. Viele Teile Ihres Systems können
- erwarten, ein funktionierendes
- sendmail-kompatibles System zu haben.
- Wenn Anwendungen weiterhin versuchen mit
- sendmails Programmdateien E-Mails zu
- verschicken, nachdem Sie sie abgeschaltet haben, könnten
- E-Mails in einer inaktiven
- sendmail-Warteschlange landen, und
- niemals geliefert werden.
-
-
- Wenn Sie nur sendmails Dienst
- für eingehende E-Mail abschalten möchten, sollten Sie
-
+ Wenn Sie lediglich die Funktion zum Empfang von E-Mails
+ durch sendmail deaktivieren
+ wollen, sollten Sie folgenden Eintrag in
+ /etc/rc.conf einfügen:sendmail_enable="NO"
- in /etc/rc.conf setzen. Mehr
- Informationen zu sendmails Start-Optionen
- sind vorhanden auf der &man.rc.sendmail.8; Manual Page.
+ In diesem Fall ist die lokale Zustellung von E-Mails
+ weiterhin möglich. Weitere Informationen zu den
+ Startoptionen von sendmail
+ finden Sie in der Manualpage &man.rc.sendmail.8;.
+
+
+
+ FreeBSD 5.0-STABLE und neuer
+
+ Um sendmail komplett zu
+ deaktivieren (also inklusive der Funktion zum Versand
+ von E-Mails), fügen Sie die Zeile
+
+ sendmail_enable="NO"
+sendmail_submit_enable="NO"
+sendmail_outbound_enable="NO"
+sendmail_msp_queue_enable="NO"
+
+ in /etc/rc.conf ein.
+
+ Wenn Sie lediglich die Funktion zum Empfang von E-Mails
+ durch sendmail deaktivieren
+ wollen, sollten Sie folgenden Eintrag in
+ /etc/rc.conf einfügen:
+
+ sendmail_enable="NO"
+
+ Weitere Informationen zu den Startoptionen von
+ sendmail finden Sie in der
+ Manualpage &man.rc.sendmail.8;.Starten Ihres neuen MTA beim Hochfahren des SystemsAbhängig davon, welche FreeBSD-Version Sie verwenden,
haben Sie die Wahl zwischen zwei Methoden, um Ihren
neuen MTA beim Hochfahren des System zu starten.FreeBSD 4.5-STABLE vor dem 11.4.2002 (inklusive 4.5-RELEASE
und frühere VersionenFügen Sie ein Skript zu
/usr/local/etc/rc.d, dessen Dateiname mit
.sh endet und von root
ausführbar ist. Das Skript sollte start
und stop Parameter annehmen. Beim Hochfahren
des Systems werden die System-Skripte den Befehl/usr/local/etc/rc.d/supermailer.sh startausführen, den Sie auch manuell zum Starten des Dienstes
verwenden können. Beim Herunterfahren des Systems werden die
System-Skripte die stop Option einsetzen, also
den Befehl/usr/local/etc/rc.d/supermailer.sh stopausführen, der ebenso manuell von Ihnen zum Stoppen des
Dienstes während das System läuft, verwendet werden kann.
FreeBSD 4.5-STABLE nach dem 11.4.2000 (inklusive 4.6-RELEASE
und spätere Versionen)Für neuere FreeBSD-Versionen, können Sie die oben
dargestellte Möglichkeit verwenden, oder Sie setzenmta_start_script="filename"in /etc/rc.conf, wobei
filename den Namen des Skripts darstellt,
das beim Hochfahren des Systems ausgeführt wird, um Ihren MTA
zu starten.Ersetzen von sendmail als
Standard-Mailer des SystemsDas Programm sendmail ist so
allgegenwärtig als Standard-Software auf &unix; Systemen, dass
einige Programme einfach annehmen es sei bereits installiert und
konfiguriert.
Aus diesem Grund stellen viele alternative MTAs ihre eigenen
kompatiblen Implementierung der sendmail
Kommandozeilen-Schnittstelle zur Verfügung. Das vereinfacht
ihre Verwendung als drop-in Ersatz für
sendmail.Folglich werden Sie, wenn Sie einen alternativen Mailer benutzen,
sicherstellen müssen, dass ein Programm, das versucht
sendmails Standard-Dateien wie
/usr/bin/sendmail auszuführen,
stattdessen Ihr gewähltes Mailübertragungsprogramm
ausführt.
Zum Glück stellt FreeBSD das &man.mailwrapper.8;-System
zur Verfügung, das diese Arbeit für Sie erledigt.Wenn sendmail arbeitet wie es
installiert wurde, werden Sie in
/etc/mail/mailer.conf etwas wie das Folgende
vorfinden:sendmail /usr/libexec/sendmail/sendmail
send-mail /usr/libexec/sendmail/sendmail
mailq /usr/libexec/sendmail/sendmail
newaliases /usr/libexec/sendmail/sendmail
hoststat /usr/libexec/sendmail/sendmail
purgestat /usr/libexec/sendmail/sendmailDas bedeutet, dass wenn eines der gewöhnlichen Kommandos
(wie zum Beispiel /usr/bin/sendmail selbst)
ausgeführt wird, das System tatsächlich eine Kopie des
mailwrapper mit dem Namen sendmail startet, die
mailer.conf überprüft und
/usr/libexec/sendmail/sendmail ausführt.
Mit diesem System lassen sich die Programme, die für die
sendmail-Funktionen gestartet werden,
leicht ändern.Daher könnten Sie, wenn Sie wollten, dass
/usr/local/supermailer/bin/sendmail-compat
anstelle von sendmail ausgeführt
wird, /etc/mailer.conf wie folgt abändern:
sendmail /usr/local/supermailer/bin/sendmail-compat
send-mail /usr/local/supermailer/bin/sendmail-compat
mailq /usr/local/supermailer/bin/mailq-compat
newaliases /usr/local/supermailer/bin/newaliases-compat
hoststat /usr/local/supermailer/bin/hoststat-compat
purgestat /usr/local/supermailer/bin/purgestat-compatFertigstellenSobald Sie alles Ihren Wünschen entsprechend
konfiguriert haben, sollten Sie entweder die
sendmail Prozesse beenden, die Sie
nicht mehr benötigen, und die zu Ihrer neuen Software
zugehörigen Prozesse starten, oder einfach das System
neustarten. Das Neustarten des Systems gibt Ihnen auch die
Gelegenheit sicherzustellen, dass Sie Ihr System korrekt
konfiguriert haben, um Ihren neuen MTA automatisch beim
Hochfahren zu starten.FehlerbehebungHier finden sich ein paar häufig gestellte Fragen und ihre
Antworten, die von der FAQ
übernommen wurden.Warum muss ich einen FQDN (fully-qualified domain name/
voll ausgeschriebenen Domänennamen) für meine Rechner
verwenden?Vielleicht liegen die Rechner in einer unterschiedlichen
Domäne; zum Beispiel, wenn Sie sich in
foo.bar.edu befinden, und einen Rechner
namens mumble in der
bar.edu Domäne erreichen
wollen, müssen Sie ihn mit dem voll ausgeschriebenen
Domänennamen mumble.bar.edu
kontaktieren, anstatt bloß mit mumble.Traditionell wurde das von dem BSD BIND
Resolver erlaubt. Wie auch immer,
die aktuelle Version von BIND, die mit
FreeBSD ausgeliefert wird, bietet keine Standardabkürzungen
für nicht komplett angegebene Domänennamen außerhalb der
Domäne, in der Sie sich befinden. Daher muss ein
nicht-qualifizierter Rechner mumble entweder als
mumble.foo.bar.edu gefunden werden,
oder er wird in der root Domäne gesucht.Damit unterscheidet es sich von vorherigem Verhalten, bei dem
die Suche über mumble.bar.edu
und mumble.edu lief. Schauen Sie
sich RFC 1535 an, wenn Sie wissen möchten, warum das als
schlecht und sogar als Sicherheitsloch angesehen wurde.Um das zu umgehen, können Sie die Linie
search foo.bar.edu bar.edu
anstatt der vorherigen
domain foo.bar.edu
in Ihre /etc/resolv.conf einsetzen. Aber
stellen Sie sicher, dass die Suchordnung nicht die Begrenzung von
lokaler und öffentlicher Administration, wie
RFC 1535 sie nennt, überschreitet.MX-EintragWarum meldet Sendmail
mail loops back to myself?Dies wird in der Sendmail-FAQ wie folgt beantwortet:Ich erhalte folgende Fehlermeldungen:
553 MX list for domain.net points back to relay.domain.net
554 <user@domain.net>... Local configuration error
Wie kann ich dieses Problem lösen?
Sie haben durch die Benutzung eines MX-Eintrags eingestellt, dass
Mail für die Domäne (z.B. domain.net) an einen speziellen
Host (in diesem Fall relay.domain.net) weitergeleitet wird,
aber der Relay-Host erkennt sich selbst nicht als
domain.net. Fügen Sie domain.net in /etc/mail/local-host-names
[die Datei hieß vor der Version 8.10 /etc/sendmail.cw]
(falls Sie FEATURE(use_cw_file) benutzen) oder "Cw domain.net"
in /etc/mail/sendmail.cf ein.Die aktuelle Version der Sendmail-FAQ
wird nicht mehr mit dem Sendmail-Release verwaltet. Sie
wird jedoch regelmäßig nach comp.mail.sendmail,
comp.mail.misc,
comp.mail.smail,
comp.answers und
news.answers
gepostet. Sie können auch eine Kopie per E-Mail
bekommen, indem Sie eine Mail mit dem Inhalt send
usenet/news.answers/mail/sendmail-faq an
mail-server@rtfm.mit.edu schicken.PPPWie kann ich einen E-Mail-Server auf einem
Anwahl-PPP Rechner betreiben?Sie wollen einen FreeBSD-Rechner in einem LAN an das
Internet anbinden. Der FreeBSD-Rechner wird ein E-Mail
Gateway für das LAN.
Die PPP-Verbindung ist keine Standleitung.MX-EintragEs gibt mindestens zwei Wege um dies zu tun. Einer davon ist
UUCP zu verwenden.Ein anderer Weg ist, von einem immer mit dem Internet
verbundenen Server einen sekundären MX-Dienst für Ihre
Domäne zur Verfügung gestellt zu bekommen. Wenn die
Domäne Ihrer Firma
example.com ist, und Ihr
Internet-Dienstanbieter
example.net so eingestellt hat,
dass er Ihrer Domäne einen sekundären MX-Dienst zur
Verfügung stellt:example.com. MX 10 bigco.com.
MX 20 example.net.Nur ein Rechner sollte als Endempfänger angegeben sein
(fügen Sie Cw example.com zu
/etc/sendmail.cf auf example.com).Wenn das sendmail des Versenders versucht,
die E-Mail zuzustellen, wird es versuchen, Sie über die
Modem-Verbindung (example.com)
zu erreichen. Wahrscheinlich wird es keine Verbindung zustande
bringen können, da Sie nicht eingewählt sind.
sendmail wird die E-Mail automatisch zu der
sekundären MX-Stelle geliefert, zu Ihrem Internet-Provider
(example.net).
Die sekundäre MX-Stelle wird periodisch versuchen
versuchen eine Verbindung zu Ihnen aufzubauen, um die E-Mail zu
der primären MX-Stelle
(example.com zu liefern.Eventuell wollen Sie etwas wie dies als Login-Skript:#!/bin/sh
# Put me in /usr/local/bin/pppmyisp
( sleep 60 ; /usr/sbin/sendmail -q ) &
/usr/sbin/ppp -direct pppmyispWenn Sie ein separates Login-Skript für einen Benutzer
erstellen wollen, könnten Sie stattdessen
sendmail -qRexample.com in dem oben gezeigten
Skript verwenden. Das erzwingt die sofortige Verarbeitung der
E-Mails in Ihrer Warteschlange für
example.comEine weitere Verfeinerung der Situation ist wie folgt:Die Nachricht wurde der &a.isp; entnommen.> wir stellen einem Kunden den sekundären MX zur Verfügung.
> Der Kunde verbindet sich mit unseren Diensten mehrmals am Tag
> automatisch um die E-Mails zu seinem primären MX zu holen
> (wir wählen uns nicht bei ihm ein, wenn E-Mails für seine
> Domäne eintreffen). Unser sendmail sendet den Inhalt der
> E-Mail-Warteschlange alle 30 Minuten. Momentan muss er 30 Minuten
> eingewählt bleiben um sicher zu sein, dass alle seine E-Mails
> beim primären MX eingetroffen sind.
>
> Gibt es einen Befehl, der sendmail dazu bringt, alle E-Mails sofort
> zu senden? Der Benutzer hat natürlich keine root-Rechte auf
> unserer Maschine.
In der privacy flags Sektion von sendmail.cf befindet sich die
Definition Opgoaway,restrictqrun
Entferne restrictqrun um nicht-root Benutzern zu erlauben, die Verarbeitung
der Nachrichten-Warteschlangen zu starten. Möglicherweise willst du
auch die MX neu sortieren. Wir sind der primäre MX für unsere
Kunden mit diesen Wünschen und haben definiert:
# Wenn wir der beste MX für einen Rechner sind, versuche es direkt
# anstatt einen lokalen Konfigurationsfehler zu generieren.
OwTrue
Auf diesem Weg liefern Gegenstellen direkt zu dir, ohne die Kundenverbindung
zu versuchen. Dann sendest du zu deinem Kunden. Das funktioniert nur
für Rechner, du musst also deinen Kunden dazu bringen,
ihre E-Mail Maschine customer.com zu nennen, sowie
hostname.customer.com im DNS. Setze einfach einen A-Eintrag
in den DNS für customer.com.Warum bekomme ich die Fehlermeldung Relaying
Denied, wenn ich E-Mails von anderen Rechnern
verschicke?In der standardmäßigen FreeBSD-Installation wird
sendmail nur dazu konfiguriert,
E-Mails von dem Rechner, auf dem es läuft, zu senden.
Wenn zum Beispiel ein POP-Server
installiert ist, können Benutzer ihre E-Mails von der
Schule, von der Arbeit oder von anderen Orten
überprüfen. Sie werden jedoch keine E-Mails von
außen verschicken können. Typischerweise
wird ein paar Sekunden nach dem Versuch eine E-Mail
von MAILER-DAEMON mit einer
5.7 Relaying Denied Fehlermeldung
versendet werden.Es sind mehrere Wege möglich, dies zu umgehen. Die
geradlinigste Lösung ist die Adresse Ihres
Internet-Dienstanbieters in die Datei für die
Weiterleitungs-Domänen zu platzieren. Das lässt sich
schnell erreichen mit:&prompt.root; echo "your.isp.example.com" > /etc/mail/relay-domainsNach Erstellen oder Editieren dieser Datei müssen
Sie sendmail neu starten.
Das funktioniert großartig wenn Sie ein
Server-Administrator sind und E-Mails nicht lokal
versenden, oder gerne ein Client/System mit grafischer
Oberfläche auf einer anderen Maschine oder sogar
über einen anderen Internet-Dienstanbieter verwenden
wollen. Es ist auch sehr nützlich, wenn Sie nur ein
oder zwei E-Mail Accounts eingerichtet haben. Soll eine
größere Anzahl Adressen hinzugefügt werden,
können Sie die Datei einfach in Ihrem favorisierten
Editor öffnen und die Domänen anfügen,
je eine pro Zeile:your.isp.example.com
other.isp.example.net
users-isp.example.org
www.example.orgJetzt wird jede E-Mail, die durch Ihr System von
einem der in diese Liste eingetragenen Rechner geschickt
wurde, ihr Ziel erreichen (vorausgesetzt, der Benutzer
hat einen Account auf Ihrem System). Dies ist ein sehr
schöner Weg, um Benutzern das entfernte E-Mail Versenden
von Ihrem System zu erlauben, ohne dem Massenversand
(SPAM) die Tür zu öffnen.Weiterführende ThemenDie folgenden Abschnitte behandeln kompliziertere Themen wie
E-Mail-Konfiguration und das Einrichten von E-Mail für Ihre
ganze Domäne.Grundlegende KonfigurationMit der Software im Auslieferungszustand sollten Sie fähig
sein, E-Mails an externe Rechner zu senden, solange Sie
/etc/resolv.conf eingerichtet haben oder Ihren
eigenen Name Server laufen lassen. Wenn Sie die E-Mails für
Ihren Rechner zu einem anderen Rechner geliefert haben wollen, gibt
es zwei Methoden:Betreiben Sie Ihren eigenen Name Server und haben Sie Ihre
eigene Domäne, zum Beispiel
FreeBSD.org.Lassen Sie sich E-Mails direkt zu Ihrem Rechner liefern.
Dies geschieht indem E-Mails direkt zu dem aktuellen DNS Namen
Ihrer Maschine geliefert werden. Zum Beispiel
example.FreeBSD.org.Ungeachtet welche Methode Sie auswählen, um E-Mails direkt
zu Ihrem Rechner geliefert zu bekommen, benötigen Sie eine
permanente (statische) IP-Adresse (keine dynamische PPP-Anwahl).
Wenn Sie sich hinter einer Firewall befinden, muss diese den
SMTP-Verkehr an Sie weiterleiten. Wollen Sie E-Mails an Ihrem
Rechner selbst empfangen, müssen Sie eines der folgenden
Dinge sicherstellen:Vergewissern Sie sich, dass der MX-Eintrag in Ihrem DNS zu
der IP-Adresse Ihres Rechners zeigt.Stellen Sie sicher, dass sich für Ihren Rechner kein
MX-Eintrag im DNS befindet.Jede der erwähnten Konfigurationsmöglichkeiten erlaubt
Ihnen, E-Mails direkt auf Ihrem Rechner zu empfangen.Versuchen Sie das:&prompt.root; hostname
example.FreeBSD.org
&prompt.root; host example.FreeBSD.org
example.FreeBSD.org has address 204.216.27.XXWenn Sie diese Ausgabe erhalten, sollten direkt an
yourlogin@example.FreeBSD.org geschickte
E-Mails ohne Probleme funktionieren.Sehen Sie stattdessen etwas wie dies:&prompt.root; host example.FreeBSD.org
example.FreeBSD.org has address 204.216.27.XX
example.FreeBSD.org mail is handled (pri=10) by hub.FreeBSD.orgSo wird jede an Ihren Rechner
(example.FreeBSD.org) gesandte E-Mail
auf hub unter dem gleichen Benutzernamen gesammelt
anstatt direkt zu Ihrem Rechner geschickt zu werden.Die obige Information wird von Ihrem DNS-Server verwaltet.
Der DNS-Eintrag, der die E-Mail Routen-Information enthält, ist der
Mail
eXchange Eintrag. Existiert kein
MX-Eintrag, werden E-Mails direkt anhand der IP-Adresse geliefert.
Der MX-Eintrag für
freefall.FreeBSD.org sah einmal so aus:
freefall MX 30 mail.crl.net
freefall MX 40 agora.rdrop.com
freefall MX 10 freefall.FreeBSD.org
freefall MX 20 who.cdrom.comWie Sie sehen können, hatte freefall
viele MX-Einträge. Die kleinste MX-Nummer ist der Rechner, der
die E-Mails letztendlich bekommt, wobei die anderen temporär
E-Mails in Warteschlangen einreihen während
freefall beschäftigt oder unerreichbar ist.Um besonders nützlich zu sein, sollten stellvertretende
MX-Seiten nicht dieselben Internet-Verbindungen wie Ihre eigene
verwenden. Für Ihren Internet-Dienstleister oder andere
sollte es kein Problem darstellen, Ihnen diesen Dienst zur
Verfügung zu stellen.E-Mails für Ihre DomäneUm einen E-Mail-Server (auch bekannt als
Mail-Server) einzurichten, benötigen Sie eine Umlenkung
jeglicher E-Mails zu Ihm, die an die verschiedenen Workstations
gesendet werden. Im Grunde wollen Sie jede an Ihre Domäne
gesendete E-Mail abfangen (in diesem Fall
*.FreeBSD.org), damit Ihre Benutzer
E-Mails mittels POP oder direkt auf dem Server
überprüfen können.Am einfachsten ist es, wenn Accounts mit gleichen
Benutzernamen auf beiden
Maschinen existieren. Verwenden Sie &man.adduser.8;, um
dies zu erreichen.Der E-Mail-Server, den Sie verwenden wollen, muss als
für den E-Mail-Austausch zuständiger Rechner
auf jeder Workstation im Netzwerk gekennzeichnet werden. Dies wird
in der DNS-Konfiguration so ausgeführt:example.FreeBSD.org A 204.216.27.XX ; Workstation
MX 10 hub.FreeBSD.org ; MailhostDiese Einstellung wird E-Mail für die Workstations zu dem
E-Mail-Server leiten, wo auch immer der A-Eintrag hinzeigt.
Die E-Mails werden zum MX-Rechner gesandt.Sofern Sie nicht einen DNS-Server laufen haben, können
Sie diese Einstellung nicht selbst vornehmen. Ist es Ihnen nicht
möglich einen eigenen DNS-Server laufen zu lassen, reden Sie
mit Ihren Internet-Dienstleister oder wer auch immer Ihre
DNS-Verwaltung übernimmt.Wenn Sie ein virtuelles E-Mail System anbieten, werden
die folgenden Informationen nützlich sein. Für ein Beispiel
nehmen wir an, Sie haben einen Kunden mit einer eigenen Domäne,
in diesem Fall customer1.org und
Sie wollen jegliche E-Mails für
customer1.org zu Ihrem
E-Mail-Server gesendet haben, der
mail.myhost.com heißt.
Der Eintrag in Ihrem DNS sollte wie folgender aussehen:customer1.org MX 10 mail.myhost.com
Sie benötigen keinen A-Eintrag, wenn
Sie für die Domain nur E-Mails verwalten wollen.Bedenken Sie, dass das Pingen von
customer1.org nicht möglich
ist, solange kein A-Eintrag für diese Domäne existiert.
Jetzt müssen Sie nur noch
sendmail auf Ihrem Mailrechner mitteilen,
für welche Domänen und/oder Rechnernamen es Mails akzeptieren
soll. Es gibt einige Wege wie dies geschehen kann. Die Folgenden
funktionieren alle gleichermaßen:Fügen Sie die Rechnernamen zu Ihrer
/etc/sendmail.cw Datei hinzu, wenn Sie
FEATURE(use_cw_file) verwenden. Ab
sendmail 8.10 heißt diese Datei
/etc/mail/local-host-names.Tragen Sie eine Zeile mit dem Inhalt
Cwyour.host.com in Ihre
/etc/sendmail.cf Datei (beziehungsweise
/etc/mail/sendmail.cf ab
sendmail 8.10) ein.SMTP über UUCPDie sendmail-Konfigurationsdatei,
die mit FreeBSD ausgeliefert wird, ist für Systeme geeignet,
die direkt ans Internet angeschlossen sind. Systeme, die
ihre E-Mails per UUCP austauschen wollen, müssen eine andere
Konfigurationsdatei installieren.Die manuelle Bearbeitung von
/etc/mail/sendmail.cf ist nur etwas
für Puristen. Sendmail Version 8 bietet die neue
Möglichkeit der Generierung von Konfigurationsdateien
über eine Vorverarbeitung mit &man.m4.1;, wobei die
tatsächliche, händische Konfiguration auf einer
höheren Abstraktionsstufe stattfindet. Sie sollten
die Konfigurationsdateien unter
/usr/src/usr.sbin/sendmail/cf
benutzen.Für den Fall, dass Sie Ihr System nicht mit
dem kompletten Quellcode installiert haben, wurden die
nötigen Dateien zur Konfiguration von
sendmail in
einer separaten Quelldistribution für Sie extrahiert.
Wenn Sie Ihre CD-ROM gemountet haben, müssen Sie die
folgenden Schritte ausführen:&prompt.root; cd /cdrom/src
&prompt.root; cat scontrib.?? | tar xzf - -C /usr/src contrib/sendmailKeine Panik, das sind nur ein paar hundert Kilobyte.
Die Datei README im Verzeichnis
cf kann zur grundlegenden
Einführung in die &man.m4.1;-Konfiguration dienen.Zur Zustellung über UUCP sind Sie am besten damit
beraten, die mailertable-Datenbank
zu benutzen. Mit dieser Datenbank ermittelt
sendmail mit welchem
Protokoll und wohin eine E-Mail zugestellt werden soll.Zunächst müssen Sie Ihre
.mc-Datei erstellen. Das Verzeichnis
/usr/src/usr.sbin/sendmail/cf/cf ist
die Basis für diese Dateien. Sehen Sie sich um, es
gibt bereits einige Beispiele. Wenn Sie Ihre Datei
foo.mc genannt haben, müssen Sie
die folgenden Befehle ausführen, um sie in eine
gültige sendmail.cf umzuwandeln:&prompt.root; cd /usr/src/usr.sbin/sendmail/cf/cf
&prompt.root; make foo.cf
&prompt.root; cp foo.cf /etc/mail/sendmail.cfEine typische .mc-Datei
könnte so aussehen:VERSIONID(`Your version number')
OSTYPE(bsd4.4)
FEATURE(accept_unresolvable_domains)
FEATURE(nocanonify)
FEATURE(mailertable, `hash -o /etc/mail/mailertable')
define(`UUCP_RELAY', your.uucp.relay)
define(`UUCP_MAX_SIZE', 200000)
define(`confDONT_PROBE_INTERFACES')
MAILER(local)
MAILER(smtp)
MAILER(uucp)
Cw your.alias.host.name
Cw youruucpnodename.UUCPDie Einstellungen accept_unresolvable_domains,
nocanonify und
confDONT_PROBE_INTERFACES werden die
Benutzung von DNS bei der Zustellung von Mails verhindern.
Die Klausel UUCP_RELAY wird aus
seltsamen Gründen benötigt – fragen Sie nicht,
warum. Setzen Sie dort einfach den Namen eines Hosts ein,
der in der Lage ist, Adressen mit der Pseudodomäne
.UUCP zu behandeln; wahrscheinlich werden Sie dort den
Relayhost Ihres ISP eintragen.Wenn Sie soweit sind, müssen Sie die Datei
/etc/mail/mailertable erzeugen. Hierzu
wieder ein typisches Beispiel:#
# makemap hash /etc/mail/mailertable.db < /etc/mail/mailertable
#
. uucp-dom:your.uucp.relayEin komplexeres Beispiel könnte wie folgt
aussehen:#
# makemap hash /etc/mail/mailertable.db < /etc/mail/mailertable
#
horus.interface-business.de uucp-dom:horus
.interface-business.de uucp-dom:if-bus
interface-business.de uucp-dom:if-bus
.heep.sax.de smtp8:%1
horus.UUCP uucp-dom:horus
if-bus.UUCP uucp-dom:if-bus
. uucp-dom:Die ersten drei Zeilen behandeln
spezielle Fälle, in denen an Domänen adressierte
E-Mails nicht über die Standard-Route versendet werden
sollen, sondern zu einem UUCP-Nachbarn, um den Zustellweg
abzukürzen. Die nächsten Zeilen
behandeln E-Mails an Rechner in der lokalen Domain.
Diese Mails können direkt
per SMTP zugestellt werden. Schließlich werden die
UUCP-Nachbarn in der Notation mit der Pseudodomäne
.UUCP aufgeführt, um die Standardregeln mit
uucp-neighbour!recipient
zu überschreiben. Die letzte Zeile besteht stets aus
einem einzelnen Punkt, der als Ihr Universalgateway in die
Welt dient. Alle Knoten hinter dem Schlüsselwort
uucp-dom: müssen gültige
UUCP-Nachbarn sein, was Sie mit dem Befehl
uuname überprüfen
können.Als Erinnerung daran, dass diese Datei in eine
DBM-Datenbankdatei konvertiert werden muss, bevor sie
benutzt werden kann, sollte der Befehl hierzu als
Kommentar am Anfang der mailertable
plaziert werden. Sie müssen den Befehl jedes Mal
ausführen, wenn Sie die mailertable
geändert haben.Abschließender Hinweis: Wenn Sie unsicher sind,
ob bestimmte Zustellwege funktionieren, erinnern Sie sich
an die Option von
sendmail. Sie startet
sendmail im
Adress-Testmodus; geben Sie
einfach 3,0, gefolgt von der Adresse,
für die Sie den Zustellweg testen möchten, ein.
Die letzte Zeile nennt Ihnen den benutzten Mailagenten,
den Zielhost, mit dem dieser Agent aufgerufen wird und die
(möglicherweise übersetzte) Adresse. Verlassen Sie diesen
Modus, indem Sie
CtrlD eingeben.&prompt.user; sendmail -bt
ADDRESS TEST MODE (ruleset 3 NOT automatically invoked)
Enter <ruleset> <address>
>3,0 foo@example.com
canonify input: foo @ example . com
...
parse returns: $# uucp-dom $@ your.uucp.relay $: foo < @ example . com . >
>^DBillMoranBeigetragen von Ausgehende E-Mail über einen Relay versendenIn vielen Fällen wollen Sie E-Mail nur über
einen Relay verschicken. Zum Beispiel:Sie wollen von Ihrem Arbeitsplatz Programme wie
&man.send-pr.1; benutzen. Dazu soll der Relay
Ihres ISPs verwendet werden.Ein Server, der E-Mails nicht selbst verarbeitet,
soll alle E-Mails zu einem Relay schicken.So ziemlich jeder MTA kann diese
Aufgaben erfüllen. Leider ist es oft schwierig, einen
vollwertigen MTA so zu konfigurieren,
dass er lediglich ausgehende E-Mails weiterleitet.
Es ist übertrieben, Programme wie
sendmail und
postfix nur für diesen
Zweck einzusetzen.Weiterhin kann es sein, dass die Bestimmungen Ihres
Internetzugangs es verbieten, einen eigenen Mail-Server
zu betreiben.Um die hier beschriebenen Anforderungen zu erfüllen,
installieren Sie einfach den Port
mail/ssmtp. Führen
Sie dazu als root die nachstehenden
Befehle aus:&prompt.root; cd /usr/ports/mail/ssmtp
&prompt.root; make install replace cleanNach der Installation konfigurieren Sie
mail/ssmtp mit den
folgenden vier Zeilen in
/usr/local/etc/ssmtp/ssmtp.conf:root=yourrealemail@example.com
mailhub=mail.example.com
rewriteDomain=example.com
hostname=_HOSTNAME_Stellen Sie sicher, dass Sie eine gültige E-Mail-Adresse
für root verwenden. Geben Sie
für mail.example.com
den Mail-Relay Ihres ISPs an (einige ISPs nennen den
Relay Postausgangsserver oder
SMTP-Server).Deaktivieren Sie sendmail
indem Sie in /etc/rc.confsendmail_enable="NONE" angeben.mail/ssmtp verfügt
über weitere Optionen. Die Musterkonfiguration in
/usr/local/etc/ssmtp oder die Hilfeseite
von ssmtp enthalten weitere
Beispiele.Wenn Sie ssmtp wie hier
beschrieben eingerichtet haben, funktionieren Anwendungen,
die E-Mails von Ihrem Rechner verschicken. Sie verstoßen
damit auch nicht gegen Bestimmungen Ihres ISPs und laufen
nicht in Gefahr, dass Ihr Rechner zum Versenden von
Spams missbraucht wird.E-Mail über Einwahl-VerbindungenWenn Sie eine feste IP-Adresse haben, müssen Sie
die Standardeinstellungen wahrscheinlich gar nicht
ändern. Stellen Sie Ihren Hostnamen entsprechend
Ihrem zugeordneten Internetnamen ein und
sendmail übernimmt
das Übrige.Wenn Sie eine dynamische IP-Adresse haben und eine
PPP-Wählverbindung zum
Internet benutzen, besitzen Sie wahrscheinlich eine
Mailbox auf dem Mailserver Ihres ISPs. Lassen
Sie uns annehmen, die Domäne ihres ISPs sei example.net und Ihr Benutzername
user; außerdem nehmen wir an,
dass Sie Ihre Maschine bsd.home
genannt haben und, dass Ihr ISP ihnen gesagt hat, dass Sie
relay.example.net als Mail-Relayhost
benutzen können.Um Mails aus Ihrer Mailbox abzuholen, müssen Sie
ein gesondertes Programm installieren;
fetchmail ist eine gute Wahl,
weil es viele verschiedene Protokolle unterstützt.
Das Programm können Sie als Paket oder von der
Ports-Sammlung (mail/fetchmail)
installieren. Für gewöhnlich wird von Ihrem
ISP POP zur
Verfügung gestellt. Falls Sie sich dafür
entschieden haben, User-PPP zu benutzen,
können Sie durch folgenden Eintrag in der Datei
/etc/ppp/ppp.linkup Ihre Mails
automatisch abholen lassen, wenn eine Verbindung zum Netz
aufgebaut wird:MYADDR:
!bg su user -c fetchmailFalls Sie (wie unten gezeigt)
sendmail benutzen, um Mails an
nicht-lokale Benutzer zu versenden, fügen Sie den
Befehl!bg su user -c "sendmail -q"nach dem oben gezeigten Eintrag ein. Das
veranlasst sendmail, Ihre
ausgehenden Mails zu verarbeiten, sobald eine Verbindung
zum Internet aufgebaut wird.Nehmen wir an, dass auf bsd.home
ein Benutzer user existiert.
Erstellen Sie auf bsd.home
im Heimatverzeichnis von user die Datei
.fetchmailrc:poll example.net protocol pop3 fetchall pass MySecret;Diese Datei sollte für niemandem außer
user lesbar sein, weil sie das
Passwort MySecret enthält.Um Mails mit dem richtigen from:-Header
zu versenden, müssen Sie sendmail
mitteilen, dass es user@example.net und nicht
user@bsd.home benutzen soll. Eventuell
möchten Sie auch, dass sendmail
alle Mails über relay.example.net
versendet, um eine schnellere Übertragung von Mails zu
gewährleisten.Die folgende .mc-Datei sollte
ausreichen:VERSIONID(`bsd.home.mc version 1.0')
OSTYPE(bsd4.4)dnl
FEATURE(nouucp)dnl
MAILER(local)dnl
MAILER(smtp)dnl
Cwlocalhost
Cwbsd.home
MASQUERADE_AS(`example.net')dnl
FEATURE(allmasquerade)dnl
FEATURE(masquerade_envelope)dnl
FEATURE(nocanonify)dnl
FEATURE(nodns)dnl
define(`SMART_HOST', `relay.example.net')
Dmbsd.home
define(`confDOMAIN_NAME',`bsd.home')dnl
define(`confDELIVERY_MODE',`deferred')dnlIm vorherigen Abschnitt finden Sie Details dazu, wie
Sie aus dieser .mc-Datei eine Datei
sendmail.cf erstellen können.
Vergessen Sie auch nicht,
sendmail neu zu starten,
nachdem Sie sendmail.cf
verändert haben.JamesGorhamGeschrieben von SMTP-AuthentifizierungEin Mail-Server, der SMTP-Authentifizierung
verwendet, bietet einige Vorteile. Die erforderliche
Authentifizierung erhöht die Sicherheit von
sendmail und Benutzer, die auf wechselnden
entfernten Rechnern arbeiten, können denselben Mail-Server
verwenden ohne Ihr Benutzerprogramm jedes Mal neu zu
konfigurieren.Installieren Sie den Port security/cyrus-sasl. Der Port
verfügt über einige Optionen, die während
der Übersetzung festgelegt werden. Das in diesem Abschnitt
diskutierte Beispiel verwendet die Option
.Editieren Sie nach der Installation von security/cyrus-sasl die Datei
/usr/local/lib/sasl/Sendmail.conf (erstellen
Sie die Datei, wenn sie nicht existiert) und fügen Sie die
folgende Zeile hinzu:pwcheck_method: passwdZur Authentifizierung eines Benutzers verwendet
sendmail dann die
passwd-Datenbank von FreeBSD. Damit
müssen zum Versenden von E-Mails keine zusätzlichen
Accounts und Passwörter angelegt werden. Die Benutzer
verwenden dasselbe Passwort zum Anmelden wie zum Verschicken von
E-Mails.Fügen Sie jetzt in /etc/make.conf
die nachstehenden Zeilen hinzu:SENDMAIL_CFLAGS=-I/usr/local/include/sasl1 -DSASL
SENDMAIL_LDFLAGS=-L/usr/local/lib
SENDMAIL_LDADD=-lsaslBeim Übersetzen von sendmail
werden damit die cyrus-sasl-Bibliotheken benutzt.
Stellen Sie daher vor dem Übersetzen von
sendmail sicher, dass der Port
cyrus-sasl installiert
ist.Übersetzen Sie sendmail mit
den nachstehenden Kommandos:&prompt.root; cd /usr/src/usr.sbin/sendmail
&prompt.root; make cleandir
&prompt.root; make obj
&prompt.root; make
&prompt.root; make installsendmail sollte sich ohne Probleme
übersetzen lassen, wenn die Dateien in
/usr/src nicht verändert wurden und die
benötigten Bibliotheken installiert sind.Nachdem Sie sendmail installiert
haben, editieren Sie /etc/mail/freebsd.mc
beziehungsweise die verwendete .mc-Datei.
Viele Administratoren verwenden die Ausgabe von &man.hostname.1;,
um der .mc-Datei einen eindeutigen Namen
zu geben. Fügen Sie die folgenden Zeilen in die
.mc-Datei ein:dnl set SASL options
TRUST_AUTH_MECH(`GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN')dnl
define(`confAUTH_MECHANISMS', `GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN')dnl
define(`confDEF_AUTH_INFO', `/etc/mail/auth-info')dnlDiese Anweisungen konfigurieren die Methoden, die
sendmail zur Authentifizierung
verwendet. Lesen Sie die mitgelieferte Dokumentation, wenn
Sie eine andere Methode als verwenden
wollen.Abschließend rufen Sie &man.make.1; im Verzeichnis
/etc/mail auf. Damit wird aus der
.mc-Datei eine neue
.cf-Datei (zum Beispiel
freebsd.cf) erzeugt. Das Kommando
make install restart installiert die Datei
nach /etc/mail/sendmail.cf und startet
sendmail neu. Weitere Informationen
entnehmen Sie bitte
/etc/mail/Makefile.Wenn alles funktioniert hat, tragen Sie in Ihrem
Mail-Benutzerprogramm das Passwort für die Authentifizierung ein
und versenden Sie zum Testen eine E-Mail. Wenn Sie Probleme haben,
setzen Sie den von
sendmail auf 13 und
untersuchen die Fehlermeldungen in
/var/log/maillog.Damit die SMTP-Authentifizerung beim Systemstart aktiviert
wird, fügen Sie die nachstehenden Zeile in
/etc/rc.conf ein:cyrus_pwcheck_enable="YES"Weitere Information erhalten Sie im WWW auf der
Webseite von
sendmail.MarcSilverBeigetragen von E-Mail-ProgrammeMail-User-AgentsE-Mail-ProgrammeAnwendungen, die E-Mails versenden und empfangen, werden
als E-Mail-Programme oder Mail-User-Agents (MUA)
bezeichnet. Mit der Entwicklung und Ausbreitung von E-Mail
wachsen auch die E-Mail-Programme und bieten Benutzern
mehr Funktionen und höhere Flexibilität. Unter
&os; laufen zahlreiche E-Mail-Programme, die Sie alle
mit der &os; Ports-Sammlung
installieren können. Sie können wählen zwischen
Programmen mit grafischer Benutzeroberfläche,
wie evolution oder
balsa, konsolenorientierten
Programmen wie mutt,
pine oder mail,
oder auch Programmen mit Web-Schnittstellen, die von einigen
großen Institutionen benutzt werden.mailDas standardmäßig unter &os; installierte
E-Mail-Programm ist &man.mail.1;. Das Programm ist
konsolenorientiert und enthält alle Funktionen,
die zum Versand und Empfang textbasierter
E-Mails erforderlich sind. Allerdings lassen sich
Anhänge mit mail nur schwer
bearbeiten und kann mail kann nur auf
lokale Postfächer zugreifen.mail kann nicht direkt auf
POP- oder IMAP-Server
zugreifen. Entfernte Postfächer können aber
mit einer Anwendung wie fetchmail
in die lokale Datei mbox geladen
werden. fetchmail wird später
in diesem Kapitel besprochen ().Um E-Mails zu versenden oder zu empfangen, starten
Sie einfach mail wie im nachstehenden
Beispiel:&prompt.user; mailDas Werkzeug mail liest automatisch
den Inhalt des Benutzer-Postfachs im Verzeichnis
/var/mail. Sollte
das Postfach leer sein, beendet sich mail
mit der Nachricht, dass keine E-Mails vorhanden sind.
Wenn das Postfach gelesen wurde, wird die Benutzeroberfläche
gestartet und eine Liste der E-Mails angezeigt.
Die E-Mails werden automatisch nummeriert wie
im folgenden Beispiel gezeigt:Mail version 8.1 6/6/93. Type ? for help.
"/var/mail/marcs": 3 messages 3 new
>N 1 root@localhost Mon Mar 8 14:05 14/510 "test"
N 2 root@localhost Mon Mar 8 14:05 14/509 "user account"
N 3 root@localhost Mon Mar 8 14:05 14/509 "sample"Einzelne Nachrichten können Sie jetzt mit dem
mail-Kommando t
gefolgt von der Nummer der Nachricht lesen. Im nachstehenden
Beispiel lesen wir die erste E-Mail:& t 1
Message 1:
From root@localhost Mon Mar 8 14:05:52 2004
X-Original-To: marcs@localhost
Delivered-To: marcs@localhost
To: marcs@localhost
Subject: test
Date: Mon, 8 Mar 2004 14:05:52 +0200 (SAST)
From: root@localhost (Charlie Root)
Das ist eine Test-Nachricht. Antworte bitte!Die Taste t zeigt die Nachricht zusammen
mit dem vollständigen Nachrichtenkopf an. Wenn Sie
die Liste der E-Mails erneut sehen wollen, drücken
Sie die Taste h.Um auf eine E-Mail zu antworten, benutzen Sie
im Programm mail entweder die
Taste R oder die Taste r.
Mit der Taste R weisen Sie
mail an, dem Versender der
Nachricht zu antworten. Mit der Taste r
antworten Sie nicht nur dem Versender sondern auch
allen Empfängern der Nachricht. Sie können
zusammen mit diesen Kommandos eine Zahl angeben,
um die E-Mail, auf die Sie antworten wollen, auszusuchen.
Wenn Sie den Befehl abgesetzt haben, schreiben Sie
Ihre Antwort und beenden die Eingabe mit einem
einzelnen Punkt (.) auf einer
neuen Zeile. Den Vorgang zeigt das nachstehende Beispiel:& R 1
To: root@localhost
Subject: Re: test
Danke, ich habe deine E-Mail erhalten.
.
EOTNeue E-Mails können Sie mit der Taste
m verschicken. Geben Sie dabei die
E-Mail-Adresse des Empfängers an. Sie können
auch mehrere durch Kommata (,) getrennte
Empfänger angeben. Geben Sie dann den Betreff
(subject) der Nachricht
gefolgt von der Nachricht selbst ein. Schließen
Sie die Nachricht mit einem einzelnen Punkt (.)
auf einer neuen Zeile ab.& mail root@localhost
Subject: Ich habe die E-Mails im Griff!
Jetzt kann ich E-Mails versenden und empfangen ... :)
.
EOTDie Taste ? zeigt zu jeder Zeit
einen Hilfetext an. Wenn Sie weitere Hilfe benötigen,
lesen Sie bitte die Hilfeseite &man.mail.1;.Wie vorhin gesagt, wurde das Programm &man.mail.1;
nicht für den Umgang mit Anhängen entworfen
und kann daher sehr schlecht mit Anhängen umgehen.
Neuere MUAs wie
mutt gehen wesentlich besser
mit Anhängen um. Sollten Sie dennoch das
mail-Kommando benutzen wollen,
werden Sie den Port
converters/mpack
sehr zu schätzen wissen.muttmutt ist ein schlankes aber
sehr leistungsfähiges E-Mail-Programm mit hervorrangenden
Funktionen, unter anderem:mutt kann den Verlauf
einer Diskussion (threading)
darstellen.Durch die Integration von PGP können
E-Mails signiert und verschlüsselt werden.MIME wird unterstützt.Postfächer können im Maildir-Format
gespeichert werden.mutt lässt sich
im höchsten Maße an lokale Bedürfnisse
anpassen.Wegen des Funktionsumfangs ist mutt
eins der ausgefeiltesten E-Mail-Programme. Mehr über
mutt erfahren Sie auf der Seite
.Der Port mail/mutt
enthält die Produktionsversion von
mutt, die aktuelle
Entwicklerversion befindet sich im Port
mail/mutt-devel.
Wenn mutt installiert ist,
wird das Programm mit dem nachstehenden Kommando gestartet:&prompt.user; muttmutt liest automatisch den
Inhalt des Benutzer-Postfachs im Verzeichnis
/var/mail. Wenn
E-Mails vorhanden sind, werden diese dargestellt. Sind
keine E-Mails vorhanden, wartet mutt
auf Benutzereingaben. Das folgende Beispiel zeigt, wie
mutt eine Nachrichten-Liste
darstellt:Wenn Sie eine Nachricht lesen wollen, wählen Sie
die Nachricht einfach mit den Pfeiltasten aus und drücken
Enter. mutt
zeigt E-Mails wie folgt an:Wenn Sie auf eine E-Mail antworten, können Sie,
wie in &man.mail.1;, aussuchen, ob Sie nur dem Versender
oder auch allen Empfängern antworten wollen. Wenn
Sie nur dem Versender antworten wollen, drücken Sie
die Taste r. Wenn sie dem Versender und
allen Empfängern antworten wollen, drücken Sie
die Taste g.Zum Erstellen oder zum Beantworten von E-Mails
ruft mutt den Editor
&man.vi.1; auf. Wenn Sie den von
mutt verwendeten Editor
ändern möchten, erstellen oder editieren
Sie in Ihrem Heimatverzeichnis die Datei
.muttrc. Den Editor können
Sie in .muttrc mit der Variablen
editor festlegen.Drücken Sie die Taste m, wenn
Sie eine neue Nachricht verfassen wollen. Nachdem
Sie einen Betreff (subject)
eingegeben haben, startet mutt
den Editor &man.vi.1; und Sie können die Nachricht
eingeben. Wenn Sie fertig sind, speichern Sie die
Nachricht und verlassen den Editor.
mutt wird dann wieder aktiv
und zeigt eine Zusammenfassung der zu sendenden Nachricht
an. Drücken Sie y, um die E-Mail
zu versenden. Der nachstehende Bildschirmabzug zeigt die
Zusammenfassung der E-Mail:mutt verfügt über
eine umfangreiche Hilfestellung. Aus fast jedem Menü
können Sie Hilfeseiten mit der Taste ?
aufrufen. In der oberen Statuszeile werden zudem die
verfügbaren Tastenkombinationen angezeigt.pinepine wendet sich an
Anfänger bietet aber ebenfalls einige Funktionen
für Profis.In der Vergangenheit wurden in
pine mehrere Schwachstellen
gefunden. Die Schwachstellen gestatteten entfernten
Benutzern, durch das Versenden einer besonders verfassten
E-Mail, Programme auf dem lokalen System laufen
zu lassen. Alle bekannten
Schwachstellen sind beseitigt worden, doch wird im
Quellcode von pine ein
sehr riskanter Programmierstil verwendet, sodass der
&os;-Security-Officer von weiteren unbekannten
Schwachstellen ausgeht. Sie installieren
pine auf eigene Verantwortung!Der Port mail/pine4
enthält die aktuelle Version von
pine. Nach der Installation
können Sie pine mit dem
nachstehenden Kommando starten:&prompt.user; pineWenn Sie pine das erste Mal
starten, zeigt das Programm eine Seite mit einer kurzen
Einführung an. Um die
pine-Benutzer zu zählen,
bitten die Entwickler auf dieser Seite um eine anonyme E-Mail.
Sie können diese anonyme E-Mail senden, indem Sie
Enter drücken oder den
Begrüßungsbildschirm mit der Taste
E verlassen, ohne die anonyme E-Mail
zu senden. Der Begrüßungsbildschirm
sieht wie folgt aus:Nach dem Begrüßungsbildschirm wird das
Hauptmenü dargestellt, das sich leicht mit den
Pfeiltasten bedienen lässt. Mit Tastenkombinationen
können Sie aus dem Hauptmenü neue E-Mails
erstellen, Postfächer anzeigen und auch das
Adressbuch verwalten. Unterhalb des Menüs werden
die Tastenkombinationen für die verfügbaren
Aktionen angezeigt.In der Voreinstellung öffnet
pine das Verzeichnis
inbox.
Die Taste I oder der Menüpunkt
MESSAGE INDEX führt
zu einer Nachrichten-Liste:Die Liste zeigt die Nachrichten im Arbeitsverzeichnis.
Sie können Nachrichten mit den Pfeiltasten markieren.
Wenn Sie eine Nachricht lesen wollen, drücken Sie
Enter.Im nächsten Bildschirmabzug sehen Sie, wie
pine eine Nachricht darstellt.
Die unteren Bildschirmzeilen zeigen die verfügbaren
Tastenkombinationen. Mit der Taste r
können Sie zum Beispiel auf die gerade angezeigte
Nachricht antworten.Zum Antworten auf eine E-Mail wird in
pine der Editor
pico, der mit installiert wird,
benutzt. pico ist leicht
zu bedienen und gerade für Anfänger besser
geeignet als &man.vi.1; oder &man.mail.1;. Die Antwort
wird mit der Tastenkombination
CtrlX
versendet. Vor dem Versand bittet pine
noch um eine Bestätigung.Über den Menüpunkt SETUP
des Hauptmenüs können Sie pine
an Ihre Bedürfnisse anpassen. Erläuterungen
dazu finden Sie auf der Seite
.MarcSilverBeigetragen von E-Mails mit fetchmail abholenfetchmailfetchmail ist ein vollwertiger
IMAP- und POP-Client.
Mit fetchmail können Benutzer
E-Mails von entfernten IMAP- und
POP-Servern in leichter zugängliche
lokale Postfächer laden. fetchmail
wird aus dem Port mail/fetchmail
installiert. Das Programm bietet unter anderem folgende
Funktionen:fetchmail beherrscht die
Protokolle POP3,
APOP, KPOP,
IMAP, ETRN und
ODMR.E-Mails können mit SMTP
weiterverarbeitet werden. Dadurch ist garantiert, dass
Filter, Weiterleitungen und Aliase weiterhin
funktionieren.Das Programm kann als Dienst laufen und periodisch
neue Nachrichten abrufen.fetchmail kann mehrere
Postfächer abfragen und je nach Konfiguration
die E-Mails an verschiedene lokale Benutzer
zustellen.Wegen des Funktionsumfangs von
fetchmail können hier
nur grundlegende Funktionen beschrieben werden.
fetchmail benötigt die
Konfigurationsdatei .fetchmailrc.
In dieser Datei werden Informationen über Server
wie auch Benutzerdaten und Passwörter hinterlegt.
Wegen des kritischen Inhalts von .fetchmailrc
sollte die Datei nur lesbar für den Benutzer sein:&prompt.user; chmod 600 .fetchmailrcDie folgende .fetchmailrc zeigt,
wie das Postfach eines einzelnen Benutzers mit
POP heruntergeladen wird.
fetchmail wird angewiesen,
eine Verbindung zu example.com
herzustellen und sich dort als Benutzer joesoap
mit dem Passwort XXX anzumelden. Das Beispiel
setzt voraus, dass es der Benutzer joesoap
auch auf dem lokalen System existiert.poll example.com protocol pop3 username "joesoap" password "XXX"Im folgenden Beispiel werden mehrere POP-
und IMAP-Server benutzt. Wo notwendig,
werden E-Mails auf andere lokale Konten umgeleitet:poll example.com proto pop3:
user "joesoap", with password "XXX", is "jsoap" here;
user "andrea", with password "XXXX";
poll example2.net proto imap:
user "john", with password "XXXXX", is "myth" here;Sie können fetchmail
als Dienst starten. Verwenden Sie dazu die Kommandozeilenoption
gefolgt von einer Zeitspanne in Sekunden,
die angibt, wie oft die Server aus der Datei
.fetchmailrc abgefragt werden sollen.
Mit dem nachstehenden Befehl fragt
fetchmail die Server alle
60 Sekunden ab:&prompt.user; fetchmail -d 60Mehr über fetchmail
erfahren Sie auf der Seite
.MarcSilverBeigetragen von E-Mails mit procmail filternprocmailMit procmail lässt sich
eingehende E-Mail sehr gut filtern. Benutzer können
Regeln für eingehende E-Mails definieren, die
E-Mails zu anderen Postfächern oder anderen E-Mail-Adressen
umleiten. procmail befindet
sich im Port mail/procmail.
procmail kann leicht in die
meisten MTAs integriert werden. Lesen
Sie dazu bitte die Dokumentation des verwendeten
MTAs. Alternativ kann
procmail in das E-Mail-System
eingebunden werden, indem die nachstehende Zeile in
die Datei .forward im Heimatverzeichnis
eines Benutzers eingefügt wird:"|exec /usr/local/bin/procmail || exit 75"Im Folgenden zeigen wir einige einfache
procmail-Regeln und beschreiben
kurz den Zweck der Zweck der Regeln. Die Regeln müssen
in die Datei .procmailrc im Heimatverzeichnis
des Benutzers eingefügt werden.Den Großteil dieser Regeln finden Sie auch
in der Hilfeseite &man.procmailex.5;.Alle E-Mail von user@example.com
an die externe Adresse goodmail@example2.com
weiterleiten::0
* ^From.*user@example.com
! goodmail@example2.comAlle Nachrichten, die kürzer als 1000 Bytes
sind, an goodmail@example2.com weiterleiten::0
* < 1000
! goodmail@example2.comJede E-Mail, die an alternate@example.com
geschickt wurde, im Postfach alternate
speichern::0
* ^TOalternate@example.com
alternateJede E-Mail, die im Betreff Spam
enthält, nach /dev/null
schieben::0
^Subject:.*Spam
/dev/nullZuletzt ein nützliches Rezept, das eingehende E-Mails
von den &os;.org-Mailinglisten
in ein separates Postfach für jede Liste einsortiert::0
* ^Sender:.owner-freebsd-\/[^@]+@FreeBSD.ORG
{
LISTNAME=${MATCH}
:0
* LISTNAME??^\/[^@]+
FreeBSD-${MATCH}
}
diff --git a/de_DE.ISO8859-1/books/handbook/mirrors/chapter.sgml b/de_DE.ISO8859-1/books/handbook/mirrors/chapter.sgml
index e6ce2913d8..4717b89809 100644
--- a/de_DE.ISO8859-1/books/handbook/mirrors/chapter.sgml
+++ b/de_DE.ISO8859-1/books/handbook/mirrors/chapter.sgml
@@ -1,3045 +1,3038 @@
Bezugsquellen für FreeBSDCD-ROM und DVD VerlegerFreeBSD PaketeFreeBSD-Pakete (FreeBSD-CDs, zusätzliche Software und
gedruckte Dokumentation) erhalten Sie von mehreren
Händlern:CompUSA
WWW: Frys Electronics
WWW: FreeBSD-CDs und -DVDsDie FreeBSD-CDs und -DVDs werden von vielen Online-Händlern
angeboten:BSD Mall by Daemon NewsPO Box 161Nauvoo, IL62354USA
Telefon: +1 866 273-6255
Fax: +1 217 453-9956
E-Mail: sales@bsdmall.com
WWW: BSD-Systems
E-Mail: info@bsd-systems.co.uk
WWW: fastdiscs.com6 Eltham CloseLeeds, LS6 2TYUnited Kingdom
Telefon: +44 870 1995 171
E-Mail: sales@fastdiscs.com
WWW: FreeBSD Mall, Inc.3623 Sanford StreetConcord, CA94520-1405USA
Telefon: +1 925 674-0783
Fax: +1 925 674-0821
E-Mail: info@freebsdmall.com
WWW: Hinner EDVSt. Augustinus-Str. 10D-81825MünchenGermany
Telefon: (089) 428 419
WWW: Ikarios22-24 rue Voltaire92000NanterreFrance
WWW: JMC SoftwareIreland
Telefon: 353 1 6291282
WWW: Linux CD MallPrivate Bag MBE N348Auckland 1030New Zealand
Telefon: +64 21 866529
WWW: The Linux EmporiumHilliard House, Lester WayWallingfordOX10 9TAUnited Kingdom
Telefon: +44 1491 837010
Fax: +44 1491 837016
WWW: Linux+ DVD MagazineLewartowskiego 6Warsaw00-190Poland
Telefon: +48 22 860 18 18
E-Mail: editors@lpmagazine.org
WWW: Linux System Labs Australia21 Ray DriveBalwyn NorthVIC - 3104Australia
Telefon: +61 3 9857 5918
Fax: +61 3 9857 8974
WWW: LinuxCenter.RuGalernaya Street, 55Saint-Petersburg190000Russia
Telefon: +7-812-3125208
E-Mail: info@linuxcenter.ru
WWW: LieferantenWenn Sie FreeBSD-CD-ROM-Produkte weiterverkaufen möchten,
kontaktieren Sie einen der folgenden Lieferanten:Cylogistics809B Cuesta Dr., #2149Mountain View, CA94040USA
Telefon: +1 650 694-4949
Fax: +1 650 694-4953
E-Mail: sales@cylogistics.com
WWW: Ingram Micro1600 E. St. Andrew PlaceSanta Ana, CA92705-4926USA
Telefon: 1 (800) 456-8000
WWW: Kudzu, LLC7375 Washington Ave. S.Edina, MN55439USA
Telefon: +1 952 947-0822
Fax: +1 952 947-0876
E-Mail: sales@kudzuenterprises.comLinuxCenter.RuGalernaya Street, 55Saint-Petersburg190000Russia
Telefon: +7-812-3125208
E-Mail: info@linuxcenter.ru
WWW: Navarre Corp7400 49th Ave SouthNew Hope, MN55428USA
Telefon: +1 763 535-8333
Fax: +1 763 535-0341
WWW: FTP-ServerDie offiziellen Quellen von FreeBSD sind mit anonymous FTP
über ein weltweites Netz von FTP-Spiegeln erhältlich.
Obwohl
über eine gute Anbindung verfügt, sollten Sie einen
Spiegel in Ihrer Nähe verwenden (insbesondere, wenn Sie
selber einen Spiegel einrichten wollen).Die Datenbank
der FreeBSD-Spiegel ist aktueller als die folgende Liste, da
sie im Gegensatz zu einer statischen Liste die Informationen aus
dem DNS erhält.Sie können FreeBSD auch über anonymous FTP von den
folgenden Spiegeln beziehen. Wenn Sie FreeBSD über anonymous
FTP beziehen wollen, wählen Sie bitte einen Spiegel in Ihrer
Nähe. Die unter Haupt-Spiegel aufgeführten
Spiegel stellen normalerweise das komplette FreeBSD-Archiv
(alle momentan erhältlichen Versionen für jede
unterstützte Architektur) zur Verfügung. Wahrscheinlich
geht es aber schneller, wenn Sie einen Spiegel in Ihrer
Nähe benutzen. Die Länder-Spiegel stellen die neusten
Versionen für die beliebtesten Architekturen bereit,
sie stellen aber unter Umständen nicht das komplette
FreeBSD-Archiv bereit. Auf alle Server kann mit
anonymous FTP zugegriffen werden, einige Server bieten
auch andere Zugriffsmethoden an. Die zur Verfügung
stehenden Zugriffsmethoden sind bei jedem Server in Klammern
angegeben.
&chap.mirrors.ftp.inc;
Anonymous CVSEinführungCVSanonymousAnonymous CVS (oder anoncvs) dient zum
Synchronisieren mit entfernten Repositories und steht mit
den CVS Werkzeugen, die im FreeBSD
Basissystem enthalten sind, zur Verfügung. Benutzer von
FreeBSD können damit unter anderem lesende Operationen
auf den Anoncvs Servern des
FreeBSD-Projekts durchführen,
ohne über besondere Berechtigungen zu verfügen. Um es
zu benutzen, setzen Sie einfach die CVSROOT
Umgebungsvariable auf einen Anoncvs Server
und geben beim Login mit cvs login das
Passwort anoncvs an. Danach können
Sie mit &man.cvs.1; wie auf jedes lokale Repository (allerdings nur
lesend) zugreifen.cvs login speichert Passwörter
zur Authentifizierung an einem CVS Server in der Datei
.cvspass in Ihrem
HOME-Verzeichnis. Wenn diese Datei beim ersten
Benutzen von cvs login nicht existiert,
erhalten Sie vielleicht eine Fehlermeldung. In diesem Fall
legen Sie einfach eine leere .cvspass
Datei an und melden sich erneut an.CVSup und
Anoncvs bieten dieselbe
Funktionalität, die folgenden Kriterien helfen Ihnen zu
entscheiden, welche Methode Sie benutzen sollen.
CVSup
geht wesentlich effizienter mit Netzwerk-Ressourcen um und ist
auch technisch ausgereifter. Allerdings müssen Sie zuerst
einen speziellen Client installieren und konfigurieren, bevor Sie
CVSup benutzen können. Weiterhin
können Sie mit CVSup nur relativ
große Teile der Quellen, die Sammlungen
genannt werden, synchronisieren.Im Gegensatz dazu können Sie mit
Anoncvs jede beliebige Datei oder
indem Sie einfach den CVS Namen des
Moduls angeben, ein beliebiges Programm, wie ls
oder grep, bearbeiten. Natürlich
können Sie mit Anoncvs nur lesend
auf ein CVS Repository zugreifen.
Wenn Sie lokal mit dem FreeBSD-Repository entwickeln wollen, dann
ist CVSup die einzige Wahl.Benutzen von Anonymous CVSSetzen Sie einfach die CVSROOT
Umgebungsvariable, um &man.cvs.1; das
CVS Repository eines FreeBSD
Anoncvs Servers bekannt zu geben.
Zurzeit stehen folgende Server zur Verfügung:Deutschland:
:pserver:anoncvs@anoncvs.de.FreeBSD.org:/home/ncvs
(Benutzen Sie cvs login und das
Passwort anoncvs.)Deutschland:
:pserver:anoncvs@anoncvs2.de.FreeBSD.org:/home/ncvs
(rsh, pserver, ssh, ssh/2022)Frankreich:
:pserver:anoncvs@anoncvs.fr.FreeBSD.org:/home/ncvs
(Das Passwort für pserver ist
anoncvs, ssh-Zugriffe
verwenden kein Passwort.)Japan:
:pserver:anoncvs@anoncvs.jp.FreeBSD.org:/home/ncvs
(Benutzen Sie cvs login und das
Passwort anoncvs.)Österreich:
:pserver:anoncvs@anoncvs.at.FreeBSD.org:/home/ncvs
Benutzen Sie cvs login und ein
beliebiges Passwort.Schweden:
freebsdanoncvs@anoncvs.se.FreeBSD.org:/home/ncvs
(nur ssh ohne Passwort).SSH HostKey: 1024 a7:34:15:ee:0e:c6:65:cf:40:78:2d:f3:cd:87:bd:a6 root@apelsin.fruitsalad.org
SSH2 HostKey: 1024 21:df:04:03:c7:26:3e:e8:36:1a:50:2d:c7:ae:b8:5f ssh_host_dsa_key.pubUSA:
freebsdanoncvs@anoncvs.FreeBSD.org:/home/ncvs
(nur ssh ohne Passwort).SSH HostKey: 1024 a1:e7:46:de:fb:56:ef:05:bc:73:aa:91:09:da:f7:f4 root@sanmateo.ecn.purdue.edu
SSH2 HostKey: 1024 52:02:38:1a:2f:a8:71:d3:f5:83:93:8d:aa:00:6f:65 ssh_host_dsa_key.pubUSA:
anoncvs@anoncvs1.FreeBSD.org:/home/ncvs
(nur ssh ohne Passwort).SSH HostKey: 1024 4b:83:b6:c5:70:75:6c:5b:18:8e:3a:7a:88:a0:43:bb root@ender.liquidneon.com
SSH2 HostKey: 1024 80:a7:87:fa:61:d9:25:5c:33:d5:48:51:aa:8f:b6:12 ssh_host_dsa_key.pubMit CVS können Sie praktisch
jede Version von FreeBSD, die schon einmal existiert hat (oder in
manchen Fällen existieren wird) auschecken. Sie sollten
daher damit vertraut sein, wie Sie mit Tags unter &man.cvs.1;
arbeiten (die Option). Zudem müssen Sie
die Namen der Tags im FreeBSD-Repository kennen.Es gibt zwei verschiedene TagsTags sind
symbolische Namen, die im Repository vergeben werden.
: Tags, die Revisionen bezeichnen und Tags, die
Zweige bezeichnen. Die Ersten sind statisch und fest an eine
Revision gebunden. Ein Tag, das einen Zweig bezeichnet,
bezieht sich dagegen zu einem gegebenen Zeitpunkt immer auf die
aktuellste Revision. Da ein Tag eines Zweiges nicht an eine
bestimmte Revision gebunden ist, kann sich dessen Bedeutung von
heute auf morgen ändern.In finden Sie eine Liste der
gültigen Tags. Beachten Sie bitte, dass keines der
Tags auf die Ports-Sammlung anwendbar ist, da diese nicht
über Zweige verfügt.Wenn Sie ein Tag eines Zweiges verwenden, erhalten Sie die
aktuellsten Dateien dieses Entwicklungszweiges. Wenn Sie eine
frühere Revision erhalten möchten, können Sie zum
Beispiel einen Zeitpunkt mit der Option
angeben. Weitere Informationen dazu entnehmen Sie bitte
&man.cvs.1;.BeispieleIm Folgenden finden Sie einige Beispiele für den Umgang
mit Anonymous CVS. Sie sollten sich
aber die Manualpage von &man.cvs.1; sorgfältig durchlesen,
bevor Sie anfangen.&man.ls.1; von -CURRENT auschecken und wieder
löschen&prompt.user; setenv CVSROOT :pserver:anoncvs@anoncvs.FreeBSD.org:/home/ncvs
&prompt.user; cvs loginWenn Sie dazu aufgefordert werden, benutzen Sie das Passwortanoncvs.
&prompt.user; cvs co ls
&prompt.user; cvs release -d ls
&prompt.user; cvs logoutDer src/-Baum über
SSH auschecken&prompt.user; cvs -d freebsdanoncvs@anoncvs.FreeBSD.org:/home/ncvs co src
The authenticity of host 'anoncvs.freebsd.org (128.46.156.46)' can't be establiestablished.
DSA key fingerprint is 52:02:38:1a:2f:a8:71:d3:f5:83:93:8d:aa:00:6f:65.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'anoncvs.freebsd.org' (DSA) to the list of known hosts.&man.ls.1; aus dem 3.X-STABLE Zweig auschecken&prompt.user; setenv CVSROOT :pserver:anoncvs@anoncvs.FreeBSD.org:/home/ncvs
&prompt.user; cvs loginWenn Sie dazu aufgefordert werden, benutzen Sie das Passwortanoncvs.
&prompt.user; cvs co -rRELENG_3 ls
&prompt.user; cvs release -d ls
&prompt.user; cvs logoutÄnderungen in &man.ls.1; zwischen 3.0 RELEASE und
3.4 RELEASE (als unified diff)&prompt.user; setenv CVSROOT :pserver:anoncvs@anoncvs.FreeBSD.org:/home/ncvs
&prompt.user; cvs loginWenn Sie dazu aufgefordert werden, benutzen Sie das Passwortanoncvs.
&prompt.user; cvs rdiff -u -rRELENG_3_0_0_RELEASE -rRELENG_3_4_0_RELEASE ls
&prompt.user; cvs logoutGültige Modulnamen herausfinden&prompt.user; setenv CVSROOT :pserver:anoncvs@anoncvs.FreeBSD.org:/home/ncvs
&prompt.user; cvs loginWenn Sie dazu aufgefordert werden, benutzen Sie das Passwortanoncvs.
&prompt.user; cvs co modules
&prompt.user; more modules/modules
&prompt.user; cvs release -d modules
&prompt.user; cvs logoutWeitere RessourcenDie folgenden Ressourcen sind nützlich, um den Umgang
mit CVS zu lernen:CVS Tutorial von Cal Poly.CVS Home,
die Homepage des CVS
Projekts.CVSweb das
Web Interface zu CVS des FreeBSD
Projekts.CTMCTMMit CTM
Abkürzung für CVS Through eMail
können Sie einen
entfernten Verzeichnisbaum mit einem zentralen Baum
synchronisieren. Es wurde extra zum Synchronisieren der FreeBSD
Quellen entwickelt, obwohl es mit der Zeit vielleicht auch andere
Anwendungen geben wird. Zurzeit existiert leider so gut wie keine
Dokumentation zum Erstellen der Deltas. Wenn Sie Hilfe
benötigen oder CTM für
andere Zwecke einsetzen wollen, wenden Sie sich bitte an
die Mailingliste &a.ctm-users.name;.Warum soll ich CTM benutzen?Mit CTM erhalten Sie eine lokale
Kopie des FreeBSD-Quellbaums, den es in mehreren
Varianten gibt. Sie können das ganze
Repository oder nur einen Zweig spiegeln. Wenn Sie ein aktiver
FreeBSD-Entwickler mit einer schlechten oder gar keiner TCP/IP
Verbindung sind, oder die Änderungen einfach automatisch
zugesandt bekommen wollen, dann ist CTM
das Richtige für Sie. Für die Zweige mit der
meisten Aktivität müssen Sie sich täglich bis zu drei
Deltas beschaffen, Sie sollten allerdings erwägen, die
Deltas automatisch über E-Mail zu beziehen. Die
Größe der Updates wird so klein wie möglich
gehalten. Normalerweise sind sie kleiner als 5 kB, manchmal
sind sie 10-50 kB groß (etwa jedes 10. Update) und ab
und an werden Sie auch einmal ein Update mit 100 kB oder
mehr erhalten.Sie sollten sich über die Vorbehalte gegen die
Verwendung der Quellen anstelle eines offiziellen Releases
bewusst sein. Das trifft besonders auf &os.current; zu, lesen
Sie dazu bitte den Abschnitt
&os.current;.Was brauche ich, um CTM zu
benutzen?Zwei Sachen: Das CTM Programm und
die initialen Deltas, von denen aus Sie auf die
aktuellen Stände kommen.CTM ist schon seit der
Version 2.0 Teil des FreeBSD-Basissystems. Sie finden es in
/usr/src/usr.sbin/ctm, wenn Sie eine Kopie
der Quellen besitzen.
- Wenn Sie eine frühere Version als FreeBSD 2.0
- besitzen, können Sie die aktuellen CTM
- Quellen von der folgenden URL beziehen:
-
-
-
Die Deltas, die CTM verarbeitet,
können Sie über FTP oder E-Mail beziehen. Wenn Sie
über einen FTP Zugang zum Internet verfügen, erhalten
Sie die Deltas unter der folgenden URL:Die Deltas werden auch von
CTM Spiegeln
bereitgehalten.Wechseln Sie in das passende Verzeichnisse zum Beispiel
src-cur für &os.current; und laden Sie
sich von dort die Deltas herunter.Sie können die Deltas auch über E-Mail
beziehen.Abonnieren Sie dazu eine der
CTM-Verteilerlisten.
Über &a.ctm-cvs-cur.name; erhalten Sie den kompletten
CVS-Baum, über
&a.ctm-src-cur.name; erhalten Sie &os.current; und über
&a.ctm-src-4.name; erhalten Sie den FreeBSD
4.X-Zweig. Wenn Sie nicht wissen, wie Sie eine der
Mailinglisten abonnieren, folgen Sie einem der Verweise
von oben oder besuchen Sie die Seite &a.mailman.lists.link;.
Weitere Informationen erhalten Sie, wenn Sie dort
auf die gewünschte Liste klicken.Benutzen Sie ctm_rmail, um die
CTM Updates, die Sie per
E-Mail empfangen, auszupacken und anzuwenden. Wenn Sie diesen
Prozess automatisiert ablaufen lassen möchten,
können Sie dazu einen Eintrag in
/etc/aliases verwenden. Genauere
Informationen finden Sie in der Manualpage von
ctm_rmail.Sie sollten die Mailingliste &a.ctm-announce.name;
abonnieren, egal wie Sie die
CTM-Deltas erhalten.
Ankündigungen, die den Betrieb des
CTM-Systems betreffen, werden
nur auf dieser Liste bekannt gegeben. Klicken Sie
auf den Namen der Liste oder besuchen Sie die Seite
&a.mailman.lists.link;, um diese Liste zu abonnieren.Initialisieren von CTMBevor Sie die CTM Deltas benutzen
können, brauchen Sie einen Startpunkt, auf den die
nachfolgenden Deltas angewendet werden.Sie können natürlich mit einem leeren Verzeichnis
beginnen. In diesem Fall benötigen Sie ein
XEmpty-Delta, mit dem Sie den
CTM-Verzeichnisbaum initialisieren.
Wenn Sie Glück haben, finden Sie ein
XEmpty-Delta, mit dem sie beginnen können,
auf einer der CDs Ihrer Distribution.Da die Verzeichnisbäume mehrere Megabyte groß
sind, sollten Sie nach Möglichkeit etwas schon vorhandenes
benutzen. Wenn Sie eine -RELEASE CD besitzen, können Sie
die Quellen von dieser CD benutzen. Sie ersparen sich damit das
Übertragen großer Datenmengen.Die Deltas, mit denen Sie beginnen können, enthalten ein
X in ihrem Namen, wie in
src-cur.3210XEmpty.gz. Hinter dem
X wird der Startpunkt der Deltas
angegeben, in diesem Fall steht Empty
für ein leeres Verzeichnis. Nach etwa 100 Deltas wird ein
neues XEmpty-Delta erstellt.
Mit ungefähr 75 Megabyte komprimierter Daten sind diese
XEmpty-Deltas übrigens sehr
groß.Nachdem Sie Ihren Startpunkt festgelegt haben, benötigen
Sie alle Deltas mit einer höheren Nummer.Benutzen von CTMUm ein Delta einzuspielen, benutzen Sie das folgende
Kommando:&prompt.root; cd /Pfad/zu/den/Quellen
&prompt.root; ctm -v -v /Pfad/zu/den/Deltas/src-xxx.*CTM kann mit Deltas arbeiten, die
mit gzip komprimiert wurden. Sie brauchen die
Deltas vorher nicht mit gunzip zu
dekomprimieren und sparen damit Plattenplatz.Ihr Quellbaum wird erst dann verändert, wenn
CTM die Deltas sauber verarbeiten
kann. Die Integrität der Deltas und ihre Anwendbarkeit auf
den Quellbaum lassen sich durch die Angabe des Schalters
-c überprüfen,
CTM ändert in diesem Fall Ihren
Quellbaum nicht.CTM verfügt über weitere
Kommandozeilenoptionen, Informationen dazu finden Sie in der
Manualpage oder dem Quellcode.Das war schon alles. Um Ihre Quellen aktuell zu halten,
verwenden Sie CTM jedes Mal, wenn Sie
neue Deltas bekommen.Löschen Sie die Deltas nicht, wenn Sie diese nur schwer
wieder beschaffen können. Behalten Sie sie für den
Fall, das etwas passiert. Auch wenn Sie nur Disketten besitzen,
sollten Sie erwägen, die Deltas mit
fdwrite zu sichern.Umgang mit lokalen ÄnderungenEntwickler wollen mit den Dateien im Quellbaum
experimentieren und diese verändern. In beschränkter
Weise werden lokale Änderungen von
CTM unterstützt. Wenn
CTM die Datei foo
bearbeiten will, überprüft es zuerst ob die Datei
foo.ctm existiert. Wenn diese Datei
existiert, werden Änderungen in ihr anstatt in
foo vorgenommen.Mit diesem Verfahren ist eine leichte Handhabung lokaler
Änderungen möglich. Kopieren Sie die Dateien, die Sie
ändern möchten, in Dateien, die das Suffix
.ctm tragen. Sie können dann
ungestört mit dem Quellcode arbeiten, während
CTM die
.ctm Dateien aktualisiert.Weitere CTM-OptionenWas wird aktualisiert?Eine Liste der Änderungen, die
CTM an Ihrem Quellbaum vornehmen
wird, erhalten Sie, wenn Sie die Option
angeben.Das ist nützlich, wenn Sie Logs über die
Änderungen führen wollen, geänderte Dateien vor-
oder nachbearbeiten wollen, oder einfach ein bisschen
paranoid sind.Sicherungen vor einer Aktualisierung erstellenSie wollen vielleicht die Dateien, die durch eine
CTM Aktualisierung verändert
werden, sichern.Mit weisen Sie
CTM an, alle Dateien, die durch ein
CTM Delta verändert
würden, nach backup-file zu
sichern.Dateien ausschließenManchmal wollen Sie nur bestimmte Teile aktualisieren
oder nur bestimmte Dateien aus einer Folge
von Deltas extrahieren.Sie können die Liste der Dateien, mit denen
CTM arbeitet, einschränken,
indem Sie reguläre Ausdrücke mit den Optionen
und angeben.Wenn Sie eine aktuelle Kopie von
lib/libc/Makefile aus den gesicherten
CTM Deltas erhalten wollen, setzen
Sie das folgende Kommando ab:&prompt.root; cd /wo/Sie/es/auspacken/wollen/
&prompt.root; ctm -e '^lib/libc/Makefile' ~ctm/src-xxx.*Die Optionen und
werden in der Reihenfolge angewandt, in der sie auf der
Kommandozeile angegeben wurden. Eine Datei wird nur dann von
CTM verarbeitet, wenn dies nach der
Anwendung der Optionen und
noch erlaubt ist.Pläne für CTMMehrere:Hinzufügen eines Authentifizierungsmechanismus,
damit gefälschte CTM-Deltas
erkannt werden können.Aufräumen der
CTM-Optionen, die mit der Zeit
unübersichtlich und irreführend wurden.VerschiedenesEs gibt Deltas für die Ports-Sammlung, die
aber nicht intensiv genutzt werden.CTM-SpiegelDie CTM-Deltas können Sie mit anonymous FTP von den folgenden
Spiegeln beziehen. Versuchen Sie bitte einen Spiegel in Ihrer
Nähe zu benutzen.Bei Problemen wenden Sie sich bitte an die
Mailingliste &a.ctm-users.name;.Kalifornien, Bay Area, Offizieller ServerSüdafrika, Backup-Server für alte DeltasTaiwan/R.O.C.Wenn die Liste keinen Spiegel in Ihrer Nähe enthält
oder Sie Probleme mit dem ausgewählten Spiegel haben, versuchen
Sie einen Spiegel mit einer Suchmaschine, wie
alltheweb, zu
finden.Benutzen von CVSupEinführungCVSup ist eine Anwendung, die
Verzeichnisbäume von einem entfernten
CVS-Server bereitstellt und
aktualisiert. Die Quellen von FreeBSD werden in einem
CVS-Repository auf einer
Entwicklungsmaschine in Kalifornien gepflegt. Mit
CVSup können sich FreeBSD-Benutzer
den eigenen Quellbaum auf aktuellem Stand halten.Zum Aktualisieren benutzt CVSup die
Pull-Methode, bei der die Aktualisierungen vom Client angefragt
werden. Der Server wartet dabei passiv auf Anfragen von Clients,
das heißt er verschickt nicht unaufgefordert
Aktualisierungen. Somit gehen alle Anfragen vom Client aus und die
Benutzer müssen CVSup entweder
manuell starten oder einen cron Job einrichten, um
regelmäßig Aktualisierungen zu erhalten.CVSup in genau dieser Schreibweise
bezeichnet die Anwendung, die aus dem Client cvsup
und dem Server cvsupd besteht.
cvsup läuft auf den Maschinen der Benutzer,
cvsupd läuft auf jedem der
FreeBSD-Spiegel.Wenn Sie die FreeBSD-Dokumentation und die Mailinglisten lesen,
werden Sie oft auf Sup, dem
Vorgänger von CVSup stoßen.
CVSup wird in gleicher Weise wie
Sup benutzt und verfügt sogar
über Konfigurationsdateien, die kompatibel zu denen von
Sup sind. Da
CVSup schneller und flexibler als
Sup ist, wird
Sup vom FreeBSD-Projekt nicht mehr
benutzt.Installation von CVSupCVSup können Sie leicht
installieren, wenn Sie das vorkompilierte Paket
net/cvsup aus der
Ports-Sammlung benutzen.
Alternativ können Sie
net/cvsup auch ausgehend von
den Quellen bauen, doch seien Sie gewarnt:
net/cvsup hängt vom
Modula-3 System ab, das viel Zeit und
Platz zum Herunterladen und Bauen braucht.Wenn Sie CVSup auf einer
Maschine ohne &xfree86;
oder &xorg;,
beispielsweise einem Server, benutzen, stellen Sie sicher,
dass Sie den Port ohne das
CVSup-GUI,
net/cvsup-without-gui
verwenden.Konfiguration von CVSupDas Verhalten von CVSup wird mit
einer Konfigurationsdatei gesteuert, die
supfile genannt wird. Beispiele für
Konfigurationsdateien finden Sie in dem Verzeichnis
.Ein supfile enthält die folgenden
Informationen:Welche Dateien Sie
erhalten wollen.Welche Versionen der
Dateien Sie benötigen.Woher Sie die Dateien
beziehen wollen.Wo Sie die erhaltenen
Dateien speichern.Wo Sie die
Status-Dateien aufbewahren wollen.In den folgenden Abschnitten erstellen wir ein typisches
supfile indem wir nach und nach diese Punkte
klären. Zuerst beschreiben wir aber den Aufbau dieser
Konfigurationsdatei.Ein supfile ist eine Textdatei.
Kommentare beginnen mit einem # und gelten bis zum
Zeilenende. Leerzeilen und Zeilen, die nur Kommentare enthalten,
werden ignoriert.Die anderen Zeilen legen die Dateien fest, die ein Benutzer
erhalten will. Der Server organisiert verschiedene Dateien in
einer Sammlung, deren Name auf einer Zeile angegeben
wird. Nach dem Namen der Sammlung können mehrere durch
Leerzeichen getrennte Felder folgen, die die oben angesprochenen
Informationen festlegen. Es gibt zwei Arten von Feldern: Felder,
die Optionen festlegen und Felder mit Parametern.
Optionen bestehen aus einem Schlüsselwort, wie
oder und
stehen alleine. Ein Parameterfeld beginnt mit einem
Schlüsselwort, dem = und ein Parameter,
wie in ,
folgt. Dieses Feld darf keine Leerzeichen enthalten.In einem supfile werden normalerweise
mehrere Sammlungen angefordert. Die erforderlichen Felder
können explizit für jede Sammlung angegeben werden,
dann werden jedoch die Zeilen ziemlich lang. Außerdem ist
dieses Vorgehen sehr unhandlich, da die meisten Felder für
alle Sammlungen gleich sind. CVSup
bietet die Möglichkeit, Vorgaben für die Felder der
Sammlungen festzulegen. Zeilen, die mit der Pseudo-Sammlung
*default beginnen, legen Optionen und Parameter
für nachfolgende Sammlungen im supfile
fest. Der Vorgabewert kann in der Zeile einer bestimmten Sammlung
überschrieben werden. Durch Hinzufügen weiterer
*default Zeilen können die Vorgaben auch
mitten im supfile überschrieben oder
erweitert werden.Mit diesem Wissen können wir nun ein
supfile erstellen, das den Quellbaum von
FreeBSD-CURRENT anfordert und
aktualisiert.Welche Dateien wollen Sie
empfangen?Dateien werden von CVSup in
Sammlungen organisiert. Die erhältlichen
Sammlungen werden später
beschrieben. Wir wollen den Quellbaum von FreeBSD empfangen,
der in der Sammlung src-all enthalten ist.
Das supfile enthält pro Zeile eine
Sammlung, in diesem Fall also nur eine einzige Zeile:src-allWelche Versionen der Dateien
werden benötigt?Mit CVSup können Sie jede
Version der Quellen bekommen, da der
cvsupd-Server seine Daten direkt aus
dem CVS-Repository bezieht. Sie
können die benötigten Versionen in den
Parameterfeldern tag= und
angeben.Achten Sie darauf, dass Sie das richtige
tag=-Feld angeben. Einige Tags sind nur
für spezielle Sammlungen gültig. Wenn Sie ein
falsches Tag angeben oder sich verschreiben, wird
CVSup Dateien löschen, die
Sie wahrscheinlich gar nicht löschen wollten.
Achten Sie insbesondere bei den
ports-*-Sammlungen darauf,
ausschließlichtag=. zu verwenden.Mit tag= wird ein symbolischer Name aus
dem Repository angegeben. Es gibt zwei verschiedene Tags:
Tags, die Revisionen bezeichnen und Tags, die Zweige
bezeichnen. Die ersteren sind statisch und fest an eine
Revision gebunden. Ein Tag, das einen Zweig bezeichnet,
bezieht sich dagegen zu einem gegebenen Zeitpunkt immer auf
die aktuellste Revision. Da ein Tag eines Zweiges nicht an
eine bestimmte Revision gebunden ist, kann sich dessen
Bedeutung von heute auf morgen ändern. zählt für Benutzer
relevante Tags auf. Wenn Sie in der Konfigurationsdatei ein
Tag, wie RELENG_4, angeben, müssen Sie
diesem tag= vorstellen:
tag=RELENG_4. Denken Sie daran, dass
es für die Ports-Sammlung nur tag=.
gibt.Achten Sie darauf, dass Sie den Namen eines Tags
richtig angeben. CVSup kann nicht
zwischen richtigen und falschen Tags unterscheiden. Wenn Sie
sich bei der Angabe eines Tags vertippen, nimmt
CVSup an, Sie hätten ein
gültiges Tag angegeben, dem nur keine Dateien zugeordnet
sind. Die Folge davon ist, dass Ihre vorhandenen Quellen
gelöscht werden.Wenn Sie ein Tag angeben, das sich auf einen Zweig bezieht,
erhalten Sie die aktuellsten Revisionen der Dateien auf diesem
Zweig. Wenn Sie eine frühere Revision erhalten
möchten, können Sie diese im
Feld angeben. Einzelheiten dazu finden Sie in der Manualpage
von cvsup.Wir möchten gerne FreeBSD-CURRENT beziehen und
fügen die folgende Zeile am Anfang
der Konfigurationsdatei ein:*default tag=.Eine wichtige Ausnahme ist wenn Sie weder ein
tag=-Feld noch ein date=-Feld
angeben. In diesem Fall erhalten Sie anstelle einer speziellen
Revision die wirklichen RCS-Dateien aus dem CVS-Repository
des Servers. Diese Vorgehensweise wird von Entwicklern
bevorzugt, da sie mit einem eigenen Repository leicht die
Entwicklungsgeschichte und Veränderungen von Dateien
verfolgen können. Dieser Vorteil muss allerdings mit
sehr viel Plattenplatz bezahlt werden.Woher sollen die Dateien
bezogen werden?Im host=-Feld wird angegeben, woher
cvsup die Dateien holen soll. Sie
können hier jeden der CVSup-Spiegel angeben, doch
sollten Sie einen Server in Ihrer Nähe auswählen.
Für dieses Beispiel wollen wir den erfundenen Server
cvsup99.FreeBSD.org
verwenden:*default host=cvsup99.FreeBSD.orgBevor Sie CVSup laufen
lassen, sollten Sie hier einen existierenden Server
einsetzen. Den zu verwendenden Server können Sie auf der
Kommandozeile mit
überschreiben.Wo sollen die Dateien
gespeichert werden?Im prefix=-Feld teilen Sie
cvsup mit, wo die Dateien gespeichert werden
sollen. In diesem Beispiel werden wir die Quelldateien direkt
im Verzeichnisbaum für Quellen
/usr/src ablegen. Das Verzeichnis
src ist schon in der Sammlung, die wir
beziehen enthalten, so dass wir die folgende Zeile
angeben:*default prefix=/usrWo sollen die
Statusinformationen von cvsup gespeichert
werden?cvsup legt in einem Verzeichnis
Statusinformationen ab, die festhalten, welche Versionen schon
empfangen wurden. Wir verwenden das Verzeichnis
/var/db:*default base=/var/dbWenn das Verzeichnis für die Statusinformationen nicht
existiert, sollten Sie es jetzt anlegen, da
cvsup ohne dieses Verzeichnis nicht
startet.Verschiedene Einstellungen:Eine weitere Zeile sollte normalerweise in jedem
supfile sein:*default release=cvs delete use-rel-suffix compressMit release=cvs wird angegeben,
dass der Server das FreeBSD-Haupt-Repository abfragen soll,
was praktisch immer der Fall ist (die Ausnahmen werden in
diesem Text nicht diskutiert).delete erlaubt es
CVSup, Dateien zu löschen.
Diese Option sollten Sie immer angeben, damit
CVSup Ihren Quellbaum auch wirklich
aktuell halten kann. CVSup
löscht nur Dateien für die es auch verantwortlich
ist. Andere Dateien, die sich in einem Baum unter Kontrolle
von CVSup befinden, werden nicht
verändert.Wenn Sie wirklich etwas über das obskure
use-rel-suffix erfahren wollen, lesen Sie
bitte in der Manualpage nach, ansonsten geben Sie es einfach an
und vergessen es.Wenn Sie compress angeben, werden Daten
auf dem Kommunikationskanal komprimiert. Wenn Sie über
eine T1-Leitung oder eine schnellere Netzanbindung
verfügen, brauchen Sie diese Option vielleicht nicht. In
allen anderen Fällen beschleunigt sie aber den
Ablauf.Zusammenfassung:Das vollständige supfile unseres
Beispiels sieht nun so aus:*default tag=.
*default host=cvsup99.FreeBSD.org
*default prefix=/usr
*default base=/var/db
*default release=cvs delete use-rel-suffix compress
src-allDie refuse DateiCVSup benutzt die Pull-Methode, das
heißt wenn sich ein Client mit einem Server verbindet,
erhält er eine Liste der verfügbaren Sammlungen und
wählt aus diesen die herunterzuladenden Dateien aus. In der
Voreinstellung wählt der Client alle Dateien aus, die zu
einer gegebenen Sammlung und zu einem gegebenen Tag passen.
Dieses Verhalten ist aber nicht immer erwünscht, besonders
wenn Sie die doc, ports
oder www Verzeichnisbäume
synchronisieren. Die wenigsten Leute beherrschen vier oder fünf
Sprachen und benötigen Dateien mit speziellen Anpassungen
für eine Sprache. Wenn Sie die Ports-Sammlung
synchronisieren, können Sie anstelle von
ports-all einzelne Ports, wie
ports-astrology oder
ports-biology angeben. Die
doc und www
Verzeichnisbäume verfügen aber nicht über
Sammlungen für spezielle Sprachen. In diesem Fall
müssen Sie eines der vielen eleganten Merkmale von
CVSup benutzen: Die
refuse Datei.Mit einer refuse Datei können Sie
bestimmte Dateien einer Sammlung von der Übertragung
ausschließen. Der Ort der refuse ist
base/sup/refuse,
wobei base in Ihrem
supfile festgelegt wurde.
Wir verwenden das Verzeichnis
/var/db, der Ort der
refuse Datei ist daher
/var/db/sup/refuse.Das Format der refuse Datei ist einfach:
Sie enthält eine Liste der Dateien und Verzeichnisse, die Sie
nicht herunterladen wollen. Wenn Sie zum Beispiel die
Dokumentation nicht in anderen Sprachen als Englisch
lesen wollen, könnte Ihre
refuse-Datei wie folgt aussehen:doc/bn_*
doc/da_*
doc/de_*
doc/el_*
doc/es_*
doc/fr_*
doc/it_*
doc/ja_*
doc/nl_*
doc/no_*
doc/pl_*
doc/pt_*
doc/ru_*
doc/sr_*
doc/tr_*
doc/zh_*Die Aufzählung setzt sich für andere Sprachen fort.
Eine vollständige Liste finden Sie im
FreeBSD
CVS Repository.Die refuse Datei spart Anwendern von
CVSup, die über eine langsame
Internetanbindung verfügen oder deren Internetverbindung
zeitlich abgerechnet wird, wertvolle Zeit, da sie Dateien, die sie
nicht benötigen, nicht mehr herunterladen müssen.
Weitere Informationen zu refuse Dateien und
anderen Eigenschaften von CVSup
entnehmen Sie bitte der Manualpage.Ausführen von CVSupWir können nun eine Aktualisierung mit der folgenden
Kommandozeile starten:&prompt.root; cvsup supfilesupfile gibt
dabei das eben erstelle supfile an. Wenn Sie
X11 benutzen, wird
cvsup ein GUI starten.
Drücken Sie go und schauen Sie
zu.Das Beispiel aktualisiert die Dateien im Verzeichnisbaum
/usr/src. Sie müssen
cvsup als root starten,
damit Sie die nötigen Rechte haben, die Dateien zu
aktualisieren. Sie sind vielleicht ein bisschen nervös
weil Sie das Programm zum ersten Mal anwenden und möchten
zuerst einmal einen Testlauf durchführen. Legen Sie dazu ein
temporäres Verzeichnis an und übergeben es auf der
Kommandozeile von cvsup:&prompt.root; mkdir /var/tmp/dest
&prompt.root; cvsup supfile /var/tmp/destAktualisierungen werden dann nur in dem angegebenen Verzeichnis
vorgenommen. CVSup untersucht die
Dateien in /usr/src, wird aber keine dieser
Dateien verändern. Die veränderten Dateien finden Sie
stattdessen in /var/tmp/dest/usr/src. Die
Statusdateien von CVSup werden ebenfalls
nicht geändert, sondern in dem angegebenen Verzeichnis
abgelegt. Wenn Sie Leseberechtigung in
/usr/src haben, brauchen Sie das Programm
noch nicht einmal unter root laufen zu
lassen.Wenn Sie X11 nicht benutzen wollen
oder keine GUIs mögen, sollten Sie
cvsup wie folgt aufrufen:&prompt.root; cvsup -g -L 2 supfile verhindert den Start des
GUIs. Wenn Sie kein
X11 laufen haben, passiert das
automatisch, ansonsten müssen Sie diesen Schalter
angeben.Mit gibt CVSup
Einzelheiten zu jeder Aktualisierung aus. Die Wortfülle der
Meldungen können Sie von bis
einstellen. In der Voreinstellung
werden nur Fehlermeldungen ausgegeben.Eine Zusammenfassung der Optionen von
CVSup erhalten Sie mit
cvsup -H. Genauere Informationen finden Sie in
der Manualpage von CVSup.Wenn Sie mit dem Ablauf der Aktualisierung zufrieden sind,
können Sie CVSup
regelmäßig aus &man.cron.8; ausführen. In diesem
Fall sollten Sie natürlich nicht das GUI
benutzen.CVSup SammlungenDie CVSup Sammlungen sind
hierarchisch organisiert. Es gibt wenige große Sammlungen,
die in kleinere Teilsammlungen unterteilt sind. Wenn Sie eine
große Sammlung beziehen, entspricht das dem Beziehen aller
Teilsammlungen. Der Hierarchie der Sammlung wird in der folgenden
Aufzählung durch Einrückungen dargestellt.Die am häufigsten benutzen Sammlungen sind
src-all und ports-all. Die
anderen Sammlungen werden von wenigen Leuten zu speziellen Zwecken
benutzt und es kann sein, dass diese nicht auf allen Spiegeln
zur Verfügung stehen.cvs-all release=cvsDas FreeBSD-Haupt-Repository einschließlich der
Kryptographie-Module.distrib release=cvsDateien, die zum Verteilen und Spiegeln von FreeBSD
benötigt werden.doc-all release=cvsQuellen des FreeBSD-Handbuchs und weiterer
Dokumentation. Diese Sammlung enthält nicht die
FreeBSD-Webseite.ports-all release=cvsDie FreeBSD-Ports-Sammlung.Wenn Sie nicht die gesamte Ports-Sammlung
(ports-all) aktualisieren wollen,
sondern nur eine der nachstehend aufgeführten
Teilsammlungen, aktualisieren Sie
immer die Teilsammlung
ports-base. Diese Teilsammlung
enthält das Bausystem der Ports. Immer wenn
ports-base geändert wird,
ist es so gut wie sicher, dass diese Änderung
auch tatsächlich von einem Port benutzt wird.
Der Bau eines Ports, der auf Änderungen
im Bausystem angewiesen wird, wird fehlschlagen,
wenn das Bausystem noch auf einem alten Stand ist.
Aktualisieren Sie vor allen Dingen
ports-base, wenn Sie bei
einem Bau merkwürdige Fehlermeldungen
erhalten und kein aktuelles Bausystem benutzen.Wenn Sie die Datei
ports/INDEX selbst
erzeugen, brauchen Sie unbedingt die
Sammlung ports-all (den
ganzen Ports-Baum). Es ist nicht möglich,
ports/INDEX nur mit
einem Teilbaum zu erstellen. Lesen Sie dazu
bitte die FAQ.ports-accessibility
release=cvsWerkzeuge für behinderte Benutzer.ports-arabic
release=cvsArabische Sprachunterstützung.ports-archivers
release=cvsWerkzeuge zum Archivieren.ports-astro
release=cvsAstronomie-Programme.ports-audio
release=cvsAudio-Programme.ports-base
release=cvsDas Bausystem der Ports-Sammlung.
Dazu gehören verschiedene Dateien in den
Unterverzeichnissen Mk/
und Tools/ von
/usr/ports.Aktualisieren Sie diese Teilsammlung
jedes Mal, wenn Sie
einen Teil der Ports-Sammlung aktualisieren.
Lesen Sie dazu auch den obigen
Hinweis zur Ports-Sammlung.ports-benchmarks
release=cvsBenchmarks.ports-biology
release=cvsBiologie.ports-cad
release=cvsComputer Aided Design Werkzeuge.ports-chinese
release=cvsChinesische Sprachunterstützung.ports-comms
release=cvsProgramme zur Datenkommunikation.ports-converters
release=cvsZeichensatz Konvertierer.ports-databases
release=cvsDatenbanken.ports-deskutils
release=cvsSachen, die sich vor dem Computer-Zeitalter
auf dem Schreibtisch befanden.ports-devel
release=cvsWerkzeuge für Entwickler.ports-dns
release=cvsSoftware für DNS.ports-editors
release=cvsEditoren.ports-emulators
release=cvsProgramme, die andere Betriebssysteme
emulieren.ports-finance
release=cvsFinanz-Anwendungen.ports-ftp
release=cvsWerkzeuge für FTP Clients und Server.ports-games
release=cvsSpiele.ports-german
release=cvsDeutsche Sprachunterstützung.ports-graphics
release=cvsGraphik-Programme.ports-hebrew
release=cvsHebräische Sprachunterstützung.ports-hungarian
release=cvsUngarische Sprachunterstützung.ports-irc
release=cvsInternet Relay Chat Werkzeuge.ports-japanese
release=cvsJapanische Sprachunterstützung.ports-java
release=cvs&java; Werkzeuge.ports-korean
release=cvsKoreanische Sprachunterstützung.ports-lang
release=cvsProgrammiersprachen.ports-mail
release=cvsE-Mail Programme.ports-math
release=cvsProgramme zur numerischen Mathematik.ports-mbone
release=cvsMBone Anwendungen.ports-misc
release=cvsVerschiedene Werkzeuge.ports-multimedia
release=cvsMultimedia-Anwendungen.ports-net
release=cvsNetzwerk-Programme.ports-net-mgmt
release=cvsSoftware zum Verwalten von Netzwerken.ports-news
release=cvsUSENET News Werkzeuge.ports-palm
release=cvsProgramme für den
Palm.ports-polish
release=cvsPolnische Sprachunterstützung.ports-portuguese
release=cvsPortugiesische Sprachunterstützung.ports-print
release=cvsDruckprogramme.ports-russian
release=cvsRussische Sprachunterstützung.ports-science
release=cvsWissenschaft.ports-security
release=cvsWerkzeuge zum Thema Sicherheit.ports-shells
release=cvsKommandozeilen-Shells.ports-sysutils
release=cvsSystem-Werkzeuge.ports-textproc
release=cvsProgramme zur Textverarbeitung (ohne Desktop
Publishing).ports-ukrainian
release=cvsUkrainische Sprachunterstützung.ports-vietnamese
release=cvsVietnamesische
Sprachunterstützung.ports-www
release=cvsSoftware rund um das World Wide Web.ports-x11
release=cvsX-Window Programme.ports-x11-clocks
release=cvsX11-Uhren.ports-x11-fm
release=cvsX11-Dateiverwalter.ports-x11-fonts
release=cvsX11-Zeichensätze und Werkzeuge dazu.ports-x11-toolkits
release=cvsX11-Werkzeuge.ports-x11-servers
release=cvsX11-Server.ports-x11-themes
release=cvsX11-Themes.ports-x11-wm
release=cvsX11-Fensterverwalter.src-all release=cvsDie FreeBSD-Quellen einschließlich der
Kryptographie-Module.src-base
release=cvsVerschiedene Dateien unter
/usr/src.src-bin
release=cvsBenutzer-Werkzeuge die im Einzelbenutzermodus
gebraucht werden
(/usr/src/bin).src-contrib
release=cvsWerkzeuge und Bibliotheken, die nicht aus dem
FreeBSD-Projekt stammen und wenig verändert
übernommen werden.
(/usr/src/contrib).src-crypto release=cvsKryptographische Werkzeuge und Bibliotheken,
die nicht aus dem FreeBSD-Projekt stammen und
wenig verändert übernommen werden.
(/usr/src/crypto).src-eBones release=cvsKerberos und DES
(/usr/src/eBones). Wird
in aktuellen Releases von FreeBSD nicht
benutzt.src-etc
release=cvsKonfigurationsdateien des Systems
(/usr/src/etc).src-games
release=cvsSpiele
(/usr/src/games).src-gnu
release=cvsWerkzeuge, die unter der GNU Public License
stehen (/usr/src/gnu).src-include
release=cvsHeader Dateien
(/usr/src/include).src-kerberos5
release=cvsKerberos5
(/usr/src/kerberos5).src-kerberosIV
release=cvsKerberosIV
(/usr/src/kerberosIV).src-lib
release=cvsBibliotheken
(/usr/src/lib).src-libexec
release=cvsSystemprogramme, die von anderen Programmen
ausgeführt werden
(/usr/src/libexec).src-release
release=cvsDateien, die zum Erstellen eines FreeBSD
Releases notwendig sind
(/usr/src/release).src-sbin release=cvsWerkzeuge für den Einzelbenutzermodus
(/usr/src/sbin).src-secure
release=cvsKryptographische Bibliotheken und Befehle
(/usr/src/secure).src-share
release=cvsDateien, die von mehreren Systemen
gemeinsam benutzt werden können
(/usr/src/share).src-sys
release=cvsDer Kernel
(/usr/src/sys).src-sys-crypto
release=cvsKryptographie Quellen des Kernels
(/usr/src/sys/crypto).src-tools
release=cvsVerschiedene Werkzeuge zur Pflege von FreeBSD
(/usr/src/tools).src-usrbin
release=cvsBenutzer-Werkzeuge
(/usr/src/usr.bin).src-usrsbin
release=cvsSystem-Werkzeuge
(/usr/src/usr.sbin).www release=cvsDie Quellen der FreeBSD-WWW-Seite.distrib release=selfDie Konfigurationsdateien des
CVSup Servers. Diese werden von
den CVSup benutzt.gnats release=currentDie GNATS Datenbank, in der Problemberichte verwaltet
werden.mail-archive release=currentDas Archiv der FreeBSD-Mailinglisten.www release=currentDie formatierten Dateien der FreeBSD-WWW-Seite (nicht die
Quellen). Diese werden von den WWW-Spiegeln benutzt.Weiterführende InformationenDie CVSup FAQ und weitere
Informationen über CVSup finden Sie
auf The
CVSup Home Page.FreeBSD spezifische Diskussionen über
CVSup finden auf der Mailingliste
&a.hackers; statt. Dort und auf der Liste &a.announce; werden neue
Versionen von CVSup
angekündigt.Fragen und Problemberichte sollten an den Autor des Programms
cvsup-bugs@polstra.com weitergeleitet werden.CVSup-ServerDie folgende Aufzählung enthält
CVSup Server für FreeBSD:
&chap.mirrors.cvsup.inc;
CVS-TagsWenn Sie Quellen mit CVS oder
CVSup erhalten oder aktualisieren wollen,
müssen Sie ein Tag angeben. Ein Tag kann einen bestimmten
&os;-Zweig oder einen bestimmten Zeitpunkt
(Release-Tag) bestimmen.Tags für ZweigeMit Ausnahme von HEAD (das immer
ein gültiges Tag ist), können die folgenden
Tags nur im src/-Quellbaum verwendet
werden. Die Quellbäume ports/,
doc/ und www/
sind nicht verzweigt.HEADSymbolischer Name für den Hauptzweig, auch
&os.current; genannt. Dies ist die Vorgabe, wenn keine
Revision angegeben wird.In CVSup wird dieses Tag mit
einem . (Punkt) bezeichnet.In CVS ist das die Vorgabe,
wenn Sie kein Tag oder eine Revision angeben. Außer
Sie wollen einen -STABLE Rechner auf -CURRENT aktualisieren,
ist es nicht ratsam, die -CURRENT
Quellen auf einem -STABLE Rechner einzuspielen.RELENG_6Der Entwicklungszweig für FreeBSD-6.X, auch als
FreeBSD 6-STABLE bekannt.RELENG_5Der &os; 5.X Entwicklungszweig, der
auch &os; 5-STABLE genannt wird.RELENG_5_4Der Zweig, auf dem sicherheitsrelevante oder kritische
Fehlerbehebungen für FreeBSD 5.4
durchgeführt werden.RELENG_5_3Der Zweig, auf dem sicherheitsrelevante oder kritische
Fehlerbehebungen für FreeBSD 5.3
durchgeführt werden.RELENG_5_2Der Zweig, auf dem sicherheitsrelevante oder kritische
Fehlerbehebungen für FreeBSD 5.2 und
&os; 5.2.1 durchgeführt werden.RELENG_5_1Der Zweig, auf dem sicherheitsrelevante oder kritische
Fehlerbehebungen für FreeBSD 5.1 durchgeführt
werden.RELENG_5_0Der Zweig, auf dem sicherheitsrelevante oder kritische
Fehlerbehebungen für FreeBSD 5.0 durchgeführt
werden.RELENG_4Der &os; 4.X Entwicklungszweig,
der auch &os; 4-STABLE genannt wird.RELENG_4_11Der Zweig, auf dem sicherheitsrelevante oder kritische
Fehlerbehebungen für FreeBSD 4.11 durchgeführt
werden.RELENG_4_10Der Zweig, auf dem sicherheitsrelevante oder kritische
Fehlerbehebungen für FreeBSD 4.10 durchgeführt
werden.RELENG_4_9Der Zweig, auf dem sicherheitsrelevante oder kritische
Fehlerbehebungen für FreeBSD 4.9 durchgeführt
werden.RELENG_4_8Der Zweig, auf dem sicherheitsrelevante oder kritische
Fehlerbehebungen für FreeBSD 4.8 durchgeführt
werden.RELENG_4_7Der Zweig, auf dem sicherheitsrelevante oder kritische
Fehlerbehebungen für FreeBSD 4.7 durchgeführt
werden.RELENG_4_6Der Zweig, auf dem sicherheitsrelevante oder kritische
Fehlerbehebungen für FreeBSD 4.6 und
FreeBSD 4.6.2 durchgeführt werden.RELENG_4_5Der Zweig, auf dem sicherheitsrelevante oder kritische
Fehlerbehebungen für FreeBSD 4.5 durchgeführt
werden.RELENG_4_4Der Zweig, auf dem sicherheitsrelevante oder kritische
Fehlerbehebungen für FreeBSD 4.4 durchgeführt
werden.RELENG_4_3Der Zweig, auf dem sicherheitsrelevante oder kritische
Fehlerbehebungen für FreeBSD 4.3 durchgeführt
werden.RELENG_3Der FreeBSD-3.X Entwicklungszweig, der auch 3.X-STABLE
genannt wird.RELENG_2_2Der FreeBSD-2.2.X Entwicklungszweig, der auch 2.2-STABLE
genannt wird.Release-TagsDiese Tags geben den Zeitpunkt an, an dem eine bestimme
&os;-Version veröffentlicht wurde. Das Erstellen einer
Release ist in den Dokumenten
Release Engineering
Information und
Release
Process beschrieben. Der
src-Baum benutzt
Tags, deren Namen mit RELENG_ anfangen.
Die Bäume ports
und doc benutzen
Tags, deren Namen mit RELEASE anfangen.
Im Baum www werden
keine Release-Tags verwendet.RELENG_5_4_0_RELEASEFreeBSD 5.4RELENG_4_11_0_RELEASEFreeBSD 4.11RELENG_5_3_0_RELEASEFreeBSD 5.3RELENG_4_10_0_RELEASEFreeBSD 4.10RELENG_5_2_1_RELEASEFreeBSD 5.2.1RELENG_5_2_0_RELEASEFreeBSD 5.2RELENG_4_9_0_RELEASEFreeBSD 4.9RELENG_5_1_0_RELEASEFreeBSD 5.1RELENG_4_8_0_RELEASEFreeBSD 4.8RELENG_5_0_0_RELEASEFreeBSD 5.0RELENG_4_7_0_RELEASEFreeBSD 4.7RELENG_4_6_2_RELEASEFreeBSD 4.6.2RELENG_4_6_1_RELEASEFreeBSD 4.6.1RELENG_4_6_0_RELEASEFreeBSD 4.6RELENG_4_5_0_RELEASEFreeBSD 4.5RELENG_4_4_0_RELEASEFreeBSD 4.4RELENG_4_3_0_RELEASEFreeBSD 4.3RELENG_4_2_0_RELEASEFreeBSD 4.2RELENG_4_1_1_RELEASEFreeBSD 4.1.1RELENG_4_1_0_RELEASEFreeBSD 4.1RELENG_4_0_0_RELEASEFreeBSD 4.0RELENG_3_5_0_RELEASEFreeBSD-3.5RELENG_3_4_0_RELEASEFreeBSD-3.4RELENG_3_3_0_RELEASEFreeBSD-3.3RELENG_3_2_0_RELEASEFreeBSD-3.2RELENG_3_1_0_RELEASEFreeBSD-3.1RELENG_3_0_0_RELEASEFreeBSD-3.0RELENG_2_2_8_RELEASEFreeBSD-2.2.8RELENG_2_2_7_RELEASEFreeBSD-2.2.7RELENG_2_2_6_RELEASEFreeBSD-2.2.6RELENG_2_2_5_RELEASEFreeBSD-2.2.5RELENG_2_2_2_RELEASEFreeBSD-2.2.2RELENG_2_2_1_RELEASEFreeBSD-2.2.1RELENG_2_2_0_RELEASEFreeBSD-2.2.0AFS-ServerDie folgende Aufzählung enthält AFS Server für
FreeBSD:SchwedenDie Dateien sind unter dem Pfad
/afs/stacken.kth.se/ftp/pub/FreeBSD/
erreichbar.stacken.kth.se # Stacken Computer Club, KTH, Sweden
130.237.234.43 #hot.stacken.kth.se
130.237.237.230 #fishburger.stacken.kth.se
130.237.234.3 #milko.stacken.kth.seBetreuer ftp@stacken.kth.sersync-Serverrsync wird ähnlich wie
&man.rcp.1; verwendet, besitzt aber mehr Optionen und
verwendet das rsync remote-update Protokoll, das nur
geänderte Dateien überträgt und damit viel schneller
als ein normaler Kopiervorgang ist. rsync
ist sehr nützlich, wenn Sie einen FreeBSD-FTP-Spiegel oder einen
CVS-Spiegel betreiben. Das Programm ist für viele
Betriebssysteme erhältlich, mit FreeBSD können Sie den
Port net/rsync oder das fertige
Paket benutzen. Die folgenden Server stellen FreeBSD über das
rsync Protokoll zur Verfügung:Deutschlandrsync://grappa.unix-ag.uni-kl.de/Verfügbare Sammlungen:freebsd-cvs: Das vollständige
CVS-Repository von &os;.Neben anderen Repositories spiegelt diese Maschine auch die
Repositories der NetBSD- und OpenBSD-Projekte.Großbritannienrsync://rsync.mirror.ac.uk/Verfügbare Sammlungen:ftp.FreeBSD.org: Kompletter Spiegel des
FreeBSD-FTP-Servers.Niederlandersync://ftp.nl.FreeBSD.org/Verfügbare Sammlungen:vol/4/freebsd-core: Kompletter Spiegel des
FreeBSD-FTP-Servers.Tschechische Republikrsync://ftp.cz.FreeBSD.org/Verfügbare Sammlungen:ftp: Unvollständiger Spiegel des
FreeBSD-FTP-Servers.FreeBSD: Vollständiger Spiegel des
FreeBSD-FTP-Servers.USArsync://ftp-master.FreeBSD.org/Dieser Server darf nur von primären Spiegeln benutzt
werden.Verfügbare Sammlungen:FreeBSD: Das Hauptarchiv des FreeBSD
FTP Servers.acl: Die primäre ACL-Liste.rsync://ftp13.FreeBSD.org/Verfügbare Sammlungen:FreeBSD: Kompletter Spiegel des
FreeBSD-FTP-Servers.
diff --git a/de_DE.ISO8859-1/books/handbook/multimedia/chapter.sgml b/de_DE.ISO8859-1/books/handbook/multimedia/chapter.sgml
index f0971967b5..6895ce73c5 100644
--- a/de_DE.ISO8859-1/books/handbook/multimedia/chapter.sgml
+++ b/de_DE.ISO8859-1/books/handbook/multimedia/chapter.sgml
@@ -1,2040 +1,2040 @@
RossLippertÜberarbeitet von MultimediaÜbersichtFreeBSD unterstützt viele unterschiedliche Soundkarten,
die Ihnen den Genuss von Highfidelity-Klängen auf Ihrem
Computer ermöglichen. Dazu gehört unter anderem die
Möglichkeit, Tonquellen in den Formaten MPEG Audio Layer 3
(MP3), WAV, Ogg Vorbis und vielen weiteren Formaten aufzunehmen
und wiederzugeben. Darüber hinaus enthält die FreeBSD
Ports-Sammlung Anwendungen, die Ihnen das Bearbeiten Ihrer
aufgenommenen Tonspuren, das Hinzufügen von Klangeffekten
und die Kontrolle der angeschlossenen MIDI-Geräte
erlauben.Wenn Sie etwas Zeit investieren, können Sie
mit &os; auch Videos und DVDs abspielen. Im Vergleich
zu Audio-Anwendungen gibt es weniger Anwendungen zum
Kodieren, Konvertieren und Abspielen von Video-Formaten.
Es gab, als dieses Kapitel geschrieben wurde, keine
Anwendung, die einzelne Video-Formate ähnlich wie
audio/sox konvertieren
konnte. Allerdings ändert sich die Software in
diesem Umfeld sehr schnell.In diesem Kapitel wird das Einrichten von Soundkarten
besprochen. beschreibt die Installation
und Konfiguration von X11 und das Einrichten von Videokarten.
Hinweise zur Verbesserung der Wiedergabe finden sich
in diesem Kapitel.Dieses Kapitel behandelt die folgenden Punkte:Die Konfiguration des Systems damit Ihre
Soundkarte erkannt wird.Wie Sie mit Beispielanwendungen die
Funktion einer Soundkarte prüfen.Wie Sie Fehler in den Einstellungen von
Soundkarten finden.Wie Sie MP3s und andere Audio-Formate wiedergeben
und erzeugen.Die Video-Unterstützung des X-Servers.Gute Anwendungen, die Videos abspielen und
kodieren.Die Wiedergabe von DVDs, .mpg-
und .avi-Dateien.Wie Sie CDs und DVDs in Dateien rippen.Die Konfiguration von TV-Karten.Das Einrichten von Scannern.Bevor Sie dieses Kapitel lesen, sollten Sie:Wissen, wie Sie einen neuen Kernel konfigurieren
und installieren ().Der Versuch eine Audio-CD mit &man.mount.8;
einzuhängen erzeugt mindestens einen Fehler;
schlimmstenfalls kann es zu einer Kernel-Panic
kommen. Die Medien besitzen eine andere Kodierung
als normale ISO-Dateisysteme.MosesMooreVon MarcFonvieilleAktualisiert für &os; 5.X von BenediktKöhlerÜbersetzt von UwePierauSoundkarten einrichtenDen Soundtreiber einrichtenPCIISASoundkartenZunächst sollten Sie in Erfahrung bringen,
welches Soundkartenmodell Sie besitzen, welchen Chip
die Karte benutzt und ob es sich um eine PCI- oder
ISA-Karte handelt. &os; unterstützt eine Reihe
von PCI- als auch von ISA-Karten. Die
Hardware-Notes
zählen alle unterstützten Karten und deren
Treiber auf.KernelKonfigurationUm Ihre Soundkarte benutzen zu können, müssen Sie
den richtigen Gerätetreiber laden. Sie haben zwei
Möglichkeiten, den Treiber zu laden: Am einfachsten
ist es, das Modul mit &man.kldload.8; zu laden. Sie
können dazu die Kommandozeile verwenden:&prompt.root; kldload snd_emu10k1Alternativ können Sie auch einen Eintrag
in der Datei /boot/loader.conf
erstellen:snd_emu10k1_load="YES"Beide Beispiele gelten für eine Creative &soundblaster;
Live! Soundkarte. Weitere ladbare Soundmodule sind in
der Datei /boot/defaults/loader.conf
aufgeführt. Wenn Sie nicht sicher sind, welchen
Gerätetreiber Sie laden müssen, laden Sie den
Treiber snd_driver:&prompt.root; kldload snd_driverDer Treiber snd_driver ist ein
Meta-Treiber, der alle gebräuchlichen Treiber lädt
und die Suche nach dem richtigen Treiber vereinfacht.
Weiterhin können alle Treiber über
/boot/loader.conf geladen werden.Wollen Sie feststellen, welcher Treiber für Ihre
Soundkarte vom Metatreiber snd_driver
geladen wurde, sollten Sie sich mit
cat /dev/sndstat den Inhalt der Datei
/dev/sndstat ansehen.Um unter &os; 4.X alle Treiber zu laden,
müssen Sie das Modul snd
anstelle von snd_driver
verwenden.Alternativ können Sie die Unterstützung
für die Soundkarte direkt in den Kernel einkompilieren.
Diese Methode im nächsten Abschnitt beschrieben.
Weiteres über den Bau eines Kernels
erfahren Sie im Kapitel
Kernelkonfiguration.Soundkarten in der Kernelkonfiguration
einrichtenZuerst müssen Sie den allgemeinen Audio-Treiber
&man.sound.4; in die Kernelkonfiguration aufnehmen.
Fügen Sie dazu die folgende Zeile in die
Kernelkonfigurationsdatei ein:device soundUnter &os; 4.X benutzen Sie bitte stattdessen
die nachstehende Zeile:device pcmAls nächstes müssen Sie den richtigen
Treiber in die Kernelkonfiguration einfügen.
Den Treiber entnehmen Sie bitte der Liste der
unterstützen Soundkarten aus den
Hardware-Notes.
Zum Beispiel wird die Creative &soundblaster; Live!
Soundkarte vom Treiber &man.snd.emu10k1.4;
unterstützt. Für diese Karte verwenden
Sie die nachstehende Zeile:device "snd_emu10k1"Die richtige Syntax für die Zeile lesen
Sie bitte in der Hilfeseite des entsprechenden
Treibers nach. Die Syntax finden Sie ebenfalls
in der Datei /usr/src/sys/conf/NOTES
(/usr/src/sys/i386/conf/LINT
unter &os; 4.X).Nicht PnP-fähige ISA-Karten benötigen
weiterhin Angaben zu den Karteneinstellungen
(IRQ, I/O-Port). Die Karteneinstellungen tragen
Sie in die Datei /boot/device.hints
ein. Während des Systemstarts liest der
&man.loader.8; diese Datei und reicht die Einstellungen
an den Kernel weiter. Für eine alte
Creative &soundblaster; 16 ISA-Karte, die den
&man.snd.sbc.4; Treiber benutzt, fügen Sie
die folgende Zeile in die Kernelkonfiguration ein:device snd_sbcIn die Datei /boot/device.hints
tragen Sie beispielsweise die folgenden Einstellungen
ein:hint.sbc.0.at="isa"
hint.sbc.0.port="0x220"
hint.sbc.0.irq="5"
hint.sbc.0.drq="1"
hint.sbc.0.flags="0x15"In diesem Beispiel benutzt die Karte den
I/O-Port 0x220 und den
IRQ 5.Die Hilfeseite des jeweiligen Treibers beschreibt
die Syntax der Einträge in der Datei
/boot/device.hints. Unter
&os; 4.X werden diese Einstellungen direkt in
der Kernelkonfigurationsdatei vorgenommen. Für
die oben gezeigte ISA-Karte wird die nachstehende
Zeile in die Kernelkonfiguration eingefügt:device sbc0 at isa? port 0x220 irq 5 drq 1 flags 0x15Das Beispiel verwendet die vorgegebenen Werte.
Falls Ihre Karteneinstellungen andere Werte vorgeben,
müssen Sie die Werte in der Kernelkonfiguration
anpassen. Weiteres entnehmen Sie bitte der Hilfeseite
&man.snd.sbc.4;.Unter &os; 4.X benötigen manche Systeme
mit einer auf der Hauptplatine integrierten Soundkarte
noch die nachstehende Zeile in der
Kernelkonfiguration:options PNPBIOSDie Soundkarte testenNachdem Sie den neuen Kernel gestartet oder das
erforderliche Modul geladen haben, sollte Ihre
Soundkarte in den Systemmeldungen (&man.dmesg.8;)
auftauchen. Zum Beispiel:pcm0: <Intel ICH3 (82801CA)> port 0xdc80-0xdcbf,0xd800-0xd8ff irq 5 at device 31.5 on pci0
pcm0: [GIANT-LOCKED]
pcm0: <Cirrus Logic CS4205 AC97 Codec>Den Status der Karte können Sie über
die Datei /dev/sndstat
prüfen:&prompt.root; cat /dev/sndstat
FreeBSD Audio Driver (newpcm)
Installed devices:
pcm0: <Intel ICH3 (82801CA)> at io 0xd800, 0xdc80 irq 5 bufsz
16384
kld snd_ich (1p/2r/0v channels duplex default)Die Ausgaben können auf Ihrem System anders
aussehen. Wenn das Gerät pcm
nicht erscheint, prüfen Sie bitte Ihre Konfiguration.
Stellen sie sicher, dass Sie den richtigen Treiber
gewählt haben.
beschreibt häufig auftretende Probleme.Wenn alles glatt lief, haben Sie nun eine
funktionierende Soundkarte. Wenn ein CD-ROM
oder DVD-ROM-Laufwerk an Ihrer Soundkarte angeschlossen
ist, können Sie jetzt mit &man.cdcontrol.1; eine
CD abspielen:&prompt.user; cdcontrol -f /dev/acd0 play 1Es gibt viele Anwendungen, wie
audio/workman, die
eine bessere Benutzerschnittstelle besitzen. Um sich
MP3-Audiodateien anzuhören, können Sie
eine Anwendung wie
audio/mpg123 installieren.
Eine schnelle Möglichkeit die Karte zu prüfen,
ist es, Daten an das Gerät /dev/dsp
zu senden:&prompt.user; cat Datei > /dev/dspFür Datei können
Sie eine beliebige Datei verwenden. Wenn Sie einige
Geräusche hören, funktioniert die Soundkarte.Unter &os; 4.X müssen Sie noch
Gerätedateien für die Soundkarte erstellen.
Wenn die Karte als pcm0
erkannt wurde, führen Sie als root
die nachstehenden Befehle aus:&prompt.root; cd /dev
&prompt.root; sh MAKEDEV snd0Wenn auf den vorigen Befehl pcm1
als Ausgabe erschienen ist, dann müssen Sie dieselben
Befehle ausführen, nur dass Sie
snd0 durch
snd1 ersetzen.Der Befehl MAKEDEV erzeugt
mehrere Gerätedateien, die von Anwendungen
benutzt werden.Die Einstellungen des Mixers können Sie
mit dem Kommando &man.mixer.8; verändern.
Weiteres lesen Sie bitte in der Hilfeseite
&man.mixer.8; nach.Häufige ProblemeDevice NodeGerätedateiI/O portIRQDSPFehlerLösungunsupported subdevice XXEin oder mehrere Device Nodes wurden nicht
korrekt angelegt. Wiederholen Sie die oben angegebenen
Schritte.sb_dspwr(XX) timed outDer I/O Port ist nicht korrekt angegeben.bad irq XXDer IRQ ist falsch angegeben. Stellen Sie
sicher, dass der angegebene IRQ mit dem Sound IRQ
übereinstimmt.xxx: gus pcm not attached, out of memoryEs ist nicht genug Speicher verfügbar,
um das Gerät zu betreiben.xxx: can't open /dev/dsp!Überprüfen Sie mit fstat |
grep dsp ob eine andere Anwendung das
Gerät geöffnet hat. Häufige
Störenfriede sind esound
oder die Sound-Unterstützung von
KDE.MunishChopraBeigetragen von Mehrere Tonquellen abspielenOft sollen mehrere Tonquellen gleichzeitig
abgespielt werden, auch wenn
beispielsweise esound oder
artsd das Audiogerät
nicht mit einer anderen Anwendung teilen können.Unter FreeBSD können mit &man.sysctl.8;
virtuelle Tonkanäle
eingerichtet werden. Virtuelle Kanäle mischen
die Tonquellen im Kernel (so können mehr
Kanäle als von der Hardware unterstützt
benutzt werden).Die Anzahl der virtuellen Kanäle können
Sie als Benutzer root wie folgt
einstellen:&prompt.root; sysctl hw.snd.pcm0.vchans=4
&prompt.root; sysctl hw.snd.maxautovchans=4Im Beispiel werden vier virtuelle Kanäle
eingerichtet, eine im Normalfall ausreichende Anzahl.
hw.snd.pcm0.vchans ist die Anzahl
der virtuellen Kanäle des Geräts
pcm0. Die Anzahl kann konfiguriert
werden, sobald das Gerät existiert.
hw.snd.maxautovchans ist die Anzahl der
virtuellen Kanäle, die einem Gerät zugewiesen
werden, wenn es durch &man.kldload.8; eingerichtet
wird. Da das Modul pcm
unabhängig von den Hardware-Treibern geladen werden kann,
gibt hw.snd.maxautovchans die Anzahl
der virtuellen Kanäle an, die später eingerichtete
Geräte erhalten.Sie können die Anzahl der virtuellen Kanäle
nur ändern, wenn das Gerät nicht genutzt wird.
Schließen Sie daher zuerst alle Programme (etwa
Musikabspielprogramme oder Sound-Daemonen), die auf
dieses Gerät zugreifen.Wenn Sie ein System ohne &man.devfs.5; einsetzen,
müssen Anwendungen die Geräte
/dev/dsp0.x
verwenden. Wenn hw.snd.pcm.0.vchans wie
oben auf 4 gesetzt wurde, läuft
x von 0
bis 4. Auf Systemen mit
&man.devfs.5; werden die Geräte automatisch
zugeteilt.JosefEl-RayesBeigetragen von Den Mixer einstellenDie Voreinstellungen des Mixers sind im Treiber
&man.pcm.4; fest kodiert. Es gibt zwar viele Anwendungen
und Dienste, die den Mixer einstellen können
und die eingestellten Werte bei jedem Start wieder
setzen, am einfachsten ist es allerdings, die Werte
direkt im Treiber einzustellen. Der Mixer kann in
der Datei /boot/device.hints
eingestellt werden:hint.pcm.0.vol="100"Die Zeile setzt die Lautstärke des Mixers
auf den Wert 100, sobald das Modul
&man.pcm.4; geladen wird.Diese Einstellungen funktionieren erst ab
&os; 5.3.ChernLeeEin Beitrag von BenediktKöhlerÜbersetzt von MP3-AudioMP3 (MPEG Layer 3 Audio) ermöglicht eine
Klangwiedergabe in CD-ähnlicher Qualität, was Sie sich
auf Ihrem FreeBSD-Rechner nicht entgehen lassen sollten.MP3-PlayerXMMS (X Multimedia System) ist
bei weitem der beliebteste MP3-Player für X11.
WinAmp-Skins können auch mit
XMMS genutzt werden, da die
Benutzerschnittstelle fast identisch mit der von Nullsofts
WinAmp ist. Daneben
unterstützt XMMS auch eigene
Plugins.XMMS kann als
multimedia/xmms Port oder Package installiert
werden.Die Benutzerschnittstelle von
XMMS ist leicht zu erlernen und
enthält eine Playlist, einen graphischen Equalizer und
vieles mehr. Diejenigen, die mit WinAmp vertraut sind, werden
XMMS sehr leicht zu benutzen
finden.Der Port audio/mpg123 ist
ein alternativer, kommandozeilenorientierter MP3-Player.mpg123 kann ausgeführt
werden, indem man das zu benutzende Sound Device und die
abzuspielende MP3-Datei auf der Kommandozeile wie unten
angibt:&prompt.root; mpg123 -a /dev/dsp1.0 Foobar-GreatestHits.mp3
High Performance MPEG 1.0/2.0/2.5 Audio Player for Layer 1, 2 and 3.
Version 0.59r (1999/Jun/15). Written and copyrights by Michael Hipp.
Uses code from various people. See 'README' for more!
THIS SOFTWARE COMES WITH ABSOLUTELY NO WARRANTY! USE AT YOUR OWN RISK!
Playing MPEG stream from Foobar-GreatestHits.mp3 ...
MPEG 1.0 layer III, 128 kbit/s, 44100 Hz joint-stereo
/dev/dsp1.0 sollten Sie dabei mit dem
dsp-Device Ihres Systems ersetzen.CD-Audio Tracks rippenBevor man eine ganze CD oder einen CD-Track in das
MP3-Format umwandeln kann, müssen die Audiodaten von der
CD auf die Festplatte gerippt werden. Dabei werden die CDDA
(CD Digital Audio) Rohdaten in WAV-Dateien kopiert.Die Anwendung cdda2wav die im
sysutils/cdrtools Paket enthalten
ist, kann zum Rippen der Audiodaten und anderen Informationen von CDs
genutzt werden.Wenn die Audio CD in dem Laufwerk liegt, können Sie
mit folgendem Befehl (als root) eine
ganze CD in einzelne WAV-Dateien (eine Datei für jeden
Track) rippen:&prompt.root; cdda2wav -D 0,1,0 -Bcdda2wav unterstützt
auch ATAPI (IDE) CD-ROM-Laufwerke. Um von einem IDE-Laufwerk
zu rippen, übergeben Sie auf der Kommandozeile
statt der SCSI-IDs den Gerätenamen. Das folgende
Kommando rippt den 7. Track:&prompt.root; cdda2wav -D /dev/acd0a -t 7Der Schalter bezieht sich auf
das SCSI Device 0,1,0, das sich aus
dem Ergebnis des Befehls cdrecord -scanbus
ergibt.Um einzelne Tracks zu rippen, benutzen Sie den
Schalter wie folgt:&prompt.root; cdda2wav -D 0,1,0 -t 7Dieses Beispiel rippt den siebten Track der Audio
CD-ROM. Um mehrere Tracks zu rippen, zum Beispiel die Tracks
eins bis sieben, können Sie wie folgt einen Bereich
angeben:&prompt.root; cdda2wav -D 0,1,0 -t 1+7Mit &man.dd.1; können Sie ebenfalls Audio-Stücke
von ATAPI-Laufwerken kopieren. Dies wird in
erläutert.MP3-Dateien kodierenGegenwärtig ist Lame der
meistbenutzte MP3-Encoder. Lame
finden Sie unter audio/lame im
Ports-Verzeichnis.Benutzen Sie die WAV-Dateien, die sie von CD gerippt
haben, und wandeln sie mit dem folgenden Befehl die Datei
audio01.wav in
audio01.mp3 um:&prompt.root; lame -h -b 128 \
--tt "Foo Liedtitel" \
--ta "FooBar Künstler" \
--tl "FooBar Album" \
--ty "2001" \
--tc "Geripped und kodiert von Foo" \
--tg "Musikrichtung" \
audio01.wav audio01.mp3128 kbits ist die gewöhnliche MP3-Bitrate. Viele
bevorzugen mit 160 oder 192 kbits eine höhere Qualität.
Je höher die Bitrate ist, desto mehr Speicherplatz
benötigt die resultierende MP3-Datei, allerdings wird die
Qualität dadurch auch besser. Der Schalter
verwendet den higher quality but a
little slower (höhere Qualität, aber etwas
langsamer) Modus. Die Schalter, die mit
beginnen, sind ID3-Tags, die in der Regel
Informationen über das Lied enthalten und in die
MP3-Datei eingebettet sind. Weitere Optionen können in
der Manualpage von Lame nachgelesen
werden.MP3-Dateien dekodierenUm aus MP3-Dateien eine Audio CD zu erstellen, müssen
diese in ein nicht komprimiertes WAV-Format umgewandelt
werden. Sowohl XMMS als auch
mpg123 unterstützen die Ausgabe
der MP3-Dateien in unkomprimierte Dateiformate.Dekodieren mit XMMS:Starten Sie XMMS.Klicken Sie mit der rechten Maustaste, um das
XMMS-Menu zu öffnen.Wählen Sie Preference im
Untermenü Options.Ändern Sie das Output-Plugin in Disk
Writer Plugin.Drücken Sie Configure.Geben Sie ein Verzeichnis ein (oder wählen Sie
browse), in das Sie die unkomprimierte Datei schreiben
wollen.Laden Sie die MP3-Datei wie gewohnt in
XMMS mit einer Lautstärke
von 100% und einem abgeschalteten EQ.Drücken Sie Play und es wird
so aussehen, als spiele XMMS
die MP3-Datei ab, aber keine Musik ist zu hören. Der
Player überspielt die MP3-Datei in eine Datei.Vergessen Sie nicht, das Output-Plugin wieder in den
Ausgangszustand zurückzusetzen um wieder MP3-Dateien
anhören zu können.Mit mpg123 nach stdout schreiben:Geben Sie mpg123 -s
audio01.mp3 > audio01.pcm
ein.XMMS schreibt die Datei im
WAV-Format aus während mpg123 die
MP3-Datei in rohe PCM-Audiodaten umwandelt.
cdrecord kann mit beiden Formaten
Audio-CDs erstellen, &man.burncd.8; kann nur rohe
PCM-Audiodaten verarbeiten. Der Dateikopf von WAV-Dateien
erzeugt am Anfang des Stücks ein Knacken. Sie können
den Dateikopf mit dem Werkzeug SoX,
das sich als Paket oder aus dem Port
audio/sox installieren
lässt, entfernen:&prompt.user; sox -t wav -r 44100 -s -w -c 2 track.wav track.rawLesen Sie in diesem Handbuch,
um mehr Informationen zur Benutzung von CD-Brennern mit FreeBSD zu
erhalten.RossLippertBeigetragen von Videos wiedergebenDie Wiedergabe von Videos ist ein neues, sich schnell
entwickelndes, Anwendungsgebiet. Seien Sie geduldig, es
wird nicht alles so glatt laufen, wie bei den
Audio-Anwendungen.Bevor Sie beginnen, sollten Sie das Modell Ihrer
Videokarte und den benutzten Chip kennen. Obwohl
&xorg; und
&xfree86; viele Vidiokarten
unterstützt, können nur einige Karten Videos
schnell genug wiedergeben. Eine Liste der Erweiterungen,
die der X-Server für eine Videokarte unterstützt,
erhalten Sie unter laufendem X11 mit dem Befehl
&man.xdpyinfo.1;.Halten Sie eine kurze MPEG-Datei bereit, mit der
Sie Wiedergabeprogramme und deren Optionen testen
können. Da einige DVD-Spieler in der Voreinstellung
das DVD-Gerät mit /dev/dvd ansprechen
oder diesen Namen fest einkodiert haben, wollen Sie
vielleicht symbolische Links auf die richtigen
Geräte anlegen:&prompt.root; ln -sf /dev/acd0c /dev/dvd
&prompt.root; ln -sf /dev/racd0c /dev/rdvdAuf FreeBSD 5.X mit &man.devfs.5; werden
andere symbolische Links benötigt:&prompt.root; ln -sf /dev/acd0 /dev/dvd
&prompt.root; ln -sf /dev/acd0 /dev/rdvdWegen &man.devfs.5; gehen gesondert angelegte Links
wie diese bei einem Neustart des Systems verloren.
Damit die symbolischen Links automatisch beim Neustart
des Systems angelegt werden, fügen Sie die
folgenden Zeilen in /etc/devfs.conf
ein:link acd0 dvd
link acd0 rdvdZum Entschlüsseln von DVDs müssen bestimmte
DVD-ROM-Funktionen aufgerufen werden und schreibender
Zugriff auf das DVD-Gerät erlaubt sein.KerneloptionenCPU_ENABLE_SSEKerneloptionenUSER_LDTEinige Ports sind auf die nachstehenden Kerneloptionen
angewiesen. Bevor Sie einen dieser Ports bauen, fügen
Sie die Kerneloptionen zu Ihrer Kernelkonfiguration hinzu.
Bauen und installieren Sie dann einen neuen Kernel und
starten Sie das System neu.option CPU_ENABLE_SSE
option USER_LDTUnter &os; 5.X existiert
option USER_LDT nicht.X11 benutzt Shared-Memory und Sie sollten die
nachstehenden &man.sysctl.8;-Variablen auf die
gezeigten Werte erhöhen:kern.ipc.shmmax=67108864
kern.ipc.shmall=32768Video-SchnittstellenXVideoSDLDGAEs gibt einige Möglichkeiten, Videos unter
X11 abzuspielen. Welche Möglichkeit funktioniert,
hängt stark von der verwendeten Hardware ab.
Ebenso hängt die erzielte Qualität von der
Hardware ab. Die Videowiedergabe unter X11 ist ein
aktuelles Thema, sodass jede neue Version von
&xorg; oder von
&xfree86; wahrscheinlich
erhebliche Verbesserung enthält.Gebräuchliche Video-Schnittstellen sind:X11: normale X11-Ausgabe über Shared-Memory.XVideo: Eine Erweiterung der X11-Schnittstelle,
die Videos in jedem X11-Drawable anzeigen kann.SDL: Simple Directmedia Layer.DGA: Direct Graphics Access.SVGAlib: Eine Schnittstelle zur Grafikausgabe auf
der Konsole.XVideoDie Erweiterung XVideo (auch Xvideo,
Xv oder xv) von &xorg; und
&xfree86; 4.X,
erlaubt die beschleunigte Wiedergabe von Videos in
jedem Drawable. Diese Erweiterung liefert auch auf
weniger leistungsfähigen Systemen
(beispielsweise einem PIII 400 MHz Laptop)
eine gute Wiedergabe.Ob die Erweiterung läuft, entnehmen Sie der
Ausgabe von xvinfo:&prompt.user; xvinfoXVideo wird untertsützt, wenn die Ausgabe wie
folgt aussieht:X-Video Extension version 2.2
screen #0
Adaptor #0: "Savage Streams Engine"
number of ports: 1
port base: 43
operations supported: PutImage
supported visuals:
depth 16, visualID 0x22
depth 16, visualID 0x23
number of attributes: 5
"XV_COLORKEY" (range 0 to 16777215)
client settable attribute
client gettable attribute (current value is 2110)
"XV_BRIGHTNESS" (range -128 to 127)
client settable attribute
client gettable attribute (current value is 0)
"XV_CONTRAST" (range 0 to 255)
client settable attribute
client gettable attribute (current value is 128)
"XV_SATURATION" (range 0 to 255)
client settable attribute
client gettable attribute (current value is 128)
"XV_HUE" (range -180 to 180)
client settable attribute
client gettable attribute (current value is 0)
maximum XvImage size: 1024 x 1024
Number of image formats: 7
id: 0x32595559 (YUY2)
guid: 59555932-0000-0010-8000-00aa00389b71
bits per pixel: 16
number of planes: 1
type: YUV (packed)
id: 0x32315659 (YV12)
guid: 59563132-0000-0010-8000-00aa00389b71
bits per pixel: 12
number of planes: 3
type: YUV (planar)
id: 0x30323449 (I420)
guid: 49343230-0000-0010-8000-00aa00389b71
bits per pixel: 12
number of planes: 3
type: YUV (planar)
id: 0x36315652 (RV16)
guid: 52563135-0000-0000-0000-000000000000
bits per pixel: 16
number of planes: 1
type: RGB (packed)
depth: 0
red, green, blue masks: 0x1f, 0x3e0, 0x7c00
id: 0x35315652 (RV15)
guid: 52563136-0000-0000-0000-000000000000
bits per pixel: 16
number of planes: 1
type: RGB (packed)
depth: 0
red, green, blue masks: 0x1f, 0x7e0, 0xf800
id: 0x31313259 (Y211)
guid: 59323131-0000-0010-8000-00aa00389b71
bits per pixel: 6
number of planes: 3
type: YUV (packed)
id: 0x0
guid: 00000000-0000-0000-0000-000000000000
bits per pixel: 0
number of planes: 0
type: RGB (packed)
depth: 1
red, green, blue masks: 0x0, 0x0, 0x0Einige der aufgeführten Formate (wie YUV2 oder YUV12)
existieren in machen XVideo-Implementierungen nicht.
Dies kann zu Problemen mit einigen Spielern führen.XVideo wird wahrscheinlich von Ihrer Karte
nicht unterstützt, wenn die die Ausgabe wie
folgt aussieht:X-Video Extension version 2.2
screen #0
no adaptors presentWenn die XVideo-Erweiterung auf Ihrer Karte nicht
läuft, wird es nur etwas schwieriger, die
Anforderungen für die Wiedergabe von Videos zu
erfüllen. Abhängig von Ihrer Videokarte
und Ihrem Prozessor können Sie dennoch zufriedenstellende
Ergebnisse erzielen. Sie sollten vielleicht die
weiterführenden Quellen in zu Rate ziehen,
um die Geschwindigkeit Ihres Systems zu steigern.Simple Directmedia LayerDie Simple Directmedia Layer, SDL,
ist eine zwischen µsoft.windows;, BeOS und &unix;
portable Schnittstelle. Mit dieser Schnittstelle
können Anwendungen plattformunabhängig und
effizient Ton und Grafik benutzen. SDL
bietet eine hardwarenahe Schnittstelle, die manchmal
schneller als die X11-Schnittstelle sein kann.SDL finden Sie in den Ports
im Verzeichnis devel/sdl12.Direct Graphics AccessDie X11-Erweiterung
Direct Graphics Access (DGA) erlaubt es
Anwendungen, am X-Server vorbei direkt in den Framebuffer
zu schreiben. Da die Anwendung und der X-Server auf gemeinsame
Speicherbereiche zugreifen, müssen die Anwendungen
unter dem Benutzer root laufen.Die DGA-Erweiterung kann mit &man.dga.1; getestet
werden. Das Kommando dga wechselt,
jedes Mal wenn eine Taste gedrückt wird, die Farben
der Anzeige. Sie können das Programm mit der
Taste q verlassen.Video-AnwendungenVideo-AnwendungenDieser Abschnitt behandelt Anwendungen aus der
- &os;-Ports-Collection, die Videos abspielen. An der
+ &os;-Ports-Sammlung, die Videos abspielen. An der
Videowiedergabe wird derzeit aktiv gearbeitet, sodass
der Funktionsumfang der Anwendungen von dem hier beschriebenen
abweichen kann.Viele unter &os; laufende Videoanwendungen wurden
unter Linux entwickelt und befinden
sich noch im Beta-Status. Der Betrieb dieser Anwendungen
unter &os; stößt vielleicht auf einige der
nachstehenden Probleme:Eine Anwendung kann eine Datei einer anderen
Anwendung nicht abspielen.Eine Anwendung kann eine selbst produzierte
Datei nicht abspielen.Wenn dieselbe Anwendung auf unterschiedlichen
Maschinen gebaut wird, wird ein Video unterschiedlich
wiedergegeben.Ein vergleichsweise einfacher Filter, wie die
Skalierung eines Bildes, führt zu deutlichen
Artefakten in der Darstellung.Eine Anwendung stürzt häufig ab.Die Dokumentation wird bei der Installation des Ports
nicht installiert. Sie befindet sich entweder auf
dem Internet oder im Verzeichnis
work des Ports.Viele Anwendungen sind zudem sehr Linux-lastig.
Probleme entstehen durch die Implementierung von
Standard-Bibliotheken in Linux-Distributionen oder
dadurch, dass die Anwendung bestimmte Linux-Kernelfunktionen
voraussetzt. Diese Probleme werden nicht immer
vom Betreuer eines Ports bemerkt und umgangen.
In der Praxis entstehen dadurch folgende Probleme:Eigenschaften des Prozessors werden über
/proc/cpuinfo ermittelt.Die falsche Anwendung von Threads führt dazu,
dass sich ein Programm aufhängt statt sich
zu beenden.Die Anwendung hängt von anderen Anwendungen
- ab, die sich noch nicht in der &os;-Ports-Collection
+ ab, die sich noch nicht in der &os;-Ports-Sammlung
befinden.Allerdings arbeiten die Anwendungsentwickler bislang mit
den Betreuern der Ports zusammen, sodass zusätzlicher
Portierungsaufwand minimiert wird.MPlayerMPlayer ist ein kürzlich
entstandener und sich stark weiterentwickelnder Video-Spieler.
Das Hauptaugenmerk des MPlayer-Teams
liegt auf Geschwindigkeit und Flexibilität auf
Linux und anderen &unix; Systemen. Das Projekt entstand
weil der Gründer des Teams unzufrieden mit der
Geschwindigkeit bestehender Video-Spieler war. Kritiker
behaupten, dass die Benutzeroberfläche der einfachen
Gestaltung zum Opfer fiel. Wenn Sie sich allerdings erstmal
an die Kommandozeilenoptionen und die Tastensteuerung
gewöhnt haben, funktioniert die Anwendung sehr gut.MPlayer bauenMPlayerbauenMPlayer finden Sie in der
- Ports-Collection unter
+ Ports-Sammlung unter
multimedia/mplayer.
Der Bau von MPlayer
berücksichtigt die vorhandene Harware und erzeugt
ein Programm, das nicht auf ein anderes System übertragbar
ist. Es ist daher wichtig, dass Sie das Programm aus
den Ports bauen und nicht das fertige Paket installieren.
Zusätzlich können Sie auf der Kommandozeile
von make noch einige Optionen angeben,
die im Makefile beschrieben sind
und am die Anfang des Baus ausgegeben werden:&prompt.root; cd /usr/ports/multimedia/mplayer
&prompt.root; make
N - O - T - E
Take a careful look into the Makefile in order
to learn how to tune mplayer towards you personal preferences!
For example,
make WITH_GTK1
builds MPlayer with GTK1-GUI support.
If you want to use the GUI, you can either install
/usr/ports/multimedia/mplayer-skins
or download official skin collections from
http://www.mplayerhq.hu/homepage/dload.htmlFür die meisten Benutzer sind die
voreingestellten Option in Ordnung. Wenn Sie
den XviD-Codec benötigen, müssen
Sie auf der Kommandozeile die Option
WITH_XVID angeben. Das
DVD-Gerät können Sie mit der
Option WITH_DVD_DEVICE
angeben. Wenn Sie die Option nicht angeben,
wird /dev/acd0 benutzt.Als dieser Abschnitt verfasst wurde, baute der
MPlayer-Port die
HTML-Dokumentation sowie die beiden Programme
mplayer und
mencoder. Mit
mencoder können Sie
Videodateien umwandeln.Die HTML-Dokumentation von
MPlayer ist sehr lehrreich.
Wenn Sie in diesem Kapitel Informationen über
Video-Hardware oder Schnittstellen vermissen, ist
die MPlayer-Dokumentation
eine ausgezeichnete Quelle. Wenn Sie Informationen
über die Video-Unterstützung unter &unix;
benötigen, sollten Sie die
MPlayer-Dokumentation
auf jeden Fall lesen.MPlayer benutzenMPlayerbenutzenJeder Benutzer von MPlayer
muss in seinem Heimatverzeichnis das Verzeichnis
.mplayer
anlegen. Dieses Verzeichnis können Sie
wie folgt anlegen:&prompt.user; cd /usr/ports/multimedia/mplayer
&prompt.user; make install-userDie Kommandozeilenoptionen von mplayer
sind in der Hilfeseite aufgeführt. Eine genaue
Beschreibung befindet sich in der HTML-Dokumentation.
In diesem Abschnitt wird nur der normale Gebrauch
von mplayer beschrieben.Um eine Datei, wie
testfile.avi,
unter verschiedenen Video-Schnittstellen abzuspielen,
benutzen Sie die Option :&prompt.user; mplayer -vo xv testfile.avi&prompt.user; mplayer -vo sdl testfile.avi&prompt.user; mplayer -vo x11 testfile.avi&prompt.root; mplayer -vo dga testfile.avi&prompt.root; mplayer -vo 'sdl:dga' testfile.aviEs lohnt sich, alle Option zu testen. Die
erzielte Geschwindigkeit hängt von vielen
Faktoren ab und variiert beträchtlich je nach
eingesetzter Hardware.Wenn Sie eine DVD abspielen wollen, ersetzen Sie
testfile.avi durch
.
N ist die Nummer des
Stücks, das Sie abspielen wollen und
Gerät gibt den
Gerätenamen des DVD-ROMs an. Das nachstehende
Kommando spielt das dritte Stück von
/dev/dvd:&prompt.root; mplayer -vo dga -dvd://3 /dev/dvdDas standardmäßig verwendete
DVD-Laufwerk kann beim Bau des
MPlayer-Ports
mit der Option WITH_DVD_DEVICE
festgelegt werden. Die Voreinstellung verwendet
das Gerät /dev/acd0.
Genaueres finden Sie im Makefile
des Ports.Die Tastenkombinationen zum Abbrechen, Anhalten
und Weiterführen der Wiedergabe entnehmen Sie
bitte der Ausgabe von mplayer -h
oder der Hilfeseite.Weitere nützliche Optionen für die
Wiedergabe sind zur Wiedergabe
im Vollbild-Modus und
zur Steigerung der Geschwindigkeit.Damit die Kommandozeile von mplayer
kurz bleibt, kann ein Benutzer Vorgaben in der Datei
.mplayer/config hinterlegen:vo=xv
fs=yes
zoom=yesSchließlich kann mplayer
noch DVD-Stücke in .vob-Dateien
rippen. Das zweite Stück einer DVD wandeln Sie
wie folgt in eine Datei um:&prompt.root; mplayer -dumpstream -dumpfile out.vob -dvd://2 /dev/dvdDie Ausgabedatei out.vob
wird im MPEG-Format abgespeichert und kann mit
anderen Werkzeugen aus diesem Abschnitt bearbeitet
werden.mencodermencoderSie sollten die HTML-Dokumentation lesen, bevor
Sie mencoder benutzen. Es gibt
zwar eine Hilfeseite, die aber ohne die HTML-Dokumentation
nur eingeschräkt nützlich ist. Es gibt
viele Möglichkeiten die Qualität zu verbessern,
die Bitrate zu verringern und Formate zu konvertieren.
Einige davon haben erhebliche Auswirkungen auf die
Geschwindigkeit der Wiedergabe. Zum Start finden
Sie im Folgenden einige Kommandozeilen. Die erste
kopiert einfach eine Datei:&prompt.user; mencoder input.avi -oac copy -ovc copy -o output.aviFalsche Kombinationen von Kommandozeilenparametern
ergeben eventuell Dateien, die selbst
mplayer nicht mehr abspielen kann.
Wenn Sie in eine Datei rippen, sollten Sie daher auf
jeden Fall die Option von
mplayer verwenden.Die nachstehende Kommandozeile wandelt die Datei
input.avi nach MPEG4 mit MPEG3
für den Ton um (hierfür wird der Ports
audio/lame
benötigt):&prompt.user; mencoder input.avi -oac mp3lame -lameopts br=192 \
-ovc lavc -lavcopts vcodec=mpeg4:vhq -o output.aviDie Ausgabedatei lässt sowohl mit
mplayer als auch
xine abspielen.Wenn Sie input.avi durch
ersetzen und das
Kommando unter root laufen lassen,
können Sie ein DVD-Stück direkt konvertieren.
Da Sie wahrscheinlich beim ersten Mal unzufrieden mit
den Ergebnissen sind, sollten Sie das Stück zuerst
in eine Datei schreiben und anschließend
die Datei weiterverarbeiten.Der Video-Spieler xineDer Video-Spieler xine
ist ein Projekt mit großem Umfang. Das Projekt
will nicht nur ein Programm für alle Video-Anwendungen
bieten, sondern auch eine wiederverwendbare Bibliothek
und ein Programm, das durch Plugins erweiterbar ist.
Das Programm steht als fertiges Paket oder als Port
unter multimedia/xine
zur Verfügung.Der multimedia/xine-Spieler
hat noch ein paar Ecken und Kanten, macht aber insgesamt
einen guten Eindruck. Für einen reibungslosen
Betrieb benötigt xine
entweder eine schnelle CPU oder
die XVideo-Erweiterung. Das GUI
ist etwas schwerfällig.Zurzeit gibt es kein xine-Modul,
das CSS-kodierte DVDs abspielen kann und sich in
- der &os; Ports-Collection befindet.
+ der &os; Ports-Sammlung befindet.
xine ist benutzerfreundlicher
als MPlayer, bietet allerdings
nicht soviele Möglichkeiten. Am schnellsten läuft
xine mit der
XVideo-Erweiterung.In der Voreinstellung startet xine
eine grafische Benutzeroberfläche. Über
Menüs können Sie Dateien öffnen:&prompt.user; xineAlternativ können Sie das Programm auch ohne
GUI aufrufen und Dateien direkt abspielen:&prompt.user; xine -g -p mymovie.aviDie transcode-Werkzeugetranscode ist kein Spieler
sondern eine Sammlung von Werkzeugen, die
.avi- und
.mpg-Dateien umwandeln.
transcode mischt Video-Dateien
und kann kaputte Video-Dateien reparieren. Die
Werkzeuge werden als Filter verwendet, das heißt
die Ein- und Ausgaben verwenden
stdin/stdout.Wie MPlayer befindet sich
transcode in einem experimentellen
Stadium und sollte aus dem Port
multimedia/transcode
gebaut werden. Der Bau besitzt viele Optionen, wir
empfehlen die nachstehende Kommandozeile:&prompt.root; make WITH_LIBMPEG2=yesWenn Sie den Port
multimedia/avifile
installieren wollen, sollten Sie die Kommandozeile
um die Option erweitern:&prompt.root; make WITH_AVIFILE=yes WITH_LIBMPEG2=yesDie beiden folgenden Kommandozeilen wandeln
Videoformate um und skalieren dabei das Video.
Das erste Kommando wandelt das Video in eine
openDIVX-AVI-Datei um, das zweite wandelt das
Video in das portablere MPEG-Format um.&prompt.user; transcode -i input.vob -x vob -V -Z 320x240 \
-y opendivx -N 0x55 -o output.avi&prompt.user; transcode -i input.vob -x vob -V -Z 320x240 \
-y mpeg -N 0x55 -o output.tmp
&prompt.user; tcmplex -o output.mpg -i output.tmp.m1v -p output.tmp.mpa -m 1Es gibt eine Hilfeseite für
transcode, allerdings existiert
kaum Dokumentation zu den verschiedenen
tc*-Werkzeugen (wie
tcmplex), die ebenfalls
installiert werden. Zu jedem Kommando gibt
aber die Option eine knappe
Beschreibung aus.transcode läuft erheblich
langsamer als mencoder, produziert
aber Dateien, die sich mit mehr Programmen abspielen
lassen. Beispielsweise lassen sich mit
transcode erzeugte MPEGs mit
&windows.media; Player und
Apples &quicktime; abspielen.Weiterführende QuellenDie Video-Software für &os; entwickelt sich
sehr schnell. Es ist wahrscheinlich, dass die hier
angesprochenen Probleme bald gelöst sind. Bis dahin
müssen Anwender, die das meiste aus den Audio- und
Video-Fähigkeiten von &os; machen wollen, Informationen
aus mehreren FAQs und Tutorien zusammensuchen und
verschiedene Anwendungen nebeneinander betreiben. Dieser
Abschnitt weist auf weitere Informationsquellen hin.Die
MPlayer-Dokumentation
ist sehr aufschlussreich. Die Dokumente sollten wahrscheinlich
von jedem gelesen werden, der hohe Fachkenntnisse über
Video auf &unix; Systemen erlangen will. Die
MPlayer-Mailinglisten reagiert
feindselig auf Personen, die es nicht für nötig
halten, die Dokumentation zu lesen. Wenn Sie Fehlerberichte
an die Liste schicken wollen, lesen Sie bitte vorher die
ausgezeichnete Dokumentation (RTFM).Das
xine HOWTO
enthält allgemein gültige Hinweise zur
Verbesserung der Wiedergabegeschwindigkeit.Schließlich gibt es noch weitere vielversprechende
Anwendungen, die Sie vielleicht ausprobieren wollen:Avifile
gibt es schon als Port
multimedia/avifile.Ogle
wurde ebenfalls schon portiert:
multimedia/ogle.Xtheater.multimedia/dvdauthor,
ist ein Open-Source-Paket, mit dem Sie DVDs erstellen
können.JosefEl-RayesBeigetragen von MarcFonvieilleÜberarbeitet von TV-Karten einrichtenTV-KartenEinführungMit TV-Karten können Sie mit Ihrem Rechner
über Kabel oder Antenne fernsehen. Die meisten
Karten besitzen einen RCA- oder S-Video-Eingang.
Einige Karten haben auch einen FM-Radio-Empfänger.Der &man.bktr.4;-Treiber von &os; unterstützt
PCI-TV-Karten mit einem Brooktree Bt848/849/878/879 oder
einem Conexant CN-878/Fusion 878a Chip. Die Karte sollte
einen der unterstützten Empfänger besitzen, die in
der Hilfeseite &man.bktr.4; aufgeführt sind.Den Treiber einrichtenUm Ihre Karte zu benutzen, müssen Sie den
&man.bktr.4;-Treiber laden. Fügen Sie die
nachstehende Zeile in die Datei
/boot/loader.conf ein:bktr_load="YES"Sie können den Treiber für die TV-Karte
auch fest in den Kernel compilieren. Erweitern Sie
dazu Ihre Kernelkonfiguration um die folgenden Zeilen:device bktr
device iicbus
device iicbb
device smbusDie zusätzlichen Treiber werden benötigt,
da die Komponenten der Karte über einen I2C-Bus
verbunden sind. Bauen und installieren Sie dann den
neuen Kernel.Anschließend müssen Sie Ihr System
neu starten. Während des Neustarts sollte
Ihre TV-Karte erkannt werden:bktr0: <BrookTree 848A> mem 0xd7000000-0xd7000fff irq 10 at device 10.0 on pci0
iicbb0: <I2C bit-banging driver> on bti2c0
iicbus0: <Philips I2C bus> on iicbb0 master-only
iicbus1: <Philips I2C bus> on iicbb0 master-only
smbus0: <System Management Bus> on bti2c0
bktr0: Pinnacle/Miro TV, Philips SECAM tuner.Abhängig von Ihrer Hardware können die
Meldungen natürlich anders aussehen. Sie sollten
aber prüfen, dass der Empfänger richtig erkannt wird.
Die entdeckten Geräte lassen sich mit &man.sysctl.8;
oder in der Kernelkonfigurationsdatei überschreiben.
Wenn Sie beispielsweise einen Philips-SECAM-Empfänger
erzwingen wollen, fügen Sie die folgende Zeile
zur Kernelkonfigurationsdatei hinzu:options OVERRIDE_TUNER=6Alternativ können Sie direkt &man.sysctl.8; benutzen:&prompt.root; sysctl hw.bt848.tuner=6Weiteres zu den Optionen entnehmen Sie bitte der
Hilfeseite &man.bktr.4; und der Datei
/usr/src/sys/conf/NOTES.
Unter &os; 4.X schauen Sie bitte in der Datei
/usr/src/sys/i386/conf/LINT nach.Nützliche AnwendungenUm die TV-Karte zu benutzen, müssen Sie eine
der nachstehenden Anwendungen installieren:multimedia/fxtv
lässt das Fernsehprogramm in einem Fenster laufen
und kann Bilder, Audio und Video aufzeichnen.multimedia/xawtv
eine weitere TV-Anwendung, mit den gleichen Funktionen
wie fxtv.misc/alevt dekodiert
und zeigt Videotext/Teletext an.Mit audio/xmradio
lässt sich der FM-Radio-Empfänger, der sich
auf einigen TV-Karten befindet, benutzen.audio/wmtune
ein leicht zu bedienender Radio-Empfänger.Weitere Anwendungen finden Sie in der &os;
- Ports-Collection.
+ Ports-Sammlung.
FehlersucheWenn Sie Probleme mit Ihrer TV-Karte haben, prüfen
Sie zuerst, ob der Video-Capture-Chip und der Empfänger
auch wirklich vom &man.bktr.4;-Treiber unterstützt
werden. Prüfen Sie dann, ob Sie die richtigen
Optionen verwenden. Weitere Hilfe erhalten Sie auf
der Mailingliste &a.multimedia.name; und in deren
Archiven.MarcFonvieilleBeigetragen von ScannerScannerEinführungUnter &os; können Sie, wie unter jedem anderen
modernen Betriebssystem, Scanner benutzen. Die Anwendung
SANE (Scanner Access Now Easy)
- aus der Ports-Collection stellt eine einheitliche Schnittstelle
+ aus der Ports-Sammlung stellt eine einheitliche Schnittstelle
(API)
für den Zugriff auf Scanner bereit.
SANE greift auf Scanner
mithilfe einiger &os;-Treiber zu.&os; unterstützt sowohl SCSI- als auch USB-Scanner.
Prüfen Sie vor der Konfiguration mithilfe der
Liste
der unterstützten Geräte ob Ihr Scanner
von SANE unterstützt wird.
Die Hilfeseite &man.uscanner.4; zählt ebenfalls die
unterstützten USB-Scanner auf.Den Kernel für Scanner einrichtenDa sowohl SCSI- als auch USB-Scanner unterstützt
werden, werden abhängig von der Schnittstelle
unterschiedliche Treiber benötigt.USB-ScannerIm GENERIC-Kernel sind
schon alle, für einen USB-Scanner notwendigen,
Treiber enthalten. Wenn Sie einen angepassten Kernel
benutzen, prüfen Sie, dass die Kernelkonfiguration
die nachstehenden Zeilen enthält:device usb
device uhci
device ohci
device uscannerAbhängig vom Chipsatz Ihrer Systemplatine
benötigen Sie in der Kernelkonfiguration entweder
die Option device uhci oder die
Option device ohci. Die
Kernelkonfiguration kann allerdings auch beide Optionen
enthalten.Wenn Sie den Kernel nicht neu bauen wollen
und einen angepassten Kernel verwenden, können
Sie den Treiber &man.uscanner.4; direkt mit dem
Kommando &man.kldload.8; laden:&prompt.root; kldload uscannerWenn Sie das Modul bei jedem Systemstart laden
wollen, fügen Sie in der Datei
/boot/loader.conf die nachstehende
Zeile hinzu:uscanner_load="YES"Nachdem Sie das System mit dem richtigen Kernel
neu gestartet oder das Modul geladen haben, stecken
Sie den USB-Scanner ein. In den Systemmeldungen
(&man.dmesg.8;) sollte ein Eintrag wie der folgende
erscheinen:uscanner0: EPSON EPSON Scanner, rev 1.10/3.02, addr 2Die Meldung besagt, dass der Scanner die
Gerätedatei /dev/uscanner0
benutzt.Unter &os; 4.X muss der USB-Daemon (&man.usbd.8;)
laufen, damit manche USB-Geräte erkannt werden.
Um den USB-Daemon zu aktivieren, fügen Sie in
der Datei /etc/rc.conf die Anweisung
usbd_enable="YES" ein und starten
die Maschine neu.SCSI-ScannerWenn Ihr Scanner eine SCSI-Schnittstelle besitzt,
ist die Kernelkonfiguration abhängig vom
verwendeten SCSI-Controller. Der
GENERIC-Kernel unterstützt
die gebräuchlichen SCSI-Controller. Den richtigen
Treiber finden Sie in der Datei NOTES
(LINT unter &os; 4.X).
Neben dem Treiber muss Ihre Kernelkonfiguration
noch die nachstehenden Zeilen enthalten:device scbus
device passNachdem Sie einen Kernel gebaut haben, sollte
der Scanner beim Neustart in den Systemmeldungen
erscheinen:pass2 at aic0 bus 0 target 2 lun 0
pass2: <AGFA SNAPSCAN 600 1.10> Fixed Scanner SCSI-2 device
pass2: 3.300MB/s transfersWenn der Scanner während des Systemstarts
ausgeschaltet war, können Sie die Geräteerkennung
erzwingen, indem Sie den SCSI-Bus erneut absuchen.
Verwenden Sie dazu das Kommando &man.camcontrol.8;:&prompt.root; camcontrol rescan all
Re-scan of bus 0 was successful
Re-scan of bus 1 was successful
Re-scan of bus 2 was successful
Re-scan of bus 3 was successfulDer Scanner wird anschließend in der
SCSI-Geräteliste angezeigt:&prompt.root; camcontrol devlist
<IBM DDRS-34560 S97B> at scbus0 target 5 lun 0 (pass0,da0)
<IBM DDRS-34560 S97B> at scbus0 target 6 lun 0 (pass1,da1)
<AGFA SNAPSCAN 600 1.10> at scbus1 target 2 lun 0 (pass3)
<PHILIPS CDD3610 CD-R/RW 1.00> at scbus2 target 0 lun 0 (pass2,cd0)Weiteres über SCSI-Geräte lesen Sie
bitte in den Hilfeseiten &man.scsi.4; und &man.camcontrol.8;
nach.SANE konfigurierenSANE besteht aus zwei
Teilen: den Backends
(graphics/sane-backends)
und den Frontends
(graphics/sane-frontends).
Das Backend greift auf den Scanner zu. Welches Backend
welchen Scanner unterstützt, entnehmen Sie der
Liste
der unterstützten Geräte..
Der Betrieb eines Scanners ist nur dem richtigen
Backend möglich. Die Frontends sind die Anwendungen,
mit denen gescannt wird (xscanimage).Installieren Sie zuerst den Port oder das Paket
graphics/sane-backends.
Anschließend können Sie mit dem Befehl
sane-find-scanner prüfen, ob
SANE Ihren Scanner erkennt:&prompt.root; sane-find-scanner -q
found SCSI scanner "AGFA SNAPSCAN 600 1.10" at /dev/pass3Die Ausgabe zeigt die Schnittstelle und die verwendete
Gerätedatei des Scanners. Der Hersteller und das
Modell können in der Ausgabe fehlen.Bei einigen USB-Scannern müssen Sie die
Firmware aktualisieren, dies wird in der Hilfeseite
des Backends erklärt. Lesen Sie bitte auch
die Hilfeseiten &man.sane-find-scanner.1; und
&man.sane.7;.Als nächstes müssen Sie prüfen, ob
der Scanner vom Frontend erkannt wird. Die
SANE-Backends werden
mit dem Kommandozeilenwerkzeug &man.scanimage.1;
geliefert. Mit diesem Werkzeug können Sie
sich Scanner anzeigen lassen und den Scan-Prozess
von der Kommandozeile starten. Die Option
zeigt die Scanner an:&prompt.root; scanimage -L
device `snapscan:/dev/pass3' is a AGFA SNAPSCAN 600 flatbed scannerErscheint die Meldung, dass kein Scanner gefunden
wurde oder wird gar keine Ausgabe erzeugt, konnte
&man.scanimage.1; keinen Scanner erkennen. In diesem
Fall müssen Sie in der Konfigurationsdatei des Backends
das zu benutzende Gerät eintragen. Die
Konfigurationsdateien der Backends befinden sich
im Verzeichnis
/usr/local/etc/sane.d/.
Erkennungsprobleme treten bei bestimmten USB-Scannern
auf.Mit dem USB-Scanner aus
zeigt sane-find-scanner die
folgende Ausgabe:&prompt.root; sane-find-scanner -q
found USB scanner (UNKNOWN vendor and product) at device /dev/uscanner0Der Scanner wurde richtig erkennt, er benutzt eine
USB-Schnittstelle und verwendet die Gerätedatei
/dev/uscanner0. Ob der Scanner
vom Frontend erkannt wird, zeigt das nachstehende
Kommando:&prompt.root; scanimage -L
No scanners were identified. If you were expecting something different,
check that the scanner is plugged in, turned on and detected by the
sane-find-scanner tool (if appropriate). Please read the documentation
which came with this software (README, FAQ, manpages).Da der Scanner nicht erkannt wurde, muss die Datei
/usr/local/etc/sane.d/epson.conf editiert
werden. Der verwendete Scanner war ein
&epson.perfection; 1650, daher wird das
epson-Backend benutzt. Lesen Sie
bitte alle Kommentare in der Konfigurationsdatei des
Backends. Die durchzuführenden Änderungen
sind einfach. Kommentieren Sie zunächst alle
Zeilen mit der falschen Schnittstelle aus. Da der
Scanner eine USB-Schnittstelle besitzt, wurden im
Beispiel alle Zeilen, die mit scsi
anfingen, auskommentiert. Fügen Sie dann die
Schnittstelle und den Gerätenamen am Ende der
Datei ein. In diesem Beispiel wurde die nachstehende
Zeile eingefügt:usb /dev/uscanner0Weitere Hinweise entnehmen Sie bitte der Hilfeseite
des Backends. Jetzt können Sie prüfen,
ob der Scanner richtig erkannt wird:&prompt.root; scanimage -L
device `epson:/dev/uscanner0' is a Epson GT-8200 flatbed scannerDer Scanner wurde nun erkannt. Es ist nicht wichtig,
ob der Hersteller oder das Modell richtig angezeigt werden.
Wichtig ist die Ausgabe `epson:/dev/uscanner0',
die das richtige Backend und den richtigen Gerätenamen
anzeigt.Wenn scanimage -L den Scanner erkannt
hat, ist der Scanner eingerichtet und bereit, zu
scannen.Obwohl wir mit &man.scanimage.1; von der Kommandozeile
scannen können, ist eine graphische Anwendung
zum Scannen besser geeignet. SANE
bietet ein einfaches und effizientes Werkzeug:
xscanimage (graphics/sane-frontends).Xsane
(graphics/xsane)
ist eine weitere beliebte graphische Anwendung.
Dieses Frontend besitzt erweiterte Funktionen
wie den Scan-Modus (beispielsweise Photo, Fax),
eine Farbkorrektur und Batch-Scans. Beide Anwendungen
lassen sich als
GIMP-Plugin verwenden.Den Scanner für Benutzerkonten freigebenVorher wurden alle Tätigkeiten mit
root-Rechten ausgeführt.
Wenn andere Benutzer den Scanner benutzen sollen,
müssen sie Lese- und Schreibrechte auf die
Gerätedatei des Scanners besitzen. Im
Beispiel wird die Datei /dev/uscanner0
verwendet, die der Gruppe operator
gehört. Damit der Benutzer joe
auf den Scanner zugreifen kann, muss das Konto in
die Gruppe operator aufgenommen
werden:&prompt.root; pw groupmod operator -m joeWeiteres entnehmen Sie bitte der Hilfeseite
&man.pw.8;. Da Mitglieder der Gruppe
operator in der Voreinstellung nur
Leserechte für die Gerätedatei
/dev/uscanner0 besitzen, müssen
Sie ebenfalls die Schreibbrechtigung (0660
oder 0664) vergeben. Dazu fügen Sie
in die Datei /etc/devfs.rules
die nachstehenden Zeilen ein:[system=5]
add path uscanner0 mode 660In die Datei /etc/rc.conf
fügen Sie noch die folgende Zeile ein:devfs_system_ruleset="system"Starten Sie anschließend Ihr System neu.Weiteres entnehmen Sie bitte der Hilfeseite &man.devfs.8;.
Unter &os; 4.X können Mitglieder der Gruppe
operator per Voreinstellung die Datei
/dev/uscanner0 lesen und schreiben.Aus Sicherheitsgründen sollten Sie genau darauf
achten, wen Sie in eine Gruppe aufnehmen, besonders
wenn es sich um die Gruppe operator
handelt.
diff --git a/de_DE.ISO8859-1/books/handbook/pgpkeys/chapter.sgml b/de_DE.ISO8859-1/books/handbook/pgpkeys/chapter.sgml
index 2dd6b70f05..6897c26094 100644
--- a/de_DE.ISO8859-1/books/handbook/pgpkeys/chapter.sgml
+++ b/de_DE.ISO8859-1/books/handbook/pgpkeys/chapter.sgml
@@ -1,998 +1,1003 @@
PGP SchlüsselPGP-SchlüsselVerwenden Sie die nachstehenden Schlüssel, wenn Sie
eine Signatur überprüfen oder eine verschlüsselte
E-Mail an einen Ansprechpartner oder einen Entwickler schicken wollen.
Den vollständigen Schlüsselring der Benutzer von
FreeBSD.org finden Sie unter
http://www.FreeBSD.org/doc/pgpkeyring.txt.Ansprechpartner&a.security-officer;
&pgpkey.security-officer;
&a.core-secretary;
&pgpkey.core-secretary;
Mitglieder des Core Teams&a.jhb;
&pgpkey.jhb;
&a.kuriyama;
&pgpkey.kuriyama;
-
- &a.scottl;
- &pgpkey.scottl;
-
-
&a.imp;
&pgpkey.imp;
&a.wes;
&pgpkey.wes;
&a.murray;
&pgpkey.murray;
&a.peter;
&pgpkey.peter;
Entwickler&a.will;
&pgpkey.will;
&a.anholt;
&pgpkey.anholt;
&a.mat;
&pgpkey.mat;
&a.asami;
&pgpkey.asami;
&a.barner;
&pgpkey.barner;
&a.dougb;
&pgpkey.dougb;
&a.tobez;
&pgpkey.tobez;
&a.damien;
&pgpkey.damien;
&a.mbr;
&pgpkey.mbr;
&a.novel;
&pgpkey.novel;
&a.harti;
&pgpkey.harti;
&a.obraun;
&pgpkey.obraun;
&a.jmb;
&pgpkey.jmb;
&a.brueffer;
&pgpkey.brueffer;
&a.markus;
&pgpkey.markus;
&a.wilko;
&pgpkey.wilko;
&a.jcamou;
&pgpkey.jcamou;
&a.perky;
&pgpkey.perky;
&a.jon;
&pgpkey.jon;
&a.luoqi;
&pgpkey.luoqi;
&a.ache;
&pgpkey.ache;
&a.seanc;
&pgpkey.seanc;
&a.cjh;
&pgpkey.cjh;
&a.cjc;
&pgpkey.cjc;
&a.marcus;
&pgpkey.marcus;
&a.nik;
&pgpkey.nik;
&a.ceri;
&pgpkey.ceri;
&a.brd;
&pgpkey.brd;
&a.brooks;
&pgpkey.brooks;
&a.gnn;
&pgpkey.gnn;
&a.pjd;
&pgpkey.pjd;
&a.bsd;
&pgpkey.bsd;
&a.danfe;
&pgpkey.danfe;
&a.dd;
&pgpkey.dd;
&a.bruno;
&pgpkey.bruno;
&a.ale;
&pgpkey.ale;
&a.peadar;
&pgpkey.peadar;
&a.josef;
&pgpkey.josef;
&a.ue;
&pgpkey.ue;
&a.ru;
&pgpkey.ru;
&a.le;
&pgpkey.le;
&a.stefanf;
&pgpkey.stefanf;
&a.jedgar;
&pgpkey.jedgar;
&a.green;
&pgpkey.green;
&a.lioux;
&pgpkey.lioux;
&a.fanf;
&pgpkey.fanf;
&a.blackend;
&pgpkey.blackend;
&a.petef;
&pgpkey.petef;
&a.billf;
&pgpkey.billf;
&a.patrick;
&pgpkey.patrick;
&a.gioria;
&pgpkey.gioria;
+
+ &a.mnag;
+ &pgpkey.mnag;
+
+
&a.jmg;
&pgpkey.jmg;
&a.dannyboy;
&pgpkey.dannyboy;
&a.dhartmei;
&pgpkey.dhartmei;
&a.jhay;
&pgpkey.jhay;
&a.sheldonh;
&pgpkey.sheldonh;
&a.mikeh;
&pgpkey.mikeh;
&a.mheinen;
&pgpkey.mheinen;
&a.niels;
&pgpkey.niels;
&a.ghelmer;
&pgpkey.ghelmer;
&a.mux;
&pgpkey.mux;
&a.mich;
&pgpkey.mich;
&a.foxfair;
&pgpkey.foxfair;
&a.jkh;
&pgpkey.jkh;
&a.ahze;
&pgpkey.ahze;
&a.trevor;
&pgpkey.trevor;
&a.phk;
&pgpkey.phk;
&a.joe;
&pgpkey.joe;
&a.vkashyap;
&pgpkey.vkashyap;
&a.kris;
&pgpkey.kris;
&a.keramida;
&pgpkey.keramida;
&a.fjoe;
&pgpkey.fjoe;
&a.jkim;
&pgpkey.jkim;
&a.andreas;
&pgpkey.andreas;
&a.jkois;
&pgpkey.jkois;
&a.sergei;
&pgpkey.sergei;
&a.maxim;
&pgpkey.maxim;
&a.jkoshy;
&pgpkey.jkoshy;
&a.rik;
&pgpkey.rik;
&a.rushani;
&pgpkey.rushani;
&a.clement;
&pgpkey.clement;
&a.mlaier;
&pgpkey.mlaier;
&a.alex;
&pgpkey.alex;
&a.erwin;
&pgpkey.erwin;
&a.lawrance;
&pgpkey.lawrance;
&a.leeym;
&pgpkey.leeym;
&a.sam;
&pgpkey.sam;
&a.jylefort;
&pgpkey.jylefort;
&a.netchild;
&pgpkey.netchild;
&a.lesi;
&pgpkey.lesi;
&a.glewis;
&pgpkey.glewis;
&a.delphij;
&pgpkey.delphij;
&a.avatar;
&pgpkey.avatar;
&a.ijliao;
&pgpkey.ijliao;
&a.clive;
&pgpkey.clive;
&a.clsung;
&pgpkey.clsung;
&a.arved;
&pgpkey.arved;
&a.remko;
&pgpkey.remko;
+
+ &a.scottl;
+ &pgpkey.scottl;
+
+
&a.pav;
&pgpkey.pav;
&a.bmah;
&pgpkey.bmah;
&a.mtm;
&pgpkey.mtm;
&a.dwmalone;
&pgpkey.dwmalone;
&a.kwm;
&pgpkey.kwm;
&a.matusita;
&pgpkey.matusita;
&a.ken;
&pgpkey.ken;
&a.dinoex;
&pgpkey.dinoex;
&a.sanpei;
&pgpkey.sanpei;
&a.jim;
&pgpkey.jim;
&a.marcel;
&pgpkey.marcel;
&a.marck;
&pgpkey.marck;
&a.tmm;
&pgpkey.tmm;
&a.rich;
&pgpkey.rich;
&a.knu;
&pgpkey.knu;
&a.max;
&pgpkey.max;
&a.yoichi;
&pgpkey.yoichi;
&a.bland;
&pgpkey.bland;
&a.simon;
&pgpkey.simon;
&a.anders;
&pgpkey.anders;
&a.obrien;
&pgpkey.obrien;
&a.philip;
&pgpkey.philip;
&a.hmp;
&pgpkey.hmp;
&a.mp;
&pgpkey.mp;
&a.roam;
&pgpkey.roam;
&a.den;
&pgpkey.den;
&a.pirzyk;
&pgpkey.pirzyk;
&a.jdp;
&pgpkey.jdp;
&a.krion;
&pgpkey.krion;
&a.markp;
&pgpkey.markp;
&a.thomas;
&pgpkey.thomas;
&a.hq;
&pgpkey.hq;
&a.dfr;
&pgpkey.dfr;
&a.trhodes;
&pgpkey.trhodes;
&a.benno;
&pgpkey.benno;
&a.paul;
&pgpkey.paul;
&a.roberto;
&pgpkey.roberto;
&a.rodrigc;
&pgpkey.rodrigc;
&a.guido;
&pgpkey.guido;
&a.niklas;
&pgpkey.niklas;
&a.marks;
&pgpkey.marks;
&a.hrs;
&pgpkey.hrs;
&a.wosch;
&pgpkey.wosch;
&a.das;
&pgpkey.das;
&a.schweikh;
&pgpkey.schweikh;
&a.gshapiro;
&pgpkey.gshapiro;
&a.arun;
&pgpkey.arun;
&a.nork;
&pgpkey.nork;
&a.vanilla;
&pgpkey.vanilla;
&a.cshumway;
&pgpkey.cshumway;
&a.demon;
&pgpkey.demon;
&a.jesper;
&pgpkey.jesper;
&a.scop;
&pgpkey.scop;
&a.glebius;
&pgpkey.glebius;
&a.kensmith;
&pgpkey.kensmith;
&a.ben;
&pgpkey.ben;
&a.des;
&pgpkey.des;
&a.sobomax;
&pgpkey.sobomax;
&a.dcs;
&pgpkey.dcs;
&a.brian;
&pgpkey.brian;
&a.nsouch;
&pgpkey.nsouch;
&a.ssouhlal;
&pgpkey.ssouhlal;
&a.vsevolod;
&pgpkey.vsevolod;
&a.vs;
&pgpkey.vs;
&a.gsutter;
&pgpkey.gsutter;
&a.metal;
&pgpkey.metal;
&a.garys;
&pgpkey.garys;
&a.nyan;
&pgpkey.nyan;
&a.mi;
&pgpkey.mi;
&a.gordon;
&pgpkey.gordon;
&a.lth;
&pgpkey.lth;
&a.thierry;
&pgpkey.thierry;
&a.thompsa;
&pgpkey.thompsa;
&a.flz;
&pgpkey.flz;
&a.viny;
&pgpkey.viny;
&a.ume;
&pgpkey.ume;
&a.ups;
&pgpkey.ups;
&a.nectar;
&pgpkey.nectar;
&a.adamw;
&pgpkey.adamw;
&a.nate;
&pgpkey.nate;
&a.wollman;
&pgpkey.wollman;
&a.joerg;
&pgpkey.joerg;
&a.bz;
&pgpkey.bz;
&a.phantom;
&pgpkey.phantom;
diff --git a/de_DE.ISO8859-1/books/handbook/preface/preface.sgml b/de_DE.ISO8859-1/books/handbook/preface/preface.sgml
index 10963fbbe4..66388e3b28 100644
--- a/de_DE.ISO8859-1/books/handbook/preface/preface.sgml
+++ b/de_DE.ISO8859-1/books/handbook/preface/preface.sgml
@@ -1,693 +1,702 @@
VorwortÜber dieses
BuchDer erste Teil dieses Buchs führt &os;-Einsteiger durch den
Installationsprozess und stellt leicht verständlich Konzepte
und Konventionen vor, die &unix; zu Grunde liegen. Sie müssen nur
neugierig sein und bereitwillig neue Konzepte aufnehmen, wenn diese
vorgestellt werden, um diesen Teil durchzuarbeiten.Wenn Sie den ersten Teil bewältigt haben, bietet der
umfangreichere zweite Teil eine verständliche Darstellung vieler
Themen, die für &os;-Administratoren relevant sind. Wenn
Kapitel auf anderen Kapiteln aufbauen, wird das in der Übersicht
am Anfang eines Kapitels erläutert.Weitere Informationsquellen entnehmen Sie bitte
.Änderungen
gegenüber der zweiten AuflageDie dritte Auflage des Handbuchs ist das Ergebnis der
über zwei Jahre dauernden engagierten Arbeit des
&os; Documentation Projects. Die wichtigsten Änderungen
dieser Auflage sind:, Konfiguration und Tuning,
enthält neue Abschnitte über ACPI, Energie- und
Ressourcenverwaltung und das Werkzeug cron., Sicherheit, erläutert
nun Virtual Private Networks (VPNs), Zugriffskontrolllisten
(ACLs) und Sicherheitshinweise., Mandatory Access Control (MAC),
ist ein neues Kapitel, das vorgeschriebene Zugriffskontrollen
vorstellt und erklärt, wie &os;-Systeme mit MACs
abgesichert werden können., Vinum, ist ebenfalls ein
neues Kapitel in dieser Auflage. Dieses Kapitel beschreibt
den Logical-Volume-Manager Vinum, der
geräteunabhängige logische Platten und
RAID-0, RAID-1 sowie RAID-5 auf Software-Ebene
bereitstellt.Zum Kapitel , PPP und SLIP,
wurde ein Abschnitt über Fehlersuche
hinzugefügt., Elektronische Post (E-Mail),
wurde um Abschnitte über andere Transport-Agenten (MTAs),
SMTP-Authentifizierung, UUCP, fetchmail, procmail
und weitere Themen erweitert., Netzwerkserver,
ist ein weiteres neues Kapitel dieser Auflage. Das
Kapitel beschreibt, wie der Apache HTTP-Server, der FTPd
und ein Samba-Server für Microsoft-Windows-Clients
eingerichtet werden. Einige Abschnitte aus dem
, Weiterführende
Netzwerkthemen, befinden sich nun, wegen des thematischen
Zusammenhangs, in diesem Kapitel.Das ,
Weiterführende Netzwerkthemen, beschreibt nun den
Einsatz von Bluetooth-Geräten unter &os; und
das Einrichten von drahtlosen Netzwerken sowie
ATM-Netzwerken.Neu hinzugefügt wurde ein Glossar, das die
im Buch verwendeten technischen Ausdrücke
definiert.Das Erscheinungsbild der Tabellen und Abbildungen im Buch
wurde verbessert.Änderungen
gegenüber der ersten AuflageDie zweite Auflage ist das Ergebnis der engagierten Arbeit der
Mitglieder des &os; Documentation Projects über zwei Jahre.
Die wichtigsten Änderungen gegenüber der ersten Auflage
sind:Ein Index wurde erstellt.Alle ASCII-Darstellungen wurden durch Grafiken ersetzt.Jedes Kapitel wird durch eine Übersicht eingeleitet, die
den Inhalt des Kapitels zusammenfasst und die Voraussetzungen
für ein erfolgreiches Durcharbeiten des Kapitels
darstellt.Der Inhalt wurde in die logischen Abschnitte Erste
Schritte, Systemadministration und
Anhänge unterteilt. (&os;
installieren) wurde komplett neu geschrieben und mit
Abbildungen versehen, die Einsteigern das Verständnis des Texts
erleichtern. (Grundlagen des &unix; Betriebssystems)
wurde um den Abschnitt Dämonen, Signale und Stoppen von
Prozessen erweitert.Das (Installieren von
Anwendungen) behandelt nun auch Pakete. (Das X Window System)
wurde neu geschrieben. Der Schwerpunkt liegt auf modernen
Benutzeroberflächen unter &xfree86; 4.X wie
KDE und
GNOME.Das (&os;s Bootvorgang)
wurde erweitert. (Speichermedien) ist
aus den beiden Kapiteln Laufwerke und
Sicherungen entstanden. Die in den beiden Kapiteln
diskutierten Themen sind so leichter zu verstehen. Hinzugekommen
ist ein Abschnitt über Software- und Hardware-RAID.Das (Serielle
Datenübertragung) wurde umorganisiert und auf
&os; 4.X/5.X angepasst.Das (PPP und SLIP)
wurde aktualisiert. (Weiterführende
Netzwerkthemen) wurde um viele neue Abschnitte erweitert. (Electronic Mail) wurde
um einen Abschnitt über die Konfiguration von
sendmail erweitert. (&linux;
Compatibility) behandelt zusätzlich die Installation
von &oracle; und
&sap.r3;.Neu hinzugekommen sind:Konfiguration und Tuning ()
und Multimedia ().GliederungDieses Buch ist in fünf Abschnitte unterteilt. Der erste
Abschnitt, Erste Schritte, behandelt die
Installation und die Grundlagen von &os;. Dieser Abschnitt sollte
in der vorgegebenen Reihenfolge durchgearbeitet werden, schon Bekanntes
darf aber übersprungen werden. Der zweite Abschnitt,
Oft benutzte Funktionen, behandelt
häufig benutzte Funktionen von &os;. Dieser Abschnitt
sowie alle nachfolgenden Abschnitte können in beliebiger
Reihenfolge gelesen werden. Jeder Abschnitt beginnt mit einer
kurzen Übersicht, die das Thema des Abschnitts und das
nötige Vorwissen erläutert. Die Übersichten
helfen dem Leser, interessante Kapitel zu finden und erleichtern
das Stöbern im Handbuch. Der dritte Abschnitt,
Systemadministration, behandelt die
Administration eines &os;-Systems. Der vierte Abschnitt,
Netzwerke, bespricht Netzwerke und
Netzwerkdienste. Der fünfte Abschnitt enthält
Anhänge und Verweise auf weitere Informationen.,
EinführungDieses Kapitel macht Einsteiger mit &os; vertraut. Es
behandelt die Geschichte, die Ziele und das Entwicklungsmodell
des &os;-Projekts., InstallationBeschreibt den Ablauf der Installation. Spezielle
Installationsmethoden, wie die Installation mit einer seriellen
Konsole, werden ebenfalls behandelt., Grundlagen des &unix;
BetriebssystemsErläutert die elementaren Kommandos und Funktionen
von &os;. Wenn Sie schon mit &linux; oder einem anderen
&unix; System vertraut sind, können Sie dieses Kapitel
überspringen., Installieren von
AnwendungenZeigt wie mit der innovativen Ports-Sammlung oder mit Paketen
Software von Fremdherstellern installiert wird., Das X Window
SystemBeschreibt allgemein das X Window System und geht
speziell auf X11 unter &os;
ein. Weiterhin werden grafische Benutzeroberflächen wie
KDE und
GNOME behandelt.,
Desktop-AnwendungenEnthält eine Aufstellung verbreiteter Anwendungen wie
Browser, Büroanwendungen und Office-Pakete und beschreibt
wie diese Anwendungen installiert werden., MultimediaErklärt, wie Sie auf Ihrem System Musik und Videos
abspielen können. Beispielhaft werden auch Anwendungen aus
dem Multimedia-Bereich beleuchtet., Konfiguration des
&os;-KernelsErklärt, warum Sie einen angepassten Kernel erzeugen
sollten und gibt ausführliche Anweisungen wie Sie einen
angepassten Kernel konfigurieren, bauen und installieren., DruckenBeschreibt, wie Sie Drucker unter &os; verwalten.
Diskutiert werden Deckblätter, das Einrichten eines Druckers
und ein Abrechnungssystem für ausgedruckte Seiten.,
&linux;-BinärkompatibilitätBeschreibt die binäre Kompatibilität zu &linux;.
Weiterhin werden ausführliche Installationsanleitungen
für &oracle;,
&sap.r3; und
Mathematica gegeben., Konfiguration und
TuningBeschreibt die Einstellungen, die ein Systemadministrator
vornehmen kann, um die Leistungsfähigkeit eines &os;
Systems zu verbessern. In diesem Kapitel werden auch
verschiedene Konfigurationsdateien besprochen., &os;s
BootvorgangErklärt den Bootprozess von &os; und beschreibt die
Optionen, mit denen sich der Bootprozess beeinflussen
lässt., Benutzer und grundlegende
Account-VerwaltungBeschreibt, wie Benutzer-Accounts angelegt, verändert
und verwaltet werden. Weiterhin wird beschrieben, wie dem
Benutzer zur Verfügung stehende Ressourcen beschränkt
werden können., SicherheitBeschreibt die Werkzeuge mit denen Sie Ihr &os;-System
absichern. Unter Anderem werden Kerberos, IPsec und OpenSSH
besprochen., Mandatory Access
ControlErklärt vorgeschriebene Zugriffskontrollen (MACs)
und wie mit ihrer Hilfe &os;-Systeme gesichert
werden., SpeichermedienErläutert den Umgang mit Speichermedien und
Dateisystemen. Behandelt werden Plattenlaufwerke, RAID-Systeme,
optische Medien, Bandlaufwerke, RAM-Laufwerke und
verteilte Dateisysteme.
+
+ , GEOM
+
+ Beschreibt das GEOM-Framework von FreeBSD sowie die
+ Konfiguration der verschiedenen unterstützten
+ RAID-Level.
+
+
+
, VinumBeschreibt den Vinum Volume Manager, der virtuelle Laufwerke,
RAID-0, RAID-1 und RAID-5 auf Software-Ebene
bereitstellt., LokalisierungZeigt wie Sie &os; mit anderen Sprachen als Englisch
einsetzen. Es wird sowohl die Lokalisierung auf der System-Ebene
wie auch auf der Anwendungs-Ebene betrachtet., Das Neueste und
BesteErklärt die Unterschiede zwischen &os;-STABLE,
&os;-CURRENT und &os;-Releases. Das Kapitel enthält
Kriterien anhand derer Sie entscheiden können, ob es sich
lohnt, ein Entwickler-System zu installieren und aktuell zu
halten. Die Vorgehensweise dazu wird ebenfalls
beschrieben., Serielle
DatenübertragungErläutert, wie Sie Terminals und Modems an Ihr
&os;-System anschließen und sich so ein- und auswählen
können., PPP und
SLIPErklärt wie Sie mit PPP, SLIP oder PPP über
Ethernet ein &os;-System mit einem entfernten System
verbinden., Elektronische Post
(E-Mail)Erläutert die verschiedenen Bestandteile eines E-Mail
Servers und zeigt einfache Konfigurationen für
sendmail, dem meist genutzten
E-Mail-Server.,
NetzwerkserverBietet ausführliche Informationen und
Beispielkonfigurationen, die es Ihnen ermöglichen,
Ihren &os;-Rechner als
Network File System Server,
Domain Name Server,
Network Information Server,
oder als Zeitsynchronisationsserver einzurichten.,
FirewallsErklärt die Philosophie hinter softwarebasierten
Firewalls und bietet ausführliche Informationen zur
Konfiguration der verschiedenen, für FreeBSD
verfügbaren Firewalls.,
Weiterführende NetzwerkthemenBehandelt viele Netzwerkthemen, beispielsweise das
Verfügbarmachen einer Internetverbindung für andere
Rechner eines LANs, Routing, drahtlose Netzwerke, Bluetooth,
IPv6, ATM und andere mehr., Bezugsquellen für
&os;Enthält eine Aufstellung der Quellen von denen Sie
&os; beziehen können: CD-ROM, DVD sowie
Internet-Sites.,
BibliografieDieses Buch behandelt viele Themen und kann nicht alle
Fragen erschöpfend beantworten. Die Bibliografie enthält
weiterführende Bücher, die im Text zitiert
werden., Ressourcen im
InternetEnthält eine Aufstellung der Foren, die &os;
Benutzern für Fragen und Diskussionen zur Verfügung
stehen., PGP
SchlüsselEnthält PGP-Fingerabdrücke von etlichen &os;
Entwicklern.Konventionen in diesem
BuchDamit der Text einheitlich erscheint und leicht zu lesen ist,
werden im ganzen Buch die nachstehenden Konventionen beachtet:
TypographieKursivFür Dateinamen, URLs, betonte Teile eines Satzes und
das erste Vorkommen eines Fachbegriffs wird ein
kursiver Zeichensatz benutzt.FixschriftFehlermeldungen, Kommandos, Umgebungsvariablen, Namen von
Ports, Hostnamen, Benutzernamen, Gruppennamen, Gerätenamen,
Variablen und Code-Ausschnitte werden in einer
Fixschrift dargestellt.FettFett kennzeichnet Anwendungen,
Kommandozeilen und Tastensymbole.BenutzereingabenTasten werden fett dargestellt, um sie von dem
umgebenden Text abzuheben. Tasten, die gleichzeitig gedrückt
werden müssen, werden durch ein + zwischen
den einzelnen Tasten dargestellt:CtrlAltDelIm gezeigten Beispiel soll der Benutzer
die Tasten Ctrl, Alt
und Del gleichzeitig drücken.Tasten, die nacheinander gedrückt werden müssen, sind
durch Kommas getrennt:CtrlX,
CtrlSDas letzte Beispiel bedeutet, dass die Tasten
Ctrl und X gleichzeitig
betätigt werden und danach die Tasten Ctrl
und S gleichzeitig gedrückt werden
müssen.BeispieleBeispiele, die durch E:\> eingeleitet
werden, zeigen ein &ms-dos; Kommando. Wenn nichts Anderes angezeigt
wird, können diese Kommandos unter neuen Versionen von
µsoft.windows; auch in einem DOS-Fenster
ausgeführt werden.E:\>tools\fdimage floppies\kern.flp A:Beispiele, die mit &prompt.root; beginnen, müssen unter
&os; mit Superuser-Rechten ausgeführt werden. Dazu melden Sie
sich entweder als root an oder Sie wechseln von
Ihrem normalen Account mit &man.su.1; zu dem Benutzer
root.&prompt.root; dd if=kern.flp of=/dev/fd0Beispiele, die mit &prompt.user; anfangen, werden unter einem
normalen Benutzer-Account ausgeführt. Sofern nichts Anderes
angezeigt wird, verwenden die Beispiele die Syntax der C-Shell.&prompt.user; topDanksagungDieses Buch ist aus Beiträgen von vielen Leuten aus allen
Teilen der Welt entstanden. Alle eingegangen Beiträge, zum Beispiel
Korrekturen oder vollständige Kapitel, waren wertvoll.Einige Firmen haben dieses Buch dadurch unterstützt, dass Sie
Autoren in Vollzeit beschäftigt und die Veröffentlichung
des Buchs finanziert haben. Besonders BSDi, das später von
Wind River Systems
übernommen wurde, beschäftigte Mitglieder des &os;
Documentation Projects, mit dem Ziel dieses Buch zu verbessern.
Dadurch wurde die erste (englische) gedruckte Auflage im
März 2000 möglich (ISBN 1-57176-241-8).
Wind River Systems bezahlte dann weitere Autoren, die die zum Drucken
nötige Infrastruktur verbesserten und zusätzliche Kapitel
beisteuerten. Das Ergebnis dieser Arbeit ist die zweite (englische)
Auflage vom November 2001 (ISBN 1-57176-303-1).
Zwischen 2003 und 2004 bezahlte
FreeBSD Mall, Inc
mehrere Mitarbeiter für die Vorbereitung der gedruckten
dritten Auflage.
diff --git a/de_DE.ISO8859-1/books/handbook/printing/chapter.sgml b/de_DE.ISO8859-1/books/handbook/printing/chapter.sgml
index 41e0e92b8a..eeacd56226 100644
--- a/de_DE.ISO8859-1/books/handbook/printing/chapter.sgml
+++ b/de_DE.ISO8859-1/books/handbook/printing/chapter.sgml
@@ -1,2307 +1,5712 @@
SeanKellyBeigetragen von JimMockRestrukturiert und aktualisiert durch StefanBethkeÜbersetzt von DruckenÜbersichtLPD spooling systemdruckenMit FreeBSD können Sie viele unterschiedliche Drucker
benutzen, von den ältesten Nadeldruckern bis zu den
neuesten Laserdruckern, und allen möglichen Geräten
dazwischen. Auf diese Weise können Sie hochwertige
Ausdrucke mit Ihren Programmen erzeugen.Sie können FreeBSD auch so konfigurieren, dass es
Druckaufträge von anderen Computern über Ihr lokales
Netzwerk entgegennimmt, seien es &windows;-, &macos;- oder andere
FreeBSD-Computer. FreeBSD stellt sicher, dass die
Druckaufträge in der richtigen Reihenfolge bearbeitet
- werden und kann optional eine Titelseite mit dem Namen des
+ werden und kann optional ein Deckblatt mit dem Namen des
Auftraggebers eines Druckauftrags aufgeben. FreeBSD kann auch
Statistiken über die Computer und Benutzer führen, die
Ausdrucke in Auftrag geben.In diesem Kapitel erfahren Sie, wie Sie:FreeBSD-Druckerwarteschlangen einrichten.Druckfilter installieren, die Druckaufträge je nach
Bedarf besonders behandeln und z.B. Dokumente automatisch
in eine Form umwandeln, die Ihr Drucker versteht.
- Druckaufträge mit einer Titelseite versehen
+ Druckaufträge mit einem Deckblatt versehen
können.
- Auf einem Drucker drucken können, der an einen
+ Mit einem Drucker drucken können, der an einen
anderen Computer angeschlossen ist.
- Auf einem Drucker drucken können, der direkt an das
+ Mit einem Drucker drucken können, der direkt an das
Netzwerk angeschlossen ist.die Größe von Druckaufträgen
beschränken können, oder bestimmte Benutzer von
den Benutzung des Drucksystems ausschließen
können.Statistiken aufzeichnen und die Benutzung des
Drucksystems nach Benutzern und Computern aufschlüsseln
können.Probleme beim Drucken diagnostizieren und beheben
können.Bevor Sie dieses Kapitel lesen:Machen Sie sich mit der Konfiguration und Installation
eines neuen Kernels vertraut ().Einführung
- Um einen Drucker mit FreeBSD zu benutzen, müssen Sie
- das Berkeley Line Printer Spooling System, auch als
- LPD-Drucksystem bekannt,
- konfigurieren. Dieses System zur Verwaltung von
+ Um einen Drucker mit FreeBSD zu benutzen, können Sie
+ das Berkeley Line Printer Spooling System, das auch als
+ LPD-Drucksystem oder nur als
+ LPD bekannt ist,
+ verwenden. Dieses System zur Verwaltung von
Druckaufträgen ist das Standardsystem in FreeBSD. Dieses
- Kapitel führt Sie in das
- LPD-Drucksystem ein, und zeigt Ihnen
- die Konfiguration.
+ Kapitel führt Sie in LPD
+ und dessen Konfiguration ein.Wenn Sie bereits mit LPD oder
einem anderen Drucksystem vertraut sind, können Sie direkt
- im Abschnitt Einrichten des
- Drucksystems weiterlesen.
+ im Abschnitt Einfache
+ Drucker-Konfiguration weiterlesen.
LPD steuert alle Aspekte rund um
die Drucker, die an den Computer angeschlossen sind. Es ist
verantwortlich für:Die Zugriffskontrolle für direkt und über das
Netzwerk angeschlossene Drucker.DruckaufträgeDie Entgegennahme von Dateien, die gedruckt werden
sollen; eine so an das Drucksystem übergebene Datei
wird als Druckauftrag
bezeichnet.Den gleichzeitigen Zugriff von mehreren Benutzern auf
einen Drucker. Alle Druckaufträge werden in einer
Druckerwarteschlange gesammelt, und
nacheinander abgearbeitet.
- Den Druck von Titelseiten (auch als
+ Den Druck von Deckblättern (auch als
Banner- oder
Burst-Seiten bezeichnet), damit
Benutzer ihre Druckaufträge schnell innerhalb eines
Stapels von ausgedruckten Dokumenten finden
können.Das Einstellen der korrekten Kommunikations-Parameter
für Drucker, die seriell angeschlossen sind.Das Senden von Druckaufträgen an ein
LPD-System auf einem anderen
Computer.Das Ausführen von speziellen Filtern, um
Druckaufträge in die unterschiedlichen
Seitenbeschreibungssprachen umzusetzen oder an die
Fähigkeiten eines Druckers anzupassen.
- Die Erfassung von Abrechnungsdaten für
+ Das Erfassen von Verrechnungsdaten für
Druckaufträge.Sie können LPD alle diese
Funktionen, oder auch nur einen Teil davon, ausführen
lassen, indem Sie die Konfigurationsdatei
(/etc/printcap) anpassen, und indem Sie
spezielle Filterprogramme bereitstellen.Vorteile des DrucksystemsWenn Sie der einzige Benutzer sind, der mit Ihrem Computer
arbeitet, fragen Sie sich vielleicht, warum Sie die
Konfigurationsarbeit für das Drucksystem auf sich nehmen
- sollten, wenn Sie Titelseiten, Abrechnunsdaten oder
+ sollten, wenn Sie Deckblätter, Abrechnungsdaten oder
Zugriffskontrolle nicht benötigen. Obwohl Sie direkt auf den
Drucker zugreifen können, bietet
LPD eine Reihe von Vorteilen:
LPD druckt im Hintergrund;
Sie müssen nicht erst darauf warten, dass Ihr
Druckauftrag an den Drucker übermittelt worden
ist.&tex;LPD kann Druckaufträge
mit Kopf- oder Fußzeilen versehen, oder ein
spezielles Dateiformat, wie DVI von &tex;, automatisch in ein
für den Drucker verständliches Format umwandeln;
Sie müssen diese Schritte nicht manuell
ausführen.Viele freie und kommerzielle Programme, mit denen Sie
drucken können, erwarten, mithilfe des
LPD-Drucksystems zu drucken.
Wenn Sie das Drucksystem konfiguriert haben, können
Sie einfacher mit neuer oder auch vorhandener Software
drucken.Grund-KonfigurationUm einen Drucker mit dem
LPD-Drucksystem benutzen zu
können, müssen Sie sowohl Ihren Drucker und die
Drucker-Schnittstelle als auch das
LPD-Drucksystem konfigurieren.
Dieser Abschnitt beschreibt zwei Konfigurationen:Abschnitt Einfache
Drucker-Konfiguration beschreibt, wie Sie einen
Drucker an Ihren Computer anschließen und
LPD so konfigurieren, dass
Sie Textdateien zum Drucker senden können.Abschnitt Erweiterte
Drucker-Konfiguration beschreibt, wie Sie mit
speziellen Dateiformaten umgehen können, wie Sie
- Titelseiten drucken können, wie Sie den Zugriff auf
+ Deckblätter drucken können, wie Sie den Zugriff auf
Drucker einschränken können, und wie Sie
- Abrechnungsdaten aufzeichnen können.
+ Verrechnungsdaten aufzeichnen können.
Einfache Drucker-KonfigurationDieser Abschnitt beschreibt, wie Sie die
LPD-Software konfigurieren, um
Ihren Drucker zu benutzen. Diese Grundlagen werden
erklärt:Abschnitt Hardware-Konfiguration
erläutert, wie Sie Ihren Drucker an Ihren Computer
anschließen können.Abschnitt Software-Konfiguration
erklärt, wie Sie die
LPD-Konfigurationsdatei
(/etc/printcap) anpassen.Wenn Sie einen Drucker einrichten möchten, der
über das Netzwerk angeschlossen ist (anstatt über
die serielle oder parallele Schnittstelle), lesen Sie bitte
Abschnitt Drucker mit
direkter TCP-Schnittstelle.Obwohl dieser Abschnitt Grund-Konfiguration
heißt, ist die Konfiguration relativ komplex. Es ist
vergleichsweise schwierig, einen Drucker mit Ihrem Computer
und dem LPD-Drucksystem zu
- verbinden. Die weiteren Optionen, wie Kopfzeile oder Titelseiten,
- sind einfach zu konfigurieren, sobald die
+ verbinden. Die weiteren Optionen, wie Kopfzeilen oder
+ Deckblätter, sind einfach zu konfigurieren, sobald die
Grund-Konfiguration erfolgreich abgeschlossen ist.Hardware-KonfigurationDieser Abschnitt beschreibt, über welche
Schnittstellen Sie einen Drucker mit Ihrem Computer
verbinden können. Er behandelt sowohl die
Schnittstellen und Kabel, als auch die Kerneloptionen, die
Sie benötigen, um FreeBSD mit Ihrem Drucker
kommunizieren zu lassen.Wenn Sie Ihren Drucker bereits erfolgreich mit einem
anderen Betriebssystem auf Ihrem PC eingesetzt haben,
können Sie wahrscheinlich mit dem Abschnitt Software-Konfiguration
fortfahren.Schnittstellen und KabelPraktisch alle Drucker unterstützen mindestens
eine dieser Schnittstellen:DruckerserielleSeriell angeschlossene
Drucker werden über eine serielle Schnittstelle
- (auch RS232C-, RS232D- oder COM-Schnittstelle genannt)
+ (auch RS-232 oder COM-Schnittstelle genannt)
mit Ihrem Computer verbunden. Diese Schnittstelle wird
von vielen unterschiedlichen Systemen verwendet.
Serielle Kabel sind leicht erhältlich und
können auch einfach selbst hergestellt werden.
Einige Drucker erfordern möglicherweise ein
spezielles Kabel oder besondere
Kommunikationseinstellungen. Die meisten seriellen
Schnittstellen von PCs besitzen eine maximale
Datenübertragungsrate von 115200 bps;
zum Ausdruck großer Grafiken sind serielle
Drucker daher ungeeignet.DruckerparalleleParallel angeschlossene
Drucker werden über eine parallele Schnittstelle
mit Ihrem Computer verbunden. Diese Schnittstelle wird
hauptsächlich von PCs und Workstations benutzt.
Die Schnittstelle bietet eine höhere
Datenübertragungsrate als serielle Schnittstellen.
Kabel sind leicht erhältlich, sind aber
vergleichsweise schwer selbst herzustellen.
Üblicherweise brauchen keine
Kommunikationsparameter festgelegt zu werden; dies
macht die Einrichtung sehr einfach.CentronicsDrucker, paralleleDie parallele Schnittstelle wird auch als
Centronics-Schnittstelle bezeichnet,
nach dem Namen des Steckverbinders, der hier
häufig zum Einsatz kommt.DruckerUSBUSB-Schnittstelle (Universal Serial Bus)
bieten noch höhere Geschwindigkeiten als
- parallele Schnittstellen oder serielle RS232-Schnittstellen.
+ parallele Schnittstellen oder serielle
+ RS-232-Schnittstellen.
USB-Kabel sind einfach und billig. Zum Drucken
ist die USB-Schnittstelle besser geeignet als
serielle oder parallele Schnittstellen, auf
vielen &unix; Systemen werden USB-Schnittstellen
jedoch nur unzureichend unterstützt. Um
Probleme zu vermeiden, sollten Sie sich einen
Drucker anschaffen, der sowohl eine USB-Schnittstelle
als auch eine parallele Schnittstelle besitzt
(viele Drucker besitzen heute beide Schnittstellen).Im Allgemeinen versenden parallele Schnittstellen
Daten nur in eine Richtung (vom Computer zum Drucker),
serielle Schnittstellen und USB-Schnittstellen versenden
Daten in beide Richtungen. Moderne parallele Schnittstellen
(EPP and ECP) übertragen Daten bi-direktional nach
dem Standard IEEE 1284.PostScriptEin Drucker kann auf zwei Arten bi-direktional
angesprochen werden. Die erste Methode benutzt einen
Druckertreiber, der die herstellerspezifische Sprache
des Druckers beherrscht. Diese Methode wird oft mit
Tintenstrahl-Druckern eingesetzt und dazu benutzt,
den Füllstand der Tintenpatronen und andere
Status-Informationen auszugeben. Die zweite Methode
wird benutzt, wenn der Drucker &postscript; beherrscht.Da ein &postscript;-Druckauftrag ein
komplettes Programm ist, kann es auch Daten an den
Computer zurückliefern, ohne überhaupt eine
Seite Papier zu bedrucken. Auf diesem Wege werden auch
Probleme wie z.B. ein Papierstau vom Drucker an den
Computer übermittelt. Darüberhinaus ist dies
die effektivste Methode, um die tatsächlich gedruckte
Anzahl an Seiten vom Drucker abzufragen: ein
&postscript;-Programm ermittelt jeweils vor und direkt nach
einem Druckauftrag den Seitenzähler des Druckers, und
vergleicht die beiden Zählerwerte.Parallele SchnittstellenUm einen Drucker mit paralleler Schnittstelle an Ihren
Computer anzuschließen, verbinden Sie den Drucker
mit einer parallelen Schnittstelle Ihres Computers. Die
Dokumentation zu Ihrem Drucker oder Computer sollte Ihnen
hier weiterhelfen.Notieren Sie sich, mit welcher parallelen
Schnittstelle des Computers Sie den Drucker verbunden
haben. Die meisten Computer haben lediglich eine parallele
Schnittstelle. Der FreeBSD-Gerätename der ersten
- Schnittstelle lautet /dev/ppc0, der
- der zweiten /dev/ppc1, und so weiter.
+ Schnittstelle lautet ppc0, der
+ der zweiten ppc1, und so weiter.
Der Gerätename für den Drucker an der ersten
parallelen Schnittstelle folgt dem selben Schema und
lautet /dev/lpt0, usw.Serielle SchnittstellenUm einen Drucker mit serieller Schnittstelle an Ihren
Computer anzuschließen, verbinden Sie den Drucker
mit einer seriellen Schnittstelle Ihres Computers. Die
Dokumentation zu Ihrem Drucker oder Computer sollte Ihnen
hier weiterhelfen.Sollten Sie sich nicht sicher sein, welches das
richtige Kabel ist, können Sie eine
dieser Alternativen ausprobieren:Ein Modemkabel verbindet alle
Anschlüsse an einem Ende des Kabels eins-zu-eins
mit den Anschlüssen am anderen Ende des Kabels.
Ein solches Kabel wird auch als (engl.)
DTE-to-DCE- oder
DEE-zu-DÜE-Kabel
bezeichnet.NullmodemkabelEin Nullmodemkabel verbindet
einige Signale eins-zu-eins, andere über Kreuz
(z.B. Sende- und Empfangsleitung), und verbindet
einige weitere direkt im Stecker miteinander. Ein
solches Kabel wird auch als (engl.)
DTE-to-DTE- oder
DEE-zu-DEE-Kabel bezeichnet.Ein Serielles Druckerkabel
schließlich, das für einige spezielle
Drucker benötigt wird, verbindet zusätzliche
Signale miteinander, anstatt sie im Stecker
zurückzuführen.BaudrateParitätFlusssteuerungSie sollten auch die Kommunikationsparameter am
Drucker einstellen; üblicherweise gibt es dazu
DIP-Schalter, oder eine Option in der
Menüführung am Drucker. Wählen Sie die
höchste Bitrate (auch als
bps Bits pro Sekunde oder
Baudrate bezeichnet), die sowohl Ihr
Drucker als auch Ihr Computer unterstützen.
Wählen Sie 7 oder 8 Bits, gerade, ungerade oder keine
Parität, und ein oder zwei Stoppbits. Wählen
Sie die Art der Flusssteuerung: keine, XON/XOFF (auch
als in-band- oder
Software-Flusssteuerung bezeichnet),
oder Hardware. Notieren Sie sich diese Einstellungen,
damit Sie sie später bei der Software-Konfiguration
zur Verfügung haben.Software-KonfigurationDieser Abschnitt beschreibt die notwendigen
Konfigurationsschritte, damit Sie mit dem
FreeBSD-LPD-System drucken
können.Diese Schritte müssen Sie ausführen:Konfigurieren Sie Ihren Kernel, soweit notwendig, um
die Schnittstelle benutzen zu können, an die Ihr
Drucker angeschlossen ist. Abschnitt Kernel-Konfiguration
erklärt, welche Optionen Sie
benötigen.Konfigurieren Sie die Kommunikationseinstellungen
für die parallele Schnittstelle, sofern Sie sie
benutzen. Abschnitt Kommunikationseinstellungen
für die parallele Schnittstelle enthält
die Details.Prüfen Sie, ob Sie Daten an den Drucker senden
können. Abschnitt Prüfen der
Drucker-Kommunikation führt eine Reihe von
Möglichkeiten auf.Konfigurieren Sie LPD
für Ihren Drucker, indem Sie die
Konfigurationsdatei /etc/printcap
anpassen. Details dazu finden Sie im Abschnitt LPD
aktivieren: die
/etc/printcap-Datei.Kernel-KonfigurationDer Betriebssystem-Kernel ist für eine bestimmte
Kombination aus Geräten kompiliert. Dies
schließt Ihre seriellen oder parallelen
Schnittstellen mit ein. Dementsprechend kann es notwendig
sein, die Kernelkonfiguration um weitere Schnittstellen zu
erweitern.So können Sie prüfen, ob Ihr Kernel die
serielle Schnittstelle unterstützt, an die Sie den
Drucker angeschlossen haben:&prompt.root; grep sioN /var/run/dmesg.bootErsetzen Sie N durch die
Nummer der seriellen Schnittstelle, beginnend bei Null.
Wenn Sie eine Ausgabe ähnlich der folgenden erhalten,
unterstützt ihr Kernel diese Schnittstelle:sio2 at port 0x3e8-0x3ef irq 5 on isa
sio2: type 16550A Erhalten Sie keine Ausgabe, oder eine Fehlermeldung,
wird die Schnittstelle nicht korrekt
unterstützt.So können Sie prüfen, ob Ihr Kernel die
parallele Schnittstelle unterstützt, an die Sie den
Drucker angeschlossen haben:&prompt.root; grep ppcN /var/run/dmesg.bootErsetzen Sie N durch die
Nummer der parallelen Schnittstelle, beginnend bei Null.
Wenn Sie eine Ausgabe ähnlich der folgenden erhalten,
unterstützt ihr Kernel diese Schnittstelle:ppc0: <Parallel port> at port 0x378-0x37f irq 7 on isa0
ppc0: SMC-like chipset (ECP/EPP/PS2/NIBBLE) in COMPATIBLE mode
ppc0: FIFO with 16/16/8 bytes threshold Erhalten Sie keine Ausgabe, oder eine Fehlermeldung,
wird die Schnittstelle nicht korrekt
unterstützt.Gegebenenfalls müssen Sie Ihren Kernel
umkonfigurieren und neu kompilieren, damit die von Ihnen
gewählte Schnittstelle unterstützt wird.Um Unterstützung für eine serielle
Schnittstelle hinzuzufügen, lesen Sie bitte Kapitel
Konfiguration des FreeBSD
Kernels. Um eine parallele Schnittstelle
hinzuzufügen, lesen Sie bitte ebenfalls jenes Kapitel
als auch den folgenden Abschnitt Kommunikationseinstellungen
für die parallele Schnittstelle.Hinzufügen der
/dev-Einträge für die
SchnittstelleFreeBSD 5.0 verfügt über das
devfs-Dateisystem, das die notwendigen
Gerätedateien automatisch anlegt. Wenn Sie FreeBSD
mit aktiviertem devfs benutzen,
können Sie diesen Abschnitt
überspringen.Damit Programme auf die Schnittstelle zugreifen
können, muss nicht nur der Kernel richtig
konfiguriert sein, sondern es muss auch eine
Gerätedatei im /dev-Verzeichnis
angelegt werden.So legen Sie eine Gerätedatei im
/dev-Verzeichnis an:Werden Sie root mithilfe des
&man.su.1;-Befehls. Geben Sie das Kennwort von
root ein, sobald Sie dazu
aufgefordert werden.Wechseln Sie in das
/dev-Verzeichnis:&prompt.root; cd /devGeben Sie ein:&prompt.root; ./MAKEDEV SchnittstelleSchnittstelle ist der
Gerätename für die Schnittstelle, die Sie
einrichten. Benutzen Sie lpt0
für einen Drucker an der ersten parallelen
Schnittstelle, lpt1 für einen
Drucker an der zweiten, usw. Benutzen Sie
ttyd0 für die erste serielle
Schnittstelle, ttyd1 für die
zweite, usw.Um zu prüfen, ob die Gerätedateien
angelegt wurden, geben Sie ein:&prompt.root; ls -l SchnittstelleKommunikationseinstellungen für die parallele
SchnittstelleWenn Sie die parallele Schnittstelle zur Kommunikation
mit Ihrem Drucker benutzen, haben Sie die Wahl zwischen
Interrupt-gesteuerter oder Polling-Datenübertragung.
Der generische Druckergerätetreiber &man.lpt.4; in
FreeBSD 4.X und 5.X benutzt das &man.ppbus.4;-System,
das die parallele Schnittstelle mithilfe des
&man.ppc.4;-Treibers steuert.Die Interrupt-gesteuerte
Datenübertragung ist die Voreinstellung im
GENERIC-Kernel. Der Treiber benutzt eine IRQ-Leitung,
um zu erfahren, wann der Drucker weitere Daten
empfangen kann.Bei der Polling-Methode
prüft der Treiber in regelmäßigen
Abständen, ob weitere Daten übertragen
werden können.Die Interrupt-gesteuerte Methode ist
überlicherweise schneller und verbraucht weniger
Rechenzeit als die Polling-Methode, es wird jedoch eine
eigene IRQ-Leitung für die Schnittstelle
benötigt. Darüberhinaus kann es mit einigen
Druckermodellen zu Problemen kommen, wenn die
Interrupt-gesteuerte Übertragung zum Einsatz
kommt.Die können die Kommunikationseinstellung entweder
in der Kernel-Konfiguration wählen, oder mittels des
&man.lptcontrol.8;-Programms zur Laufzeit
einstellen.So legen Sie die Kommunikationseinstellung
in der Kernel-Konfiguration fest:Ändern Sie Ihre Kernel-Konfigurationsdatei.
Finden Sie die Zeile, die mit device
ppc0 beginnt. Wenn Sie die zweite parallele
Schnittstelle konfigurieren möchten, suchen Sie
nach device ppc1, für die
dritte Schnittstelle ppc2,
usw.Um die Interrupt-Steuerung in FreeBSD 4.X
zu aktivieren, fügen Sie die
irq-Angabe hinzu:device ppc0 at isa? irq NErsetzen Sie N
durch die Nummer der IRQ-Leitung, die dieser
parallelen Schnittstelle zugewiesen ist.In FreeBSD 5.X ändern Sie in der
Datei /boot/device.hints die
Zeile:hint.ppc.0.irq="N"Ersetzen Sie N
durch die Nummer der IRQ-Leitung, die dieser
parallelen Schnittstelle zugewiesen ist. Stellen
Sie sicher, dass Ihre
Kernel-Konfigurationsdatei den &man.ppc.4;-Treiber
enthält:device ppcWenn Sie den Polling-Modus verwenden
möchten, lassen Sie die
irq-Angabe weg:Benutzen Sie folgende Zeile für
FreeBSD 4.X:device ppc0 at isa?In FreeBSD 5.X entfernen Sie diese Zeile
aus /boot/device.hints, oder
kommentieren Sie sie aus:hint.ppc.0.irq="N"Sollte der Treiber die Schnittstelle dennoch
im Interrupt-Modus betreiben, könnte dies an
der Aktivierung durch das &man.acpi.4;-System in
FreeBSD 5.X liegen. Bitte prüfen Sie die
ACPI- und die BIOS-Konfiguration.Wenn Sie Ihre Kernel-Konfigurationsdatei angepasst
haben, kompilieren und installieren Sie nun einen
neuen Kernel. Das Kapitel Konfiguration des
FreeBSD-Kernels enthält weitere Details
dazu.So können Sie die
Kommunikationseinstellung mit
&man.lptcontrol.8;
ändern:Um die Interrupt-Steuerung für die
Schnittstelle N zu
aktivieren, geben Sie ein:&prompt.root; lptcontrol -i -d /dev/lptNUm den Polling-Modus für die Schnittstelle
N zu aktivieren, geben Sie
ein:&prompt.root; lptcontrol -p -d /dev/lptNSie können diesen Befehl in
/etc/rc.local aufnehmen, damit er bei
jedem Systemstart automatisch ausgeführt wird.
&man.lptcontrol.8; enthält weitere
Informationen.Kommunikation mit den Drucker prüfenBevor Sie mit der Konfiguration des
LPD-Drucksystems fortfahren,
sollten Sie sicherstellen, das Sie erfolgreich Daten an
Ihren Drucker senden können. Es ist deutlich
einfacher, Kommunikations- und Konfigurationsprobleme
unabhängig voneinander zu lösen.Der Drucker kann mit einem Probeausdruck getestet
werden. Für alle Drucker, die normalen Text
unmittelbar drucken können, bietet sich das Programm
&man.lptest.1; an: es produziert alle 96 druckbaren
ASCII-Zeichen auf 96 Zeilen.PostScriptFür einen &postscript;-Drucker (oder andere
Drucker, die eine Seitenbeschreibungssprache verwenden)
muss ein passendes Programm an den Drucker gesendet
werden, z.B. dieses:%!PS
100 100 moveto 300 300 lineto stroke
310 310 moveto /Helvetica findfont 12 scalefont setfont
(Funktioniert dieser Drucker?) show
showpageSie können dieses ProstScript-Programm in einer
Datei speichern, und mit den Beispielen in den folgenden
Abschnitt verwenden.PCLNicht alle Drucker, die eine
Seitenbeschreibungssprache verwenden, benötigen ein
Test-Programm: z.B. HPs PCL (das auch in vielen
kompatiblen Druckern zum Einsatz zu kommt), versteht
normalen Text. Besondere Escape-Sequenzen werden
benutzt, um die erweiterten Möglichkeiten
aufzurufen. &postscript;-Drucker können in der Regel
keinen normalen Text direkt verarbeiten, weil sie ein
&postscript;-Programm erwarten, das eine Seite
produziert.Einen Paralleldrucker prüfenDruckerparalleleDieser Abschnitt führt vor, wie Sie die
Kommunikation mit Ihrem Drucker über die parallele
Schnittstelle prüfen können.So testen Sie einen Drucker an einer
parallelen Schnittstelle:Werden Sie root mithilfe
des &man.su.1;-Befehls.Senden Sie Testdaten an den Drucker.Wenn Ihr Drucker reinen Text direkt drucken
kann, verwenden Sie &man.lptest.1;:&prompt.root; lptest > /dev/lptNErsetzen Sie N
durch die Nummer der parallelen Schnittstelle,
an die der Drucker angeschlossen ist (angefangen
bei Null).Wenn Ihr Drucker &postscript; (oder eine
andere Seitenbeschreibungssprache) versteht,
senden Sie ein passendes Testprogramm an den
Drucker. Geben Sie folgenden Befehl ein:&prompt.root; cat > /dev/lptNErsetzen Sie N
durch die Nummer der parallelen Schnittstelle,
an die der Drucker angeschlossen ist (angefangen
bei Null). Geben Sie nun das Testprogramm ein,
Zeile für Zeile. Kontrollieren Sie jede
Zeile, bevor Sie die Eingabetaste drücken:
Sie können die Zeile später nicht mehr
ändern. Zum Schluss tippen Sie
CtrlD.
Wenn Sie ein anderes Zeichen nutzen, um das Ende
der Datei anzuzeigen, müssen Sie
natürlich die entsprechende
Tastenkombination für dieses Zeichen
betätigen.Sie können das Testprogramm auch in
einer Datei speichern, und dann diesen Befehl
aufrufen:&prompt.root; cat Testprogramm > /dev/lptNErsetzen Sie
Testprogramm durch
den Dateinamen, unter dem Sie das Testprogramm
gespeichert haben.Der Drucker sollte einige Zeilen oder eine Seite
drucken. Machen Sie sich keine Sorgen über falsche
Formatierungen: die Software-Konfiguration enthält
Informationen zum Umformatieren von
Druckaufträgen.Einen seriellen Drucker prüfenDruckerserielleDieser Abschnitt führt vor, wie Sie die
Kommunikation mit Ihrem Drucker über die parallele
Schnittstelle prüfen können.So testen Sie einen Drucker an einer
seriellen Schnittstelle:Werden Sie root mithilfe
des &man.su.1;-Befehls.Ändern Sie die Datei
/etc/remote. Fügen Sie
den folgenden Eintrag hinzu:printer:dv=/dev/Gerät:br#Baudrate:pa=ParitätBaudrateserieller AnschlussParitätErsetzen Sie
Gerät durch den
Gerätenamen der seriellen Schnittstelle
(ttyd0 für die erste,
ttyd1 für die zweite, usw.),
Baudrate ist die
Geschwindigkeit und
Parität die
Parität (even für
gerade, odd für ungerade
oder none für keine), die
Sie am Drucker eingestellt haben.Hier ein Beispieleintrag für einen Drucker,
der über die dritte serielle Schnittstelle
angeschlossen ist, mit 19.200 Baud kommuniziert und
keine Parität verwendet:printer:dv=/dev/ttyd2:br#19200:pa=noneVerbinden Sie sich mit dem Drucker über den
Befehl &man.tip.1;:&prompt.root; tip printerKommt es hierbei zu einer Fehlermeldung,
ändern Sie den Eintrag in
/etc/remote und verwenden Sie
/dev/cuaaN
statt
/dev/ttydN.Senden Sie Testdaten an den Drucker.Wenn Ihr Drucker reinen Text direkt drucken
kann, verwenden Sie &man.lptest.1;:&prompt.user; $lptestWenn Ihr Drucker &postscript; (oder eine
andere Seitenbeschreibungssprache) versteht,
senden Sie ein passendes Testprogramm an den
Drucker. Geben Sie das Testprogramm ein, Zeile
für Zeile. Kontrollieren Sie jede Zeile,
bevor Sie die Eingabetaste drücken: Sie
können die Zeile später nicht mehr
ändern. Zum Schluss tippen Sie
Control-D.Sie können das Testprogramm auch in
einer Datei speichern, und dann diesen Befehl
aufrufen:&prompt.user; >TestprogrammErsetzen Sie
Testprogramm durch
den Dateinamen, unter dem Sie das Testprogramm
gespeichert haben. Nachdem &man.tip.1; die Datei
gesendet hat, tippen Sie
Control-D.Der Drucker sollte einige Zeilen oder eine Seite
drucken. Machen Sie sich keine Sorgen über falsche
Formatierungen: die Software-Konfiguration enthält
Informationen zum Umformatieren von
Druckaufträgen.LPD aktivieren: die
/etc/printcap-DateiNachdem Sie Ihren Drucker angeschlossen haben, Ihren
Kernel richtig konfiguriert haben und erfolgreich einen
Testausdruck produziert haben, können Sie nun das
LPD-System konfigurieren.Sie konfigurieren LPD, indem
Sie die Datei /etc/printcap anpassen.
Da LPD die Datei jedes Mal liest,
wenn eine Aktion durchgeführt wird, werden
Änderungen an der Konfiguration sofort aktiv.DruckerEigenschaftenDie &man.printcap.5;-Datei ist einfach aufgebaut. Sie
können /etc/printcap mit Ihrem
bevorzugten Texteditor bearbeiten. Sie verwendet dasselbe
Format wie auch /usr/share/misc/termcap
oder /etc/remote. Informationen zum
Format finden Sie in &man.cgetent.3;.Die Grund-Konfiguration des
LPD-Systems beinhaltet diese
Schritte:Wählen Sie einen Namen (und einige praktische
Abkürzungen) für die Druckerwarteschlage, und
tragen Sie ihn in die
/etc/printcap-Datei ein. Abschnitt
Einen Namen
wählen enthält weitere
Informationen.
- Titelseite
+ Deckblätter
- Schalten Sie den Druck von Titelseiten aus (dies ist
- standardmäßig eingeschaltet), indem Sie das
+ Schalten Sie den Druck von Deckblättern aus (dies
+ ist standardmäßig eingeschaltet), indem Sie das
Attribut sh setzen. Abschnitt Den Druck von
- Titelseiten ausschalten erklärt, wie Sie
+ Deckblättern ausschalten erklärt, wie Sie
dies tun können.Legen Sie ein Pufferverzeichnis für die
Warteschlange an, und geben Sie den Pfad mittels des
sd-Attributs an: siehe Abschnitt
Das Pufferverzeichnis
anlegen.Geben Sie den Gerätenamen für Ihren
Drucker mittels des lp-Attributs an:
siehe Abschnitt Festlegen der
Drucker-Gerätedatei. Ist Ihr Drucker
über eine serielle Schnittstelle angeschlossen,
benutzen Sie das Attribut ms#,
wie dies in Abschnitt Festlegen der
Kommunikationsparameter beschrieben ist.Installieren Sie einen Filter für reinen Text:
siehe Abschnitt Den
Textfilter installieren.Testen Sie die Konfiguration, indem Sie etwas mit
dem &man.lpr.1;-Befehl drucken. Die Abschnitte Die Konfiguration
testen und Fehlersuche und
Problembehebung enthalten weitere
Informationen.Drucker, die eine Seitenbeschreibungssprache wie
&postscript; verwenden, können keinen reinen Text
drucken. Es wird deshalb angenommen, dass Sie nur
solche Dateien drucken, die Ihr Drucker verarbeiten
kann.Viele Anwender erwarten, dass sie normalen Text auf
allen Druckern drucken können. Viele Programme, die mit
LPD zusammenarbeiten, gehen
ebenfalls von dieser Annahme aus. Wenn Sie einen
&postscript;-Drucker installieren, und Sie sowohl
&postscript;- als auch Textdateien drucken möchten,
sollten Sie einen weiteren Konfigurationsschritt
ausführen und einen Text-zu-&postscript;-Filter
installieren. Der Abschnitt Drucken von reinen
Textdateien auf einem &postscript;-Drucker
erklärt, wie Sie dies tun können.Einen Namen wählenDer erste einfache Schritt ist, einen Namen für
Ihren Drucker zu wählen. Sie können diesen Namen
frei wählen, Sie sollten allerdings keine
Sonderzeichen oder Umlaute verwenden. Sie können
mehrere Alias-Namen vergeben.Ein Drucker in /etc/printcap
sollte den Alias lp haben. Dieser Name
wird standardmäßig von allen Druckbefehlen
verwendet, wenn auf der Befehlszeile oder in der
PRINTER-Umgebungsvariablen kein anderer
Drucker angegeben ist.Ebenso ist es üblich, eine ausführliche
Beschreibung des Druckermodells als letzten Alias-Namen zu
verwenden.Sobald Sie einen Namen und einige einfache Alias-Namen
ausgewählt haben, tragen Sie sie in die Datei
/etc/printcap ein. Beginnen Sie die
Zeile mit dem Namen des Druckers und fügen Sie alle
Alias-Namen an. Trennen Sie die Namen durch den
senkrechten Strich |. Fügen Sie an
das Ende der Zeile einen Doppelpunkt :
an.Das folgende Beispiel definiert zwei Drucker, einen
Diablo 630 Zeilendrucker, und einen Panasonic KX-P4455
&postscript;-Laserdrucker:#
# /etc/printcap for host rose
#
rattan|line|diablo|lp|Diablo 630 Line Printer:
bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:Der erste Drucker hat den Namen
rattan, und hat die Alias-Namen
line, diablo,
lp und Diablo 630 Line
Printer. Da er den Alias-Namen
lp trägt, wird er
standardmäßig von den Druckprogrammen
verwendet. Der zweite Drucker heißt
bamboo, und hat die Alias-Namen
ps, PS,
S, panasonic und
Panasonic KX-P4455 PostScript
v51.4.
- Keine Titelseiten drucken
+ Keine Deckblätter druckendrucken
- Titelseite
+ DeckblattStandardmäßig druckt das
- LPD-System eine
- Titelseite vor jedem Druckauftrag,
+ LPD-System ein
+ Deckblatt vor jedem Druckauftrag,
die den Namen des Druckauftrags, den Benutzer und den
Computer angibt. Während der Einrichtung des Systems
- und beim Testen stört die Titelseite allerdings,
+ und beim Testen stört das Deckblatt allerdings,
weshalb Sie sie zunächst deaktivieren
sollten.
- Um den Druck der Titelseite zu deaktivieren,
+ Um den Druck von Deckblättern zu deaktivieren,
fügen Sie das Attribut sh zur
Druckerdefinition in /etc/printcap
hinzu. Hier ein Beispiel:#
# /etc/printcap for host rose - no header pages anywhere
#
rattan|line|diablo|lp|Diablo 630 Line Printer:\
:sh:
bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\
:sh:Beachten Sie die korrekte Formatierung: die beiden
Definitionen beginnen auf einer Zeile; weitere Zeilen der
Definition sind mit einem Tab-Zeichen
eingerückt, und alle Zeilen einer Definition, bis auf
die letzte, enden mit dem Backslash
\.Das Pufferverzeichnis anlegenPufferverzeichnisDruckaufträgeDer nächste Schritt ist, das
Pufferverzeichnis anzulegen. In
diesem Verzeichnis werden Druckaufträge
zwischengespeichert, während sie gedruckt werden.
Gleichzeitig werden hier auch einige Verwaltungsdateien
des Systems abgelegt.Da sich die Dateien in diesem Verzeichnis häufig
ändern, ist es üblich, das Verzeichnis unter
/var/spool anzulegen. Es ist
nicht notwendig, Sicherungskopien der Dateien
herzustellen; das Verzeichnis kann nötigenfalls
leicht mit &man.mkdir.1; wieder angelegt werden.Es ist auch üblich, dem Verzeichnis denselben
Namen wie dem Drucker zu geben:&prompt.root; mkdir /var/spool/DruckernameWenn Sie viele Drucker verwenden, ist es am besten,
wenn Sie für die Pufferverzeichnisse ein eigenes
Unterverzeichnis in /var/spool
anlegen, wie dies hier für die beiden Beispieldrucker
rattan und bamboo
gezeigt wird:&prompt.root; mkdir /var/spool/lpd
&prompt.root; mkdir /var/spool/lpd/rattan
&prompt.root; mkdir /var/spool/lpd/bambooUm zu verhindern, dass alle Benutzer den Inhalt
aller Druckaufträge einsehen können, sollten
Sie die Rechte auf den Pufferverzeichnissen
einschränken. Die Verzeichnisse sollten dem
Benutzer daemon und der Gruppe
daemon gehören, und auch nur
vom Benutzer und der Gruppe les-, schreib- und
durchsuchbar sein. Für unsere
Beispieldrucker:&prompt.root; chown daemon:daemon /var/spool/lpd/rattan
&prompt.root; chown daemon:daemon /var/spool/lpd/bamboo
&prompt.root; chmod 770 /var/spool/lpd/rattan
&prompt.root; chmod 770 /var/spool/lpd/bambooSchließlich müssen Sie dem
LPD-System noch mitteilen, wo
Sie die Pufferverzeichnisse angelegt haben. Dazu geben Sie
in der Definition das Attribut sd
an:#
# /etc/printcap for host rose - added spooling directories
#
rattan|line|diablo|lp|Diablo 630 Line Printer:\
:sh:sd=/var/spool/lpd/rattan:
bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\
:sh:sd=/var/spool/lpd/bamboo:Beachten Sie, dass der Druckername in der ersten
Spalte beginnt, und dass alle Folgezeilen mit einem
Tab eingerückt sind.Wenn Sie das sd-Attribut nicht
angeben, verwendet das System
/var/spool/lpd als
Verzeichnis.Festlegen der Drucker-GerätedateiIm Abschnitt Hinzufügen der
/dev-Einträge für die
Schnittstelle haben Sie die korrekten
Gerätedatei für die Schnittstelle identifiziert
und angelegt. Das LPD-System
muss nun erfahren, welche Gerätedatei es
für die Datenübertragung zum Drucker verwenden
soll.Geben Sie die Gerätedatei durch das Attribut
lp in
/etc/printcap an.Wenn rattan an die erste parallele
Schnittstelle angeschlossen ist, und
bamboo an die sechste serielle, dann
sieht /etc/printcap so aus:#
# /etc/printcap for host rose - identified what devices to use
#
rattan|line|diablo|lp|Diablo 630 Line Printer:\
:sh:sd=/var/spool/lpd/rattan:\
:lp=/dev/lpt0:
bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\
:sh:sd=/var/spool/lpd/bamboo:\
:lp=/dev/ttyd5:Wenn Sie lp nicht angeben, versucht
LPD die Gerätedatei
/dev/lp zu verwenden.
/dev/lp ist zurzeit in FreeBSD nicht
definiert.Wenn Ihr Drucker über eine parallele
Schnittstelle angeschlossen ist, können Sie mit dem
Abschnitt Den
Textfilter installieren fortfahren. Verwenden Sie
eine serielle Schnittstelle, beachten Sie bitte den
folgenden Abschnitt.Kommunikationsparameter festlegenDruckerserielleFür seriell angeschlossene Drucker kann
LPD die Geschwindigkeit,
Parität und weitere Kommunikationsparameter
einstellen. Dies hat folgende Vorteile:Sie können die Parameter einfach in
/etc/printcap ändern, ohne
das Ausgabe-Filterprogramm anpassen zu
müssen.Dasselbe Ausgabe-Filterprogramm kann für
unterschiedliche Drucker verwendet werden, auch wenn
diese unterschiedliche Kommunikationseinstellungen
benötigen.Die folgenden Attribute legen die seriellen
Kommunikationsparameter fest:br#BaudrateSetzt die Übertragungsgeschwindigkeit auf
Baudrate.
Baudrate kann
üblicherweise 50, 75, 110, 134.5, 150, 300,
600, 1200, 1800, 2400, 4800, 9600, 19200, 38400,
57600, oder 115200 Bit pro Sekunde betragen.ms#stty-ModiSetzt die Eigenschaften für das Gerät,
nachdem es geöffnet wurde. Die verfügbaren
Eigenschaften sind in &man.stty.1;
aufgeführt.Wenn LPD das mit
lp angegebene Gerät öffnet,
setzt es die mit ms# angegebenen
Eigenschaften. Von besonderem Interesse sind hier die Modi
parenb, parodd,
cs5, cs6,
cs7, cs8,
cstopb, crtscts und
ixon, die in der
&man.stty.1;-Handbuchseite erläutert werden.Für den über die sechste serielle
Schnittstelle angeschlossenen Laserdrucker beträgt
die Geschwindigkeit 38.400 Baud, und es werden diese
Kommunikationseinstellungen verwendet: keine Parität
(-parenb), 8-Bit-Zeichen
(cs8), keine Modemsteuerung
(clocal) und
Hardware-Flusssteuerung
(crtscts):bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\
:sh:sd=/var/spool/lpd/bamboo:\
:lp=/dev/ttyd5:ms#-parenb cs8 clocal crtscts:Den Textfilter installierenDruckfilterEin Textfilter, auch als
Eingangsfilter bezeichnet, ist ein
Programm, das von LPD
aufgerufen wird, wenn ein Druckauftrag verarbeitet wird.
Dabei wird die Standardeingabe des Programms mit der zu
druckenden Datei verbunden, und die Standardausgabe mit
dem im lp-Attribut angegebenen
Gerät. Das Programm sollte nun die Datei einlesen,
alle Übersetzungen durchführen, die für den
Drucker notwendig sind, und das Ergebnis über die
Standardausgabe an den Drucker senden. Textfilter werden
im Abschnitt Filter genauer
erläutert.Um einen einfachen Test durchzuführen, reicht ein
kleines Filterprogramm, dass schlicht
/bin/cat aufruft, um die Daten
unverändert und den Drucker zu schicken. FreeBSD
verfügt über das Programm
lpf, das Unterstreichung und Fettdruck
für solche Drucker ermöglicht, die ansonsten
dazu nicht in der Lage wären. Darüberhinaus gibt
es viele andere Filter, die Sie einsetzen können.
lpf wird im Abschnitt lpf: ein Textfilter
ausführlich beschrieben.Legen Sie zunächst das folgende Shell-Skript als
/usr/local/libexec/if-simple mit
Ihrem bevorzugten Texteditor an:#!/bin/sh
#
# if-simple - Simple text input filter for lpd
# Installed in /usr/local/libexec/if-simple
#
# Simply copies stdin to stdout. Ignores all filter arguments.
/bin/cat && exit 0
exit 2Machen Sie die Datei ausführbar:&prompt.root; chmod 555 /usr/local/libexec/if-simpleKonfigurieren Sie nun den Textfilter für Ihren
Drucker in /etc/printcap, indem Sie
das if-Attribut hinzufügen. Hier
die Konfiguration unserer beiden Beispieldrucker:#
# /etc/printcap for host rose - added text filter
#
rattan|line|diablo|lp|Diablo 630 Line Printer:\
:sh:sd=/var/spool/lpd/rattan:\
:lp=/dev/lpt0:\
:if=/usr/local/libexec/if-simple:
bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\
:sh:sd=/var/spool/lpd/bamboo:\
:lp=/dev/ttyd5:ms#-parenb cs8 clocal crtscts:\
:if=/usr/local/libexec/if-simple:Das Shell-Skript if-simple
steht im Verzeichnis /usr/share/examples/printing.LPD aktivieren&man.lpd.8; wird von /etc/rc
gestartet, wenn die &man.rc.conf.5;-Variable
lpd_enable auf YES
gesetzt ist. Fügen Sie dazu diese Zeile in
/etc/rc.conf hinzu:lpd_enable="YES"Starten Sie Ihren Computer neu, oder starten Sie
&man.lpd.8; von Hand:&prompt.root; lpdDie Konfiguration testenDamit ist die einfache Konfiguration abgeschlossen.
Noch muss die Konfiguration aber getestet werden und
etwaige Probleme müssen behoben werden. Um die
Konfiguration zu testen, sollten Sie einen Probeausdruck
mithilfe des Programms &man.lpr.1; produzieren.
&man.lpr.1; übergibt Druckaufträge an das
LPD-System.Sie können &man.lpr.1; mit &man.lptest.1;
kombinieren, um Testdaten zu drucken. &man.lptest.1; wurde
im Abschnitt Kommunikation mit den Drucker
prüfen vorgestellt.So testen Sie die einfache
LPD-Konfiguration:&prompt.root; lptest 20 5 | lpr -PDruckernameErsetzen Sie Druckername
durch den Namen des Druckers, den Sie testen möchten.
Wenn Sie den Standard-Drucker testen möchten, rufen
Sie &man.lpr.1; ohne die Option auf.
Wenn Sie einen Drucker testen möchten, der nur
&postscript; versteht, müssen Sie ein
&postscript;-Testprogramm an &man.lpr.1; übergeben.
Ein Testprogramm, das Sie in einer Datei gespeichert haben,
können Sie mit dem Befehl
lpr Dateiname
an das LPD-System
übergeben.Bei einem &postscript;-Drucker hängt das Ergebnis
naturgemäß vom Testprogramm ab. Wenn Sie
&man.lptest.1; verwenden, sollte das Ergebnis
ungefähr so aussehen:!"#$%&'()*+,-./01234
"#$%&'()*+,-./012345
#$%&'()*+,-./0123456
$%&'()*+,-./01234567
%&'()*+,-./012345678Um sicherzustellen, dass alles richtig
funktioniert, sollten Sie jetzt ein größeres
&postscript;-Programm senden. Mit &man.lptest.1; können
Sie größere Datenmengen z.B. mit dem Befehl
lptest 80 60 erzeugen: &man.lptest.1;
produziert 60 Zeilen mit je 80 Zeichen.Wenn Sie nicht erfolgreich drucken können, finden
Sie im Abschnitt Fehlersuche und
Problembehebung weitere Informationen.
- * Erweiterte Drucker-Konfiguration
-
- Dieser Abschnitt ist noch nicht übersetzt. Lesen Sie
- bitte
- das Original in englischer Sprache.
+
+
+
+ Johann
+ Kois
+ Übersetzt von
+
+
+
+
+ Erweiterte Drucker-Konfiguration
+
+ Dieser Abschnitt beschreibt den Einsatz von Filtern für
+ das Drucken speziell formatierter Seiten oder von
+ Deckblättern, das Drucken über ein Netzwerk sowie die
+ Beschränkung und Verrechnung der Druckernutzung.
- * Filter
+ Filter
+
+ Drucken
+ Filter
+
+
+ Obwohl LPD Netzwerkprotokolle,
+ Warteschlangen, Zugriffskontrollen und andere für das
+ Drucken wichtige Aspekte prinzipiell unterstützt, passiert
+ ein Großteil der wirklichen Arbeit
+ in den sogenannten Filtern. Dabei handelt
+ es sich um Programme, die direkt mit einem Drucker
+ kommunizieren und deren Gerätespezifika und spezielle
+ Anforderungen erfüllen. Im einfachsten Fall
+ installiert man nur einen reinen Textfilter, der mit beinahe
+ allen Druckern funktionieren sollte. (Lesen Sie dazu auch den
+ Abschnitt Den Text-Filter
+ installieren.)
+
+ Um die erweiterten Fähigkeiten von Druckern auch
+ einsetzen zu können, sollten Sie verstehen, wie Filter
+ arbeiten, da diese für die Bereitstellung dieser Funktionen
+ zuständig sind. Die schlechte Nachricht ist, dass
+ Sie diese Filter bereitstellen müssen.
+ Die gute Nachricht ist allerdings, dass diese in der Regel
+ bereits vorhanden sind. Ist dies nicht der Fall, können
+ Sie einen Filter meist relativ einfach selbst erstellen.
+
+ Der Filter /usr/libexec/lpr/lpf wird
+ bereits mit FreeBSD geliefert. Er kümmert sich um die
+ korrekte Behandlung von gelöschten Zeichen (das sogenannte
+ Backspacing), um im Text
+ enthaltene Tabulatoren, sowie um die Verrechnung von
+ Druckaufträgen. Das ist aber auch alles, was dieser
+ Filter kann. Zusätzliche Filter und für die Funktion
+ von Filtern nötige Komponenten finden sich aber in der
+ FreeBSD Ports-Sammlung.
+
+ Dieser Abschnitt behandelt folgende Themen:
+
+
+
+ Der Abschnitt
+ Die Funktionsweise von Filtern versucht, einen
+ Überblick über die Rolle von Filtern innerhalb des
+ Druckprozesses zu geben. Sie sollten diesen Abschnitt lesen,
+ damit Sie verstehen, was unter der Haube
+ passiert, wenn LPD einen Filter
+ verwendet. Dieses Wissen wird Ihnen dabei helfen, Probleme,
+ die bei Installation von Filtern für verschiedene Drucker
+ entstehen können, vorauszusehen und zu beheben.
+
+
+
+ LPD geht davon aus, dass
+ jeder Drucker in der Lage ist, normalen Text zu drucken.
+ Für &postscript;- (oder andere sprachbasierte) Drucker
+ stellt dies allerdings ein Problem dar, da diese nicht in
+ der Lage sind, normalen Text direkt zu drucken. Der
+ Abschnitt Normalen Text auf
+ &postscript;-Druckern drucken beschreibt, wie Sie
+ dieses Problem lösen können. Besitzen Sie einen
+ &postscript;-Drucker, sollten Sie diesen Abschnitt
+ lesen.
+
+
+
+ &postscript; ist ein populäres Ausgabeformat, das
+ von vielen Programmen unterstützt wird. Es ist sogar
+ möglich, &postscript;-Code direkt zu schreiben. Leider
+ sind &postscript;-Drucker in der Regel relativ teuer. Der
+ Abschnitt &postscript;
+ auf Nicht-&postscript;-Druckern emulieren beschreibt,
+ wie Sie einen Textfilter anpassen müssen, um
+ &postscript;-Daten auf einem
+ nicht-&postscript;-fähigen Drucker
+ auszugeben. Haben Sie keinen &postscript;-Drucker, sollten
+ Sie insbesondere diesen Abschnitt lesen.
+
+
+
+ Der Abschnitt
+
+ Konvertierungsfilter beschreibt eine Möglichkeit
+ zur automatischen Konvertierung verschiedener Dateiformate
+ in ein von Ihrem Drucker unterstütztes Format. Nachdem
+ Sie diesen Abschnitt gelesen haben, werden Sie in der Lage
+ sein, Ihren Drucker so zu konfigurieren, dass Sie durch die
+ Eingabe von lpr -t troff-Daten, von
+ lpr -d &tex;-DVI-Daten, oder von
+ lpr -v Rasterbilddaten drucken können.
+ Daher sollten Sie diesen Abschnitt auf jeden Fall lesen.
+
+
+
+ Im Abschnitt
+ Ausgabefilter wird eine nur selten genutzte
+ Eigenschaft von LPD, die
+ sogenannten Ausgabefilter, beschrieben. Wenn Sie keine
+
+ Deckblätter drucken müssen, können
+ Sie diesen Abschnitt überspringen.
+
+
+
+ Der Abschnitt lpf:
+ Ein Textfilter beschreibt lpf,
+ einen kompletten, wenn auch einfachen Textfilter für
+ Zeilendrucker (oder auch Laserdrucker, die sich analog
+ verhalten), der bereits mit FreeBSD geliefert wird. Wenn
+ Sie nur am Ausdruck von reinem Text interessiert sind, oder
+ wenn Ihr Drucker nur Schrott produziert, wenn
+ er auf Backspace-Zeichen trifft, sollten Sie sich
+ lpf näher ansehen.
+
+
+
+
+ Eine Kopie der verschiedenen Skripte finden Sie im
+ Verzeichnis /usr/share/examples/printing.
+
- * Funktionsweise der Filter
+ Die Funktionsweise von Filtern
+
+ Bei einem Filter handelt es sich um ein ausführbares
+ Programm, das von LPD gestartet
+ wird, um den geräteabhängigen Teil der Kommunikation
+ mit einem Drucker zu übernehmen.
+
+ Wenn LPD eine Datei über
+ einen Druckauftrag drucken will, startet es ein Filterprogramm.
+ Danach setzt es die Standardeingabe des Filters auf die zu
+ druckende Datei, die Standardausgabe auf den Drucker und die
+ Standardfehlerausgabe auf /dev/console
+ (Voreinstellung) oder auf die über die Option
+ lf in /etc/printcap
+ festgelegte Datei.
-
+
+ troff
+
+
+ Welcher Filter von LPD mit
+ welchen Argumenten geladen wird, wird in der Datei
+ /etc/printcap oder durch die Argumente,
+ die der Anwender &man.lpr.1; auf der Kommandozeile
+ übergibt, festgelegt. Gibt der Anwender beispielsweise
+ lpr -t ein, startet
+ LPD über die
+ tf-Fähigkeit den troff-Filter für
+ den gewünschten Drucker. Wollen Sie hingegen normalen
+ Text drucken, wird der if-Filter gestartet.
+ (Für Ausnahmen von diesem Vorgehen lesen Sie bitte den
+ Abschnitt
+ Ausgabefilter.)
+
+ Es gibt drei Arten von Filtern, die Sie in
+ /etc/printcap angeben können:
+
+
+
+ Textfilter (die in der
+ LPD-Dokumentation als
+ input filter bezeichnet werden) sind
+ für den Druck von normalem Text zuständig.
+ Es handelt sich dabei um eine Art Standardfilter, da
+ LPD von jedem Drucker erwartet,
+ dass er normalen Text drucken kann. Aufgabe des
+ Textfilters ist es, sicherzustellen, dass gelöschte
+ Zeichen (Backspaces),
+ Tabulatoren und andere Sonderzeichen Ihren Drucker nicht
+ verwirren. Falls Sie für die Nutzung eines Druckers
+ bezahlen müssen, kann der Textfilter über die
+ Anzahl der gedruckten Zeilen auch die Anzahl der von Ihnen
+ gedruckten Seiten ermitteln. Der Textfilter wird mit
+ folgenden Argumenten gestartet:
+
+
+ filter-name
+ -c
+ -wwidth
+ -llength
+ -iindent
+ -n login
+ -h host
+ acct-file
+
+
+ Die einzelnen Argumente haben folgende Bedeutung:
+
+
+
+
+
+
+ Notwendig, wenn lpr -l
+ verwendet wird.
+
+
+
+
+ width
+
+
+ Der Wert der in
+ /etc/printcap festgelegten
+ Option pw (page
+ width). In der Voreinstellung
+ ist dieser Wert auf 132 gesetzt.
+
+
+
+
+ length
+
+
+ Der Wert der
+ pl-Fähigkeit
+ (page length),
+ Voreinstellung 66.
+
+
+
+
+ indent
+
+
+ Der durch lpr -i
+ festgelegte Einzug, Voreinstellung 0.
+
+
+
+
+ login
+
+
+ Der Name des Benutzers, der die Datei
+ druckt.
+
+
+
+
+ host
+
+
+ Der Rechner, auf dem der Druckauftrag
+ gestartet wurde.
+
+
+
+
+ acct-file
+
+
+ Der Name der Verrechnungsdatei, in der die
+ Ergebnisse der
+ af-Fähigkeit gespeichert
+ werden.
+
+
+
+
+
+
+ Drucken
+ Filter
+
+
+
+ Ein Konvertierungsfilter
+ konvertiert verschiedene Dateiformate in ein Format, das
+ Ihr Drucker auf Papier ausgeben kann. So kann etwa der
+ ditroff-Schriftsatz nicht direkt gedruckt werden, daher
+ müssen Sie einen Konvertierungsfilter installieren,
+ um diese Daten in ein Format zu bringen, das Ihr Drucker
+ verarbeiten und drucken kann. Der Abschnitt
+ Konvertierungsfilter enthält ausführliche
+ Informationen zu diesen Filtern. Konvertierungsfilter
+ können auch zur Verrechnung verwendet werden. Sie
+ werden mit folgenden Argumenten gestartet:
+
+
+ filter-name
+ -xpixel-width
+ -ypixel-height
+ -n login
+ -h host
+ acct-file
+
+
+ pixel-width ist der Wert
+ der px-Fähigkeit
+ (Voreinstellung 0), während
+ pixel-height dem Wert der
+ py-Fähigkeit (Voreinstellung
+ ebenfalls 0) entspricht.
+
+
+
+ Ausgabefilter werden nur
+ verwendet, wenn keine Textfilter vorhanden sind oder wenn
+ Deckblätter benötigt werden. Der Abschnitt
+ Ausgabefilter
+ enthält weitere Informationen. Ausgabefilter
+ unterstützen nur zwei Argumente:
+
+
+ filter-name
+ -wwidth
+ -llength
+
+
+ Beide Argumente entsprechen den Optionen
+ und der
+ Textfilter.
+
+
+
+ Alle Filter sollten mit folgenden Rückgabewerten
+ (Exitcodes) beendet werden:
+
+
+
+ exit 0
+
+
+ Der Filter hat die Datei erfolgreich gedruckt.
+
+
+
+
+ exit 1
+
+
+ Der Filter war nicht in der Lage, die Datei zu
+ drucken und meldet diesen Exitcode an
+ LPD, um die Datei erneut
+ zu drucken. LPD startet
+ daraufhin den Filter erneut.
+
+
+
+
+ exit 2
+
+
+ Der Filter war nicht in der Lage, die Datei zu
+ drucken. Bei diesem Exitcode soll
+ LPD aber nicht versuchen,
+ die Datei erneut zu drucken, sondern den Druckauftrag
+ verwerfen.
+
+
+
+
+ /usr/libexec/lpr/lpf, der mit FreeBSD
+ gelieferte Textfilter, nutzt die Argumente page
+ width und page
+ length, um festzulegen, wann ein Seitenumbruch
+ (form feed) gesendet werden
+ soll sowie zur Verrechnung von Druckaufträgen. Dazu werden
+ der Benutzername, der für den Druckauftrag verwendete
+ Rechner sowie die Verrechnungsdatei ausgewertet, um die
+ entsprechenden Einträge zu erstellen.
+
+ Wenn Sie auf der Suche nach Filtern sind, achten Sie
+ darauf, dass diese LPD-kompatibel sind. Dazu müssen
+ diese die oben beschriebenen Argumente unterstützen.
+ Wenn Sie planen, Ihre Filter selbst zu erstellen, müssen
+ diese ebenfalls die gleichen Argumente und Exitcodes
+ unterstützen.
- * Drucken von reinen Textdateien auf einem
- &postscript;-Drucker
+ Normalen Text auf &postscript;-Druckern drucken
+
+ Druckjob
+
+ Sie sind der alleinige Benutzer Ihres Computers und Ihres
+ &postscript;-Druckers und Sie sind sich sicher, dass Sie
+ niemals normalen Text an Ihren Drucker senden werden?
+ Außerdem werden Sie niemals ein Programm verwenden,
+ um normalen Text auszudrucken? Nur wenn dies alles zutrifft,
+ können Sie diesen Abschnitt überspringen.
+
+ Wollen Sie allerdings sowohl &postscript; als auch
+ normalen Text drucken, müssen Sie Ihren Drucker zuvor
+ entsprechend konfigurieren. Dazu muss Ihr Textfilter in der
+ Lage sein, zu unterscheiden, ob es sich bei einem ankommenden
+ Druckauftrag um normalen Text oder um &postscript;-Daten
+ handelt. Jeder &postscript;-Druckauftrag muss mit den Zeichen
+ %! beginnen (sehen Sie in Ihrem
+ Druckerhandbuch nach, ob Ihr Drucker weitere Sprachen
+ unterstützt). Sind dies die beiden ersten Zeichen eines
+ Druckauftrages, so handelt es sich um &postscript;-Daten, die
+ direkt gedruckt werden können. Fehlen diese Zeichen
+ allerdings, muss der Textfilter den Inhalt der Datei nach
+ &postscript; konvertieren, bevor die Datei gedruckt werden
+ kann.
+
+ Wie funktioniert diese Unterscheidung?
+
+
+ Drucker
+ seriell
+
+
+ Haben Sie einen seriellen Drucker, können Sie
+ lprps installieren.
+ lprps ist ein &postscript;-Druckerfilter,
+ der eine Zweiwegekommunikation mit einem Drucker
+ ermöglicht. Er aktualisiert die Druckerstatusdatei mit
+ Protokollinformationen des Druckers. Dadurch sind Anwender
+ und Administratoren in der Lage, den genauen Zustand des
+ Druckers zu prüfen (durch Meldungen wie toner
+ low oder paper jam).
+ Wichtiger ist allerdings, dass lprps
+ psif enthält, ein Programm, das
+ feststellen kann, ob ein ankommender Druckauftrag normalen
+ Text enthält. Ist dies der Fall, wird
+ textps (das ebenfalls mit
+ lprps geliefert wird) aufgerufen und die
+ Datei nach &postscript; konvertiert. Danach kann
+ lprps die Datei an den Drucker senden.
+
+ lprps ist in der FreeBSD
+ Ports-Sammlung enthalten. Nach
+ der Installation müssen Sie nur noch den Pfad zum
+ Programm psif angeben, das als Teil von
+ lprps installiert wird. Haben Sie
+ lprps über die Ports-Sammlung
+ installiert, fügen Sie folgende Zeile in den
+ Eintrag Ihres &postscript;-Druckers in
+ /etc/printcap ein:
+
+ :if=/usr/local/libexec/psif:
+
+ Zusätzlich sollten Sie die
+ rw-Fähigkeit aktivieren. Dadurch
+ wird LPD im Schreib- und Lesemodus
+ geöffnet.
+
+ Haben Sie hingegen einen parallelen &postscript;-Drucker,
+ was eine Zweiwegekommunikation mit Ihrem Drucker (auf die
+ lprps angewiesen ist) unmöglich
+ macht, können Sie das folgende Shell-Skript verwenden:
+
+ #!/bin/sh
+#
+# psif - Drucke PostScript oder normalen Text auf einem PostScript-Drucker
+# Script-Version; das ist NICHT die mit lprps gelieferte Version!
+# Installiert unter: /usr/local/libexec/psif
+#
-
+IFS="" read -r first_line
+first_two_chars=`expr "$first_line" : '\(..\)'`
+
+if [ "$first_two_chars" = "%!" ]; then
+ #
+ # PostScript - einfach drucken.
+ #
+ echo "$first_line" && cat && printf "\004" && exit 0
+ exit 2
+else
+ #
+ # Normaler Text - zuerst konvertieren, dann drucken.
+ #
+ ( echo "$first_line"; cat ) | /usr/local/bin/textps && printf "\004" && exit 0
+ exit 2
+fi
+
+ Für dieses Skript wurde textps
+ als seperates Programm installiert, um normalen Text nach
+ &postscript; zu konvertieren. Sie können aber auch jeden
+ anderen Text-nach-&postscript;-Konverter verwenden. Die
+ FreeBSD Ports-Sammlung
+ enthält mit a2ps ein umfangreiches
+ Programm zur Konvertierung von normalem Text nach
+ &postscript;.
- * Drucken von &postscript;-Dateien auf
- nicht-&postscript;-Druckern
+ &postscript; auf Nicht-&postscript;-Druckern emulieren
+
+
+ PostScript
+ Emulation
+
+
+ Ghostscript
+
+ Bei &postscript; handelt es sich um den
+ de facto-Standard für hochwertigen
+ Schriftsatz und Druck. Leider ist &postscript; aber auch ein
+ teurer Standard. Glücklicherweise
+ hat Aladdin Enterprises daher eine freie
+ &postscript;-ähnliche Implementierung namens
+ Ghostscript entwickelt, die auch
+ unter FreeBSD lauffähig ist. Ghostscript kann fast jede
+ &postscript;-Datei lesen und auf den verschiedensten
+ Geräten ausgeben, darunter auch auf vielen
+ Nicht-&postscript;-Druckern. Durch die Installation von
+ Ghostscript und die Nutzung eines speziellen Textfilters
+ erreichen Sie, dass sich Ihr Nicht-&postscript;-Drucker
+ wie ein echter &postscript;-Drucker verhält.
+
+ Ghostscript ist in der FreeBSD Ports-Sammlung enhalten
+ und kann daher einfach installiert werden.
+
+ Um &postscript; zu emulieren, muss der Textfilter
+ erkennen, ob er eine &postscript;-Datei drucken soll. Ist
+ dies nicht der Fall, wird die Datei direkt an den Drucker
+ geschickt. Anderenfalls wird die Datei an Ghostscript
+ übergeben, das die Datei in ein Format konvertiert,
+ das Ihr Drucker versteht.
+
+ Dazu ein Beispiel. Das folgende Skript ist ein Textfilter
+ für den Drucker DeskJet 500 von Hewlett Packard. Nutzen
+ Sie einen anderen Drucker, müssen Sie die Option
+ beim Aufruf von gs
+ (Ghostscript) entsprechend anpassen. Eine Liste der von
+ Ghostscript unterstützten Geräte erhalten Sie durch
+ die Eingabe von gs -h auf der
+ Kommandozeile.
+
+ #!/bin/sh
+#
+# ifhp - Ghostscript-emuliertes PostScript auf einem HP DeskJet 500 drucken
+# Installiert unter: /usr/local/libexec/ifhp
+
+#
+# LF als CR+LF behandeln (um einen "Treppeneffekt" auf HP/PCL-Drucker
+# zu vermeiden)
+#
+printf "\033&k2G" || exit 2
+
+#
+# Lies die ersten zwei Zeichen der Datei
+#
+IFS="" read -r first_line
+first_two_chars=`expr "$first_line" : '\(..\)'`
+
+if [ "$first_two_chars" = "%!" ]; then
+ #
+ # Oh. Es ist PostScript; mit Ghostscript konvertieren, danach drucken.
+ #
+ /usr/local/bin/gs -dSAFER -dNOPAUSE -q -sDEVICE=djet500 \
+ -sOutputFile=- - && exit 0
+else
+ #
+ # Normaler Text oder HP/PCL, einfach direkt drucken. Ans Ende setzen wir
+ # einen Seitenumbruch (also ein Form Feed), damit auch die letzte Seite
+ # ausgeworfen wird.
+ #
+ echo "$first_line" && cat && printf "\033&l0H" &&
+exit 0
+fi
+
+exit 2
+
+ Zuletzt müssen Sie LPD
+ noch durch die if-Fähigkeit über
+ den neuen Filter informieren:
+
+ :if=/usr/local/libexec/ifhp:
-
+ Das ist alles. Ab sofort sollte sowohl ein
+ lpr normaler.text als auch ein
+ lpr wasauchimmer.ps funktionieren und beide
+ Dateien sollten problemlos gedruckt werden.
- * Konvertierungsfilter
+ Konvertierungsfilter
-
- * Automatische Konvertierung: eine Alternative zu
- Konvertierungsfiltern Filters
+ Nachdem Sie Ihren Drucker wie unter Einfache Drucker-Konfiguration
+ eingerichtet haben, wollen Sie wahrscheinlich einige
+ Konvertierungsfilter installieren, damit Sie (abgesehen von
+ ASCII-Text) auch Ihre Lieblings-Dateiformate drucken
+ können.
+
+
+ Warum sollte ich einen Konvertierungsfilter
+ installieren?
+
+
+ &tex;
+ DVI-Dateien drucken
+
-
+ Konvertierungsfilter erleichtern das Drucken von
+ verschiedenen Dateiformaten. Nehmen wir beispielsweise an,
+ dass Sie sehr viel mit dem &tex;-Satzsystem arbeiten und
+ über einen &postscript;-Drucker verfügen. Eine
+ vom &tex;-System erzeugte DVI-Datei kann erst dann gedruckt
+ werden, nachdem diese nach &postscript; konvertiert wurde.
+ Dazu geben Sie Folgendes ein:
+
+ &prompt.user; dvips seaweed-analysis.dvi
+&prompt.user; lpr seaweed-analysis.ps
+
+ Haben Sie einen Konvertierungsfilter für
+ DVI-Dateien installiert, können Sie die manuelle
+ Konvertierung überspringen, da dies nun
+ LPD für Sie erledigt.
+ Wollen Sie eine DVI-Datei drucken, geben Sie nur noch den
+ folgenden Befehl ein:
+
+ &prompt.user; lpr -d seaweed-analysis.dvi
+
+ Durch die Verwendung der Option
+ wurde LPD angewiesen, unsere
+ DVI-Datei vor dem Druck zu konvertieren. Der Abschnitt
+ Formatierungs-
+ und Konvertierungsoptionen beschreibt die dabei
+ möglichen Optionen.
+
+ Für jede Konvertierungsoption, die Ihr Drucker
+ unterstützen soll, müssen Sie einen eigenen
+ Konvertierungsfilter installieren und
+ dessen Pfad in der Datei /etc/printcap
+ angeben. Ein Konvertierungsfilter verhält sich im
+ Prinzip wie ein Textfilter bei einer einfachen
+ Druckerkonfiguration (lesen Sie dazu auch den Abschnitt
+ Den Textfilter
+ installieren), allerdings konvertiert er die Datei
+ in ein Format, das Ihr Drucker versteht, anstatt normalen
+ Text zu drucken.
+
+
+ Welche Konvertierungsfilter sollte ich installieren?
+
+ Sie sollten nur Filter installieren, die Sie auch
+ benötigen. Wenn Sie sehr viele DVI-Dateien drucken,
+ sollten Sie auch einen DVI-Konvertierungsfilter installieren.
+ Müssen Sie viele troff-Daten drucken, ist ein
+ troff-Filter hilfreich.
+
+ Die folgende Tabelle listet die von
+ LPD unterstützten Filter
+ sowie die Einträge in
+ /etc/printcap auf, mit denen Sie diese
+ Fähigkeiten aktivieren. Zusätzlich wird
+ angegeben, wie Sie lpr jeweils
+ aufrufen müssen:
+
+
+
+
+
+ Dateityp
+ /etc/printcap-Fähigkeit
+ lpr-Option
+
+
+
+
+
+ cifplot
+ cf
+
+
+
+
+ DVI
+ df
+
+
+
+
+ plot
+ gf
+
+
+
+
+ ditroff
+ nf
+
+
+
+
+ FORTRAN-Text
+ rf
+
+
+
+
+ troff
+ tf
+
+
+
+
+ Rasterdaten
+ vf
+
+
+
+
+ Normaler Text
+ if
+ keine, , or
+
+
+
+
+
+
+ Wollen Sie also lpr -d verwenden,
+ muss die df-Fähigkeit in
+ /etc/printcap aktiviert sein.
+
+ FORTRAN
+
+ Obwohl manche Leute etwas anderes behaupten, sind
+ Formate wie FORTRAN-Text und -Plot inzwischen nahezu
+ obsolet. Wenn Sie diese Formate dennoch benötigen,
+ installieren Sie einfach einen angepassten Filter. Wollen
+ Sie beispielsweise zwar Printerleaf-Dateien (also Dateien des
+ Desktop Publishing-Programms von Interleaf), aber keine
+ Plotdateien drucken, so können Sie einen
+ Printerleaf-Konvertierungsfilter installieren, der es durch
+ die Aktivierung der gf-Fähigkeit
+ erlaubt, diese Dateien direkt zu drucken. Nun müssen
+ Sie Ihren Mitarbeitern nur noch mitteilen, dass
+ lpr -g nun für drucke
+ Printerleaf-Dateien steht.
+
+
+
+ Konvertierungsfilter installieren
+
+ Da Konvertierungsfilter nicht zum Basissystem von FreeBSD
+ gehören, sollten diese unter
+ /usr/local installiert werden.
+ Häufig wird das Verzeichnis
+ /usr/local/libexec verwendet, da es
+ sich bei Konvertierungsfiltern um spezielle Programme
+ handelt, die nur von LPD, aber
+ nicht von einem normalen Benutzer gestartet werden.
+
+ Um einen Konvertierungsfilter zu aktivieren, müssen
+ Sie dessen Pfad zusätzlich zur benötigten
+ Fähigkeit in der Datei
+ /etc/printcap eintragen.
+
+ In unserem Beispiel wollen wir einen
+ DVI-Konvertierungsfilter für den Drucker
+ bamboo installieren. Unsere bereits
+ bekannte /etc/printcap wurde
+ allerdings um die df-Fähigkeit
+ für den Drucker bamboo
+ erweitert.
+
+ #
+# /etc/printcap des Rechners rose - neuer df-Filter für bamboo
+#
+rattan|line|diablo|lp|Diablo 630 Line Printer:\
+ :sh:sd=/var/spool/lpd/rattan:\
+ :lp=/dev/lpt0:\
+ :if=/usr/local/libexec/if-simple:
+
+bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\
+ :sh:sd=/var/spool/lpd/bamboo:\
+ :lp=/dev/ttyd5:ms#-parenb cs8 clocal crtscts:rw:\
+ :if=/usr/local/libexec/psif:\
+ :df=/usr/local/libexec/psdf:
+
+ Beim DVI-Filter handelt es sich um ein Shell-Skript
+ namens /usr/local/libexec/psdf:
+
+ #!/bin/sh
+#
+# psdf - DVI-nach-PostScript Druckerfilter
+# Installiert unter: /usr/local/libexec/psdf
+#
+# Wird von lpd aktiviert, wenn der Nutzer lpr -d eingibt.
+#
+exec /usr/local/bin/dvips -f | /usr/local/libexec/lprps "$@"
+
+ Dieses Skript startet dvips im
+ Filtermodus (durch das Argument wird der
+ Druckauftrag über die Standardeingabe entgegengenommen).
+ Danach wird der &postscript;-Druckerfilter
+ lprps (lesen Sie dazu auch den Abschnitt
+ Drucken von
+ reinen Textdateien auf einem &postscript;-Drucker)
+ mit den von LPD übergebenen
+ Argumenten gestartet. lprps wiederum
+ nutzt diese Argumente, um die gedruckten Seiten zu
+ verrechnen.
+
+
+
+ Beispiele für Konvertierungsfilter
+
+ Da es keine verbindliche Prozedur zur Installation eines
+ Druckerfilters gibt, folgen nun weitere Beispiele.
+ Verwenden Sie diese, um Ihre eigenen Filter zu erstellen.
+ Falls ein Filter Ihren Anforderungen bereits entspricht,
+ können Sie ihn auch direkt verwenden.
+
+ Das erste Beispiel beschreibt einen
+ Konvertierungsfilter für GIF-Dateien für den
+ Drucker LaserJet III-Si von Hewlett Packard:
+
+ #!/bin/sh
+#
+# hpvf - Konvertiert GIF-Dateien nach HP/PCL, danach wird gedruckt.
+# Installiert unter: /usr/local/libexec/hpvf
+
+PATH=/usr/X11R6/bin:$PATH; export PATH
+giftopnm | ppmtopgm | pgmtopbm | pbmtolj -resolution 300 \
+ && exit 0 \
+ || exit 2
+
+ Dieser Filter konvertiert eine GIF-Datei in eine
+ portable Anymap, diese in ein portables Graustufenbild,
+ dieses wiederum in eine portable Bitmap, die
+ schließlich in ein LaserJet/PCL-kompatibles Format
+ umgewandelt wird.
+
+ /etc/printcap muss für einen
+ Drucker, der diesen Filter nutzen will, folgenden Eintrag
+ enthalten:
+
+ #
+# /etc/printcap des Rechners orchid
+#
+teak|hp|laserjet|Hewlett Packard LaserJet 3Si:\
+ :lp=/dev/lpt0:sh:sd=/var/spool/lpd/teak:mx#0:\
+ :if=/usr/local/libexec/hpif:\
+ :vf=/usr/local/libexec/hpvf:
+
+ Das folgende Skript ist ein Konvertierungsfilter, der
+ das Drucken von troff-Daten des groff-Textsatzsystems
+ auf dem &postscript;-Drucker bamboo
+ ermöglicht:
+
+ #!/bin/sh
+#
+# pstf - Konvertiert groff's troff-Daten nach PS, dann wird gedruckt.
+# Installiert unter: /usr/local/libexec/pstf
+#
+exec grops | /usr/local/libexec/lprps "$@"
+
+ Dieses Skript nutzt wiederum lprps,
+ um mit dem Drucker zu kommunizieren. Wäre der Drucker
+ an einem parallelen Port angeschlossen, würde das Skript
+ so aussehen:
+
+ #!/bin/sh
+#
+# pstf - Konvertiert groff's troff-Daten nach PS, danach wird gedruckt.
+# Installiert unter: /usr/local/libexec/pstf
+#
+exec grops
+
+ Das ist alles. Um den Filter verwenden zu können,
+ müssen Sie ihn allerdings noch in
+ /etc/printcap aktivieren:
+
+ :tf=/usr/local/libexec/pstf:
+
+ Das nächste Skript ist ein FORTRAN-Textfilter
+ für jeden Drucker, der normalen Text direkt drucken
+ kann und der hier für den Drucker
+ teak installiert wird:
+
+ #!/bin/sh
+#
+# hprf - FORTRAN-Textfilter für den Drucker LaserJet 3si:
+# Installiert unter: /usr/local/libexec/hprf
+#
+
+printf "\033&k2G" && fpr && printf "\033&l0H" &&
+ exit 0
+exit 2
+
+ Zusätzlich benötigen wir wiederum einen
+ Eintrag in /etc/printcap, um diesen
+ Filter für den Drucker teak zu
+ aktivieren:
+
+ :rf=/usr/local/libexec/hprf:
+
+ Das letzte Beispiel ist etwas komplexer. Es soll ein
+ DVI-Filter für den bereits erwähnten
+ LaserJet-Drucker teak installiert werden.
+ Der erste Teil ist einfach: Sie müssen den Pfad des
+ DVI-Filters in /etc/printcap
+ eintragen:
+
+ :df=/usr/local/libexec/hpdf:
+
+ Nun kommt der schwierige Teil: Sie müssen den
+ Filter funktionsfähig machen. Dazu benötigen Sie
+ einen DVI-nach-LaserJet/PCL-Konverter.
+ Glücklicherweise enthält die FreeBSD
+ Ports-Sammlung mit
+ dvi2xx ein solches Programm. Nach der
+ Installation des Ports verfügen wir über das
+ Programm dvilj2p, das zur Konvertierung
+ von DVI-Daten in zu den Druckern LaserJet IIp, LaserJet III,
+ sowie LaserJet 2000 kompatible Codes benötigt wird.
+
+ Durch den Einsatz von dvilj2p wird
+ der Filter hpdf relativ komplex, da
+ dvilj2p nicht von der Standardeingabe
+ lesen kann, sondern als Eingabe einen Dateinamen erwartet.
+ Zusätzlich muss der Dateiname auf
+ .dvi enden, daher ist die Verwendung
+ von /dev/fd/0 als Standardeingabe
+ problematisch. Wir können diese Problem aber umgehen,
+ indem wir einen temporären Dateinamen symbolisch
+ nach /dev/fd/0 linken. Dadurch wird
+ dvilj2p gezwungen, dennoch von der
+ Standardeingabe zu lesen.
+
+ Das letzte Problem, das wir noch lösen müssen,
+ ist, dass wir /tmp nicht als
+ temporären Link verwenden können. Symbolische
+ Links gehören dem User sowie der Gruppe
+ bin. Der Filter läuft aber als
+ User daemon. Außerdem ist
+ /tmp durch ein Sticky-Bit gesichert.
+ Daher kann der Filter den Link zwar erzeugen, ein
+ Aufräumen ist aber nicht mehr möglich, weil sich
+ die Eigentümer des Filters und des temporären
+ Verzeichnisses unterscheiden.
+
+ Daher legt der Filter den symbolischen Link im
+ Arbeitsverzeichnis an, das gleichzeitig als
+ Spooling-Verzeichnis dient (festgelegt durch die Aktivierung
+ der sd-Fähigkeit in
+ /etc/printcap). Das Arbeitsverzeichnis
+ ist ein idealer Ort für den Filter, insbesondere da
+ dieses (manchmal) sogar über mehr freien Speicherplatz
+ als /tmp verfügt.
+
+ Mit diesen Informationen sind wir nun in der Lage, den
+ Filter zu entwickeln:
+
+ #!/bin/sh
+#
+# hpdf - DVI-Daten auf einen HP/PCL-Drucker drucken
+# Installiert unter: /usr/local/libexec/hpdf
+
+PATH=/usr/local/bin:$PATH; export PATH
+
+#
+# Eine Funktion zum Aufräumen unserer temporären Dateien.
+# Diese finden sich im Arbeitsverzeichnis, das wir auch als
+# Spooling-Verzeichnis für unseren Drucker verwenden werden.
+#
+cleanup() {
+ rm -f hpdf$$.dvi
+}
+
+#
+# Eine Funktion, um fatale Fehler zu behandeln. Dazu die Meldung
+# ausgeben, danach ein exit 2. Dadurch weiß LPD, dass es
+# den Auftrag nicht noch einmal drucken soll.
+#
+fatal() {
+ echo "$@" 1>&2
+ cleanup
+ exit 2
+}
+
+#
+# Wenn ein Anwender den Auftrag entfernt, sendet LPD ein SIGINT, daher
+# wollen wir SIGINT und einige andere Signale abfangen (trappen), um
+# nach der Konvertierung aufräumen zu können.
+#
+trap cleanup 1 2 15
+
+#
+# Bevor wir anfangen, räumen wir noch auf. Sicher ist sicher.
+#
+cleanup
+
+#
+# Die DVI-Eingabedatei auf die Standardeingabe linken (die zu druckende
+# Datei).
+#
+ln -s /dev/fd/0 hpdf$$.dvi || fatal "Konnte Symlink nicht anlegen!"
+
+#
+# Umwandeln: LF = CR+LF
+#
+printf "\033&k2G" || fatal "Konnte Drucker nicht initialisieren!"
+
+#
+# Konvertieren und drucken. Da der Rückgabewert von dvilj2p
+# unzuverlässig ist, ignorieren wir ihn einfach.
+#
+dvilj2p -M1 -q -e- dfhp$$.dvi
+
+#
+# Aufräumen und beenden.
+#
+cleanup
+exit 0
+
+
+
+ Automatische Konvertierung: Eine Alternative zu
+ Konvertierungsfiltern
+
+ Alle in diesem Abschnitt besprochenen
+ Konvertierungsfilter sind zwar sehr hilfreich, allerdings
+ müssen Sie nach wie vor bei jedem Aufruf von
+ &man.lpr.1; angeben, welchen Filter sie verwenden wollen,
+ was mit der Zeit sicher nervend wird. Schlimmer ist
+ allerdings, dass die Auswahl eines unpassenden Filters
+ dazu führen kann, dass Sie Hunderte Seiten Papier
+ ausdrucken.
+
+ Statt also Konvertierungsfilter zu installieren,
+ könnten Sie den Textfilter (der ohnehin der
+ Standardfilter ist) verwenden, um den zu druckenden
+ Dateityp zu erkennen und anschließend den korrekten
+ Konvertierungsfilter auszuwählen. Um den Dateityp
+ zu bestimmen, können Sie beispielsweise
+ file verwenden. Leider ist es
+ bei einigen Dateitypen problematisch,
+ diese zu unterscheiden. Daher könnten Sie für
+ diese Dateitypen dennoch einen Konvertierungsfilter
+ installieren.
+
+ apsfilter
+
+
+ Drucken
+ Filter
+ apsfilter
+
+
+ Die FreeBSD Ports-Sammlung enthält mit
+ apsfilter einen Textfilter, der diese
+ automatische Konvertierung durchführen kann. Er ist
+ in der Lage, normalen Text sowie &postscript;- und
+ DVI-Dateien zu erkennen, diese zu konvertieren und auf
+ Ihren Drucker auszugeben.
+
- * Ausgabefilter
-
-
+ Ausgabefilter
+
+ LPD unterstützt noch eine
+ weitere Filterart, die sogenannten Ausgabefilter. Diese sind
+ – analog zu einem Textfilter –
+ für den Druck von normalem Text ausgelegt, allerdings
+ verfügen sie im Vergleich zu diesen nur über
+ sehr eingeschränkte Fähigkeiten. Wenn Sie einen
+ Ausgabefilter (aber keinen Textfilter) verwenden, dann
+
+
+
+ startet LPD nur einen
+ Ausgabefilter für den kompletten Druckauftrag, statt
+ für jede Datei des Auftrags einen eigenen Filter zu
+ starten.
+
+
+
+ kümmert sich LPD nicht
+ darum, den Beginn oder das Ende einer Datei innerhalb des
+ Druckauftrages zu finden.
+
+
+
+ übergibt LPD weder
+ den Benutzer- noch den Rechnernamen desjenigen, der den
+ Druckauftrag erteilt hat, an den Ausgabefilter, was
+ eine Verrechnung von Druckaufträgen unmöglich
+ macht. Ausgabefilter unterstützen insgesamt nur
+ zwei Argumente:
+
+
+ filter-name
+ -wwidth
+ -llength
+
+
+ width basiert auf der
+ pw-Fähigkeit,
+ length hingegen auf der
+ pl-Fähigkeit des gewählten
+ Druckers.
+
+
+
+ Lassen Sie sich von dieser angeblichen Einfachheit eines
+ Ausgabefilters nicht täuschen. Ausgabefilter sind
+ beispielsweise nicht dazu in der Lage,
+ jede Datei eines Druckauftrages auf einer neuen Seite zu
+ drucken. Dazu benötigen Sie einen Textfilter (die im
+ Abschnitt Den Textfilter
+ installieren beschrieben werden). Außerdem
+ sind Ausgabefilter in Wirklichkeit
+ komplexer, da sie den gesendeten
+ Bytestrom nicht nur auf Sonderzeichen hin untersuchen
+ müssen, sondern auch die Übertragung von Signalen
+ für LPD übernehmen
+ müssen.
+
+ Sie benötigen Ausgabefilter
+ aber dann, wenn Sie Deckblätter drucken wollen, da
+ dazu Escape-Sequenzen und Initialisierungsstrings
+ erforderlich sind. (Es ist allerdings nicht
+ möglich, den Druck dieser Deckblätter
+ zu verrechnen, da LPD
+ keine Benutzer- oder Rechnerinformationen an den
+ Ausgabefilter übergibt.)
+
+ LPD kann für den gleichen
+ Drucker sowohl Ausgabefilter als auch Textfilter verwenden.
+ In solchen Fällen verwendet LPD
+ den Ausgabefilter nur für den Druck von Deckblättern
+ (die im Abschnitt Deckblätter
+ näher beschrieben werden). Nach dem Druck des Deckblattes
+ erwartet LPD, dass sich der
+ Ausgabefilter selbst beendet. Dazu werden
+ zwei Bytes an den Ausgabefilter gesendet: ASCII 031, gefolgt
+ von ASCII 001. Wenn ein Ausgabefilter diese zwei Bytes
+ (031, 001) empfängt, sendet er das Signal
+ SIGSTOP an sich selbst. Nachdem
+ LPD den Rest des Druckauftrages
+ erledigt hat, wird der Ausgabefilter erneut gestartet, indem
+ ein SIGCONT an den Ausgabefilter
+ gesendet wird.
+
+ Haben Sie nur einen Ausgabefilter, aber
+ keinen Textfilter installiert, dann
+ verwendet LPD den Ausgabefilter auch
+ für den Druck von normalem Text. Wie bereits erwähnt,
+ werden dabei allerdings alle Dateien des Druckauftrags unmittelbar
+ hintereinander gedruckt, Seitenumbrüche oder ein
+ zusätzlicher Papiervorschub sind also nicht möglich.
+ Da dieses Verhalten von Ihnen wahrscheinlich
+ nicht gewünscht wird, werden Sie in
+ fast allen Fällen einen zusätzlichen Textfilter
+ benötigen.
+
+ Der weiter oben beschriebene Textfilter
+ lpf kann auch als Ausgabefilter verwendet
+ werden. Wenn Sie nur einen funktionierenden Ausgabefilter
+ benötigen, aber nicht den dafür benötigten
+ Code (zur Zeichenerkennung und zum Senden von Signalen)
+ schreiben wollen, sollten Sie sich lpf
+ näher ansehen. Sie können lpf
+ auch in ein Shell-Skript einbinden, um von Ihrem Drucker
+ benötigte Initialisierungscodes zu verarbeiten.
- * lpf: Ein Textfilter
-
-
+ lpf: Ein Textfilter
+
+ Der Textfilter (Eingabefilter)
+ /usr/libexec/lpr/lpf wird bereits mit
+ FreeBSD geliefert. Er erlaubt das Einrücken der
+ Ausgabe (über lpr -i), die
+ Übergabe von Zeichen-Literalen
+ (über lpr -l), das Anpassen der
+ Druckposition bei gelöschten Zeichen
+ (Backspaces) oder Tabulatoren,
+ sowie die Verrechnung gedruckter Seiten. Zusätzlich
+ kann dieser Textfilter auch als Ausgabefilter arbeiten.
+
+ lpf ist für viele verschiedene
+ Druckumgebungen geeignet. Zwar ist dieser Textfilter nicht
+ in der Lage, Initialisierungssequenzen an einen Drucker
+ zu senden, dieses Problem kann allerdings durch das Schreiben
+ und Ausführen eines Shell-Skripts (das diese Funktion
+ übernimmt) und das anschließende Aufrufen von
+ lpf gelöst werden.
+
+ Seiten verrechnen
+
+ verrechnen
+ Druckernutzung
+
+
+ Damit Sie lpf für die Verrechnung
+ von Druckaufträgen einsetzen können, müssen Sie
+ die korrekten Werte für die pw- und
+ pl-Fähigkeiten in
+ /etc/printcap eintragen.
+ lpf verwendet diese Werte, um festzustellen,
+ wieviel Text auf eine Seite passt und wieviele Seiten im
+ Druckauftrag enthalten sind. Weitere Informationen zur
+ Verrechnung der Druckernutzung enthält der Abschnitt
+ Die Druckernutzung
+ verrechnen.
- * Titelseiten
+ Deckblätter
+
+ Wenn Sie viele Benutzer mit
+ verschiedenen Druckern verwalten müssen, sollten Sie
+ Deckblätter als notwendiges
+ Übel akzeptieren.
+
+
+ Bannerseiten
+ Deckblätter
+
+
+ Deckblätter
+
+ Deckblätter (manchmal auch als
+ Bannerseiten oder
+ burst pages bezeichnet) geben an, wem
+ die Ausgabe eines Druckauftrags gehört. Sie werden
+ normalerweise in großen fetten Buchstaben gedruckt,
+ manchmal sogar mit zusätzlicher Umrandung, damit man
+ sie leichter von den tatsächlichen Seiten eines
+ Druckauftrages unterscheiden kann. Der Nachteil von
+ Deckblättern ist allerdings, dass es sich dabei um
+ eine zusätzliche zu druckende Seite handelt, die in
+ der Regel bereits nach wenigen Minuten wieder im Papierkorb
+ landet. Da aber für jeden Druckauftrag nur ein einziges
+ Deckblatt gedruckt wird, ist der Papierverbrauch in den
+ meisten Fällen tolerierbar.
+
+ Das LPD-System kann
+ Deckblätter automatisch erzeugen, wenn
+ Ihr Drucker normalen Text direkt drucken kann. Haben Sie
+ hingegen einen &postscript;-Drucker, benötigen Sie ein
+ externes Programm, um die Deckblätter zu generieren
+ (Lesen Sie dazu auch den Abschnitt Deckblätter
+ auf &postscript;-Druckern erzeugen.).
- * Titelseiten aktivieren
+ Deckblätter aktivieren
+
+ Im Abschnitt Einfache
+ Drucker-Konfiguration haben wir die Ausgabe von
+ Deckblättern durch die die Angabe der Option
+ sh
+ (suppress header) in
+ /etc/printcap deaktiviert. Um die
+ Ausgabe von Deckblättern wieder zu aktivieren,
+ müssen Sie daher die sh-Fähigkeit
+ wieder entfernen.
+
+ Das klingt zu einfach? Wo ist der Haken?
+
+ Sie haben recht. Es ist möglich,
+ dass Sie einen Ausgabefilter verwenden müssen, um die
+ nötigen Initialisierungsstrings an den Drucker zu senden.
+ Das folgende Beispiel beschreibt einen Ausgabefilter für
+ PCL-kompatible Drucker von Hewlett Packard:
+
+ #!/bin/sh
+#
+# hpof - Ausgabefilter für PCL-kompatible Drucker von Hewlett Packard
+# Installiert unter: /usr/local/libexec/hpof
+
+printf "\033&k2G" || exit 2
+exec /usr/libexec/lpr/lpf
-
+ Geben Sie den Pfad des Ausgabefilters über die
+ of-Fähigkeit an. Weitere Informationen
+ finden Sie im Abschnitt Ausgabefilter.
+
+ Das nächste Beispiel beschreibt die Datei
+ /etc/printcap des bereits erwähnten
+ Druckers teak. Allerdings sind nun die
+ Ausgabe von Deckblättern sowie der vorhin beschriebene
+ Ausgabefilter enthalten:
+
+ #
+# /etc/printcap für den Rechner orchid
+#
+teak|hp|laserjet|Hewlett Packard LaserJet 3Si:\
+ :lp=/dev/lpt0:sd=/var/spool/lpd/teak:mx#0:\
+ :if=/usr/local/libexec/hpif:\
+ :vf=/usr/local/libexec/hpvf:\
+ :of=/usr/local/libexec/hpof:
+
+ Wenn ein Anwender nun einen Druckauftrag an den Drucker
+ teak schickt, wird für jeden
+ Druckauftrag ein Deckblatt erstellt. Benötigt ein
+ Anwender keine Deckblätter, kann er die Ausgabe dieser
+ Seiten durch die Verwendung von lpr -h
+ unterdrücken. Weitere, für die Ausgabe von
+ Deckblättern interessante &man.lpr.1;-Optionen finden
+ Sie im Abschnitt Deckblattoptionen.
+
+
+ LPD verwendet ein
+ Form Feed, um das Deckblatt
+ abzuschließen. Wenn Ihr Drucker ein anderes Zeichen
+ verwendet, um eine Seite auszuwerfen, geben Sie dieses
+ über die ff-Fähigkeit in
+ /etc/printcap an.
+
-
- * Abrechnung von Titelseiten
+
+ Deckblätter kontrollieren
+
+ Haben Sie die Ausgabe von Deckblättern aktiviert,
+ gibt LPD eine ganze Seite in
+ großen Buchstaben aus, die den Anwender, den
+ verwendeten Rechner sowie den Druckauftrag beschreiben.
+ Das folgende Beispiel ist ein Deckblatt für den
+ Druckauftrag outline, der von kelly auf dem Rechner
+ rose erstellt wurde:
+
+ k ll ll
+ k l l
+ k l l
+ k k eeee l l y y
+ k k e e l l y y
+ k k eeeeee l l y y
+ kk k e l l y y
+ k k e e l l y yy
+ k k eeee lll lll yyy y
+ y
+ y y
+ yyyy
+
+
+ ll
+ t l i
+ t l
+ oooo u u ttttt l ii n nnn eeee
+ o o u u t l i nn n e e
+ o o u u t l i n n eeeeee
+ o o u u t l i n n e
+ o o u uu t t l i n n e e
+ oooo uuu u tt lll iii n n eeee
+
+
+
+
+
+
+
+
+
+ r rrr oooo ssss eeee
+ rr r o o s s e e
+ r o o ss eeeeee
+ r o o ss e
+ r o o s s e e
+ r oooo ssss eeee
-
+
+
+
+
+
+
+ Job: outline
+ Date: Sun Sep 17 11:04:58 1995
+
+ LPD fügt ein
+ Form Feed an diesen Text an,
+ damit der eigentliche Druckauftrag auf einer neuen Seite
+ gestartet wird (es sei denn, Sie haben die
+ sf-Fähigkeit (suppress
+ form feeds) des jeweiligen Druckers in
+ /etc/printcap aktiviert).
+
+ Wenn Sie dies wüschen, kann
+ LPD auch nur ein kurzes
+ Deckblatt ausgeben. Dazu verwenden Sie die
+ Option sb
+ (short banner)
+ in /etc/printcap. Dadurch erhalten Sie
+ ein Deckblatt ähnlich dem folgenden:
+
+ rose:kelly Job: outline Date: Sun Sep 17 11:07:51 1995
+
+ In der Voreinstellung druckt LPD
+ zuerst das Deckblatt und danach den eigentlichen Druckauftrag.
+ Um diese Reihenfolge umzukehren, geben Sie die Option
+ hl (header
+ last) in /etc/printcap
+ ans.
+
+
+
+ Deckblätter verrechnen
+
+ Wenn Sie die in LPD eingebaute
+ Funktion zur Erstellung von Deckblättern verwenden,
+ werden Sie auf folgendes Paradigma stoßen:
+ Deckblätter müssen kostenlos
+ sein.
+
+ Warum ist das so?
+
+ Weil der Ausgabefilter das einzige externe Programm ist,
+ das zum Zeitpunkt der Erstellung des Deckblatts eine
+ Verrechnung durchführen könnte. Da Ausgabefilter
+ aber weder über Benutzer- noch über
+ Rechnerinformationen verfügen, ist es nicht
+ möglich, einen Druckauftrag einem bestimmten Benutzer
+ zuzuordnen. Da ein Benutzer die Ausgabe von Deckblättern
+ über lpr -h unterdrücken kann,
+ ist es auch nicht möglich, die Vorgabe verrechne
+ eine zusätzliche Seite in den Text- oder
+ Konvertierungsfilter (die über die zur Verrechnung
+ nötigen Benutzer- und Rechnerinformationen verfügen)
+ aufzunehmen, weil Benutzer sonst für Deckblätter
+ bezahlen müssten, die sie nicht gedruckt haben.
+
+ Es ist ebenfalls nicht ausreichend,
+ jeden Filter eigene Deckblätter erzeugen zu lassen (und
+ sie dadurch verrechnen zu können). Wollte ein Benutzer
+ durch ein lpr -h die Ausgabe eines
+ Deckblattes unterdrücken, würde dieses nun trotzdem
+ verrechnet werden, da LPD keine
+ Informationen über die Verwendung der Option
+ an einen Filter weitergibt.
+
+ Welche Möglichkeiten habe ich nun?
+
+ Sie können:
+
+
+
+ Das Paradigma von LPD
+ einfach akzeptieren und die Deckblätter gratis
+ abgeben.
+
+
+
+ Eine alternatives Drucksystem wie
+ LPRng installieren. Der
+ Abschnitt
+ Alternativen zum Standard-Drucksystem beschreibt
+ verschiedene Drucksysteme, die
+ LPD ersetzen können.
+
+
+
+ Schreiben Sie einen intelligenten
+ Ausgabefilter. Normalerweise kümmert sich ein
+ Ausgabefilter nur um die Initialisierung des Druckers oder
+ um eine einfache Zeichenkonvertierung. Außerdem
+ eignet er sich für die Ausgabe von Deckblättern
+ und normalem Text, wenn Sie keinen Text- oder Eingabefilter
+ installiert haben. Haben Sie allerdings einen Textfilter
+ installiert, verwendet LPD
+ Ausgabefilter nur für die Ausgabe von Deckblättern.
+ Ein Ausgabefilter kann den Text des von
+ LPD erzeugten Deckblattes
+ untersuchen, um festzustellen, welcher Benutzer und welcher
+ Rechner den Druckauftrag gestartet hat. Leider weiß
+ der Ausgabefilter auch mit dieser Methode nicht, welche
+ Datei er zur Verrechnung verwenden soll (da der Name dieser
+ Datei durch die af-Fähigkeit
+ übergeben wird). Wenn Sie eine
+ Standard-Verrechnungsdatei verwenden, können Sie diese
+ in den Ausgabefilter einbauen. Um den Text des Deckblattes
+ zu untersuchen, verwenden Sie die
+ sh-Fähigkeit
+ (short header) in
+ /etc/printcap. Falls Ihnen das zuviel
+ Aufwand ist, freuen sich Ihre Benutzer sicher darüber,
+ wenn Sie ihnen den kostenlosen Druck von Deckblättern
+ erlauben.
+
+
- * Titelseiten auf &postscript;-Druckern
+ Deckblätter auf &postscript;-Druckern ausgeben
+
+ In der Regel erzeugt
+ LPD ein Deckblatt mit normalem Text,
+ das für viele verschiedene Drucker geeignet ist.
+ Da &postscript;-Drucker normalen Text aber nicht drucken
+ können, ist die LPD-Funktion
+ zur Erstellung von Deckblättern auf diesen Drucker relativ
+ sinnlos.
+
+ Es sei denn, jeder Text- und Konvertierungsfilter erzeugt
+ über den Benutzer- und Rechnernamen sein eigenes, für
+ den jeweiligen Drucker geeignetes Deckblatt. Das Problem
+ dieser Methode ist allerdings, dass ein Anwender auch dann ein
+ Deckblatt erhält, wenn er dies über
+ lpr -h verhindern wollte.
+
+ Das folgende Skript benötigt drei Argumente (den
+ Loginnamen des Benutzers, den Rechnernamen und den Namen
+ des Druckauftrages), um daraus ein einfaches
+ &postscript;-Deckblatt zu erzeugen:
+
+ #!/bin/sh
+#
+# make-ps-header - ein PostScript-Deckblatt auf stdout ausgeben
+# Installiert unter: /sr/local/libexec/make-ps-header
+#
+
+#
+# Die folgenden Werte sind PostScript-Einheiten (72 pro Zoll).
+# Passen Sie diese Werte für A4 oder die von Ihnen verwendete
+# Papiergröße an:
+#
+page_width=612
+page_height=792
+border=72
+
+#
+# Argumente prüfen
+#
+if [ $# -ne 3 ]; then
+ echo "Usage: `basename $0` <user> <host> <job>" 1>&2
+ exit 1
+fi
+
+#
+# Diese Werte in Variablen speichern, damit der PostScript-Code
+# übersichtlicher wird.
+#
+user=$1
+host=$2
+job=$3
+date=`date`
+
+#
+# Sende den PostScript-Code an stdout.
+#
+exec cat <<EOF
+%!PS
+
+%
+% Sicherstellen, dass es keine unerwünschten Wechselwirkungen mit
+% dem folgenden Druckauftrag gibt.
+%
+save
+
+%
+% Ziehe eine fette Umrandung.
+%
+$border $border moveto
+$page_width $border 2 mul sub 0 rlineto
+0 $page_height $border 2 mul sub rlineto
+currentscreen 3 -1 roll pop 100 3 1 roll setscreen
+$border 2 mul $page_width sub 0 rlineto closepath
+0.8 setgray 10 setlinewidth stroke 0 setgray
+
+%
+% Zeige den Benutzernamen groß und fett an.
+%
+/Helvetica-Bold findfont 64 scalefont setfont
+$page_width ($user) stringwidth pop sub 2 div $page_height 200 sub moveto
+($user) show
+
+%
+% Und nun zeige noch die Einzelheiten an.
+%
+/Helvetica findfont 14 scalefont setfont
+/y 200 def
+[ (Job:) (Host:) (Date:) ] {
+200 y moveto show /y y 18 sub def }
+forall
+
+/Helvetica-Bold findfont 14 scalefont setfont
+/y 200 def
+[ ($job) ($host) ($date) ] {
+ 270 y moveto show /y y 18 sub def
+} forall
+
+%
+% Das wars.
+%
+restore
+showpage
+EOF
+
+ Nun kann jeder Konvertierungs- oder Textfilter dieses
+ Skript aufrufen, um zuerst das Deckblatt zu erzeugen und
+ danach den Druckauftrag zu drucken. Das nächste
+ Beispiel enthält den bereits beschriebenen
+ DVI-Konvertierungsfilter, der hier um die Funktion zur
+ Erzeugung eines Deckblatts erweitert wurde:
+
+ #!/bin/sh
+#
+# psdf - DVI-nach-PostScript - Druckerfilter
+# Installiert unter: /usr/local/libexec/psdf
+#
+# Wird von lpd aufgerufen, wenn der Benutzer lpr -d verwendet.
+#
-
+orig_args="$@"
+
+fail() {
+ echo "$@" 1>&2
+ exit 2
+}
+
+while getopts "x:y:n:h:" option; do
+ case $option in
+ x|y) ;; # Ignore
+ n) login=$OPTARG ;;
+ h) host=$OPTARG ;;
+ *) echo "LPD started `basename $0` wrong." 1>&2
+ exit 2
+ ;;
+ esac
+done
+
+[ "$login" ] || fail "No login name"
+[ "$host" ] || fail "No host name"
+
+( /usr/local/libexec/make-ps-header $login $host "DVI File"
+ /usr/local/bin/dvips -f ) | eval /usr/local/libexec/lprps $orig_args
+
+ Beachten Sie, dass der Filter die Liste der Argumente
+ überprüft, um den Benutzer- und den Rechnernamen
+ zu ermitteln. Dieser Vorgang ist prinzipiell für alle
+ Filter identisch. Der Textfilter benötigt allerdings
+ etwas andere Argumente, die im Abschnitt Die Funktionsweise von
+ Filtern beschrieben werden.
+
+ Wie bereits erwähnt, deaktiviert diese Methode
+ leider die suppress header page-Option
+ (also die Option ) von
+ lpr. Benutzer können danach den
+ Ausdruck eines Deckblattes nicht mehr verhindern, da der
+ angepasste Filter zu jedem Druckauftrag automatisch ein
+ Deckblatt erstellt.
+
+ Damit ein Benutzer bei Bedarf den Ausdruck eines
+ Deckblatts dennoch unterbinden kann, müssen Sie
+ auch hier den im Abschnitt
+ Deckblätter verrechnen beschriebenen
+ Trick einsetzen: Schreiben Sie einen Ausgabefilter, der
+ das von LPD erzeugte Deckblatt untersucht und daraus
+ eine &postscript;-Version erzeugt. Wenn der Benutzer
+ den Druckauftrag mit lpr -h verschickt,
+ erzeugt LPD kein Deckblatt, was
+ in weiterer Folge auch für Ihren Ausgabefilter gilt.
+ Soll hingegen ein Deckblatt erzeugt werden, liest der
+ Ausgabefilter den von LPD
+ übergebenen Text und erzeugt daraus ein für
+ Ihren &postscript;-Drucker geeignetes Deckblatt.
+
+ Haben Sie Ihren &postscript;-Drucker über eine
+ serielle Verbindung angeschlossen, können Sie auch
+ lprps verwenden. In diesem Paket ist
+ mit psof auch ein Ausgabefilter
+ enthalten, der die eben beschriebenen Funktionen
+ übernehmen kann. Beachten Sie aber, dass Sie mit
+ psof keine Deckblätter verrechnen
+ können.
- * Drucken im Netzwerk
+ Drucken über ein Netzwerk
+
+
+ Drucker
+ Netzwerk
+
+
+ Netzwerkdruck
+
+ FreeBSD unterstützt das Drucken über ein
+ Netzwerk, also den Versand von Druckaufträgen an einen
+ entfernten Drucker. Man unterscheidet dabei zwei
+ Möglichkeiten:
+
+
+
+ Den Zugriff auf einen an einem entfernten Rechner
+ angeschlossenen Drucker. Sie konfigurieren dabei auf Ihrem
+ System einen Drucker, der über eine konventionelle
+ serielle oder parallele Verbindung an einem anderen Rechner
+ angeschlossen ist. Danach richten Sie
+ LPD auf dem entfernten System
+ so ein, dass andere Drucker über das Netzwerk auf
+ diesen Drucker zugreifen können. Der Abschnitt
+ Auf entfernten
+ Rechnern installierte Drucker beschreibt, wie Sie
+ dazu vorgehen müssen.
+
+
+
+ Den Zugriff auf einen direkt an ein Netzwerk
+ angeschlossenen Drucker. Ein solcher Drucker verfügt
+ anstelle (oder zusätzlich zu) einer parallelen oder
+ seriellen Schnittstelle über eine Netzwerkschnittstelle.
+ Ein solcher Drucker kann sich auf zwei Arten verhalten:
+
+
+
+ Er kann das LPD-Protokoll
+ direkt unterstützen und sogar Druckjobs von entfernten
+ Rechner verwalten. In diesem Fall verhält sich der
+ Drucker wie ein normaler Rechner, auf dem
+ LPD läuft. Lesen Sie den
+ Abschnitt
+ Auf entfernten Rechnern installierte Drucker, um
+ einen solchen Drucker einzurichten.
+
+
+
+ Er könnte Verbindungen über ein
+ Netzwerk unterstützen. In diesem Fall
+ verbinden Sie den Drucker mit einem
+ Rechner Ihres Netzwerks, der danach für die
+ Verwaltung von Druckaufträgen sowie den
+ tatsächlichen Druck verantwortlich ist. Der
+ Abschnitt Drucker mit
+ direkter TCP-Schnittstelle enthält
+ Hinweise zur Installation derartiger Drucker.
+
+
+
+
- * Drucker, die an einen anderen Computer angeschlossen
- sind
+ Auf entfernten Rechnern installierte Drucker
+
+ Das LPD-Drucksystem
+ unterstützt den Versand von Druckaufträgen an
+ andere Rechner, auf denen entweder
+ LPD läuft oder die zu
+ LPD kompatibel sind. Dadurch
+ können Sie einen Drucker auf einem Rechner installieren
+ und von anderen Rechnern des Netzwerks darauf zugreifen.
+ Außerdem werden Drucker mit direkter TCP-Schnittstelle
+ unterstützt, wenn diese das
+ LPD-Protokoll
+ unterstützen.
+
+ Um diese Art des Druckens über ein Netzwerk zu
+ aktivieren, installieren Sie zuerst Ihren Drucker auf einem
+ Rechner Ihres Netzwerks, dem sogenannten
+ printer host. Die dazu nötigen
+ Schritte werden im Abschnitt
+ Einfache Drucker-Konfiguration beschrieben. Falls
+ Sie eine erweiterte Druckerkonfiguration benötigen,
+ sollten Sie auch den Abschnitt Erweiterte
+ Drucker-Konfiguration lesen. Danach testen Sie, ob
+ der Drucker alle von Ihnen aktivierten
+ LPD-Fähigkeiten
+ unterstützt. Stellen Sie auch sicher, dass Ihr
+ lokales System berechtigt ist, den
+ LPD-Dienst auf dem
+ entfernten System zu nutzen (lesen
+ Sie dazu den Abschnitt
+ Druckaufträge auf entfernten Druckern
+ beschränken).
+
+
+ Drucker
+ Netzwerk
+
+
+ Netzwerkdrucker
+
+ Wenn Sie einen Drucker mit einer zu
+ LPD kompatiblen
+ Netzwerkschnittstelle verwenden, handelt es sich beim
+ printer host um den Drucker selbst,
+ und der Druckername ist der von Ihnen
+ für diesen Drucker vorgegebene Name. Lesen Sie die
+ Dokumentation Ihres Druckers und/oder der Netzwerkschnittstelle
+ Ihres Druckers, um dies zu klären.
+
+
+ Wenn Sie einen Hewlett Packard Laserjet-Drucker
+ verwenden, sorgt der Druckername text
+ für eine automatische LF-zu-CRLF-Konvertierung. In
+ diesem Fall wird das hpif-Skript
+ nicht benötigt.
+
+
+ Danach müssen Sie auf jedem Rechner, der auf diesen
+ Drucker zugreifen soll, einen entsprechenden Eintrag in
+ deren /etc/printcap aufnehmen. Dazu
+ werden folgende Informationen benötigt:
+
+
+
+ Der Name des Eintrags. Entspricht in der Regel dem
+ Eintrag auf dem printer host.
+
+
+
+ Lassen Sie den Eintrag für die
+ lp-Fähigkeit leer, schreiben Sie
+ also :lp=:.
+
+
+
+ Erzeugen Sie ein Spooling-Verzeichnis und geben Sie
+ dessen Pfad über die
+ sd-Fähigkeit an.
+ LPD speichert Ihre
+ Druckaufträge in diesem Verzeichnis, bevor sie an den
+ Drucker geschickt werden.
+
+
+
+ Geben Sie den Namen des printer
+ hosts über die
+ rm-Fähigkeit an.
+
+
+
+ Geben Sie den Namen des Druckers (auf dem
+ printer host) über die
+ rp-Fähigkeit an.
+
+
+
+ Das ist alles. Sie benötigen weder
+ Konvertierungsfilter, noch Seitengrößen oder
+ sonstige Angaben in Ihrer lokalen
+ /etc/printcap.
+
+ Dazu ein Beispiel. Der Rechner rose
+ verfügt über zwei Drucker, bamboo
+ und rattan. Wir wollen nun allen Benutzern
+ des Rechners orchid erlauben, diese Drucker
+ zu verwenden. Es folgt nun wieder die bereits aus dem Abschnitt
+
+ Deckblätter verwenden bekannte
+ /etc/printcap für den Rechner
+ orchid. Diese enthielt bereits einen Eintrag
+ für den Drucker teak. Zusätzlich
+ tragen wir nun die zwei Drucker des Rechners
+ rose ein:
+
+ #
+# /etc/printcap für den Rechner orchid - mit zusätzlichen
+# Einträgen für die (entfernten) Drucker auf dem Rechner rose
+#
-
+#
+# teak ist ein lokaler Drucker und direkt mit orchid verbunden:
+#
+teak|hp|laserjet|Hewlett Packard LaserJet 3Si:\
+ :lp=/dev/lpt0:sd=/var/spool/lpd/teak:mx#0:\
+ :if=/usr/local/libexec/ifhp:\
+ :vf=/usr/local/libexec/vfhp:\
+ :of=/usr/local/libexec/ofhp:
+
+#
+# rattan ist mit rose verbunden, Druckaufträge für rattan gehen daher
+# an den Rechner rose:
+#
+rattan|line|diablo|lp|Diablo 630 Line Printer:\
+ :lp=:rm=rose:rp=rattan:sd=/var/spool/lpd/rattan:
+
+#
+# bamboo ist ebenfalls mit rose verbunden:
+#
+bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\
+ :lp=:rm=rose:rp=bamboo:sd=/var/spool/lpd/bamboo:
+
+ Nun müssen wir nur noch die Spooling-Verzeichnisse
+ auf dem Rechner orchid erzeugen:
+
+ &prompt.root; mkdir -p /var/spool/lpd/rattan /var/spool/lpd/bamboo
+&prompt.root; chmod 770 /var/spool/lpd/rattan /var/spool/lpd/bamboo
+&prompt.root; chown daemon:daemon /var/spool/lpd/rattan /var/spool/lpd/bamboo
+
+ Damit können Benutzer des Rechners
+ orchid die Drucker rattan
+ und bamboo verwenden. Gibt ein Benutzer
+ auf orchid beispielsweise
+
+ &prompt.user; lpr -P bamboo -d sushi-review.dvi
+
+ ein, würde LPD auf dem Rechner
+ orchid den Druckauftrag in das
+ Spooling-Verzeichnis /var/spool/lpd/bamboo
+ kopieren und feststellen, dass es sich um einen DVI-Auftrag
+ handelt. Sobald rose über genug freien
+ Platz im bamboo-Spooling-Verzeichnis
+ verfügt, würden die beiden
+ LPDs die Datei auf den Rechner
+ rose transferieren. Diese Datei verbleibt
+ danach in der Druckerwarteschlange des Rechners
+ rose, bis der Ausdruck der Datei
+ abgeschlossen ist. Vor dem Ausdruck würde die Datei
+ noch von DVI nach &postscript; konvertiert werden, da es sich
+ bei bamboo um einen an den Rechner
+ rose angeschlossenen &postscript;-Drucker
+ handelt.
- * Drucker mit direkter TCP-Schnittstelle
+ Drucker mit direkter TCP-Schnittstelle
+
+ Wenn Sie eine Netzwerkkarte für Ihren Drucker kaufen,
+ können Sie zwei verschiedene Versionen wählen:
+ Eine Version, die ein Drucksystem emuliert (die teure Version),
+ oder eine Version, die sich verhält, als wäre der
+ Drucker an eine serielle oder parallele Schnittstelle
+ angeschlossen (die billige Version). Dieser Abschnitt
+ beschreibt die billige Variante. Bevorzugen Sie die teure
+ Variante, sollten Sie den Abschnitt Auf entfernten
+ Rechnern installierte Drucker nochmals lesen.
+
+ Das Format der Datei /etc/printcap
+ erlaubt es Ihnen, anzugeben, welche serielle oder parallele
+ Schnittstelle verwendet werden soll und (falls Sie eine
+ serielle Schnittstelle verwenden) welche Parameter (Baudrate,
+ Flußkontrolle, Behandlung von Tabulatoren, Konvertierung
+ von neuen Zeilen und andere mehr) Sie verwenden wollen. Es
+ gibt allerdings keine Möglichkeit, eine Verbindung zu
+ einem Drucker zu definieren, der einen TCP/IP- oder einem
+ anderem Netzwerkport auf Druckaufträge hin abfragt.
+
+ Um Daten an einen Netzwerkdrucker zu schicken, müssen
+ Sie daher ein Kommunikationsprogramm entwickeln, das von
+ Text- und Konvertierungsfiltern aufgerufen werden kann. Dazu
+ ein Beispiel. Das Skript netprint
+ übernimmt alle Daten von der Standardeingabe und schickt
+ sie an einen Netzwerkdrucker. netprint
+ erwartet zwei Argumente: Als erstes Argument wird der Hostname
+ des Druckers und als zweites Argument der Port, über den
+ die Verbindung erfolgen soll, übergeben. Dabei handelt
+ sich allerdings um eine Ein-Wege-Kommunikation (von FreeBSD zum
+ Drucker). Viele Netzwerkdrucker unterstützen aber auch
+ eine Zwei-Wege-Kommunikation, deren Vorteile (Abfrage des
+ Druckerstatus, die Verrechnung von Druckaufträgen und
+ andere mehr) Sie vielleicht nutzen wollen.
+
+ #!/usr/bin/perl
+#
+# netprint - Textfilter für einen Netzwerkdrucker
+# Installiert unter: /usr/local/libexec/netprint
+#
+$#ARGV eq 1 || die "Usage: $0 <printer-hostname> <port-number>";
-
+$printer_host = $ARGV[0];
+$printer_port = $ARGV[1];
+
+require 'sys/socket.ph';
+
+($ignore, $ignore, $protocol) = getprotobyname('tcp');
+($ignore, $ignore, $ignore, $ignore, $address)
+ = gethostbyname($printer_host);
+
+$sockaddr = pack('S n a4 x8', &AF_INET, $printer_port, $address);
+
+socket(PRINTER, &PF_INET, &SOCK_STREAM, $protocol)
+ || die "Can't create TCP/IP stream socket: $!";
+connect(PRINTER, $sockaddr) || die "Can't contact $printer_host: $!";
+while (<STDIN>) { print PRINTER; }
+exit 0;
+
+ Dieses Skript kann für verschiedene Filter
+ eingesetzt werden. Das folgende Beispiel verwendet den
+ an ein Netzwerk angeschlossenen Zeilendrucker Diablo 750-N.
+ Dieser Drucker empfängt zu druckende Daten auf dem
+ Port 5100. Der Hostname des Druckers lautet scrivener.
+ Daher sieht der Textfilter für diesen Drucker wie folgt
+ aus:
+
+ #!/bin/sh
+#
+# diablo-if-net - Textfilter für den Diablo-Drucker `scrivener'.
+# Drucker lauscht auf Port 5100.
+# Installiert unter: /usr/local/libexec/diablo-if-net
+#
+exec /usr/libexec/lpr/lpf "$@" | /usr/local/libexec/netprint scrivener 5100
- * Einschränken der Druckerbenutzung
+ Den Druckerzugriff beschränken
+
+
+ Drucker
+ den Zugriff beschränken
+
+
+ Dieser Abschnitt beschreibt, wie Sie den Druckerzugriff
+ beschränken können. Das
+ LPD-Drucksystem erlaubt Ihnen die
+ Kontrolle darüber, wer lokal oder über ein Netzwerk
+ auf einen Drucker zugreifen darf, ob mehrere Kopien erstellt
+ werden dürfen und wie groß Druckaufträge und
+ Druckerwarteschlangen werden dürfen.
- * Mehrfache Kopien verbieten
+ Den Ausdruck von mehreren Kopien verhindern
+
+ Das LPD-System macht es dem
+ einzelnen Benutzer einfach, mehrere Kopien einer Datei zu
+ drucken. So werden mit lpr -#5
+ beispielsweise fünf Kopien jeder Datei des Druckauftrags
+ erstellt. Ob dies gut oder schlecht ist, müssen Sie
+ selbst entscheiden.
+
+ Wenn Sie der Meinung sind, dass multiple Kopien eine
+ unnötige Beanspruchung Ihres Druckers darstellen,
+ sollten Sie die -Opion von &man.lpr.1;
+ deaktivieren, indem Sie die
+ sc-Fähigkeit in Ihre
+ /etc/printcap aufnehmen. Verwendet ein
+ Benutzer dennoch die Option , erhält
+ er daraufhin folgende Meldung:
+
+ lpr: multiple copies are not allowed
+
+ Wenn Sie den Zugriff auf einen entfernten Drucker
+ (wie in Abschnitt Auf entfernten
+ Rechnern installierte Drucker beschrieben) konfiguriert
+ haben, müssen Sie die sc-Fähigkeit
+ auch auf den entfernten Rechnern, die auf Ihren Drucker
+ zugreifen dürfen, in /etc/printcap
+ eintragen, damit Benutzer diese Vorgabe nicht durch den Wechsel
+ auf einen anderen Rechner umgehen können.
+
+ Dazu ein Beispiel. Es handelt sich dabei um die Datei
+ /etc/printcap auf dem Rechner
+ rose. Der Drucker rattan
+ soll multiple Kopien zulassen, auf dem Laserdrucker
+ bamboo sollen multiple Kopien hingegen
+ nicht erlaubt sein, daher müssen wir für diesen
+ Drucker die sc-Fähigkeit
+ aktivieren:
+
+ #
+# /etc/printcap für den Rechner rose - multiple Kopien auf bamboo verbieten
+#
+rattan|line|diablo|lp|Diablo 630 Line Printer:\
+ :sh:sd=/var/spool/lpd/rattan:\
+ :lp=/dev/lpt0:\
+ :if=/usr/local/libexec/if-simple:
+
+bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\
+ :sh:sd=/var/spool/lpd/bamboo:sc:\
+ :lp=/dev/ttyd5:ms#-parenb cs8 clocal crtscts:rw:\
+ :if=/usr/local/libexec/psif:\
+ :df=/usr/local/libexec/psdf:
+
+ Außerdem müssen wir noch die
+ sc-Fähigkeit in der Datei
+ /etc/printcap des Rechners
+ orchid aktivieren. Parallel dazu untersagen
+ wir das Erstellen von multiplen Kopien auf dem Drucker
+ teak:
+
+ #
+# /etc/printcap für den Rechner orchid - lokal machen wir keine multiplen Kopien
+# Lokaler Drucker teak oder entfernter Drucker bamboo:
+teak|hp|laserjet|Hewlett Packard LaserJet 3Si:\
+ :lp=/dev/lpt0:sd=/var/spool/lpd/teak:mx#0:sc:\
+ :if=/usr/local/libexec/ifhp:\
+ :vf=/usr/local/libexec/vfhp:\
+ :of=/usr/local/libexec/ofhp:
+
+rattan|line|diablo|lp|Diablo 630 Line Printer:\
+ :lp=:rm=rose:rp=rattan:sd=/var/spool/lpd/rattan:
-
+bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\
+ :lp=:rm=rose:rp=bamboo:sd=/var/spool/lpd/bamboo:sc:
+
+ Durch die Verwendung der
+ sc-Fähigkeit ist zwar die Verwendung
+ von lpr -# nicht mehr möglich, ein
+ Benutzer kann aber weiterhin &man.lpr.1; mehrmals hintereinander
+ aufrufen oder eine Datei mehrfach in den gleichen Druckauftrag
+ aufnehmen:
+
+ &prompt.user; lpr forsale.sign forsale.sign forsale.sign forsale.sign forsale.sign
+
+ Auch dieser Mißbrauch Ihres Druckers kann verhindert
+ werden, falls Sie dies wünschen. Diese Maßnahmen
+ werden in diesem Abschnitt allerdings nicht behandelt.
- * Zugriff auf einzelne Drucker
- einschränken
+ Den Zugriff auf bestimmte Drucker beschränken
+
+ Sie können angeben, wer auf welchem Drucker drucken
+ darf, wenn Sie den Gruppenmechanismus von &unix; in Kombination
+ mit der rg-Fähigkeit von
+ /etc/printcap einsetzen. Weisen Sie dazu
+ alle Benutzer, die auf einen Drucker zugreifen dürfen,
+ einer gemeinsamen Gruppe zu und geben Sie diese Gruppe
+ über die rg-Fähigkeit an.
+
+ Benutzer, die dieser Gruppe nicht angehören (dies
+ gilt auch für root), erhalten die
+ Meldung
+
+ lpr: Not a member of the restricted group
+
+ wenn Sie diesen Drucker verwenden wollen.
+
+ Analog zur sc-Fähigkeit
+ (suppress multiple copies) müssen
+ Sie die rg-Fähigkeit auch auf allen
+ entfernten Rechnern aktivieren, die auf Ihren Drucker
+ zugreifen dürfen (lesen Sie dazu auch den Abschnitt
+ Auf entfernten
+ Rechnern installierte Drucker).
+
+ Wollen wir beispielsweise allen Benutzern die Verwendung
+ des Druckers rattan, aber nur Mitgliedern
+ der Gruppe artists die Verwendung des
+ Druckers bamboo erlauben, passen wir die
+ bereits bekannte /etc/printcap des
+ Rechners rose entsprechend an:
+
+ #
+# /etc/printcap des Rechners rose - Zugriffsbeschränkung für bamboo
+#
+rattan|line|diablo|lp|Diablo 630 Line Printer:\
+ :sh:sd=/var/spool/lpd/rattan:\
+ :lp=/dev/lpt0:\
+ :if=/usr/local/libexec/if-simple:
+
+bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\
+ :sh:sd=/var/spool/lpd/bamboo:sc:rg=artists:\
+ :lp=/dev/ttyd5:ms#-parenb cs8 clocal crtscts:rw:\
+ :if=/usr/local/libexec/psif:\
+ :df=/usr/local/libexec/psdf:
+
+ Die Datei /etc/printcap des Rechners
+ orchid wird dadurch nicht beeinflusst. Jeder
+ Benutzer des Rechners orchid kann also
+ weiterhin den Drucker bamboo verwenden.
-
+
+ Für jeden Drucker kann nur eine einzige
+ priviligierte Gruppe erstellt werden.
+
-
- * Die Größe der Druckaufträge
- beschränken
+
+ Die Größe von Druckaufträgen kontrollieren
-
+ Druckaufträge
+
+ Wenn Sie viele Benutzer haben, die Ihre Drucker verwenden
+ dürfen, werden Sie wahrscheinlich eine Obergrenze für
+ Dateien angeben wollen, die Benutzer an Ihren Drucker senden
+ dürfen. Dies ist sinnvoll, weil Speicherplatz
+ für Spooling-Verzeichnisse nur begrenzt verfügbar
+ ist und Sie stets sicherstellen müssen, dass auch die
+ Druckaufträge anderer Benutzer verarbeitet werden
+ können.
+
+
+ Druckauftrag
+ kontrollieren
+
+
+ LPD verwendet die
+ mx-Fähigkeit, um die maximal erlaubte
+ Größe von Dateien eines Druckauftrags anzugeben.
+ Dieser Wert wird in 1.024 Bytes großen
+ BUFSIZ-Blöcken angegeben. Setzen Sie
+ diesen Wert auf Null, gibt es keine
+ Größenbeschränkung. Existiert die
+ mx-Fähigkeit hingegen überhaupt
+ nicht, so gilt ein Limit von 1.000 Blöcken.
+
+
+ Diese Limits gelten nur für die Größe
+ von Dateien innerhalb eines
+ Druckauftrages, nicht aber für
+ die Gesamtgröße des Druckauftrags.
+
+
+ LPD lehnt eine Datei auch dann
+ nicht ab, wenn sie das Limit des Druckers überschreitet.
+ Vielmehr wird die Datei bis zum Erreichen des Limits in die
+ Warteschlange geladen, danach wird der Druck gestartet. Der
+ das Limit überschreitende Rest wird hingegen verworfen
+ und nicht gedruckt!
+
+ Mit diesem Wissen können wir nun Limits für die
+ Drucker rattan und bamboo
+ definieren. Da &postscript;-Dateien der Gruppe
+ artists in der Regel sehr groß
+ sind, setzen wir ein Limit von fünf Megabytes. Für
+ den Druck von normalen Text (auf dem Drucker
+ rattan) setzen wir hingegen kein Limit:
+
+ #
+# /etc/printcap für den Rechner rose
+#
+
+#
+# Kein Größenlimit:
+#
+rattan|line|diablo|lp|Diablo 630 Line Printer:\
+ :sh:mx#0:sd=/var/spool/lpd/rattan:\
+ :lp=/dev/lpt0:\
+ :if=/usr/local/libexec/if-simple:
+
+#
+# Ein Limit von 5 Megabyte:
+#
+bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\
+ :sh:sd=/var/spool/lpd/bamboo:sc:rg=artists:mx#5000:\
+ :lp=/dev/ttyd5:ms#-parenb cs8 clocal crtscts:rw:\
+ :if=/usr/local/libexec/psif:\
+ :df=/usr/local/libexec/psdf:
+
+ Auch diese Limits gelten nur für lokale Benutzer.
+ Wenn Sie den Zugriff auf Ihren Drucker auch über ein
+ Netzwerk erlauben wollen, unterliegen die Benutzer dieser
+ Rechner diesen Limits nicht. Daher müssen Sie diese
+ Limits über die mx-Fähigkeit
+ auch in der /etc/printcap jedes
+ Rechners definieren, der Ihren Drucker verwenden darf.
+ Der Abschnitt
+ Auf entfernten Rechnern installierte Drucker
+ enthält weitere Informationen zum Drucken über
+ ein Netzwerk.
+
+ Es gibt eine weitere Möglichkeit, um die
+ Größe von Druckaufträgen von entfernten
+ Rechnern zu beschränken. Lesen Sie dazu den Abschnitt
+
+ Druckaufträge von entfernten Rechnern
+ beschränken.
- * Zugriff von Computern im Netzwerk
+ Druckaufträge von entfernten Rechnern
beschränken
-
+ Das LPD-System bietet mehrere
+ Möglichkeiten, um Druckaufträge zu beschränken,
+ die auf entfernten Rechnern gestartet wurden:
+
+
+
+ Rechner beschränken
+
+
+ Sie können festlegen, von welchen entfernten
+ Rechnern ein lokaler LPD
+ Druckaufträge annimmt, indem Sie die Dateien
+ /etc/hosts.equiv sowie
+ /etc/hosts.lpd entsprechend
+ anpassen. LPD
+ überprüft diese Dateien, um festzustellen,
+ ob ein Druckauftrag von einem Rechner stammt, der in
+ einer dieser Dateien aufgeführt ist. Ist dies
+ nicht der Fall, lehnt LPD
+ den Druckauftrag ab.
+
+ Der Aufbau dieser Datei ist sehr einfach: Jede
+ Zeile enthält einen einzigen Rechnernamen.
+ Beachten Sie aber, dass
+ /etc/hosts.equiv auch vom
+ &man.ruserok.3;-Protokoll benötigt wird und
+ Änderungen dieser Datei auch Programme wie
+ &man.rsh.1; und &man.rcp.1; beeinflussen
+ können.
+
+ Das folgende Beispiel beschreibt die Datei
+ /etc/hosts.lpd auf dem Rechner
+ rose:
+
+ orchid
+violet
+madrigal.fishbaum.de
+
+ Durch diese Vorgaben akzeptiert rose
+ nur noch Druckaufträge von den Rechnern
+ orchid, violet,
+ und madrigal.fishbaum.de.
+ Versucht ein anderer Rechner, auf den
+ LPD von
+ rose zuzugreifen, wird dieser
+ Druckauftrag abgelehnt werden.
+
+
+
+
+ Größenbeschränkungen
+
+
+ Sie können festlegen, wieviel Speicherplatz
+ auf dem Dateisystem, in dem das Spooling-Verzeichnis
+ liegt, mindestens frei sein muss. Dazu erzeugen Sie im
+ Spooling-Verzeichnis Ihres lokalen Druckers die Datei
+ minfree. In dieser Datei geben
+ Sie an, wieviele 512 Byte große
+ Blöcke auf Ihrer Platte frei sein müssen,
+ damit ein Druckauftrag von einem entfernten Rechner
+ akzeptiert wird.
+
+ Durch diese Vorgabe können Sie sicherstellen,
+ dass Benutzer von entfernten Rechnern Ihr Dateisystem
+ nicht zumüllen. Außerdem
+ können Sie damit lokale Benutzer bevorzugen, da
+ diese auch dann noch Druckaufträge erteilen
+ dürfen, wenn der verfügbare Plattenplatz
+ unter das in der Datei minfree
+ definierte Limit gefallen ist.
+
+ Legen wir nun die Datei minfree
+ für den Drucker bamboo an. Zuerst
+ untersuchen wir /etc/printcap, um
+ das Spooling-Verzeichnis für diesen Drucker zu
+ finden. Das folgende Beispiel zeigt den Eintrag
+ für den Drucker bamboo:
+
+ bamboo|ps|PS|S|panasonic|Panasonic KX-P4455 PostScript v51.4:\
+ :sh:sd=/var/spool/lpd/bamboo:sc:rg=artists:mx#5000:\
+ :lp=/dev/ttyd5:ms#-parenb cs8 clocal crtscts:rw:mx#5000:\
+ :if=/usr/local/libexec/psif:\
+ :df=/usr/local/libexec/psdf:
+
+ Das Spooling-Verzeichnis wird über die
+ sd-Fähigkeit festgelegt.
+ Wir wollen, dass mindestens drei Megabyte
+ (also 6144 Blöcke) freier Plattenplatz
+ vorhanden sein müssen, damit
+ LPD einen Druckauftrag
+ von einem entfernten Rechner akzeptiert:
+
+ &prompt.root; echo 6144 > /var/spool/lpd/bamboo/minfree
+
+
+
+
+ Benutzer beschränken
+
+
+ Sie können auch festlegen, welche entfernten
+ Benutzer Ihren lokalen Drucker verwenden dürfen,
+ indem Sie die rs-Fähigkeit in
+ /etc/printcap definieren. Wenn
+ für den Eintrag eines lokalen Druckers die
+ rs-Fähigkeit definiert ist,
+ akzeptiert LPD
+ Druckaufträge von entfernten Rechnern nur dann,
+ wenn der Benutzer, der den
+ Druckauftrag gesendet hat, auch über ein
+ gleichnamiges Benutzerkonto auf dem lokalen Rechner
+ verfügt. Ist dies nicht der Fall, lehnt
+ LPD den Druckauftrag ab.
+
+ Diese Fähigkeit ist besonders in Umgebungen
+ nützlich, in denen beispielsweise verschiedene
+ Abteilungen ein gemeinsames Netzwerk teilen, wobei
+ einige Benutzer zu mehreren Abteilungen gehören.
+ Haben diese Benutzer auch ein Benutzerkonto auf Ihrem
+ System, so können sie Ihren Drucker auch von
+ ihrer eigenen Abteilung aus nutzen. Wollen Sie zwar
+ den Zugriff auf Ihren Drucker, nicht
+ aber den Zugriff auf Ihre übrigen
+ Ressourcen erlauben, können Sie für diese
+ Benutzer einen sogenannten Token-Account
+ ohne Heimatverzeichnis und mit einer nutzlosen Shell
+ wie /usr/bin/false erstellen.
+
+
+
- * Abrechnungsdaten aufzeichnen
+ Die Druckernutzung verrechnen
+
+
+ Drucker
+ verrechnen
+
+
+ Sie wollen die Nutzung Ihrer Drucker kostenpflichtig machen?
+ Warum auch nicht? Papier und Tinte kosten Geld. Auch eine
+ regelmäßige Wartung muss bezahlt werden. Nachdem Sie
+ einen Preis festgelegt haben, den Sie für jede
+ gedruckte Seite verrechnen wollen, stellt sich die Frage, wie Sie
+ die Verrechnung der Druckkosten technisch umsetzen
+ können.
+
+ Die schlechte Nachricht ist, dass das
+ LPD-System dabei wenig hilfreich ist.
+ Die Verrechnung von Druckaufträgen hängt stark vom
+ verwendeten Drucker, den zu druckenden Dateiformaten und
+ Ihren Anforderungen an die Verrechnung
+ der Druckernutzung ab.
+
+ Um die Verrechnung der Druckernutzung zu implementieren,
+ müssen Sie sowohl Ihre Textfilter (um den Druck von
+ normalem Text abzurechnen) als auch Ihre Konvertierungsfilter
+ (um den Druck sonstiger Formate abzurechnen) entsprechend
+ anpassen, damit diese die Zahl der gedruckten Seiten
+ ermitteln können. Leider können Sie dazu nicht
+ einen einfachen Ausgabefilter verwenden, da diese die
+ Verrechnung von Druckaufträgen nicht unterstützen.
+ Weitere Informationen zu den verschiedenen Filterarten finden
+ Sie im Abschnitt Filter.
+
+ Prinzipiell gibt es zwei Möglichkeiten, wie Sie diese
+ Verrechnung umsetzen können:
+
+
+
+ Die periodische Verrechnung wird
+ häufiger verwendet, da sie einfacher zu implementieren
+ ist. Wenn ein Druckauftrag ausgeführt wird,
+ schreibt der Filter den Benutzer, den verwendeten Rechner
+ sowie die Anzahl der gedruckten Seiten in eine
+ Verrechnungsdatei. Nach einem zu definierenden Zeitraum
+ werden diese Dateien ausgewertet, die Gesamtzahl der
+ von einem Benutzer gedruckten Seiten bestimmt und dem
+ jeweiligen Benutzer verrechnet. Danach werden alle
+ Protokolldateien zurückgesetzt, und die Protokollierung
+ beginnt von Neuem.
+
+
+
+ Die unmittelbare Verrechnung wird
+ nur selten eingesetzt, das sie schwieriger zu implementieren
+ ist. Bei dieser Methode wird der Druckauftrag verrechnet,
+ sobald der Drucker verwendet wird. Dadurch können Sie
+ beispielsweise verhindern, dass ein Benutzer seine erlaubte
+ Druckquote überschreitet.
+ Zusätzlich können Sie es Ihren Benutzern erlauben,
+ deren Druckquote abzufragen oder anzupassen. Allerdings
+ benötigen Sie eine Datenbank, um Benutzer und deren
+ Quoten verwalten zu können.
+
+
+
+ Das LPD-Drucksystem
+ unterstützt beide Methoden. Allerdings müssen Sie
+ die benötigen Filter sowie den zur Verrechnung nötigen
+ Code selbst bereitstellen. Der Vorteil dabei ist allerdings,
+ dass Sie in der Wahl Ihrer Verrechnungsmethode äußerst
+ flexibel sind. So können Sie sich etwa für die
+ periodische oder die unmittelbare Verrechnung entscheiden. Sie
+ können festlegen, welche Informationen Sie erfassen wollen:
+ Benutzernamen, Rechnernamen, die Art der Druckaufträge,
+ die Anzahl der gedruckten Seiten, den Papierverbrauch, den
+ Zeitaufwand für die Bearbeitung eines Druckauftrages und
+ viele andere mehr. Dazu müssen Sie Ihre Filter entsprechend
+ anpassen, damit diese Informationen erfassst und gespeichert
+ werden.
- * Einfache Abrechnung
+ Kurzanleitung für die Implementierung der
+ Druckerverrechnung
+
+ FreeBSD bietet Ihnen zwei Programme, um eine periodische
+ Verrechnung rasch zu implementieren. Dabei handelt es sich
+ um den im Abschnitt lpf: Ein Textfilter
+ behandelten Textfilter sowie um &man.pac.8;, ein Programm,
+ mit dem Sie Einträge aus Verrechnungsdateien auslesen
+ und aufsummieren können.
+
+ Wie bereits im Abschnitt Filter erwähnt,
+ startet LPD den Text- oder
+ Konvertierungsfilter mit dem Namen der Verrechnungsdatei als
+ Argument. Dadurch weiß der Filter, in welche Datei
+ er einen Verrechnungseintrag schreiben soll. Der Name dieser
+ Datei wird über die af-Fähigkeit
+ in /etc/printcap festgelegt. Falls die
+ Datei nicht über einen absoluten Pfad angegeben wird,
+ handelt es sich um einen Pfad relativ zum
+ Spooling-Verzeichnis.
+
+ LPD startet
+ lpf mit den Argumenten page width
+ und page length, die über die
+ pw- und pl-Fähigkeit
+ definiert werden. lpf verwendet diese
+ Argumente danach, um den Papierverbrauch zu bestimmen. Nachdem
+ die Datei an den Drucker geschickt wurde, wird ein
+ Verrechnungseintrag in die Verrechnungsdatei geschrieben. Ein
+ solcher Eintrag sieht dabei ähnlich den folgenden aus:
+
+ 2.00 rose:andy
+3.00 rose:kelly
+3.00 orchid:mary
+5.00 orchid:mary
+2.00 orchid:zhang
+
+ Sie sollten für jeden Drucker eine eigene
+ Verrechnungsdatei verwenden, da lpf
+ die Verrechnungsdatei nicht sperren kann. Sind also
+ gleichzeitig zwei lpf-Instanzen aktiv,
+ kann es dazu kommen, dass Ihre Verrechnungsdatei zerstört
+ wird, wenn beide Instanzen gleichzeitig in die gleiche Datei
+ schreiben. Damit für jeden Drucker eine eigene
+ Verrechnungsdatei angelegt wird, fügen Sie den
+ Eintrag af=acct in
+ /etc/printcap ein. Dadurch wird für
+ jeden Drucker eine separate Verrechnungsdatei mit dem Namen
+ acct im Spooling-Verzeichnis des
+ jeweiligen Druckers erzeugt.
+
+ Wenn Sie Ihre Daten erfasst haben und die entstandenen
+ Kosten Ihren Benutzern verrechnen wollen, starten Sie
+ &man.pac.8;. Dazu wechseln Sie in das Spooling-Verzeichnis
+ des auszuwertenden Druckers und geben pac
+ ein. Dadurch erhalten Sie eine Ausgabe ähnlich
+ der folgenden:
+
+ Login pages/feet runs price
+orchid:kelly 5.00 1 $ 0.10
+orchid:mary 31.00 3 $ 0.62
+orchid:zhang 9.00 1 $ 0.18
+rose:andy 2.00 1 $ 0.04
+rose:kelly 177.00 104 $ 3.54
+rose:mary 87.00 32 $ 1.74
+rose:root 26.00 12 $ 0.52
+
+total 337.00 154 $ 6.74
+
+ Folgende Argumente können an &man.pac.8;
+ übergeben werden:
+
+
+
+
+
+
+ Gibt an, welcher Drucker
+ ausgewertet werden soll. Diese Option setzt voraus,
+ dass für die af-Fähigkeit
+ in /etc/printcap ein absoluter
+ Pfad angegeben wurde.
+
+
+
+
+
+
+
+ Sortiert die Ausgabe nach den verursachten Kosten
+ anstelle einer alphabetischen Sortierung der
+ Benutzernamen.
+
+
+
+
+
-
+
+ Ignoriert den Rechnernamen in Verrechnungsdateien.
+ Ist diese Option gesetzt, ist der Benutzer
+ smith auf dem Rechner
+ alpha mit dem Benutzer
+ smith auf dem Rechner
+ gamma identisch. Ist diese Option
+ nicht gesetzt, handelt es sich um unterschiedliche
+ Benutzer.
+
+
+
+
+
+
+
+ Berechnet die entstandenen Kosten aus dem
+ Preis in Dollar pro Seite
+ statt aus dem über die
+ pc-Fähigkeit in
+ /etc/printcap definierten Preis.
+ In der Voreinstellung sind dies zwei Cent pro Seite.
+ Sie können aber auch einen eigenen
+ Preis in Form einer
+ Gleitkommazahl angeben.
+
+
+
+
+
+
+
+ Die Sortierreihenfolge umkehren.
+
+
+
+
+
+
+
+ Die Verrechnungsdatei in einer neuen Datei
+ aufsummieren und die originale Verrechnungsdatei
+ zurücksetzen.
+
+
+
+
+ name
+ …
+
+
+ Verrechnungsinformationen nur für die
+ angegebenen Benutzernamen ausgeben.
+
+
+
+
+ In der Voreinstellung gibt &man.pac.8; aus, wieviele
+ Seiten von welchem Benutzer auf welchem Rechner gedruckt
+ wurden. Wenn Rechnernamen für Sie uninteressant sind
+ (weil sich Benutzer beispielsweise auf jedem Rechner
+ anmelden können), sollten Sie pac -m
+ verwenden, um die folgende Ausgabe zu erhalten:
+
+ Login pages/feet runs price
+andy 2.00 1 $ 0.04
+kelly 182.00 105 $ 3.64
+mary 118.00 35 $ 2.36
+root 26.00 12 $ 0.52
+zhang 9.00 1 $ 0.18
+
+total 337.00 154 $ 6.74
+
+
+ Um den zu verrechnenden Betrag zu ermitteln, verwendet
+ &man.pac.8; die pc-Fähigkeit von
+ /etc/printcap (Voreinstellung 200, dieser
+ Wert entspricht 2 Cents). Geben Sie hier (als Hundertfaches
+ des tatsächlichen Wertes) den Preis pro Seite an, den
+ Sie verrechnen wollen. Sie können diesen Wert
+ überschreiben, wenn Sie &man.pac.8; mit der Option
+ ausführen. Beachten Sie dabei aber,
+ dass Sie in diesem Fall die Einheiten in Dollar angeben, und
+ nicht als Hundertfaches des tatsächlichen Cent-Betrages.
+ So steht
+
+ &prompt.root; pac -p1.50
+
+ beispielsweise für einen Preis von einem Dollar und
+ fünfzig Cent pro Seite.
+
+ Der Aufruf von pac -s führt
+ schließlich dazu, dass die aufsummierten Informationen
+ in einer eigenen Auswertedatei gespeichert werden. Diese hat
+ den gleichen Namen wie die Verrechnungsdatei, es wird
+ lediglich ein _sum an den Dateinamen
+ angehängt. Danach wird die Verrechnungsdatei
+ zurückgesetzt. Wenn Sie &man.pac.8; erneut aufrufen,
+ wird die Auswertedatei eingelesen, um die Startbeträge
+ zu erhalten, alle weiteren Informationen stammen danach
+ aus der normalen Verrechnungsdatei.
- * Anzahl der gedruckten Seiten bestimmen
-
-
+ Wie kann man die Anzahl der gedruckten Seiten
+ ermitteln?
+
+ Um die Druckernutzung auch nur annähernd genau
+ verrechnen zu können, müssen Sie ermitteln, wieviel
+ Papier ein Druckauftrag verbraucht. Die Bestimmung dieses
+ Wertes ist das zentrale Problem, das Sie lösen müssen,
+ wenn Sie Druckaufträge kostenpflichtig machen wollen.
+
+ Normaler Text stellt in der Regel kein Problem dar: Sie
+ zählen dazu nur die Zeilen des Druckauftrages und
+ dividieren diesen Wert durch die Anzahl der Zeilen pro Seite,
+ die Ihr Drucker bietet. Allerdings dürfen Sie dabei
+ nicht vergessen, dass gelöschte Zeichen
+ (Backspaces) Zeilen
+ überschreiben. Außerdem können sich lange
+ logische Zeilen (im Druckauftrag) über mehrere
+ physikalische Zeilen (am Ausdruck) erstrecken.
+
+ Der im Abschnitt lpf:
+ Ein Textfilter vorgestellte Textfilter
+ lpf berücksichtigt diese
+ Besonderheiten. Wenn Sie einen eigenen Textfilter für
+ die Verrechnung der Druckernutzung schreiben wollen, sollten
+ Sie sich daher den Quellcode von lpf
+ näher ansehen.
+
+ Aber was ist mit anderen Dateiformaten?
+
+ Für die DVI-nach-LaserJet- oder für die
+ DVI-nach-&postscript;-Konvertierung können Sie die
+ Protokolldateien von dvilj oder
+ dvips auslesen, um festzustellen, wieviele
+ Seiten konvertiert wurden. Die gleiche Methode könnte
+ auch mit anderen Dateitypen funktionieren.
+
+ Alle diese Methoden haben aber das Problem, dass ein
+ Drucker möglicherweise nicht alle Seiten des
+ Druckauftrages drucken kann. So könnte es etwa zu einem
+ Papierstau kommen, der Toner könnte zu Ende gehen oder
+ es könnte ein Druckerdefekt
+ auftreten – trotzdem würden alle Seiten
+ des Druckauftrages verrechnet werden.
+
+ Was kann man dagegen tun?
+
+ Es gibt nur eine einzige sichere
+ Methode, um die Druckernutzung exakt
+ zu bestimmen. Besorgen Sie sich einen Drucker, der das
+ verbrauchte Papier protokolliert und verbinden Sie ihn
+ über eine serielle oder eine Netzwerkverbindung.
+ Nahezu alle &postscript;-Drucker, aber auch viele andere
+ Modelle und Druckertypen (beispielsweise Laserdrucker von
+ Imagen) sind dazu in der Lage. Passen Sie die Filter
+ für diese Drucker entsprechend an, damit diese
+ nach jedem Druckauftrag die Anzahl der gedruckten Seiten
+ ermitteln und verrechnen Sie Druckaufträge
+ ausschließlich über diesen
+ Wert. Danach müssen Sie sich um die Anzahl
+ der gedruckten Zeilen oder um mögliche Druckerprobleme
+ nie mehr kümmern.
+
+ Sie können aber auch großzügig sein und alle
+ Ausdrucke kostenlos abgeben.
- * Drucken
+
+
+
+ Johann
+ Kois
+ Übersetzt von
+
+
+
+
+ Drucker verwenden
+
+
+ Drucker
+ verwenden
+
- Dieser Abschnitt ist noch nicht übersetzt. Lesen Sie
- bitte
- das Original in englischer Sprache.
+ Dieser Abschnitt beschreibt, wie Sie einen unter FreeBSD
+ konfigurierten Drucker verwenden können. Die folgende
+ Liste bietet einen Überblick über wichtige
+ Anwenderbefehle:
+
+
+
+ &man.lpr.1;
+
+
+ Einen Druckauftrag drucken
+
+
+
+
+ &man.lpq.1;
+
+
+ Eine Druckerwarteschlange prüfen
+
+
+
+
+ &man.lprm.1;
+
+
+ Einen Druckauftrag aus einer Warteschlange entfernen
+ (stornieren)
+
+
+
+
+ Zusätzlich existiert mit &man.lpc.8; ein Befehl zur
+ zur Steuerung von Druckern und Druckerwarteschlangen, der im
+ Abschnitt Das
+ LPD-Drucksystem verwalten
+ näher beschrieben wird.
+
+ Jeder der drei Befehle &man.lpr.1;, &man.lprm.1;, sowie
+ &man.lpq.1; akzeptiert die Option
+ ,
+ mit der Sie den zu verwendenden Drucker (der dazu in
+ /etc/printcap definiert sein muss)
+ festlegen. Dadurch sind Sie in der Lage, Druckaufträge
+ zu erstellen, zu stornieren, oder den Status Ihrer
+ Druckaufträge zu überprüfen. Verwenden Sie die
+ Option nicht, wird der in der Umgebungsvariable
+ PRINTER definierte Drucker verwendet. Existiert
+ diese Variable nicht, greifen diese Befehle auf den Drucker
+ lp zurück.
+
+ Im Folgenden steht der Begriff
+ Standarddrucker daher
+ für den über die Umgebungsvariable PRINTER
+ definierten Drucker, oder, falls diese Variable nicht existiert,
+ für den Drucker lp.
- * Druckaufträge erstellen
+ Druckaufträge erstellen
+
+ Um eine Datei zu drucken, geben Sie folgenden Befehl ein:
+
+ &prompt.user; lpr filename...
+
+ printing
+
+ Dadurch wird jede angegebene Datei an den Standarddrucker
+ geschickt. Wenn Sie keine Datei angeben, liest &man.lpr.1;
+ die zu druckenden Daten von der Standardeingabe. Um
+ beispielsweise einige wichtige Systemdateien zu drucken, geben
+ Sie folgenden Befehl ein:
-
+ &prompt.user; lpr /etc/host.conf /etc/hosts.equiv
+
+ Um einen bestimmten Drucker auszuwählen, verwenden Sie:
+
+ &prompt.user; lpr -P printer-namefilename...
+
+ Das folgende Beispiel gibt eine ausführliche Liste aller
+ im Arbeitsverzeichnis enthaltenen Dateien auf den Drucker
+ rattan aus:
+
+ &prompt.user; ls -l | lpr -P rattan
+
+ Da keine Dateien an &man.lpr.1; übergeben werden, liest
+ lpr die zu druckenden Daten von der
+ Standardeingabe, in unserem Fall also die Ausgabe des Befehls
+ ls -l.
+
+ &man.lpr.1; akzeptiert auch verschiedene Optionen zur
+ Formatierung und Konvertierung von Dateien, zur Erzeugung von
+ multiplen Ausdrucken und so weiter. Lesen Sie dazu den
+ Abschnitt Druckoptionen.
- * Druckaufträge anzeigen
-
-
+ Druckaufträge verwalten
+
+ Druckauftrag
+
+ Wenn Sie &man.lpr.1; verwenden, werden alle zu druckenden
+ Daten in ein Paket, den sogenannten Druckauftrag,
+ gepackt und an LPD geschickt. Jeder
+ Drucker verfügt über eine Druckerwarteschlange, in
+ der Ihre Druckaufträge gemeinsam mit denen anderer Benutzer
+ verbleiben, bis sie gedruckt werden können. Zuerst
+ eintreffende Druckaufträge werden dabei auch zuerst
+ gedruckt.
+
+ Um die Druckerwarteschlange des Standarddruckers anzuzeigen,
+ verwenden Sie &man.lpq.1;. Wollen Sie einen anderen Drucker
+ abfragen, müssen Sie die Option
+ verwenden. Der Befehl
+
+ &prompt.user; lpq -P bamboo
+
+ zeigt so die Druckerwarteschlange des Druckers
+ bamboo an. Dieser Befehl liefert eine
+ Ausgabe ähnlich der folgenden:
+
+ bamboo is ready and printing
+Rank Owner Job Files Total Size
+active kelly 9 /etc/host.conf, /etc/hosts.equiv 88 bytes
+2nd kelly 10 (standard input) 1635 bytes
+3rd mary 11 ... 78519 bytes
+
+ Derzeit enthält die Warteschlange von
+ bamboo drei Druckaufträge. Dem ersten
+ Auftrag, der vom Benutzer kelly erstellt wurde, wurde die
+ Auftragsnummer (job number) 9 zugewiesen.
+ Analog erhält jeder Druckerauftrag eine eindeutige Nummer
+ zugewiesen. Diese Nummern sind nur dann von Bedeutung, wenn
+ Sie einen Druckauftrag stornieren wollen. Der Abschnitt
+ Druckaufträge
+ stornieren beschreibt, wie Sie dazu vorgehen.
+
+ Der Auftrag mit der Nummer 9 besteht aus zwei Dateien,
+ mehrere an &man.lpr.1; übergebene Dateien werden also als
+ Teil eines (gemeinsamen) Druckauftrags betrachtet. Dieser
+ Druckauftrag ist derzeit aktiv (beachten Sie den Status
+ active in der Spalte Rank),
+ wird also gerade gedruckt. Der zweite Auftrag besteht aus
+ Daten, die von der Standardeingabe an &man.lpr.1;
+ übergeben wurden. Der dritte Auftrag wurde vom Benutzer
+ mary erstellt. Er ist sehr viel
+ größer als die anderen Aufträge. Da der
+ Pfad der zu druckenden Datei aufgrund seiner Länge nicht
+ in der Spalte Files Platz hat, werden von
+ &man.lpq.1; nur drei Punkte angezeigt.
+
+ Die erste Zeile der Ausgabe von &man.lpq.1; ist ebenfalls
+ sehr nützlich: Sie beschreibt den momentanen Druckerstatus
+ (oder zumindest, was LPD denkt,
+ dass der Drucker gerade macht).
+
+ &man.lpq.1; unterstützt auch die Option
+ zur Erstellung einer ausführlicheren
+ Ausgabe. Die Eingabe von lpq -l erzeugt
+ für unser obiges Beispiel die folgende Ausgabe:
+
+ waiting for bamboo to become ready (offline ?)
+kelly: 1st [job 009rose]
+ /etc/host.conf 73 bytes
+ /etc/hosts.equiv 15 bytes
+
+kelly: 2nd [job 010rose]
+ (standard input) 1635 bytes
+
+mary: 3rd [job 011rose]
+ /home/orchid/mary/research/venus/alpha-regio/mapping 78519 bytes
- * Druckaufträge löschen
-
-
+ Druckaufträge stornieren
+
+ Mit &man.lprm.1; können Sie einen Druckauftrag
+ stornieren. Häufig ist &man.lprm.1; auch noch in der
+ Lage, einen bereits aktiven Auftrag abzubrechen, allerdings
+ wird dabei in der Regel trotzdem ein Teil des Auftrages oder
+ der gesamte Auftrag gedruckt.
+
+ Um einen Druckauftrag auf dem Standarddrucker zu
+ stornieren, müssen Sie zuerst die Auftragsnummer
+ über &man.lpq.1; ermitteln. Danach geben Sie
+ Folgendes ein:
+
+ &prompt.user; lprm job-number
+
+ Um einen Druckauftrag eines anderen Druckers zu stornieren,
+ benötigen Sie wiederum die Option . Der
+ folgende Befehl entfernt den Druckauftrag mit der Nummer 10
+ aus der Warteschlange des Druckers
+ bamboo:
+
+ &prompt.user; lprm -P bamboo 10
+
+ &man.lprm.1; unterstützt verschiedene Kurzbefehle:
+
+
+
+ lprm -
+
+
+ Entfernt alle Druckaufträge (des Standarddruckers),
+ die von Ihnen erstellt wurden.
+
+
+
+
+ lprm user
+
+
+ Entfernt alle Druckaufträge (des Standarddruckers),
+ die vom Benutzer user erstellt
+ wurden. Der Superuser kann im Gegensatz zu einem normalen
+ Benutzer auch Aufträge anderer Benutzer entfernen.
+
+
+
+
+ lprm
+
+
+ Wenn Sie weder eine Auftragsnummer, einen Benutzernamen,
+ noch die Option angeben, entfernt
+ &man.lprm.1; den aktiven Druckauftrag auf dem
+ Standarddrucker, falls dieser Auftrag von Ihnen erstellt
+ wurde. Der Superuser kann hingegen jeden aktiven
+ Druckauftrag abbrechen.
+
+
+
+
+ Verwenden Sie zusätzlich die Option
+ zu den eben beschriebenen Kurzbefehlen, wenn Sie diese auf einen
+ anderen Drucker als den Standarddrucker anwenden wollen. So
+ entfernt der folgende Befehl beispielsweise alle
+ Druckaufträge des aktuellen Benutzers aus der
+ Druckerwarteschlange des Druckers
+ rattan:
+
+ &prompt.user; lprm -P rattan -
+
+
+ Wenn Sie in einer Netzwerkumgebung arbeiten, erlaubt es
+ &man.lprm.1; Ihnen nur, Druckaufträge auf dem Rechner
+ zu stornieren, auf dem sie erstellt wurden. Dies gilt selbst
+ dann, wenn der gleiche Drucker auch auf anderen Rechnern des
+ Netzwerks verfügbar ist. Die folgende Befehlsfolge
+ veranschaulicht diesen Umstand:
+
+ &prompt.user; lpr -P rattan myfile
+&prompt.user; rlogin orchid
+&prompt.user; lpq -P rattan
+Rank Owner Job Files Total Size
+active seeyan 12 ... 49123 bytes
+2nd kelly 13 myfile 12 bytes
+&prompt.user; lprm -P rattan 13
+rose: Permission denied
+&prompt.user; logout
+&prompt.user; lprm -P rattan 13
+dfA013rose dequeued
+cfA013rose dequeued
+
+
- * Optionen für Druckaufträge
+ Abseits von normalem Text: Druckoptionen
+
+ &man.lpr.1; unterstützt verschiedene Optionen zur
+ Formatierung von Text, zur Konvertierung von Grafik- und
+ anderen Dateiformaten, zur Erzeugung von multiplen Kopien,
+ zur Verwaltung von Druckaufträgen und andere mehr.
+ Dieser Abschnitt beschreibt einige dieser Optionen.
- * Formatierungs- und Konvertierungs-Optionen
+ Formatierungs- und Konvertierungsoptionen
+
+ Die folgenden &man.lpr.1;-Optionen kontrollieren die
+ Formatierung von in einem Druckauftrag enthaltenen Dateien.
+ Verwenden Sie diese Optionen, wenn Ihr Druckauftrag keinen
+ normalen Text enthält, oder wenn Sie normalen Text
+ mit &man.pr.1; formatieren wollen.
+
+ &tex;
+
+ Der folgende Befehl druckt so beispielsweise eine
+ DVI-Datei (des &tex;-Satzsystems) namens
+ fish-report.dvi auf dem Drucker
+ bamboo:
+
+ &prompt.user; lpr -P bamboo -d fish-report.dvi
+
+ Diese Optionen gelten für jede Datei des
+ Druckauftrags, daher ist es nicht möglich beispielsweise
+ DVI- und ditroff-Dateien über den gleichen Druckauftrag
+ zu drucken. Sie müssen diese Dateien vielmehr über
+ getrennte Druckaufträge drucken, wobei Sie jeweils
+ geeignete Konvertierungsoptionen verwenden.
+
+
+ Alle Optionen mit Ausnahme von und
+ setzen einen installierten und
+ für den jeweiligen Drucker konfigurierten
+ Konvertierungsfilter voraus. So benötigt die Option
+ den DVI-Konvertierungsfilter. Diese
+ Filter werden im Abschnitt
+ Konvertierungsfilter ausführlich
+ beschrieben.
+
+
+
+
+
+
+
+ Druckt cifplot-Dateien.
+
+
+
+
+
+
+
+ Druckt DVI-Dateien.
+
+
+
+
+
+
+
+ Druckt FORTRAN-Textdateien.
+
+
+
+
+
+
+
+ Druckt Plot-Daten.
+
+
+
+
+
+
+
+ Rückt die Ausgabe um
+ anzahl Spalten ein, lassen
+ Sie anzahl weg, wird der Text
+ um 8 Spalten eingerückt. Beachten Sie aber, dass
+ diese Option nicht mit allen Konvertierungsfiltern
+ funktioniert.
+
+
+ Zwischen der Option und der
+ der Zahl darf dabei kein Leerzeichen stehen.
+
+
+
+
+
+
+
+
+ Druckt Text inklusive vorhandener Steuerzeichen.
+
+
+
+
+
+
+
+ Druckt ditroff-Dateien (geräteunabhängiges
+ troff).
+
+
+
+
+ -p
+
+
+ Formatiert normalen Text mit &man.pr.1;, bevor der
+ Ausdruck erfolgt.
+
+
+
+
+
+
+
+ Verwende titel auf dem
+ &man.pr.1;-Deckblatt anstelle des Dateinamens. Diese
+ Option ist nur wirksam, wenn sie gemeinsam mit der
+ Option verwendet.
+
+
-
+
+
+
+
+ Druckt troff-Daten.
+
+
+
+
+
+
+
+ Druckt Rasterdaten.
+
+
+
+
+ Dazu ein Beispiel. Der folgende Befehl druckt eine
+ formatierte Version der Manualpage zu &man.ls.1; auf den
+ Standarddrucker:
+
+ &prompt.user; zcat /usr/share/man/man1/ls.1.gz | troff -t -man | lpr -t
+
+ &man.zcat.1; dekomprimiert den Quellcode der Manualpage
+ &man.ls.1; und reicht ihn an &man.troff.1; weiter, das
+ ihn formatiert und daraus GNU troff-Daten erzeugt. Diese
+ werden wiederum an &man.lpr.1; weitergereicht, das den
+ Druckauftrag schließlich an
+ LPD übergibt. Da die Option
+ von &man.lpr.1; verwendet wurde,
+ konvertiert das Drucksystem die GNU troff-Daten zuvor in
+ ein Format, das der Standarddrucker verstehen und ausgeben
+ kann.
- * Druckauftrags-Optionen
+ Druckaufträge verwalten
+
+ Die folgenden Optionen von &man.lpr.1; weisen
+ LPD an, den Druckauftrag auf
+ verschiedene Art und Weise zu behandeln:
+
+
+
+ -# anzahl
+
+
+ Erzeugt anzahl Ausdrucke
+ jeder im Druckauftrag enthaltenen Datei anstelle eines
+ einzigen Exemplars. Diese Option kann von einem
+ Administrator deaktiviert werden, um die Beanspruchung
+ des Druckers zu verringern. Lesen Sie den Abschnitt
+
+ Den Ausdruck von mehreren Kopien verhindern,
+ wenn Sie diese Funktion benötigen.
+
+ Das folgende Beispiel druckt drei Kopien der Datei
+ parser.c, gefolgt von drei Kopien
+ von parser.h auf den
+ Standarddrucker:
+
+ &prompt.user; lpr -#3 parser.c parser.h
+
+
+
+
+ -m
+
+
+ Verschickt eine E-Mail, nachdem der Druckauftrag
+ beendet wurde. Verwenden Sie diese Option, sendet
+ LPD Ihnen eine E-Mail, wenn
+ es die Bearbeitung Ihres Druckauftrages abgeschlossen
+ hat. Diese Nachricht enthält Informationen
+ darüber, ob Ihr Auftrag erfolgreich erledigt wurde
+ oder ob ein Fehler auftrat. Ist dies der Fall, wird
+ meist noch angegeben, welcher Fehler auftrat.
+
+
+
+
+ -s
+
+
+ Kopiert die Dateien nicht in das
+ Spooling-Verzeichnis, sondern verlinkt stattdessen
+ symbolisch auf diese Dateien.
+
+ Wenn Sie einen umfangreichen Druckauftrag erstellen,
+ werden Sie diese Option wahrscheinlich verwenden wollen.
+ Einerseits sparen Sie dadurch Speicherplatz im
+ Spooling-Verzeichnis (im schlimmsten Fall könnte
+ Ihr Druckauftrag ansonsten das Dateisystem des
+ Spooling-Verzeichnis zum Überlaufen bringen),
+ andererseits sparen Sie dadurch auch Zeit, weil
+ LPD die in Ihrem Druckauftrag
+ enthaltenen Dateien nicht in das Spooling-Verzeichnis
+ kopieren muss.
+
+ Da LPD in diesem Fall die
+ Originaldateien verwendet, muss sichergestellt sein,
+ dass diese nicht verändert werden, bevor der
+ Ausdruck abgeschlossen ist.
+
+
+ Wenn Sie auf einen entfernten Drucker drucken,
+ muss LPD die Dateien dennoch
+ vom lokalen auf den entfernten Rechner kopieren. In
+ diesem Fall spart die Option
+ Speicherplatz lediglich im lokalen
+ Spooling-Verzeichnis, nicht aber im entfernten. Dennoch
+ ist diese Option auch in diesem Fall nützlich.
+
+
+
+
+
+ -r
-
+
+ Löscht die im Druckauftrag enthaltenen Dateien,
+ nachdem sie in das Spooling-Verzeichnis kopiert oder
+ unter Verwendung der Option
+ gedruckt werden. Verwenden Sie diese Option daher
+ nur mit äußerster Vorsicht!
+
+
+
- * Titelseiten-Optionen
+ Deckblatt-Optionen
+
+ Die folgenden &man.lpr.1;-Optionen passen den Text an,
+ der auf einem Deckblatt eines Druckauftrages ausgegeben
+ wird. Wird die Ausgabe von Deckblättern auf dem
+ Zieldrucker unterdrückt, bleiben diese Optionen
+ wirkungslos. Lesen Sie den Abschnitt Deckblätter,
+ wenn Sie diese Funktion benötigen.
+
+
+
+ -C text
+
+
+ Ersetzt den Rechnernamen auf dem Deckblatt durch
+ text. Der Rechnername ist
+ dabei in der Regel der Name des Rechners, auf dem der
+ Druckauftrag erstellt wurde.
+
+
+
+
+ -J text
-
+
+ Ersetzt den Namen des Druckauftrages auf dem
+ Deckblatt durch text. Der
+ Name des Druckauftrages entspricht in der Regel dem
+ Namen der ersten Datei des Druckauftrages oder
+ stdin, wenn Sie die
+ Standardeingabe an den Drucker weiterleiten.
+
+
+
+
+ -h
+
+
+ Verhindert den Ausdruck von Deckblättern.
+
+
+ Ob diese Option funktioniert, hängt von der
+ Art und Weise ab, wie Deckblätter auf Ihrem
+ System erzeugt werden. Lesen Sie den Abschnitt
+
+ Deckblätter für weitere
+ Informationen.
+
+
+
+
- * Drucker verwalten
+ Drucker verwalten
+
+ Als Administrator Ihres Systems ist es Ihre Aufgabe, Drucker
+ zu installieren, zu konfigurieren und zu testen. Um mit Ihrem
+ Drucker zu kommunizieren, können Sie &man.lpc.8; verwenden.
+ Dadurch sind Sie in der Lage,
+
+
+
+ Ihre Drucker zu starten und zu beenden.
+
+
+
+ Die Warteschlangen Ihrer Drucker zu aktivieren und zu
+ deaktivieren.
+
+
+
+ Die Reihenfolge der Druckaufträge zu
+ ändern.
+
+
-
+ Am Anfang dieses Abschnitts steht die Erklärung
+ einiger Begriffe. Wenn ein Drucker beendet
+ ist, wird der Inhalt seiner Warteschlange nicht gedruckt.
+ Druckaufträge können zwar weiterhin erstellt werden,
+ diese verbleiben aber solange in der Warteschlange, bis der
+ Drucker wieder gestartet oder die
+ Warteschlange gelöscht wird.
+
+ Ist eine Warteschlange deaktiviert,
+ kann (mit Ausnahme von root) kein Benutzer
+ mehr einen Druckauftrag erteilen. Ist die Warteschlange hingegen
+ aktiviert, können Druckaufträge
+ erteilt werden. Ist ein Drucker zwar
+ gestartet, die Warteschlange hingegen
+ deaktiviert, werden dennoch alle noch in
+ der Warteschlange vorhandenen Druckaufträge gedruckt.
+
+ Im Allgemeinen benötigen Sie
+ root-Rechte, um &man.lpc.8; einsetzen zu
+ können. Als normaler Benutzer erlaubt es Ihnen &man.lpc.8;
+ lediglich, den Druckstatus abzufragen und einen hängenden
+ Drucker neu zu starten.
+
+ Es folgt nun eine Zusammenfassung der Befehle von
+ &man.lpc.8;. Die meisten dieser Befehle benötigen das
+ Argument printer-name, mit dem Sie
+ angeben, auf welchen Drucker der Befehl angewendet werden soll.
+ Wenn Sie für printer-name
+ all angeben, wird der Befehl auf alle in
+ /etc/printcap definierten Drucker
+ angewendet.
+
+
+
+ abort
+ printer-name
+
+
+ Bricht den aktuellen Druckauftrag ab und beendet den
+ Drucker. Solange die Warteschlange aktiviert ist,
+ können allerdings weiterhin Druckaufträge
+ erteilt werden.
+
+
+
+
+ clean
+ printer-name
+
+
+ Entfernt veraltete Dateien aus dem
+ Spooling-Verzeichnis des Druckers, da diese manchmal nicht
+ vollständig von LPD
+ entfernt werden können. Dies ist insbesondere dann
+ der Fall, wenn während der Bearbeitung des
+ Druckauftrages Fehler auftraten. Dieser Befehl sucht
+ dabei nach Dateien, die nicht in das Spooling-Verzeichnis
+ gehören und entfernt diese.
+
+
+
+
+ disable
+ printer-name
+
+
+ Deaktiviert die Annahme neuer Druckaufträge.
+ Solange der Drucker nicht beendet wird, werden weiterhin
+ alle in der Warteschlange enthaltenen Auftrage bearbeitet
+ und gedruckt. root kann jederzeit
+ Druckaufträge erstellen, selbst dann, wenn die
+ Druckerwarteschlange deaktiviert ist.
+
+ Dieser Befehl ist besonders nützlich, wenn Sie
+ einen neuen Drucker testen müssen oder einen neuen
+ Filter installiert haben. Dazu deaktivieren Sie die
+ Warteschlange des Druckers und erstellen Ihre
+ Druckaufträge als root.
+ Andere Benutzer können erst dann einen Druckauftrag
+ erstellen, wenn Sie Ihre Tests abgeschlossen haben und
+ die Druckerwarteschlange mit enable
+ wieder reaktivieren.
+
+
+
+
+ down printer-name
+ nachricht
+
+
+ Beendet einen Drucker. Äquivalent zu
+ disable, gefolgt von
+ stop. Die von Ihnen definierte
+ nachricht wird als
+ Druckerstatus angezeigt, wenn ein Benutzer die
+ Warteschlange des Druckers mit &man.lpq.1; oder
+ mit lpc status abfragt.
+
+
+
+
+ enable
+ printer-name
+
+
+ Aktiviert die Warteschlange eines Druckers. Erteilte
+ Druckaufträge können zwar erteilt werden, diese
+ werden aber nur dann gedruckt, wenn der Drucker auch
+ gestartet ist.
+
+
+
+
+ help
+ command-name
+
+
+ Ausgaben von hilfreichen Informationen zu
+ command-name. Wird kein
+ command-name angegeben, wird
+ die Liste der verfügbaren Befehle ausgegeben.
+
+
+
+
+ restart
+ printer-name
+
+
+ Startet den Drucker. Normale Benutzer können
+ diesen Befehl verwenden, um einen hängenden
+ LPD zu reaktivieren, sie sind
+ allerdings nicht berechtigt, einen Drucker zu starten,
+ der mit stop oder down
+ beendet wurde. Dieser Befehl ist äquivalent zu
+ abort, gefolgt von
+ start.
+
+
+
+
+ start
+ printer-name
+
+
+ Startet den Drucker, um die in der Warteschlange
+ enthaltenen Aufträge zu drucken.
+
+
+
+
+ stop
+ printer-name
+
+
+ Beendet den Drucker. Der Drucker beendet den aktiven
+ Druckauftrag noch, danach wird kein weiterer in der
+ Warteschlange enthaltener Auftrag gedruckt. Obwohl der
+ Drucker beendet wurde, können weiterhin
+ Druckaufträge erteilt werden, solange die
+ Warteschlange nicht deaktiviert wurde.
+
+
+
+
+ topq printer-name
+ job-or-username
+
+
+ Sortiert die Druckerwarteschlange des Druckers
+ printer-name um, wobei
+ der Auftrag mit der angegebenen
+ Auftragsnummer,
+ oder Druckaufträge, die von
+ username erstellt wurden, an
+ den Beginn der Warteschlange gesetzt werden. Für
+ diesen Befehl kann die Option all
+ nicht als printer-name
+ verwendet werden.
+
+
+
+
+ up
+ printer-name
+
+
+ Startet einen Drucker. Das Gegenstück zu
+ down. Äquivalent zu
+ start, gefolgt von
+ enable.
+
+
+
+
+ &man.lpc.8; akzeptiert diese Befehle direkt auf der
+ Kommandozeile. Geben Sie keinen Befehl ein, wird
+ &man.lpc.8; im interaktiven Modus gestartet. In diesem
+ Modus können Sie solange Befehle eingeben, bis Sie
+ exit oder quit
+ eingeben.Alternativen zum
LPD-DrucksystemWenn Sie dieses Kapitel bis hierher gelesen haben, wissen
Sie so gut wie alles über
LPD, das Standarddrucksystem von
FreeBSD. Wahrscheinlich sind Ihnen bereits einige
Unzulänglichkeiten dieses Systems aufgefallen, und Sie
fragen sich nun, welche anderen Drucksysteme es für FreeBSD
gibt.LPRngLPRngLPRng steht für
LPR: the Next Generation. Dabei handelt es
sich um eine von Grund auf neu geschriebene Version von PLP.
LPRng wurde von Patrick Powell und Justin Mason, dem
Hauptmaintainer von PLP, entwickelt . Die offizielle
Webseite von LPRng ist unter
zu finden.CUPSCUPSCUPS, das
Common UNIX Printing System,
stellt eine portable Abstraktionsschicht dar, die das
Drucken auf allen &unix;-artigen Betriebsystemen
ermöglicht. CUPS wurde von
Easy Software entwickelt, um &unix;-Herstellern und
-Benutzern eine einheitliche Standardlösung für
den Druck von Dokumenten zu bieten.CUPS verwendet das Internet
Printing Protocol (IPP), um
Druckaufträge und -warteschlangen zu verwalten.
Zusätzlich werden die Protokolle
Line Printer Daemon
(LPD),
Server Message Block
(SMB), und
AppSocket/JetDirect),
unterstützt, wenn auch nur mit eingeschränkter
Funktionalität. Ausserdem ermöglicht
CUPS das Auffinden von
Netzwerkdruckern sowie die Verwendung auf
PostScript Printer
Description (PPD)
basierender Druckoptionen.Die offizielle Webseite von CUPS
ist .ProblembehandlungWenn Sie eine einfache Testseite mit &man.lptest.1; gedruckt
haben, könnte eines der folgenden Probleme aufgetreten
sein:Der Druck hat erst mit einer gewissen Verzögerung
geklappt oder das bedruckte Blatt verblieb im Drucker, so als
wäre der Druckvorgang noch nicht abgeschlossen.Die Testseite wurde zwar gedruckt, danach tat sich
allerdings nichts mehr. Vielleicht mussten Sie sogar eine
Taste Ihres Druckers, etwa PRINT REMAINING oder FORM FEED
drücken, damit der Druckvorgang fortgesetzt wurde.Wenn das der Fall ist, hat der Drucker vermutlich vor
dem eigentlichen Drucken gewartet, ob noch weitere Daten
für Ihren Druckauftrag gesendet werden. Um dieses
Problem zu beheben, können Sie den Textfilter
anweisen, ein Form Feed
-Zeichen (oder ein anderes entsprechendes Zeichen) an den
Drucker zu senden. Dies reicht für gewöhnlich
aus, um den Drucker zum Druck des noch im internen
Puffer verbliebenen Textes zu bewegen. Dadurch kann auch
sichergestellt werden, dass jeder neue Druckauftrag auf
einer neuen Seite beginnt.Der folgende Ersatz für das Shell-Skript
/usr/local/libexec/if-simple gibt
ein Form Feed aus, nachdem der Auftrag an
den Drucker geschickt wurde:#!/bin/sh
#
# if-simple - Einfacher Eingabefilter für lpd
# Installiert unter /usr/local/libexec/if-simple
#
# Kopiert stdin einfach nach stdout. Ignoriert alle Filter-Argumente.
# Schreibt ein Form-Feed-Zeichen (\f) nach dem Ende des Druckauftrages.
/bin/cat && printf "\f" && exit 0
exit 2Der Drucker erzeugte einen Treppeneffekt
(staircase effect).Sie haben einen Ausdruck ähnlich dem folgenden
erhalten:!"#$%&'()*+,-./01234
"#$%&'()*+,-./012345
#$%&'()*+,-./0123456MS-DOSOS/2ASCIISie sind zu einem weiteren Opfer des
Treppeneffekts geworden. Verursacht
wird dieser Effekt durch unterschiedliche Ansichten
darüber, welche Zeichen den Beginn einer neuen Zeile
anzeigen sollen. &unix;-ähnliche Betriebssysteme
verwenden dafür ein einzelnes Zeichen: ASCII-Code 10,
auch als Line Feed (LF)
bekannt. &ms-dos;, &os2; und andere Betriebssysteme
verwenden stattdessen ein Zeichenpaar: ASCII-Code 10
und ASCII-Code 13,
Carriage Return (CR). Viele
Drucker verwenden in der Voreinstellung die Konvention von
&ms-dos;, um Zeilenumbrüche darzustellen.Wenn Sie unter FreeBSD drucken, wird nur das Zeichen
Line Feed verwendet. Der
Drucker erkennt dieses Zeichen und erweitert den
Druckbereich um eine Zeile, verbleibt zum Druck des
nächsten Zeichens aber in derselben horizontalen
Position. Das ist der Grund für die Verwendung des
Carriage Return: Es setzt
die Position für das folgende Zeichen auf den linken
Rand der Seite.FreeBSD erwartet von einem Drucker das folgende
Verhalten:Drucker empfängt CRDrucker druckt CRDrucker empfängt LFDrucker druckt CR + LFEs gibt mehrere Möglichkeiten, dieses Verhalten zu
erreichen:Verändern Sie die Konfiguration Ihres Druckers,
um die Interpretation dieser Zeichen zu verändern.
Lesen Sie Ihr Druckerhandbuch, wenn Sie nicht wissen,
was Sie dazu tun müssen.Wenn Sie auf Ihrem Rechner neben FreeBSD noch
andere Betriebssysteme verwenden, müssen Sie
Ihren Drucker möglicherweise anschließend
erneut konfigurieren, damit die
Zeichen CR und LF unter diesen Systemen korrekt
interpretiert werden. Ist dies bei Ihnen der Fall,
werden Sie wohl eine der folgenden Lösungen
bevorzugen.Lassen Sie LF durch den Treiber der seriellen
Schnittstelle automatisch in CR+LF konvertieren.
Selbstverständlich funktioniert dies nur mit
Druckern, die an einer seriellen Schnittstelle
angeschlossen sind. Um diese Möglichkeit zu
nutzen, müssen Sie die
ms#-Fähigkeit verwenden und
in /etc/printcap den
onlcr-Modus für den Drucker
aktivieren.Senden Sie eine Escape-Sequenz
an den Drucker, damit das Zeichen LF zeitweilig anders
behandelt wird. Suchen Sie im Handbuch Ihres Druckers
nach den von Ihrem Drucker unterstützten
Escape-Sequenzen. Wenn Sie eine entsprechenden
Escape-Sequenz finden, müssen Sie den Textfilter so
anpassen, dass zuerst die Escape-Sequenz und
anschließend der Druckauftrag gesendet wird.PCLEs folgt nun ein Bespieltextfilter für einen
Drucker, der die Hewlett Packard PCL Escape-Sequenzen
versteht. Dieser Filter veranlasst den Drucker,
LF-Zeichen als Folgen von LF+CR aufzufassen.
Anschließend wird der Druckauftrag gesendet. Als
Abschluss wird ein Form
Feed gesendet, um die letzte Seite des
Druckauftrags auszuwerfen. Dieses Beispiel sollte mit
nahezu allen Druckern von Hewlett Packard
funktionieren.#!/bin/sh
#
# hpif - Einfacher Text-Eingabefilter für lpd für auf HP-PCL basierende Drucker
# Installiert unter /usr/local/libexec/hpif
#
# Kopiert stdin einfach nach stdout. Ignoriert alle Filterargumente.
# Weist den Drucker an LF als CR+LF zu interpretieren.
# Wirft die Seite nach dem Drucken aus.
printf "\033&k2G" && cat && printf "\033&l0H" && exit 0
exit 2Das nächste Beispiel aus
/etc/printcap beschreibt den
Rechner orchid, an dessen Parallelport
ein Drucker angeschlossen ist. Es handelt sich dabei um
einen Hewlett Packard LaserJet 3Si, der den Namen
teak verwendet. Als Textfilter wird
das Skript aus dem letzten Beispiel verwendet:#
# /etc/printcap für den Rechner orchid
#
teak|hp|laserjet|Hewlett Packard LaserJet 3Si:\
:lp=/dev/lpt0:sh:sd=/var/spool/lpd/teak:mx#0:\
:if=/usr/local/libexec/hpif:Alle Zeilen wurden in die gleiche Zeile gedruckt.Der Drucker hat niemals eine neue Zeile begonnen. Alle
Zeilen des Textes wurden in eine einzige Zeile gedruckt.Dieses Problem ist das Gegenteil des
oben beschriebenen Treppeneffekts und kommt wesentlich
seltener vor. Die von FreeBSD zum Abschluss einer Zeile
benutzten LF-Zeichen werden als CR-Zeichen interpretiert.
Dadurch wird die Druckposition zwar auf den linken Rand
der Seite, aber nicht um eine Zeile nach unten gesetzt.Konfigurieren Sie Ihren Drucker, um die folgende
Interpretation der Zeichen LF und CR zu erzwingen:Drucker empfängtDrucker drucktCRCRLFCR + LFManche Zeichen wurden nicht gedruckt.Der Drucker hat in jeder Zeile einige Zeichen nicht
gedruckt. Vielleicht ist das Problem auch während des
Druckens schlimmer geworden, und der Drucker hat immer mehr
Zeichen nicht gedruckt.Dieses Problem entsteht, weil der Drucker mit der
Geschwindigkeit, mit der die Daten über die serielle
Schnittstelle (an einer parallelen Schnittstelle sollte das
Problem nicht auftreten) eintreffen, nicht mithalten kann.
Es gibt zwei Möglichkeiten, dieses Problem zu
lösen:Wenn der Drucker die Flusskontrolle mit XON/XOFF
unterstützt, können Sie in der
ms#-Fähigkeit den
ixon-Modus aktivieren.Unterstützt der Drucker die
Carrier-Flusskontrolle, dann sollten Sie den
crtscts-Modus in der
ms#-Fähigkeit aktivieren.
Stellen Sie aber sicher, dass das verwendete
Druckerkabel auch für die Carrier-Flusskontrolle
geeignet ist.Es wurden nur wirre Zeichen gedruckt.Anstelle des gewünschten Textes wurden nur
zufällige Zeichen gedruckt.Dieses Problem wird ebenfalls durch falsche
Konfigurationsparameter im Zusammenhang mit einem seriellen
Drucker verursacht. Kontrollieren Sie die bps-Rate in der
br-Fähigkeit und die
Paritätseinstellung
(Parity) in der
ms#-Fähigkeit. Überprüfen
Sie außerdem, ob der Drucker auch tatsächlich die
gleichen Einstellungen verwendet, die in
/etc/printcap definiert wurden.Der Drucker hat überhaupt nicht reagiert.Wenn gar nichts passiert ist, dann liegt das vermutlich
an FreeBSD und nicht am Drucker. Aktivieren Sie die
Protokollierung (lf-Fähigkeit)
für den entsprechenden Drucker in der Datei
/etc/printcap. Es folgt nun ein
Beispieleintrag für den Drucker
rattan, bei dem die
lf-Fähigkeit aktiviert wurde.rattan|line|diablo|lp|Diablo 630 Line Printer:\
:sh:sd=/var/spool/lpd/rattan:\
:lp=/dev/lpt0:\
:if=/usr/local/libexec/if-simple:\
:lf=/var/log/rattan.logVersuchen Sie jetzt noch einmal zu drucken.
Überprüfen Sie die Protokolldatei (in unserem
Beispiel /var/log/rattan.log) auf
etwaige Fehlermeldungen. Versuchen Sie aufgrund dieser
Meldungen, das Problem zu beheben.Wenn Sie keine Protokolldatei festlegen, verwendet
LPD in der Voreinstellung
/dev/console für die Ausgabe
der Fehlermeldungen.
diff --git a/de_DE.ISO8859-1/books/handbook/security/chapter.sgml b/de_DE.ISO8859-1/books/handbook/security/chapter.sgml
index f559a35b17..fddef7b815 100644
--- a/de_DE.ISO8859-1/books/handbook/security/chapter.sgml
+++ b/de_DE.ISO8859-1/books/handbook/security/chapter.sgml
@@ -1,5466 +1,5466 @@
MatthewDillonViel von diesem Kapitel stammt aus der security(7)
Manualpage von MartinHeinenÜbersetzt von SicherheitSicherheitÜbersichtDieses Kapitel bietet eine Einführung in die Konzepte
der Systemsicherheit. Neben einigen Daumenregeln werden
weiterführende Themen wie S/Key, OpenSSL und Kerberos
diskutiert. Die meisten der hier besprochenen Punkte treffen
sowohl auf die Systemsicherheit sowie die Internetsicherheit zu.
Das Internet hat aufgehört ein friedlicher
Ort zu sein, an dem Sie nur nette Leute finden werden. Es ist
unumgänglich, dass Sie Ihre Daten, Ihr geistiges Eigentum,
Ihre Zeit und vieles mehr vor dem Zugriff von Hackern
schützen.&os; besitzt eine Reihe von Werkzeugen und Mechanismen, um die
Integrität und die Sicherheit Ihrer Systeme und Netzwerke
zu gewährleisten.Nach dem Sie dieses Kapitel durchgearbeitet haben, werden
Sie:Grundlegende auf &os; bezogene Sicherheitsaspekte
kennen.Die verschiedenen Verschlüsselungsmechanismen
von &os;, wie DES oder
MD5, kennen.Wissen, wie Sie ein Einmalpasswörter
zur Authentifizierung verwenden.TCP-Wrapper für
inetd einrichten können.Wissen, wie Sie KerberosIV
vor 5.0-Release einrichten.Wissen, wie Sie Kerberos5
ab 5.0-Release einrichten.Firewalls mit IPFW
erstellen können.Wissen, wie Sie IPsec konfigurieren und ein
VPN zwischen &os;/&windows;
Systemen einrichten,OpenSSH, &os;s
Implementierung von SSH, konfigurieren
und benutzen können.Portaudit anwenden können,
um Softwarepakete Dritter, die Sie über die
Ports-Sammlung installieren, auf bekannte
Sicherheitslücken hin zu überprüfen.Mit &os;-Sicherheitshinweisen umgehen können.Eine Vorstellung davon haben, was Prozessüberwachung
(Process Accounting) ist und wie
Sie diese Funktion unter &os; aktivieren können.Bevor Sie dieses Kapitel lesen, sollten SieGrundlegende Konzepte von &os; und dem Internet
verstehen.Dieses Buch behandelt weitere Sicherheitsthemen.
Beispielsweise werden vorgeschriebene Zugriffskontrollen
in und Firewalls in
besprochen.EinführungSicherheit ist ein Konzept, das beim Systemadministrator anfängt
und aufhört. Obwohl alle BSD &unix; Mehrbenutzersysteme über
Sicherheitsfunktionen verfügen, ist es wohl eine der
größten Aufgaben eines Systemadministrators zusätzliche
Sicherheitsmechanismen zu erstellen und zu pflegen. Maschinen sind
nur so sicher wie sie gemacht werden und Sicherheitsanforderungen
stehen oft der Benutzerfreundlichkeit entgegen. Auf &unix; Systemen
können sehr viele Prozesse gleichzeitig laufen und viele dieser
Prozesse sind Server, das heißt von außen kann auf sie
zugegriffen werden. In einer Zeit, in der die Minicomputer und
Mainframes von gestern die Desktops von heute sind und Rechner
immer mehr vernetzt werden, kommt der Sicherheit eine große
Bedeutung zu.Sicherheit wird am besten in mehreren Schichten implementiert.
Kurz gesagt wollen Sie eine angemessene Anzahl Schichten einrichten,
und dann das System auf Einbrüche hin beobachten. Die
Sicherheitsmaßnahmen sollten nicht überzogen werden,
da sie sonst das Entdecken von Einbrüchen stören und die
Möglichkeit, Einbrüche zu entdecken, ist einer der wichtigsten
Aspekte einer Sicherheitsmaßnahme. Es macht zum Beispiel wenig
Sinn, jedes Programm mit der schg Option (siehe auch
&man.chflags.1;) zu schützen, weil dies verhindert, dass ein
Angreifer eine leicht zu entdeckende Veränderung vornimmt und
vielleicht dazu führt, dass Ihre Sicherheitsvorkehrungen den
Angreifer überhaupt nicht entdecken.Zur Systemsicherheit gehört auch die Beschäftigung mit
verschiedenen Arten von Angriffen, auch solchen, die versuchen,
ein System still zu legen, oder sonst unbrauchbar zu machen ohne
root zu kompromittieren. Sicherheitsaspekte
lassen sich in mehrere Kategorien unterteilen:Denial-of-Service Angriffe.Kompromittierte Accounts.Kompromittierter root-Account durch
zugreifbare Server.Kompromittierter root-Account durch
kompromittierte Accounts.Einrichten von Hintertüren.DoS AngriffeDenial-of-Service (DoS)SicherheitDoS AngriffeDenial-of-Service (DoS)Denial-of-Service (DoS)Ein Denial-of-Service (Verhinderung von Diensten, DoS) Angriff
entzieht einer Maschine Ressourcen, die sie zur Bereitstellung
von Diensten benötigt. Meist versuchen Denial-of-Service Angriffe
die Dienste oder den Netzwerkstack einer Maschine zu überlasten,
um so die Maschine auszuschalten oder nicht nutzbar zu machen. Einige
Angriffe versuchen, Fehler im Netzwerkstack auszunutzen, und die
Maschine mit einem einzigen Paket auszuschalten. Diese Art des
Angriffs kann nur verhindert werden, indem der entsprechende Fehler
im Kernel behoben wird. Oft können Angriffe auf Dienste durch
die Angabe von Optionen verhindert werden, die die Last, die ein
Dienst auf das System unter widrigen Umständen ausüben kann,
begrenzt. Angriffen auf das Netzwerk ist schwerer zu begegnen.
Außer durch Trennen der Internetverbindung ist zum Beispiel
einem Angriff mit gefälschten Paketen nicht zu begegnen.
Diese Art von Angriff wird Ihr System zwar nicht unbrauchbar machen,
kann aber die Internetverbindung sättigen.Sicherheitkompromittierte AccountsKompromittierte Accounts kommen noch häufiger als
DoS Angriffe vor. Viele Systemadministratoren lassen auf ihren
Maschinen noch die Dienste telnetd,
rlogind, rshd
und ftpd laufen. Verbindungen zu diesen
Servern werden nicht verschlüsselt. Wenn Sie eine
größere Benutzerzahl auf Ihrem System haben, die sich von
einem entfernten System anmelden, ist die Folge davon, dass
das Passwort eines oder mehrerer Benutzer ausgespäht wurde.
Ein aufmerksamer Systemadministrator wird die Logs über Anmeldungen
von entfernten Systemen auf verdächtige Quelladressen, auch
für erfolgreiche Anmeldungen, untersuchen.Es ist immer davon auszugehen, dass ein Angreifer, der
Zugriff auf einen Account hat, Zugang zum
root-Account erlangt. Allerdings gibt der
Zugriff auf einen Account auf einem gut gesicherten und
gepflegten System nicht notwendig Zugriff auf den
root-Account. Diese Unterscheidung ist wichtig,
da ein Angreifer, der keinen Zugang zu root
besitzt, seine Spuren nicht verwischen kann. Er kann höchstens
die Dateien des betreffenden Benutzers verändern oder die
Maschine stilllegen. Kompromittierte Accounts sind sehr
häufig, da Benutzer meist nicht dieselben Vorsichtsmaßnahmen
wie Administratoren treffen.SicherheitHintertürenEs gibt viele Wege, Zugang zum root-Account
eines Systems zu bekommen: Ein Angreifer kann das Passwort von
root kennen, er kann einen Fehler in einem
Server entdecken, der unter root läuft und
dann über eine Netzwerkverbindung zu diesem Server einbrechen.
Oder er kennt einen
Fehler in einem SUID-root Programm, der es
ihm erlaubt, root zu werden, wenn er einmal
einen Account kompromittiert hat. Wenn ein Angreifer einen
Weg gefunden hat, root zu werden, braucht er
vielleicht keine Hintertür auf dem System installieren.
Viele der heute
bekannten und geschlossenen Sicherheitslöcher, die zu einem
root Zugriff führen, verlangen vom Angreifer
einen erheblichen Aufwand, um seine Spuren zu verwischen. Aus diesem
Grund wird er sich wahrscheinlich entschließen, eine Hintertür
(engl. Backdoor) zu installieren.
Eine Hintertür erlaubt es
dem Angreifer leicht auf den root-Account
zuzugreifen. Einem klugen Systemadministrator erlaubt sie allerdings
auch, den Einbruch zu entdecken. Wenn Sie es einem Angreifer verwehren,
Hintertüren zu installieren, kann das schädlich für
Ihre Sicherheit sein, da es vielleicht verhindert, dass die
Lücke, die der Angreifer für den Einbruch ausgenutzt hat,
entdeckt wird.Sicherheitsmaßnahmen sollten immer in mehreren Schichten
angelegt werden. Die Schichten können wie folgt eingeteilt
werden:Absichern von root und
Accounts.Absichern von unter root laufenden
Servern und SUID/SGID Programmen.Absichern von Accounts.Absichern der Passwort-Datei.Absichern des Kernels, der Geräte und von
Dateisystemen.Schnelles Aufdecken von unbefugten Veränderungen des
Systems.Paranoia.Die einzelnen Punkte der obigen Liste werden im nächsten
Abschnitt genauer behandelt.Absichern von &os;Sicherheit&os; absichernKommandos und ProtokolleIn diesem Abschnitt werden Anwendungen
fett gekennzeichnet, spezifische
Kommandos werden in einer Fixschrift
dargestellt und Protokolle verwenden die normale Schriftart.
Diese typographische Konvention hilft, Begriffe wie ssh
zu unterscheiden, die sowohl Protokoll als auch Kommando
sein können.Die folgenden Abschnitte behandeln die im
letzten Abschnitt erwähnten
Methoden Ihr &os;-System zu sichern.Absichern von root und
AccountssuZuallererst, kümmern Sie sich nicht um die Absicherung
von Accounts, wenn Sie root
noch nicht abgesichert haben. Auf den meisten Systemen ist
root ein Passwort zugewiesen. Sie
sollten immer davon ausgehen, dass
dieses Passwort kompromittiert ist. Das heißt nicht,
dass Sie das Passwort entfernen sollten, da es meist
für den Konsolenzugriff notwendig ist. Vielmehr heißt
es, dass Sie das Passwort nicht außerhalb der
Konsole, auch nicht zusammen mit &man.su.1;, verwenden sollten.
Stellen Sie sicher, dass Ihre PTYs in ttys als
unsicher markiert sind und damit Anmeldungen von
root mit telnet oder
rlogin verboten sind. Wenn Sie andere
Anwendungen wie SSH zum Anmelden
benutzen, vergewissern Sie sich, dass dort ebenfalls
Anmeldungen als root verboten sind. Für
SSH editieren Sie
/etc/ssh/sshd_config und überprüfen,
dass PermitRootLogin auf NO
gesetzt ist. Beachten Sie jede Zugriffsmethode – Dienste
wie FTP werden oft vergessen. Nur an der Systemkonsole sollte
ein direktes Anmelden als root möglich
sein.wheelNatürlich müssen Sie als Systemadministrator
root-Zugriff erlangen können. Dieser
sollte aber durch zusätzliche Passwörter
geschützt sein. Ein Weg, Zugang zu root
zu ermöglichen, ist es, berechtigte Mitarbeiter in
/etc/group in die Gruppe
wheel aufzunehmen. Die Personen, die
Mitglieder in der Gruppe wheel sind,
können mit su zu root
wechseln. Ihre Mitarbeiter sollten niemals die Gruppe
wheel als primäre Gruppe in
/etc/passwd besitzen. Mitarbeiter sollten
der Gruppe staff angehören und über
/etc/group in wheel
aufgenommen werden. Es sollten auch nur die Mitarbeiter, die
wirklich root Zugriff benötigen in
wheel aufgenommen werden. Mit anderen
Authentifizierungsmethoden müssen Sie niemanden in
wheel aufnehmen. Wenn Sie z.B.
Kerberos benutzen, wechseln Sie mit
&man.ksu.1; zu root und der Zugriff wird
mit der Datei .k5login geregelt. Dies ist
vielleicht eine bessere Lösung, da es der
wheel-Mechanismus einem Angreifer immer
noch möglich macht, den root-Account
zu knacken, nachdem er einen Mitarbeiter-Account geknackt hat.
Obwohl der wheel-Mechanismus besser als
gar nichts ist, ist er nicht unbedingt die sicherste Lösung.Indirekt können Sie die Accounts von Mitarbeitern und
damit auch den Zugriff auf root schützen,
indem Sie eine alternative Zugangsmethode verwenden und die
Accounts der Mitarbeiter mit einem ungültigen verschlüsselten
Passwort versehen. Mit &man.vipw.8; können Sie jedes
verschlüsselte Passwort mit einem
* Zeichen ersetzen. Das Kommando
wird /etc/master.passwd und die
Benutzer/Passwort Datenbank aktualisieren und die Passwort
Authentifizierung abstellen.Ein Account wiefoobar:R9DT/Fa1/LV9U:1000:1000::0:0:Foo Bar:/home/foobar:/usr/local/bin/tcshsollte wie folgt abgeändert werden:foobar:*:1000:1000::0:0:Foo Bar:/home/foobar:/usr/local/bin/tcshDa ein verschlüsseltes Passwort niemals
ein * sein kann, verhindert dies
die normale Anmeldung. Damit müssen sich die Mitarbeiter
mit anderen Mechanismen wie &man.kerberos.1; oder &man.ssh.1;
authentifizieren. Wenn Sie etwas wie
Kerberos benutzen, müssen Sie
die Maschinen, die die Kerberos-Server
beheimaten und die Maschinen der Benutzer absichern. Wenn Sie
öffentliche/private Schlüssel mit
SSH benutzen, muss die Maschine
von der die Anmeldung gestartet wird, gesichert
werden. Als zusätzliche Sicherheitsschicht können Sie
das Schlüsselpaar beim Erstellen mit &man.ssh-keygen.1; durch
ein Passwort schützen. Dadurch, dass Sie die
Passwörter Ihrer Mitarbeiter als ungültig markiert
haben, stellen Sie sicher, dass sich die Mitarbeiter nur mit
den sicheren Methoden, die Sie aufgesetzt haben, anmelden können.
Dies zwingt alle Mitarbeiter, verschlüsselte Verbindungen
für ihre Sitzungen zu verwenden, und schließt ein
wichtiges Loch, dass gerne von Angreifern ausgenutzt wird:
Das Abhören des Netzwerks von einer anderen weniger gesicherten
Maschine.Die indirekten Sicherheitsmechanismen setzen voraus, dass
Sie sich von einer restriktiven Maschine auf einer weniger restriktiven
Maschine anmelden. Wenn zum Beispiel auf Ihrem Hauptrechner alle
möglichen Arten von Servern laufen, so sollten auf Ihrer
Workstation keine Server laufen. Um Ihre Workstation vernünftig
abzusichern, sollten auf Ihr so wenig Server wie möglich bis hin
zu keinem Server laufen. Sie sollten zudem über einen
Bildschirmschoner verfügen, der mit einem Passwort
gesichert ist. Natürlich kann ein Angreifer, der physikalischen
Zugang zu einer Maschine hat, jede Art von Sicherheitsmechanismen
umgehen. Dieses Problem sollten Sie daher auch in Ihren
Überlegungen berücksichtigen. Beachten Sie dabei aber,
dass der Großteil der Einbrüche über das
Netzwerk erfolgt und die Einbrecher keinen Zugang zu der Maschine
besitzen.KerberosIVMit Kerberos können Sie das
Passwort eines Mitarbeiters an einer Stelle ändern
und alle Maschinen, auf denen der Mitarbeiter einen Account hat,
beachten die Änderung sofort. Wird der Account eines
Mitarbeiters einmal kompromittiert, so sollte die Fähigkeit, das
Passwort mit einem Schlag auf allen Maschinen zu ändern,
nicht unterschätzt werden. Mit einzelnen Passwörtern
wird es schwierig, das Passwort auf N Maschinen zu ändern.
Mit Kerberos können Sie auch
Beschränkungen für Passwörter festlegen:
Nicht nur das Ticket kann nach einiger Zeit ungültig werden,
Sie können auch festlegen, dass ein Benutzer nach einer
bestimmten Zeit, z.B. nach einem Monat, das Passwort wechseln
muss.Absichern von unter root laufenden
Servern und SUID/SGID ProgrammenntalkcomsatfingerSandkästensshdtelnetdrshdrlogindEin kluger Systemadministrator lässt nur die
Dienste, die er wirklich braucht, laufen; nicht mehr und auch
nicht weniger. Beachten Sie, dass Server von Dritten die
fehleranfälligsten sind. Wenn Sie z.B. eine alte Version von
imapd oder popper
laufen lassen, ist das so, als würden Sie der ganzen Welt
freien Zugang zu root geben. Lassen Sie keine
Server laufen, die Sie vorher nicht genau überprüft haben.
Viele Server müssen nicht unter root
laufen, zum Beispiel können ntalk,
comsat und finger
in speziellen Sandkästen unter
einem Benutzer laufen. Ein Sandkasten ist keine perfekte Lösung,
wenn Sie nicht eine Menge Arbeit in die Konfiguration investieren,
doch bewährt sich hier das Prinzip, die Sicherheit in Schichten
aufzubauen. Wenn es einem Angreifer gelingt, in einen Server,
der in einem Sandkasten läuft, einzubrechen, dann muss
er immer noch aus dem Sandkasten selber ausbrechen. Je mehr Schichten
der Angreifer zu durchbrechen hat, desto kleiner sind seine Aussichten
auf Erfolg. In der Vergangenheit wurden praktisch in jedem
Server, der unter root läuft, Lücken
gefunden, die zu einem root Zugriff führten.
Dies betrifft selbst die grundlegenden Systemdienste. Wenn Sie eine
Maschine betreiben, auf der man sich nur mit
SSH anmelden kann, dann stellen Sie die
Dienste telnetd,
rshd oder rlogind
ab!In der Voreinstellung laufen unter &os;
ntalkd, comsat
und finger nun in einem Sandkasten. Ein
weiteres Programm, das in einem Sandkasten laufen sollte, ist
&man.named.8;. In /etc/defaults/rc.conf sind
die notwendigen Argumente, um named in
einem Sandkasten laufen zu lassen, in kommentierter Form schon
enthalten. Abhängig davon, ob Sie ein neues System installieren
oder ein altes System aktualisieren, sind die hierfür
benötigten Benutzer noch nicht installiert.
Ein kluger Systemadministrator sollte immer nach Möglichkeiten
suchen, Server in einem Sandkasten laufen zu lassen.sendmailEinige Server wie sendmail,
popper, imapd
und ftpd werden normalerweise nicht in
Sandkästen betrieben. Zu einigen Servern gibt es Alternativen,
aber diese wollen Sie vielleicht wegen der zusätzlich nötigen
Arbeit nicht installieren (ein weiteres Beispiel für den
Widerspruch zwischen Sicherheit und Benutzerfreundlichkeit).
In diesem Fall müssen Sie die
Server unter root laufen lassen und auf die
eingebauten Mechanismen vertrauen, Einbrüche zu entdecken.Weitere potentielle Löcher, die zu einem
root-Zugriff führen können, sind
die auf dem System installierten SUID- und SGID-Programme. Die
meisten dieser Programme wie rlogin stehen
in /bin, /sbin,
/usr/bin, oder /usr/sbin.
Obwohl nichts 100% sicher ist, können Sie davon ausgehen,
dass die SUID- und SGID-Programme des Basissystems ausreichend
sicher sind. Allerdings werden ab und an in diesen Programmen
Löcher gefunden. 1998 wurde in Xlib ein
Loch gefunden, das xterm, der
normal mit SUID installiert wird, verwundbar machte. Es ist besser
auf der sicheren Seite zu sein, als sich später zu beklagen,
darum wird ein kluger Systemadministrator den Zugriff auf
SUID-Programme mit einer Gruppe, auf die nur Mitarbeiter zugreifen
können, beschränken. SUID-Programme, die niemand benutzt,
sollten mit chmod 000 deaktiviert werden. Zum
Beispiel braucht ein Server ohne Bildschirm kein
xterm Programm. SGID-Programme sind
vergleichbar gefährlich. Wenn ein Einbrecher Zugriff auf
SGID-kmem Programm erhält, kann er
vielleicht /dev/kmem und damit die
verschlüsselte Passwortdatei lesen. Dies kompromittiert
unter Umständen jeden Account, der mit einem Passwort
geschützt ist. Alternativ kann ein Einbrecher, der in die
Gruppe kmem eingebrochen ist, die
Tastendrücke auf PTYs verfolgen. Dies schließt
auch PTYs mit ein, auf denen sich ein Benutzer mit sicheren
Methoden anmeldet. Ein Einbrecher, der Zugriff auf die
tty Gruppe hat, kann auf fast jeden Terminal
anderer Benutzer schreiben. Wenn der Benutzer einen Terminal-Emulator
benutzt, der über eine Tastatur-Simulation verfügt,
könnte der Angreifer Daten generieren, die den Terminal
veranlassen, ein Kommando unter diesem Benutzer laufen zu lassen.Absichern von AccountsAccounts sind für gewöhnlich sehr schwierig
abzusichern. Während Sie drakonische Beschränkungen
für Ihre Mitarbeiter einrichten und deren Passwörter
als ungültig markieren können, werden Sie das
vielleicht bei den normalen Accounts nicht durchsetzen.
Wenn Sie über ausreichend Macht verfügen, gelingt es Ihnen
vielleicht doch, ansonsten müssen Sie diese Accounts
aufmerksam überwachen. Wegen der zusätzlichen
Administrationsarbeit und der nötigen technischen
Unterstützung ist die Verwendung von
SSH und Kerberos
mit normalen Accounts erschwert, obwohl das natürlich
sicherer als die Verwendung von verschlüsselten
Passwörtern ist.Absichern der Passwort-DateiDer einzig sichere Weg ist, so viele Accounts wie möglich als
ungültig zu markieren und SSH oder
Kerberos zu benutzen, um auf sie
zuzugreifen. Obwohl die Datei /etc/spwd.db,
die die verschlüsselten Passwörter enthält,
nur von root gelesen werden kann, mag ein
Angreifer lesenden Zugriff auf diese Datei erlangen, ohne die
Fähigkeit sie auch zu beschreiben.Ihre Überwachungsskripten sollten Änderungen
an der Passwort-Datei melden (siehe Überprüfen der
Integrität von Dateien weiter unten).Absichern des Kernels, der Geräte und von
DateisystemenWenn ein Angreifer root-Zugriff erlangt,
kann er so ziemlich alles mit Ihrem System anstellen, doch sollten Sie
es ihm nicht zu leicht machen. Die meisten modernen Kernel haben
zum Beispiel einen Gerätetreiber, der es erlaubt, Pakete
abzuhören. Unter &os; wird das Gerät
bpf genannt. Für gewöhnlich
wird ein Angreifer versuchen, dieses Gerät zu nutzen, um
Pakete abzuhören. Sie sollten ihm diese Gelegenheit nicht
geben und auf den meisten Systemen ist das Gerät
bpf nicht nötig.sysctlAuch wenn Sie bpf nicht verwenden,
müssen Sie sich immer noch um /dev/mem
und /dev/kmem sorgen. Außerdem
kann der Angreifer immer noch auf die rohen Geräte
(raw devices)
schreiben. Weiterhin gibt es ein Programm zum Nachladen von
Modulen in den Kernel: &man.kldload.8;. Ein unternehmungslustiger
Angreifer kann dies benutzen, um sein eigenes
bpf oder ein anderes zum Abhören
geeignetes Gerät in den laufenden Kernel einzubringen. Um diese
Probleme zu vermeiden, müssen Sie den Kernel auf einer
höheren Sicherheitsstufe, mindestens 1,
laufen lassen. Die Sicherheitsstufe wird durch die Variable
kern.securelevel, die mit sysctl
gesetzt werden kann, angegeben. Nachdem Sie die Sicherheitsstufe
auf 1 gesetzt haben, sind schreibende Zugriffe
auf rohe Geräte verboten und die speziellen
chflags Optionen, wie schg
werden erzwungen. Sie müssen sicherstellen, dass die
schg Option auf allen kritischen Programmen,
Verzeichnissen und Skripten, die bis zum Setzen der Option laufen,
aktiviert ist. Das mag übertrieben sein da eine Migration
des Systems erschwert wird, wenn Sie auf einer höheren
Sicherheitsstufe arbeiten. Sie können einen Kompromiss
erreichen, indem Sie das System auf einer erhöhten
Sicherheitsstufe laufen lassen, aber die schg
Option nicht für jede Datei und jedes Verzeichnis auf der Welt
setzen. Eine andere Möglichkeit besteht darin,
/ und /usr einfach
schreibgeschützt einzuhängen. Bedenken Sie, dass
Sie das Aufdecken eines Einbruchs vielleicht verhindern, wenn
Sie zu drastische Maßnahmen zum Schutz Ihres Systems
verwenden.Überprüfen der Integrität von DateienSie können die Systemkonfiguration und die Dateien
nur so weit schützen, wie es die Benutzbarkeit des
Systems nicht einschränkt. Wenn Sie zum Beispiel
mit chflags die Option schg
auf die meisten Dateien in / und
/usr setzen, kann das Ihre Arbeit mehr behindern
als nützen. Die Maßnahme schützt zwar die
Dateien, schließt aber auch eine Möglichkeit,
Veränderungen zu entdecken, aus. Die letzte Schicht des
Sicherheitsmodells – das Aufdecken von Einbrüchen –
ist sicherlich die wichtigste. Alle Sicherheitsmaßnahmen sind
nichts wert, oder wiegen Sie in falscher Sicherheit, wenn Sie
nicht in der Lage sind, einen möglichen Einbruch zu entdecken.
Die Hälfte der Sicherheitsmaßnahmen hat die Aufgabe,
einen Einbruch zu verlangsamen, um es zu ermöglichen, den
Einbrecher auf frischer Tat zu ertappen.Der beste Weg, einen Einbruch zu entdecken, ist es, nach
veränderten, fehlenden oder unerwarteten Dateien zu suchen.
Der wiederum beste Weg, nach veränderten Dateien zu suchen, ist
es, die Suche von einem anderen (oft zentralen) besonders
geschützten System durchzuführen. Es ist wichtig, dass
Ihre Sicherheitsüberprüfungen vor einem Angreifer
verborgen bleiben und daher sind sie auf einem besonders
geschützten System gut aufgehoben. Um dies optimal auszunutzen,
müssen Sie dem besonders geschützten System Zugriffsrechte
auf die zu schützenden Systeme geben. Sie können die
Dateisysteme der zu schützenden Systeme schreibgeschützt
für das besonders geschützte System exportieren, oder
Sie können der besonders geschützten Maschine
SSH auf die anderen Maschinen erlauben,
indem Sie SSH Schlüsselpaare
installieren. Mit Ausnahme des verursachten Netzwerkverkehrs
ist die NFS-Methode die am wenigsten sichtbare. Sie erlaubt es Ihnen,
nahezu unentdeckt die Dateisysteme der Clients zu beobachten. Wenn
Ihr besonders geschütztes System mit den Clients über
einen Switch verbunden ist, ist die NFS-Methode oft das Mittel der
Wahl. Wenn das besonders geschützte System allerdings
mit einem Hub verbunden ist, oder der Zugriff über mehrere
Router geschieht, ist die NFS-Methode aus der Netzwerksicht zu
unsicher. In einem solchen Fall ist SSH
besser geeignet, auch wenn es deutliche Spuren
hinterlässt.Wenn das besonders geschützte System lesenden Zugriff
auf die Clients hat, müssen Sie Skripten schreiben, die die
Überwachung durchführen. Wenn Sie die NFS-Methode
verwenden, können Sie dazu einfache Systemwerkzeuge wie
&man.find.1; und &man.md5.1; benutzen. Am besten berechnen
Sie einmal am Tag MD5-Prüfsummen der Dateien, Konfigurationsdateien
in /etc und /usr/local/etc
sollten öfter überprüft werden. Wenn Unstimmigkeiten
zwischen den auf der besonders geschützten Maschine gehaltenen
MD5-Prüfsummen und den ermittelten Prüfsummen festgestellt
werden, sollte Ihr System einen Systemadministrator benachrichtigen,
der den Unstimmigkeiten dann nachgehen sollte. Ein gutes Skript
überprüft das System auch auf verdächtige
SUID-Programme sowie gelöschte oder neue Dateien in
/ und /usr.Wenn Sie SSH anstelle von NFS
benutzen, wird das Erstellen der Skripten schwieriger. Sie müssen
die Skripten und die Programme wie find mit
scp auf den Client kopieren. Damit machen
Sie die Überprüfung für einen Angreifer sichtbar.
Außerdem kann der SSH-Client auf dem
Zielsystem schon kompromittiert sein. Zusammenfassend, kann der
Einsatz von SSH nötig sein,
wenn Sie über ungesicherte Verbindungen arbeiten, aber
der Umgang mit dieser Methode ist auch sehr viel schwieriger.Ein gutes Sicherheitsskript wird auch Dateien von Benutzern,
die den Zugriff auf ein System ermöglichen, wie
.rhosts, .shosts,
.ssh/authorized_keys usw., auf
Veränderungen untersuchen, die über die Möglichkeiten
einer Überprüfung mit MD5,
die ja nur Veränderungen feststellen kann, hinausgehen.Wenn Sie über große Partitionen verfügen, kann
es zu lange dauern, jede Datei zu überprüfen. In diesem
Fall sollten Sie beim Einhängen des Dateisystems Optionen
setzen, die das Ausführen von SUID-Programmen und den
Zugriff auf Geräte verbieten. &man.mount.8; stellt dazu
die Optionen und
zur Verfügung. Sie sollten diese Dateien aber trotzdem
mindestens einmal die Woche überprüfen, da das Ziel
dieser Schicht das Aufdecken eines Einbruchs, auch wenn er nicht
erfolgreich war, ist.Die Prozessüberwachung (siehe &man.accton.8;)
des Betriebssystems steht ein günstiges Werkzeug zur
Verfügung, dass sich bei der Analyse eines Einbruchs
als nützlich erweisen kann. Insbesondere können Sie
damit herausfinden, wie der Einbrecher in das System eingedrungen ist,
vorausgesetzt die Dateien der Prozessüberwachung sind
noch alle intakt.Schließlich sollten die Sicherheitsskripten die Logdateien
analysieren. Dies sollte so sicher wie möglich durchgeführt
werden, nützlich ist das Schreiben von Logdateien auf
entfernte Systeme mit syslog. Ein Einbrecher
wird versuchen, seine Spuren zu verwischen. Die Logdateien
sind wichtig für den Systemadministrator, da er aus ihnen
den Zeitpunkt und die Art des Einbruchs bestimmen kann. Eine
Möglichkeit, die Logdateien unverändert aufzuheben,
ist es, die Systemkonsole auf einen seriellen Port zu legen
und die Informationen dort von einer gesicherten Maschine
auszulesen.ParanoiaEs schadet nicht, ein bisschen paranoid zu sein.
Grundsätzlich darf ein Systemadministrator jede
Sicherheitsmaßnahme treffen, die die Bedienbarkeit des
Systems nicht einschränkt. Er kann auch Maßnahmen
treffen, die die Bedienbarkeit einschränken,
wenn er diese vorher genau durchdacht hat. Was noch wichtiger
ist: Halten Sie sich nicht sklavisch an dieses Dokument, sondern
führen Sie eigene Maßnahmen ein, um nicht einem
künftigen Angreifer, der auch Zugriff auf dieses Dokument
hat, alle Ihre Methoden zu verraten.Denial-of-Service AngriffeDenial-of-Service (DoS)Dieser Abschnitt behandelt Denial-of-Service Angriffe (DoS).
Ein DoS-Angriff findet typischerweise auf der Paketebene statt.
Während Sie nicht viel gegen moderne Angriffe mit falschen
Paketen, die das Netzwerk sättigen, ausrichten können,
können Sie allerdings den Schaden in der Hinsicht begrenzen,
dass Ihre Server von einem solchen Angriff nicht gestoppt
werden.Begrenzen von fork() Aufrufen.Begrenzen von Sprungbrett-Angriffen (ICMP response Angriffen,
ping zu Broadcast-Adressen usw.).Kernel-Cache für Routen.Ein häufiger DoS-Angriff gegen forkende Server versucht
den Server dazu zu bringen, möglichst viele Prozesse, viele
Dateideskriptoren und viel Speicher zu verbrauchen, bis hin zu
dem Punkt, an dem die Maschine ausfällt. &man.inetd.8;
besitzt einige Optionen, um diese Art von Angriffen zu begrenzen.
Beachten Sie bitte, dass es möglich ist, einen
Ausfall einer Maschine zu verhindern, doch ist es generell nicht
möglich, den Ausfall eines Dienstes bei dieser Art
von Angriffen zu verhindern. Lesen Sie sich bitte die Manualpages
von inetd gut durch und achten Sie speziell
auf die Optionen , und
. Angriffe mit gefälschten IP-Adressen
umgehen , so dass normalerweise eine
Kombination der Optionen benutzt werden muss. Manche Server,
die nicht von inetd gestartet werden,
besitzen Optionen, um den Start über fork()
einzuschränken.Sendmail besitzt die Option
, die besser als die
eingebauten Optionen zur Begrenzung der Systemauslastung funktioniert.
Sie sollten beim Start von sendmailMaxDaemonChildren so hoch setzen, dass Sie
die erwartete Auslastung gut abfangen können. Allerdings
sollten Sie den Wert nicht so hoch setzen, dass der
Rechner über seine eigenen Füße fällt.
Es ist auch klug, sendmail im
Queue-Modus () laufen zu
lassen. Der Dæmon (sendmail -bd) sollte
getrennt von den Queue-Läufen (sendmail -q15m)
laufen. Wenn Sie trotzdem eine sofortige Auslieferung der Post
wünschen, können Sie die Queue in einem geringeren
Intervall, etwa , abarbeiten. Geben Sie
für diesessendmail aber einen vernünftigen
Wert für MaxDaemonChildren an, um
Fehler zu verhindern.Syslogd kann direkt angegriffen
werden. Daher empfehlen wir Ihnen unbedingt die Option
zu benutzen. Sollte das nicht möglich
sein, benutzen Sie bitte .Vorsicht ist auch mit Diensten geboten, die automatisch
eine Rückverbindung eröffnen, wie der
reverse-identd der TCP-Wrapper.
Diese Funktion der TCP-Wrapper
sollten Sie normalerweise nicht benutzen.Es empfiehlt sich sehr, interne Dienste vor externen Zugriffen
durch eine Firewall an der Grenze Ihres Netzwerks zu schützen.
Dahinter steckt mehr die Idee, das Netzwerk vor Überlastung
durch Angriffe von außen zu schützen, als interne
Dienste vor einem root-Zugriff aus dem Netz
zu schützen. Konfigurieren Sie immer eine Firewall, die
alle Zugriffe blockiert, das heißt blockieren Sie
alles außer den Ports A, B, C, D
und M-Z. Damit können Sie Zugriffe auf alle niedrigen
Ports blockieren und Zugriffe auf spezielle Dienste wie
named, wenn Sie den primären
Namensdienst für eine Zone anbieten,
ntalkd oder
sendmail erlauben. Wenn Sie die
Firewall so konfigurieren, das sie in der Voreinstellung alle
Zugriffe erlaubt, ist es sehr wahrscheinlich, dass Sie
vergessen, eine Reihe von Diensten zu blockieren bzw. einen
internen Dienst einführen und dann vergessen die Firewall
zu aktualisieren. Sie können immer die höheren
Portnummern öffnen, ohne die niedrigen Portnummern,
die nur von root benutzt werden dürfen,
zu kompromittieren. Beachten Sie bitte auch, dass es
&os; erlaubt, die Portnummern, die für dynamische
Verbindungen zur Verfügung stehen, zu konfigurieren.
Mit sysctl lassen sich verschiedene
Bereiche der net.inet.ip.portrange Variablen
setzen (eine Liste erhalten Sie mit sysctl -a | fgrep
portrange).
So können Sie zum Beispiel die Portnummern 4000 bis 5000
für den normalen Bereich und die Nummern 49152 bis 65535
für den hohen Bereich vorsehen. Dies erleichtert Ihnen
die Konfiguration der Firewall, da Sie nun Zugriffe auf Ports
unterhalb von 4000, mit Ausnahme der Dienste, die von außen
erreichbar sein sollen, blockieren können.ICMP_BANDLIMEine andere Form eines DoS-Angriffs nutzt einen Server
als Sprungbrett, der Server wird dabei so angegriffen, dass
seine Antworten ihn selber, das lokale Netzwerk oder einen
anderen Server überlasten. Der am häufigsten verwendete
Angriff dieser Art ist der ICMP ping broadcast
Angriff. Der Angreifer fälscht dazu
ping-Pakete, die zu der Broadcast-Adresse
Ihres LANs gesendet werden, indem er darin als Quelladresse
die Adresse des Opfers einsetzt. Wenn die Router an der Grenze
Ihres Netzwerks ping-Pakete auf
Broadcast-Adressen nicht abwehren, wird Ihr LAN genügend
Netzwerkverkehr generieren, um das Ziel des Angriffs zu
überlasten. Dies kann besonders effektiv sein, wenn der
Angreifer diese Methode mit mehreren Dutzend Broadcast-Adressen
über mehrere Netzwerke einsetzt. Es wurden schon
Broadcast-Angriffe mit über 120 Megabit pro Sekunde
gemessen. Ein zweiter Sprungbrett-Angriff wird gegen
das Fehlerbehandlungssystem von ICMP eingesetzt. Indem ein Angreifer
Pakete konstruiert, die eine ICMP-Fehlermeldung hervorrufen, kann
er das einkommende Netzwerk des Servers sättigen und diesen
wiederum veranlassen sein ausgehendes Netzwerk mit ICMP-Antworten
zu sättigen. Diese Art des Angriffs kann alle mbuf-Strukturen
auf dem Server aufbrauchen und damit den Server stilllegen,
insbesondere wenn der Server nicht in der Lage ist, die generierten
ICMP-Antworten schnell genug abzuführen. Der &os;-Kernel
besitzt eine neue Option , die die
Auswirkungen von solchen Angriffen begrenzen kann. Die letzte
weit verbreitete Form von Sprungbrett-Angriffen verwendet
interne inetd-Dienste wie den
UDP echo-Dienst. Der Angreifer fälscht
dazu einfach ein UDP-Paket, indem er als Quellport den
echo-Port von Server A
und als Zielport den echo-Port von
Server B angibt, wobei beide
Server in Ihrem LAN stehen. Die beiden Server werden nun
dieses Paket zwischen sich hin und her schicken. Der Angreifer
kann die beiden Server und das LAN einfach damit überlasten,
dass er mehrere Pakete dieser Art generiert. Ähnliche
Probleme gibt es mit dem internen
chargen-Port, daher sollten Sie
die internen inetd-Testdienste
abstellen.Gefälschte IP-Pakete können dazu benutzt werden,
den Kernel-Cache für Routen zu überlasten. Schauen Sie
sich bitte die sysctl-Parameter
net.inet.ip.rtexpire, rtminexpire
und rtmaxcache an. Ein Angriff der gefälschte
Pakete mit zufälligen Quelladressen einsetzt, bewirkt, dass
der Kernel eine Route im Route-Cache anlegt, die Sie sich mit
netstat -rna | fgrep W3 ansehen können.
Diese Routen verfallen für gewöhnlich nach 1600 Sekunden.
Wenn der Kernel feststellt, dass die Routingtabelle im Cache
zu groß geworden ist, wird er dynamisch den Wert von
rtexpire verringern. Dieser Wert wird aber nie
kleiner werden als rtminexpire. Daraus
ergeben sich zwei Probleme:Der Kernel reagiert nicht schnell genug, wenn ein
Server mit einer niedrigen Grundlast plötzlich angegriffen
wird.rtminexpire ist nicht klein genug,
um einen anhaltenden Angriff zu überstehen.Wenn Ihre Server über eine T3 oder eine noch schnellere
Leitung mit dem Internet verbunden sind, ist es klug, mit
&man.sysctl.8; die Werte für rtexpire und
rtminexpire händisch zu setzen. Setzen
Sie bitte keinen der Werte auf Null, außer Sie wollen die
Maschine zum Erliegen bringen. Ein Wert von 2 Sekunden für
beide Parameter sollte ausreichen, um die Routingtabelle vor
einem Angriff zu schützen.Anmerkungen zum Zugriff mit Kerberos und SSHsshKerberosIVEs gibt ein paar Punkte, die Sie beachten sollten, wenn Sie
Kerberos oder SSH
einsetzen wollen. Kerberos V ist ein
ausgezeichnetes Authentifizierungsprotokoll. Leider gibt es
Fehler, in den für Kerberos
angepassten Versionen von telnet und
rlogin, die sie ungeeignet für den
Umgang mit binären Datenströmen machen. Weiterhin
verschlüsselt Kerberos Ihre Sitzung
nicht, wenn Sie nicht die Option verwenden,
mit SSH wird dagegen alles
verschlüsselt.Ein Problem mit SSH sind Weiterleitungen von Verbindungen.
Wenn Sie von einer sicheren Maschine, auf der sich Ihre
Schlüssel befinden, eine Verbindung zu einer
ungesicherten Maschine aufmachen, wird für die Dauer der
Sitzung ein Port für Weiterleitungen geöffnet.
Ein Angreifer, der auf der unsicheren Maschine Zugang zu
root hat, kann diesen Port
benutzen, um Zugriff auf andere Maschinen zu
erlangen, die mit Ihren Schlüsseln zugänglich
sind.Wir empfehlen Ihnen, für die Logins Ihrer Mitarbeiter immer
SSH zusammen mit
Kerberos einzusetzen. Damit reduzieren
Sie die Abhängigkeit von potentiell gefährdeten
Schlüsseln und schützen gleichzeitig die Passwörter
mit Kerberos.
SSH-Schlüsselpaare sollten nur
für automatisierte Aufgaben von einem besonders gesicherten
Server eingesetzt werden (Kerberos
kann für diese Art von Aufgaben nicht eingesetzt werden).
Weiterhin empfehlen wir Ihnen, das Weiterreichen von Schlüsseln
in der SSH-Konfiguration abzustellen bzw.
die from=IP/DOMAIN Option in
authorized_keys zu verwenden, die den
Schlüssel nur von bestimmten Maschinen aus nutzbar macht.BillSwingleTeile umgeschrieben und aktualisiert von DES, MD5, und crypt()Sicherheitcrypt()crypt()DESMD5Jedem Benutzer eines &unix; Systems ist ein Passwort zugeordnet.
Es scheint offensichtlich, dass das Passwort nur dem Benutzer
und dem System bekannt sein muss. Um die Passwörter
geheim zu halten, werden sie mit einer nicht umkehrbaren Hash-Funktion
verschlüsselt, das heißt sie können leicht
verschlüsselt aber nicht entschlüsselt werden. Was wir
gerade als offensichtlich dargestellt haben, ist also nicht wahr: Das
Betriebssystem kennt das Passwort wirklich
nicht, es kennt nur das verschlüsselte
Passwort. Die einzige Möglichkeit, das originale Passwort
herauszufinden, besteht darin, alle möglichen Passwörter
auszuprobieren (brute force Suche).Zu der Zeit als &unix; entstanden ist, war die einzig sichere
Möglichkeit Passwörter zu verschlüsseln, leider
DES (Data Encryption Standard). Für die Einwohner der USA
stellte das kein Problem dar, aber da der Quellcode von DES nicht aus
den USA exportiert werden durfte, musste ein Weg gefunden werden,
der die Gesetze der USA nicht verletzte und gleichzeitig die
Kompatibilität mit anderen &unix; Systemen, die immer noch DES
benutzten, wahrte.Die Lösung bestand darin, die Verschlüsselungsbibliotheken
aufzuspalten. Benutzer in den USA konnten die DES-Bibliotheken
installieren und nutzen. In der Grundeinstellung benutzt &os;
MD5 als Verschlüsselungsmethode, das exportiert werden durfte
und damit von jedem genutzt werden konnte. Es wird davon ausgegangen,
dass MD5 sicherer als DES ist, so dass DES nur aus
Kompatibilitätsgründen installiert werden sollte.Erkennen der VerschlüsselungsmethodeVor &os; 4.4 war libcrypt.a ein
symbolischer Link, der auf die Library zeigte, die die
Verschlüsselungsroutinen enthielt. Seit &os; 4.4 enthält
libcrypt.a verschiedene Hash-Funktionen, deren
Anwendung sich konfigurieren lässt. Momentan werden
DES-, MD5- und Blowfish-Hash Funktionen unterstützt. In der
Voreinstellung benutzt &os; die MD5-Hash Funktion.Sie können leicht herausfinden, welche
Verschlüsselungsmethode von &os; verwendet wird. Ein Weg
besteht darin, die verschlüsselten Passwörter in
/etc/master.passwd zu untersuchen.
Passwörter, die mit MD5 verschlüsselt wurden,
sind länger als die mit DES verschlüsselten und
beginnen mit den Zeichen $1$.
Passwörter, die mit $2a$
anfangen, wurden mit der Blowfish-Funktion verschlüsselt.
DES Passwörter besitzen keine offensichtlichen Merkmale,
an denen sie identifiziert werden könnten. Sie sind aber
kürzer als MD5-Passwörter und sind in einem
64 Zeichen umfassenden Alphabet kodiert, das das
$-Zeichen nicht enthält. Ein relativ
kurzes Passwort, das nicht mit einem
$-Zeichen anfängt, ist wahrscheinlich
ein DES-Passwort.Die Verschlüsselungsmethode für neue
Passwörter wird durch passwd_format in
/etc/login.conf bestimmt. Der Wert dieser
Variablen kann entweder des, md5
oder blf sein. Näheres schlagen Sie bitte
in &man.login.conf.5; nach.EinmalpasswörterEinmalpasswörterSicherheitEinmalpasswörterS/Key ist ein Einmalpasswort System, das auf einer nicht
umkehrbaren Hash-Funktion beruht. Aus Kompatibilitätsgründen
benutzt &os; MD4-Hashes, andere Systeme benutzen MD5 und DES-MAC.
S/Key ist seit Version 1.1.5 Teil des &os;-Basissystems und wird
auf einer wachsenden Anzahl anderer Systeme benutzt. S/Key
ist eine geschützte Warenmarke von
Bell Communications Research, Inc.Ab &os; 5.0 wurde S/Key durch OPIE
(One-time Passwords In Everything), das die gleichen Funktionen
bietet, abgelöst. OPIE benutzt MD5 Hash-Funktionen.Im Folgenden werden drei verschiedene
Passwörter verwendet. Das Erste ist Ihr normales System- oder
Kerberos-Passwort und wird im Folgenden System-Passwort
genannt. Das Zweite ist das Einmalpasswort, das bei S/Key
von key oder bei OPIE von
opiekey generiert wird. Dieses Passwort wird von
den Programmen keyinit oder
opiepasswd und dem Login-Programm akzeptiert. Im
Folgenden wird es Einmalpasswort genannt. Das Dritte
Passwort ist das geheime Passwort, das Sie mit den Programmen
key/opiekey (manchmal auch mit
keyinit/opiepasswd) zum Erstellen
der Einmalpasswörter verwenden. Dieses Passwort
werden wir im Folgenden geheimes Passwort
oder schlicht Passwort nennen.Das geheime Passwort steht in keiner Beziehung zu Ihrem
System-Passwort, beide können gleich sein, obwohl das nicht
empfohlen wird. Die geheimen Passwörter von S/Key oder
OPIE sind nicht auf eine Länge von 8 Zeichen,
wie alte &unix; PasswörterUnter &os; darf das System-Passwort maximal
128 Zeichen lang sein., beschränkt.
Sie können so lang sein, wie Sie wollen. Gebräuchlich sind
Passwörter, die sich aus sechs bis sieben Wörtern
zusammensetzen. Das S/Key oder OPIE System arbeitet
größtenteils unabhängig von den
auf &unix; Systemen verwendeten Passwort-Mechanismen.Neben dem Passwort gibt es noch zwei Werte, die für
S/Key und OPIE wichtig sind. Der erste ist der
Initialwert (engl. seed
oder key), der aus zwei Buchstaben
und fünf Ziffern besteht. Der zweite Wert ist der
Iterationszähler, eine Zahl zwischen
1 und 100. S/Key generiert das Einmalpasswort, indem
es den Initialwert und das geheime Passwort aneinander hängt
und dann die MD4/MD5 Hash-Funktion so oft, wie durch den
Iterationszähler gegeben, anwendet. Das Ergebnis wird in
sechs englische Wörter umgewandelt, die Ihr Einmalpasswort
sind. Das Authentifizierungssystem (meistens PAM) merkt sich das
zuletzt benutzte Einmalpasswort und Sie sind authentisiert,
wenn die Hash-Funktion des Passworts dem vorigen Passwort
entspricht. Da nicht umkehrbare Hash-Funktionen benutzt werden,
ist es unmöglich, aus einem bekannten Passwort weitere
gültige Einmalpasswörter zu berechnen. Der
Iterationszähler wird nach jeder erfolgreichen Anmeldung um
eins verringert und stellt so die Synchronisation zwischen Benutzer
und Login-Programm sicher. Wenn der Iterationszähler den
Wert 1 erreicht, müssen S/Key und OPIE neu initialisiert
werden.In jedem System werden drei Programme verwendet, die weiter unten
beschrieben werden. Die Programme key und
opiekey verlangen einen Iterationszähler,
einen Initialwert und ein geheimes Passwort. Daraus generieren
sie ein Einmalpasswort oder eine Liste von
Einmalpasswörtern. Die Programme keyinit
und opiepasswd werden benutzt, um S/Key bzw.
OPIE zu initialisieren. Mit ihnen können Passwörter,
Iterationszähler oder Initialwerte geändert werden.
Als Parameter verlangen sie entweder ein geheimes Passwort
oder einen Iterationszähler oder einen Initialwert und ein
Einmalpasswort. Die Programme keyinfo
und opieinfo geben den momentanen
Iterationszähler und Initialwert eines Benutzers aus. Diese
werden aus den Dateien /etc/skeykeys bzw.
/etc/opiekeys ermittelt.Im Folgenden werden vier verschiedene Tätigkeiten beschrieben.
Zuerst wird erläutert, wie keyinit oder
opiepasswd über eine gesicherte Verbindung
eingesetzt werden, um Einmalpasswörter das erste Mal
zu konfigurieren oder das Passwort oder den Initialwert
zu ändern. Als nächstes wird erklärt, wie
keyinit oder opiepasswd
über eine nicht gesicherte Verbindung, zusammen mit
key oder opiekey über eine
gesicherte Verbindung, eingesetzt werden, um dasselbe zu erreichen.
Als drittes wird beschrieben, wie
key/opiekey genutzt werden,
um sich über eine nicht gesicherte Verbindung anzumelden.
Die vierte Tätigkeit beschreibt, wie mit key
oder opiekey eine Reihe von Schlüsseln
generiert werden, die Sie sich aufschreiben oder ausdrucken können,
um sich von Orten anzumelden, die über keine gesicherten
Verbindungen verfügen.Einrichten über eine gesicherte VerbindungBenutzen Sie keyinit um S/Key das erste
Mal einzurichten, das Passwort oder den Initialwert
zu ändern, während Sie über eine gesicherte
Verbindung, das heißt an der Konsole oder über
SSH angemeldet, sind:&prompt.user; keyinit
Adding unfurl:
Reminder - Only use this method if you are directly connected.
If you are using telnet or rlogin exit with no password and use keyinit -s.
Enter secret password:
Again secret password:
ID unfurl s/key is 99 to17757
DEFY CLUB PRO NASH LACE SOFTMit OPIE benutzen Sie stattdessen
opiepasswd:&prompt.user; opiepasswd -c
[grimreaper] ~ $ opiepasswd -f -c
Adding unfurl:
Only use this method from the console; NEVER from remote. If you are using
telnet, xterm, or a dial-in, type ^C now or exit with no password.
Then run opiepasswd without the -c parameter.
Using MD5 to compute responses.
Enter new secret pass phrase:
Again new secret pass phrase:
ID unfurl OTP key is 499 to4268
MOS MALL GOAT ARM AVID COED
Nach der Aufforderung Enter new secret pass phrase:
oder Enter secret password: geben Sie bitte Ihr
Passwort ein. Dies ist nicht das Passwort, mit dem Sie sich
anmelden, sondern es wird genutzt, um das Einmalpasswort
zu generieren. Die Zeile, die mit ID anfängt,
enthält Ihren Login-Namen, den Iterationszähler und den
Initialwert. Diese Werte müssen Sie sich nicht behalten, da
das System sie zeigen wird, wenn Sie sich anmelden. In der letzten
Zeile steht das Einmalpasswort, das aus diesen Parametern
und Ihrem geheimen Passwort ermittelt wurde. Wenn sie sich jetzt
wieder anmelden wollten, dann müssten Sie dieses
Passwort benutzen.Einrichten über eine nicht gesicherte VerbindungUm Einmalpasswörter über eine nicht gesicherte
Verbindung einzurichten, oder das geheime Passwort zu ändern,
müssen Sie über eine gesicherte Verbindung zu einer Stelle
verfügen, an der Sie die Kommandos key
oder opiekey ausführen. Dies kann
ein Desk Accessory auf einem &macintosh; oder
die Eingabeaufforderung auf einer Maschine, der Sie vertrauen, sein.
Zudem müssen Sie einen Iterationszähler vorgeben (100
ist ein guter Wert) und einen Initialwert wählen, wobei
Sie auch einen zufällig generierten benutzen können.
Benutzen Sie keyinit -s über die ungesicherte
Verbindung zu der Maschine, die Sie einrichten wollen:&prompt.user; keyinit -s
Updating unfurl:
Old key: to17758
Reminder you need the 6 English words from the key command.
Enter sequence count from 1 to 9999: 100
Enter new key [default to17759]:
s/key 100 to 17759
s/key access password:
s/key access password:CURE MIKE BANE HIM RACY GOREMit OPIE benutzen Sie opiepasswd:&prompt.user; opiepasswd
Updating unfurl:
You need the response from an OTP generator.
Old secret pass phrase:
otp-md5 498 to4268 ext
Response: GAME GAG WELT OUT DOWN CHAT
New secret pass phrase:
otp-md5 499 to4269
Response: LINE PAP MILK NELL BUOY TROY
ID mark OTP key is 499 gr4269
LINE PAP MILK NELL BUOY TROY
Drücken Sie Return, um die Vorgabe
für den Initialwert, der von keyinitkey genannt wird, zu akzeptieren. Bevor
Sie nun das Zugriffspasswort
(engl. access password)
eingeben, rufen Sie über die gesicherte Verbindung
key mit denselben Parametern auf:&prompt.user; key 100 to17759
Reminder - Do not use this program while logged in via telnet or rlogin.
Enter secret password: <secret password>
CURE MIKE BANE HIM RACY GOREMit OPIE benutzen Sie opiekey:&prompt.user; opiekey 498 to4268
Using the MD5 algorithm to compute response.
Reminder: Don't use opiekey from telnet or dial-in sessions.
Enter secret pass phrase:
GAME GAG WELT OUT DOWN CHAT
Gehen Sie nun zurück zu der nicht gesicherten Verbindung
und geben dort das eben generierte Einmalpasswort ein.Erzeugen eines einzelnen EinmalpasswortesNachdem Sie S/Key oder OPIE eingerichtet haben, werden Sie beim
nächsten Anmelden wie folgt begrüßt:&prompt.user; telnet example.com
Trying 10.0.0.1...
Connected to example.com
Escape character is '^]'.
FreeBSD/i386 (example.com) (ttypa)
login: <username>
s/key 97 fw13894
Password: OPIE begrüßt Sie wie folgt:&prompt.user; telnet example.com
Trying 10.0.0.1...
Connected to example.com
Escape character is '^]'.
FreeBSD/i386 (example.com) (ttypa)
login: <username>
otp-md5 498 gr4269 ext
Password: Anmerkung: S/Key und OPIE besitzen eine nützliche Eigenschaft,
die hier nicht gezeigt ist. Wenn Sie an der Eingabeaufforderung
Return eingeben, wird die echo-Funktion eingeschaltet,
das heißt Sie sehen, was Sie tippen. Dies ist besonders
nützlich, wenn Sie ein generiertes Passwort von einem
Ausdruck abtippen müssen.MS-DOSWindowsMacOSJetzt müssen Sie Ihr Einmalpasswort generieren,
um der Anmeldeaufforderung nachzukommen. Dies muss auf
einem gesicherten System geschehen, auf dem Sie key
oder opiekey ausführen können.
Diese Programme gibt es übrigens auch für DOS, &windows; und
&macos;. Beide Programme benötigen den Iterationszähler
sowie den Initialwert als Parameter, die Sie mittels
cut-and-paste direkt von der Login Aufforderung
nehmen können.Auf dem sicheren System:&prompt.user; key 97 fw13894
Reminder - Do not use this program while logged in via telnet or rlogin.
Enter secret password:
WELD LIP ACTS ENDS ME HAAGMit OPIE:&prompt.user; opiekey 498 to4268
Using the MD5 algorithm to compute response.
Reminder: Don't use opiekey from telnet or dial-in sessions.
Enter secret pass phrase:
GAME GAG WELT OUT DOWN CHATMit dem jetzt generierten Einmalpasswort können
Sie die Anmeldeprozedur fortsetzen:login: <username>
s/key 97 fw13894
Password: <return to enable echo>
s/key 97 fw13894
Password [echo on]: WELD LIP ACTS ENDS ME HAAG
Last login: Tue Mar 21 11:56:41 from 10.0.0.2 ...Erzeugen von mehreren EinmalpasswörternManchmal müssen Sie sich an Orte begeben, an denen
Sie keinen Zugriff auf eine sichere Maschine oder eine
sichere Verbindung haben. In diesem Fall können Sie
vorher mit key oder opiekey
einige Einmalpasswörter generieren, die Sie sich
ausdrucken und mitnehmen können. Zum Beispiel:&prompt.user; key -n 5 30 zz99999
Reminder - Do not use this program while logged in via telnet or rlogin.
Enter secret password: <secret password>
26: SODA RUDE LEA LIND BUDD SILT
27: JILT SPY DUTY GLOW COWL ROT
28: THEM OW COLA RUNT BONG SCOT
29: COT MASH BARR BRIM NAN FLAG
30: CAN KNEE CAST NAME FOLK BILKMit OPIE:&prompt.user; opiekey -n 5 30 zz99999
Using the MD5 algorithm to compute response.
Reminder: Don't use opiekey from telnet or dial-in sessions.
Enter secret pass phrase: <secret password>
26: JOAN BORE FOSS DES NAY QUIT
27: LATE BIAS SLAY FOLK MUCH TRIG
28: SALT TIN ANTI LOON NEAL USE
29: RIO ODIN GO BYE FURY TIC
30: GREW JIVE SAN GIRD BOIL PHIMit fordern Sie fünf
Passwörter der Reihe nach an. Der letzte
Iterationszähler wird durch gegeben.
Beachten Sie bitte, dass die Passwörter in der
umgekehrten Reihenfolge, in der sie
zu benutzen sind, ausgeben werden. Wenn Sie wirklich paranoid
sind, schreiben Sie sich jetzt die Passwörter auf,
ansonsten drucken Sie sie mit lpr aus.
Beachten Sie, dass jede Zeile den Iterationszähler
und das Einmalpasswort zeigt, trotzdem finden Sie es
vielleicht hilfreich, eine Zeile nach Gebrauch durchzustreichen.Einschränken der Benutzung von
System-PasswörternMit S/Key können Sie die Verwendung von
System-Passwörtern, basierend auf dem Hostnamen,
Benutzernamen, Terminal oder IP-Adresse, einschränken.
Die Beschränkungen werden in
/etc/skey.access definiert. Die
Manualpage &man.skey.access.5; beschreibt das Format dieser
Datei sowie einige Vorsichtsmaßnahmen, die Sie treffen
sollten, bevor Sie diese Datei einsetzen.Wenn /etc/skey.access nicht existiert
(wie auf &os; 4.X Systemen), dann dürfen sich
alle Benutzer mit ihren System-Passwörtern anmelden.
Wenn die Datei existiert, dann müssen alle Benutzer
S/Key zum Anmelden benutzen. Ausnahmen müssen explizit
in skey.access konfiguriert werden.
In allen Fällen werden System-Passwörter
beim Anmelden auf der Konsole erlaubt.Das folgende Beispiel für skey.access
zeigt die drei geläufigsten Konfigurationsoptionen:Das folgende Beispiel zeigt die drei häufigsten
Ausnahmen:permit internet 192.168.0.0 255.255.0.0
permit user fnord
permit port ttyd0Die erste Zeile (permit internet) erlaubt
es Benutzern, deren IP-Adresse, die immer noch gefälscht werden
kann, mit dem angegebenen Wert und der angegebenen Maske
übereinstimmt, System-Passwörter zu benutzen. Dies
sollte nicht als Sicherheitsmechanismus missverstanden werden,
sondern sollte autorisierte Benutzer daran erinnern, dass sie
ein ungesichertes Netzwerk benutzen und sich mit S/Key anmelden
müssen.Die zweite Zeile (permit user) erlaubt
es dem angegebenen Benutzer, hier fnord,
jederzeit System-Passwörter zu verwenden. Dies sollte
allerdings nur für Benutzer konfiguriert werden, die das
key Programm nicht benutzen können (Leute
mit dumb Terminals oder wirklich uneinsichtige).Die dritte Zeile (permit port) erlaubt allen
Benutzern, die sich an dem angegebenen Terminal anmelden,
System-Passwörter zu benutzen. Sie sollte für
Einwählverbindungen genutzt werden.Wie S/Key kann OPIE die Verwendung von System-Passwörtern
abhängig von der Quell-IP-Adresse einschränken.
Die dazu nötigen Einstellungen werden in der Datei
/etc/opieaccess vorgenommen, die
auf Systemen ab &os; 5.0 vorhanden ist. Weitere
Informationen über diese Datei und Sicherheitshinweise
zu ihrer Verwendung entnehmen Sie bitte der Hilfeseite
&man.opieaccess.5;.Die Datei opieaccess könnte
beispielsweise die folgende Zeile enthalten:permit 192.168.0.0 255.255.0.0Diese Zeile erlaubt es Benutzern, die sich von einer der
angegebenen Quell-IP-Adressen anmelden, ihr System-Passwort
zu verwenden. Beachten Sie bitte, dass eine Quell-IP-Adresse
leicht gefälscht werden kann.Findet sich in opieaccess kein
passender Eintrag, muss die Anmeldung mit OPIE erfolgen.TomRhodesBeigetragen von TCP-WrapperTCP-WrapperWahrscheinlich hat jeder, der &man.inetd.8; kennt,
schon mal von den TCP-Wrappern gehört. Die
wenigsten erkennen den vollen Nutzen der TCP-Wrapper
in einer Netzumgebung. Es scheint, dass die meisten
Leute Netzverbindungen mit einer Firewall absichern
wollen. Auch wenn eine Firewall ein mächtiges
Instrument ist, gibt es Sachen, die eine Firewall
nicht kann. Eine Firewall kann beispielsweise keine
Nachricht an den Verbindungsursprung senden. Genau
das und mehr können aber die
TCP-Wrapper. Im Folgenden werden
die Funktionen der TCP-Wrapper
und Beispiele für deren Konfiguration vorgestellt.Die TCP-Wrapper erweitern die
Steuerungsmöglichkeiten, die inetd
über die Dienste unter seiner Kontrolle hat.
Beispielsweise können Verbindungen protokolliert,
Nachrichten zurückgesandt oder nur interne Verbindungen
angenommen werden. Die TCP-Wrapper
bieten nicht nur eine weitere Sicherheitsschicht, die
teilweise auch von Firewalls geboten wird, sie bieten
darüber hinaus Funktionen zur Steuerung von
Verbindungen, die eine Firewall nicht bietet.Die erweiterten Funktionen der
TCP-Wrapper sind kein Firewall-Ersatz.
Sie sollten zusammen mit einer Firewall und anderen
Sicherheitsvorkehrungen eingesetzt werden. Die
TCP-Wrapper sind eine weitere
Sicherheitsschicht zum Schutz eines Systems.Da die Wrapper die Funktion von inetd
erweitern, wird im Folgenden vorausgesetzt, dass Sie den
Abschnitt über die
inetd-Konfiguration
schon gelesen haben.Streng genommen handelt es sich bei den von &man.inetd.8;
gestarteten Programmen nicht um Daemonen. Da
sich diese Bezeichnung aber eingebürgert hat, wird sie auch
in diesem Abschnitt verwendet.TCP-Wrapper einrichtenUm die TCP-Wrapper unter &os;
zu benutzen, muss nur der inetd
aus rc.conf mit den voreingestellten
Optionen gestartet werden.
Die Konfigurationsdatei /etc/hosts.allow
darf keine Fehler enthalten; falls doch, werden die
Fehler mit &man.syslogd.8; protokolliert.Im Gegensatz zu anderen Implementationen der
TCP-Wrapper wird vom Gebrauch
der Datei hosts.deny abgeraten.
Die Konfiguration sollte sich vollständig in der
Datei /etc/hosts.allow befinden.In der einfachsten Konfiguration werden Dienste
abhängig vom Inhalt der Datei
/etc/hosts.allow erlaubt oder
gesperrt. Unter &os; wird in der Voreinstellung
jeder von inetd gestartete Dienst
erlaubt. Sehen wir uns zunächst die Grundkonfiguration
an.Eine Konfigurationszeile ist wie folgt aufgebaut:
Dienst : Adresse : Aktion.
Dienst ist der von inetd
gestartete Dienst (auch Daemon genannt). Die
Adresse kann ein gültiger
Rechnername, eine IP-Adresse oder
eine IPv6-Adresse in Klammern
([]) sein.
Der Wert allow im Feld
Aktion erlaubt Zugriffe, der Wert
deny verbietet Zugriffe.
Die Zeilen in hosts.allow
werden für jede Verbindung der Reihe nach
abgearbeitet. Trifft eine Zeile auf eine Verbindung
zu, wird die entsprechende Aktion ausgeführt
und die Abarbeitung ist beendet.Es gibt noch weitere Konfigurationsoptionen, die
gleich erläutert werden. Das bisher Gesagte
reicht, um eine einfache Regel aufzustellen. Wenn
Sie einkommende POP3-Verbindungen
für den Dienst
mail/qpopper
erlauben wollen, erweitern Sie
hosts.allow um die nachstehende
Zeile:# This line is required for POP3 connections:
qpopper : ALL : allowNachdem Sie die Zeile hinzugefügt haben, muss der
inetd neu gestartet werden. Sie
können dazu das Kommando &man.kill.1; verwenden
oder /etc/rc.d/inetd restart
ausführen.Erweiterte Konfiguration der TCP-WrapperDie TCP-Wrapper besitzen
weitere Optionen, die bestimmen, wie Verbindungen
behandelt werden. In einigen Fällen ist es
gut, wenn bestimmten Rechnern oder Diensten eine
Nachricht geschickt wird. In anderen Fällen
soll vielleicht der Verbindungsaufbau protokolliert
oder eine E-Mail an einen Administrator versandt
werden. Oder ein Dienst soll nur für das
lokale Netz bereitstehen. Dies alles ist mit so genannten
Wildcards, Metazeichen und der Ausführung externer
Programme möglich und wird in den nächsten
zwei Abschnitten erläutert.Externe Kommandos ausführenStellen Sie sich vor, eine Verbindung soll
verhindert werden und gleichzeitig soll demjenigen,
der die Verbindung aufgebaut hat, eine Nachricht
geschickt werden. Auf welche Art müssen
die TCP-Wrapper konfiguriert werden?
Die Option führt beim
Verbindungsaufbau ein Kommando aus. In der Datei
hosts.allow ist ein Beispiel
für diese Option enthalten:# Alle anderen Dienste sind geschützt
ALL : ALL \
: severity auth.info \
: twist /bin/echo "You are not welcome to use %d from %h."Für jeden Dienst, der nicht vorher in
der Datei hosts.allow konfiguriert
wurde, wird die Meldung You are not allowed to use
daemon from
hostname. zurückgegegeben.
Dies ist besonders nützlich, wenn Sie die
Gegenstelle sofort benachrichtigen wollen, nachdem
die Verbindung getrennt wurde. Beachten Sie, dass
der Text der Meldung in Anführungszeichen
(") stehen muss,
es gibt keine Ausnahmen zu dieser Regel.Ein so konfigurierter Server ist anfällig
für Denial-of-Service-Angriffe. Ein Angreifer
kann die gesperrten Dienste mit Verbindungsanfragen
überfluten.Um einem Denial-of-Service-Angriff zu entgehen,
benutzen Sie die Option .
Wie die Option verbietet
die Verbindung und führt
externe Kommandos aus. Allerdings sendet die
Option der Gegenstelle
keine Rückmeldung. Sehen Sie sich die
nachstehende Konfigurationsdatei an:# Verbindungen von example.com sind gesperrt:
ALL : .example.com \
: spawn (/bin/echo %a from %h attempted to access %d >> \
/var/log/connections.log) \
: denyDamit sind Verbindungen von der Domain
*.example.com gesperrt.
Jeder Verbindungsaufbau wird zudem in der Datei
/var/log/connections.log
protokolliert. Das Protokoll enthält den
Rechnernamen, die IP-Adresse
und den Dienst, der angesprochen wurde.In der Konfigurationsdatei wurde beispielsweise
das Metazeichen %a verwendet. Es gibt weitere
Metazeichen, die in der Hilfeseite &man.hosts.access.5;
beschrieben werden.WildcardsBisher verwendeten die Beispiele immer die
Wildcard ALL. Die Wildcard
ALL passt beispielsweise auf
jeden Dienst, jede Domain oder jede
IP-Adresse. Eine andere
Wildcard ist PARANOID. Sie passt
auf jeden Rechner dessen IP-Adresse
möglicherweise gefälscht ist. Dies ist dann
der Fall, wenn der Verbindungsaufbau von einer
IP-Adresse erfolgt, die nicht
zu dem übermittelten Rechnernamen passt.
Für solche Fälle werden mit der
Wildcard PARANOID Aktionen
festgelegt, beispielsweise:# Block possibly spoofed requests to sendmail:
sendmail : PARANOID : denyIn diesem Beispiel werden alle Verbindungen zu
sendmail verboten, die von einer
IP-Adresse ausgehen, die nicht zum
Rechnernamen passt.Die Wildcard PARANOID
kann einen Dienst unbrauchbar machen, wenn der
Client oder der Server eine fehlerhafte
DNS-Konfiguration besitzt.
Setzen Sie die Wildcard bitte umsichtig ein.Weiteres über Wildcards und deren Funktion
lesen Sie bitte in der Hilfeseite &man.hosts.access.5;
nach.In der Voreinstellung sind alle Dienste erlaubt.
Damit die gezeigten Beispiele funktionieren, müssen
Sie die erste Konfigurationszeile in der Datei
hosts.allow auskommentieren.MarkMurrayBeigesteuert von MarkDapozBasiert auf einem Beitrag von KerberosIVKerberosIVKerberos ist ein zusätzliches Netzwerkprotokoll, das es
Benutzern erlaubt, sich über einen sicheren Server zu
authentifizieren. Dienste wie rlogin,
rcp oder das sichere Kopieren von Dateien
zwischen Systemen und andere risikoreiche Tätigkeiten werden
durch Kerberos erheblich sicherer und kontrollierbarer.Die folgende Anleitung kann nur als Wegweiser dazu dienen, wie
Sie Kerberos für &os; konfigurieren. Eine komplette
Beschreibung des Systems finden Sie in den entsprechenden
Hilfeseiten.Installation von KerberosIVMITKerberosIVinstallierenKerberos ist eine optionale Komponente von &os;. Am
leichtesten installieren Sie die Software, wenn Sie bei
der ersten Installation von &os; in
sysinstall die Distribution
krb4 oder krb5
auswählen. Damit installieren Sie entweder die
eBones (KerberosIV) oder Heimdal
(Kerberos5) Version von Kerberos. Beide Versionen werden
mit &os; ausgeliefert, da sie außerhalb von den
USA oder Kanada entwickelt werden.
Sie unterliegen deshalb auch nicht den restriktiven
Exportbeschränkungen der USA und sind auch für
Bewohner anderer Länder zugänglich.Als Alternative steht die MIT Variante von Kerberos in der
Ports-Kollektion unter security/krb5 zur
Verfügung.Erstellen der initialen DatenbankDie folgenden Schritte werden nur auf dem Kerberos-Server
durchgeführt. Stellen Sie bitte vorher sicher, dass
keine alten Kerberos-Datenbanken mehr vorhanden sind. Im
Verzeichnis /etc/kerberosIV sollten sich nur
die folgenden Dateien befinden:&prompt.root; cd /etc/kerberosIV
&prompt.root; ls
README krb.conf krb.realmsWenn noch andere Dateien, wie principal.*
oder master_key, existieren, müssen
Sie die alte Kerberos-Datenbank mit kdb_destroy
löschen. Wenn Kerberos nicht läuft, können Sie
die Dateien auch einfach löschen.Sie sollten nun die Dateien krb.conf und
krb.realms editieren, um Ihr Kerberos-Realm zu
definieren. Das folgende Beispiel zeigt dies für das Realm
EXAMPLE.COM auf dem Server
grunt.example.com.
krb.conf sollte wie folgt aussehen:&prompt.root; cat krb.conf
EXAMPLE.COM
EXAMPLE.COM grunt.example.com admin server
CS.BERKELEY.EDU okeeffe.berkeley.edu
ATHENA.MIT.EDU kerberos.mit.edu
ATHENA.MIT.EDU kerberos-1.mit.edu
ATHENA.MIT.EDU kerberos-2.mit.edu
ATHENA.MIT.EDU kerberos-3.mit.edu
LCS.MIT.EDU kerberos.lcs.mit.edu
TELECOM.MIT.EDU bitsy.mit.edu
ARC.NASA.GOV trident.arc.nasa.govDie zusätzlich aufgeführten Realms brauchen Sie nicht
anzulegen. Sie zeigen hier nur, wie man Kerberos dazu bringt, andere
Realms zu erkennen. Sie können Sie also auch weglassen.Die erste Zeile benennt das Realm, in dem das System arbeitet.
Die anderen Zeilen enthalten Realm/Host Paare. Der erste Wert jeder
Zeile ist das Realm, der zweite Teil ein Host, der in diesem
Realm Key Distribution Center ist. Die
Schlüsselwörter admin server nach einem
Hostnamen bedeuten, dass dieser Host auch einen administrativen
Datenbankserver zur Verfügung stellt. Weitere Erklärungen zu
diesen Begriffen finden Sie in den Kerberos Manualpages.Als nächstes muss
grunt.example.com in das Realm
EXAMPLE.COM aufgenommen werden. Des Weiteren
erstellen wir einen Eintrag, der alle Rechner der Domäne
.example.com in das Realm
EXAMPLE.COM aufnimmt.
krb.realms sollte danach so aussehen:&prompt.root; cat krb.realms
grunt.example.com EXAMPLE.COM
.example.com EXAMPLE.COM
.berkeley.edu CS.BERKELEY.EDU
.MIT.EDU ATHENA.MIT.EDU
.mit.edu ATHENA.MIT.EDUDie zusätzlichen Realms sind hier wieder als Beispiel
gedacht. Sie können sie der Einfachheit halber auch
weglassen.Die erste Zeile nimmt ein einzelnes System
in das Realm auf. Die anderen Zeilen zeigen, wie bestimmte
Subdomänen einem bestimmten Realm zugeordnet werden.Das folgende Kommando muss nur auf dem Kerberos-Server
(oder Key Distribution Center) laufen. Mit
kdb_init können wir die Datenbank
anlegen:&prompt.root; kdb_initRealm name [default ATHENA.MIT.EDU ]:EXAMPLE.COM
You will be prompted for the database Master Password.
It is important that you NOT FORGET this password.
Enter Kerberos master key:Anschließend muss der Schlüssel gespeichert
werden, damit Server auf der lokalen Maschine darauf zugreifen
können. Dies geschieht mit kstash:&prompt.root; kstashEnter Kerberos master key:
Current Kerberos master key version is 1.
Master key entered. BEWARE!Das verschlüsselte Master-Passwort wurde in
/etc/kerberosIV/master_key gesichert.Anlegen von PrinzipalsFür jedes System, das mit Kerberos
gesichert werden soll, müssen zwei Prinzipale in die
Datenbank eingetragen werden. Ihre Namen sind
kpasswd und rcmd. Beide
Prinzipale müssen für jedes System angelegt werden, wobei
die Instanz der Name des jeweiligen Systems ist.Die Dæmonen kpasswd und
rcmd erlauben es anderen Systemen,
Kerberos-Passwörter zu ändern und Kommandos wie
&man.rcp.1;, &man.rlogin.1; und &man.rsh.1;
laufen zu lassen.Beide Einträge werden im Folgenden angelegt:&prompt.root; kdb_edit
Opening database...
Enter Kerberos master key:
Current Kerberos master key version is 1.
Master key entered. BEWARE!
Previous or default values are in [brackets] ,
enter return to leave the same, or new value.
Principal name:passwdInstance:grunt
<Not found>, Create [y] ?y
Principal: passwd, Instance: grunt, kdc_key_ver: 1
New Password: <---- geben Sie hier Zufallswerte ein
Verifying password
New Password: <---- geben Sie hier Zufallswerte ein
Random password [y] ?y
Principal's new key version = 1
Expiration date (enter yyyy-mm-dd) [ 2000-01-01 ] ?Max ticket lifetime (*5 minutes) [ 255 ] ?Attributes [ 0 ] ?
Edit O.K.
Principal name:rcmdInstance:grunt
<Not found>, Create [y] ?
Principal: rcmd, Instance: grunt, kdc_key_ver: 1
New Password: <---- geben Sie hier Zufallswerte ein
Verifying password
New Password: <---- geben Sie hier Zufallswerte ein
Random password [y] ?
Principal's new key version = 1
Expiration date (enter yyyy-mm-dd) [ 2000-01-01 ] ?Max ticket lifetime (*5 minutes) [ 255 ] ?Attributes [ 0 ] ?
Edit O.K.
Principal name: <---- geben Sie nichts an, um das Programm zu verlassenErstellen der Server-DateiWir müssen nun für jede Maschine die Instanzen,
die Dienste definieren, aus der Datenbank mit
ext_srvtab extrahieren. Die erstelle Datei
muss auf einem sicheren Weg in das
/etc/kerberosIV Verzeichnis jedes Clients
kopiert werden. Die Datei muss auf jedem Server und auf
jedem Client vorhanden sein und ist unabdingbar für
Kerberos.&prompt.root; ext_srvtab gruntEnter Kerberos master key:
Current Kerberos master key version is 1.
Master key entered. BEWARE!
Generating 'grunt-new-srvtab'....Das Kommando erzeugt Dateien mit einem temporären Namen,
der es anderen Servern erlaubt, ihre Datei abzuholen. Die Datei
muss auf dem entsprechenden System in srvtab
umbenannt werden. Auf dem originalen System können Sie
&man.mv.1; benutzen, um die Datei umzubenennen:&prompt.root; mv grunt-new-srvtab srvtabWenn die Datei für ein Client-System bestimmt ist und das
Netzwerk nicht sicher ist, kopieren Sie die Datei auf ein bewegliches
Medium und transportieren sie physikalisch. Kopieren Sie die Datei
auf den Client in das Verzeichnis /etc/kerberosIV.
Benennen Sie die Datei in srvtab um und setzen Sie
schließlich noch die Berechtigungen auf 600:&prompt.root; mv grumble-new-srvtab srvtab
&prompt.root; chmod 600 srvtabFüllen der DatenbankWir können nun Benutzer in der Datenbank anlegen. Mit
kdb_edit legen wir zuerst die Benutzerin
jane an:&prompt.root; kdb_edit
Opening database...
Enter Kerberos master key:
Current Kerberos master key version is 1.
Master key entered. BEWARE!
Previous or default values are in [brackets] ,
enter return to leave the same, or new value.
Principal name:janeInstance:
<Not found>, Create [y] ?y
Principal: jane, Instance: , kdc_key_ver: 1
New Password: <---- geben Sie ein sicheres Passwort ein
Verifying password
New Password: <---- wiederholen Sie die Eingabe
Principal's new key version = 1
Expiration date (enter yyyy-mm-dd) [ 2000-01-01 ] ?Max ticket lifetime (*5 minutes) [ 255 ] ?Attributes [ 0 ] ?
Edit O.K.
Principal name: <---- geben Sie nichts an, um das Programm zu verlassenTestenZuerst müssen die Kerberos-Dæmonen gestartet sein.
Wenn Sie /etc/rc.conf richtig angepasst haben,
passiert das automatisch, wenn Sie booten. Dieser Schritt ist nur
auf dem Kerberos-Server notwendig, die Clients bekommen alles
was sie brauchen aus dem /etc/kerberosIV
Verzeichnis.&prompt.root; kerberos &
Kerberos server starting
Sleep forever on error
Log file is /var/log/kerberos.log
Current Kerberos master key version is 1.
Master key entered. BEWARE!
Current Kerberos master key version is 1
Local realm: EXAMPLE.COM
&prompt.root; kadmind -n &
KADM Server KADM0.0A initializing
Please do not use 'kill -9' to kill this job, use a
regular kill instead
Current Kerberos master key version is 1.
Master key entered. BEWARE!Jetzt können wir mit kinit versuchen,
ein Ticket für die ID jane, die wir
oben angelegt haben, zu erhalten:&prompt.user; kinit jane
MIT Project Athena (grunt.example.com)
Kerberos Initialization for "jane"
Password:Mit klist können Sie sich vergewissern,
dass Sie die Tickets auch erhalten haben:&prompt.user; klist
Ticket file: /tmp/tkt245
Principal: jane@EXAMPLE.COM
Issued Expires Principal
Apr 30 11:23:22 Apr 30 19:23:22 krbtgt.EXAMPLE.COM@EXAMPLE.COMVersuchen Sie nun das Passwort mit &man.passwd.1;
zu ändern, um zu überprüfen, dass der
kpasswd Dæmon auch auf der
Kerberos-Datenbank autorisiert ist:&prompt.user; passwd
realm EXAMPLE.COM
Old password for jane:New Password for jane:
Verifying password
New Password for jane:
Password changed.Anlegen von su PrivilegienMit Kerberos kann jedem Benutzer, der
root-Privilegien braucht, ein
eigenes Passwort für
&man.su.1; zugewiesen werden. Dies wird dadurch
erreicht, dass die Instanz eines Prinzipals
root ist. Mit kbd_edit
legen wir nun den Eintrag jane.root in der
Kerberos-Datenbank an:&prompt.root; kdb_edit
Opening database...
Enter Kerberos master key:
Current Kerberos master key version is 1.
Master key entered. BEWARE!
Previous or default values are in [brackets] ,
enter return to leave the same, or new value.
Principal name:janeInstance:root
<Not found>, Create [y] ? y
Principal: jane, Instance: root, kdc_key_ver: 1
New Password: <---- geben Sie ein sicheres Passwort ein
Verifying password
New Password: <---- geben Sie das Passwort erneut ein
Principal's new key version = 1
Expiration date (enter yyyy-mm-dd) [ 2000-01-01 ] ?Max ticket lifetime (*5 minutes) [ 255 ] ?12 <--- Keep this short!
Attributes [ 0 ] ?
Edit O.K.
Principal name: <---- geben Sie nichts an, um das Programm zu verlassenVersuchen Sie nun, für diesen Prinzipal Tickets zu
bekommen:&prompt.root; kinit jane.root
MIT Project Athena (grunt.example.com)
Kerberos Initialization for "jane.root"
Password:Als nächstes fügen wir den Prinzipal in
.klogin von root ein:&prompt.root; cat /root/.klogin
jane.root@EXAMPLE.COMJetzt benutzen wir &man.su.1;:&prompt.user; su
Password:und kontrollieren, welche Tickets wir haben:&prompt.root; klist
Ticket file: /tmp/tkt_root_245
Principal: jane.root@EXAMPLE.COM
Issued Expires Principal
May 2 20:43:12 May 3 04:43:12 krbtgt.EXAMPLE.COM@EXAMPLE.COMWeitere KommandosIn einem der Beispiele haben wir einen Prinzipal mit
dem Namen jane und der Instanz
root angelegt. Der Prinzipal entstand aus
einem Benutzer mit dem gleichen Namen. Unter Kerberos ist es
Standard, dass ein
principal.instance der Form
username.root es dem
Benutzer username erlaubt, mit
&man.su.1; root zu werden, wenn die
entsprechenden Einträge in .klogin von
root existieren:&prompt.root; cat /root/.klogin
jane.root@EXAMPLE.COMDas gilt auch für die .klogin-Datei
im Heimatverzeichnis eines Benutzers:&prompt.user; cat ~/.klogin
jane@EXAMPLE.COM
jack@EXAMPLE.COMDie Einträge erlauben jedem, der sich im Realm
EXAMPLE.COM als jane oder
jack mit kinit authentifiziert
hat, mittels &man.rlogin.1;, &man.rsh.1; oder &man.rcp.1;
auf den Account jane und dessen
Dateien zuzugreifen.Im folgenden Beispiel meldet sich jane
mit Kerberos auf grunt an:&prompt.user; kinit
MIT Project Athena (grunt.example.com)
Password:
&prompt.user; rlogin grunt
Last login: Mon May 1 21:14:47 from grumble
Copyright (c) 1980, 1983, 1986, 1988, 1990, 1991, 1993, 1994
The Regents of the University of California. All rights reserved.
FreeBSD BUILT-19950429 (GR386) #0: Sat Apr 29 17:50:09 SAT 1995Im folgenden Beispiel wurde der Prinzipal jack
mit einer Instanz null angelegt. Mit der obigen
.klogin-Datei kann er sich nun auf derselben
Maschine als jane anmelden:&prompt.user; kinit
&prompt.user; rlogin grunt -l jane
MIT Project Athena (grunt.example.com)
Password:
Last login: Mon May 1 21:16:55 from grumble
Copyright (c) 1980, 1983, 1986, 1988, 1990, 1991, 1993, 1994
The Regents of the University of California. All rights reserved.
FreeBSD BUILT-19950429 (GR386) #0: Sat Apr 29 17:50:09 SAT 1995TillmanHodgsonBeigetragen von MarkMurrayBeruht auf einem Beitrag von Kerberos5Das Basissystem enthält ab &os; 5.1
nur noch Kerberos5. Die
Konfiguration von Kerberos5
ist der Konfiguration von KerberosIV
sehr ähnlich. Wenn Sie KerberosIV
benötigen, installieren Sie den Port
security/krb4.
Der folgende Abschnitt beschreibt ausschließlich
Kerberos5 für &os;-Releases
ab 5.0.Kerberos ist ein Netzwerk-Protokoll,
das Benutzer mithilfe eines sicheren Servers authentifiziert.
Mit Risiken behaftete Dienste, wie das Anmelden an entfernten
Systemen oder das Kopieren von Daten auf entfernte Systeme,
werden durch Kerberos erheblich
sicherer und lassen sich leichter steuern.Kerberos hat eine Aufgabe:
Die sichere Prüfung der Identität eines Benutzers
(Authentifizierung) über das Netzwerk. Das System
überprüft weder die Berechtigungen der Benutzer
(Autorisierung), noch verfolgt es die durchgeführten
Aktionen (Audit). Daher sollte Kerberos
zusammen mit anderen Sicherheits-Systemen eingesetzt werden, die
diese Funktionen bereitstellen. Die Daten einer Kommunikation
können verschlüsselt werden, nachdem die
Kommunikationspartner mit Kerberos
ihre Identität geprüft haben.Die folgenden Anweisungen beschreiben, wie Sie das mit
&os; gelieferte Kerberos einrichten.
Eine vollständige Beschreibung des Systems entnehmen
Sie bitte den entsprechenden Hilfeseiten.Die Beschreibung der
Kerberos-Installation benutzt
folgende Namensräume:Die DNS-Domain (Zone) heißt
example.org.Das Kerberos-Realm
heißt EXAMPLE.ORG.Benutzen Sie echte Domain-Namen, wenn Sie
Kerberos einrichten. Damit
vermeiden Sie DNS-Probleme und stellen
die Zusammenarbeit mit anderen
Kerberos-Realms sicher.GeschichteKerberos5GeschichteDas MIT entwickelte
Kerberos, um Sicherheitsprobleme
auf dem Netzwerk zu lösen. Das
Kerberos-Protokoll verwendet
starke Kryptographie, sodass ein Server die Identität
eines Clients (der umgekehrte Vorgang ist auch möglich)
über ein unsicheres Netzwerk feststellen kann.Der Begriff Kerberos wird sowohl für das Protokoll
als auch für Programme verwendet, die
Kerberos benutzen (wie
Kerberos-Telnet). Die aktuelle
Protokollversion ist 5 und wird in
RFC 1510 beschrieben.Mehrere Implementierungen des Protokolls stehen frei
zur Verfügung und decken viele Betriebssysteme ab.
Das Massachusetts Institute of Technology
(MIT), an dem Kerberos
ursprünglich entwickelt wurde, entwickelt seine
Kerberos-Version weiter. In den
USA wird diese Version häufig
eingesetzt, unterlag aber Export-Beschränkungen,
da sie in den USA entwickelt wurde.
Die MIT-Version von
Kerberos befindet sich im Port
security/krb5.
Heimdal ist eine weitere Implementierung der Protokollversion 5.
Sie wurde außerhalb der USA entwickelt
und unterliegt daher keinen Export-Beschränkungen.
Heimdal-Kerberos befindet sich
im Port security/heimdal
und das Basissystem von &os; enthält eine minimale
Installation von Heimdal.Um möglichst viele Benutzer anzusprechen, verwenden
die folgenden Beispiele die in &os; enthaltene
Heimdal-Distribution.Das Heimdal KDC einrichtenKerberos5Key Distribution CenterKerberos authentifiziert
Benutzer an einer zentralen Stelle: dem Key Distribution
Center (KDC). Das KDC
verteilt Tickets, mit denen ein
Dienst die Identität eines Benutzers feststellen kann.
Alle Mitglieder eines Kerberos-Realms
vertrauen dem KDC, daher gelten für
das KDC erhöhte
Sicherheitsanforderungen.Obwohl das KDC wenig Ressourcen eines
Rechners benötigt, sollte es wegen der
Sicherheitsanforderungen auf einem separaten Rechner
installiert werden.Das KDC wird in
/etc/rc.conf wie folgt aktiviert:kerberos5_server_enable="YES"
kadmind5_server_enable="YES"
kerberos_stash="YES"Die Option gibt es
nur in &os; 4.X.Danach wird die Konfigurationsdatei von
Kerberos,
/etc/krb5.conf, erstellt:[libdefaults]
default_realm = EXAMPLE.ORG
[realms]
EXAMPLE.ORG = {
kdc = kerberos.example.org
admin_server = kerberos.example.org
}
[domain_realm]
.example.org = EXAMPLE.ORGDiese Einstellungen setzen voraus, dass der voll
qualifizierte Name des KDCs
kerberos.example.org ist.
Wenn Ihr KDC einen anderen Namen hat,
müssen Sie in der DNS-Zone einen Alias-Eintrag (CNAME-Record)
für das KDC hinzufügen.Auf großen Netzwerken mit einem ordentlich
konfigurierten BIND
DNS-Server kann die Datei verkürzt
werden:[libdefaults]
default_realm = EXAMPLE.ORGDie Zonendatei von example.org
muss dann die folgenden Zeilen enthalten:_kerberos._udp IN SRV 01 00 88 kerberos.example.org.
_kerberos._tcp IN SRV 01 00 88 kerberos.example.org.
_kpasswd._udp IN SRV 01 00 464 kerberos.example.org.
_kerberos-adm._tcp IN SRV 01 00 749 kerberos.example.org.
_kerberos IN TXT EXAMPLE.ORGDamit Klienten die
Kerberos-Dienste benutzen
können, muss die Datei /etc/krb5.conf
entweder die vollständige Konfiguration enthalten
oder eine minimale Konfiguration enthalten
und zusätzlich ein DNS-Server
richtig eingerichtet sein.Im nächsten Schritt wird die
Kerberos-Datenbank eingerichtet.
Die Datenbank enthält die Schlüssel aller Prinzipale
und ist mit einem Passwort geschützt. Dieses Passwort
brauchen Sie nicht zu behalten, da ein davon abgeleiteter
Schlüssel in der Datei /var/heimdal/m-key
gespeichert wird. Den Schlüssel erstellen Sie, indem
Sie das Programm kstash aufrufen und
ein Passwort eingeben.Nachdem Sie den Schlüssel in
/var/heimdal/m-key erstellt haben,
können Sie die Datenbank mit dem Kommando
kadmin initialisieren. Verwenden
Sie hierbei die Option (lokal). Mit
dieser Option wird die Datenbank lokal modifiziert. Normal
würde der kadmind-Dienst benutzt,
der aber zu diesem Zeitpunkt noch nicht läuft. An
der Eingabeaufforderung von kadmin
können Sie mit dem Kommando init
die Datenbank des Realms einrichten.Zuletzt erstellen Sie mit dem Kommando add
Ihren ersten Prinzipal. Benutzen Sie die voreingestellten
Optionen; Sie können die Einstellungen später
mit dem Kommando modify ändern.
An der Eingabeaufforderung zeigt das Kommando
? Hilfetexte an.Zusammengefasst wird die Datenbank wie folgt
eingerichtet:&prompt.root; kstash
Master key: xxxxxxxx
Verifying password - Master key: xxxxxxxx
&prompt.root; kadmin -l
kadmin> init EXAMPLE.ORG
Realm max ticket life [unlimited]:
kadmin> add tillman
Max ticket life [unlimited]:
Max renewable life [unlimited]:
Attributes []:
Password: xxxxxxxx
Verifying password - Password: xxxxxxxxJetzt kann das KDC gestartet werden.
Führen Sie zum Start der Dienste die Kommandos
/etc/rc.d/kerberos start und
/etc/rc.d/kadmind start aus. Obwohl
zu diesem Zeitpunkt noch keine kerberisierten Dienste
laufen, können Sie die Funktion des KDCs
schon überprüfen. Für den eben angelegten
Benutzer können Sie sich vom KDC
Tickets holen und diese Tickets anzeigen:&prompt.user; k5init tillman
tillman@EXAMPLE.ORG's Password:
&prompt.user; k5list
Credentials cache: FILE: /tmp/krb5cc_500
Principal: tillman@EXAMPLE.ORG
Issued Expires Principal
Aug 27 15:37:58 Aug 28 01:37:58 krbtgt/EXAMPLE.ORG@EXAMPLE.ORGKerberos-Dienste
einrichtenKerberos5Dienste einrichtenAlle Rechner, die kerberisierte Dienste anbieten,
müssen eine Kopie der
Kerberos-Konfigurationsdatei
/etc/krb5.conf besitzen. Sie
können die Datei einfach vom KDC
kopieren.Anschließend müssen Sie die Datei
/etc/krb5.keytab erzeugen. Im
Gegensatz zu normalen Workstations benötigt jeder
Server eine keytab.
Diese Datei enthält den Schlüssel des
Servers, mit dem sich der Server und das
KDC gegenseitig authentifizieren
können. Die Datei muss sicher auf den Server
transportiert werden (beispielsweise mit &man.scp.1;
oder einer Diskette). Unter keinen Umständen
darf die Datei im Klartext, zum Beispiel mit
FTP, übertragen werden,
da sonst die Sicherheit des Servers gefährdet
ist.Sie können die keytab auch
mit dem Programm kadmin übertragen.
Da Sie mit kadmin sowieso einen Host-Prinzipal
für den Server einrichten müssen, ist das ganz
praktisch.Sie müssen allerdings schon ein Ticket
besitzen und berechtigt sein, kadmin
auszuführen. Die Berechtigung erhalten Sie durch
einen Eintrag in der Zugriffskontrollliste
kadmind.acl. Weitere Informationen
über Zugriffskontrolllisten erhalten Sie in den
Heimdal-Info-Seiten (info heimdal)
im Abschnitt Remote administration. Wenn
der Zugriff auf kadmin von entfernten
Maschinen verboten ist, müssen Sie sich sicher
auf dem KDC anmelden (lokale Konsole,
&man.ssh.1; oder kerberisiertes Telnet) und die
keytab lokal mit
kadmin -l erzeugen.Nachdem Sie die Datei /etc/krb5.conf
installiert haben, können Sie das Kommando
kadmin benutzen. An der Eingabeaufforderung
von kadmin erstellt das Kommando
add --random-key den Host-Prinzipal
und das Kommando ext extrahiert den
Schlüssel des Prinzipals in eine Datei:&prompt.root; kadmin
kadmin> add --random-key host/myserver.example.org
Max ticket life [unlimited]:
Max renewable life [unlimited]:
Attributes []:
kadmin> ext host/myserver.example.org
kadmin> exitDas Kommando ext (von
extract) speichert den
extrahierten Schlüssel in der Datei
/etc/krb5.keytab.Wenn auf dem KDC, vielleicht aus
Sicherheitsgründen, kadmind
nicht läuft, können Sie das Kommando
kadmin von entfernten Rechnern nicht
benutzen. In diesem Fall legen Sie den Host-Prinzipal
host/myserver.EXAMPLE.ORG direkt
auf dem KDC an. Den Schlüssel
extrahieren Sie in eine temporäre Datei (damit
die Datei /etc/krb5.keytab nicht
überschrieben wird):&prompt.root; kadmin
kadmin> ext --keytab=/tmp/example.keytab host/myserver.example.org
kadmin> exitAnschließend müssen Sie die erzeugte
example.keytab sicher auf den
Server kopieren (mit scp oder
mithilfe einer Diskette). Geben Sie auf jeden Fall
einen anderen Namen für die keytab
an, weil sonst die keytab des
KDCs überschrieben würde.Wegen der Datei krb5.conf kann
der Server nun mit dem KDC kommunizieren
und seine Identität mithilfe der Datei
krb5.keytab nachweisen. Jetzt
können wir kerberisierte Dienste aktivieren.
Für telnet muss die folgende
Zeile in /etc/inetd.conf eingefügt
werden:telnet stream tcp nowait root /usr/libexec/telnetd telnetd -a userAusschlaggebend ist, dass die Authentifizierungs-Methode
mit auf user gesetzt
wird. Weitere Details entnehmen Sie bitte der Hilfeseite
&man.telnetd.8;.Nachdem sie die Zeile in /etc/inetd.conf
eingefügt haben, starten Sie &man.inetd.8; mit
dem Kommando /etc/rc.d/inetd restart
durch.Kerberos-Clients
einrichtenKerberos5Clients einrichtenEin Client lässt sich leicht einrichten.
Sie benötigen nur die
Kerberos-Konfigurationsdatei
/etc/krb5.conf. Kopieren Sie
die Konfigurationsdatei einfach vom KDC
auf den Client.Sie können jetzt mit kinit
Tickets anfordern, mit klist Tickets
anzeigen und mit kdestroy Tickets
löschen. Sie können mit
Kerberos-Anwendungen kerberisierte
Server ansprechen. Wenn das nicht funktioniert,
Sie aber Tickets anfordern können, hat wahrscheinlich
der kerberisierte Server ein Problem und nicht der
Client oder das KDC.Wenn Sie eine Anwendung wie telnet
testen, können Sie mit einem Paket-Sniffer
(beispielsweise &man.tcpdump.1;) überprüfen,
dass Passwörter verschlüsselt übertragen
werden. Probieren Sie auch die Option
von telnet, die den gesamten Datenverkehr
verschlüsselt (analog zu ssh).Die Kerberos-Basisanwendungen
kinit, klist,
kdestroy und kpasswd
gehören zum &os;-Basissystem. Beachten Sie, dass
die Programme vor &os; 5.0 in k5init,
k5list, k5destroy,
k5passwd und k5stash
umbenannt wurden.Zu Heimdal gehören noch weitere Anwendungen.
Allerdings enthält das &os;-Basissystem eine
minimale Heimdal-Installation und nur eine
kerberisierte Anwendung: telnet.Der Heimdal-Port enthält noch mehr kerberisierte
Anwendungen wie ftp, rsh,
rcp und rlogin.
Der MIT-Port enthält ebenfalls
weitere kerberisierte Anwendungen..k5login und
.k5users.k5login.k5usersNormalerweise wird ein
Kerberos-Prinzipal wie
tillman@EXAMPLE.ORG auf ein lokales
Benutzerkonto, beispielsweise tillman,
abgebildet. Daher benötigen Client-Anwendungen (zum
Beispiel telnet) keinen Benutzernamen.Manchmal wird aber Zugriff auf ein lokales Benutzerkonto
benötigt, zu dem es keinen passenden
Kerberos-Prinzipal gibt.
Der Prinzipal tillman@EXAMPLE.ORG
bräuchte beispielsweise Zugriff auf das Konto
webdevelopers. Ebenso könnten
andere Prinzipale auf dieses Konto zugreifen wollen.Die Dateien .k5login und
.k5users im Heimatverzeichnis eines
Benutzerkontos gewähren Zugriffe ähnlich wie
die Dateien .hosts und
.rhosts. Um den Prinzipalen
tillman@example.org und
jdoe@example.org auf das Konto
webdevelopers zu geben, wird im
Heimatverzeichnis von webdevelopers
die Datei .k5login mit folgendem
Inhalt angelegt:tillman@example.org
jdoe@example.orgDie angegebenen Prinzipale haben nun ohne ein gemeinsames
Passwort Zugriff auf das Konto.Einzelheiten entnehmen Sie bitte den Hilfeseiten
zu diesen Dateien. Die Datei .k5users
wird in der Hilfeseite des Kommandos ksu
beschrieben.Tipps und FehlersucheKerberos5FehlersucheWenn Sie den Heimdal-Port oder den
MIT-Port benutzen, muss in der
Umgebungsvariable PATH der Pfad zu
den Programmen des Ports vor dem Pfad zu den
Kerberos-Programmen des Systems
stehen.Sind die Uhrzeiten der Systeme synchronisiert?
Wenn nicht, schlägt vielleicht die Authentifizierung
fehl. beschreibt, wie
Sie mithilfe von NTP die Uhrzeiten
synchronisieren.Die MIT- und Heimdal-Systeme
arbeiten bis auf kadmin gut zusammen.
Für kadmin wurde das Protokoll
nicht normiert.Wenn Sie den Namen eines Rechners ändern,
müssen Sie auch den host/-Prinzipal
ändern und die Datei keytab
aktualisieren. Dies betrifft auch spezielle Einträge
wie den Prinzipal für Apaches www/mod_auth_kerb.Die Rechnernamen müssen vor- und
rückwärts aufgelöst werden (im
DNS oder in
/etc/hosts).
CNAME-Einträge im
DNS funktionieren, aber die
entsprechenden A- und PTR-Einträge müssen
vorhanden und richtig sein. Wenn sich Namen nicht
auflösen lassen, ist die Fehlermeldung nicht
gerade selbstsprechend: Kerberos5 refuses
authentication because Read req
failed: Key table entry not found.Einige Betriebssysteme installieren
ksu mit falschen Zugriffsrechten;
es fehlt das Set-UID-Bit für root.
Das mag aus Sicherheitsgründen richtig sein,
doch funktioniert ksu dann nicht.
Dies ist kein Fehler des KDCs.Wenn Sie für einen Prinzipal unter
MIT-Kerberos
Tickets mit einer längeren Gültigkeit als
der vorgegebenen zehn Stunden einrichten wollen,
müssen Sie zwei Sachen ändern. Benutzen
Sie das modify_principal von
kadmin, um die maximale
Gültigkeitsdauer für den Prinzipal selbst
und den Prinzipal krbtgt
zu erhöhen.Mit einem Packet-Sniffer können Sie feststellen,
dass Sie sofort nach dem Aufruf von kinit
eine Antwort vom KDC
bekommen – noch bevor Sie überhaupt ein
Passwort eingegeben haben! Das ist in Ordnung:
Das KDC händigt
ein Ticket-Granting-Ticket (TGT)
auf Anfrage aus, da es durch einen vom Passwort
des Benutzers abgeleiteten Schlüssel
geschützt ist. Wenn das Passwort
eingegeben wird, wird es nicht zum KDC
gesendet, sondern zum Entschlüsseln der
Antwort des KDCs benutzt, die
kinit schon erhalten hat.
Wird die Antwort erfolgreich entschlüsselt,
erhält der Benutzer einen Sitzungs-Schlüssel
für die künftige verschlüsselte
Kommunikation mit dem KDC und das
Ticket-Granting-Ticket. Das Ticket-Granting-Ticket
wiederum ist mit dem Schlüssel des KDCs
verschlüsselt. Diese Verschlüsselung ist
für den Benutzer völlig transparent und
erlaubt dem KDC,
die Echtheit jedes einzelnen TGT
zu prüfen.Wenn Sie OpenSSH verwenden
und Tickets mir einer langen Gültigkeit
(beispielsweise einer Woche) benutzen, setzen Sie die Option
in der Datei
sshd_config auf no.
Ansonsten werden Ihre Tickets gelöscht, wenn Sie
sich abmelden.Host-Prinzipale können ebenfalls Tickets mit
längerer Gültigkeit besitzen. Wenn der
Prinzipal eines Benutzers über ein Ticket verfügt,
das eine Woche gültig ist, das Ticket des
Host-Prinzipals aber nur neun Stunden gültig ist,
funktioniert der Ticket-Cache nicht wie erwartet.
Im Cache befindet sich dann ein abgelaufenes Ticket
des Host-Prinzipals.Wenn Sie mit krb5.dict die
Verwendung schlechter Passwörter verhindern wollen,
geht das nur mit Prinzipalen, denen eine Passwort-Policy
zugewiesen wurde. Die Hilfeseite von
kadmind beschreibt kurz, wie
krb5.dict verwendet wird. Das
Format von krb5.dict ist
einfach: Die Datei enthält pro Zeile ein Wort.
Sie können daher einen symbolischen Link auf
/usr/share/dict/words erstellen.Unterschiede zum MIT-PortDer Hauptunterschied zwischen
MIT-Kerberos
und Heimdal-Kerberos
ist das Kommando kadmin.
Die Befehlssätze des Kommandos (obwohl funktional
gleichwertig) und das verwendete
Protokoll unterscheiden sich in beiden Varianten.
Das KDC lässt sich nur mit
dem kadmin Kommando der passenden
Kerberos-Variante verwalten.Für dieselbe Funktion können auch die
Client-Anwendungen leicht geänderte Kommandozeilenoptionen
besitzen. Folgen Sie bitte der Anleitung auf der
Kerberos-Seite
() des
MITs. Achten Sie besonders auf den
Suchpfad für Anwendungen. Der MIT-Port
wird standardmäßig in /usr/local/
installiert. Wenn die Umgebungsvariable PATH
zuerst die Systemverzeichnisse enthält, werden die
Systemprogramme anstelle der MIT-Programme
ausgeführt.Wenn Sie den MIT-Port
security/krb5 verwenden,
erscheint bei der Anmeldung mit telnetd
und klogind die Fehlermeldung
incorrect permissions on cache file.
Lesen Sie dazu bitte die im Port enthaltene Datei
/usr/local/share/doc/krb5/README.FreeBSD.
Wichtig ist, dass zur Authentifizierung die Binärdatei
login.krb5 verwendet wird, die
für durchgereichte Berechtigungen die Eigentümer
korrekt ändert.Beschränkungen von
KerberosKerberos5BeschränkungenKerberos muss ganzheitlich
verwendet werdenJeder über das Netzwerk angebotetene Dienst
muss mit Kerberos
zusammenarbeiten oder auf anderen Wegen gegen Angriffe
aus dem Netzwerk geschützt sein. Andernfalls
können Berechtigungen gestohlen und wiederverwendet
werden. Es ist beispielsweise nicht sinnvoll, für
Anmeldungen mit rsh und
telnetKerberos
zu benutzen, dagegen aber POP3-Zugriff
auf einen Mail-Server zu erlauben, da POP3
Passwörter im Klartext versendet.Kerberos ist für
Einbenutzer-Systeme gedachtIn Mehrbenutzer-Umgebungen ist
Kerberos unsicherer als in
Einbenutzer-Umgebungen, da die Tickets im für alle
lesbaren Verzeichnis /tmp
gespeichert werden. Wenn ein Rechner von mehreren
Benutzern verwendet wird, ist es möglich, dass
Tickets gestohlen werden.Dieses Problem können Sie lösen, indem Sie mit
der Kommandozeilenoption oder besser
mit der Umgebungsvariablen KRB5CCNAME einen
Ort für die Tickets vorgeben. Diese Vorgehensweise
wird leider selten benutzt. Es reicht, die Tickets
im Heimatverzeichnis eines Benutzers zu speichern und
mit Zugriffsrechten zu schützen.Das KDC ist verwundbarDas KDC muss genauso abgesichert
werden wie die auf ihm befindliche Passwort-Datenbank.
Auf dem KDC dürfen keine anderen
Dienste laufen und der Rechner sollte physikalisch
gesichert sein. Die Gefahr ist groß, da
Kerberos alle Passwörter
mit einem Schlüssel, dem Haupt-Schlüssel,
verschlüsselt. Der Haupt-Schlüssel wiederum
wird in einer Datei auf dem KDC
gespeichert.Ein kompromittierter Haupt-Schlüssel ist nicht
ganz so schlimm wie allgemein angenommen. Der
Haupt-Schlüssel wird nur zum Verschlüsseln
der Passwort-Datenbank und zum Initialisieren des
Zufallsgenerators verwendet. Solange der Zugriff
auf das KDC abgesichert ist, kann
ein Angreifer wenig mit dem Haupt-Schlüssel
anfangen.Wenn das KDC nicht zur Verfügung
steht, vielleicht wegen eines Denial-of-Service Angriffs
oder wegen eines Netzwerkproblems, ist eine Authentifizierung
unmöglich. Damit können die Netzwerk-Dienste
nicht benutzt werden; das KDC ist
also ein optimales Ziel für einen Denial-of-Service
Angriff. Sie können diesem Angriff ausweichen,
indem Sie mehrere KDCs (einen Master
und einen oder mehrere Slaves) verwenden. Der Rückfall
auf ein sekundäres KDC oder
eine andere Authentifizierungs-Methode (dazu ist
PAM bestens geeignet) muss sorgfältig
eingerichtet werden.Mängel von
KerberosMit Kerberos können
sich Benutzer, Rechner und Dienste gegenseitig
authentifizieren. Allerdings existiert kein Mechanismus,
der das KDC gegenüber Benutzern,
Rechnern oder Diensten authentifiziert. Ein verändertes
kinit könnte beispielsweise alle
Benutzernamen und Passwörter abfangen. Die von
veränderten Programmen ausgehende Gefahr können
Sie lindern, indem Sie die Integrität von Dateien
mit Werkzeugen wie
security/tripwire
prüfen.Weiterführende DokumentationKerberos5weiterführende DokumentationThe
Kerberos FAQDesigning
an Authentication System: a Dialogue in Four
ScenesRFC 1510,
The Kerberos Network
Authentication Service (V5)MIT
Kerberos-SeiteHeimdal
Kerberos-SeiteTomRhodesBeigetragen von OpenSSLSicherheitOpenSSLOpenSSLEs wird oft übersehen, dass
OpenSSL Teil des &os;-Basissystems
ist. OpenSSL bietet eine
verschlüsselte Transportschicht oberhalb der
normalen Kommunikationsschicht und kann daher zusammen
mit vielen Netzdiensten benutzt werden.Anwendungsbeispiele für OpenSSL
sind die verschlüsselte Authentifizierung von
E-Mail-Clients oder Web-Transaktionen wie das Bezahlen mit
einer Kreditkarte. OpenSSL
kann während des Baus in viele Ports, wie
www/apache13-ssl und
mail/sylpheed-claws,
integriert werden.Ist beim Aufruf von make die
Variable WITH_OPENSSL_BASE nicht
explizit auf yes gesetzt, baut
die Ports-Sammlung meist den Port
security/openssl.Das OpenSSL von &os; stellt
die Protokolle Secure Sockets Layer v2/v3 (SSLv2/SSLv3) und
Transport Layer Security v1 (TLSv1) zur Verfügung.
Die OpenSSL-Bibliotheken stellen
kryptographische Funktionen bereit.Mit OpenSSL kann der
IDEA-Algorithmus verwendet werden,
wegen Patenten in den USA ist der Algorithmus in der
Voreinstellung allerdings deaktiviert. Wenn Sie die
IDEA-Lizenz akzeptieren, können
Sie den IDEA-Algorithmus aktivieren,
indem Sie die Variable MAKE_IDEA
in make.conf setzen.Meist wird OpenSSL eingesetzt,
um Zertifikate für Anwendungen bereitzustellen. Die
Zertifikate stellen die Identität einer Firma oder
eines Einzelnen sicher. Wenn ein Zertifikat nicht von
einer Zertifizierungsstelle (Certificate
Authority, CA)
gegengezeichnet wurde, erhalten Sie normalerweise eine
Warnung. Eine Zertifizierungsstelle ist eine Firma
wie VeriSign,
die Zertifikate von Personen oder Firmen
gegenzeichnet und damit die Korrektheit der Zertifikate
bestätigt. Diese Prozedur kostet Geld, ist aber
keine Voraussetzung für den Einsatz von Zertifikaten,
beruhigt aber sicherheitsbewusste Benutzer.Zertifikate erzeugenOpenSSLZertifikate erzeugenEin Zertifikat erzeugen Sie mit dem nachstehenden
Kommando:&prompt.root; openssl req -new -nodes -out req.pem -keyout cert.pem
Generating a 1024 bit RSA private key
................++++++
.......................................++++++
writing new private key to 'cert.pem'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:US
State or Province Name (full name) [Some-State]:PA
Locality Name (eg, city) []:Pittsburgh
Organization Name (eg, company) [Internet Widgits Pty Ltd]:My Company
Organizational Unit Name (eg, section) []:Systems Administrator
Common Name (eg, YOUR name) []:localhost.example.org
Email Address []:trhodes@FreeBSD.org
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:SOME PASSWORD
An optional company name []:Another NameBeachten Sie bitte, dass die Eingabe bei
Common Name ein gültiger Domain-Name
sein muss. Eine andere Eingabe erzeugt ein unbrauchbares
Zertifikat. Das Zertifikat kann mit einer
Gültigkeitsdauer und anderen
Verschlüsselungsalgorithmen erzeugt werden.
Die Hilfeseite &man.openssl.1; beschreibt die zur
Verfügung stehenden Optionen.Das Verzeichnis, in dem Sie den letzten Befehl ausgeführt
haben, enthält nun zwei Dateien: Die Anforderung für
ein neues Zertifikat wurde in req.pem
gespeichert. Diese Datei können Sie an eine
Zertifizierungsstelle senden, wo Ihre Angaben geprüft werden.
Nach erfolgreicher Prüfung wird das Zertifikat an Sie
zurückgesandt. Die zweite Datei, cert.pem,
enthält den privaten Schlüssel für Ihr Zertifikat
und darf auch keine Fall in fremde Hände geraten, da ein
Angreifer sonst in der Lage ist, anderen Personen oder Rechnern
vorzugaukeln, dass es sich bei ihm um Sie handelt.Wenn Sie keine Signatur einer Zertifizierungsstelle
benötigen, können Sie ein selbst-signiertes
Zertifikat erstellen. Erzeugen Sie dazu zuerst einen
RSA-Schlüssel:&prompt.root; openssl dsaparam -rand -genkey -out myRSA.key 1024Erzeugen Sie dann den CA-Schlüssel:&prompt.root; openssl gendsa -des3 -out myca.keymyRSA.keyErstellen Sie mit diesem Schlüssel das
Zertifikat:&prompt.root; openssl req -new -x509 -days 365 -key myca.key -out new.crtZwei neue Dateien befinden sich nun im Verzeichnis:
Der Schlüssel der Zertifizierungsstelle
myca.key und das Zertifikat selbst,
new.crt. Sie sollten in einem
Verzeichnis, vorzugsweise unterhalb von
/etc abgelegt
werden, das nur von root lesbar
ist. Setzen Sie die Zugriffsrechte der Dateien mit
chmod auf 0700.Beispiel für ZertifikateWas fangen Sie mit einem Zertifikat an? Sie
könnten damit beispielsweise die Verbindungen zu
Sendmail verschlüsseln.
Dies würde die Klartext-Authentifizierung
für Benutzer des lokalen MTA
überflüssig machen.Das ist nicht unbedingt die beste Lösung,
da einige MUAs Warnungen ausgeben,
wenn ein Zertifikat nicht lokal installiert ist.
Die Installation von Zertifikaten wird in der
Dokumentation der MUAs
beschrieben.Ergänzen Sie die Konfigurationsdatei von
sendmail (.mc)
um die nachstehenden Zeilen:dnl SSL Options
define(`confCACERT_PATH',`/etc/certs')dnl
define(`confCACERT',`/etc/certs/new.crt')dnl
define(`confSERVER_CERT',`/etc/certs/new.crt')dnl
define(`confSERVER_KEY',`/etc/certs/myca.key')dnl
define(`confTLS_SRV_OPTIONS', `V')dnlIm Verzeichnis
/etc/certs
befindet sich der Schlüssel und das Zertifikat.
Bauen Sie danach im Verzeichnis
/etc/mail
mit dem Kommando make install
die .cf-Datei und starten
Sie anschließend sendmail
mit make restart neu.Wenn alles gut ging, erscheinen keine Fehlermeldungen
in der Datei /var/log/maillog und
Sie sehen sendmail in der
Prozessliste.Testen Sie nun den Mailserver mit dem Kommando
&man.telnet.1;:&prompt.root; telnet example.com 25
Trying 192.0.34.166...
Connected to example.com.
Escape character is '^]'.
220 example.com ESMTP Sendmail 8.12.10/8.12.10; Tue, 31 Aug 2004 03:41:22 -0400 (EDT)
ehlo example.com
250-example.com Hello example.com [192.0.34.166], pleased to meet you
250-ENHANCEDSTATUSCODES
250-PIPELINING
250-8BITMIME
250-SIZE
250-DSN
250-ETRN
250-AUTH LOGIN PLAIN
250-STARTTLS
250-DELIVERBY
250 HELP
quit
221 2.0.0 example.com closing connection
Connection closed by foreign host.Wenn in einer Zeile STARTTLS
erscheint, hat alles funktioniert.NikClaytonnik@FreeBSD.orgGeschrieben von VPNs mit IPsecIPsecDieser Abschnitt beschreibt, wie Sie mit &os;-Gateways
ein Virtual-Private-Network
(VPN) einrichten. Als Beispiel wird ein
VPN zwischen zwei Netzen verwendet,
die über das Internet miteinander verbunden sind.Hiten M.Pandyahmp@FreeBSD.orgGeschrieben von IPsec GrundlagenDieser Abschnitt zeigt Ihnen, wie Sie IPsec einrichten
und damit &os;-Systeme und µsoft.windows; 2000/XP Systeme
sicher miteinander verbinden. Um IPsec einzurichten,
sollten Sie einen neuen Kernel erzeugen können (siehe
).IPsec ist ein Protokoll, das auf dem Internet-Protokoll
(IP) aufbaut. Mit IPsec können mehrere Systeme
geschützt miteinander kommunizieren. Das in
&os; realisierte IPsec-Protokoll baut auf der
KAME-Implementierung
auf und unterstützt sowohl IPv4 als auch IPv6.&os; 5.X enthält eine von Hardware
beschleunigte Variante des IPsec-Protokolls. Diese
Variante wurde von OpenBSD übernommen und wird
Fast-IPsec genannt. Das
&man.crypto.4;-Subsystem arbeitet mit Kryptographie-Hardware
zusammen, die IPsec beschleunigt. Das Subsystem
ist neu und bietet noch nicht alle Funktionen, die
KAME-IPsec bietet. Wenn Sie die Hardware-Beschleunigung
nutzen wollen, fügen Sie folgende Zeile der
Kernelkonfiguration hinzu:KerneloptionFAST_IPSECoptions FAST_IPSEC # new IPsec (cannot define w/ IPSEC)Momentan können Sie Fast-IPsec
nicht zusammen mit KAME-IPsec benutzen. Weiteres zu
Fast-IPsec erfahren Sie in der
Hilfeseite &man.fast.ipsec.4;.IPsecESPIPsecAHIPsec besteht wiederum aus zwei Protokollen:Encapsulated Security Payload (ESP)
verschlüsselt IP-Pakete mit einem symmetrischen Verfahren
(beispielsweise Blowfish oder 3DES). Damit werden
die Pakete vor Manipulationen Dritter geschützt.Der Authentication Header (AH)
enthät eine kryptographische Prüsumme,
die sicher stellt, dass ein IP-Paket nicht verändert
wurde. Der Authentication-Header folgt nach dem
normalen IP-Header und erlaubt dem Empfänger
eines IP-Paketes, dessen Integrität zu
prüfen.ESP und AH
können, je nach Situation, zusammen oder einzeln
verwendet werden.VPNVirtual Private NetworkVPNIPsec kann in zwei Modi betrieben werden: Der
Transport-Modus verschlüsselt
die Daten zwischen zwei Systemen. Der
Tunnel-Modus verbindet zwei
Subnetze miteinander. Durch einen Tunnel können
dann beispielsweise verschlüsselte Daten übertragen
werden. Ein Tunnel wird auch als Virtual-Private-Network (VPN)
bezeichnet. Detaillierte Informationen über
das IPsec-Subsystem von &os; enthält die
Hilfeseite &man.ipsec.4;.Die folgenden Optionen in der Kernelkonfiguration
aktivieren IPsec:KerneloptionIPSECKerneloptionIPSEC_ESPoptions IPSEC #IP security
options IPSEC_ESP #IP security (crypto; define w/ IPSEC)KerneloptionIPSEC_DEBUGWenn Sie zur Fehlersuche im IPsec-Subsystem
Unterstützung wünschen, sollten Sie die
folgende Option ebenfalls aktivieren:options IPSEC_DEBUG #debug for IP securityWas ist ein VPN?Es gibt keinen Standard, der festlegt, was ein
Virtual-Private-Network ist. VPNs können mit
verschiedenen Techniken, die jeweils eigene Vor- und
Nachteile besitzen, implementiert werden.
Dieser Abschnitt stellt eine Möglichkeit vor,
ein VPN aufzubauen.VPN zwischen zwei Netzen über das InternetVPN
- Einrichtung
+ einrichtenDieses Szenario hat die folgenden Vorausetzungen:Es müssen zwei Netzwerke vorhanden sein.Beide Netzwerke müssen intern IP benutzen.Beide Netzwerke sind über einen &os;-Gateway
mit dem Internet verbunden.Der Gateway jedes Netzwerks besitzt mindestens
eine öffentliche IP-Adresse.Die intern verwendeten IP-Adressen können
private oder öffentliche Adressen sein.
Der Gateway kann, wenn nötig, IP-Adressen mit
NAT umschreiben.Die IP-Adressen der internen Netzwerke
dürfen nicht überlappen.
Mit NAT ließe sich diese Anforderung zwar umgehen, doch
wäre die Konfiguration und Pflege des resultierenden
Netzwerks zu aufwändig.Wenn die zu verbindenden Netzwerke intern dieselben
IP-Adressen benutzen (beispielsweise
192.168.1.x), müssen
einem der Netzwerke neue IP-Adressen zugewiesen werden.Die Netzwerktopologie sieht wie folgt aus:Netzwerk #1 [ Interne Rechner ] Privates Netz, 192.168.1.2-254
[ Win9x/NT/2K ]
[ UNIX ]
|
|
.---[fxp1]---. Private IP, 192.168.1.1
| FreeBSD |
`---[fxp0]---' Öffentliche IP, A.B.C.D
|
|
-=-=- Internet -=-=-
|
|
.---[fxp0]---. Öffentliche IP, W.X.Y.Z
| FreeBSD |
`---[fxp1]---' Private IP, 192.168.2.1
|
|
Netzwerk #2 [ Interne Rechner ]
[ Win9x/NT/2K ] Privates Netz, 192.168.2.2-254
[ UNIX ]Beachten Sie die beiden öffentlichen IP-Adressen.
Im Folgenden werden sie durch Buchstaben (als Platzhalter)
gekennzeichnet. Setzen Sie hierfür Ihre eigenen
öffentlichen IP-Adressen ein. Beide Gateways
besitzen die interne Adresse
x.x.x.1 und beide
Netzwerke besitzen unterschiedliche private IP-Adressen:
192.168.1.x und
192.168.2.x. Die Default-Route
aller internen Systeme ist jeweils die Gateway-Maschine
(x.x.x.1).Aus der Sicht der Systeme sollen jetzt beide
Netzwerke wie über einen Router, der in diesem
Fall etwas langsamer ist, verbunden werden.Auf dem Rechner 192.168.1.20
soll also beispielsweise der folgende Befehl funktionieren:ping 192.168.2.34&windows;-Systeme sollen die Systeme auf dem anderen
Netzwerk erkennen und Shares sollen funktionieren. Alles
soll genauso wie in lokalen Netzwerken funktionieren.Zusätzlich soll die Kommunikation zwischen beiden
Netzwerken noch verschlüsselt werden.Das VPN wird in mehreren Schritten aufgebaut:Zuerst wird eine virtuelle Verbindung zwischen
beiden Netzwerken über das Internet eingerichtet.
Die virtuelle Verbindung können Sie mit Werkzeugen
wie &man.ping.8; prüfen.Danach wird eine Sicherheitsrichtlinie
(Security-Policy) festgelegt,
die automatisch den Datenverkehr zwischen beiden
Netzwerken verschlüsselt und entschlüsselt.
Mit Werkzeugen wie &man.tcpdump.1; können Sie
überprüfen, dass die Daten tatsächlich
verschlüsselt werden.Wenn sich &windows;-Systeme im VPN gegenseitig
erkennen sollen, so sind noch weitere
Konfigurationsschritte notwendig, die aber nicht
in diesem Abschnitt beschrieben werden.Schritt 1: Die virtuelle Verbindung einrichtenNehmen wir an, sie wollten von der Gateway-Maschine
im Netzwerk #1 (öffentliche IP-Adresse
A.B.C.D, private IP-Adresse
192.168.1.1) das Kommando
ping 192.168.2.1 absetzen.
192.168.2.1 ist die private
IP-Adresse des Systems W.X.Y.Z
im Netzwerk #2. Welche Voraussetzungen müssen
erfüllt sein, damit der Befehl funktioniert?Die Gateway-Maschine muss das System
192.168.2.1 erreichen
können. Das heißt, eine Route zu diesem
System muss existieren.Private IP-Adressen, wie der Bereich
192.168.x, sollten im
Internet nicht verwendet werden. Jedes Paket zu
192.168.2.1 muss daher
in ein anderes Paket gepackt werden, das von
A.B.C.D kommt und
zu W.X.Y.Z geschickt
wird. Das erneute Verpacken der Pakete wird als
Kapselung bezeichnet.Wenn das Paket W.X.Y.Z
erreicht, muss es dort ausgepackt und an
192.168.2.1 ausgeliefert
werden.Sie können sich diese Prozedur so vorstellen,
dass ein Tunnel zwischen beiden Netzwerken existiert.
Die beiden Tunnel-Enden besitzen die IP-Adressen
A.B.C.D und
W.X.Y.Z. Der Tunnel
muss zudem Verkehr zwischen den privaten IP-Adressen
erlauben und transportiert so Daten zwischen privaten
IP-Adressen über das Internet.Unter &os; wird der Tunnel mit
gif-Geräten (generic
interface) erstellt. Auf jedem Gateway
muss das gif-Gerät mit
vier IP-Adressen eingerichtet werden: Zwei öffentliche
IP-Adressen und zwei private IP-Adressen.Die gif-Geräte werden vom
Kernel bereitgestellt und müssen in der
Kernelkonfigurationsdatei auf beiden Maschinen angegeben
werden:device gifWie gewöhnlich müssen Sie danach einen
neuen Kernel erstellen, installieren und das System
neu starten.Der Tunnel wird in zwei Schritten aufgebaut. Mit
&man.gifconfig.8; werden zuerst die öffentlichen
IP-Adressen konfiguriert. Anschließend werden
die privaten IP-Adressen mit &man.ifconfig.8; eingerichtet.In &os; 5.X sind die Funktionen von
&man.gifconfig.8; in das Kommando &man.ifconfig.8;
integriert.Auf der Gateway-Maschine im Netzwerk #1 bauen
Sie den Tunnel mit den folgenden Kommandos auf:gifconfig gif0 A.B.C.D W.X.Y.Z
ifconfig gif0 inet 192.168.1.1 192.168.2.1 netmask 0xffffffffAuf dem anderen Gateway benutzen Sie dieselben Kommandos,
allerdings mit vertauschten IP-Adressen:gifconfig gif0 W.X.Y.Z A.B.C.D
ifconfig gif0 inet 192.168.2.1 192.168.1.1 netmask 0xffffffffDie Konfiguration können Sie anschließend mit
dem folgenden Kommando überprüfen:gifconfig gif0Auf dem Gateway in Netzwerk #1 sollten Sie
beispielsweise die nachstehende Ausgabe erhalten:&prompt.root; gifconfig gif0
gif0: flags=8011<UP,POINTTOPOINT,MULTICAST> mtu 1280
inet 192.168.1.1 --> 192.168.2.1 netmask 0xffffffff
physical address inet A.B.C.D --> W.X.Y.ZWie Sie sehen, ist ein Tunnel zwischen den IP-Adressen
A.B.C.D und
W.X.Y.Z aufgebaut worden,
der Verkehr zwischen den Adressen
192.168.1.1 und
192.168.2.1 zulässt.Gleichzeitig wurde ein Eintrag in der Routing-Tabelle
erstellt, den Sie sich mit netstat -rn
ansehen können. Auf der Gateway-Maschine in Netzwerk #1
sieht das so aus:&prompt.root; netstat -rn
Routing tables
Internet:
Destination Gateway Flags Refs Use Netif Expire
...
192.168.2.1 192.168.1.1 UH 0 0 gif0
...Die Route ist eine Host-Route, wie in der Spalte
Flags angegeben. Das heißt
die beiden Gateways wissen wie sie einander erreichen,
sie kennen allerdings nicht das Netzwerk auf der
anderen Seite. Dieses Problem werden wir gleich
angehen.Wahrscheinlich ist auf beiden Gateways eine Firewall
eingerichtet. Für den VPN-Verkehr muss die Firewall
umgegangen werden. Sie können generell den Verkehr
zwischen beiden Netzwerken erlauben oder Regeln erstellen,
die beide Tunnel-Enden des VPNs voreinander schützen.Der Test des VPNs wird erheblich leichter, wenn Sie
jeden Verkehr zwischen den Tunnel-Enden in der Firewall
erlauben. Wenn Sie auf der Gateway-Maschine &man.ipfw.8;
einsetzen, erlaubt die folgende Regel jeden Verkehr
zwischen den Tunnel-Enden, ohne die anderen Regeln zu
beeinflussen:ipfw add 1 allow ip from any to any via gif0Diese Regel muss offensichtlich auf beiden Gateway-Maschinen
existieren.Damit sollten Sie das Kommando ping
jetzt absetzen können. Auf dem System
192.168.1.1 sollte der
nachstehende Befehl Antworten erhalten:ping 192.168.2.1Denselben Test können Sie auch auf der anderen
Gateway-Maschine ausführen.Allerdings können Sie noch nicht die anderen
internen Maschinen auf den Netzwerken erreichen. Die Ursache
ist das Routing – die Gateway kennen sich zwar
gegenseitig, wissen aber noch nichts von den Netzwerken
hinter dem anderen Gateway.Um die Netzwerke bekannt zu geben, muss auf jeder
Gateway-Maschine noch eine statische Route hinzugefügt
werden. Auf der ersten Gateway-Maschine setzen Sie dazu
das folgende Kommando ab:route add 192.168.2.0 192.168.2.1 netmask 0xffffff00Dies entspricht der Anweisung: Um Rechner
auf dem Netz 192.168.2.0
zu erreichen, schicke die Pakete zum System
192.168.2.1. Auf
dem anderen Gateway muss das analoge Kommando (mit den
IP-Adressen 192.168.1.x)
abgesetzt werden.Damit ist jetzt der IP-Verkehr zwischen beiden
Netzwerken möglich.Zwei Drittel des VPNs zwischen beiden Netzen
ist nun eingerichtet. Es ist virtuell und
es ist ein Netzwerk. Es ist allerdings
noch nicht privat. Dies können Sie
mit &man.ping.8; und &man.tcpdump.1; überprüfen.
Setzen Sie auf dem ersten Gateway den folgenden Befehl ab:tcpdump dst host 192.168.2.1Starten Sie dann, ebenfalls auf dem ersten Gateway, den
folgenden Befehl:ping 192.168.2.1Sie werden die nachstehende Ausgabe erhalten:16:10:24.018080 192.168.1.1 > 192.168.2.1: icmp: echo request
16:10:24.018109 192.168.1.1 > 192.168.2.1: icmp: echo reply
16:10:25.018814 192.168.1.1 > 192.168.2.1: icmp: echo request
16:10:25.018847 192.168.1.1 > 192.168.2.1: icmp: echo reply
16:10:26.028896 192.168.1.1 > 192.168.2.1: icmp: echo request
16:10:26.029112 192.168.1.1 > 192.168.2.1: icmp: echo replyDie ICMP-Nachrichten werden unverschlüsselt
übertragen. Mit der Option
von &man.tcpdump.1; können Sie sich weitere Daten
der Pakete anzeigen lassen.Die Daten sollen aber automatisch verschlüsselt
werden. Wie das geht, wird im nächsten Abschnitt
erläutert.ZusammenfassungRichten sie in beiden Kerneln das
gif-Gerät ein.Fügen Sie auf dem Gateway in Netzwerk #1
folgende Zeilen in /etc/rc.conf
ein:gifconfig_gif0="A.B.C.D W.X.Y.Z"
ifconfig_gif0="inet 192.168.1.1 192.168.2.1 netmask 0xffffffff"
static_routes="vpn"
route_vpn="192.168.2.0 192.168.2.1 netmask 0xffffff00"Setzen Sie dabei die richtigen IP-Adressen für
die Platzhalter ein.Fügen Sie auf beiden Gateways die nachstehende
Regel in das Firewall-Skript (zum Beispiel
/etc/rc.firewall) ein:ipfw add 1 allow ip from any to any via gif0Nehmen Sie in /etc/rc.conf auf dem
Gateway #2 analoge Änderungen, die IP-Adressen
müssen vertauscht werden, vor.Schritt 2: Die Verbindung mit IPsec schützenUm die Verbindung zu schützen, verwenden wir IPsec.
IPsec bietet einen Mechanismus, mit dem sich zwei
Systeme auf einen Schlüssel einigen können.
Mit diesem Schlüssel wird dann der Datenverkehr zwischen
beiden Systemen verschlüsselt.Es gibt hierbei zwei Sachen die konfiguriert werden
müssen:Die Security-Association bestimmt,
mit welchen Methoden der Verkehr zwischen beiden Systemen
verschlüsselt wird.Die Security-Policy bestimmt,
was verschlüsselt wird. Es soll ja nicht der
gesamte Datenverkehr nach außen verschlüsselt
werden, sondern nur der Teil des Verkehrs, der zum
VPN gehört.Die Security-Association wie auch die Security-Policy
werden vom Kernel verwaltet und können von Anwendungen
verändert werden. Dazu müssen allerdings zuerst
IPsec und das Encapsulated-Security-Payload (ESP) Protokoll
in die Kernelkonfigurationsdatei eingetragen werden:KerneloptionIPSECoptions IPSEC
options IPSEC_ESPWie üblich, müssen Sie danach den Kernel
übersetzen, installieren und das System neu starten.
Die Kernel müssen auf beiden Gateway-Maschinen
neu erstellt werden.IKESie können die Security-Association auf zwei
Arten konfigurieren: Manuell, dann müssen Sie
den Verschlüsselungsalgorithmus, die Schlüssel
und alles Weitere selbst konfigurieren. Oder automatisch,
mithilfe eines Dæmons, der das Internet-Key-Exchange
Protokoll (IKE) beherrscht.Im Allgemeinen wird die letzte Variante bevorzugt.
Sie ist auch wesentlich leichter einzurichten.IPsecSecurity-PolicysetkeyMit &man.setkey.8; können Sie Security-Policies
editieren und anzeigen. Die Beziehung von
setkey und der Tabelle der
Security-Policies im Kernel entspricht
dem Verhältnis von &man.route.8; und der Routing-Tabelle.
Die momentanen Security-Associations lassen sich ebenfalls
mit setkey anzeigen;
setkey verhält sich in diesem Fall
wie netstat -r, um die Analogie
fortzuführen.Sie haben die Wahl zwischen mehreren Programmen,
wenn Sie Security-Associations mit &os; verwalten
wollen. Im Folgenden wird racoon
beschrieben. racoon lässt sich in gewohnter
Weise aus der Ports-Sammlung installieren. Sie finden
das Programm unter
security/racoon.racoonAuf beiden Gateway-Maschinen muss
security/racoon laufen.
Konfiguriert wird jeweils die IP-Adresse der Gegenstelle
sowie der geheime Schlüssel. Dabei muss auf beiden
Gateway-Maschinen der gleiche Schlüssel verwendet
werden.Die beiden raccon-Daemonen prüfen mithilfe des
geheimen Schlüssels gegenseitig ihre Identität.
Anschließend generieren Sie einen neuen geheimen
Schlüssel, mit dem dann der Datenverkehr im VPN
verschlüsselt wird. Dieser Schlüssel wird
von Zeit zu Zeit geändert. Ein Angreifer,
der einen der Schlüssel geknackt hat – das ist
schon ziemlich unwahrscheinlich – kann somit nicht
viel mit diesem Schlüssel anfangen, da schon wieder ein
anderer Schlüssel verwendet wird.Die Konfiguration von racoon befindet sich in
${PREFIX}/etc/racoon. In der
dort befindlichen Konfigurationsdatei sollten Sie nicht
allzu viele Änderungen vornehmen müssen.
Sie müssen allerdings den so genannten
Pre-Shared-Key (den vorher ausgetauschten
Schlüssel) ändern.In der Voreinstellung befindet sich dieser Schlüssel
in der Datei ${PREFIX}/etc/racoon/psk.txt.
Dieser Schlüssel wird nicht zum
Verschlüsseln des Datenverkehrs verwendet. Er dient
lediglich der Authentifizierung der beiden racoon-Daemonen.Für jeden entfernten Kommunikationspartner enthält
psk.txt eine Zeile. Damit besteht die
Datei psk.txt in unserem Beispiel
aus einer Zeile (wir verwenden einen entfernten
Kommunikationspartner).Auf dem Gateway #1 sieht diese Zeile wie
folgt aus:W.X.Y.Z geheimDie Zeile besteht aus der öffentlichen IP-Adresse
der Gegenstelle, Leerzeichen und dem geheimen Schlüssel.
Sie sollten natürlich nicht geheim
verwenden. Für den geheimen Schlüssel gelten
dieselben Regeln wie für Passwörter.Auf dem anderen Gateway sieht die Zeile
folgendermaßen aus:A.B.C.D geheimDie Zeile besteht aus der öffentlichen IP-Adresse
der Gegenstelle, Leerzeichen und dem geheimen Schlüssel.
Die Zugriffsrechte von psk.txt müssen
auf 0600 (Lese- und Schreibzugriff nur
für root) gesetzt sein, bevor
racoon gestartet wird.Auf beiden Gateway-Maschinen muss racoon laufen. Sie
brauchen ebenfalls Firewall-Regeln, die IKE-Verkehr
erlauben. IKE verwendet UDP, um Nachrichten zum
ISAKMP-Port (Internet Security Association Key Management Protocol)
zu schicken. Die Regeln sollten früh in der
Regelkette auftauchen:ipfw add 1 allow udp from A.B.C.D to W.X.Y.Z isakmp
ipfw add 1 allow udp from W.X.Y.Z to A.B.C.D isakmpWenn racoon läuft, können Sie versuchen,
mit ping von einem Gateway-Rechner aus
den anderen Gateway zu erreichen. Die Verbindung wird zwar immer
noch nicht verschlüsselt, aber racoon wird die
Security-Association zwischen beiden Systemen einrichten.
Dies kann eine Weile dauern, und Sie bemerken vielleicht
eine kleine Verzögerung, bevor die Antworten von
der Gegenstelle kommen.Die Security-Association können Sie sich auf einem
der beiden Gateway-Systeme mit &man.setkey.8; ansehen:setkey -DDamit ist die erste Hälfte der Arbeit getan.
Jetzt muss noch die Security-Policy konfiguriert werden.Damit wir eine sinnvolle Security-Policy erstellen
können, fassen wir das bisher geleistete zusammen.
Die Diskussion gilt für beide Enden des Tunnels.Jedes gesendete IP-Paket enthält im Header
Informationen über das Paket selbst. Im Header
befinden sich die IP-Adressen des Senders und des
Empfängers. Wie wir bereits wissen, dürfen
private IP-Adressen, wie
192.168.x.y nicht auf
das Internet gelangen. Pakete zu privaten IP-Adressen
müssen zuerst in einem anderen Paket gekapselt
werden. In diesem Paket werden die privaten IP-Adressen
durch öffentliche IP-Adressen ersetzt.Das ausgehende Paket hat beispielsweise wie folgt
ausgesehen:
.----------------------.
| Src: 192.168.1.1 |
| Dst: 192.168.2.1 |
| <other header info> |
+----------------------+
| <packet data> |
`----------------------'Es wird in ein anderes Paket umgepackt (gekapselt)
und sieht danach wie folgt aus:
.--------------------------.
| Src: A.B.C.D |
| Dst: W.X.Y.Z |
| <other header info> |
+--------------------------+
| .----------------------. |
| | Src: 192.168.1.1 | |
| | Dst: 192.168.2.1 | |
| | <other header info> | |
| +----------------------+ |
| | <packet data> | |
| `----------------------' |
`--------------------------'Die Kapselung wird vom gif-Gerät
vorgenommen. Das neue Paket enthält im Header eine
öffentliche IP-Adresse und der Datenteil des Pakets
enthält das ursprüngliche Paket.Natürlich soll der gesamte Datenverkehr des VPNs
verschlüsselt werden. Dies kann man wie folgt
ausdrücken:Wenn ein Paket von A.B.C.D
zu W.X.Y.Z geschickt wird,
verschlüssele es entsprechend der
Security-Association.Wenn ein Paket von W.X.Y.Z
kommt und für A.B.C.D
bestimmt ist, entschlüssele es entsprechend der
Security-Association.Das ist fast richtig. Mit diesen Regeln würde
der ganze Verkehr von und zu W.X.Y.Z
verschlüsselt, auch wenn er nicht zum VPN gehört.
Die richtige Formulierung lautet:Wenn ein Paket, das ein gekapseltes Paket enthält,
von A.B.C.D zu
W.X.Y.Z geschickt wird,
verschlüssele es entsprechend der
Security-Association.Wenn ein Paket, das ein gekapseltes Paket enthält,
von W.X.Y.Z kommt und für
A.B.C.D bestimmt ist,
entschlüssele es entsprechend der
Security-Association.Dies ist eine zwar subtile aber eine
notwendige Änderung.Die Security-Policy können Sie mit &man.setkey.8;
erstellen. &man.setkey.8; besitzt eine Konfigurations-Syntax
zur Erstellung der Security-Policy. Sie können die
Konfiguration über die Standardeingabe oder in einer
Datei, die Sie mit der Option angeben,
erstellen.Gateway #1 (öffentliche IP-Adresse:
A.B.C.D) muss
folgendermaßen konfiguriert werden, um alle
ausgehenden Pakete an W.X.Y.Z
zu verschlüsseln:spdadd A.B.C.D/32 W.X.Y.Z/32 ipencap -P out ipsec esp/tunnel/A.B.C.D-W.X.Y.Z/require;Speichern Sie dieses Kommando in einer Datei, beispielsweise
/etc/ipsec.conf ab. Rufen Sie
anschließend das nachstehende Kommando auf:&prompt.root; setkey -f /etc/ipsec.conf weist &man.setkey.8; an,
der Security-Policy-Datenbank eine Regel hinzuzufügen.
Der Rest der Zeile gibt an, auf welche Pakete diese
Regel zutrifft. A.B.C.D/32
und W.X.Y.Z/32 sind
die IP-Adressen und Netzmasken, die Systeme angeben,
auf die diese Regel zutrifft. Im Beispiel gilt die
Regel für die beiden Gateway-Systeme.
zeigt an, dass die Regel nur
für Pakete gilt, die gekapselte Pakete enthalten.
legt fest, dass die Regel nur
für ausgehende Pakete gilt. gibt an, dass die Pakete
geschützt werden. Das benutzte Protokoll
wird durch angegeben.
kapselt das Paket in ein
IPsec-Paket. Die nochmalige Angabe von
A.B.C.D und
W.X.Y.Z gibt die
Security-Association an. Das abschließende
erzwingt die Verschlüsselung
der Pakete.Diese Regel gilt nur für ausgehende Pakete.
Sie brauchen eine analoge Regel für eingehende
Pakete:spdadd W.X.Y.Z/32 A.B.C.D/32 ipencap -P in ipsec esp/tunnel/W.X.Y.Z-A.B.C.D/require;In dieser Regel wird anstelle
von benutzt und die IP-Adressen
sind notwendigerweise umgekehrt angegeben.Das zweite Gateway-System mit der IP-Adresse
W.X.Y.Z braucht
entsprechende Regeln:spdadd W.X.Y.Z/32 A.B.C.D/32 ipencap -P out ipsec esp/tunnel/W.X.Y.Z-A.B.C.D/require;
spdadd A.B.C.D/32 W.X.Y.Z/32 ipencap -P in ipsec esp/tunnel/A.B.C.D-W.X.Y.Z/require;Schließlich brauchen Sie auf beiden Gateway-Systemen
noch Firewall-Regeln, die ESP- und IPENCAP-Pakete in beide
Richtungen erlauben:ipfw add 1 allow esp from A.B.C.D to W.X.Y.Z
ipfw add 1 allow esp from W.X.Y.Z to A.B.C.D
ipfw add 1 allow ipencap from A.B.C.D to W.X.Y.Z
ipfw add 1 allow ipencap from W.X.Y.Z to A.B.C.DDa die Regeln symmetrisch sind, können sie auf
beiden Systemen verwendet werden.Damit sehen ausgehende Pakete wie folgt aus:
.------------------------------. --------------------------.
| Src: A.B.C.D | |
| Dst: W.X.Y.Z | |
| < weitere Header > | | Encrypted
+------------------------------+ | packet.
| .--------------------------. | -------------. | contents
| | Src: A.B.C.D | | | | are
| | Dst: W.X.Y.Z | | | | completely
| | < weitere Header > | | | |- secure
| +--------------------------+ | | Encap'd | from third
| | .----------------------. | | -. | packet | party
| | | Src: 192.168.1.1 | | | | Original |- with real | snooping
| | | Dst: 192.168.2.1 | | | | packet, | IP addr |
| | | < weitere Header > | | | |- private | |
| | +----------------------+ | | | IP addr | |
| | | <Paket-Daten> | | | | | |
| | `----------------------' | | -' | |
| `--------------------------' | -------------' |
`------------------------------' --------------------------'
Am anderen Ende des VPNs werden die Pakete zuerst
entsprechend der von racoon ausgehandelten Security-Association
entschlüsselt. Das gif-Interface
entfernt dann die zweite Schicht, damit das ursprüngliche
Paket zum Vorschein kommt. Dieses kann dann in das interne
Netzwerk transportiert werden.Dass die Pakete wirklich verschlüsselt werden,
können Sie wieder mit &man.ping.8; überprüfen.
Melden Sie sich auf dem Gateway
A.B.C.D an und rufen
das folgende Kommando auf:tcpdump dst host 192.168.2.1Auf demselben Rechner setzen Sie dann noch das
nachstehende Kommando ab:ping 192.168.2.1Dieses Mal wird die Ausgabe wie folgt aussehen:XXX tcpdump outputJetzt zeigt &man.tcpdump.1; ESP-Pakete an. Auch wenn
Sie diese mit der Option untersuchen,
werden Sie wegen der Verschlüsselung nur
unverständliche Zeichen sehen.Herzlichen Glückwunsch. Sie haben soeben ein
VPN zwischen zwei entfernten Netzen eingerichtet.ZusammenfassungIPsec muss in beiden Kernelkonfigurationsdateien
enthalten sein:options IPSEC
options IPSEC_ESPInstallieren Sie security/racoon. Tragen Sie
auf beiden Rechnern in
${PREFIX}/etc/racoon/psk.txt jeweils
die IP-Adresse des entfernten Gateways und den geheimen
Schlüssel ein. Setzen Sie die Zugriffsrechte der
Datei auf 0600.Fügen Sie auf jedem Rechner die folgenden
Zeilen zu /etc/rc.conf hinzu:ipsec_enable="YES"
ipsec_file="/etc/ipsec.conf"Erstellen Sie auf jedem Rechner die Datei
/etc/ipsec.conf mit den nötigen
-Zeilen. Auf dem Gateway #1
hat die Datei folgenden Inhalt:spdadd A.B.C.D/32 W.X.Y.Z/32 ipencap -P out ipsec
esp/tunnel/A.B.C.D-W.X.Y.Z/require;
spdadd W.X.Y.Z/32 A.B.C.D/32 ipencap -P in ipsec
esp/tunnel/W.X.Y.Z-A.B.C.D/require;Auf dem Gateway #2 sieht die Datei so aus:spdadd W.X.Y.Z/32 A.B.C.D/32 ipencap -P out ipsec
esp/tunnel/W.X.Y.Z-A.B.C.D/require;
spdadd A.B.C.D/32 W.X.Y.Z/32 ipencap -P in ipsec
esp/tunnel/A.B.C.D-W.X.Y.Z/require;Fügen Sie auf beiden Rechnern Firewall-Regeln
hinzu, die IKE-, ESP- und IPENCAP-Verkehr erlauben:ipfw add 1 allow udp from A.B.C.D to W.X.Y.Z isakmp
ipfw add 1 allow udp from W.X.Y.Z to A.B.C.D isakmp
ipfw add 1 allow esp from A.B.C.D to W.X.Y.Z
ipfw add 1 allow esp from W.X.Y.Z to A.B.C.D
ipfw add 1 allow ipencap from A.B.C.D to W.X.Y.Z
ipfw add 1 allow ipencap from W.X.Y.Z to A.B.C.DDas VPN wurde in zwei Schritten eingerichtet. Maschinen
auf beiden Netzen können miteinander kommunizieren
und der Datenverkehr zwischen beiden Netzen wird automatisch
verschlüsselt.ChernLeeBeigetragen von OpenSSHOpenSSHSicherheitOpenSSHOpenSSH stellt Werkzeuge bereit,
um sicher auf entfernte
Maschinen zuzugreifen. Die Kommandos rlogin,
rsh, rcp und
telnet können durch
OpenSSH ersetzt werden.
Zusätzlich können andere TCP/IP-Verbindungen sicher durch
SSH weitergeleitet (getunnelt) werden. Mit SSH werden alle
Verbindungen verschlüsselt, dadurch wird verhindert, dass
die Verbindung zum Beispiel abgehört oder übernommen
(Hijacking) werden kann.OpenSSH wird vom OpenBSD-Projekt
gepflegt und basiert auf SSH v1.2.12 mit allen aktuellen
Fixen und Aktualisierungen. OpenSSH
ist mit den SSH-Protokollen der Versionen 1 und 2 kompatibel. Seit
&os; 4.0 ist die OpenSSH Teil
des Basissystems.Vorteile von OpenSSHMit &man.telnet.1; oder &man.rlogin.1; werden Daten in
einer unverschlüsselten Form über das Netzwerk
gesendet. Daher besteht die Gefahr, das Benutzer/Passwort
Kombinationen oder alle Daten an beliebiger Stelle zwischen
dem Client und dem Server abgehört werden. Mit
OpenSSH stehen eine Reihe von
Authentifizierungs- und Verschlüsselungsmethoden zur
Verfügung, um das zu verhindern.Aktivieren von sshdOpenSSHaktivierenUnter &os; 4.X ist der
sshd-Daemon bereits in der
Voreinstellung aktiviert. Unter &os; 5.X hat der Anwender
die Wahl, ob der Daemon aktiviert werden soll oder nicht.
Um zu überprüfen, ob der Daemon bei Ihnen
aktiviert ist, suchen Sie in rc.conf
nach der folgenden Zeile:sshd_enable="YES"Dadurch wird &man.sshd.8;, der Dæmon von
OpenSSH beim nächsten Neustart
geladen. Alternativ können Sie den Dæmon auch
direkt starten, indem Sie auf der Kommandozeile das Kommando
sshd absetzen.SSH ClientOpenSSHClient&man.ssh.1; arbeitet ähnlich wie &man.rlogin.1;:&prompt.root; ssh user@example.com
Host key not found from the list of known hosts.
Are you sure you want to continue connecting (yes/no)? yes
Host 'example.com' added to the list of known hosts.
user@example.com's password: *******Der Anmeldevorgang wird danach, wie von
rlogin oder telnet gewohnt,
weiterlaufen. SSH speichert einen Fingerabdruck des
Serverschlüssels. Die Aufforderung, yes
einzugeben, erscheint nur bei der ersten Verbindung zu einem
Server. Weitere Verbindungen zu dem Server werden gegen den
gespeicherten Fingerabdruck des Schlüssels geprüft und
der Client gibt eine Warnung aus, wenn sich der empfangene
Fingerabdruck von dem gespeicherten unterscheidet. Die
Fingerabdrücke der Version 1 werden in
~/.ssh/known_hosts, die der Version 2 in
~/.ssh/known_hosts2 gespeichert.In der Voreinstellung akzeptieren aktuelle
OpenSSH-Server nur SSH v2
Verbindungen. Wenn möglich, wird Version 2 verwendet,
ist dies nicht möglich, fällt der Server auf
Version 1 zurück. Der Client kann gezwungen werden,
nur eine der beiden Versionen zu verwenden, indem die Option
(für die Version 1) oder
(für die Version 2) übergeben
wird. Die Unterstützung für Version 1 ist nur
noch aus Kompatibilitätsgründen zu älteren
Versionen enthalten.Secure CopyOpenSSHsecure copyscpMit &man.scp.1; lassen sich Dateien analog wie mit
&man.rcp.1; auf entfernte Maschinen kopieren. Mit
scp werden die Dateien allerdings in einer
sicheren Weise übertragen.&prompt.root; scp user@example.com:/COPYRIGHT COPYRIGHT
user@example.com's password:
COPYRIGHT 100% |*****************************| 4735
00:00
&prompt.root;Da der Fingerabdruck schon im vorigen Beispiel abgespeichert
wurde, wird er bei der Verwendung von scp in
diesem Beispiel überprüft. Da die Fingerabdrücke
übereinstimmen, wird keine Warnung ausgegeben.Die Argumente, die scp übergeben
werden, gleichen denen von cp in der Beziehung,
dass die ersten Argumente die zu kopierenden Dateien sind und
das letzte Argument den Bestimmungsort angibt. Da die Dateien
über das Netzwerk kopiert werden, können ein oder mehrere
Argumente die Form
besitzen.KonfigurationOpenSSHKonfigurationDie für das ganze System gültigen
Konfigurationsdateien des
OpenSSH-Dæmons und des Clients
finden sich in dem Verzeichnis
/etc/ssh.Die Client-Konfiguration befindet sich in
ssh_config, die des Servers befindet sich in
sshd_config.Das SSH-System lässt sich weiterhin über die
Anweisungen (Vorgabe ist
/usr/sbin/sshd) und
in /etc/rc.conf
konfigurieren.ssh-keygenMit &man.ssh-keygen.1; können DSA- oder RSA-Schlüssel
für einen Benutzer erzeugt werden, die anstelle von
Passwörtern verwendet werden können:&prompt.user; ssh-keygen -t dsa
Generating public/private dsa key pair.
Enter file in which to save the key (/home/user/.ssh/id_dsa):
Created directory '/home/user/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/user/.ssh/id_dsa.
Your public key has been saved in /home/user/.ssh/id_dsa.pub.
The key fingerprint is:
bb:48:db:f2:93:57:80:b6:aa:bc:f5:d5:ba:8f:79:17 user@host.example.com
&man.ssh-keygen.1; erzeugt einen öffentlichen und einen
privaten Schlüssel für die Authentifizierung. Der private
Schlüssel wird in ~/.ssh/id_dsa oder
~/.ssh/id_rsa gespeichert, während
sich der öffentliche Schlüssel in
~/.ssh/id_dsa.pub oder
~/.ssh/id_rsa.pub befindet, je nachdem,
ob es sich um einen DSA- oder einen RSA-Schlüssel handelt.
Der öffentliche Schlüssel muss in die Datei
~/.ssh/authorized_keys auf dem entfernten
Rechner aufgenommen werden, damit der Schlüssel
funktioniert. Analog muss auch ein
RSA-Version 1-Schlüssel nach
~/.ssh/authorized_keys kopiert werden.Damit werden Verbindungen zu der entfernten Maschine über
SSH-Schlüsseln anstelle von Passwörtern
authentifiziert.Wenn bei der Erstellung der Schlüssel mit
&man.ssh-keygen.1; ein Passwort angegeben wurde, wird der
Benutzer bei jeder Anmeldung zur Eingabe des Passworts
aufgefordert. Um den Umgang mit SSH-Schlüsseln zu
erleichtern, kann &man.ssh-agent.1; die Verwaltung dieser
Schlüssel für Sie übernehmen. Lesen Sie dazu
den weiter unten.Die Kommandozeilenoptionen und Dateinamen sind
abhängig von der OpenSSH-Version.
Die für Ihr System gültigen Optionen finden Sie
in der Hilfeseite &man.ssh-keygen.1;.ssh-agent und ssh-addMit &man.ssh-agent.1; und &man.ssh-add.1; ist es
möglich, SSH-Schlüssel
in den Speicher zu laden, damit die Passphrase nicht jedesmal
eingegeben werden muss.&man.ssh-agent.1; übernimmt die Authentifizierung
von ihm geladener privater Schlüssel.
&man.ssh-agent.1; sollte nur dazu verwendet werden, ein
anderes Programm zu starten, beispielsweise eine Shell oder
einen Window-Manager.Um &man.ssh-agent.1; in einer Shell zu verwenden, muss
es mit einer Shell als Argument aufgerufen werden.
Zusätzlich müssen die zu verwaltende Identität
(durch &man.ssh-add.1;) sowie deren Passphrase für den
privaten Schlüssel übergeben werden. Nachdem dies
erledigt ist, kann sich ein Benutzer über &man.ssh.1;
auf jedem Rechner anmelden, der einen entsprechenden
öffentlichen Schlüssel besitzt. Dazu ein
Beispiel:&prompt.user; ssh-agent csh
&prompt.user; ssh-add
Enter passphrase for /home/user/.ssh/id_dsa:
Identity added: /home/user/.ssh/id_dsa (/home/user/.ssh/id_dsa)
&prompt.user;Um &man.ssh-agent.1; unter X11 zu verwenden, müssen
Sie &man.ssh-agent.1; in Ihre ~/.xinitrc
aufnehmen. Dadurch können alle unter X11 gestarteten
Programme die Dienste von &man.ssh-agent.1; nutzen. Ihre
~/.xinitrc könnte dazu etwas so
aussehen:exec ssh-agent startxfce4Dadurch wird bei jedem Start von X11 zuerst
&man.ssh-agent.1; aufgerufen, das wiederum
XFCE startet. Nachdem Sie diese
Änderung durchgeführt haben, müssen Sie X11
neu starten. Danach können Sie mit &man.ssh-add.1;
Ihre SSH-Schlüssel laden.SSH-TunnelOpenSSHTunnelMit OpenSSH ist es möglich,
einen Tunnel zu erstellen, in dem ein anderes Protokoll
verschlüsselt übertragen wird.Das folgende Kommando erzeugt einen Tunnel für
telnet:&prompt.user; ssh -2 -N -f -L 5023:localhost:23 user@foo.example.com
&prompt.user;Dabei wurden die folgenden Optionen von ssh
verwendet:Erzwingt die Version 2 des Protokolls (Benutzen Sie die
Option nicht mit langsamen
SSH-Servern).Zeigt an, dass ein Tunnel erstellt werden soll.
Ohne diese Option würde ssh eine
normale Sitzung öffnen.Zwingt ssh im Hintergrund zu
laufen.Ein lokaler Tunnel wird in der Form
localport:remotehost:remoteport
angegeben. Die Verbindung wird dabei von dem lokalen Port
localport auf einen entfernten
Rechner weitergeleitet.Gibt den entfernten SSH server an.Ein SSH-Tunnel erzeugt ein Socket auf
localhost und dem angegebenen Port. Jede
Verbindung, die auf dem angegebenen Socket aufgemacht wird, wird
dann auf den spezifizierten entfernten Rechner und Port
weitergeleitet.Im Beispiel wird der Port 5023 auf
die entfernte Maschine und dort auf localhost
Port 23 weitergeleitet. Da der Port
23 für
Telnet reserviert ist,
erzeugt das eine sichere
Telnet-Verbindung durch einen
SSH-Tunnel.Diese Vorgehensweise kann genutzt werden, um jedes unsichere
TCP-Protokoll wie SMTP, POP3, FTP, usw. weiterzuleiten.Mit SSH einen sicheren Tunnel für SMTP erstellen&prompt.user; ssh -2 -N -f -L 5025:localhost:25 user@mailserver.example.com
user@mailserver.example.com's password: *****
&prompt.user; telnet localhost 5025
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 mailserver.example.com ESMTPZusammen mit &man.ssh-keygen.1; und zusätzlichen
Benutzer-Accounts können Sie leicht benutzbare SSH-Tunnel
aufbauen. Anstelle von Passwörtern können Sie
Schlüssel benutzen und jeder Tunnel kann unter einem eigenen
Benutzer laufen.Beispiel für SSH-TunnelSicherer Zugriff auf einen POP3-ServerNehmen wir an, an Ihrer Arbeitsstelle gibt es einen
SSH-Server, der Verbindungen von außen akzeptiert. Auf
dem Netzwerk Ihrer Arbeitsstelle soll sich zudem noch ein
Mail-Server befinden, der POP3 spricht. Das Netzwerk oder die
Verbindung von Ihrem Haus zu Ihrer Arbeitsstelle ist unsicher
und daher müssen Sie Ihre E-Mail über eine gesicherte
Verbindung abholen können. Die Lösung zu diesem
Problem besteht darin, eine SSH-Verbindung von Ihrem Haus zu
dem SSH-Server an Ihrer Arbeitsstelle aufzubauen, und von dort
weiter zum Mail-Server zu tunneln.&prompt.user; ssh -2 -N -f -L 2110:mail.example.com:110 user@ssh-server.example.com
user@ssh-server.example.com's password: ******Wenn Sie den Tunnel eingerichtet haben, konfigurieren Sie
Ihren Mail-Client so, dass er POP3 Anfragen zu
localhost Port 2110 sendet. Die Verbindung
wird dann sicher zu mail.example.com
weitergeleitet.Umgehen einer strengen FirewallEinige Netzwerkadministratoren stellen sehr drakonische
Firewall-Regeln auf, die nicht nur einkommende Verbindungen
filtern, sondern auch ausgehende. Es kann sein, dass Sie
externe Maschinen nur über die Ports 22 und 80 (SSH und
Web) erreichen.Sie wollen auf einen Dienst, der vielleicht nichts mit
Ihrer Arbeit zu tun hat, wie einen Ogg Vorbis Musik-Server,
zugreifen. Wenn der Ogg Vorbis Server nicht auf den Ports 22
oder 80 läuft, können Sie aber nicht auf ihn
zugreifen.Die Lösung hier ist es, eine SSH-Verbindung zu einer
Maschine außerhalb der Firewall aufzumachen und durch
diese zum Ogg Vorbis Server zu tunneln.&prompt.user; ssh -2 -N -f -L 8888:music.example.com:8000 user@unfirewalled-system.example.org
user@unfirewalled-system.example.org's password: *******Konfigurieren Sie Ihren Client so, dass er
localhost und Port 8888 benutzt. Die Verbindung
wird dann zu music.example.com Port 8000
weitergeleitet und Sie haben die Firewall erfolgreich
umgangen.Die Option AllowUsersEs ist in der Regel ein gute Idee, festzulegen, welche
Benutzer sich von welchem Rechner aus anmelden können.
Dies lässt sich beispielsweise über die Option
AllowUsers festlegen. Soll sich etwa
nur root vom Rechner mit der IP-Adresse
192.168.1.32 aus einwählen
dürfen, würden Sie folgenden Eintrag in
/etc/ssh/sshd_config aufnehmen:AllowUsers root@192.168.1.32Damit sich admin von jedem Rechner aus
anmelden kann, geben Sie nur den Benutzernamen an:AllowUsers adminSie können auch mehrere Benutzer in einer Zeile
aufführen:AllowUsers root@192.168.1.32 adminNur ein Benutzer, der in dieser Liste aufgeführt ist,
darf sich auf diesem Rechner anmelden.Nachdem Sie /etc/ssh/sshd_config
angepasst haben, muss &man.sshd.8; seine Konfigurationsdateien
neu einlesen. Dazu geben Sie Folgendes ein:&prompt.root; /etc/rc.d/sshd reloadWeiterführende InformationenOpenSSH&man.ssh.1; &man.scp.1; &man.ssh-keygen.1;
&man.ssh-agent.1; &man.ssh-add.1; &man.ssh.config.5;&man.sshd.8; &man.sftp-server.8; &man.sshd.config.5;TomRhodesBeigetragen von ACLZugriffskontrolllisten für DateisystemeZusammen mit anderen Verbesserungen des Dateisystems wie
Schnappschüsse gibt es ab &os; 5.0
Zugriffskontrolllisten (access
control list, ACL).Zugriffskontrolllisten erweitern die normalen Zugriffsrechte
von &unix; Systemen auf eine kompatible (&posix;.1e) Weise
und bieten feiner granulierte Sicherheitsmechanismen.Zugriffskontrolllisten für Dateisysteme werden mit der
nachstehenden Zeile in der Kernelkonfiguration aktiviert:options UFS_ACLDiese Option ist in der GENERIC-Konfiguration
aktiviert. Das System gibt eine Warnung aus, wenn ein Dateisystem mit
ACLs eingehangen werden soll und die
Unterstützung für ACLs nicht im Kernel
aktiviert ist. Das Dateisystem muss weiterhin erweiterte Attribute
zur Verfügung stellen, damit ACLs verwendet
werden können. Das neue UNIX-Dateisystem
UFS2 stellt diese Attribute
standardmäßig zur Verfügung.Die Konfiguration erweiterter Attribute auf
UFS1 ist mit einem höheren Aufwand als die
Konfiguration erweiterter Attribute auf UFS2
verbunden. Zudem ist UFS2 mit erweiterten
Attributen leistungsfähiger als UFS1.
Zugriffskontrolllisten sollten daher mit UFS2
verwendet werden.Die Angabe der Option in
/etc/fstab aktiviert Zugriffskontrolllisten
für ein Dateisystem. Die bevorzugte Möglichkeit ist
die Verwendung von Zugriffskontrolllisten mit &man.tunefs.8; (Option
), im Superblock des Dateisystems festzuschreiben.
Diese Möglichkeit hat mehrere Vorteile:Nochmaliges Einhängen eines Dateisystems (Option
von &man.mount.8;) verändert den Status
der Zugriffskontrolllisten nicht. Die Verwendung von
Zugriffskontrolllisten kann nur durch Abhängen und erneutes
Einhängen eines Dateisystems verändert werden. Das
heißt auch, dass Zugriffskontrolllisten nicht
nachträglich auf dem Root-Dateisystem aktiviert werden
können.Die Zugriffskontrolllisten auf den Dateisystemen sind,
unabhängig von den Option in /etc/fstab
oder Namensänderungen der Geräte, immer aktiv. Dies
verhindert auch, dass Zugriffskontrolllisten aus Versehen
auf Dateisystem ohne Zugriffskontrolllisten aktiviert werden und
durch falsche Zugriffsrechte Sicherheitsprobleme entstehen.Es kann sein, dass sich der Status von Zugriffskontrolllisten
später durch nochmaliges Einhängen des Dateisystems
(Option von &man.mount.8;) ändern
lässt. Die momentane Variante ist aber sicherer, da der
Status der Zugriffskontrolllisten nicht versehentlich geändert
werden kann. Allgemein sollten Zugriffskontrolllisten auf einem
Dateisystem, auf dem sie einmal verwendet wurden, nicht deaktiviert
werden, da danach die Zugriffsrechte falsch sein können.
Werden Zugriffskontrolllisten auf einem solchen Dateisystem wieder
aktiviert, werden die Zugriffsrechte von Dateien, die sich
zwischenzeitlich geändert haben, überschrieben, was zu
erneuten Problemen führt.Die Zugriffsrechte einer Datei werden durch ein
+ (Plus) gekennzeichnet, wenn die Datei durch
Zugriffskontrolllisten geschützt ist:drwx------ 2 robert robert 512 Dec 27 11:54 private
drwxrwx---+ 2 robert robert 512 Dec 23 10:57 directory1
drwxrwx---+ 2 robert robert 512 Dec 22 10:20 directory2
drwxrwx---+ 2 robert robert 512 Dec 27 11:57 directory3
drwxr-xr-x 2 robert robert 512 Nov 10 11:54 public_htmlDie Verzeichnisse directory1,
directory2 und directory3
sind durch Zugriffskontrolllisten geschützt, das Verzeichnis
public_html nicht.Zugriffskontrolllisten benutzenDas Werkzeug &man.getfacl.1; zeigt Zugriffskontrolllisten
an. Das folgende Kommando zeigt die ACLs
auf der Datei test:&prompt.user; getfacl test
#file:test
#owner:1001
#group:1001
user::rw-
group::r--
other::r--Das Werkzeug &man.setfacl.1; ändert oder entfernt
ACLs auf Dateien. Zum Beispiel:&prompt.user; setfacl -k testDie Option entfernt alle
ACLs einer Datei oder eines Dateisystems.
Besser wäre es, die Option
zu verwenden, da sie die erforderlichen Felder
beibehält.&prompt.user; setfacl -m u:trhodes:rwx,g:web:r--,o::--- testMit dem vorstehenden Kommando werden die eben
entfernten Zugriffskontrolllisten wiederhergestellt.
Der Befehl gibt die Fehlermeldung
Invalid argument aus,
wenn Sie nicht existierende Benutzer oder Gruppen
als Parameter angeben.TomRhodesBeigetragen von PortauditSicherheitsprobleme in Software Dritter überwachenIn den letzten Jahren wurden zahlreiche Verbesserungen in
der Einschätzung und dem Umgang mit Sicherheitsproblemen
erzielt. Die Gefahr von Einbrüchen in ein System wird
aber immer größer, da Softwarepakete von Dritten
auf nahezu jedem Betriebssystem installiert und konfiguriert
werden.Die Einschätzung der Verletzlichkeit eines Systems ist
ein Schlüsselfaktor für dessen Sicherheit. &os;
veröffentlicht zwar Sicherheitshinweise
(security advisories) für
das Basissystem, das Projekt ist allerdings nicht dazu in der
Lage, dies auch für die zahlreichen Softwarepakete von
Dritten zu tun. Dennoch gibt es einen Weg, auch diese
Programmpakete zu überwachen. Das in der Ports-Sammlung
enthaltene Programm Portaudit wurde
gezielt dafür entwickelt.Der Port security/portaudit
fragt dazu eine Datenbank, die vom &os; Security Team sowie
den Ports-Entwicklern aktualisiert und gewartet wird, auf
bekannte Sicherheitsprobleme ab.Bevor Sie Portaudit verwenden
können, müssen Sie es über die Ports-Sammlung
installieren:&prompt.root; cd /usr/ports/security/portaudit && make install cleanWährend der Installation werden die
Konfigurationsdateien für &man.periodic.8; aktualisiert, was
es Portaudit erlaubt, seine Ausgabe
in den täglichen Sicherheitsbericht einzufügen.
Stellen Sie auf jeden Fall sicher, dass diese (an das
E-Mail-Konto von root gesendeten)
Sicherheitsberichte auch gelesen werden. An dieser Stelle
ist keine weitere Konfiguration nötig.Nach der Installation muss ein Administrator die unter
/var/db/portaudit lokal
gespeicherte Datenbank aktualisieren:&prompt.root; portaudit -FDie Datenbank wird automatisch aktualisiert, wenn
&man.periodic.8; ausgeführt wird. Der eben genannte
Befehl ist daher optional, er wird aber für das
folgende Beispiel benötigt.Um über die Ports-Sammlung installierte
Softwarepakete Dritter zu überprüfen, muss ein
Administrator nur den folgenden Befehl eingeben:&prompt.root; portaudit -aEine Ausgabe könnte beispielsweise so aussehen:Affected package: cups-base-1.1.22.0_1
Type of problem: cups-base -- HPGL buffer overflow vulnerability.
Reference: <http://www.FreeBSD.org/ports/portaudit/40a3bca2-6809-11d9-a9e7-0001020eed82.html>
1 problem(s) in your installed packages found.
You are advised to update or deinstall the affected package(s) immediately.Wenn Sie die angegebene URL über einen
Internetbroswer aufrufen, erhalten Sie weitere Informationen
über die bestehende Sicherheitslücke, wie die betroffenen
Versionen, die Version des &os;-Ports sowie Hinweise auf weitere
Seiten, die ebenfalls Sicherheitshinweise zu diesem Problem
bieten.Portaudit ist ein mächtiges
Werkzeug und insbesondere in Zusammenarbeit mit dem
Port Portupgrade äußerst
hilfreich.TomRhodesBeigesteuert von Sicherheitshinweise&os; SicherheitshinweiseWie für andere hochwertige Betriebssysteme auch
werden für &os; Sicherheitshinweise herausgegeben.
Die Hinweise werden gewöhnlich auf den Sicherheits-Mailinglisten
und in den Errata veröffentlicht, nachdem das
Sicherheitsproblem behoben ist. Dieser Abschnitt beschreibt
den Umgang mit den Sicherheitshinweisen.Wie sieht ein Sicherheitshinweis aus?Der nachstehende Sicherheitshinweis stammt von
der Mailingliste &a.security-notifications.name;:=============================================================================
&os;-SA-XX:XX.UTIL Security Advisory
The &os; Project
Topic: denial of service due to some problem
Category: core
Module: sys
Announced: 2003-09-23
Credits: Person@EMAIL-ADDRESS
Affects: All releases of &os;
&os; 4-STABLE prior to the correction date
Corrected: 2003-09-23 16:42:59 UTC (RELENG_4, 4.9-PRERELEASE)
2003-09-23 20:08:42 UTC (RELENG_5_1, 5.1-RELEASE-p6)
2003-09-23 20:07:06 UTC (RELENG_5_0, 5.0-RELEASE-p15)
2003-09-23 16:44:58 UTC (RELENG_4_8, 4.8-RELEASE-p8)
2003-09-23 16:47:34 UTC (RELENG_4_7, 4.7-RELEASE-p18)
2003-09-23 16:49:46 UTC (RELENG_4_6, 4.6-RELEASE-p21)
2003-09-23 16:51:24 UTC (RELENG_4_5, 4.5-RELEASE-p33)
2003-09-23 16:52:45 UTC (RELENG_4_4, 4.4-RELEASE-p43)
2003-09-23 16:54:39 UTC (RELENG_4_3, 4.3-RELEASE-p39)
&os; only: NO
For general information regarding FreeBSD Security Advisories,
including descriptions of the fields above, security branches, and the
following sections, please visit
http://www.FreeBSD.org/security/.
I. Background
II. Problem Description
III. Impact
IV. Workaround
V. Solution
VI. Correction details
VII. ReferencesDas Feld Topic enthält eine
Beschreibung des Sicherheitsproblems und benennt das
betroffene Programm.Das Feld Category beschreibt den
betroffenen Systemteil. Mögliche Werte für dieses
Feld sind core, contrib
oder ports. Die Kategorie
core gilt für Kernkomponenten
des &os;-Betriebssystems, die Kategorie
contrib beschreibt zum Basissystem
gehörende Software Dritter beispielsweise
sendmail. Die Kategorie
ports beschreibt Software, die
Teil der Ports-Sammlung ist.Das Feld Module beschreibt die
betroffene Komponente. Im Beispiel ist
sys angegeben, das heißt
dieses Problem betrifft eine Komponente, die vom
Kernel benutzt wird.Das Feld Announced gibt den
Zeitpunkt der Bekanntgabe des Sicherheitshinweises
an. Damit existiert das Sicherheitsproblem,
ist vom Sicherheits-Team bestätigt worden
und eine entsprechende Korrektur wurde in das
Quellcode-Repository von &os; gestellt.Das Feld Credits gibt die Person
oder Organisation an, die das Sicherheitsproblem
bemerkte und gemeldet hat.Welche &os;-Releases betroffen sind, ist im Feld
Affects angegeben. Die Version einer
Datei, die zum Kernel gehört, können Sie
schnell mit ident ermitteln. Bei Ports
ist die Versionsnummer angegeben, die Sie im Verzeichnis
/var/db/pkg finden.
Wenn Sie Ihr System nicht täglich aktualisieren,
ist Ihr System wahrscheinlich betroffen.Wann das Problem in welchem Release behoben wurde,
steht im Feld Corrected.Im Feld &os; only wird angegeben,
ob das Sicherheitsproblem nur &os; oder auch andere
Betriebssysteme betrifft.Im Feld Background wird
das betroffene Werkzeug beschrieben. Meist finden Sie
hier warum das Werkzeug Bestandteil von &os; ist,
wofür es benutzt wird und eine kurze
Darstellung der Herkunft des Werkzeugs.Im Feld Problem Description befindet
sich eine genaue Darstellung des Sicherheitsproblems.
Hier wird fehlerhafter Code beschrieben oder geschildert,
wie ein Werkzeug ausgenutzt wird.Das Feld Impact beschreibt die
Auswirkungen des Sicherheitsproblems auf ein System,
beispielsweise erweiterte Rechte oder gar
Superuser-Rechte für normale Benutzer.Im Feld Workaround wird
eine Umgehung des Sicherheitsproblems beschrieben.
Die Umgehung ist für Administratoren gedacht,
die ihr System aus Zeitnot, Netzwerk-technischen oder
anderen Gründen nicht aktualisieren können.
Nehmen Sie Sicherheitsprobleme ernst: Auf einem
betroffenen System sollte das Problem entweder behoben
oder, wie hier beschrieben, umgangen werden.Im Feld Solution enthält eine
getestete Schritt-für-Schritt Anleitung, die das
Sicherheitsproblem behebt.Das Feld Correction Details
enthält die CVS-Tags der betroffenen Dateien
zusammen mit zugehörigen Revisionsnummern.Im Feld References finden sich
Verweise auf weitere Informationsquellen. Dies können
URLs zu Webseiten, Bücher, Mailinglisten und Newsgroups
sein.TomRhodesBeigetragen von Prozess-ÜberwachungProzess-ÜberwachungProzess-Überwachung
(Process accounting) ist ein
Sicherheitsverfahren, bei dem ein Administrator verfolgt,
welche Systemressourcen verwendet werden und wie sich diese
auf die einzelnen Anwender verteilen. Dadurch kann das
System überwacht werden und es ist sogar möglich,
zu kontrollieren, welche Befehle ein Anwender eingibt.Diese Fähigkeiten haben sowohl Vor- als auch Nachteile.
Positiv ist, dass man ein Einbruchsversuch bis an den Anfang
zurückverfolgen kann. Von Nachteil ist allerdings,
dass durch diesen Prozess Unmengen an Protokolldateien erzeugt
werden, die auch dementsprechenden Plattenplatz benötigen.
Dieser Abschnitt beschreibt die Grundlagen der
Prozess-Überwachung.Die Prozess-Überwachung aktivieren und
konfigurierenBevor Sie die Prozess-Überwachung verwenden können,
müssen Sie diese aktivieren. Dazu führen Sie als
root die folgenden Befehle aus:&prompt.root; touch /var/account/acct
&prompt.root; accton /var/account/acct
&prompt.root; echo 'accounting_enable="YES"' >> /etc/rc.confEinmal aktiviert, wird sofort mit der Überwachung von
CPU-Statistiken, Befehlen und anderen
Vorgängen begonnen. Protokolldateien werden in einem
nur von Maschinen lesbaren Format gespeichert, daher müssen
Sie diese über &man.sa.8; aufrufen. Geben Sie keine
Optionen an, gibt sa Informationen wie
die Anzahl der Aufrufe pro Anwender, die abgelaufene Zeit in
Minuten, die gesamte CPU- und Anwenderzeit
in Minuten, die durchschnittliche Anzahl der Ein- und
Ausgabeoperationen und viel andere mehr aus.Um Informationen über ausgeführte Befehle zu
erhalten, verwenden Sie &man.lastcomm.1;. So können Sie
etwa ermittlen, welche Befehle von wem auf welchem &man.ttys.5;
ausgeführt wurden:&prompt.root; lastcomm ls
trhodes ttyp1Das Ergebnis sind alle bekannten Einsätze von
ls durch trhodes
auf dem Terminal ttyp1.Zahlreiche weitere nützliche Optionen finden Sie in den
Manualpages zu &man.lastcomm.1;, &man.acct.5; sowie
&man.sa.8;.
diff --git a/de_DE.ISO8859-1/books/handbook/x11/chapter.sgml b/de_DE.ISO8859-1/books/handbook/x11/chapter.sgml
index 082033a620..1d64d5feb7 100644
--- a/de_DE.ISO8859-1/books/handbook/x11/chapter.sgml
+++ b/de_DE.ISO8859-1/books/handbook/x11/chapter.sgml
@@ -1,1902 +1,1902 @@
KenTomErweitert um X.Orgs X11-Server von MarcFonvieilleMartinHeinenÜbersetzt von Das X-Window-SystemÜbersichtMit X11 steht unter &os; eine
leistungsfähige grafische Benutzeroberfläche zur
Verfügung: &xorg;
und &xfree86; sind
zwei Open-Source Realisierungen des X-Window-Systems.
Bis &os; 4.11-RELEASE und
&os; 5.2.1-RELEASE wird standardmäßig
&xfree86;, der X11-Server
von The &xfree86; Project, Inc., installiert.
Ab &os; 5.3-RELEASE ist &xorg;
von der X.Org Foundation der voreingestellte X11-Server.Dieses Kapitel behandelt die Installation und
Konfiguration von X11; der Schwerpunkt liegt auf
&xorg;.Auskunft über von X11 unterstützte
Video-Hardware geben die Websites
&xorg; oder
&xfree86;.Nachdem Sie dieses Kapitel gelesen haben, werden Siedie Komponenten des X-Window-Systems und ihr
Zusammenspiel kennen.Wissen, wie X11 installiert und konfiguriert wird.Wissen, wie Sie verschiedene Window-Manager installieren und
benutzen.Wissen, wie &truetype;-Schriftarten mit
X11 benutzt werden.Wissen, wie Sie die grafische Anmeldung
(XDM) einrichten.Bevor Sie dieses Kapitel lesen, sollten Siewissen, wie Sie Software Dritter installieren
().Dieser Abschnitt bespricht die Installation und
Konfiguration sowohl von &xorg;
als auch &xfree86;.
Meistens sind die Konfigurationsdateien, Kommandos
und Syntaxen identisch. Wenn nicht, werden beide
Varianten gezeigt.X-GrundlagenAnwendern anderer grafischer Benutzeroberflächen, wie
µsoft.windows; oder &macos;, kommt X beim ersten Mal oft
befremdlich vor.Man braucht kein weitreichendes Verständnis der
X-Komponenten und Ihres Zusammenspiels, um X anzuwenden. Um die
Stärken von X auszunutzen, sollten Sie allerdings die Grundlagen
verstehen.Warum heißt es X?X ist nicht die erste grafische Benutzeroberfläche,
die für &unix; geschrieben wurde. Die Entwickler von
X arbeiteten vorher an einem anderen System, das W (von engl.
window: Fenster) hieß.
X ist schlicht der nächste Buchstabe im Alphabet.X wird X, X-Window-System
oder X11 genannt. Sagen Sie bitte nicht
X-Windows: das kommt bei einigen Leuten schlecht an
(die Hilfeseite &man.X.7; führt dies näher aus).Das Client/Server-Modell von XX wurde von Anfang an netzwerktransparent entworfen und
verwendet ein Client-Server-Modell. In diesem Modell läuft
der Server auf dem Rechner, an dem die Tastatur, der Bildschirm
und die Maus angeschlossen ist. Der Server ist für Dinge
wie die Verwaltung des Bildschirms und die Verarbeitung von
Tastatur- und Maus-Eingaben verantwortlich. Jede X-Anwendung,
beispielsweise ein XTerm oder
&netscape; ist ein Client. Der Client
sendet dem Server Nachrichten wie Zeichne an diesen
Koordinaten ein Fenster und der Server sendet dem Client
Nachrichten der Art Der Benutzer hat gerade den Ok-Knopf
gedrückt.In kleinen Umgebungen laufen der X-Server und die X-Clients auf
demselben Rechner. Es ist aber durchaus möglich, den X-Server
auf einem weniger leistungsfähigen Arbeitsplatzrechner laufen
zu lassen und die X-Anwendungen (die Clients) auf dem
leistungsfähigen und teuren Server der Arbeitsgruppe
zu betreiben. In diesem Fall kommunizieren der X-Server und die
X-Clients über das Netz.Dieses Modell verwirrt viele Leute, die erwarten, dass der
X-Server der dicke Rechner im Maschinenraum und der X-Client ihr
Arbeitsplatzrechner ist.Merken Sie sich einfach, dass der X-Server der Rechner mit dem
Bildschirm und der Maus ist und die X-Clients Programme sind, die
in den Fenstern laufen.Das X-Protokoll ist unabhängig vom verwendeten
Betriebssystem und Rechnertyp. Ein X-Server kann durchaus auch
unter µsoft.windows; oder Apples &macos; betrieben werden,
wie viele kostenlose und kommerzielle Anwendungen zeigen.Ab &os; 5.3-RELEASE wird der X-Server
&xorg; verwendet. Der
Server steht kostenlos unter einer ähnlichen
Lizenz wie der &os;-Lizenz zur Verfügung.
Kommerzielle X-Server sind ebenfalls erhältlich.Der Window-ManagerDie X-Philosophie Werkzeuge statt Richtlinien
ist wie die UNIX-Philosophie. Es wird nicht vorgeschrieben, wie
eine Aufgabe zu lösen ist, stattdessen erhält der
Benutzer Werkzeuge, über die er frei verfügen
kann.Dies geht so weit, dass X nicht bestimmt, wie Fenster auf dem
Bildschirm auszusehen haben, wie sie mit der Maus zu verschieben
sind, welche Tastenkombination benutzt werden muss, um zwischen
den Fenstern zu wechseln (z.B.
AltTab unter µsoft.windows;), oder ob die
Fensterrahmen Schaltflächen zum Schließen haben.X gibt die Verantwortung für all diese Sachen an eine
Anwendung ab, die Window-Manager genannt
wird. Unter X gibt es zahlreiche Window-Manager:
AfterStep,
Blackbox, ctwm,
Enlightenment,
fvwm, Sawfish,
twm,
Window Maker um nur einige zu nennen.
Jeder dieser Window-Manager sieht anders aus: Manche stellen
virtuelle Bildschirme zur Verfügung, in anderen lassen sich
die Tastenkombinationen zur Verwaltung des Bildschirms anpassen,
einige besitzen eine Startleiste
oder etwas Ähnliches und in manchen lässt sich das
Aussehen und Verhalten über die Anwendung von
Themes beliebig einstellen. Die
eben genannten Window-Manager und viele weitere finden Sie in der
Kategorie x11-wm der Ports-Sammlung.Die grafischen Benutzeroberflächen
KDE und
GNOME besitzen eigene Window-Manager,
die in den grafischen Arbeitsplatz integriert sind.Die Window-Manager werden unterschiedlich konfiguriert. Einige
erwarten eine manuell erstellte Konfigurationsdatei, andere bieten
grafische Werkzeuge für die meisten Konfigurationsarbeiten
an. Die Konfigurationsdatei von Sawfish
ist sogar in einem Lisp-Dialekt geschrieben.FokusDer Window-Manager ist für die Methode, mit
der ein Fenster den Fokus bekommt, verantwortlich. Jedes System,
das Fenster verwendet, muss entscheiden, wie ein Fenster
aktiviert wird, damit es Eingaben empfangen kann. Das aktive
Fenster sollte zudem sichtbar gekennzeichnet werden.Eine geläufige Methode, den Fokus zu wechseln,
wird click-to-focus genannt. Die Methode wird
in µsoft.windows; benutzt: Ein Fenster wird aktiv, wenn
es mit der Maus angeklickt wird.X legt nicht fest, wie der Fokus einzustellen ist,
stattdessen bestimmt der Window-Manager welches Fenster den Fokus
zu einem gegebenen Zeitpunkt erhält. Alle Window-Manager
stellen die Methode click-to-focus bereit, die
meisten stellen auch noch andere Methoden bereit.Verbreitete Methoden, den Fokus einzustellen, sind:focus-follows-mouseDen Fokus hat das Fenster, unter dem sich der
Mauszeiger befindet. Das muss nicht unbedingt das Fenster,
sein, das sich vorne befindet. Wird der Mauszeiger in ein
anderes Fenster bewegt, so erhält dieses Fenster den
Fokus, ohne das es angeklickt werden muss.sloppy-focusDiese Methode erweitert die Methode
focus-follows-mouse. Wenn die Maus mit
focus-follows-mouse aus dem Fenster auf die
Oberfläche bewegt wird, verliert das aktive Fenster
den Fokus. Da dann kein Fenster mehr den Fokus hat,
gehen alle Eingaben verloren. Die Methode
sloppy-focus wechselt
den Fokus nur, wenn sich der Mauszeiger in ein neues
Fenster bewegt und nicht, wenn er das aktive Fenster
verlässt.click-to-focusDas aktive Fenster wird durch einen Mausklick
festgelegt (dabei kann das Fenster vor alle anderen
Fenster gesetzt werden).
Alle Eingaben werden dann, unabhängig von der Position
des Mauszeigers, dem aktiven Fenster zugeordnet.Viele Window-Manager unterstützen noch andere Methoden,
so wie Abwandlungen der hier vorgestellten Methoden. Schauen Sie
sich dazu bitte die Hilfeseiten Ihres Window-Managers an.WidgetsDie X-Philosophie dehnt sich auch auf die Widgets aus, die von
den Anwendungen benutzt werden.Ein Widget bezeichnet Objekte, die
manipuliert werden können, wie
buttons (Schaltflächen),
check buttons (Mehrfachauswahlknopf),
radio buttons (Einfachauswahlknopf),
Icons und Auswahllisten. Unter µsoft.windows; werden Widgets
Controls genannt.µsoft.windows; und Apples &macos; geben strenge
Richtlinien für Widgets vor: Von den Entwicklern wird erwartet,
dass Sie Anwendungen mit einheitlichem Aussehen und einheitlicher
Bedienung (look and feel) entwickeln.
X gibt weder einen Stil noch Widgets vor, die benutzt werden
müssen.Erwarten Sie daher nicht, dass alle X-Anwendungen gleich
aussehen oder sich gleich bedienen lassen. Es gibt mehrere
verbreitete Widget-Sammlungen, beispielsweise die Athena-Widgets
vom MIT, &motif; (abgeschrägte
Ecken und drei Grautöne, danach wurden die Widgets von
µsoft.windows; entworfen) oder
OpenLook.Die meisten neuen X-Anwendungen benutzen heute modern
aussehende Widgets, wie Qt, das von KDE
benutzt wird oder GTK+, das von
GNOME benutzt wird. Damit wird eine
gewisse Einheitlichkeit in Bedienung und Aussehen erreicht, die
sicher neuen Benutzern die Arbeit erleichtert.X11 installierenUnter &os; läuft sowohl &xorg;
als auch &xfree86;. Ab
&os; 5.3-RELEASE wird standardmäßig
&xorg; verwendet.
&xorg; ist der von der
X.Org Foundation herausgegebene X-Server des Open-Source
X Window Systems. &xorg;
beruht auf &xfree86 4.4RC2 und
X11R6.6. Die X.Org Foundation gab X11R6.7 im April 2004
und X11R6.8.2 im Februar 2005 heraus. Die zuletzt genannte
Version befindet sich in der &os; Ports-Sammlung.Die nachstehenden Kommandos bauen und installieren
&xorg; aus der
Ports-Sammlung:&prompt.root; cd /usr/ports/x11/xorg
&prompt.root; make install cleanDer komplette Bau von &xorg;
benötigt mindestens 4 GB freien Plattenplatz.&xfree86; bauen und installieren
Sie aus der Ports-Sammlung wie folgt:&prompt.root; cd /usr/ports/x11/XFree86-4
&prompt.root; make install cleanMit &man.pkg.add.1; können Sie X11 direkt von
fertigen Paketen installieren. Wenn &man.pkg.add.1;
die Pakete herunterlädt, lassen Sie die Versionsnummer
aus. &man.pkg.add.1; holt automatisch die aktuelle
Version eines Pakets.Das &xorg;-Paket holen und
installieren Sie wie folgt:&prompt.root; pkg_add -r xorgUm das &xfree86; 4.X-Paket
zu installieren, rufen Sie das folgende Kommando auf:&prompt.root; pkg_add -r XFree86Die obigen Beispiele installieren die vollständige
X11-Distribution, die unter anderem Server, Clients
und Fonts enthält. Für die einzelnen Teile
der Distribution gibt es ebenfalls separate Pakete.Der Rest dieses Kapitels erklärt, wie Sie
X11 konfigurieren und sich eine Arbeitsumgebung einrichten.Von &xfree86; auf
&xorg; migrierenWie für jeden Port, entnehmen Sie Änderungen
der Datei /usr/ports/UPDATING.
In dieser Datei stehen Anweisungen wie Sie von
&xfree86; auf
&xorg; migrieren.Vor der Migration aktualisieren Sie bitte den
Ports-Baum mit CVSup.
Installieren Sie vor der Migration den Port
sysutils/portupgrade;
er wird von Migrationsprozedur benötigt.Damit Ihr System weiß, welches X11 benutzt
wird, fügen Sie in die Datei
/etc/make.conf die Variable
X_WINDOW_SYSTEM=xorg ein.
Die alte Variable XFREE86_VERSION
wurde durch die Variable X_WINDOW_SYSTEM
ersetzt.X11 migrieren Sie mit den nachstehenden Kommandos:&prompt.root; pkg_delete -f /var/db/pkg/imake-4* /var/db/pkg/XFree86-*
&prompt.root; cd /usr/ports/x11/xorg
&prompt.root; make install clean
&prompt.root; pkgdb -FDas Kommando &man.pkgdb.1; aktualisiert
Paketabhängigkeiten und ist Teil von
portupgrade.Der komplette Bau von &xorg;
benötigt mindestens 4 GB freien Plattenplatz.ChristopherShumwayBeigetragen von X11 konfigurieren&xfree86; 4.X&xfree86;&xorg;X11VorarbeitenBevor Sie X11 konfigurieren, benötigen
Sie folgende Informationen:die Spezifikationen des Monitorsden Chipset des Grafikadaptersdie Speichergröße des
GrafikadaptersSynchronisationsfrequenzhorizontaleSynchronisationsfrequenzvertikaleAus den Spezifikationen des Monitors ermittelt
X11 die Auflösung und die
Wiederholrate für den Betrieb des X-Servers. Die
Spezifikationen entnehmen Sie der Dokumentation des Monitors
oder der Webseite des Herstellers. Sie benötigen die
horizontale und die vertikale Synchronisationsfrequenz.Der Chipsatz der Grafikkarte bestimmt den Treiber,
den X11 verwendet. Die meisten Chipsätze werden
automatisch erkannt, Sie brauchen die Information jedoch,
wenn die Erkennung fehlschlägt.Die Speichergröße der Grafikkarte bestimmt die
maximal mögliche Auflösung und Farbtiefe.X11 konfigurierenX11 wird in mehreren Schritten konfiguriert.
Zuerst müssen Sie eine Vorgabe für die
Konfigurationsdatei erstellen. Setzen Sie dazu als
root den folgenden Befehl ab:&prompt.root; Xorg -configureFür &xfree86;
lautet der Befehl:&prompt.root; XFree86 -configureDie Vorgabe-Konfiguration wird dann unter dem Namen
xorg.conf.new im Verzeichnis
/root gespeichert (das verwendete
Verzeichnis wird durch die Umgebungsvariable $HOME
bestimmt und hängt davon ab, wie Sie zu
root gewechselt sind). Unter
&xfree86; heißt die
Konfigurationsdatei XF86Config.new.
X11 hat in diesem Schritt versucht, die Grafik-Hardware
des Systems zu erkennen und eine Konfigurationsdatei
ausgeschrieben, die zur Hardware passende Treiber lädt.Im nächsten Schritt wird geprüft, ob
&xorg; die Grafik-Hardware
des Systems verwenden kann. Setzen Sie dazu den
folgenden Befehl ab:&prompt.root; Xorg -config xorg.conf.newUnter &xfree86; benutzen
Sie den nachstehenden Befehl:&prompt.root; XFree86 -xf86config XF86Config.newWenn jetzt ein graues Raster und der X-Mauszeiger erscheinen,
war die Konfiguration erfolgreich. Beenden Sie den Test indem Sie
CtrlAltBackspace drücken.Wenn die Maus nicht funktioniert, prüfen Sie,
ob die Maus konfiguriert wurde. Die Mauskonfiguration
wird in beschrieben.X11 anpassenAls Nächstes passen Sie xorg.conf.new
(oder XF86Config.new) an. Öffnen
Sie die Datei in einem Editor, wie &man.emacs.1; oder
&man.ee.1; und fügen Sie die Synchronisationsfrequenzen
des Monitors ein. Die Frequenzen werden im Abschnitt
"Monitor" eingetragen:Section "Monitor"
Identifier "Monitor0"
VendorName "Monitor Vendor"
ModelName "Monitor Model"
HorizSync 30-107
VertRefresh 48-120
EndSectionUnter Umständen fehlen die Schlüsselwörter
HorizSync und VertRefresh,
die Sie dann nachtragen müssen. Geben Sie, wie im Beispiel
gezeigt, die horizontale Synchronisationsfrequenz hinter
HorizSync und die vertikale
Synchronisationsfrequenz hinter VertRefresh
an.X unterstützt die Energiesparfunktionen (DPMS,
Energy Star) Ihres Monitors. Mit &man.xset.1; können Sie
Zeitschranken für die DPMS-Modi standby,
suspend, off vorgeben, oder diese
zwingend aktivieren. Die DPMS-Funktionen können Sie mit der
nachstehenden Zeile im "Monitor"-Abschnitt
aktivieren:Option "DPMS"xorg.confXF86ConfigDie gewünschte Auflösung und Farbtiefe stellen Sie im
Abschnitt "Screen" ein:Section "Screen"
Identifier "Screen0"
Device "Card0"
Monitor "Monitor0"
DefaultDepth 24
SubSection "Display"
Viewport 0 0
Depth 24
Modes "1024x768"
EndSubSection
EndSectionMit DefaultDepth wird die
Farbtiefe des X-Servers vorgegeben. Mit der Option
-depth von &man.Xorg.1; (oder
&man.XFree86.1;) lässt sich die vorgegebene
Farbtiefe überschreiben. Modes
gibt die Auflösung für die angegebene
Farbtiefe an. Die Farbtiefe im Beispiel beträgt
24 Bits pro Pixel, die zugehörige Auflösung
ist 1024x768 Pixel. Beachten Sie, dass in der
Voreinstellung nur Standard-VESA-Modi der Grafikkarte
angegeben werden können.Sichern Sie die Konfigurationsdatei und testen Sie
die Konfiguration wie oben beschrieben.Bei der Fehlersuche sind Ihnen die Protokolle des
X11-Servers behilflich. In den Protokollen wird die
gefundene Graphik-Hardware protokolliert.
Die Protokolle von &xorg; heißen
/var/log/Xorg.0.log
(&xfree86; verwendet
XFree86.0.log).
Die Dateinamen enthalten eine laufende Nummer,
der Name variiert daher von Xorg.0.log
zu Xorg.8.log.Wenn alles funktioniert hat, installieren Sie
die Datei an einen Ort, an dem &man.Xorg.1; (oder
&man.XFree86.1;) sie findet. Normalerweise wird
die Konfigurationsdatei unter
/etc/X11/xorg.conf oder
/usr/X11R6/etc/X11/xorg.conf
gespeichert (&xfree86;
verwendet /etc/X11/XF86Config oder
/usr/X11R6/etc/X11/XF86Config):&prompt.root; cp xorg.conf.new /etc/X11/xorg.confUnter &xfree86;:&prompt.root; cp XF86Config.new /etc/X11/XF86ConfigDamit ist die X11-Konfiguration beendet. Wenn Sie
&xfree86; 4.X mit &man.startx.1;
starten wollen, müssen Sie noch den Port
x11/wrapper installieren.
Der Wrapper ist Teil von &xorg;,
daher müssen Sie den Port unter
&xorg; nicht installieren.
X11 können Sie auch mit &man.xdm.1; starten.Sie können X11 auch mit dem graphischen
Werkzeug &man.xorgcfg.1; (&man.xf86cfg.1; unter
&xfree86;) konfigurieren.
Mit den Werkzeugen können Sie Treiber auswählen
und Einstellungen vornehmen. Das Werkzeug kann auch
auf der Konsole benutzt werden, starten Sie es einfach
mit xorgcfg -textmode. Weiteres
erfahren Sie in den Hilfeseiten &man.xorgcfg.1;
und &man.xf86cfg.1;.Weiterhin gibt es noch das Werkzeug
&man.xorgconfig.1; (&man.xf86config.1; unter
&xfree86;). Dieses
Werkzeug ist schwerer zu handhaben, funktioniert
aber in Situationen, in denen die anderen Werkzeuge
nicht funktionieren.Spezielle KonfigurationenKonfiguration des &intel; i810 Graphics ChipsetsIntel i810 ChipsetDer &intel; i810 Chipset benötigt den Treiber
agpgart, die AGP-Schnittstelle
von X11. Der Treiber &man.agp.4; befindet sich seit
4.8-RELEASE und 5.0-RELEASE in der Vorgabekonfiguration
GENERIC. Wenn Sie eine frühere
&os;-Version benutzen, müssen Sie Ihre Kernelkonfiguration
um die nachstehende Zeile erweitern:device agpAnschließend müssen Sie einen neuen
Kernel bauen. Sie können beim Systemstart
das Modul agp.ko auch mit dem
&man.loader.8; aktivieren. Fügen Sie dazu
einfach die nachstehende Zeile in
/boot/loader.conf ein:agp_load="YES"Wenn Sie FreeBSD 4.X oder eine frühere Version
benutzen, müssen Sie noch die Gerätedateien im
Verzeichnis /dev erstellen:&prompt.root; cd /dev
&prompt.root; sh MAKEDEV agpgartWenn Sie FreeBSD 5.X oder eine neuere Version verwenden,
werden die Gerätedateien automatisch von &man.devfs.5;
angelegt. Lassen Sie dann diesen Schritt aus.Ab jetzt kann die Hardware wie jede andere Grafikkarte auch
konfiguriert werden. Der Treiber &man.agp.4; kann nicht
nachträglich mit &man.kldload.8; in einen laufenden
Kernel geladen werden. Er muss entweder fest im Kernel
eingebunden sein oder beim Systemstart über
/boot/loader.conf geladen werden.Ab &xfree86; 4.1.0 kann es
sein, dass Sie Meldungen über unresolved
symbols wie fbPictureInit
erhalten. Fügen Sie in diesem Fall die nachstehende Zeile
hinter Driver "i810" in die
X11-Konfigurationsdatei ein:Option "NoDDC"MurrayStokelyBeigetragen von Schriftarten in X11 benutzenType 1 SchriftartenDie Schriftarten, die mit X11
geliefert werden, eignen sich ganz und gar nicht für
Desktop-Publishing-Anwendungen. Große Schriftarten zeigen bei
Präsentationen deutliche Treppenstufen und die kleinen
Schriftarten in &netscape; sind fast
unleserlich. Es gibt allerdings mehrere hochwertige
Type 1 Schriftarten (&postscript;), die mit
X11 benutzt werden können.
Beispielsweise enthalten die URW-Schriftarten
(x11-fonts/urwfonts) hochwertige
Versionen gängiger Type 1 Schriftarten (zum Beispiel
Times Roman,
Helvetica,
Palatino).
Die Sammlung Freefonts (x11-fonts/freefonts) enthält
noch mehr Schriftarten, doch sind diese für den Einsatz
in Grafik-Programmen wie The Gimp
gedacht. Es fehlen auch einige Schriftarten, sodass sich
die Sammlung nicht für den alltäglichen Gebrauch
eignet. Weiterhin kann X11 leicht so konfiguriert werden,
dass es &truetype;-Schriftarten verwendet. Mehr dazu
erfahren Sie in der Hilfeseite &man.X.7; und im Abschnitt
&truetype; Schriftarten.Die Type 1 Schriftarten lassen sich aus der Ports-Sammlung wie
folgt installieren:&prompt.root; cd /usr/ports/x11-fonts/urwfonts
&prompt.root; make install cleanAnalog lassen sich Freefont und andere Sammlungen
installieren. Die neuen Schriftarten müssen Sie
in die Konfigurationsdatei des X-Servers im Verzeichnis
/etc/X11 eintragen.
Die Konfigurationsdatei von &xorg;
heißt xorg.conf, die von
&xfree86;XF86Config. Fügen Sie die
folgende Zeile hinzu:FontPath "/usr/X11R6/lib/X11/fonts/URW/"Sie können aber auch in der X-Sitzung das folgende
Kommando absetzen:&prompt.user; xset fp+ /usr/X11R6/lib/X11/fonts/URW
&prompt.user; xset fp rehashDann kennt der X-Server die neuen Schriftarten nur bis zum Ende
der Sitzung. Wenn die Änderung dauerhaft sein soll, müssen
Sie die Kommandos in ~/.xinitrc eintragen,
wenn Sie X mit startx starten, oder in
~/.xsession, wenn Sie
XDM benutzen. Sie können die
Schriftarten auch in die neue Datei
/usr/X11R6/etc/fonts/local.conf,
die im Abschnitt Anti-aliasing
beschrieben wird, eintragen.&truetype;-SchriftartenTrueType-SchriftartenSchriftartenTrueTypeSowohl &xfree86; 4.X
als auch &xorg; können
&truetype;-Schriftarten mithilfe von zwei Modulen
darstellen. Im folgenden Beispiel wird das Freetype-Modul
benutzt, da es besser mit anderen Werkzeugen, die
&truetype;-Schriftarten darstellen, übereinstimmt.
Das Freetype-Modul aktivieren Sie im Abschnitt
"Module" von /etc/X11/xorg.conf
oder /etc/X11/XF86Config durch
Einfügen der Zeile:Load "freetype"&xfree86; 3.3.X benötigt einen
gesonderten &truetype;-Schriftserver. Üblicherweise wird
dafür Xfstt verwendet, den Sie aus
dem Port x11-servers/Xfstt
installieren können.Erstellen Sie ein Verzeichnis für die
&truetype;-Schriftarten (z.B.
/usr/X11R6/lib/X11/fonts/TrueType)
und kopieren Sie alle Schriftarten dorthin. Die
Schriftarten müssen im &unix;/&ms-dos;/&windows;-Format
vorliegen, Schriftarten von einem &macintosh; können
Sie nicht direkt übernehmen. Die Schriftarten
müssen noch im Katalog fonts.dir
erfasst werden. Den Katalog erzeugen Sie mit dem Kommando
ttmkfdir aus dem Port
x11-fonts/ttmkfdir:&prompt.root; cd /usr/X11R6/lib/X11/fonts/TrueType
&prompt.root; ttmkfdir > fonts.dirGeben Sie dem System das &truetype;-Verzeichnis, wie im Abschnitt
Type 1 Schriftarten beschrieben,
bekannt:&prompt.user; xset fp+ /usr/X11R6/lib/X11/fonts/TrueType
&prompt.user; xset fp rehashOder fügen Sie eine FontPath-Zeile
in die Datei xorg.conf (oder
XF86Config) ein.Das war's. Jetzt sollten &netscape;,
Gimp, &staroffice;
und alle anderen X-Anwendungen die &truetype;-Schriftarten benutzen.
Extrem kleine Schriftarten (Webseiten, die mit hoher Auflösung
betrachtet werden) und sehr große Schriftarten (in
&staroffice;) sollten jetzt viel besser
aussehen.Joe MarcusClarkeAktualisiert von Anti-aliasingAnti-aliasingSchriftartenAnti-aliasingX11 beherrscht das
Anti-aliasing-Verfahren seit
&xfree86; 4.0.2.
Die Konfiguration der Schriftarten war vor
&xfree86; 4.3.0 ziemlich
schwierig. Ab &xfree86; 4.3.0
stehen alle Schriftarten
in /usr/X11R6/lib/X11/fonts/ und
~/.fonts/ automatisch für das
Anti-aliasing-Verfahren mit
Anwendungen, die Xft unterstützen, zur Verfügung.
Es gibt schon viele Anwendungen, die Xft unterstützen,
zum Beispiel: Qt 2.3 und höhere Versionen
(das KDE-Toolkit), GTK+ 2.0
und höhere Versionen (das
GNOME-Toolkit) sowie
Mozilla 1.2 und höhere Versionen.In der Datei /usr/X11R6/etc/fonts/local.conf
werden die Schriftarten, die mit dem Anti-aliasing-Verfahren
benutzt werden sollen und die Eigenschaften des Verfahrens
festgelegt. In diesem Abschnitt wird nur die grundlegende
Konfiguration von Xft beschrieben. Weitere Details entnehmen
Sie bitte der Hilfeseite &man.fonts-conf.5;.XMLDie Datei local.conf ist ein
XML-Dokument. Achten Sie beim
Editieren der Datei daher auf die richtige Groß- und
Kleinschreibung und darauf, dass alle Tags geschlossen
sind. Die Datei beginnt mit der üblichen XML-Deklaration
gefolgt von einer DOCTYPE-Definition und dem
<fontconfig>-Tag: <?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
Wie vorher erwähnt, stehen schon alle Schriftarten
in /usr/X11R6/lib/X11/fonts/ und
~/.fonts/ für Anwendungen, die
Xft unterstützen, zur Verfügung. Wenn Sie ein
Verzeichnis außerhalb dieser beiden Bäume
benutzen wollen, fügen Sie eine Zeile wie die
nachstehende zu
/usr/X11R6/etc/fonts/local.conf hinzu:<dir>/path/to/my/fonts</dir>Wenn Sie neue Schriftarten hinzugefügt haben,
müssen Sie den Schriftarten-Cache neu aufbauen:&prompt.root; fc-cache -fDas Anti-aliasing-Verfahren zeichnet Ränder leicht unscharf,
dadurch werden kleine Schriften besser lesbar und der
Treppenstufen-Effekt bei wird großen Schriften vermieden. Auf
normale Schriftgrößen sollte das Verfahren aber nicht
angewendet werden, da dies die Augen zu sehr anstrengt. Um
kleinere Schriftgrößen als 14 Punkt von dem
Verfahren auszunehmen, fügen Sie in
local.conf die nachstehenden Zeilen ein: <match target="font">
<test name="size" compare="less">
<double>14</double>
</test>
<edit name="antialias" mode="assign">
<bool>false</bool>
</edit>
</match>
<match target="font">
<test name="pixelsize" compare="less" qual="any">
<double>14</double>
</test>
<edit mode="assign" name="antialias">
<bool>false</bool>
</edit>
</match>SchriftartenAbständeDas Anti-aliasing-Verfahren kann die Abstände einiger
Fixschriften falsch darstellen, dies fällt besonders unter
KDE auf. Sie können das Problem
umgehen, indem Sie die Abstände dieser Schriften auf den Wert
100 festsetzen. Fügen Sie die nachstehenden
Zeilen hinzu: <match target="pattern" name="family">
<test qual="any" name="family">
<string>fixed</string>
</test>
<edit name="family" mode="assign">
<string>mono</string>
</edit>
</match>
<match target="pattern" name="family">
<test qual="any" name="family">
<string>console</string>
</test>
<edit name="family" mode="assign">
<string>mono</string>
</edit>
</match>Damit werden die Namen der gebräuchlichen Fixschriften auf
"mono" abgebildet. Für diese Schriften
setzen Sie dann den Abstand fest: <match target="pattern" name="family">
<test qual="any" name="family">
<string>mono</string>
</test>
<edit name="spacing" mode="assign">
<int>100</int>
</edit>
</match> Bestimmte Schriftarten, wie Helvetica, können
Probleme mit dem Anti-Aliasing-Verfahren verursachen.
In der Regel erscheinen diese Schriftarten dann vertikal
halbiert. Im schlimmsten Fall stürzen Anwendungen,
wie Mozilla, als Folge davon ab.
Sie vermeiden dies, indem Sie betroffene Schriftarten in
local.conf von dem Verfahren ausnehmen: <match target="pattern" name="family">
<test qual="any" name="family">
<string>Helvetica</string>
</test>
<edit name="family" mode="assign">
<string>sans-serif</string>
</edit>
</match> Wenn Sie local.conf editiert haben,
stellen Sie bitte sicher, dass die Datei mit dem Tag
</fontconfig> endet. Ist das
nicht der Fall, werden die Änderungen nicht
berücksichtigt.Die mit X11 gelieferten
Schriftarten eignen sich nicht besonders für das
Anti-Aliasing-Verfahren. Der Port x11-fonts/bitstream-vera
enthält viel besser geeignete Schriftarten. Wenn sie
noch nicht existiert, legt der Port die Datei
/usr/X11R6/etc/fonts/local.conf
an. Ansonsten erzeugt der Port die Datei
/usr/X11R6/etc/fonts/local.conf-vera,
deren Inhalt Sie in
/usr/X11R6/etc/fonts/local.conf
aufnehmen müssen. Danach werden die
X11-Schriftarten Serif, Sans Serif und Monospaced
durch die entsprechenden Bitstream-Schriftarten ersetzt.Benutzer können eigene Einstellungen in der
Datei ~/.fonts.conf vornehmen.
Achten Sie auch hier auf die richtige XML-Syntax.LCDSchriftartenauf einem LCDMit einem LCD können Sie
sub-pixel sampling anstelle von
Anti-aliasing einsetzen. Dieses Verfahren behandelt die horizontal
getrennten Rot-, Grün- und Blau-Komponenten eines Pixels
gesondert und verbessert damit (teilweise sehr wirksam) die
horizontale Auflösung. Die nachstehende Zeile in
local.conf aktiviert diese Funktion: <match target="font">
<test qual="all" name="rgba">
<const>unknown</const>
</test>
<edit name="rgba" mode="assign">
<const>rgb</const>
</edit>
</match>Abhängig von der Organisation Ihres Bildschirms
müssen Sie anstelle von
verwenden. Experimentieren Sie und
schauen Sie, was besser aussieht.Mozillaohne Anti-AliasingDer nächste Start des X-Servers aktiviert das
Anti-aliasing-Verfahren. Beachten Sie, dass die Anwendungen dieses
Verfahren auch benutzen müssen. Zurzeit wird das Verfahren
von Qt und damit von KDE benutzt
(Details finden Sie in ).
GTK+ und GNOME können das Verfahren mit dem
Font-capplet benutzen (Details entnehmen
Sie bitte ). Ab
der Version 1.2 benutzt Mozilla
automatisch das Anti-Aliasing Verfahren. Dies können
Sie verhindern, wenn Sie beim Übersetzen von
Mozilla die Option
-DWITHOUT_XFT angeben.SethKingsleyBeigetragen von Der X-Display-ManagerEinführungX-Display-ManagerDer X-Display-Manager
(XDM), eine optionale
Komponente des X-Window-Systems, verwaltet Sitzungen. Er kann mit
vielen Komponenten, wie minimal ausgestatteten X-Terminals,
Arbeitsplatz-Rechnern und leistungsfähigen Netzwerkservern,
nutzbringend eingesetzt werden. Da das X-Window-System
netzwerktransparent ist, gibt es zahlreiche
Möglichkeiten, X-Clients und X-Server auf unterschiedlichen
Rechnern im Netz laufen zu lassen. XDM
stellt eine grafische Anmeldemaske zur Verfügung, in der Sie
den Rechner, auf dem eine Sitzung laufen soll, auswählen
können und in der Sie die nötigen
Autorisierungs-Informationen, wie Benutzername und Passwort,
eingeben können.Die Funktion des X-Display-Managers lässt sich mit
der von &man.getty.8; (siehe )
vergleichen. Er meldet den Benutzer am ausgesuchten System an,
startet ein Programm (meist einen Window-Manager) und
wartet darauf, dass dieses Programm beendet wird, das heißt
der Benutzer die Sitzung beendet hat. Nachdem die Sitzung beendet
ist, zeigt XDM den grafischen
Anmeldebildschirm für den nächsten Benutzer an.XDM einrichtenDer XDM-Dæmon befindet sich in
/usr/X11R6/bin/xdm und kann jederzeit von
root gestartet werden. Er verwaltet dann den
X-Bildschirm des lokalen Rechners. XDM
lässt sich bequem mit einem Eintrag in
/etc/ttys (siehe )
bei jedem Start des Rechners aktivieren. In
/etc/ttys sollte schon der nachstehende
Eintrag vorhanden sein:ttyv8 "/usr/X11R6/bin/xdm -nodaemon" xterm off secureIn der Voreinstellung ist dieser Eintrag nicht aktiv. Um den
Eintrag zu aktivieren, ändern Sie den Wert in Feld 5 von
off zu on und starten Sie
&man.init.8; entsprechend der Anleitung in neu. Das erste Feld gibt den Namen des
Terminals an, auf dem das Programm läuft. Im Beispiel wird
ttyv8 verwendet, das heißt
XDM läuft auf dem neunten
virtuellen Terminal.XDM konfigurierenDas Verhalten und Aussehen von XDM
steuern Sie mit Konfigurationsdateien, die im Verzeichnis
/usr/X11R6/lib/X11/xdm stehen.
Üblicherweise finden Sie dort die folgenden Dateien vor:DateiBeschreibungXaccessRegelsatz, der zur Autorisierung von Clients benutzt
wird.XresourcesVorgabewerte für X-Ressourcen.XserversListe mit lokalen und entfernten Bildschirmen, die
verwaltet werden.XsessionVorgabe für das Startskript der
Sitzung.Xsetup_*Skript, das dazu dient, Anwendungen vor der Anmeldung
zu starten.xdm-configKonfiguration für alle auf der Maschine
verwalteten Bildschirme.xdm-errorsFehlermeldungen des Servers.xdm-pidDie Prozess-ID des gerade laufenden
XDM-Prozesses.Im Verzeichnis /usr/X11R6/lib/X11/xdm
befinden sich auch noch Skripten und Programme, die zum Einrichten
der XDM-Oberfläche dienen. Der
Zweck dieser Dateien und der Umgang mit ihnen wird in der
Hilfeseite &man.xdm.1; erklärt. Wir gehen im Folgenden nur
kurz auf ein paar der Dateien ein.Die vorgegebene Einstellung zeigt ein rechteckiges
Anmeldefenster, in dem der Rechnername in großer Schrift
steht. Darunter befinden sich die Eingabeaufforderungen
Login: und Password:.
Mit dieser Maske können Sie anfangen, wenn Sie das
Erscheinungsbild von XDM
verändern wollen.XaccessVerbindungen zu XDM werden mit
dem X Display Manager Connection Protocol
(XDMCP) hergestellt.
XDMCP-Verbindungen von entfernten Maschinen
werden über den Regelsatz in Xaccess
kontrolliert. In der Vorgabe sind alle Verbindungen erlaubt,
doch muss auch xdm-config geändert
werden, damit XDM Verbindungen
entfernter Maschinen annimmt.XresourcesIn dieser Datei kann das Erscheinungsbild der
Bildschirmauswahl und der Anmeldemasken festgelegt werden. Das
Format entspricht den Dateien im Verzeichnis
app-defaults, die in der
X11-Dokumentation beschrieben sind.XserversDiese Datei enthält eine Liste entfernter Maschinen, die
in der Bildschirmauswahl angeboten werden.XsessionDieses Skript wird vom XDM
aufgerufen, nachdem sich ein Benutzer erfolgreich angemeldet hat.
Üblicherweise besitzt jeder Benutzer eine angepasste Version
dieses Skripts in ~/.xsession, das dann
anstelle von Xsession ausgeführt
wird.Xsetup_*Diese Skripten werden automatisch ausgeführt bevor die
Bildschirmauswahl oder die Anmeldemasken angezeigt werden.
Für jeden lokalen Bildschirm gibt es ein Skript, dessen
Namen aus Xsetup_ gefolgt von der
Bildschirmnummer gebildet wird (zum Beispiel
Xsetup_0). Normalerweise werden damit ein
oder zwei Programme, wie xconsole, im
Hintergrund gestartet.xdm-configDiese Datei enthält Einstellungen, die für jeden
verwalteten Bildschirm zutreffen. Das Format entspricht dem der
Dateien aus app-defaults.xdm-errorsDie Ausgaben jedes X-Servers, den
XDM versucht zu starten, werden in
dieser Datei gesammelt. Wenn ein von
XDM verwalteter Bildschirm aus
unbekannten Gründen hängen bleibt, sollten Sie in
dieser Datei nach Fehlermeldungen suchen. Für jede Sitzung
werden die Meldungen auch in die Datei
~/.xsession-errors des Benutzers
geschrieben.Einrichten eines Bildschirm-Servers auf dem NetzwerkDamit sich Clients mit dem Bildschirm-Server verbinden
können, muss der Zugriffsregelsatz editiert werden und der
Listener aktiviert werden. Die Vorgabewerte sind sehr
restriktiv eingestellt. Damit XDM
Verbindungen annimmt, kommentieren Sie eine Zeile in der
xdm-config Datei aus:! SECURITY: do not listen for XDMCP or Chooser requests
! Comment out this line if you want to manage X terminals with xdm
DisplayManager.requestPort: 0Starten Sie danach XDM neu.
Beachten Sie, dass Kommentare in den
Ressourcen-Konfigurationsdateien mit einem !
anstelle des sonst üblichen Zeichens #
beginnen. Wenn Sie strengere Zugriffskontrollen einrichten wollen,
sehen Sie sich die Beispiele in Xaccess und
die Hilfeseite &man.xdm.1; an.XDM ersetzenEs gibt mehrere Anwendungen, die
XDM ersetzen können, zum Beispiel
kdm, der Teil von
KDE ist und später in diesem
Kapitel besprochen wird. kdm ist
ansprechender gestaltet und bietet neben einigen Schnörkeln
die Möglichkeit, den zu verwendenden Window-Manager bei der
Anmeldung auszuwählen.ValentinoVaschettoBeigetragen von Grafische OberflächenDieser Abschnitt beschreibt verschiedene grafische
Oberflächen, die es für X unter FreeBSD gibt. Eine
Oberfläche (desktop environment)
kann alles von einem einfachen Window-Manager bis hin zu kompletten
Anwendungen wie KDE oder
GNOME sein.GNOMEÜber GNOMEGNOMEGNOME ist eine benutzerfreundliche
Oberfläche, mit der Rechner leicht benutzt und konfiguriert
werden können. GNOME besitzt
eine Leiste, mit der Anwendungen gestartet werden und die
Statusinformationen anzeigen kann. Programme und Daten
können auf der Oberfläche abgelegt werden und
Standardwerkzeuge stehen zur Verfügung. Es gibt
Konventionen, die es Anwendungen leicht machen,
zusammenzuarbeiten und ein konsistentes Erscheinungsbild
garantieren. Benutzer anderer Betriebssysteme oder anderer
Arbeitsumgebungen sollten mit der leistungsfähigen
grafischen Oberfläche von GNOME
sehr gut zurechtkommen. Auf der Webseite
FreeBSD GNOME
Project finden Sie weitere Informationen über
GNOME auf FreeBSD. Zusätzlich finden Sie dort
umfassende FAQs zur Installation, Konfiguration und zum
Betrieb von GNOME.GNOME installierenAm einfachsten installieren Sie GNOME
während der Installation des FreeBSD-Systems wie in
beschrieben. Es ist aber ebenfalls leicht möglich,
GNOME als Paket oder über die
Ports-Sammlung zu installieren.Wenn Sie das GNOME-Paket über
das Netz installieren wollen, setzen Sie den nachstehenden Befehl
ab:&prompt.root; pkg_add -r gnome2Wenn Sie den Quellcode von GNOME
übersetzen wollen, benutzen Sie die Ports-Sammlung:&prompt.root; cd /usr/ports/x11/gnome2
&prompt.root; make install cleanNachdem GNOME installiert ist,
muss der X-Server GNOME anstelle eines
Window-Managers starten.Der einfachste Weg, GNOME zu
starten, ist GDM, der GNOME Display
Manager. GDM, das als Teil des
GNOME-Desktops installiert (aber in
der Voreinstellung deaktiviert) wird, kann durch das
Einfügen von gdm_enable="YES" in
/etc/rc.conf beim Systemstart aktiviert
werden. Nach einem Systemneustart wird
GNOME nach dem Anmelden automatisch
gestartet.GNOME kann auch von der
Kommandozeile gestartet werden, wenn Sie eine entsprechend
konfigurierte .xinitrc in Ihrem
Heimatverzeichnis besitzen. Existiert eine solche Version,
ersetzen Sie den Aufruf des Window-Managers durch
/usr/X11R6/bin/gnome-session. Wenn
.xinitrc nicht gesondert angepasst wurde,
reicht es, den nachstehenden Befehl abzusetzen:&prompt.user; echo "/usr/X11R6/bin/gnome-session" > ~/.xinitrcRufen Sie danach startx auf, um die
GNOME Oberfläche zu starten.Wenn Sie einen älteren Display-Manager wie
XDM verwenden, müssen Sie
anders vorgehen. Legen Sie eine ausführbare
.xsession an, die das Kommando
zum Start von GNOME enthält.
Ersetzen Sie dazu den Start des Window-Managers durch
/usr/X11R6/bin/gnome-session:&prompt.user; echo "#!/bin/sh" > ~/.xsession
&prompt.user; echo "/usr/X11R6/bin/gnome-session" >> ~/.xsession
&prompt.user; chmod +x ~/.xsessionSie können den Display-Manager auch so konfigurieren,
dass der Window-Manager beim Anmelden gewählt werden kann. Im
Abschnitt Details zu KDE
wird das für kdm, den
Display-Manager von KDE
erklärt.Anti-aliasing-Verfahren mit GNOMEGNOMEAnti-Aliasing-VerfahrenDie RENDER-Erweiterung von X11
setzt das Anti-Aliasing-Verfahren um.
GTK+ 2.0 (das GNOME-Toolkit) und spätere Versionen
benutzen dieses Verfahren. Die Konfiguration des
Verfahrens ist in beschrieben.
Aktivieren Sie Anti-Aliasing im Menü
ApplicationsDesktop PreferencesFont. Dort wählen
Sie dann eine der Möglichkeiten
Best shapes,
Best contrast oder
Subpixel smoothing (LCDs).
Für GTK+-Anwendungen, die nicht Teil von
GNOME sind, setzen Sie
die Umgebungsvariable GDK_USE_XFT
vor dem Start der Anwendung auf den Wert
1.KDEÜber KDEKDEKDE ist eine moderne, leicht zu
benutzende Oberfläche, die unter anderem Folgendes
bietet:eine schöne und moderne Oberfläche,eine Oberfläche, die völlig netzwerktransparent
ist,ein integriertes Hilfesystem, das bequem und konsistent
Hilfestellungen bezüglich der Bedienung
der KDE-Oberfläche und
ihrer Anwendungen gibt,ein konstantes Erscheinungsbild (look and
feel) aller
KDE-Anwendungen,einheitliche Menüs, Werkzeugleisten,
Tastenkombinationen und Farbschemata,Internationalisierung: KDE
ist in mehr als 40 Sprachen erhältlich,durch Dialoge gesteuerte zentrale Konfiguration der
Oberfläche,viele nützliche
KDE-Anwendungen.In KDE ist ein Office-Paket
integriert, das die KParts-Technik benutzt. Das
Paket enthält neben anderem eine Tabellenkalkulation, ein
Präsentationsprogramm, einen Terminkalender und einen
News-Client. Ein Webbrowser mit Namen
Konqueror, der sich mit anderen
Webbrowsern von &unix; Systemen messen kann, ist ebenfalls
Bestandteil von KDE. Weitere
Informationen über KDE erhalten
Sie auf den KDE-Webseiten. Auf der
Webseite FreeBSD-KDE
team finden Sie weitere FreeBSD-spezifische
Informationen über KDE.KDE installierenAm einfachsten installieren Sie KDE,
wie jede andere grafische Oberfläche auch, während der
Installation des FreeBSD-Systems wie in
beschrieben. Die Anwendung kann natürlich auch als Paket
oder über die Ports-Sammlung installiert werden.Um KDE über das Netz zu
installieren, setzen Sie den nachstehenden Befehl ab:&prompt.root; pkg_add -r kde&man.pkg.add.1; installiert automatisch die neuste
Version einer Anwendung.Benutzen Sie die Ports-Sammlung, wenn Sie den Quellcode von
KDE übersetzen wollen:&prompt.root; cd /usr/ports/x11/kde3
&prompt.root; make install cleanNachdem KDE installiert ist, muss
der X-Server KDE anstelle eines
Window-Managers starten. Legen Sie dazu die Datei
.xinitrc an:&prompt.user; echo "exec startkde" > ~/.xinitrcWenn das X-Window-System danach mit startx
gestartet wird, erscheint die
KDE-Oberfläche.Wird ein Display-Manager wie XDM
benutzt, muss .xsession angepasst werden.
Eine Anleitung für kdm folgt
gleich in diesem Kapitel.Details zu KDEWenn KDE erst einmal installiert
ist, erschließen sich die meisten Sachen durch das
Hilfesystem oder durch Ausprobieren. Benutzer von Windows oder
&macos; werden sich sehr schnell zurecht finden.Die beste Referenz für KDE
ist die Online-Dokumentation. KDE
besitzt einen eigenen Webbrowser, sehr viele nützliche
Anwendungen und ausführliche Dokumentation. Der Rest dieses
Abschnitts beschäftigt sich daher mit Dingen, die schlecht
durch einfaches Ausprobieren erlernbar sind.Der KDE-Display-ManagerKDEDisplay-ManagerDer Administrator eines Mehrbenutzersystems will den
Benutzern vielleicht eine grafische Anmeldung wie mit
XDM ermöglichen.
KDE besitzt einen
eigenen Display-Manager, der schöner aussieht und auch
über mehr Optionen verfügt. Insbesondere können
sich die Benutzer die Oberfläche für die Sitzung
(beispielsweise KDE oder
GNOME) aussuchen.Starten Sie das KDE
Kontrollzentrum, kcontrol, als
root. Lassen Sie bitte nicht die gesamte
X-Umgebung unter root laufen, dies ist sehr
unsicher. Öffnen Sie stattdessen als normaler Benutzer ein
Terminalfenster (zum Beispiel einen xterm
oder die konsole von
KDE) und wechseln Sie darin mit
su zu root (dazu muss der
Benutzer der Gruppe wheel angehören).
Rufen Sie dann kcontrol auf, um das
Kontrollzentrum zu starten.Klicken Sie auf das Icon System und
dann auf Login manager. Auf der rechten
Seite befinden sich verschiedene Optionen, die alle
ausführlich im KDE-Handbuch
beschrieben werden. Klicken Sie auf
sessions und dann auf
New type. Jetzt können Sie Namen
für Window-Manager oder grafische Oberflächen eingeben.
Die Namen müssen nicht mit den zu startenden Programmen
übereinstimmen, so dass Sie KDE
anstelle von startkde oder
GNOME anstelle von
gnome-session eingeben
können. Legen Sie bitte auch eine Sitzung mit dem Namen
failsafe an.Sehen Sie sich auch die anderen Menüs an. Wenn Sie
fertig sind, klicken Sie Apply und beenden
Sie das Kontrollzentrum.Damit kdm mit den vergebenen
Namen (KDE,
GNOME) etwas anfangen kann, editieren
Sie die Dateien, die von XDM benutzt
werden.
Ab KDE 2.2 benutzt
kdm eigene Konfigurationsdateien.
Schauen Sie die Einzelheiten bitte in der
KDE 2.2-Dokumentation nach.
Wechseln Sie in einem Terminalfenster zu root
und editieren Sie die Datei
/usr/X11R6/lib/X11/xdm/Xsession.
Ungefähr in der Mitte Datei finden Sie einen Abschnitt wie
den folgenden:case $# in
1)
case $1 in
failsafe)
exec xterm -geometry 80x24-0-0
;;
esac
esacFür die vergebenen Namen müssen nun einige Zeilen
hinzugefügt werden. Wenn Sie KDE und
GNOME verwendet haben, sollte der Abschnitt wie
folgt aussehen:case $# in
1)
case $1 in
kde)
exec /usr/local/bin/startkde
;;
GNOME)
exec /usr/X11R6/bin/gnome-session
;;
failsafe)
exec xterm -geometry 80x24-0-0
;;
esac
esacWenn Sie den KDE-Hintergrund schon
während der Anmeldung benutzen wollen, fügen Sie die
nachstehende Zeile in
/usr/X11R6/lib/X11/xdm/Xsetup_0 ein:/usr/local/bin/krootimageDamit kdm beim nächsten
Systemstart gestartet wird, muss ein entsprechender Eintrag in
/etc/ttys vorhanden sein. Folgen Sie dazu
den Anweisungen aus dem Abschnitt über
XDM und ersetzen Sie alle Bezüge auf
/usr/X11R6/bin/xdm durch
/usr/local/bin/kdm.Anti-aliasing-Verfahren mit KDEKDEAnti-Aliasing-VerfahrenDie RENDER-Erweiterung von X11
setzt das Anti-Aliasing-Verfahren um.
Die Erweiterung wird ab der Version 2.3 von Qt, dem
KDE-Toolkit, benutzt. In
wird beschrieben wie das
Anti-aliasing-Verfahren eingerichtet wird. Im KDE-Menü
wählen Sie
PreferencesLook and FeelFonts. Klicken Sie dann in das
Kontrollkästchen Use Anti-Aliasing for Fonts and
Icons. Für nicht zu
KDE gehörende Qt-Anwendungen
muss die Umgebungsvariable QT_XFT vor dem Start
der Anwendung auf true gesetzt werden.XFceÜber XFceXFce ist eine grafische
Oberfläche, die auf den GTK+-Bibliotheken, die auch von
GNOME benutzt werden, beruht. Die
Oberfläche ist allerdings weniger aufwändig und
für diejenigen gedacht, die eine schlichte und effiziente
Oberfläche wollen, die dennoch einfach zu benutzen
und zu konfigurieren ist. Die Oberfläche sieht
ähnlich wie CDE aus, das in
kommerziellen &unix; Systemen verwendet wird. Einige Merkmale
von XFce sind:eine schlichte einfach zu benutzende
Oberfläche,vollständig mit Mausoperationen konfigurierbar,
Unterstützung von drag and
drop,ähnliche Hauptleiste wie
CDE, die Menüs enthält
und über die Anwendungen gestartet werden
können,integrierter Window-Manager, Datei-Manager und
Sound-Manager,
GNOME-compliance-Modul,mit Themes anpassbar (da
GTK+ benutzt wird),schnell, leicht und effizient: ideal für ältere
oder langsamere Maschinen oder Maschinen mit wenig
Speicher.Weitere Information über
XFce erhalten Sie auf der
XFce-Webseite.XFce installierenDas XFce-Paket installieren Sie
mit dem nachstehenden Kommando:&prompt.root; pkg_add -r xfce4Mit der Ports-Sammlung können Sie auch den Quellcode
übersetzen:&prompt.root; cd /usr/ports/x11-wm/xfce4
&prompt.root; make install cleanDamit beim nächsten Start des X-Servers
XFce benutzt wird, setzen Sie das
folgende Kommando ab:&prompt.user; echo "/usr/X11R6/bin/startxfce4" > ~/.xinitrcWenn Sie einen Display-Manager benutzen, erstellen Sie die
Datei .xsession, wie im GNOME Abschnitt beschrieben.
Verwenden Sie jetzt allerdings das Kommando
/usr/X11R6/bin/startxfce4. Sie können
auch den Display-Manager wie im kdm Abschnitt beschrieben, so
konfigurieren, dass die Oberfläche für die Sitzung
ausgewählt werden kann.