diff --git a/de_DE.ISO8859-1/books/handbook/advanced-networking/chapter.sgml b/de_DE.ISO8859-1/books/handbook/advanced-networking/chapter.sgml index 761442e325..4220b159e8 100644 --- a/de_DE.ISO8859-1/books/handbook/advanced-networking/chapter.sgml +++ b/de_DE.ISO8859-1/books/handbook/advanced-networking/chapter.sgml @@ -1,5012 +1,5012 @@ Johann Kois Übersetzt von Weiterführende Netzwerkthemen Übersicht Dieses Kapitel beschreibt einige der häufiger verwendeten Netzwerkdienste auf UNIX-Systemen. Es wird beschrieben, wie die von FreeBSD verwendeten Netzwerkdienste installiert, getestet und gewartet werden. Zusätzlich sind im ganzen Kapitel Beispielkonfigurationsdateien vorhanden, von denen Sie sicherlich profitieren werden. Nachdem Sie dieses Kapitel gelesen haben, werden Sie Die Grundlagen von Gateways und Routen kennen. Eine Bridge unter FreeBSD einrichten können. Ein Netzwerkdateisystem (NFS) einrichten können. Einen plattenlosen Rechner über das Netzwerk starten können. Einen Netzwerkinformationsserver (NIS) für gemeinsame Benutzerkonten einrichten können. Automatische Netzwerkeinstellungen mittels DHCP vornehmen können. Einen Domain Name Server (DNS) einrichten können. Unter Verwendung des NTP-Protokolls Uhrzeit und Datum synchronisieren, sowie einen Zeitserver einrichten können. Wissen, wie man NAT (Network Address Translation) einrichtet. In der Lage sein, den inetd-Daemon einzurichten. Zwei Computer über PLIP verbinden können. IPv6 auf einem FreeBSD-Rechner einrichten können. Bevor Sie dieses Kapitel lesen, sollten Sie Die Grundlagen der /etc/rc-Skripte verstanden haben. Mit der grundlegenden Netzwerkterminologie vertraut sein. Coranth Gryphon Beigetragen von Gateways und Routen Routing Gateway Subnetz Damit ein Rechner einen anderen über ein Netzwerk finden kann, muss ein Mechanismus vorhanden sein, der beschreibt, wie man von einem Rechner zum anderen gelangt. Dieser Vorgang wird als Routing bezeichnet. Eine Route besteht aus einem definierten Adressenpaar: Einem Ziel und einem Gateway. Dieses Paar zeigt an, dass Sie über den Gateway zum Ziel gelangen wollen. Es gibt drei Arten von Zielen: Einzelne Rechner (Hosts), Subnetze und das Standardziel. Die Standardroute wird verwendet, wenn keine andere Route zutrifft. Wir werden Standardrouten später etwas genauer behandeln. Außerdem gibt es drei Arten von Gateways: Einzelne Rechner (Hosts), Schnittstellen (Interfaces, auch als Links bezeichnet), sowie Ethernet Hardware-Adressen (MAC Adressen). Ein Beispiel Um die verschiedenen Aspekte des Routings zu veranschaulichen, verwenden wir folgende Ausgaben von netstat: &prompt.user; netstat -r Routing tables Destination Gateway Flags Refs Use Netif Expire default outside-gw UGSc 37 418 ppp0 localhost localhost UH 0 181 lo0 test0 0:e0:b5:36:cf:4f UHLW 5 63288 ed0 77 10.20.30.255 link#1 UHLW 1 2421 example.com link#1 UC 0 0 host1 0:e0:a8:37:8:1e UHLW 3 4601 lo0 host2 0:e0:a8:37:8:1e UHLW 0 5 lo0 => host2.example.com link#1 UC 0 0 224 link#1 UC 0 0 Default-Route Standardroute Die ersten zwei Zeilen geben die Standardroute (die wir im nächsten Abschnitt behandeln), sowie die localhost Route an. Loopback-Gerät Das in der Routingtabelle für localhost festgelegte Interface (Netif-Spalte) lo0, ist auch als loopback-Gerät (Prüfschleife) bekannt. Das heißt, dass der ganze Datenverkehr für dieses Ziel intern (innerhalb des Gerätes) bleibt, anstatt ihn über ein Netzwerk (LAN) zu versenden, da das Ziel dem Start entspricht. Ethernet MAC-Adresse Der nächste auffällige Punkt sind die mit 0:e0: beginnenden Adressen. Es handelt sich dabei um Ethernet Hardwareadressen, die auch als MAC-Adressen bekannt sind. FreeBSD identifiziert Rechner im lokalen Netz automatisch (im Beispiel test0) und fügt eine direkte Route zu diesem Rechner hinzu. Dies passiert über die Ethernet Schnittstelle ed0. Außerdem existiert ein Timeout (in der Spalte Expire) für diese Art von Routen, der verwendet wird, wenn dieser Rechner in einem definierten Zeitraum nicht reagiert. Wenn dies passiert, wird die Route zu diesem Rechner automatisch gelöscht. Rechner im lokalen Netz werden durch einen als RIP (Routing Information Protocol) bezeichneten Mechanismus identifiziert, der den kürzesten Weg zu den jeweiligen Rechnern bestimmt. Subnetz FreeBSD fügt außerdem Subnetzrouten für das lokale Subnetz hinzu (10.20.30.255 ist die Broadcast-Adresse für das Subnetz 10.20.30, example.com ist der zu diesem Subnetz gehörige Domainname). Das Ziel link#1 bezieht sich auf die erste Ethernet-Karte im Rechner. Sie können auch feststellen, dass keine zusätzlichen Schnittstellen angegeben sind. Routen für Rechner im lokalen Netz und lokale Subnetze werden automatisch durch den routed Daemon konfiguriert. Ist dieser nicht gestartet, sind nur statisch definierte (explizit eingegebene) Routen vorhanden. Die Zeile host1 bezieht sich auf unseren Rechner, der durch seine Ethernetadresse bekannt ist. Da unser Rechner der Sender ist, verwendet FreeBSD automatisch das Loopback-Gerät (lo0), anstatt den Datenverkehr über die Ethernetschnittstelle zu senden. Die zwei host2 Zeilen sind ein Beispiel dafür, was passiert, wenn wir ein &man.ifconfig.8; Alias verwenden (Lesen Sie dazu den Abschnitt über Ethernet, wenn Sie wissen wollen, warum wir das tun sollten.). Das Symbol => (nach der lo0 Schnittstelle) sagt aus, dass wir nicht nur das Loopbackgerät verwenden (da sich die Adresse auf den lokalen Rechner bezieht), sondern dass es sich zusätzlich auch um ein Alias handelt. Solche Routen sind nur auf Rechnern vorhanden, die den Alias bereitstellen; alle anderen Rechner im lokalen Netz haben für solche Routen nur eine einfache link#1 Zeile. Die letzte Zeile (Ziel Subnetz 224) behandelt das Multicasting, das wir in einem anderen Abschnitt besprechen werden. Schließlich gibt es für Routen noch verschiedene Attribute, die Sie in der Spalte Flags finden. Nachfolgend finden Sie eine kurze Übersicht von einigen dieser Flags und ihrer Bedeutung: U Up: Die Route ist aktiv. H Host: Das Ziel der Route ist ein einzelner Rechner (Host). G Gateway: Alle Daten, die an dieses Ziel gesendet werden, werden von diesem System an ihr jeweiliges Ziel weitergeleitet. S Static: Diese Route wurde manuell konfiguriert, das heißt sie wurde nicht automatisch vom System erzeugt. C Clone: Erzeugt eine neue Route, basierend auf der Route für den Rechner, mit dem wir uns verbinden. Diese Routenart wird normalerweise für lokale Netzwerke verwendet. W WasCloned: Eine Route, die automatisch konfiguriert wurde. Sie basiert auf einer lokalen Netzwerkroute (Clone). L Link: Die Route beinhaltet einen Verweis auf eine Ethernetkarte (MAC-Adresse). Standardrouten Default-Route Standardroute Wenn sich der lokale Rechner mit einem entfernten Rechner verbinden will, wird die Routingtabelle überprüft, um festzustellen, ob bereits ein bekannter Pfad vorhanden ist. Gehört dieser entfernte Rechner zu einem Subnetz, dessen Pfad uns bereits bekannt ist (Cloned route), dann versucht der lokale Rechner über diese Schnittstelle eine Verbindung herzustellen. Wenn alle bekannten Pfade nicht funktionieren, hat der lokale Rechner eine letzte Möglichkeit: Die Standardroute (Default-Route). Bei dieser Route handelt es sich um eine spezielle Gateway-Route (gewöhnlich die einzige im System vorhandene), die im Flags-Feld immer mit C gekennzeichnet ist. Für Rechner im lokalen Netzwerk ist dieser Gateway auf welcher Rechner auch immer eine Verbindung nach außen hat gesetzt (entweder über eine PPP-Verbindung, DSL, ein Kabelmodem, T1 oder eine beliebige andere Netzwerkverbindung). Wenn Sie die Standardroute für einen Rechner konfigurieren, der selbst als Gateway zur Außenwelt funktioniert, wird die Standardroute zum Gateway-Rechner Ihres Internetanbieter (ISP) gesetzt. Sehen wir uns ein Beispiel für Standardrouten an. So sieht eine übliche Konfiguration aus: [Local2] <--ether--> [Local1] <--PPP--> [ISP-Serv] <--ether--> [T1-GW] Die Rechner Local1 und Local2 befinden sich auf Ihrer Seite. Local1 ist mit einem ISP über eine PPP-Verbindung verbunden. Dieser PPP-Server ist über ein lokales Netzwerk mit einem anderen Gateway-Rechner verbunden, der über eine Schnittstelle die Verbindung des ISP zum Internet herstellt. Die Standardrouten für Ihre Maschinen lauten: Host Standard Gateway Schnittstelle Local2 Local1 Ethernet Local1 T1-GW PPP Eine häufig gestellte Frage lautet: Warum (oder wie) sollten wir T1-GW als Standard-Gateway für Local1 setzen, statt den (direkt verbundenen) ISP-Server zu verwenden?. Bedenken Sie, dass die PPP-Schnittstelle für die Verbindung eine Adresse des lokalen Netzes des ISP verwendet. Daher werden Routen für alle anderen Rechner im lokalen Netz des ISP automatisch erzeugt. Daraus folgt, dass Sie bereits wissen, wie Sie T1-GW erreichen können! Es ist also unnötig, einen Zwischenschritt über den ISP-Server zu machen. Es ist üblich, die Adresse X.X.X.1 als Gateway-Adresse für ihr lokales Netzwerk zu verwenden. Für unser Beispiel bedeutet dies Folgendes: Wenn Ihr lokaler Klasse-C-Adressraum 10.20.30 ist und Ihr ISP 10.9.9 verwendet, sehen die Standardrouten so aus: Rechner (Host) Standardroute Local2 (10.20.30.2) Local1 (10.20.30.1) Local1 (10.20.30.1, 10.9.9.30) T1-GW (10.9.9.1) Rechner mit zwei Heimatnetzen Dual-Homed-Hosts Es gibt noch eine Konfigurationsmöglichkeit, die wir besprechen sollten, und zwar Rechner, die sich in zwei Netzwerken befinden. Technisch gesehen, zählt jeder als Gateway arbeitende Rechner zu den Rechnern mit zwei Heimatnetzen (im obigen Beispiel unter Verwendung einer PPP-Verbindung). In der Praxis meint man damit allerdings nur Rechner, die sich in zwei lokalen Netzen befinden. Entweder verfügt der Rechner über zwei Ethernetkarten und jede dieser Karten hat eine Adresse in einem separaten Subnetz, oder der Rechner hat nur eine Ethernetkarte und verwendet &man.ifconfig.8; Aliasing. Die erste Möglichkeit wird verwendet, wenn zwei physikalisch getrennte Ethernet-Netzwerke vorhanden sind, die zweite, wenn es nur ein physikalisches Ethernet-Netzwerk gibt, das aber aus zwei logisch getrennten Subnetzen besteht. In beiden Fällen werden Routingtabellen erstellt, damit jedes Subnetz weiß, dass dieser Rechner als Gateway zum anderen Subnetz arbeitet (inbound route). Diese Konfiguration (der Gateway-Rechner arbeitet als Router zwischen den Subnetzen) wird häufig verwendet, wenn es darum geht, Paketfilterung oder eine Firewall (in eine oder beide Richtungen) zu implementieren. Wenn Sie möchten, dass dieser Rechner Pakete zwischen den beiden Schnittstellen weiterleitet, müssen Sie diese Funktion manuell konfigurieren und aktivieren. Einen Router konfigurieren Router Ein Netzwerkrouter ist einfach ein System, das Pakete von einer Schnittstelle zur anderen weiterleitet. Internetstandards und gute Ingenieurspraxis sorgten dafür, dass diese Funktion in FreeBSD per Voreinstellung deaktiviert ist. Sie können diese Funktion aktivieren, indem Sie in &man.rc.conf.5; folgende Änderung durchführen: gateway_enable=YES # Auf YES setzen, wenn der Rechner als Gateway arbeiten soll Diese Option setzt die &man.sysctl.8;-Variable net.inet.ip.forwarding auf 1. Wenn Sie das Routing kurzzeitig unterbrechen wollen, können Sie die Variable auf 0 setzen. BGP RIP OSPF Ihr neuer Router benötigt nun noch Routen, um zu wissen, wohin er den Verkehr senden soll. Haben Sie ein (sehr) einfaches Netzwerk, können Sie statische Routen verwenden. FreeBSD verfügt über den Standard BSD-Routing-Daemon &man.routed.8;, der RIP (sowohl Version 1 als auch Version 2) und IRDP versteht. BGP v4, OSPF v2 und andere Protokolle werden von net/zebra unterstützt. Es stehen auch kommerzielle Produkte wie gated zur Verfügung. Selbst wenn FreeBSD auf diese Art konfiguriert wurde, entspricht es den Standardanforderungen an Internet-Router nicht vollständig. Für den normalen Gebrauch kommt es den Standards aber nahe genug. Verteilung von Routing-Informationen routing propagation Wir haben bereits darüber gesprochen, wie wir unsere Routen zur Außenwelt definieren, aber nicht darüber, wie die Außenwelt uns finden kann. Wir wissen bereits, dass Routing-Tabellen so erstellt werden können, dass sämtlicher Verkehr für einen bestimmten Adressraum (in unserem Beispiel ein Klasse-C-Subnetz) zu einem bestimmten Rechner in diesem Netzwerk gesendet wird, der die eingehenden Pakete im Subnetz verteilt. Wenn Sie einen Adressraum für Ihre Seite zugewiesen bekommen, richtet Ihr Diensteanbieter seine Routingtabellen so ein, dass der ganze Verkehr für Ihr Subnetz entlang Ihrer PPP-Verbindung zu Ihrer Seite gesendet wird. Aber woher wissen die Seiten in der Außenwelt, dass sie die Daten an Ihren ISP senden sollen? Es gibt ein System (ähnlich dem verbreiteten DNS), das alle zugewiesenen Adressräume verwaltet und ihre Verbindung zum Internet-Backbone definiert und dokumentiert. Der Backbone ist das Netz aus Hauptverbindungen, die den Internetverkehr in der ganzen Welt transportieren und verteilen. Jeder Backbone-Rechner verfügt über eine Kopie von Haupttabellen, die den Verkehr für ein bestimmtes Netzwerk über hierarchisch vom Backbone über eine Kette von Diensteanbietern bis hin zu Ihrer Seite leiten. Es ist die Aufgabe Ihres Diensteanbieters, den Backbone-Seiten mitzuteilen, dass sie mit Ihrer Seite verbunden wurden. Durch diese Mitteilung der Route ist nun auch der Weg zu Ihnen bekannt. Dieser Vorgang wird als Bekanntmachung von Routen (routing propagation) bezeichnet. Problembehebung traceroute Manchmal kommt es zu Problemen bei der Bekanntmachung von Routen, und einige Seiten sind nicht in der Lage, Sie zu erreichen. Vielleicht der nützlichste Befehl, um festzustellen, wo das Routing nicht funktioniert, ist &man.traceroute.8;. Er ist außerdem sehr nützlich, wenn Sie einen entfernten Rechner nicht erreichen können (sehen Sie dazu auch &man.ping.8;). &man.traceroute.8; wird mit dem zu erreichenden Rechner (Host) ausgeführt. Angezeigt werden die Gateway-Rechner entlang des Verbindungspfades. Schließlich wird der Zielrechner erreicht oder es kommt zu einem Verbindungsabbruch (beispielsweise durch Nichterreichbarkeit eines Gateway-Rechners). Weitere Informationen erhalten Sie in der Hilfeseite &man.traceroute.8;. Multicast-Routing Multicast-Routing options MROUTING &os; unterstützt sowohl Multicast-Anwendungen als auch Multicast-Routing. Multicast-Anwendungen müssen nicht konfiguriert werden; sie laufen einfach. Multicast-Routing muss in der Kernelkonfiguration aktiviert werden: options MROUTING Zusätzlich müssen für den Multicast-Routing-Dæmon, &man.mrouted.8;, Tunnel und DVMRP in der Datei /etc/mrouted.conf eingerichtet werden. Weitere Informationen erhalten Sie in der Hilfeseite &man.mrouted.8;. Eric Anderson Geschrieben von Drahtlose Netzwerke drahtlose Netzwerke 802.11 drahtlose Netzwerke Einführung Es kann sehr nützlich sein, einen Computer zu verwenden, ohne sich die ganze Zeit mit einem Netzwerkkabel herumärgern zu müssen. FreeBSD kann auf drahtlose Netzwerke (wireless LAN) zugreifen und sogar als Zugangspunkt (access point) für drahtlose Netzwerke verwendet werden. Betriebsmodi drahtloser Geräte Drahtlose Geräte können in zwei Modi konfiguriert werden: BSS und IBSS. BSS-Modus Überlicherweise wird der BSS-Modus, der auch Infrastruktur-Modus genannt wird, verwendet. In diesem Modus sind die Zugangspunkte (access points mit einem Kabel-Netzwerk verbunden. Jedes drahtlose Netzwerk besitzt einen Namen, der als die SSID des Netzwerks bezeichnet wird. Drahtlose Clients benutzen ein im IEEE-802.11-Standard beschriebenes Protokoll, um sich mit den Zugangspunkten zu verbinden. Durch die Angabe einer SSID kann sich der Client das Netzwerk, mit dem er sich verbinden will, aussuchen. Gibt der Client keine SSID an, so wird er mit irgendeinem Netzwerk verbunden. IBSS-Modus Der IBSS-Modus, der auch ad-hoc-Modus genannt wird, wurde für Punkt-zu-Punkt-Verbindungen entworfen. Tatsächlich gibt es zwei Modi: Der IBSS-Modus, auch ad-hoc- oder IEEE-ad-hoc-Modus, der im IEEE-802.11-Standard definiert wird und der demo-ad-hoc-Modus oder Lucent-adhoc-Modus (der zur Verwirrung auch schon mal ad-hoc-Modus genannt wird). Der letzte Modus stammt aus der Zeit vor IEEE 802.11 und sollte nur noch mit alten Installationen verwendet werden. Im folgenden wird keiner der ad-hoc-Modi behandelt. Infrastruktur-Modus Zugangspunkte Zugangspunkte sind drahtlose Netzwerkgeräte, die es einem oder mehreren Clients ermöglichen, diesen als einen zentralen Verteiler (Hub) zu benutzen. Wenn ein Zugangspunkt verwendet wird, kommunizieren alle Clients über diesen Zugangspunkt. Oft werden mehrere Zugangspunkte kombiniert, um ein ganzes Gebiet, wie ein Haus, ein Unternehmen oder einen Park mit einem drahtlosen Netzwerk zu versorgen. Üblicherweise haben Zugangspunkte mehrere Netzwerkverbindungen: Die drahtlose Karte, sowie eine oder mehrere Ethernetkarten, über die die Verbindung mit dem restlichen Netzwerk hergestellt wird. Sie können einen vorkonfigurierten Zugangspunkt kaufen, oder Sie können sich unter Verwendung von FreeBSD und einer unterstützten drahtlosen Karte einen eigenen bauen. Es gibt verschiedene Hersteller, die sowohl Zugangspunkte als auch drahtlose Karten mit verschiedensten Eigenschaften vertreiben. Einen FreeBSD Zugangspunkt installieren drahtlose Netzwerke Zugangspunkte Voraussetzungen Um einen drahtlosen Zugangspunkt unter FreeBSD einzurichten, müssen Sie über eine drahtlose Karte verfügen. Zurzeit werden dafür von FreeBSD nur Karten mit Prism-Chipsatz unterstützt. Zusätzlich benötigen Sie eine von FreeBSD unterstützte Ethernetkarte (diese sollte nicht schwer zu finden sein, da FreeBSD eine Vielzahl von verschiedenen Karten unterstützt). Für die weiteren Erläuterungen nehmen wir an, dass Sie den ganzen Verkehr zwischen dem drahtlosen Gerät und dem an die Ethernetkarte angeschlossenen Kabel-Netzwerk über die &man.bridge.4;-Funktion realisieren wollen. Die hostap-Funktion, mit der FreeBSD Zugangspunkte implementiert, läuft am besten mit bestimmten Firmware-Versionen. Prism 2-Karten sollten die Version 1.3.4 oder neuer der Firmware verwenden. Prism 2.5- und Prism 3-Karten sollten die Version 1.4.9 der Firmware verwenden. Es kann sein, dass auch ältere Versionen funktionieren. Zurzeit ist es nur mit &windows;-Werkzeugen der Hersteller möglich, die Firmware zu aktualisieren. Einrichtung Stellen Sie als erstes sicher, dass Ihr System die drahtlose Karte erkennt: &prompt.root; ifconfig -a wi0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500 inet6 fe80::202:2dff:fe2d:c938%wi0 prefixlen 64 scopeid 0x7 inet 0.0.0.0 netmask 0xff000000 broadcast 255.255.255.255 ether 00:09:2d:2d:c9:50 media: IEEE 802.11 Wireless Ethernet autoselect (DS/2Mbps) status: no carrier ssid "" stationname "FreeBSD Wireless node" channel 10 authmode OPEN powersavemode OFF powersavesleep 100 wepmode OFF weptxkey 1 Kümmern Sie sich jetzt noch nicht um die Details, sondern stellen Sie nur sicher, dass ihre drahtlose Karte überhaupt erkannt und angezeigt wird. Wenn die Karte eine PC Card ist und überhaupt nicht erkannt wird, schauen Sie in den Hilfeseiten &man.pccardc.8; und &man.pccardd.8; nach weiteren Hinweisen. Danach müssen Sie ein Modul laden, um die Bridge-Funktion von FreeBSD für den Zugangspunkt vorzubereiten. Um das &man.bridge.4;-Modul zu laden, machen Sie Folgendes: &prompt.root; kldload bridge Dabei sollten beim Laden des Moduls keine Fehlermeldungen auftreten. Geschieht dies doch, kann es sein, dass Sie die Bridge-Funktion (&man.bridge.4;) in Ihren Kernel kompilieren müssen. Der Abschnitt LAN-Kopplung mit einer Bridge sollte Ihnen bei dieser Aufgabe behilflich sein. Wenn die Bridge-Funktion aktiviert ist, müssen wir FreeBSD mitteilen, welche Schnittstellen über die Bridge verbunden werden sollen. Dazu verwenden wir &man.sysctl.8;: &prompt.root; sysctl net.link.ether.bridge=1 &prompt.root; sysctl net.link.ether.bridge_cfg="wi0 xl0" &prompt.root; sysctl net.inet.ip.forwarding=1 Nun ist es an der Zeit, die drahtlose Karte zu installieren. Der folgende Befehl konfiguriert einen Zugangspunkt: &prompt.root; ifconfig wi0 ssid my_net channel 11 media DS/11Mbps mediaopt hostap up stationname "FreeBSD AP" Die &man.ifconfig.8; Zeile aktiviert das wi0-Gerät, und setzt die SSID auf my_net sowie den Namen des Zugangspunkts auf FreeBSD AP Mit wird die Karte in den 11 Mbps-Modus versetzt. Diese Option ist nötig, damit -Optionen wirksam werden. Mit wird die Schnittstelle als Zugangspunkt konfiguriert. Der zu benutzende 802.11b-Kanal wird mit festgelegt. In der Hilfeseite &man.wicontrol.8; werden weitere Kanäle aufgezählt. Nun sollten Sie über einen voll funktionsfähigen und laufenden Zugangspunkt verfügen. Mehr Informationen finden Sie in den Hilfeseiten &man.wicontrol.8;, &man.ifconfig.8; und &man.wi.4;. Außerdem ist es empfehlenswert, den folgenden Abschnitt zu lesen, um sich über die Sicherung bzw. Verschlüsselung von Zugangspunkten zu informieren. Status Informationen Wenn der Zugangspunkt eingerichtet ist und läuft, können Sie die verbundenen Clients mit dem nachstehenden Kommando abfragen: &prompt.root; wicontrol -l 1 station: 00:09:b7:7b:9d:16 asid=04c0, flags=3<ASSOC,AUTH>, caps=1<ESS>, rates=f<1M,2M,5.5M,11M>, sig=38/15 Das Beispiel zeigt eine verbundene Station und die dazugehörenden Verbindungsparameter. Die angegebene Signalstärke sollte nur relativ interpretiert werden, da die Umrechnung in dBm oder andere Einheiten abhängig von der Firmware-Version ist. Clients Ein drahtloser Client ist ein System, das direkt auf einen Zugangspunkt oder einen anderen Client zugreift. Üblicherweise haben drahtlose Clients nur ein Netzwerkgerät, die drahtlose Netzkarte. Es gibt verschiedene Möglichkeiten, einen drahtlosen Client zu konfigurieren. Diese hängen von den verschiedenen drahtlosen Betriebsmodi ab. Man unterscheidet vor allem zwischen BSS (Infrastrukturmodus, erfordert einen Zugangspunkt) und IBSS (ad-hoc, Peer-to-Peer-Modus, zwischen zwei Clients, ohne Zugangspunkt). In unserem Beispiel verwenden wir den weiter verbreiteten BSS-Modus, um einen Zugangspunkt anzusprechen. Voraussetzungen Es gibt nur eine Voraussetzung, um FreeBSD als drahtlosen Client betreiben zu können: Sie brauchen eine von FreeBSD unterstützte drahtlose Karte. Einen drahtlosen FreeBSD Client einrichten Sie müssen ein paar Dinge über das drahtlose Netzwerk wissen, mit dem Sie sich verbinden wollen, bevor Sie starten können. In unserem Beispiel verbinden wir uns mit einem Netzwerk, das den Namen my_net hat, und bei dem die Verschlüsselung deaktiviert ist. Anmerkung: In unserem Beispiel verwenden wir keine Verschlüsselung. Dies ist eine gefährliche Situation. Im nächsten Abschnitt werden Sie daher lernen, wie man die Verschlüsselung aktiviert, warum es wichtig ist, dies zu tun, und warum einige Verschlüsselungstechnologien Sie trotzdem nicht völlig schützen. Stellen Sie sicher, dass Ihre Karte von FreeBSD erkannt wird: &prompt.root; ifconfig -a wi0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500 inet6 fe80::202:2dff:fe2d:c938%wi0 prefixlen 64 scopeid 0x7 inet 0.0.0.0 netmask 0xff000000 broadcast 255.255.255.255 ether 00:09:2d:2d:c9:50 media: IEEE 802.11 Wireless Ethernet autoselect (DS/2Mbps) status: no carrier ssid "" stationname "FreeBSD Wireless node" channel 10 authmode OPEN powersavemode OFF powersavesleep 100 wepmode OFF weptxkey 1 Nun werden wir die Einstellungen der Karte unserem Netzwerk anpassen: &prompt.root; ifconfig wi0 inet 192.168.0.20 netmask 255.255.255.0 ssid my_net Ersetzen Sie 192.168.0.20 und 255.255.255.0 mit einer gültigen IP-Adresse und Netzmaske ihres Kabel-Netzwerks. Bedenken Sie außerdem, dass unser Zugangspunkt als Bridge zwischen dem drahtlosen und dem Kabel-Netzwerk fungiert. Für die anderen Rechner Ihres Netzwerks befinden Sie sich, genauso wie diese, im gleichen Kabel-Netzwerk, obwohl Sie zum drahtlosen Netzwerk gehören. Nachdem Sie dies erledigt haben, sollten Sie andere Rechner (Hosts) im Kabel-Netzwerk anpingen können. Dies genauso, wie wenn Sie über eine Standardkabelverbindung mit ihnen verbunden wären. Wenn Probleme mit Ihrer drahtlosen Verbindung auftreten, stellen Sie sicher, dass Sie mit dem Zugangspunkt verbunden sind: &prompt.root; ifconfig wi0 sollte einige Informationen ausgeben und Sie sollten Folgendes sehen: status: associated Wird dies nicht angezeigt, sind Sie entweder außerhalb der Reichweite des Zugangspunktes, haben die Verschlüsselung deaktiviert, oder Sie haben ein anderes Konfigurationsproblem. Verschlüsselung drahtlose Netzwerke Verschlüsselung Verschlüsselung ist in einem drahtlosen Netzwerk wichtig, da Sie das Netzwerk nicht länger in einem geschützten Bereich betreiben können. Ihre Daten verbreiten sich in der ganzen Nachbarschaft, das heißt jeder, der es will, kann Ihre Daten lesen. Deshalb gibt es die Verschlüsselung. Durch die Verschlüsselung der durch die Luft versendeten Daten machen Sie es einem Dritten sehr viel schwerer, Ihre Daten abzufangen oder auf diese zuzugreifen. Die gebräuchlichsten Methoden, um Daten zwischen Ihrem Client und dem Zugangspunkt zu verschlüsseln, sind WEP und &man.ipsec.4;. WEP WEP WEP ist die Abkürzung für Wired Equivalency Protocol ("Verkabelung entsprechendes Protokoll"). WEP war ein Versuch, drahtlose Netzwerke genauso sicher und geschützt zu machen wie verkabelte Netzwerke. Unglücklicherweise wurde es bereits geknackt, und ist relativ einfach auszuhebeln. Sie sollten sich also nicht darauf verlassen, wenn Sie sensible Daten verschlüsseln wollen. Allerdings ist eine schlechte Verschlüsselung noch immer besser als gar keine Verschlüsselung. Aktivieren Sie daher WEP für Ihren neuen FreeBSD Zugangspunkt: &prompt.root; ifconfig wi0 inet up ssid my_net wepmode on wepkey 0x1234567890 media DS/11Mbps mediaopt hostap Auf dem Client können Sie WEP wie folgt aktivieren: &prompt.root; ifconfig wi0 inet 192.168.0.20 netmask 255.255.255.0 ssid my_net wepmode on wepkey 0x1234567890 Beachten Sie bitte, dass Sie 0x1234567890 durch einen besseren Schlüssel ersetzen sollten. IPsec &man.ipsec.4; ist ein viel besseres und robusteres Werkzeug, um Daten in einem Netzwerk zu verschlüsseln und ist auch der bevorzugte Weg, Daten in einem drahtlosen Netzwerk zu verschlüsseln. Weitere Informationen über &man.ipsec.4;-Sicherheit, und dessen Implementierung enthält der Abschnitt IPsec des Handbuches. Werkzeuge Es gibt einige Werkzeuge, die dazu dienen, Ihr drahtloses Netzwerk zu installieren, und auftretende Probleme zu beheben. Wir werden nun versuchen, einige davon zu beschreiben. <application>bsd-airtools</application> Das Paket bsd-airtools enthält einen kompletten Werkzeugsatz zum Herausfinden von WEP-Schlüsseln, zum Auffinden von Zugangspunkten, usw. Die bsd-airtools können Sie über den net/bsd-airtools Port installieren. Wie ein Port installiert wird, beschreibt des Handbuchs. Das Programm dstumbler ist ein Werkzeug, das Sie beim Auffinden von Zugangspunkten unterstützt, und das Signal-Rausch-Verhältnis graphisch darstellen kann. Wenn Sie Probleme beim Einrichten und Betreiben Ihres Zugangspunktes haben, könnte dstumbler genau das Richtige für Sie sein. Um die Sicherheit Ihres drahtlosen Netzwerks zu überprüfen, könnten Sie das Paket dweputils (dwepcrack, dwepdump und dwepkeygen) verwenden, um festzustellen, ob WEP Ihren Sicherheitsansprüchen genügt. <application>wicontrol</application>, <application>ancontrol</application> und <application>raycontrol</application> Dies sind Werkzeuge, um das Verhalten Ihrer drahtlosen Karte im drahtlosen Netzwerk zu kontrollieren. In den obigen Beispielen haben wir &man.wicontrol.8; verwendet, da es sich bei unser drahtlosen Karte um ein Gerät der wi0-Schnittstelle handelt. Hätten Sie eine drahtlose Karte von Cisco, würden Sie diese über an0 ansprechen, und daher &man.ancontrol.8; verwenden. Das Kommando <application>ifconfig</application> ifconfig &man.ifconfig.8; kennt zwar viele Optionen von &man.wicontrol.8;, einige fehlen jedoch. Die Hilfeseite &man.ifconfig.8; zählt weitere Parameter und Optionen auf. Unterstützte Karten Zugangspunkt Die einzigen Karten, die im BSS-Modus (das heißt als Zugangspunkt) derzeit unterstützt werden, sind solche mit Prism 2-, 2.5- oder 3-Chipsatz. Für eine komplette Übersicht lesen Sie bitte &man.wi.4;. Clients Beinahe alle 802.11b drahtlosen Karten werden von FreeBSD unterstützt. Die meisten dieser Karten von Prism, Spectrum24, Hermes, Aironet und Raylink arbeiten als drahtlose Netzkarten im IBSS-Modus (ad-hoc, Peer-to-Peer und BSS). Steve Peterson Geschrieben von LAN-Kopplung mit einer Bridge Einführung Subnetz Bridge Manchmal ist es nützlich, ein physikalisches Netzwerk (wie ein Ethernetsegment) in zwei separate Netzwerke aufzuteilen, ohne gleich IP-Subnetze zu erzeugen, die über einen Router miteinander verbunden sind. Ein Gerät, das zwei Netze auf diese Weise verbindet, wird als Bridge bezeichnet. Jedes FreeBSD-System mit zwei Netzkarten kann als Bridge fungieren. Die Bridge arbeitet, indem sie die MAC Layeradressen (Ethernet Adressen) der Geräte in ihren Netzsegmenten lernt. Der Verkehr wird nur dann zwischen zwei Netzsegmenten weitergeleitet, wenn sich Sender und Empfänger in verschiedenen Netzsegmenten befinden. In vielerlei Hinsicht entspricht eine Bridge daher einem Ethernet-Switch mit sehr wenigen Ports. Situationen, in denen <emphasis>Bridging</emphasis> angebracht ist Eine Bridge wird vor allem in folgenden zwei Situationen verwendet. Hohes Datenaufkommen in einem Segment In der ersten Situation wird Ihr physikalisches Netz mit Datenverkehr überschwemmt. Aus irgendwelchen Gründen wollen Sie allerdings keine Subnetze verwenden, die über einen Router miteinander verbunden sind. Stellen Sie sich einen Zeitungsverlag vor, in dem sich die Redaktions- und Produktionsabteilungen in verschiedenen Subnetzen befinden. Die Redaktionsrechner verwenden den Server A für Dateioperationen, und die Produktionsrechner verwenden den Server B. Alle Benutzer sind über ein gemeinsames Ethernet-LAN miteinander verbunden. Durch den hohen Datenverkehr sinkt die Geschwindigkeit des gesamten Netzwerks. Würde man die Redaktionsrechner und die Produktionsrechner in separate Netzsegmente auslagern, könnte man diese beiden Segmente über eine Bridge verbinden. Nur der für Rechner im anderen Segment bestimmte Verkehr wird dann über die Brigde in das andere Netzsegment geleitet. Dadurch verringert sich das Gesamtdatenaufkommen in beiden Segmenten. Filtering/Traffic Shaping Firewall Firewall IP-Masquerading Die zweite häufig anzutreffende Situation tritt auf, wenn Firewallfunktionen benötigt werden, ohne dass IP-Maskierung (NAT – Network Adress Translation) verwendet wird. Ein Beispiel dafür wäre ein kleines Unternehmen, das über DSL oder ISDN an ihren ISP angebunden ist. Es verfügt über 13 weltweit erreichbare IP-Adressen, und sein Netzwerk besteht aus 10 Rechnern. In dieser Situation ist die Verwendung von Subnetzen sowie einer routerbasierten Firewall schwierig. Router DSL ISDN Eine brigdebasierte Firewall kann konfiguriert und in den ISDN/DSL-Downstreampfad ihres Routers eingebunden werden, ohne sich um IP-Adressen kümmern zu müssen. Die LAN-Kopplung konfigurieren Auswahl der Netzkarten Eine Bridge benötigt mindestens zwei Netzkarten. Leider sind unter FreeBSD 4.x nicht alle verfügbaren Netzkarten dafür geeignet. Lesen Sie &man.bridge.4;, um sich über Details der unterstützten Karten zu informieren. Installieren und testen Sie beide Netzkarten, bevor Sie fortfahren. Anpassen der Kernelkonfiguration Kernelkonfiguration Kernelkonfiguration options BRIDGE Um die Kernelunterstützung für die LAN-Kopplung zu aktivieren, fügen Sie options BRIDGE in Ihre Kernelkonfigurationsdatei ein, und erzeugen einen neuen Kernel. Firewallunterstützung Firewall Wenn Sie die Bridge als Firewall verwenden wollen, müssen Sie zusätzlich die Option IPFIREWALL einfügen. Die Konfiguration von Firewalls wird in beschrieben. Wenn Sie Nicht-IP-Pakete (wie ARP-Pakete) durch Ihre Bridge leiten wollen, müssen Sie eine zusätzliche, undokumentierte Option verwenden. Es handelt sich um IPFIREWALL_DEFAULT_TO_ACCEPT. Beachten Sie aber, dass Ihre Firewall durch diese Option per Voreinstellung alle Pakete akzeptiert. Sie sollten sich also über die Auswirkungen dieser Option im Klaren sein, bevor Sie sie verwenden. Unterstützung für Traffic Shaping Wenn Sie die Bridge als Traffic-Shaper verwenden wollen, müssen Sie die Option DUMMYNET in Ihre Kernelkonfigurationsdatei einfügen. Lesen Sie &man.dummynet.4;, um weitere Informationen zu erhalten. Die LAN-Kopplung aktivieren Fügen Sie die Zeile net.link.ether.bridge=1 in /etc/sysctl.conf ein, um die Bridge zur Laufzeit zu aktivieren, sowie die Zeile net.link.ether.bridge_cfg=if1,if2 um die LAN-Kopplung für die festgelegten Geräte zu ermöglichen (ersetzen Sie dazu if1 und if2 mit den Namen Ihrer Netzkarten). Wenn Sie die Datenpakete via &man.ipfw.8; filtern wollen, sollten Sie zusätzlich Folgendes einfügen: net.link.ether.bridge_ipfw=1 Sonstige Informationen Wenn Sie via telnet auf die Bridge zugreifen wollen, ist es in Ordnung, einer der beiden Netzkarten eine IP-Adresse zuzuweisen. Es besteht Einigkeit darüber, dass es eine schlechte Idee ist, beiden Karten eine IP-Adresse zuzuweisen. Wenn Sie verschiedene Bridges in Ihrem Netzwerk haben, kann es dennoch nicht mehr als einen Weg zwischen zwei Arbeitsplätzen geben. Das heißt, Spanning tree link Management wird nicht unterstützt. Eine Bridge kann, besonders für Verkehr über Segmente, die Laufzeiten von Paketen erhöhen. Tom Rhodes Reorganisiert und erweitert von Bill Swingle Geschrieben von NFS – Network File System NFS Eines der vielen von FreeBSD unterstützten Dateisysteme ist das Netzwerkdateisystem, das auch als NFS bekannt ist. NFS ermöglicht es einem System, Dateien und Verzeichnisse über ein Netzwerk mit anderen zu teilen. Über NFS können Benutzer und Programme auf Daten entfernter Systeme zugreifen, und zwar genauso, wie wenn es sich um lokale Daten handeln würde. Einige der wichtigsten Vorteile von NFS sind: Lokale Arbeitsstationen benötigen weniger Plattenplatz, da gemeinsam benutzte Daten nur auf einem einzigen Rechner vorhanden sind. Alle anderen Stationen greifen über das Netzwerk auf diese Daten zu. Benutzer benötigen nur noch ein zentrales Heimatverzeichnis auf einem NFS-Server. Diese Verzeichnisse sind über das Netzwerk auf allen Stationen verfügbar. Speichergeräte wie Disketten-, CD-ROM- oder ZIP-Laufwerke können über das Netzwerk von anderen Arbeitstationen genutzt werden. Dadurch sind für das gesamte Netzwerk deutlich weniger Speichergeräte nötig. Wie funktioniert <acronym>NFS</acronym>? NFS besteht aus zwei Hauptteilen: Einem Server und einem oder mehreren Clients. Der Client greift über das Netzwerk auf die Daten zu, die auf dem Server gespeichert sind. Damit dies korrekt funktioniert, müssen einige Prozesse konfiguriert und gestartet werden: In &os;nbsp;5.X wurde portmap durch rpcbind ersetzt. Benutzer von &os;nbsp;5.X müssen in den folgenden Beispielen portmap durch rpcbind ersetzen. Der Server benötigt folgende Daemonen: NFS Server portmap mountd nfsd Daemon Beschreibung nfsd Der NFS-Daemon. Er bearbeitet Anfragen der NFS-Clients. mountd Der NFS-Mount-Daemon. Er bearbeitet die Anfragen, die &man.nfsd.8; an ihn weitergibt. portmap Der Portmapper-Daemon. Durch ihn erkennen die NFS-Clients, welchen Port der NFS-Server verwendet. Der Client kann ebenfalls einen Daemon aufrufen, und zwar den nfsiod-Daemon. Der nfsiod-Daemon bearbeitet Anfragen vom NFS-Server. Er ist optional und verbessert die Leistung des Netzwerks. Für eine normale und korrekte Arbeit ist er allerdings nicht erforderlich. Lesen Sie &man.nfsiod.8;, wenn Sie weitere Informationen benötigen. <acronym>NFS</acronym> einrichten NFS einrichten NFS läßt sich leicht einrichten. Die nötigen Prozesse werden durch einige Änderungen in /etc/rc.conf bei jedem Systemstart gestartet. Stellen Sie sicher, dass auf dem NFS-Server folgende Optionen in /etc/rc.conf gesetzt sind: portmap_enable="YES" nfs_server_enable="YES" mountd_flags="-r" mountd läuft automatisch, wenn der NFS-Server aktiviert ist. Auf dem Client muss in /etc/rc.conf folgende Option gesetzt sein: nfs_client_enable="YES" /etc/exports legt fest, welche Dateisysteme NFS exportieren (manchmal auch als teilen bezeichnet) soll. Jede Zeile in /etc/exports legt ein Dateisystem sowie die Arbeitsstationen, die darauf Zugriff haben, fest. Außerdem ist es möglich, Zugriffsoptionen festzulegen. Es gibt viele verschiedene Optionen, allerdings werden hier nur einige von ihnen erwähnt. Wenn Sie Informationen über weitere Optionen benötigen, lesen Sie &man.exports.5;. Nun folgen einige Beispieleinträge für /etc/exports: NFS Export von Dateisystemen Die folgenden Beispiele geben Ihnen Anhaltspunkte zum Exportieren von Dateisystemen, obwohl diese Einstellungen natürlich von Ihrer Arbeitsumgebung und Ihrer Netzwerkkonfiguration abhängen. Das nächste Beispiel exportiert das Verzeichnis /cdrom für drei Rechner, die sich in derselben Domäne wie der Server befinden oder für die entsprechende Einträge in /etc/hosts existieren. Die Option kennzeichnet das exportierte Dateisystem als schreibgeschützt. Durch dieses Flag ist das entfernte System nicht in der Lage, das exportierte Dateisystem zu verändern. /cdrom -ro host1 host2 host3 Die nächste Zeile exportiert /home auf drei durch IP-Adressen bestimmte Rechner. Diese Einstellung ist nützlich, wenn Sie über ein privates Netzwerk ohne DNS-Server verfügen. Optional könnten interne Rechnernamen auch in /etc/hosts konfiguriert werden. Benötigen Sie hierzu weitere Informationen, lesen Sie bitte &man.hosts.5;. Durch das Flag wird es möglich, auch Unterverzeichnisse als Mountpunkte festzulegen. Dies bedeutet aber nicht, dass alle Unterverzeichnisse eingehängt werden, vielmehr wird es dem Client ermöglicht, nur diejenigen Verzeichnisse einzuhängen, die auch benötigt werden. /home -alldirs 10.0.0.2 10.0.0.3 10.0.0.4 Die nächste Zeile exportiert /a, damit Clients von verschiedenen Domänen auf das Dateisystem zugreifen können. Das -Flag erlaubt es dem Benutzer root des entfernten Systems, als root auf das exportierte Dateisystem zu schreiben. Wenn dieses Flag nicht gesetzt ist, kann selbst root nicht auf das exportierte Dateisystem schreiben. /a -maproot=root host.example.com box.example.org Damit ein Client auf ein exportiertes Dateisystem zugreifen kann, muss ihm dies explizit gestattet werden. Stellen Sie also sicher, dass der Client in /etc/exports aufgeführt wird. Jede Zeile in /etc/exports entspricht der Exportinformation für ein Dateisystem auf einen Rechner. Ein entfernter Rechner kann für jedes Dateisystem nur einmal festgelegt werden, und kann auch nur einen Standardeintrag haben. Nehmen wir an, dass /usr ein einziges Dateisystem ist. Dann wären folgende Zeilen ungültig: /usr/src client /usr/ports client Das Dateisystem /usr wird hier zweimal auf den selben Rechner (client) exportiert. Dies ist aber nicht zulässig. Der richtige Eintrag sieht daher so aus: /usr/src /usr/ports client Die Eigenschaften eines auf einen anderen Rechner exportierten Dateisystems müssen alle in einer Zeile stehen. Zeilen, in denen kein Rechner festgelegt wird, werden als einzelner Rechner behandelt. Dies schränkt die Möglichkeiten zum Export von Dateisystemen ein, für die meisten Anwender ist dies aber kein Problem. Eine gültige Exportliste, in der /usr und /exports lokale Dateisysteme sind, sieht so aus: # Export src and ports to client01 and client02, but only # client01 has root privileges on it /usr/src /usr/ports -maproot=root client01 /usr/src /usr/ports client02 # The client machines have root and can mount anywhere # on /exports. Anyone in the world can mount /exports/obj read-only /exports -alldirs -maproot=root client01 client02 /exports/obj -ro Sie müssen mountd nach jeder Änderung von /etc/exports neu starten, damit die Änderungen wirksam werden. Dies kann durch das Senden des HUP-Signals an den mountd-Prozess erfolgen: &prompt.root; kill -HUP `cat /var/run/mountd.pid` Alternativ können Sie auch das System neu starten. Dies ist allerdings nicht nötig. Wenn Sie die folgenden Befehle als root ausführen, sollte alles korrekt gestartet werden. Auf dem NFS-Server: &prompt.root; portmap &prompt.root; nfsd -u -t -n 4 &prompt.root; mountd -r Auf dem NFS-Client: &prompt.root; nfsiod -n 4 Nun sollte alles bereit sein, um ein entferntes Dateisystem einhängen zu können. In unseren Beispielen nennen wir den Server server, den Client client. Wenn Sie ein entferntes Dateisystem nur zeitweise einhängen wollen, oder nur Ihre Konfiguration testen möchten, führen Sie auf dem Client als root einen Befehl ähnlich dem folgenden aus: NFS Dateisysteme einhängen &prompt.root; mount server:/home /mnt Dadurch wird das Verzeichnis /home des Servers auf dem Client unter /mnt eingehängt. Wenn alles korrekt konfiguriert wurde, sehen Sie auf dem Client im Verzeichnis /mnt alle Dateien des Servers. Wenn Sie ein entferntes Dateisystem nach jedem Systemstart automatisch einhängen wollen, fügen Sie das Dateisystem in /etc/fstab ein. Dazu ein Beispiel: server:/home /mnt nfs rw 0 0 Für Informationen zu allen möglichen Optionen lesen Sie bitte &man.fstab.5;. Praktische Anwendungen NFS ist in vielen Situationen nützlich. Einige Anwendungsbereiche finden Sie in der folgenden Liste: NFS Anwendungsbeispiele Mehrere Maschinen können sich ein CD-ROM-Laufwerk oder andere Medien teilen. Dies ist billiger und außerdem praktischer, um Programme auf mehreren Rechnern zu installieren. In größeren Netzwerken ist es praktisch, einen zentralen NFS-Server einzurichten, auf dem die Heimatverzeichnisse der Benutzer gespeichert werden. Diese Heimatverzeichnisse werden über das Netzwerk exportiert. Dadurch haben die Benutzer immer das gleiche Heimatverzeichnis zur Verfügung, unabhängig davon, an welchem Arbeitsplatz sie sich anmelden. Verschiedene Rechner können auf ein gemeinsames /usr/ports/distfiles-Verzeichnis zugreifen. Wenn Sie nun einen Port auf mehreren Rechnern installieren wollen, greifen Sie einfach auf dieses Verzeichnis zu, ohne die Quelldateien auf jede Maschine zu kopieren. Wylie Stilwell Beigetragen von Chern Lee Überarbeitet von <application>AMD</application> amd Automatic Mounter Daemon &man.amd.8; (Automatic Mounter Daemon) hängt ein entferntes Dateisystem automatisch ein, wenn auf eine Datei oder ein Verzeichnis in diesem Dateisystem zugegriffen wird. Dateisysteme, die über einen gewissen Zeitraum inaktiv sind, werden von amd automatisch abgehängt. amd ist eine einfache Alternative zum dauerhaften Einhängen von Dateisystemen in /etc/fstab. In der Voreinstellung stellt amd die Verzeichnisse /host und /net als NFS-Server bereit. Wenn auf eine Datei in diesen Verzeichnissen zugegriffen wird, sucht amd den entsprechenden Mountpunkt und hängt das Dateisystem automatisch ein. /net wird zum Einhängen von exportierten Dateisystemen von einer IP-Adresse verwendet, während /host zum Einhängen von exportierten Dateisystemen eines durch seinen Namen festgelegten Rechners dient. Ein Zugriff auf eine Datei in /host/foobar/usr würde amd veranlassen, das von foobar exportierte Dateisystem /usr einzuhängen. Ein exportiertes Dateisystem mit <application>amd</application> in den Verzeichnisbaum einhängen Sie können sich die verfügbaren Mountpunkte eines entfernten Rechners mit showmount ansehen. Wollen Sie sich die Mountpunkte des Rechners foobar ansehen, so verwenden Sie: &prompt.user; showmount -e foobar Exports list on foobar: /usr 10.10.10.0 /a 10.10.10.0 &prompt.user; cd /host/foobar/usr Wie Sie an diesem Beispiel erkennen können, zeigt showmount /usr als exportiertes Dateisystem an. Wenn man in das Verzeichnis /host/foobar/usr wechselt, versucht amd den Rechnernamen foobar aufzulösen und den gewünschten Export in den Verzeichnisbaum einzuhängen. amd kann durch das Einfügen der folgenden Zeile in /etc/rc.conf automatisch gestartet werden: amd_enable="YES" Mit der Option amd_flags kann amd angepasst werden. Die Voreinstellung für amd_flags sieht so aus: amd_flags="-a /.amd_mnt -l syslog /host /etc/amd.map /net /etc/amd.map" /etc/amd.map legt die Standardoptionen fest, mit denen exportierte Dateisysteme in den Verzeichnisbaum eingehängt werden. /etc/amd.conf hingegen legt einige der erweiterten Optionen von amd fest. Weitere Informationen finden Sie in den Hilfeseiten &man.amd.8; und &man.amd.conf.5;. John Lind Beigetragen von Integrationsprobleme mit anderen Systemen Bestimmte ISA-Ethernetadapter haben Beschränkungen, die zu ernsthaften Netzwerkproblemen, insbesondere mit NFS führen können. Es handelt sich dabei nicht um ein FreeBSD-spezifisches Problem, aber FreeBSD-Systeme sind davon ebenfalls betroffen. Das Problem tritt fast ausschließlich dann auf, wenn (FreeBSD)-PC-Systeme mit Hochleistungsrechnern verbunden werden, wie Systemen von Silicon Graphics, Inc. oder Sun Microsystems, Inc. Das Einhängen via NFS funktioniert problemlos, auch einige Dateioperationen können erfolgreich sein. Plötzlich aber wird der Server nicht mehr auf den Client reagieren, obwohl Anfragen an und von anderen Rechnern weiter bearbeitet werden. Dieses Problem betrifft stets den Client, egal ob es sich beim Client um das FreeBSD-System oder den Hochleistungsrechner handelt. Auf vielen Systemen gibt es keine Möglichkeit mehr, den Client ordnungsgemäß zu beenden. Die einzige Lösung ist oft, den Rechner neu zu starten, da dieses NFS-Problem nicht mehr behoben werden kann. Die korrekte Lösung für dieses Problem ist es, sich eine schnellere Ethernetkarte für FreeBSD zu kaufen. Allerdings gibt es auch eine einfache und meist zufriedenstellende Lösung, um dieses Problem zu umgehen. Wenn es sich beim FreeBSD-System um den Server handelt, verwenden Sie beim Einhängen in den Verzeichnisbaum auf der Clientseite zusätzlich die Option . Wenn es sich beim FreeBSD-System um den Client handelt, dann hängen Sie das NFS-Dateisystem mit der zusätzlichen Option ein. Diese Optionen können auf der Clientseite auch durch das vierte Feld der Einträge in /etc/fstab festgelegt werden, damit die Dateisysteme automatisch eingehängt werden. Um die Dateisysteme manuell einzuhängen, verwendet man bei mount zusätzlich die Option . Es gibt ein anderes Problem, das oft mit diesem verwechselt wird. Dieses andere Problem tritt auf, wenn sich über NFS verbundene Server und Clients in verschiedenen Netzwerken befinden. Wenn dies der Fall ist, stellen Sie sicher, dass Ihre Router die nötigen UDP-Informationen weiterleiten, oder Sie werden nirgends hingelangen, egal was Sie machen. In den folgenden Beispielen ist fastws der Name des Hochleistungsrechners (bzw. dessen Schnittstelle), freebox hingegen ist der Name des FreeBSD-Systems, das über eine Netzkarte mit geringer Leistung verfügt. /sharedfs ist das exportierte NFS -Dateisystem (lesen Sie dazu auch &man.exports.5;). Bei /project handelt es sich um den Mountpunkt, an dem das exportierte Dateisystem auf der Clientseite eingehängt wird. In allen Fällen können zusätzliche Optionen, wie z.B. , oder wünschenswert sein. FreeBSD als Client (eingetragen in /etc/fstab auf freebox): fastws:/sharedfs /project nfs rw,-r=1024 0 0 Manuelles Einhängen auf freebox: &prompt.root; mount -t nfs -o -r=1024 fastws:/sharedfs /project FreeBSD als Server (eingetragen in /etc/fstab auf fastws): freebox:/sharedfs /project nfs rw,-w=1024 0 0 Manuelles Einhängen auf fastws: &prompt.root; mount -t nfs -o -w=1024 freebox:/sharedfs /project Nahezu alle 16-bit Ethernetadapter erlauben Operationen ohne obengenannte Einschränkungen auf die Lese- oder Schreibgröße. Für alle technisch Interessierten wird nun beschrieben, was passiert, wenn dieser Fehler auftritt, und warum er irreversibel ist. NFS arbeitet üblicherweise mit einer Blockgröße von 8 kByte (obwohl es kleinere Fragmente zulassen würde). Da die maximale Rahmengröße von Ethernet 1500 Bytes beträgt, wird der NFS-Block in einzelne Ethernetrahmen aufgeteilt, obwohl es sich nach wie vor um eine Einheit handelt, die auch als Einheit empfangen, verarbeitet und bestätigt werden muss. Der Hochleistungsrechner verschickt die Pakete, aus denen der NFS-Block besteht, so eng hintereinander, wie es der Standard erlaubt. Auf der anderen Seite (auf der sich die langsamere Netzkarte befindet), überschreiben die späteren Pakete ihre Vorgänger, bevor diese vom System verarbeitet werden (Überlauf!). Dies hat zur Folge, dass der NFS-Block nicht mehr rekonstruiert und bestätigt werden kann. Als Folge davon glaubt der Hochleistungsrechner, dass der andere Rechner nicht erreichbar ist (Timeout!) und versucht die Sendung zu wiederholen. Allerdings wird wiederum der komplette NFS-Block verschickt, so dass sich der ganze Vorgang wiederholt, und zwar immer wieder (oder bis zum Systemneustart). Indem wir die Einheitengröße unter der maximalen Größe der Ethernetpakete halten, können wir sicherstellen, dass jedes vollständig erhaltene Ethernetpaket individuell angesprochen werden kann und vermeiden die Blockierung des Systems. Überläufe können zwar nach wie vor auftreten, wenn ein Hochleistungsrechner Daten auf ein PC-System transferiert. Durch die besseren (und schnelleren) Netzkarten treten solche Überläufe allerdings nicht mehr zwingend auf, wenn NFS-Einheiten übertragen werden. Tritt nun ein Überlauf auf, wird die betroffene Einheit erneut verschickt, und es besteht eine gute Chance, dass sie nun erhalten, verarbeitet und bestätigt werden kann. Jean-François Dockès Aktualisiert von Start und Betrieb von FreeBSD über ein Netzwerk plattenloser Arbeitsplatz plattenloser Betrieb FreeBSD kann über ein Netzwerk starten und arbeiten, ohne eine lokale Festplatte zu verwenden, indem es Dateisysteme eines NFS-Servers in den eigenen Verzeichnisbaum einhängt. Dazu sind, von den Standardkonfigurationsdateien abgesehen, keine Systemänderungen nötig. Ein solches System kann leicht installiert werden, da alle notwendigen Elemente bereits vorhanden sind: Es gibt mindestens zwei Möglichkeiten, den Kernel über das Netzwerk zu laden: PXE: Das Preboot Execution Environment System von &intel; ist eine Art intelligentes Boot-ROM, das in einigen Netzkarten oder Hauptplatinen verwendet wird. Mehr Informationen finden Sie in der Hilfeseite &man.pxeboot.8;. Der Port etherboot (net/etherboot) erzeugt ROM-fähigen Code, um einen Kernel über das Netzwerk zu laden. Dieser Code kann entweder auf ein Boot-PROM einer Netzkarte gebrannt werden, was von vielen Netzkarten unterstützt wird. Oder er kann von einer lokalen Diskette, Festplatte oder von einem laufenden &ms-dos;-System geladen werden. Das Beispielskript (/usr/share/examples/diskless/clone_root) erleichtert die Erzeugung und die Wartung des root-Dateisystems auf dem Server. Das Skript muss wahrscheinlich angepasst werden, dennoch werden Sie schnell zu einem Ergebnis kommen. Die Startdateien, die einen plattenlosen Systemstart erkennen und unterstützen, sind nach der Installation in /etc vorhanden. Dateiauslagerungen können sowohl via NFS als auch auf die lokale Platte erfolgen. Es gibt verschiedene Wege, einen plattenlosen Rechner einzurichten. Viele Elemente sind daran beteiligt, die fast immer an den persönlichen Geschmack angepasst werden können. Die folgende Beschreibung erklärt die Installation eines kompletten Systems, wobei der Schwerpunkt auf Einfachheit und Kompatibilität zu den Standardstartskripten von FreeBSD liegt. Das beschriebene System hat folgende Eigenschaften: Die plattenlosen Rechner haben ein gemeinsames root- sowie ein gemeinsames /usr-Dateisystem, die jeweils schreibgeschützt sind. Das root-Dateisystem ist eine Kopie eines Standardwurzelverzeichnisses von FreeBSD (üblicherweise das des Servers), bei dem einige Konfigurationsdateien durch für den plattenlosen Betrieb geeignete Versionen ersetzt wurden. Für die Bereiche von root, die beschreibbar sein müssen, werden mit &man.mfs.8; virtuelle Dateisysteme erzeugt. Dies bedeutet aber auch, dass alle Veränderungen verloren gehen, wenn das System neu gestartet wird. Der Kernel wird von etherboot geladen. Dazu werden DHCP (oder BOOTP) und TFTP verwendet. Das hier beschriebene System ist nicht sicher. Es sollte nur in einem gesicherten Bereich eines Netzwerks verwendet werden und für andere Rechner nicht erreichbar sein. Installationsanweisungen plattenloser Betrieb Systemstart DHCP/BOOTP konfigurieren Es gibt zwei häufig verwendete Protokolle, um Rechner zu starten, die ihre Konfiguration über ein Netzwerk erhalten: BOOTP und DHCP. Diese werden in verschiedenen Phasen des Startvorganges verwendet: etherboot verwendet DHCP (Voreinstellung) oder BOOTP (muss vorher konfiguriert werden), um den Kernel zu finden (PXE verwendet DHCP). Der Kernel verwendet BOOTP, um das NFS-Wurzelverzeichnis zu finden. Es ist möglich, das System so zu konfigurieren, dass es nur BOOTP verwendet. Das &man.bootpd.8;-Serverprogramm ist bereits im Basissystem enthalten. DHCP hat im Vergleich zu BOOTP allerdings mehrere Vorteile (bessere Konfigurationsdateien, die Möglichkeit zur Verwendung von PXE, sowie viele andere, die nicht in direktem Zusammenhang mit dem plattenlosen Betrieb stehen), daher werden hier beide Methoden, die ausschließliche Verwendung von BOOTP sowie die gemeinsame Nutzung von BOOTP und DHCP beschrieben. Der Schwerpunkt liegt dabei auf der Betrachtung von DHCP. Dazu wird das Softwarepaket ISC-DHCP verwendet. Konfiguration unter Verwendung von ISC DHCP DHCP plattenloser Betrieb Der isc-dhcp-Server kann Anfragen sowohl von BOOTP als auch von DHCP beantworten. isc-dhcp 3.0 ist nicht Teil des Basissystems. Sie müssen es daher zuerst installieren. Verwenden Sie dazu den Port net/isc-dhcp3 oder das entsprechende Paket. Für allgemeine Informationen zu Ports und Paketen lesen Sie bitte . Nachdem isc-dhcp installiert ist, muss das Programm konfiguriert werden (normalerweise in /usr/local/etc/dhcpd.conf). Nachfolgend finden Sie dazu ein kommentiertes Beispiel: default-lease-time 600; max-lease-time 7200; authoritative; option domain-name "example.com"; option domain-name-servers 192.168.4.1; option routers 192.168.4.1; subnet 192.168.4.0 netmask 255.255.255.0 { use-host-decl-names on; option subnet-mask 255.255.255.0; option broadcast-address 192.168.4.255; host margaux { hardware ethernet 01:23:45:67:89:ab; fixed-address margaux.example.com; next-server 192.168.4.4; filename "/tftpboot/kernel.diskless"; option root-path "192.168.4.4:/data/misc/diskless"; } } Diese Option weist dhcpd an, den Wert der host-Deklaration als Rechnernamen des plattenlosen Rechners zu senden. Alternativ kann man der Hostdeklaration Folgendes hinzufügen: option host-name margaux Die Anweisung next-server bestimmt den TFTP-Server (in der Voreinstellung ist das der DHCP-Server selbst). Die Anweisung filename bestimmt die Datei, die etherboot als Kernel lädt. PXE erfordert einen relativen Dateinamen und lädt pxeboot (dies geschieht also nicht über die Kerneloption option filename "pxeboot"). Die Option root-path bestimmt den Pfad des root-Dateisystems in normaler NFS-Schreibweise. Konfiguration bei Verwendung von BOOTP BOOTP plattenloser Betrieb Es folgt nun eine der Konfiguration von DHCP entsprechende Konfiguration für bootpd. Zu finden ist die Konfigurationsdatei unter /etc/bootptab. Beachten Sie bitte, dass etherboot mit der Option NO_DHCP_SUPPORT kompiliert werden muss, damit BOOTP verwendet werden kann. PXE hingegen benötigt DHCP. Der einzige offensichtliche Vorteil von bootpd ist, dass es bereits im Basissystem vorhanden ist. .def100:\ :hn:ht=1:sa=192.168.4.4:vm=rfc1048:\ :sm=255.255.255.0:\ :ds=192.168.4.1:\ :gw=192.168.4.1:\ :hd="/tftpboot":\ :bf="/kernel.diskless":\ :rp="192.168.4.4:/data/misc/diskless": margaux:ha=0123456789ab:tc=.def100 Ein Startprogramm unter Verwendung von <application>Etherboot</application> erstellen Etherboot Die Internetseite von Etherboot enthält ausführliche Informationen, die zwar vor allem für Linux gedacht sind, aber dennoch nützliche Informationen enthalten. Im Folgenden wird daher nur grob beschrieben, wie Sie etherboot auf einem FreeBSD-System einsetzen können. Als erstes müssen Sie net/etherboot als Paket oder als Port installieren. Der Port etherboot befindet sich unter /usr/ports/net/etherboot. Wenn Sie die Portssammlung installiert haben, reicht es aus, in dieses Verzeichnis zu wechseln, und make install aufzurufen. Alles Weitere sollte automatisch ablaufen. Ist dies nicht der Fall, lesen Sie bitte , das Informationen zu Ports und Paketen enthält. Für unsere Installation verwenden wir eine Startdiskette. Für Informationen zu anderen Methoden (PROM oder DOS-Programme) lesen Sie bitte die Dokumentation zu etherboot. Um eine Startdiskette zu erzeugen, legen Sie eine Diskette in das Laufwerk des Rechners ein, auf dem Sie etherboot installiert haben. Danach wechseln Sie in das Verzeichnis src des etherboot-Verzeichnisbaums und geben Folgendes ein: &prompt.root; gmake bin32/devicetype.fd0 devicetype hängt vom Typ der Ethernetkarte ab, über die der plattenlose Rechner verfügt. Lesen Sie dazu NIC im gleichen Verzeichnis, um den richtigen Wert für devicetype zu bestimmen. Serverkonfiguration - TFTP und NFS TFTP plattenloser Betrieb NFS plattenloser Betrieb Sie müssen auf dem TFTP-Server tftpd aktivieren: Erzeugen Sie ein Verzeichnis, in dem tftpd seine Dateien ablegt, beispielsweise /tftpboot. Fügen Sie folgende Zeile in /etc/inetd.conf ein: tftp dgram udp wait root /usr/libexec/tftpd tftpd -s /tftpboot Anscheinend benötigen zumindest einige PXE-Versionen die TCP-Version von TFTP. Sollte dies der Fall sein, fügen Sie eine zweite Zeile ein, in der Sie dgram udp durch stream tcp ersetzen. Weisen Sie inetd an, seine Konfiguration erneut einzulesen: &prompt.root; kill -HUP `cat /var/run/inetd.pid` Sie können das Verzeichnis /tftpboot an einem beliebigen Ort auf dem Server ablegen. Stellen Sie aber sicher, dass Sie diesen Ort sowohl in inetd.conf als auch in dhcpd.conf eingetragen. Außerdem müssen Sie NFS aktivieren und die entsprechenden Verzeichnisse exportieren. Fügen Sie folgende Zeile in /etc/rc.conf ein: nfs_server_enable="YES" Exportieren Sie das Verzeichnis, in dem sich das Wurzelverzeichnis für den plattenlosen Betrieb befindet, indem Sie folgende Zeile in /etc/exports einfügen (passen Sie dabei den Einhängpunkt an und ersetzen Sie margaux durch den Namen Ihres plattenlosen Rechners): /data/misc -alldirs -ro margaux Weisen sie nun mountd an, seine Konfigurationsdatei erneut einzulesen. Wenn Sie NFS erst in /etc/rc.conf aktivieren mussten, sollten Sie stattdessen den Rechner neu starten. Dadurch wird die Konfigurationsdatei ebenfalls neu eingelesen. &prompt.root; kill -HUP `cat /var/run/mountd.pid` Einen plattenlosen Kernel erzeugen plattenloser Betrieb Kernelkonfiguration Fügen Sie in Ihre Kernelkonfigurationsdatei zusätzlich folgende Optionen ein: options BOOTP # Use BOOTP to obtain IP address/hostname options BOOTP_NFSROOT # NFS mount root filesystem using BOOTP info options BOOTP_COMPAT # Workaround for broken bootp daemons. Außerdem können Sie die Optionen BOOTP_NFSV3 und BOOTP_WIRED_TO verwenden (sehen Sie sich dazu auch LINT an). Erzeugen Sie den neuen Kernel (lesen Sie dazu auch ) und kopieren Sie ihn unter dem in dhcpd.conf angegebenen Namen ins TFTP-Verzeichnis. Das root-Dateisystem erzeugen Root-Dateisystem plattenloser Betrieb Sie müssen für den plattenlosen Rechner ein root-Dateisystem erzeugen, und zwar an dem in dhcpd.conf als root-path festgelegten Ort. Der einfachste Weg, dies zu tun, ist die Verwendung des Shellskripts /usr/share/examples/diskless/clone_root. Dieses Skript muss von Ihnen allerdings noch angepasst werden. Unbedingt nötig ist der Ort, an dem das Dateisystem erzeugt werden soll. Dies geschieht über die Variable DEST. Die Kommentare am Anfang des Skripts enthalten weitere Informationen. Dort wird erklärt, wie das Basisdateisystem erzeugt wird und wie einzelne Dateien durch angepasste Versionen für den plattenlosen Betrieb, für ein Subnetzwerk oder für einen speziellen Rechner ersetzt werden. Ebenfalls enthalten sind Beispiele für /etc/fstab und /etc/rc.conf, die für den plattenlosen Betrieb angepasst sind. Die README-Dateien unter /usr/share/examples/diskless enthalten sehr viele interessante Hintergrundinformationen. Gemeinsam mit den Beispielen im Verzeichnis diskless beschreiben sie allerdings eine Konfigurationsmethode, die von der in clone_root und /etc/rc.diskless[12] abweicht. Dies kann etwas verwirrend sein. Verwenden Sie diese Dateien also nur, wenn Sie weitere Informationen benötigen. Es sei denn, Sie wollen die dort beschriebene Methode verwenden. In diesem Fall müssen Sie allerdings die rc-Skripte anpassen. Den Auslagerungsbereich konfigurieren Falls nötig, kann eine auf dem NFS-Server liegende Datei als Auslagerungsdatei eingerichtet werden. Die genauen Optionen für bootptab oder dhcpd.conf sind zurzeit allerdings nicht vollständig dokumentiert. Die folgenden Einstellungen wurden bereits auf einigen Systemen mit isc-dhcp 3.0rc11 erfolgreich getestet. Fügen Sie folgende Zeilen in dhcpd.conf ein: # Global section option swap-path code 128 = string; option swap-size code 129 = integer 32; host margaux { ... # Standard lines, see above option swap-path "192.168.4.4:/netswapvolume/netswap"; option swap-size 64000; } Die Idee dahinter ist, dass es sich bei der Option 128 von DHCP/BOOTP (zumindest auf einem FreeBSD-Client) um den Pfad zur NFS-Auslagerungsdatei handelt. Option 129 hingegen gibt die Größe der Auslagerungsdatei in Kilobytes an. Ältere Versionen von dhcpd erlaubten auch Folgendes: option option-128 ".... Diese Option scheint allerdings nicht mehr zu funktionieren. /etc/bootptab würde hingegen folgende Syntax verwenden: T128="192.168.4.4:/netswapvolume/netswap":T129=64000 Erzeugen Sie die Auslagerungsdatei(en) auf dem NFS-Server. &prompt.root; mkdir /netswapvolume/netswap &prompt.root; cd /netswapvolume/netswap &prompt.root; dd if=/dev/zero bs=1024 count=64000 of=swap.192.168.4.6 &prompt.root; chmod 0600 swap.192.168.4.6 192.168.4.6 ist die IP-Adresse des plattenlosen Clients. Auf dem NFS-Server, auf dem die Auslagerungsdatei liegt, fügen Sie in /etc/exports folgende Zeile ein: /netswapvolume -maproot=0:10 -alldirs margaux Anschließend weisen Sie (wie bereits beschrieben) mountd an, die Exportdatei erneut einzulesen. Verschiedenes Schreibgeschütztes Dateisystem <filename>/usr</filename> plattenloser Betrieb /usr schreibgeschützt Wenn am plattenlosen Rechner X läuft, müssen Sie die Konfigurationsdatei von xdm anpassen, da Fehlermeldungen per Voreinstellung auf /usr geschrieben werden. Der Server läuft nicht unter FreeBSD Wenn das root-Dateisystem nicht auf einem FreeBSD-Rechner liegt, muss das Dateisystem zuerst unter FreeBSD erzeugt werden. Anschließend wird es beispielsweise mit tar oder cpio an den gewünschten Ort kopiert. Dabei kann es Probleme mit den Gerätedateien in /dev geben, die durch eine unterschiedliche Darstellung der Major- und Minor-Number von Geräten auf beiden Systemen hervorgerufen werden. Eine Problemlösung besteht darin, das root-Verzeichnis auf einem FreeBSD einzuhängen und die Gerätedateien dort mit MAKEDEV zu erzeugen (seit FreeBSD 5.0 werden Gerätedateien allerdings mit &man.devfs.5; erzeugt, ein Ausführen von MAKEDEV ist unter diesen Versionen daher sinnlos). ISDN – diensteintegrierendes digitales Netzwerk ISDN Eine gute Quelle für Informationen zu ISDN ist die ISDN-Seite von Dan Kegel. Welche Informationen finden Sie in diesem Abschnitt? Wenn Sie in Europa leben, könnte der Abschnitt über ISDN-Karten für Sie interessant sein. Wenn Sie ISDN hauptsächlich dazu verwenden wollen, um sich über einen Anbieter ins Internet einzuwählen, sollten Sie den Abschnitt über Terminaladapter lesen. Dies ist die flexibelste Methode, die auch die wenigsten Probleme verursacht. Wenn Sie zwei Netzwerke miteinander verbinden, oder sich über eine ISDN-Standleitung mit dem Internet verbinden wollen, finden Sie entsprechende Informationen im Abschnitt über Router und Bridges. Bei der Wahl der gewünschten Lösung sind die entstehenden Kosten ein entscheidender Faktor. Die folgenden Beschreibungen reichen von der billigsten bis zur teuersten Variante. Hellmuth Michaelis Beigetragen von ISDN-Karten ISDN Karten Das ISDN-Subsystem von FreeBSD unterstützt den DSS1/Q.931- (oder Euro-ISDN)-Standard nur für passive Karten. Beginnend mit FreeBSD 4.4 werden auch einige aktive Karten unterstützt, bei denen die Firmware auch andere Signalprotokolle unterstützt; dies schließt auch die erste ISDN-Karte mit Primärmultiplex-Unterstützung mit ein. isdn4bsd erlaubt es Ihnen, sich unter Verwendung von IP over raw HDLC oder synchronem PPP mit anderen ISDN-Routern zu verbinden. Dazu verwenden Sie entweder Kernel-&man.ppp.8; (via isppp, einem modifizierten sppp-Treiber), oder Sie benutzen User-&man.ppp.8;. Wenn Sie User-&man.ppp.8; verwenden, können Sie zwei oder mehrere ISDN-B-Kanäle bündeln. Im Paket enthalten ist auch ein Programm mit Anrufbeantworterfunktion sowie verschiedene Werkzeuge, wie ein Softwaremodem, das 300 Baud unterstützt. FreeBSD unterstützt eine ständig wachsende Anzahl von PC-ISDN-Karten, die weltweit erfolgreich eingesetzt werden. Von FreeBSD unterstützte passive ISDN-Karten enthalten fast immer den ISAC/HSCX/IPAC ISDN-Chipsatz von Infineon (ehemals Siemens). Unterstützt werden aber auch Karten mit Cologne Chip (diese allerdings nur für den ISA-Bus), PCI-Karten mit Winbond W6692 Chipsatz, einige Karten mit dem Tiger 300/320/ISAC Chipsatz sowie einige Karten mit einem herstellerspezifischen Chipsatz, wie beispielsweise die Fritz!Card PCI V.1.0 und die Fritz!Card PnP von AVM. An aktiven ISDN-Karten werden derzeit die AVM B1 BRI-Karten (ISA und PCI-Version) sowie die AVM T1 PRI-Karten (PCI-Version) unterstützt. Informationen zu isdn4bsd finden Sie im Verzeichnis /usr/share/examples/isdn/ Ihres FreeBSD-Systems, oder auf der Internetseite von isdn4bsd. Dort finden Sie auch Verweise zu Tipps, Korrekturen, sowie weiteren Informationen, wie dem isdn4bsd-Handbuch. Falls Sie an der Unterstützung eines zusätzlichen ISDN-Protokolls, einer weiteren ISDN-Karte oder an einer anderen Erweiterung von isdn4bsd interessiert sind, wenden Sie sich bitte an &a.hm;. Für Fragen zur Installation, Konfiguration und zu sonstigen Problemen von isdn4bsd gibt es die Mailingliste &a.isdn.name;. ISDN-Terminaladapter Terminaladapter Terminaladapter (TA) sind für ISDN, was Modems für analoge Telefonleitungen sind. Modem Die meisten Terminaladapter verwenden den Standardbefehlssatz für Modems von Hayes (AT-Kommandos) und können daher als Modemersatz verwendet werden. Ein Terminaladapter funktioniert prinzipiell wie ein Modem, allerdings erfolgt der Verbindungsaufbau um einiges schneller. Die Konfiguration von PPP entspricht dabei exakt der eines Modems. Stellen Sie dabei allerdings die serielle Geschwindigkeit so hoch wie möglich ein. PPP Der Hauptvorteil bei der Verwendung eines Terminaladapters zur Verbindung mit einem Internetanbieter ist die Möglichkeit zur Nutzung von dynamischem PPP. Da IP-Adressen immer knapper werden, vergeben die meisten Provider keine statischen IP-Adressen mehr. Die meisten Router unterstützen allerdings keine dynamische Zuweisung von IP-Adressen. Der PPP-Daemon bestimmt die Stabilität und Eigenschaften der Verbindung, wenn Sie einen Terminaladapter verwenden. Daher können Sie unter FreeBSD einfach von einer Modemverbindung auf eine ISDN-Verbindung wechseln, wenn Sie PPP bereits konfiguriert haben. Allerdings bedeutet dies auch, das bereits bestehende Probleme mit PPP auch unter ISDN auftreten werden. Wenn Sie an maximaler Stabilität interessiert sind, verwenden Sie Kernel-PPP, und nicht das User-PPP. Folgende Terminaladapter werden von FreeBSD unterstützt: Motorola BitSurfer und Bitsurfer Pro Adtran Die meisten anderen Terminaladapter werden wahrscheinlich ebenfalls funktionieren, da die Hersteller von Terminaladaptern darauf achten, dass ihre Produkte den Standardbefehlssatz möglichst gut unterstützen. Das wirkliche Problem mit einem externen Terminaladapter ist, dass, ähnlich wie bei Modems, eine gute serielle Karte eine Grundvoraussetzung ist. Sie sollten sich die Anleitung für die Nutzung serieller Geräte unter FreeBSD ansehen, wenn Sie detaillierte Informationen über serielle Geräte und die Unterschiede zwischen asynchronen und synchronen seriellen Ports benötigen. Ein Terminaladapter, der an einem (asynchronen) seriellen Standardport angeschlossen ist, beschränkt Sie auf 115,2 Kbs. Dies selbst dann, wenn Sie eine Verbindung mit 128 Kbs haben. Um die volle Leistungsfähigkeit von ISDN (128 Kbs) nutzen zu können, müssen Sie den Terminaladapter daher an eine synchrone serielle Karte anschließen. Kaufen Sie keinen internen Terminaladapter in der Hoffnung, damit das synchron/asynchron-Problem vermeiden zu können. Interne Terminaladapter haben einen (asynchronen) seriellen Standardportchip eingebaut. Der einzige Vorteil interner Terminaladapter ist es, dass Sie sich den Kauf eines seriellen Kabels ersparen und dass Sie ein Stromkabel weniger haben. Eine synchrone Karte mit einem Terminaladapter ist mindestens so schnell wie ein autonomer ISDN-Router, und, in Kombination mit einem einfachen 386-FreeBSD-System, wahrscheinlich flexibler. Die Entscheidung zwischen synchroner Karte/Terminaladapter und einem autonomen ISDN-Router ist eine beinahe religiöse Angelegenheit. Zu diesem Thema gibt es viele Diskussionen in den Mailinglisten. Suchen Sie in den Archiven danach, wenn Sie an der kompletten Diskussion interessiert sind. ISDN-Bridges und Router ISDN Autonome Bridge/Router ISDN-Bridges und Router sind keine Eigenheit von FreeBSD oder eines anderen Betriebssystems. Für eine vollständigere Beschreibung von Routing und Netzwerkkopplungen mit einer Bridge informieren Sie sich bitte durch weiterführende Literatur. In diesem Abschnitt werden die Begriffe Router und Bridge synonym verwendet. ISDN-Router und Bridges werden immer günstiger und damit auch immer beliebter. Ein ISDN-Router ist eine kleine Box, die direkt an Ihr lokales Ethernet-Netzwerk angeschlossen wird und sich mit mit einem Router oder einer Bridge verbindet. Die eingebaute Software ermöglicht die Kommunikation über PPP oder andere beliebte Protokolle. Ein Router ermöglicht einen deutlich höheren Datendurchsatz als ein herkömmlicher Terminaladapter, da er eine vollsynchrone ISDN-Verbindung nutzt. Das Hauptproblem mit ISDN-Routern und Bridges ist, dass die Zusammenarbeit zwischen Geräten verschiedener Hersteller nach wie vor ein Problem ist. Wenn Sie sich auf diese Weise mit einem Internetanbieter verbinden wollen, klären Sie daher vorher ab, welche Anforderungen Ihre Geräte erfüllen müssen. Eine ISDN-Bridge ist eine einfache und wartungsarme Lösung, zwei Netze, beispielsweise Ihr privates Netz und Ihr Firmennetz, miteinander zu verbinden. Da Sie die technische Ausstattung für beide Seiten kaufen müssen, ist sichergestellt, dass die Verbindung funktionieren wird. Um beispielsweise einen privaten Computer oder eine Zweigstelle mit dem Hauptnetzwerk zu verbinden, könnte folgende Konfiguration verwendet werden: Kleines Netzwerk (Privatnetz) 10 base 2 Das Netzwerk basiert auf der Bustopologie mit 10base2 Ethernet (Thinnet). Falls nötig, stellen Sie die Verbindung zwischen Router und Netzwerkkabel mit einem AUI/10BT-Transceiver her. ---Sun Workstation | ---FreeBSD Rechner | ---Windows 95 | Autonomer Router | ISDN BRI Verbindung 10Base2 - Ethernet Wenn Sie nur einen einzelnen Rechner verbinden wollen, können Sie auch ein Twisted-Pair-Kabel (Cross-Over) verwenden, das direkt an den Router angeschlossen wird. Großes Netzwerk (Firmennetz) 10 base T Dieses Netzwerk basiert auf der Sterntopologie und 10baseT Ethernet (Twisted Pair). -------Novell Server | H | | ---Sun | | | U ---FreeBSD | | | ---Windows 95 | B | |___---Autonomer Router | ISDN BRI Verbindung ISDN Netzwerkdiagramm Ein großer Vorteil der meisten Router und Bridges ist es, dass man gleichzeitig zwei unabhängige PPP-Verbindungen zu zwei verschiedenen Zielen aufbauen kann. Diese Funktion bieten die meisten Terminaladapter nicht. Die Ausnahme sind spezielle (meist teure) Modelle, die über zwei getrennte serielle Ports verfügen. Verwechseln Sie dies aber nicht mit Kanalbündelung oder MPP. Dies kann sehr nützlich sein, wenn Sie eine ISDN-Standleitung in Ihrem Büro haben, die sie aufteilen wollen, ohne eine zusätzliche ISDN-Leitung zu installieren. Ein ISDN-Router kann über einen B-Kanal (64 Kbps) eine dedizierte Verbindung ins Internet aufbauen, und gleichzeitig den anderen B-Kanal für eine separate Datenverbindung nutzen. Der zweite B-Kanal kann beispielsweise für ein- oder ausgehende Verbindungen verwendet werden. Sie können ihn aber auch dynamisch mit dem ersten B-Kanal bündeln, um Ihre Bandbreite zu erhöhen. IPX/SPX Eine Ethernet-Bridge kann Daten nicht nur im IP-Protokoll, sondern auch in beliebigen anderen Protokollen versenden. Bill Swingle Beigetragen von Eric Ogren Erweitert von Udo Erdelhoff NIS/YP (Network Information Service) Was ist NIS? NIS Solaris HP-UX AIX Linux NetBSD OpenBSD NIS (Network Information Service) wurde von Sun Microsystems entwickelt, um &unix;-Systeme (ursprünglich &sunos;) zentral verwalten zu können. Mittlerweile hat es sich zu einem Industriestandard entwickelt, der von allen wichtigen &unix;-Systemen (&solaris;, HP-UX, &aix;, Linux, NetBSD, OpenBSD, FreeBSD und anderen) unterstützt wird. yellow pages NIS NIS war ursprünglich als Yellow Pages bekannt, aus markenrechtlichen Gründen wurde der Name aber geändert. Die alte Bezeichnung (sowie die Abkürzung YP) wird aber nach wie vor häufig verwendet. NIS Domänen Bei NIS handelt es sich um ein RPC-basiertes Client/Server-System. Eine Gruppe von Rechnern greift dabei innerhalb einer NIS-Domäne auf gemeinsame Konfigurationsdateien zu. Ein Systemadministrator wird dadurch in die Lage versetzt, NIS-Clients mit minimalem Aufwand einzurichten, sowie Änderungen an der Systemkonfiguration von einem zentralen Ort aus durchzuführen. Windows NT Die Funktion entspricht dem Domänensystem von &windowsnt;; auch wenn sich die interne Umsetzung unterscheidet, sind die Basisfunktionen vergleichbar. Wichtige Prozesse und Begriffe Es gibt verschiedene Begriffe und Anwenderprozesse, auf die Sie stoßen werden, wenn Sie NIS unter FreeBSD einrichten, egal ob Sie einen Server oder einen Client konfigurieren: portmap Begriff Beschreibung NIS-Domänenname Ein NIS-Masterserver sowie alle Clients (inklusive der Slaveserver) haben einen NIS-Domänennamen. Dieser hat (ähnlich den &windowsnt;-Domänennamen) nichts mit DNS zu tun. portmap Muss laufen, damit RPC (Remote Procedure Call, ein von NIS verwendetes Netzwerkprotokoll) funktioniert. NIS-Server sowie Clients funktionieren ohne portmap nicht. ypbind Bindet einen NIS-Client an seinen NIS-Server. Der Client bezieht den NIS-Domänennamen vom System und stellt über das RPC-Protokoll eine Verbindung zum NIS-Server her. ypbind ist der zentrale Bestandteil der Client-Server-Kommunikation in einer NIS-Umgebung. Wird ypbind auf einem Client beendet, ist dieser nicht mehr in der Lage, auf den NIS-Server zuzugreifen. ypserv Sollte nur auf dem NIS-Server laufen, da es sich um den Serverprozess selbst handelt. Wenn &man.ypserv.8; nicht mehr läuft, kann der Server nicht mehr auf NIS-Anforderungen reagieren (wenn ein Slaveserver existiert, kann dieser als Ersatz fungieren). Einige NIS-Systeme (allerdings nicht das von FreeBSD) versuchen allerdings erst gar nicht, sich mit einem anderen Server zu verbinden, wenn der bisher verwendete Server nicht mehr reagiert. Die einzige Lösung dieses Problems besteht dann darin, den Serverprozess (oder gar den Server selbst) oder den ypbind-Prozess auf dem Client neu zu starten. rpc.yppasswdd Ein weiterer Prozess, der nur auf dem NIS-Masterserver laufen sollte. Es handelt sich um einen Daemonprozess, der es NIS-Clients ermöglicht, sich auf dem NIS-Masterserver anzumelden, um ihr Passwort zu ändern. Wie funktioniert NIS? In einer NIS-Umgebung gibt es drei Rechnerarten: Masterserver, Slaveserver und Clients. Server dienen als zentraler Speicherort für Rechnerkonfigurationen. Masterserver speichern die maßgebliche Kopie dieser Informationen, während Slaveserver diese Informationen aus Redundanzgründen spiegeln. Die Clients beziehen ihre Informationen immer vom Server. Auf diese Art und Weise können Informationen aus verschiedenen Dateien von mehreren Rechnern gemeinsam verwendet werden. master.passwd, group, und hosts werden oft gemeinsam über NIS verwendet. Immer, wenn ein Prozess auf einem Client auf Informationen zugreifen will, die normalerweise in lokalen Dateien vorhanden wären, wird stattdessen eine Anfrage an den NIS-Server gestellt, an den der Client gebunden ist. Arten von NIS-Rechnern NIS Masterserver Ein NIS-Masterserver verwaltet, ähnlich einem &windowsnt;-Domänencontroller, die von allen NIS-Clients gemeinsam verwendeten Dateien. passwd, group, sowie verschiedene andere von den Clients verwendete Dateien existieren auf dem Masterserver. Ein Rechner kann auch für mehrere NIS-Domänen als Masterserver fungieren. Dieser Abschnitt konzentriert sich im Folgenden allerdings auf eine relativ kleine NIS-Umgebung. NIS Slaveserver NIS-Slaveserver. Ähnlich einem &windowsnt;-Backupdomänencontroller, verwalten NIS-Slaveserver Kopien der Daten des NIS-Masterservers. NIS-Slaveserver bieten die Redundanz, die für kritische Umgebungen benötigt wird. Zusätzlich entlasten Slaveserver den Masterserver: NIS-Clients verbinden sich immer mit dem NIS-Server, der zuerst reagiert. Dieser Server kann auch ein Slaveserver sein. NIS Client NIS-Clients. NIS-Clients identifizieren sich gegenüber dem NIS-Server (ähnlich den &windowsnt;-Workstations), um sich am Server anzumelden. NIS/YP konfigurieren Dieser Abschnitt beschreibt an Hand eines Beispiels die Einrichtung einer NIS-Umgebung. Es wird dabei davon ausgegangen, dass Sie FreeBSD 3.3 oder eine aktuellere Version verwenden. Wahrscheinlich funktioniert diese Anleitung auch für FreeBSD-Versionen ab 3.0, es gibt dafür aber keine Garantie. Planung Nehmen wir an, Sie seien der Administrator eines kleinen Universitätsnetzes. Dieses Netz besteht aus fünfzehn FreeBSD-Rechnern, für die derzeit keine zentrale Verwaltung existiert, jeder Rechner hat also eine eigene Version von /etc/passwd und /etc/master.passwd. Diese Dateien werden manuell synchron gehalten; legen Sie einen neuen Benutzer an, so muss dies auf allen fünfzehn Rechnern manuell erledigt werden (unter Verwendung von adduser). Da diese Lösung sehr ineffizient ist, soll das Netzwerk in Zukunft NIS verwenden, wobei zwei der Rechner als Server dienen sollen. In Zukunft soll das Netz also wie folgt aussehen: Rechnername IP-Adresse Rechneraufgabe ellington 10.0.0.2 NIS-Master coltrane 10.0.0.3 NIS-Slave basie 10.0.0.4 Workstation der Fakultät bird 10.0.0.5 Clientrechner cli[1-11] 10.0.0.[6-17] Verschiedene andere Clients Wenn Sie NIS das erste Mal einrichten, ist es ratsam, sich zuerst über die Vorgangsweise Gedanken zu machen. Unabhängig von der Größe Ihres Netzwerks müssen Sie stets einige Entscheidungen treffen. Einen NIS-Domänennamen wählen NIS Domänenname Dies muss nicht der Domainname sein. Es handelt sich vielmehr um den NIS-Domainnamen. Wenn ein Client Informationen anfordert, ist in dieser Anforderung der Name der NIS-Domäne enthalten. Dadurch weiß jeder Server im Netzwerk, auf welche Anforderung er antworten muss. Stellen Sie sich den NIS-Domänennamen als den Namen einer Gruppe von Rechnern vor, die etwas gemeinsam haben. Manchmal wird der Name der Internetdomäne auch für die NIS-Domäne verwendet. Dies ist allerdings nicht empfehlenswert, da dies bei der Behebung von Problemen verwirrend sein kann. Der Name der NIS-Domäne sollte innerhalb Ihres Netzwerks einzigartig sein. Hilfreich ist es, wenn der Name die Gruppe der in ihr zusammengefassten Rechner beschreibt. Die Kunstabteilung von Acme Inc. hätte daher die NIS-Domäne acme-art. Für unser Beispiel verwenden wir den NIS-Domänennamen test-domain. SunOS Es gibt jedoch auch Betriebssysteme (vor allem &sunos;), die als NIS-Domänennamen den Name der Internetdomäne verwenden. Wenn dies für einen oder mehrere Rechner Ihres Netzwerks zutrifft, müssen Sie den Namen der Internetdomäne als Ihren NIS-Domänennamen verwenden. Anforderungen an den Server Wenn Sie einen NIS-Server einrichten wollen, müssen Sie einige Dinge beachten. Eine unangenehme Eigenschaft von NIS ist die Abhängigkeit der Clients vom Server. Wenn sich der Client nicht über den Server mit seiner NIS-Domäne verbinden kann, wird der Rechner oft unbenutzbar, da das Fehlen von Benutzer- und Gruppeninformationen zum Einfrieren des Clients führt. Daher sollten Sie für den Server einen Rechner auswählen, der nicht regelmäßig neu gestartet werden muss und der nicht für Testversuche verwendet wird. Idealerweise handelt es sich um einen alleinstehenden Rechner, dessen einzige Aufgabe es ist, als NIS-Server zu dienen. Wenn Sie ein Netzwerk haben, das nicht zu stark ausgelastet ist, ist es auch möglich, den NIS-Server als weiteren Dienst auf einem anderen Rechner laufen zu lassen. Denken Sie aber daran, dass ein Ausfall des NIS-Servers alle NIS-Clients betrifft. NIS-Server Die verbindlichen Kopien aller NIS-Informationen befinden sich auf einem einzigen Rechner, dem NIS-Masterserver. Die Datenbanken, in denen die Informationen gespeichert sind, bezeichnet man als NIS-Maps. Unter FreeBSD werden diese Maps unter /var/yp/[domainname] gespeichert, wobei [domainname] der Name der NIS-Domäne ist. Ein einzelner NIS-Server kann gleichzeitig mehrere NIS-Domänen verwalten, daher können auch mehrere Verzeichnisse vorhanden sein. Jede Domäne verfügt über ein eigenes Verzeichnis sowie einen eigenen, von anderen Domänen unabhängigen Satz von NIS-Maps. NIS-Master- und Slaveserver verwenden den ypserv-Daemon, um NIS-Anfragen zu bearbeiten. ypserv empfängt eingehende Anfragen der NIS-Clients, ermittelt aus der angeforderten Domäne und Map einen Pfad zur entsprechenden Datenbank, und sendet die angeforderten Daten von der Datenbank zum Client. Einen NIS-Masterserver einrichten NIS Serverkonfiguration Abhängig von Ihren Anforderungen ist die Einrichtung eines NIS-Masterservers relativ einfach, da NIS von FreeBSD bereits in der Standardkonfiguration unterstützt wird. Sie müssen nur folgende Zeilen in /etc/rc.conf einfügen: nisdomainname="test-domain" Diese Zeile setzt den NIS-Domänennamen auf test-domain, wenn Sie das Netzwerk initialisieren (beispielsweise nach einem Systemstart). nis_server_enable="YES" Dadurch werden die NIS-Serverprozesse gestartet. nis_yppasswdd_enable="YES" Durch diese Zeile wird der rpc.yppasswdd-Daemon aktiviert, der, wie bereits erwähnt, die Änderung von NIS-Passwörtern von einem Client aus ermöglicht. In Abhängigkeit von Ihrer NIS-Konfiguration können weitere Einträge erforderlich sein. Weitere Informationen finden Sie im Abschnitt NIS-Server, die auch als NIS-Clients arbeiten. Nun müssen Sie nur noch /etc/netstart als Superuser ausführen, um alles entsprechend Ihren Vorgaben in /etc/rc.conf einzurichten. Die NIS-Maps initialisieren NIS maps NIS-Maps sind Datenbanken, die sich im Verzeichnis /var/yp befinden. Sie werden am NIS-Masterserver aus den Konfigurationsdateien unter /etc erzeugt. Einzige Ausnahme: /etc/master.passwd. Dies ist auch sinnvoll, da Sie die Passwörter für Ihr root- bzw. andere Administratorkonten nicht an alle Server der NIS-Domäne verteilen wollen. Bevor Sie also die NIS-Maps des Masterservers einrichten, sollten Sie Folgendes tun: &prompt.root; cp /etc/master.passwd /var/yp/master.passwd &prompt.root; cd /var/yp &prompt.root; vi master.passwd Entfernen Sie alle Systemkonten (wie bin, tty, kmem oder games), sowie alle Konten, die Sie nicht an die NIS-Clients weitergeben wollen (beispielsweise root und alle Konten mit der UID 0 (=Superuser). Stellen Sie sicher, dass /var/yp/master.passwd weder von der Gruppe noch von der Welt gelesen werden kann (Zugriffsmodus 600)! Ist dies nicht der Fall, ändern Sie dies mit chmod. Tru64 UNIX Nun können Sie die NIS-Maps initialisieren. FreeBSD verwendet für diese Aufgabe das Skript ypinit (weiteres erfahren Sie in der Hilfeseite &man.ypinit.8;). Dieses Skript ist auf fast allen UNIX-Betriebssystemen verfügbar. Bei Digitals Unix/Compaq Tru64 UNIX nennt es sich allerdings ypsetup. Da wir Maps für einen NIS-Masterserver erzeugen, verwenden wir ypinit mit der Option . Nachdem Sie die beschriebenen Aktionen durchgeführt haben, erzeugen Sie nun die NIS-Maps: ellington&prompt.root; ypinit -m test-domain Server Type: MASTER Domain: test-domain Creating an YP server will require that you answer a few questions. Questions will all be asked at the beginning of the procedure. Do you want this procedure to quit on non-fatal errors? [y/n: n] n Ok, please remember to go back and redo manually whatever fails. If you don't, something might not work. At this point, we have to construct a list of this domains YP servers. rod.darktech.org is already known as master server. Please continue to add any slave servers, one per line. When you are done with the list, type a <control D>. master server : ellington next host to add: coltrane next host to add: ^D The current list of NIS servers looks like this: ellington coltrane Is this correct? [y/n: y] y [..output from map generation..] NIS Map update completed. ellington has been setup as an YP master server without any errors. Dadurch erzeugt ypinit /var/yp/Makefile aus der Datei /var/yp/Makefile.dist. Durch diese Datei wird festgelegt, dass Sie in einer NIS-Umgebung mit nur einem Server arbeiten und dass alle Clients unter FreeBSD laufen. Da test-domain aber auch über einen Slaveserver verfügt, müssen Sie /var/yp/Makefile entsprechend anpassen: ellington&prompt.root; vi /var/yp/Makefile Sie sollten die Zeile NOPUSH = "True" auskommentieren (falls dies nicht bereits der Fall ist). Einen NIS-Slaveserver einrichten NIS Slaveserver Ein NIS-Slaveserver ist noch einfacher einzurichten als ein Masterserver. Melden Sie sich am Slaveserver an und ändern Sie /etc/rc.conf analog zum Masterserver. Der einzige Unterschied besteht in der Verwendung der Option , wenn Sie ypinit aufrufen. Die Option erfordert den Namen des NIS-Masterservers, daher sieht unsere Ein- und Ausgabe wie folgt aus: coltrane&prompt.root; ypinit -s ellington test-domain Server Type: SLAVE Domain: test-domain Master: ellington Creating an YP server will require that you answer a few questions. Questions will all be asked at the beginning of the procedure. Do you want this procedure to quit on non-fatal errors? [y/n: n] n Ok, please remember to go back and redo manually whatever fails. If you don't, something might not work. There will be no further questions. The remainder of the procedure should take a few minutes, to copy the databases from ellington. Transferring netgroup... ypxfr: Exiting: Map successfully transferred Transferring netgroup.byuser... ypxfr: Exiting: Map successfully transferred Transferring netgroup.byhost... ypxfr: Exiting: Map successfully transferred Transferring master.passwd.byuid... ypxfr: Exiting: Map successfully transferred Transferring passwd.byuid... ypxfr: Exiting: Map successfully transferred Transferring passwd.byname... ypxfr: Exiting: Map successfully transferred Transferring group.bygid... ypxfr: Exiting: Map successfully transferred Transferring group.byname... ypxfr: Exiting: Map successfully transferred Transferring services.byname... ypxfr: Exiting: Map successfully transferred Transferring rpc.bynumber... ypxfr: Exiting: Map successfully transferred Transferring rpc.byname... ypxfr: Exiting: Map successfully transferred Transferring protocols.byname... ypxfr: Exiting: Map successfully transferred Transferring master.passwd.byname... ypxfr: Exiting: Map successfully transferred Transferring networks.byname... ypxfr: Exiting: Map successfully transferred Transferring networks.byaddr... ypxfr: Exiting: Map successfully transferred Transferring netid.byname... ypxfr: Exiting: Map successfully transferred Transferring hosts.byaddr... ypxfr: Exiting: Map successfully transferred Transferring protocols.bynumber... ypxfr: Exiting: Map successfully transferred Transferring ypservers... ypxfr: Exiting: Map successfully transferred Transferring hosts.byname... ypxfr: Exiting: Map successfully transferred coltrane has been setup as an YP slave server without any errors. Don't forget to update map ypservers on ellington. Sie sollten nun über das Verzeichnis /var/yp/test-domain verfügen. Die Kopien der NIS-Masterserver-Maps sollten sich in diesem Verzeichnis befinden. Allerdings müssen Sie diese auch aktuell halten. Die folgenden Einträge in /etc/crontab erledigen diese Aufgabe: 20 * * * * root /usr/libexec/ypxfr passwd.byname 21 * * * * root /usr/libexec/ypxfr passwd.byuid Diese zwei Zeilen zwingen den Slaveserver, seine Maps mit denen des Masterservers zu synchronisieren. Diese Einträge sind nicht zwingend, da der Masterserver versucht, alle Änderungen seiner NIS-Maps an seine Slaveserver weiterzugeben. Da Passwortinformationen aber für vom Server abhängige Systeme vital sind, ist es eine gute Idee, diese Aktualisierungen zu erzwingen. Besonders wichtig ist dies in stark ausgelasteten Netzen, in denen Map-Aktualisierungen unvollständig sein könnten. Führen Sie nun /etc/netstart auch auf dem Slaveserver aus, um den NIS-Server erneut zu starten. NIS-Clients Ein NIS-Client bindet sich unter Verwendung des ypbind-Daemons an einen NIS-Server. ypbind prüft die Standarddomäne des Systems (die durch domainname gesetzt wird), und beginnt RPCs über das lokale Netzwerk zu verteilen (broadcast). Diese Anforderungen legen den Namen der Domäne fest, für die ypbind eine Bindung erzeugen will. Wenn der Server der entsprechenden Domäne eine solche Anforderung erhält, schickt er eine Antwort an ypbind. ybind speichert daraufhin die Adresse des Servers. Wenn mehrere Server verfügbar sind (beispielsweise ein Master- und mehrere Slaveserver), verwendet ypbind die erste erhaltene Adresse. Ab diesem Zeitpunkt richtet der Client alle Anfragen an genau diesen Server. ypbind pingt den Server gelegentlich an, um sicherzustellen, dass der Server funktioniert. Antwortet der Server innerhalb eines bestimmten Zeitraums nicht (Timeout), markiert ypbind die Domäne als ungebunden und beginnt erneut, RPCs über das Netzwerk zu verteilen, um einen anderen Server zu finden. Einen NIS-Client konfigurieren NIS Client konfigurieren Einen FreeBSD-Rechner als NIS-Client einzurichten, ist recht einfach. Fügen Sie folgende Zeilen in /etc/rc.conf ein, um den NIS-Domänennamen festzulegen, und um ypbind bei der Initialisierung des Netzwerks zu starten: nisdomainname="test-domain" nis_client_enable="YES" Um alle Passworteinträge des NIS-Servers zu importieren, löschen Sie alle Benutzerkonten in /etc/master.passwd und fügen mit vipw folgende Zeile am Ende der Datei ein: +::::::::: Diese Zeile legt für alle gültigen Benutzerkonten der NIS-Server-Maps einen Zugang an. Es gibt verschiedene Wege, Ihren NIS-Client durch Änderung dieser Zeile zu konfigurieren. Lesen Sie dazu auch den Abschnitt über Netzgruppen weiter unten. Weitere detaillierte Informationen finden Sie im Buch Managing NFS and NIS von O'Reilly. Sie sollten zumindest ein lokales Benutzerkonto, das nicht über NIS importiert wird, in Ihrer /etc/master.passwd behalten. Dieser Benutzer sollte außerdem ein Mitglied der Gruppe wheel sein. Wenn es mit NIS Probleme gibt, können Sie diesen Zugang verwenden, um sich anzumelden, root zu werden und das Problem zu beheben. Um alle möglichen Gruppeneinträge vom NIS-Server zu importieren, fügen sie folgende Zeile in /etc/group ein: +:*:: Nachdem Sie diese Schritte erledigt haben, sollten Sie mit ypcat passwd die passwd-Map des NIS-Server anzeigen können. Sicherheit unter NIS NIS Sicherheit Im Allgemeinen kann jeder entfernte Anwender einen RPC an &man.ypserv.8; schicken, um den Inhalt Ihrer NIS-Maps abzurufen, falls er Ihren NIS-Domänennamen kennt. Um solche unautorisierten Transaktionen zu verhindern, unterstützt &man.ypserv.8; securenets, durch die man den Zugriff auf bestimmte Rechner beschränken kann. &man.ypserv.8; versucht, beim Systemstart die Informationen über securenets aus der Datei /var/yp/securenets zu laden. Die Datei securenets kann auch in einem anderen Verzeichnis stehen, das mit der Option angegeben wird. Diese Datei enthält Einträge, die aus einer Netzwerkadresse und einer Netzmaske bestehen, die durch Leerzeichen getrennt werden. Kommentarzeilen beginnen mit #. /var/yp/securnets könnte beispielsweise so aussehen: # allow connections from local host -- mandatory 127.0.0.1 255.255.255.255 # allow connections from any host # on the 192.168.128.0 network 192.168.128.0 255.255.255.0 # allow connections from any host # between 10.0.0.0 to 10.0.15.255 # this includes the machines in the testlab 10.0.0.0 255.255.240.0 Wenn &man.ypserv.8; eine Anforderung von einer zu diesen Regeln passenden Adresse erhält, wird die Anforderung bearbeitet. Gibt es keine passende Regel, wird die Anforderung ignoriert und eine Warnmeldung aufgezeichnet. Wenn /var/yp/securenets nicht vorhanden ist, erlaubt ypserv Verbindungen von jedem Rechner aus. ypserv unterstützt auch das tcpwrapper-Paket von Wietse Venema. Mit diesem Paket kann der Administrator für Zugriffskontrollen die Konfigurationsdateien von tcpwrapper anstelle von /var/yp/securenets verwenden. Während beide Kontrollmechanismen einige Sicherheit gewähren, beispielsweise durch privilegierte Ports, sind sie gegenüber IP spoofing-Attacken verwundbar. Jeder NIS-Verkehr sollte daher von Ihrer Firewall blockiert werden. Server, die /var/yp/securenets verwenden, können Schwierigkeiten bei der Anmeldung von Clients haben, die ein veraltetes TCP/IP-Subsystem besitzen. Einige dieser TCP/IP-Subsysteme setzen alle Rechnerbits auf Null, wenn Sie einen Broadcast durchführen und/oder können die Subnetzmaske nicht auslesen, wenn sie die Broadcast-Adresse berechnen. Einige Probleme können durch Änderungen der Clientkonfiguration behoben werden. Andere hingegen lassen sich nur durch das Entfernen des betreffenden Rechners aus dem Netzwerk oder den Verzicht auf /var/yp/securenets umgehen. Die Verwendung von /var/yp/securenets auf einem Server mit einem solch veralteten TCP/IP-Subsystem ist eine sehr schlechte Idee, die zu einem Verlust der NIS-Funktionalität für große Teile Ihres Netzwerks führen kann. tcpwrapper Die Verwendung von tcpwrapper verlangsamt die Reaktion Ihres NIS-Servers. Diese zusätzliche Reaktionszeit kann in Clientprogrammen zu Timeouts führen. Dies vor allem in Netzwerken, die stark ausgelastet sind, oder nur über langsame NIS-Server verfügen. Wenn ein oder mehrere Ihrer Clientsysteme dieses Problem aufweisen, sollten Sie die betreffenden Clients in NIS-Slaveserver umwandeln, und diese an sich selbst binden. Bestimmte Benutzer an der Anmeldung hindern NIS Benutzer blockieren In unserem Labor gibt es den Rechner basie, der nur für Mitarbeiter der Fakultät bestimmt ist. Wir wollen diesen Rechner nicht aus der NIS-Domäne entfernen, obwohl passwd des NIS-Masterservers Benutzerkonten sowohl für Fakultätsmitarbeiter als auch für Studenten enthält. Was können wir also tun? Es gibt eine Möglichkeit, bestimmte Benutzer an der Anmeldung an einem bestimmten Rechner zu hindern, selbst wenn diese in der NIS-Datenbank vorhanden sind. Dazu müssen Sie lediglich an diesem Rechner den Eintrag -Benutzername an das Ende von /etc/master.passwd setzen, wobei Benutzername der zu blockierende Benutzername ist. Diese Änderung sollte bevorzugt durch vipw erledigt werden, da vipw Ihre Änderungen an /etc/master.passwd auf Plausibilität überprüft und nach erfolgter Änderung die Passwortdatenbank automatisch aktualisiert. Um also den Benutzer bill an der Anmeldung am Rechner basie zu hindern, gehen wir wie folgt vor: basie&prompt.root; vipw [add -bill to the end, exit] vipw: rebuilding the database... vipw: done basie&prompt.root; cat /etc/master.passwd root:[password]:0:0::0:0:The super-user:/root:/bin/csh toor:[password]:0:0::0:0:The other super-user:/root:/bin/sh daemon:*:1:1::0:0:Owner of many system processes:/root:/sbin/nologin operator:*:2:5::0:0:System &:/:/sbin/nologin bin:*:3:7::0:0:Binaries Commands and Source,,,:/:/sbin/nologin tty:*:4:65533::0:0:Tty Sandbox:/:/sbin/nologin kmem:*:5:65533::0:0:KMem Sandbox:/:/sbin/nologin games:*:7:13::0:0:Games pseudo-user:/usr/games:/sbin/nologin news:*:8:8::0:0:News Subsystem:/:/sbin/nologin man:*:9:9::0:0:Mister Man Pages:/usr/share/man:/sbin/nologin bind:*:53:53::0:0:Bind Sandbox:/:/sbin/nologin uucp:*:66:66::0:0:UUCP pseudo-user:/var/spool/uucppublic:/usr/libexec/uucp/uucico xten:*:67:67::0:0:X-10 daemon:/usr/local/xten:/sbin/nologin pop:*:68:6::0:0:Post Office Owner:/nonexistent:/sbin/nologin nobody:*:65534:65534::0:0:Unprivileged user:/nonexistent:/sbin/nologin +::::::::: -bill basie&prompt.root; Udo Erdelhoff Beigetragen von Netzgruppen verwenden Netzgruppen Die im letzten Abschnitt beschriebene Methode eignet sich besonders, wenn Sie spezielle Regeln für wenige Benutzer oder wenige Rechner benötigen. In großen Netzwerken werden Sie allerdings mit Sicherheit vergessen, einige Benutzer von der Anmeldung an bestimmten Rechnern auszuschließen. Oder Sie werden gezwungen sein, jeden Rechner einzeln zu konfigurieren. Dadurch verlieren Sie aber den Hauptvorteil von NIS, die zentrale Verwaltung. Die Lösung für dieses Problem sind Netzgruppen. Ihre Aufgabe und Bedeutung ist vergleichbar mit normalen, von UNIX-Dateisystemen verwendeten Gruppen. Die Hauptunterschiede sind das Fehlen einer numerischen ID sowie die Möglichkeit, Netzgruppen zu definieren, die sowohl Benutzer als auch andere Netzgruppen enthalten. Netzgruppen wurden entwickelt, um große, komplexe Netzwerke mit Hunderten Benutzern und Rechnern zu verwalten. Sie sind also von Vorteil, wenn Sie von dieser Situation betroffen sind. Andererseits ist es dadurch beinahe unmöglich, Netzgruppen mit einfachen Beispielen zu erklären. Das hier verwendete Beispiel veranschaulicht dieses Problem. Nehmen wir an, dass Ihre erfolgreiche Einführung von NIS die Aufmerksamkeit Ihrer Vorgesetzten geweckt hat. Ihre nächste Aufgabe besteht nun darin, Ihre NIS-Domäne um zusätzliche Rechner zu erweitern. Die folgenden Tabellen enthalten die neuen Benutzer und Rechner inklusive einer kurzen Beschreibung. Benutzername(n) Beschreibung alpha, beta Beschäftigte der IT-Abteilung charlie, delta Die neuen Lehrlinge der IT-Abteilung echo, foxtrott, golf, ... Normale Mitarbeiter able, baker, ... Externe Mitarbeiter Rechnername(n) Beschreibung war, death, famine, pollution Ihre wichtigsten Server. Nur IT-Fachleute dürfen sich an diesen Rechnern anmelden. pride, greed, envy, wrath, lust, sloth Weniger wichtige Server. Alle Mitarbeiter der IT-Abteilung dürfen sich auf diesen Rechnern anmelden. one, two, three, four, ... Gewöhnliche Arbeitsrechner. Nur die wirklichen Mitarbeiter dürfen diese Rechner verwenden. trashcan Ein sehr alter Rechner ohne kritische Daten. Sogar externe Mitarbeiter dürfen diesen Rechner verwenden. Wollten Sie diese Einschränkungen umsetzen, indem Sie jeden Benutzer einzeln blockieren, müssten Sie auf jedem System für jeden Benutzer eine Zeile in passwd einfügen. Wenn Sie nur einen Eintrag vergessen, haben Sie ein Problem. Es mag noch angehen, dies während der ersten Installation zu erledigen, im täglichen Betrieb werden Sie allerdings mit Sicherheit einmal vergessen, die entsprechenden Einträge anzulegen. Vergessen Sie nicht: Murphy war Optimist. Die Verwendung von Netzgruppen hat in dieser Situation mehrere Vorteile. Sie müssen nicht jeden Benutzer einzeln verwalten; weisen Sie stattdessen den Benutzer einer Netzgruppe zu und erlauben oder verbieten Sie allen Mitglieder dieser Gruppe die Anmeldung an einem Server. Wenn Sie einen neuen Rechner hinzufügen, müssen Sie Zugangsbeschränkungen nur für die Netzgruppen festlegen. Legen Sie einen neuen Benutzer an, müssen Sie ihn nur einer oder mehrere Netzgruppen zuweisen. Diese Veränderungen sind voneinander unabhängig; Anweisungen der Form für diese Kombination aus Benutzer und Rechner mache Folgendes ... sind nicht mehr nötig. Wenn Sie die Einrichtung von NIS sorgfältig geplant haben, müssen Sie nur noch eine zentrale Konfigurationsdatei bearbeiten, um den Zugriff auf bestimmte Rechner zu erlauben oder zu verbieten. Der erste Schritt ist die Initialisierung der NIS-Maps der Netzgruppe. &man.ypinit.8; kann dies unter FreeBSD nicht automatisch durchführen. Sind die Maps aber erst einmal erzeugt, werden sie jedoch von NIS problemlos unterstützt. Um eine leere Map zu erzeugen, geben Sie Folgendes ein: ellington&prompt.root; vi /var/yp/netgroup Danach legen Sie die Einträge an. Für unser Beispiel benötigen wir mindestens vier Netzgruppen: IT-Beschäftige, IT-Lehrlinge, normale Beschäftigte sowie Externe. IT_EMP (,alpha,test-domain) (,beta,test-domain) IT_APP (,charlie,test-domain) (,delta,test-domain) USERS (,echo,test-domain) (,foxtrott,test-domain) \ (,golf,test-domain) INTERNS (,able,test-domain) (,baker,test-domain) Bei IT_EMP, IT_APP usw. handelt es sich um Netzgruppennamen. In den Klammern werden diesen Netzgruppen jeweils ein oder mehrere Benutzerkonten hinzugefügt. Die drei Felder in der Klammer haben folgende Bedeutung: Der Name des Rechners, auf dem die folgenden Werte gültig sind. Legen Sie keinen Rechnernamen fest, ist der Eintrag auf allen Rechnern gültig. Dadurch gehen Sie vielen Problemen aus dem Weg. Der Name des Benutzerkontos, der zu dieser Netzgruppe gehört. Die NIS-Domäne für das Benutzerkonto. Sie können Benutzerkonten von anderen NIS-Domänen in Ihre Netzgruppe importieren, wenn Sie mehrere NIS-Domänen verwalten. Jedes Feld kann Wildcards enthalten. Die Einzelheiten entnehmen Sie bitte &man.netgroup.5;. Netzgruppen Netzgruppennamen sollten nicht länger als 8 Zeichen sein, vor allem dann, wenn Sie Rechner mit verschiedenen Betriebssystemen in Ihrer NIS-Domäne haben. Es wird zwischen Groß- und Kleinschreibung unterschieden. Die Verwendung von Großbuchstaben für Netzgruppennamen ermöglicht eine leichte Unterscheidung zwischen Benutzern, Rechnern und Netzgruppen. Einige NIS-Clients (dies gilt nicht für FreeBSD) können keine Netzgruppen mit einer großen Anzahl von Einträgen verwalten. Einige ältere Versionen von &sunos; haben beispielsweise Probleme, wenn Netzgruppen mehr als fünfzehn Einträge enthalten. Sie können dieses Problem umgehen, indem Sie mehrere Subnetzgruppen mit weniger als fünfzehn Benutzern anlegen und diese Subnetzgruppen wiederum in einer Netzgruppe zusammenfassen: BIGGRP1 (,joe1,domain) (,joe2,domain) (,joe3,domain) [...] BIGGRP2 (,joe16,domain) (,joe17,domain) [...] BIGGRP3 (,joe31,domain) (,joe32,domain) BIGGROUP BIGGRP1 BIGGRP2 BIGGRP3 Sie können diesen Vorgang wiederholen, wenn Sie mehr als 255 Benutzer in einer einzigen Netzgruppe benötigen. Das Aktivieren und Verteilen Ihre neuen NIS-Map ist einfach: ellington&prompt.root; cd /var/yp ellington&prompt.root; make Dadurch werden die NIS-Maps netgroup, netgroup.byhost und netgroup.byuser erzeugt. Prüfen Sie die Verfügbarkeit Ihrer neuen NIS-Maps mit &man.ypcat.1;. ellington&prompt.user; ypcat -k netgroup ellington&prompt.user; ypcat -k netgroup.byhost ellington&prompt.user; ypcat -k netgroup.byuser Die Ausgabe des ersten Befehls gibt den Inhalt von /var/yp/netgroup wieder. Der zweite Befehl erzeugt nur dann eine Ausgabe, wenn Sie rechnerspezifische Netzgruppen erzeugt haben. Der dritte Befehl gibt die Netzgruppen nach Benutzern sortiert aus. Die Einrichtung der Clients ist einfach. Sie müssen lediglich auf dem Server war &man.vipw.8; aufrufen und die Zeile +::::::::: durch +@IT_EMP::::::::: ersetzen. Ab sofort werden nur noch die Daten der in der Netzgruppe IT_EMP vorhandenen Benutzer in die Passwortdatenbank von war importiert. Nur diese Benutzer dürfen sich am Server anmelden. Unglücklicherweise gilt diese Einschränkung auch für die ~-Funktion der Shell und für alle Routinen, die auf Benutzernamen und numerische Benutzer-IDs zugreifen. Oder anders formuliert, cd ~user ist nicht möglich, ls -l zeigt die numerische Benutzer-ID statt dem Benutzernamen und find . -user joe -print erzeugt die Fehlermeldung No such user. Um dieses Problem zu beheben, müssen Sie alle Benutzereinträge importieren, ohne ihnen jedoch zu erlauben, sich an Ihrem Server anzumelden. Dazu fügen Sie eine weitere Zeile in /etc/master.passwd ein. Diese Zeile sollte ähnlich der folgenden aussehen: +:::::::::/sbin/nologin, was in etwa Importiere alle Einträge, aber ersetze die Shell in den importierten Einträgen durch /sbin/nologin entspricht. Sie können jedes Feld dieses Eintrages ersetzen, indem Sie einen Standardwert in /etc/master.passwd eintragen. Stellen Sie sicher, dass die Zeile +:::::::::/sbin/nologin nach der Zeile +@IT_EMP::::::::: eingetragen ist. Sonst haben alle via NIS importierten Benutzerkonten /sbin/nologin als Loginshell. Danach müssen Sie nur mehr eine einzige NIS-Map ändern, wenn ein neuer Mitarbeiter berücksichtigt werden muss. Für weniger wichtige Server gehen Sie analog vor, indem Sie den alten Eintrag +::::::::: in den lokalen Versionen von /etc/master.passwd durch folgende Einträge ersetzen: +@IT_EMP::::::::: +@IT_APP::::::::: +:::::::::/sbin/nologin Die entsprechenden Zeilen für normale Arbeitsplätze lauten: +@IT_EMP::::::::: +@USERS::::::::: +:::::::::/sbin/nologin Ab jetzt wäre alles wunderbar, allerdings ändert sich kurz darauf die Firmenpolitik: Die IT-Abteilung beginnt damit, externe Mitarbeiter zu beschäftigen. Externe dürfen sich an normalen Arbeitsplätzen sowie an den weniger wichtigen Servern anmelden. Die IT-Lehrlinge dürfen sich nun auch an den Hauptservern anmelden. Sie legen also die neue Netzgruppe IT_INTERN an, weisen Ihr die neuen IT-Externen als Benutzer zu und beginnen damit, die Konfiguration auf jedem einzelnen Rechner zu ändern ... Halt. Sie haben gerade die alte Regel Fehler in der zentralisierten Planung führen zu globaler Verwirrung. bestätigt. Da NIS in der Lage ist, Netzgruppen aus anderen Netzgruppen zu bilden, lassen sich solche Situationen leicht vermeiden. Eine Möglichkeit ist die Erzeugung rollenbasierter Netzgruppen. Sie könnten eine Netzgruppe BIGSRV erzeugen, um den Zugang zu den wichtigsten Servern zu beschränken, eine weitere Gruppe SMALLSRV für die weniger wichtigen Server und eine dritte Netzgruppe USERBOX für die normalen Arbeitsplatzrechner. Jede dieser Netzgruppen enthält die Netzgruppen, die sich auf diesen Rechnern anmelden dürfen. Die Einträge der Netzgruppen in der NIS-Map sollten ähnlich den folgenden aussehen: BIGSRV IT_EMP IT_APP SMALLSRV IT_EMP IT_APP ITINTERN USERBOX IT_EMP ITINTERN USERS Diese Methode funktioniert besonders gut, wenn Sie Rechner in Gruppen mit identischen Beschränkungen einteilen können. Unglücklicherweise ist dies die Ausnahme und nicht die Regel. Meistens werden Sie die Möglichkeit zur rechnerspezischen Zugangsbeschränkung benötigen. Rechnerspezifische Netzgruppen sind die zweite Möglichkeit, um mit den oben beschriebenen Änderungen umzugehen. In diesem Szenario enthält /etc/master.passwd auf jedem Rechner zwei mit + beginnende Zeilen. Die erste Zeile legt die Netzgruppe mit den Benutzern fest, die sich auf diesem Rechner anmelden dürfen. Die zweite Zeile weist allen anderen Benutzern /sbin/nologin als Shell zu. Verwenden Sie auch hier (analog zu den Netzgruppen) Großbuchstaben für die Rechnernamen. Die Zeilen sollten also ähnlich den folgenden aussehen: +@BOXNAME::::::::: +:::::::::/sbin/nologin Wenn Sie dies für alle Rechner erledigt haben, werden Sie die lokalen Versionen von /etc/master.passwd nie mehr verändern müssen. Alle weiteren Änderungen geschehen über die NIS-Maps. Nachfolgend ein Beispiel für eine mögliche Netzgruppen-Map, die durch einige Besonderheiten erweitert wurde: # Define groups of users first IT_EMP (,alpha,test-domain) (,beta,test-domain) IT_APP (,charlie,test-domain) (,delta,test-domain) DEPT1 (,echo,test-domain) (,foxtrott,test-domain) DEPT2 (,golf,test-domain) (,hotel,test-domain) DEPT3 (,india,test-domain) (,juliet,test-domain) ITINTERN (,kilo,test-domain) (,lima,test-domain) D_INTERNS (,able,test-domain) (,baker,test-domain) # # Now, define some groups based on roles USERS DEPT1 DEPT2 DEPT3 BIGSRV IT_EMP IT_APP SMALLSRV IT_EMP IT_APP ITINTERN USERBOX IT_EMP ITINTERN USERS # # And a groups for a special tasks # Allow echo and golf to access our anti-virus-machine SECURITY IT_EMP (,echo,test-domain) (,golf,test-domain) # # machine-based netgroups # Our main servers WAR BIGSRV FAMINE BIGSRV # User india needs access to this server POLLUTION BIGSRV (,india,test-domain) # # This one is really important and needs more access restrictions DEATH IT_EMP # # The anti-virus-machine mentioned above ONE SECURITY # # Restrict a machine to a single user TWO (,hotel,test-domain) # [...more groups to follow] Wenn Sie eine Datenbank verwenden, um Ihre Benutzerkonten zu verwalten, sollten Sie den ersten Teil der NIS-Map mit Ihren Datenbanktools erstellen können. Auf diese Weise haben neue Benutzer automatisch Zugriff auf die Rechner. Eine letzte Warnung: Es ist nicht immer ratsam, rechnerbasierte Netzgruppen zu verwenden. Wenn Sie Dutzende oder gar Hunderte identische Rechner einrichten müssen, sollten Sie rollenbasierte Netzgruppen verwenden, um die Grösse der NIS-Maps in Grenzen zu halten. Weitere wichtige Punkte Nachdem Sie Ihre NIS-Umgebung eingerichtet haben, müssen Sie einige Dinge anders als bisher erledigen. Jedes Mal, wenn Sie einen neuen Benutzer anlegen wollen, tun Sie dies ausschließlich am NIS-Masterserver. Außerdem müssen Sie anschließend die NIS-Maps neu erzeugen. Wenn Sie diesen Punkt vergessen, kann sich der neue Benutzer nur am NIS-Masterserver anmelden. Wenn Sie also den neuen Benutzer jsmith anlegen, gehen Sie wie folgt vor: &prompt.root; pw useradd jsmith &prompt.root; cd /var/yp &prompt.root; make test-domain Statt pw useradd jsmith könnten Sie auch adduser jsmith verwenden. Tragen Sie die Administratorkonten nicht in die NIS-Maps ein. Administratorkonten und Passwörter dürfen nicht auf Rechnern verbreitet werden, auf denen sich Benutzer anmelden können, die auf diese Konten keine Zugriff haben sollen. Sichern Sie die NIS-Master- und Slaveserver und minimieren Sie die Ausfallzeiten. Wenn diese Rechner gehackt oder einfach nur ausgeschaltet werden, haben viele Leute keinen Netzwerkzugriff mehr. - Dies ist die größte und wichtigste Schwäche + Dies ist die größte Schwäche jeder zentralen Verwaltung. Wenn Sie Ihre NIS-Server nicht schützen, werden Sie viele verärgerte Anwender haben. Kompatibilität zu NIS v1 NIS Kompatibilität zu NIS v1 ypserv unterstützt NIS v1 unter FreeBSD nur eingeschränkt. Die NIS-Implementierung von FreeBSD verwendet nur NIS v2, andere Implementierungen unterstützen aus Gründen der Abwärtskompatibilität mit älteren Systemen auch NIS v1. Die mit diesen Systemen gelieferten ypbind-Daemonen versuchen, sich an einen NIS-v1-Server zu binden (Dies selbst dann, wenn sie ihn nie benötigen. Außerdem versuchen Sie auch dann, einen v1-Server zu erreichen, wenn Sie zuvor eine Antwort von einem v2-Server erhalten.). Während normale Clientaufrufe unter FreeBSD unterstützt werden, sind Anforderungen zum Transfer von v1-Maps nicht möglich. Daher kann FreeBSD nicht als Client oder Server verwendet werden, wenn ein NIS-Server vorhanden ist, der nur NIS v1 unterstützt. Glücklicherweise sollte es heute keine Server mehr geben, die nur NIS v1 unterstützen. NIS-Server, die auch als NIS-Clients arbeiten Wenn Sie ypserv in einer Multi-Serverdomäne verwenden, in der NIS-Server gleichzeitig als NIS-Clients arbeiten, ist es eine gute Idee, diese Server zu zwingen, sich an sich selbst zu binden. Damit wird verhindert, dass Bindeanforderungen gesendet werden und sich die Server gegenseitig binden. Sonst könnten seltsame Fehler auftreten, wenn ein Server ausfällt, auf den andere Server angewiesen sind. Letztlich werden alle Clients einen Timeout melden, und versuchen, sich an andere Server zu binden. Die dadurch entstehende Verzögerung kann beträchtlich sein. Außerdem kann der Fehler erneut auftreten, da sich die Server wiederum aneinander binden könnten. Sie können einen Rechner durch die Verwendung von ypbind sowie der Option zwingen, sich an einen bestimmten Server zu binden. Um diesen Vorgang zu automatisieren, können Sie folgende Zeilen in /etc/rc.conf einfügen: nis_client_enable="YES" # run client stuff as well nis_client_flags="-S NIS domain,server" Lesen Sie &man.ypbind.8;, wenn Sie weitere Informationen benötigen. Passwort Formate NIS Passwort Formate Unterschiedliche Passwort-Formate sind die Hauptprobleme, die beim Einrichten eines NIS-Servers auftreten können. Wenn der NIS-Server mit DES verschlüsselte Passwörter verwendet, werden nur Clients unterstützt, die ebenfalls DES benutzen. Wenn sich auf Ihrem Netzwerk beispielsweise &solaris; NIS-Clients befinden, müssen die Passwörter mit DES verschlüsselt werden. Welches Format die Server und Clients verwenden, steht in /etc/login.conf. Wenn ein System Passwörter mit DES verschlüsselt, enthält die default-Klasse einen Eintrag wie den folgenden: default:\ :passwd_format=des:\ :copyright=/etc/COPYRIGHT:\ [weitere Einträge] Mögliche Werte für passwd_format sind unter anderem blf und md5 (mit Blowfish und MD5 verschlüsselte Passwörter). Wenn die Datei /etc/login.conf geändert wird, muss die Login-Capability Datenbank neu erstellt werden. Setzen Sie dazu als root den folgenden Befehl ab: &prompt.root; cap_mkdb /etc/login.conf Das Format der schon in /etc/master.passwd befindlichen Passwörter wird erst aktualisiert, wenn ein Benutzer sein Passwort ändert, nachdem die Datenbank neu erstellt wurde. Damit die Passwörter auch im gewählten Format abgespeichert werden, muss mit crypt_default in der Datei /etc/auth.conf die richtige Priorität der Formate eingestellt werden. Das gewählte Format sollte als erstes in der Liste stehen. Sollen die Passwörter mit DES verschlüsselt werden, verwenden Sie den folgenden Eintrag: crypt_default = des blf md5 Wenn Sie alle &os; NIS-Server und NIS-Clients entsprechend den obigen Schritten eingestellt haben, wird im ganzen Netzwerk dasselbe Passwort-Format verwendet. Falls Sie Probleme mit der Authentifizierung eines NIS-Clients haben, kontrollieren Sie die verwendeten Passwort-Formate. In einer heterogenen Umgebung werden Sie DES benutzen müssen, da dies der meist unterstützte Standard ist. Greg Sutter Geschrieben von DHCP - Dynamic Host Configuration Protocol Was ist DHCP? Dynamic Host Configuration Protocol DHCP Internet Software Consortium (ISC) Über DHCP, das Dynamic Host Configuration Protocol, kann sich ein System mit einem Netzwerk verbinden und die für die Kommunikation mit diesem Netzwerk nötigen Informationen beziehen. FreeBSD verwendet die DHCP-Implementation von ISC (Internet Software Consortium), daher beziehen sich alle implementationsspezifischen Informationen in diesem Abschnitt auf die ISC-Distribution. Übersicht Dieser Abschnitt beschreibt sowohl die Client- als auch die Serverseite des DHCP-Systems von ISC. Das Clientprogramm dhclient ist in FreeBSD integriert, das Serverprogramm kann über den Port net/isc-dhcp3 installiert werden. Mehr Informationen finden Sie in den Hilfeseiten &man.dhclient.8;, &man.dhcp-options.5; sowie &man.dhclient.conf.5;. Wie funktioniert DHCP? UDP Der DHCP-Client dhclient beginnt von einem Clientrechner aus über den UDP-Port 68 Konfigurationsinformationen anzufordern. Der Server antwortet auf dem UDP-Port 67, indem er dem Client eine IP-Adresse zuweist und ihm weitere wichtige Informationen über das Netzwerk, wie Netzmasken, Router und DNS-Server mitteilt. Diese Informationen werden als DHCP-Lease bezeichnet und sind nur für eine bestimmte Zeit, die vom Administrator des DHCP-Servers vorgegeben wird, gültig. Dadurch fallen verwaiste IP-Adressen, deren Clients nicht mehr mit dem Netzwerk verbunden sind, automatisch an den Server zurück. DHCP-Clients können sehr viele Informationen von einem DHCP-Server erhalten. Eine ausführliche Liste finden Sie in &man.dhcp-options.5;. Integration in FreeBSD Der ISC-DHCP-Client ist seit FreeBSD 3.2 vollständig in FreeBSD integriert. Sowohl während der Installation als auch im Basissystem steht der DHCP-Client zur Verfügung. In Netzen mit DHCP-Servern wird dadurch die Konfiguration von Systemen erheblich vereinfacht. sysinstall DHCP wird von sysinstall unterstützt. Richten Sie eine Netzkarte unter sysinstall ein, wird Ihnen zuerst folgende Frage gestellt: Wollen Sie diese Karte über DHCP einrichten? Wenn Sie diese Frage bejahen, wird dhclient aufgerufen, und die Netzkarte wird automatisch eingerichtet. Um DHCP beim Systemstart zu aktivieren, müssen Sie zwei Dinge erledigen: DHCP Anforderungen Stellen Sie sicher, dass bpf in Ihren Kernel kompiliert ist. Dazu fügen Sie die Zeile pseudo-device bpf in Ihre Kernelkonfigurationsdatei ein und erzeugen einen neuen Kernel. Mehr über die Kernelkonfiguration erfahren Sie in . Das Gerät bpf ist im GENERIC-Kernel bereits enthalten. Für die Nutzung von DHCP muss also kein angepasster Kernel erzeugt werden. Wenn Sie um die Sicherheit Ihres Systems besorgt sind, sollten Sie wissen, dass bpf auch zur Ausführung von Paketsniffern erforderlich ist (obwohl diese dennoch als root ausgeführt werden müssen). bpf muss vorhanden sein, damit DHCP funktioniert. Sind Sie sehr sicherheitsbewusst, sollten Sie bpf aus Ihrem Kernel entfernen, wenn Sie DHCP nicht verwenden. Fügen Sie folgende Zeile in /etc/rc.conf ein: ifconfig_fxp0="DHCP" Ersetzen Sie fxp0 durch den Eintrag für die Netzkarte, die Sie dynamisch einrichten wollen. Lesen Sie dazu auch . Wenn Sie dhclient an einem anderen Ort installiert haben, oder zusätzliche Flags an dhclient übergeben wollen, fügen Sie auch folgende (entsprechend angepasste) Zeilen ein: dhcp_program="/sbin/dhclient" dhcp_flags="" DHCP Server Der DHCP-Server dhcpd ist als Teil des net/isc-dhcp3-Ports verfügbar. Dieser Port enthält die komplette ISC-DHCP-Distribution, inklusive Client, Server, Relay-Agent und der Dokumentation. Dateien DHCP Konfigurationsdateien /etc/dhclient.conf dhclient benötigt die Konfigurationsdatei /etc/dhclient.conf. Diese Datei enthält normalerweise nur Kommentare, da die Vorgabewerte meistens ausreichend sind. Die Hilfeseite &man.dhclient.conf.5; beschreibt diese Konfigurationsdatei. /sbin/dhclient dhclient ist statisch gelinkt und befindet sich in /sbin. Mehr Informationen finden Sie in der Hilfeseite &man.dhclient.8;. /sbin/dhclient-script Bei dhclient-script handelt es sich um das FreeBSD-spezifische Konfigurationsskript des DHCP-Clients. Es wird in &man.dhclient-script.8; beschrieben und kann meist unverändert übernommen werden. /var/db/dhclient.leases Der DHCP-Client verfügt über eine Datenbank, die alle derzeit gültigen Leases enthält und als Logdatei erzeugt wird. Weitere Informationen finden Sie in &man.dhclient.8;. Weitere Informationen Das DHCP-Protokoll wird vollständig im RFC 2131 beschrieben. Eine weitere, lehrreiche Informationsquelle existiert unter dhcp.org. Einen DHCP-Server installieren und einrichten Übersicht Dieser Abschnitt beschreibt die Einrichtung eines FreeBSD-Systems als DHCP-Server. Dazu wird die DHCP-Implementation von ISC (Internet Software Consortium) verwendet. Der DHCP-Server ist nicht im Basissystem von FreeBSD enthalten, daher müssen Sie als erstes den Port net/isc-dhcp3 installieren. Lesen Sie , wenn Sie weitere Informationen zur Portssammlung benötigen. Den DHCP-Server installieren DHCP installieren Stellen Sie sicher, dass bpf in Ihren Kernel kompiliert ist. Dazu fügen Sie die Zeile pseudo-device bpf in Ihre Kernelkonfigurationsdatei ein und erzeugen einen neuen Kernel. Die Kernelkonfiguration wird in beschrieben. Das Gerät bpf ist im GENERIC-Kernel bereits enthalten. Für die Nutzung von DHCP muss also kein angepasster Kernel erzeugt werden. Wenn Sie um die Sicherheit Ihres Systems besorgt sind, sollten Sie wissen, dass bpf auch zur Ausführung von Paketsniffern erforderlich ist (obwohl diese dennoch als root ausgeführt werden müssen). bpf muss vorhanden sein, damit DHCP funktioniert. Sind Sie sehr sicherheitsbewusst, sollten Sie bpf aus Ihrem Kernel entfernen, wenn Sie DHCP nicht verwenden. Danach müssen Sie die vom Port net/isc-dhcp3 erzeugte Vorlage für dhcpd.conf anpassen. Die bei der Installation erzeugte Datei /usr/local/etc/dhcpd.conf.sample sollten Sie nach /usr/local/etc/dhcpd.conf kopieren, bevor Sie Veränderungen vornehmen. Den DHCP-Server einrichten DHCP dhcpd.conf dhcpd.conf besteht aus Festlegungen zu Subnetzen und Rechnern und lässt sich am besten an einem Beispiel erklären: option domain-name "example.com"; option domain-name-servers 192.168.4.100; option subnet-mask 255.255.255.0; default-lease-time 3600; max-lease-time 86400; ddns-update-style none; subnet 192.168.4.0 netmask 255.255.255.0 { range 192.168.4.129 192.168.4.254; option routers 192.168.4.1; } host mailhost { hardware ethernet 02:03:04:05:06:07; fixed-address mailhost.example.com; } Diese Option beschreibt die Domäne, die den Clients als Standardsuchdomäne zugewiesen wird. Weitere Informationen finden Sie in der Hilfeseite &man.resolv.conf.5;. Diese Option legt eine, durch Kommata getrennte Liste von DNS-Servern fest, die von den Clients verwendet werden sollen. Die den Clients zugewiesene Netzmaske. Ein Client kann eine Lease einer bestimmten Dauer anfordern. Geschieht dies nicht, weist der Server eine Lease mit einer vorgegebenen Ablaufdauer (in Sekunden) zu. Die maximale Zeitdauer, für die der Server Konfigurationsinformationen vergibt. Sollte ein Client eine längere Zeitspanne anfordern, wird dennoch nur der Wert max-lease-time in Sekunden zugewiesen. Diese Option legt fest, ob der DHCP-Server eine DNS-Aktualisierung versuchen soll, wenn Konfigurationsdateien vergeben oder zurückgezogen werden. In der ISC-Implementation muss diese Option gesetzt sein. Dadurch werden die IP-Adressen festgelegt, die den Clients zugewiesen werden können. IP-Adressen zwischen diesen Grenzen sowie die einschließenden Adressen werden den Clients zugewiesen. Legt den Standard-Gateway fest, der den Clients zugewiesen wird. Die (Hardware-)MAC-Adresse eines Rechners (durch die der DHCP-Server den Client erkennt, der eine Anforderung an ihn stellt). Einem Rechner soll immer die gleiche IP-Adresse zugewiesen werden. Beachten Sie, dass hier auch ein Rechnername gültig ist, da der DHCP-Server den Rechnernamen auflöst, bevor er die Konfigurationsinformationen zuweist. Nachdem Sie dhcpd.conf fertig konfiguriert haben, können Sie den DHCP-Server starten: &prompt.root; /usr/local/etc/rc.d/isc-dhcpd.sh start Sollten Sie die Konfiguration Ihres Servers einmal verändern müssen, reicht es nicht aus, ein SIGHUP-Signal an dhcpd zu senden, weil damit die Konfiguration nicht erneut geladen wird (im Gegensatz zu den meisten Daemonen). Sie müssen den Prozess vielmehr mit dem Signal SIGTERM stoppen, um ihn anschließend neu zu starten. Dateien Server Konfigurationsdateien /usr/local/sbin/dhcpd dhcpd ist statisch gelinkt und befindet sich in /usr/local/sbin. Lesen Sie auch die mit dem Port installierte Hilfeseite dhcpd(8), wenn Sie weitere Informationen zu dhcpd benötigen. /usr/local/etc/dhcpd.conf dhcpd benötigt die Konfigurationsdatei /usr/local/etc/dhcpd.conf, damit der Server den Clients seine Dienste anbieten kann. Diese Datei muss alle Informationen enthalten, die an die Clients weitergegeben werden soll. Außerdem sind hier Informationen zur Konfiguration des Servers enthalten. Die mit dem Port installierte Hilfeseite dhcpd.conf(5) enthält weitere Informationen. /var/db/dhcpd.leases Der DHCP-Server hat eine Datenbank, die alle vergebenen Leases enthält. Diese wird als Logdatei erzeugt. Weitere Informationen finden Sie in der vom Port installierten Hilfeseite dhcpd.leases(5). /usr/local/sbin/dhcrelay dhcrelay wird in komplexen Umgebungen verwendet, in denen ein DHCP-Server eine Anfrage eines Clients an einen DHCP-Server in einem separaten Netzwerk weiterleitet. Die vom Port installierte Hilfeseite dhcrelay(8) enthält weitere Informationen. DNS (Domain Name Service) Dieser Abschnitt ist noch nicht übersetzt. Lesen Sie bitte das Original in englischer Sprache. NTP (Network Time Protocol) Dieser Abschnitt ist noch nicht übersetzt. Lesen Sie bitte das Original in englischer Sprache. NATD (Network Address Translation Daemon) Dieser Abschnitt ist noch nicht übersetzt. Lesen Sie bitte das Original in englischer Sprache. inetd <quote>Super-Server</quote> Dieser Abschnitt ist noch nicht übersetzt. Lesen Sie bitte das Original in englischer Sprache. Parallel Line IP (PLIP) Dieser Abschnitt ist noch nicht übersetzt. Lesen Sie bitte das Original in englischer Sprache. IPv6 Dieser Abschnitt ist noch nicht übersetzt. Lesen Sie bitte das Original in englischer Sprache. diff --git a/de_DE.ISO8859-1/books/handbook/basics/chapter.sgml b/de_DE.ISO8859-1/books/handbook/basics/chapter.sgml index 0bfb510fe7..877a753c38 100644 --- a/de_DE.ISO8859-1/books/handbook/basics/chapter.sgml +++ b/de_DE.ISO8859-1/books/handbook/basics/chapter.sgml @@ -1,2087 +1,2087 @@ Chris Shumway Umgeschrieben von Uwe Pierau Übersetzt von Grundlagen des UNIX Betriebssystems Übersicht Grundlagen Das 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. Nachdem Sie dieses Kapitel gelesen haben, werden Sie Folgendes wissen: wie Zugriffsrechte unter &unix; Systemen funktionieren, wie Sie Zugriffskontrolllisten für Dateisysteme konfigurieren, was Prozesse, Dämonen und Signale sind, was eine Shell ist und wie Sie die Login Umgebung ändern, wie Sie mit Texteditoren umgehen, und wie Sie in den Manualpages nach weiteren Informationen suchen können, wie Sie mit virtuellen Konsolen umgehen. Zugriffsrechte UNIX FreeBSD, 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 zwei 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: Zugriffsrechte Dateizugriffsrechte Wert Zugriffsrechte Auflistung im Verzeichnis 0 Kein Lesen, Kein Schreiben, Kein Ausführen --- 1 Kein Lesen, Kein Schreiben, Ausführen --x 2 Kein Lesen, Schreiben, Kein Ausführen -w- 3 Kein Lesen, Schreiben, Ausführen -wx 4 Lesen, Kein Schreiben, Kein Ausführen r-- 5 Lesen, Kein Schreiben, Ausführen r-x 6 Lesen, Schreiben, Kein Ausführen rw- 7 Lesen, Schreiben, Ausführen rwx ls Verzeichnisse Sie 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 erste Spalte von ls -l könnte wie folgt aussehen: -rw-r--r-- Das erste Zeichen von links ist ein Symbol, welches angibt, ob es sich um eine normale Datei, ein Verzeichnis, ein Character-Device, 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;. Tom Rhodes Beigesteuert von Symbolische Zugriffsrechte Zugriffsrechte symbolische Die 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: Option Symbol Bedeutung Wer u Benutzer (user) Wer g Gruppe (group) Wer o Andere (other) Wer a Alle Aktion + Berechtigungen hinzufügen Aktion - Berechtigungen entziehen Aktion = Berechtigungen explizit setzen Berechtigung r lesen (read) Berechtigung w schreiben (write) Berechtigung x ausführen (execute) Berechtigung t Sticky-Bit Berechtigung s Set-UID oder Set-GID Symbolische Zugriffsrechte werden wie die numerischen - mit dem Kommando chmod vergeben. Wenn + 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= FILE Wenn Sie mehr als eine Änderung der Rechte einer Datei vornehmen wollen, können Sie eine durch Kommata getrennte Liste der Rechte angeben. Das folgende Beispiel entzieht der Gruppe und der Welt (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 FILE Mit symbolischen Zugriffsrechten können Sie Rechte hinzufügen oder Rechte wegnehmen. Numerische Zugriffsrechte erlauben nur das explizite Setzen der Zugriffsrechte. Verzeichnis-Strukturen Verzeichnis Hierarchien Die FreeBSD Verzeichnis Hierarchie ist die Grundlange, 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 beinhalten /usr, /var, /mnt und /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. Konsultieren Sie die &man.fstab.5; Manualpage für mehr Informationen über das Format der Datei /etc/fstab und den Optionen darin. 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: Verzeichnis Beschreibung / Root-Verzeichnis 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;. /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. /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/ports Die 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/yp NIS maps. Prozesse Da 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 init 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. &man.ps.1; zeigt eine statische Liste der laufenden Prozesse und kann deren PID, Speicherverbrauch und die Kommandozeile, mit der sie gestartet wurden und vieles mehr anzeigen. &man.top.1; zeigt alle laufenden Prozesse an und aktualisiert die Anzeige, so dass Sie Ihrem Computer bei der Arbeit zuschauen können. Normal zeigt Ihnen &man.ps.1; 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/sawfish Wie 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. 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 einige Programme viel Zeit mit dem Warten auf bestimmte Dinge verbringen, 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 Prozessen Wenn 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 Signalen Das folgende Beispiel zeigt, wie Sie &man.inetd.8; ein Signal schicken. Die Konfigurationsdatei von &man.inetd.8; ist /etc/inetd.conf und &man.inetd.8; liest die Konfigurationsdatei erneut 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 -wW Die 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; su Password: &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 <command>/bin/kill</command> benutzen? Viele Shells stellen kill als internes Kommando zur Verfügung, das heißt die Shell sendet das Signal direkt, anstatt /bin/kill zu starten. 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. Anhängen und Abhängen von Dateisystemen Ein Dateisystem wird am besten als ein Baum mit der Wurzel / veranschaulicht. /dev, /usr, und die anderen Verzeichnisse im Rootverzeichnis sind Zweige, die wiederum eigene Zweige wie /usr/local haben können. Root-Dateisystem Es gibt verschiedene Gründe, bestimmte dieser Verzeichnisse auf eigenen Dateisystemen anzulegen. /var enthält log/, spool/ sowie verschiedene andere temporäre Dateien und kann sich daher schnell füllen. Es empfiehlt sich, /var von / zu trennen, da es schlecht ist, wenn das Root-Dateisystem voll läuft. Ein weiterer Grund bestimmte Verzeichnisbäume auf andere Dateisysteme zu legen, ist gegeben, wenn sich die Verzeichnisbäume auf gesonderten physikalischen oder virtuellen Platten, wie Network File System oder CD-ROM Laufwerken, befinden. Die <filename>fstab</filename> Datei Dateisysteme fstab Während des Boot Prozesses werden in /etc/fstab aufgeführte Verzeichnisse, sofern sie nicht mit der Option versehen sind, automatisch angehangen. Die Zeilen in /etc/fstab haben das folgende Format: device /mount-point fstype options dumpfreq passno device Ein existierender Gerätename wie in beschrieben. mount-point Ein existierendes Verzeichnis, an das das Dateisystem angehangen wird. fstype Der Typ des Dateisystems, der an &man.mount.8; weitergegeben wird. Das default FreeBSD Dateisystem ist ufs. options Entweder für beschreibbare Dateisysteme oder für schreibgeschützte Dateisysteme, gefolgt von weiteren benötigten Optionen. Eine häufig verwendete Option ist für Dateisysteme, die während der normalen Bootsequenz nicht angehangen werden sollen. Weitere Optionen finden sich in &man.mount.8;. dumpfreq Gibt die Anzahl der Tage an, nachdem das Dateisystem gesichert werden soll. Fehlt der Wert, wird 0 angenommen. passno Bestimmt die Reihenfolge, in der die Dateisysteme überprüft werden sollen. Für Dateisysteme, die übersprungen werden sollen, ist passno auf 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 <command>mount</command> Kommando Dateisysteme anhängen &man.mount.8; hängt schließlich Dateisysteme an. In der grundlegenden Form wird es wie folgt benutzt: &prompt.root; mount device mountpoint Viele Optionen werden in &man.mount.8; beschrieben, die am häufigsten verwendeten sind: Optionen von <command>mount</command> Hängt alle Dateisysteme aus /etc/fstab an. Davon ausgenommen sind Dateisysteme, die mit noauto markiert sind, die mit der Option ausgeschlossen wurden und Dateisysteme, die schon angehangen sind. Führt den entsprechenden Systemcall nicht 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 an. Das kann auch durch Angabe von zu der Option erreicht werden. fstype Hä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: nodev Beachtet keine Gerätedateien auf dem Dateisystem. Dies ist eine nützliche Sicherheitsfunktion. noexec Verbietet das Ausführen von binären Dateien auf dem Dateisystem. Dies ist eine nützliche Sicherheitsfunktion. nosuid SetUID und SetGID Bits werden auf dem Dateisystem nicht beachtet. Dies ist eine nützliche Sicherheitsfunktion. Das <command>umount</command> Kommando Dateisysteme abhä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. Shells Shells Kommandozeile Von 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. Umgebungsvariablen Ein weiteres Merkmal der Shell ist der Gebrauch von Umgebungsvariablen. Dies sind veränderbare Schlüsselpaare im Umgebungsraum der Shell, die jedes von der Shell aufgerufene Programm lesen kann. Daher enthält der Umgebungsraum viele Konfigurationsdaten für Programme. Die folgende Liste zeigt verbreitete Umgebungsvariablen und was sie bedeuten: Umgebungsvariablen Variable Beschreibung USER Name des angemeldeten Benutzers. PATH Liste mit Verzeichnissen (getrennt durch Doppelpunkt) zum Suchen nach Programmen. DISPLAY Wenn gesetzt der Netzwerkname des X11 Bildschirms für die Anzeige. SHELL Die aktuelle Shell. TERM Name des Terminals des Benutzers. Benutzt, um die Fähigkeiten des Terminals bestimmen. TERMCAP Datenbankeintrag der Terminal Escape Codes, benötigt um verschieden Terminalfunktionen auszuführen. OSTYPE Typ des Betriebsystems. Z.B., FreeBSD. MACHTYPE Die CPU Architektur auf dem das System läuft. EDITOR Vom Benutzer bevorzugter Text-Editor. PAGER Vom Benutzer bevorzugter Text-Betrachter. MANPATH Liste mit Verzeichnissen (getrennt durch Doppelpunkt) zum Suchen nach Manualpages. Das 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/emacs Unter 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 Shell Der 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/bash Dasselbe 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/shells Danach können Sie chsh aufrufen. Text-Editoren Text Editoren Editoren Eine Menge der Konfiguration bei FreeBSD wird 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. ee Der 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, worin filename der Name der zu editierenden Datei ist. Um zum Beispiel /etc/rc.conf zu editieren, tippen Sie ee /etc/rc.conf. 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. vi Text Editoren vi emacs Text Editoren emacs FreeBSD 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 viel Textdateien editieren werden, sparen Sie auf lange Sicht mehr Zeit durch das Erlernen von Editoren wie vim oder emacs ein. Geräte und Gerätedateien Der Begriff Gerät wird meist in Verbindung mit Hardware wie Laufwerken, Druckern, Grafikkarten oder Tastaturen gebraucht. Der Großteil der Meldungen, die beim Booten von 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ätedateien Wenn 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 Skript Auf 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 ad1 Im Beispiel werden alle Gerätedateien für das zweite IDE Laufwerk angelegt. <literal>DEVFS</literal> (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;. - In der Grundeinstellung benutzt FreeBSD 5.0 - DEVFS. + DEVFS ist ab &os; 5.0 + in der Grundeinstellung aktiviert. Virtuelle Konsolen und Terminals virtuelle Konsole Terminals Sie 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 Konsole Konsole Wenn 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-Architektur Genau 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 Anmeldevorgang FreeBSD 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. In 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. Startskripten Nachdem FreeBSD gestartet ist und die Startskripten Startskripten sind Programme, die FreeBSD automatisch bei jedem Startvorgang ausführt. Der Zweck der Skripten 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. Virtuelle Konsolen Da 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 bereit Eine 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. <filename>/etc/ttys</filename> In der Voreinstellung stehen unter FreeBSD acht virtuelle Konsolen zur Verfügung, deren Anzahl Sie leicht erhöhen oder erniedrigen 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 secure Die 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-Modus Eine 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 secure In 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. Binärformate Um zu verstehen, warum FreeBSD das Format ELF 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. COFF Das Objektformat von SVR3. Der Header enthält nun eine Sectiontable. Man kann also mit mehr als nur den Sections .text, .data und .bss arbeiten. ELF 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. In 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 Informationen Manualpages Manualpages Die 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 Kommando Kommando 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 ls Die 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 chmod Dies 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 mail Mit 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 Dateien FreeBSD 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; info Eine kurze Einführung gibt es mit h; eine Befehlsreferenz erhalten Sie durch Eingabe von: ?. diff --git a/de_DE.ISO8859-1/books/handbook/book.sgml b/de_DE.ISO8859-1/books/handbook/book.sgml index 9156876bcb..f10aa475c5 100644 --- a/de_DE.ISO8859-1/books/handbook/book.sgml +++ b/de_DE.ISO8859-1/books/handbook/book.sgml @@ -1,268 +1,269 @@ %man; %bookinfo; %freebsd; %translators; %chapters; %authors; %teams; %mailing-lists; %newsgroups; %de-trademarks; %trademarks; %txtfiles; %pgpkeys; ]> FreeBSD Handbuch The FreeBSD German Documentation Project
de-bsd-translators@de.FreeBSD.org
Februar 1999 1995 1996 1997 1998 1999 2000 2001 2002 2003 The FreeBSD German Documentation Project &bookinfo.legalnotice; &tm-attrib.freebsd; &tm-attrib.3com; &tm-attrib.3ware; &tm-attrib.arm; &tm-attrib.adaptec; &tm-attrib.adobe; &tm-attrib.apple; &tm-attrib.corel; &tm-attrib.creative; &tm-attrib.heidelberger; &tm-attrib.ibm; &tm-attrib.ieee; &tm-attrib.intel; &tm-attrib.intuit; &tm-attrib.linux; &tm-attrib.lsilogic; &tm-attrib.m-systems; &tm-attrib.macromedia; &tm-attrib.microsoft; &tm-attrib.netscape; &tm-attrib.opengroup; &tm-attrib.oracle; &tm-attrib.powerquest; &tm-attrib.realnetworks; &tm-attrib.redhat; &tm-attrib.sap; &tm-attrib.sun; &tm-attrib.symantec; &tm-attrib.themathworks; &tm-attrib.thomson; &tm-attrib.usrobotics; &tm-attrib.vmware; &tm-attrib.waterloomaple; &tm-attrib.wolframresearch; &tm-attrib.xfree86; &tm-attrib.xiph; &tm-attrib.general; Willkommen bei FreeBSD! Dieses Handbuch beschreibt die Installation und den täglichen Umgang mit FreeBSD &rel2.current;-RELEASE und FreeBSD &rel.current;-RELEASE. Das Handbuch ist jederzeit unter Bearbeitung - und die Arbeit vieler Einzelpersonen. Manche Kapitel existieren noch + und das Ergebnis der Arbeit vieler Einzelpersonen. + Manche Kapitel existieren noch nicht und andere Kapitel müssen auf den neusten Stand gebracht werden. Wenn Sie an diesem Projekt mithelfen möchten, senden Sie bitte - eine E-Mail an die Mailingliste &a.de.translators;. Die letzte + eine E-Mail an die Mailingliste &a.de.translators;. Die aktuelle Version des Handbuchs ist immer auf dem FreeBSD Web Server verfügbar. Es kann außerdem in verschiedenen Formaten und in komprimierter Form vom FreeBSD - FTP Server oder einer der vielen + FTP Server oder einem der vielen Spiegel herunter geladen werden. Vielleicht möchten Sie das Handbuch auch durchsuchen.
&chap.preface; Erste Schritte Dieser Teil des FreeBSD Handbuchs richtet sich an Benutzer und Administratoren für die FreeBSD neu ist. Diese Kapitel geben Ihnen eine Einführung in FreeBSD, geleiten Sie durch den Installationsprozess, - erklären Ihnen einige Grundlagen + erklären Ihnen die Grundlagen von &unix; Systemen, zeigen Ihnen, wie Sie die Fülle der erhältlichen Anwendungen Dritter installieren und führen Sie in X, der Benutzeroberfläche von &unix; Systemen ein. Es wird gezeigt, wie Sie den Desktop konfigurieren, um effektiver arbeiten zu können. Wir haben uns bemüht, Referenzen auf weiter vorne liegende Textteile auf ein Minimum zu beschränken, so dass Sie diesen Teil des Handbuchs ohne viel Blättern durcharbeiten können. System Administration Die restlichen Kapitel behandeln alle Aspekte der FreeBSD Systemadministration. Am Anfang jedes Kapitels finden Sie eine Zusammenfassung, die beschreibt, was Sie nach dem Durcharbeiten des Kapitels gelernt haben. Weiterhin werden die Voraussetzungen beschrieben, die für das Durcharbeiten des Kapitels erforderlich sind. Diese Kapitel sollten Sie lesen, wenn Sie die Informationen darin benötigen. Sie brauchen Sie nicht in einer bestimmten Reihenfolge zu lesen, noch müssen Sie die Kapitel lesen, bevor Sie anfangen, FreeBSD zu benutzen. Anhang &chap.colophon;
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 15faa07c3b..bd59ef8bf1 100644 --- a/de_DE.ISO8859-1/books/handbook/cutting-edge/chapter.sgml +++ b/de_DE.ISO8859-1/books/handbook/cutting-edge/chapter.sgml @@ -1,1918 +1,1912 @@ Jim Mock Umstrukturiert und aktualisiert von Jordan Hubbard Im Original von Poul-Henning Kamp John Polstra Nik Clayton Martin Heinen Ü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 Sie den Unterschied der beiden Entwicklerversionen &os.stable; und &os.current; kennen, wissen, wie Sie Ihr System mit CVSup, CVS oder CTM aktualisieren. Wissen, wie Sie mit make world das komplette Basissystem wieder neu bauen und installieren können. Bevor Sie dieses Kapitel lesen, sollten Sie Ihr Netzwerk richtig konfiguriert haben () und wissen, wie Sie Software Dritter installieren (). &os.current; vs. &os.stable; -CURRENT -STABLE FreeBSD 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; <emphasis>nicht</emphasis> 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; -CURRENT benutzen Es 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: cvsup cron -CURRENT mit CVSup synchronisieren Benutzen Sie 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. Sie können - sich die Arbeit vereinfachen, indem Sie das folgende - Kommando absetzen: - - &prompt.root; pkg_add -f ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/packages/All/cvsupit-3.1.tgz + in Ihrer Umgebung konfigurieren. -CURRENT mit CTM synchronisieren CTM 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 übersetzen Bevor Sie &os.current; übersetzen, sollten Sie sich das Makefile in /usr/src genau anschauen. Wenn Sie Ihr System das erste Mal aktualisieren, sollten Sie mindestens make world laufen lassen. - Lesen Sie bitte die Mailingliste &a.current;, um über + 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/ + url="../../../../security/index.html">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; -STABLE benutzen Lesen 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. 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: cvsup cron -STABLE mit CVSup synchronisieren Benutzen Sie 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. Wenn Sie dazu - eine einfache Schnittstelle benötigen, geben sie - Folgendes ein: - -
&prompt.root; pkg_add -f ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/packages/All/cvsupit-3.1.tgz
+ linkend="cvsup">cvsup konfigurieren.
-STABLE mit CTM synchronisieren Benutzen 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 übersetzen Bevor Sie &os.stable; übersetzen, sollten Sie sich das Makefile in /usr/src genau anschauen. Wenn Sie Ihr System das erste Mal aktualisieren, sollten Sie mindestens make world laufen lassen. - Lesen Sie bitte die Mailingliste &a.stable;, um über + 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 Quellen Sie 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. anonymous CVS Anonymous 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. CTM Im 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. Bau mit <command>make world</command> make world Wenn 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. Stellen Sie sicher, dass Sie eine Sicherung erstellt haben und über eine Fixit-Floppy verfügen. Wahrscheinlich brauchen Sie sie nicht zu benutzen, aber gehen Sie auf Nummer Sicher! Abonnieren Sie die richtige Mailingliste Mailingliste Die &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. Lesen Sie <filename>/usr/src/UPDATING</filename> Bevor 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 <filename>/etc/make.conf</filename> make.conf Überprüfen Sie die Dateien /etc/defaults/make.conf 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 /etc/defaults/make.conf 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 <filename>/etc</filename> Das 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 der Installationsteil von make world auf das Vorhandensein von bestimmten Accounts oder Gruppen angewiesen war, die aber zurzeit des Updates noch nicht vorhanden waren. Demzufolge kam es zu Problemen bei der Migration. 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 -p Wenn 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 -print Das 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 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. Mehrbenutzermodus Eine andere Methode übersetzt das System im Mehrbenutzermodus und wechselt für die Installation 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: &prompt.root; Alternativ können Sie das System mit der Option 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 -a Die 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 -i Dies stellt sicher, dass Ihre Zeitzone richtig eingestellt ist. Ohne dieses Kommando werden Sie vielleicht später Probleme bekommen. Entfernen Sie <filename>/usr/obj</filename> Die 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 world 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 Quellen Sichern der Ausgaben Fü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 Basissystems Wechseln Sie in das Verzeichnis, in dem die Quellen liegen (in der Voreinstellung ist das /usr/src): &prompt.root; cd /usr/src make Zum 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 -DVARIABLE target In 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 target Dieser Aufruf entspricht dem folgenden Eintrag in /etc/make.conf: NOPROFILE= true # Avoid compiling profiled libraries Jedes 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 target In 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. 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. 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 buildworld Mit 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. Laufzeiten make world Laufzeiten Die 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 Kernels Kernel Übersetzen Um 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 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. Wenn Sie einen Update nach &os; 4.0 oder höher durchführen, sollten Sie den Kernel nicht mit der herkömmlichen Methode, die in beschrieben ist, bauen. Stattdessen benutzen Sie die nachstehenden Kommandos (die neue Methode) nach dem Bau des Basissystems mit buildworld. 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 Um zu prüfen, ob der neue Kernel funktioniert, sollten Sie in den Single-User Modus booten. Folgen Sie dazu der Anleitung aus . Installation des Systems Wenn 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 installworld Wenn 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 buildworld Bei der Installation setzen Sie dann das folgende Kommando ab: &prompt.root; make -DNOPROFILE installworld Wü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 <command>make installworld</command> ausgelassenen Dateien Neue 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. Tom Rhodes Beigetragen von <command>mergemaster</command> mergemaster Das 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 Konfigurationsdateien Wenn 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 <filename>/etc</filename> Obwohl 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.old Mit 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 distribution Die 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/null Im 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 /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/shells Das 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 Zeitstempel Wenn 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 distribution Gleichen Sie die Änderungen entsprechend der Anleitung von oben ab. Wenn Sie fertig sind, entfernen Sie das Verzeichnis /var/tmp/root-19980214 nicht. 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-19980214 Wiederholen 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 <filename>/dev</filename> DEVFS Ü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 /dev MAKEDEV Wenn 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.out Erstellen 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.out Wenn 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 sd0s1 Die genauen Geräte können bei Ihnen natürlich andere sein. Aktualisieren Sie <filename>/stand</filename> Dieser Schritt wurde nur der Vollständigkeit wegen aufgenommen. Sie können ihn komplett auslassen. 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 install Booten Sie sind nun am Ende der Prozedur angelangt. Nachdem Sie sich davon überzeugt haben, dass Ihr System funktioniert, booten Sie das System mit &man.fastboot.8;: &prompt.root; fastboot Ende Herzlichen 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; Fragen Muss 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.c src/games/sail/pl_main.c src/release/sysinstall/config.c src/release/sysinstall/media.c src/share/mk/bsd.port.mk In 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 11 Normalerweise 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 world 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 all Die Variable NOCLEAN verhindert, dass make world 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. 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/src Das 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/obj Ersetzen 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 cleandir Ja, 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. Mike Meyer Beigetragen von Installation mehrerer Maschinen Wenn 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. Voraussetzungen Stellen 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 world 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 Basissystems Nach 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 Dateisysteme einhängen. Am einfachsten ist dies, wenn Sie auf der Testmaschine ausgehend vom Mehrbenutzermodus mit 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-Sammlung Dasselbe 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/eresources/chapter.sgml b/de_DE.ISO8859-1/books/handbook/eresources/chapter.sgml index c4f1b60bd1..df74689bda 100644 --- a/de_DE.ISO8859-1/books/handbook/eresources/chapter.sgml +++ b/de_DE.ISO8859-1/books/handbook/eresources/chapter.sgml @@ -1,2137 +1,2137 @@ Ressourcen im Internet Gedruckte Medien können mit der schnellen Entwicklung von FreeBSD nicht Schritt halten. Elektronische Medien sind häufig die einzige Möglichkeit, über aktuelle Entwicklungen informiert zu sein. Da FreeBSD ein Projekt von Freiwilligen ist, gibt die Benutzergemeinde selbst auch technische Unterstützung. Die Benutzergemeinde erreichen Sie am besten über E-Mail oder Usenet-News. Die wichtigsten Wege, auf denen Sie die FreeBSD Benutzergemeinde erreichen können, sind unten dargestellt. Wenn Sie weitere Ressourcen kennen, die hier fehlen, schicken Sie diese bitte an die Mailingliste &a.doc;, so dass sie hier aufgenommen werden können. Mailinglisten Obwohl viele FreeBSD Entwickler Usenet-News lesen, können wir nicht garantieren, dass Sie eine zügige Antwort auf Ihre Fragen bekommen, wenn Sie diese nur in einer der comp.unix.bsd.freebsd.* Gruppen stellen. Wenn Sie Ihre Fragen auf der passenden Mailingliste stellen, erreichen Sie sowohl die Entwickler wie auch die FreeBSD Benutzergemeinde und erhalten damit bessere (oder zumindest schnellere) Antworten. Die Chartas der verschiedenen Listen sind unten wiedergegeben. Bevor Sie sich einer Mailingliste anschließen oder E-Mails an eine Liste senden, lesen Sie bitte die Charta der Liste. Die meisten Mitglieder unserer Mailinglisten erhalten Hunderte E-Mails zum Thema FreeBSD pro Tag. Die Chartas und Regeln, die den Gebrauch der Listen beschreiben, garantieren die hohe Qualität der Listen. Die Listen würden ihren hohen Wert für das Projekt verlieren, wenn wir weniger Regeln aufstellen würden. Alle Mailinglisten werden archiviert und können auf dem FreeBSD World Wide Web Server durchsucht werden. Das nach Schlüsselwörtern durchsuchbare Archiv bietet die hervorragende Möglichkeit, Antworten auf häufig gestellte Fragen zu finden. Nutzen Sie bitte diese Möglichkeit bevor Sie Fragen auf einer Liste stellen. Beschreibung der Mailinglisten Allgemeine Listen: Jeder kann die folgenden allgemeinen Listen abonnieren (und ist dazu aufgefordert): Mailingliste Zweck &a.cvsall.name; Änderungen im FreeBSD-Quellbaum &a.advocacy.name; Verbreitung von FreeBSD &a.announce.name; Wichtige Ereignisse und Meilensteine des Projekts &a.arch.name; Architektur und Design von FreeBSD &a.bugbusters.name; Diskussionen über die Pflege der FreeBSD Fehlerberichte-Datenbank und die dazu benutzten Werkzeuge &a.bugs.name; Fehlerberichte &a.chat.name; Nicht technische Themen, die die FreeBSD-Gemeinschaft betreffen &a.config.name; Entwicklung von Konfigurations- und Installations-Werkzeugen für FreeBSD &a.current.name; Gebrauch von &os.current; &a.isp.name; Für Internet-Service-Provider, die FreeBSD benutzen &a.jobs.name; Anstellung und Beratung im FreeBSD-Umfeld &a.newbies.name;-newbies Starthilfen für neue FreeBSD-Benutzer &a.policy.name; Grundsatzentscheidungen des FreeBSD Core-Teams. Wenig Verkehr und nur zum Lesen &a.questions.name; Benutzerfragen und technische Unterstützung &a.security-notifications.name; Ankündigungen zum Thema Sicherheit &a.stable.name; Gebrauch von &os.stable; &a.test.name; Schicken Sie Testnachrichten an diese Liste anstelle der wirklichen Listen Technische Listen: Auf den folgenden Listen werden technische Diskussionen geführt. Bevor Sie eine der Listen abonnieren oder Nachrichten an sie schicken, lesen Sie sich bitte die Charta der Liste durch, da der Inhalt und Zweck dieser Listen genau festgelegt ist. Mailingliste Zweck &a.afs.name; Portierung von AFS nach FreeBSD &a.aic7xxx.name; Entwicklung von &adaptec; AIC 7xxx Treibern &a.alpha.name; Portierung von FreeBSD auf Alpha-Maschinen &a.amd64.name; Portierung von FreeBSD auf AMD65-Systeme &a.arm.name; Portierung von FreeBSD auf &arm;-Prozessoren &a.atm.name; Benutzung von ATM-Netzen mit FreeBSD &a.audit.name; Audit der FreeBSD-Quellen &a.binup.name; Design und Entwicklung eines Systems, das es erlaubt, ein FreeBSD-System mit binären Paketen zu aktualisieren &a.cluster.name; Benutzung von FreeBSD in einem Cluster &a.cvsweb.name; Pflege von CVSweb &a.database.name; Diskussion über Datenbanken und Datenbankprogrammierung unter FreeBSD &a.doc.name; Erstellen der FreeBSD-Dokumentation &a.emulation.name; Emulation anderer Systeme wie Linux, DOS oder &windows; &a.firewire.name; Technische Diskussion über &firewire; (iLink, IEEE 1394) &a.fs.name; Dateisysteme &a.gnome.name; Portierung von GNOME und GNOME-Anwendungen &a.hackers.name; Allgemeine technische Diskussionen &a.hardware.name; Allgemeine Diskussion über Hardware, auf der FreeBSD läuft &a.i18n.name; Internationalisierung von FreeBSD &a.ia32.name; FreeBSD für die IA-32 (&intel; x86) Plattform &a.ia64.name; Portierung von FreeBSD auf Intels neue IA64-Systeme &a.ipfw.name; Technische Diskussion über die Neubearbeitung der IP-Firewall Quellen &a.isdn.name; Für Entwickler des ISDN-Systems &a.java.name; Für &java; Entwickler und Leute, die &jdk;s nach FreeBSD portieren &a.kde.name; Portierung von KDE und KDE-Anwendungen &a.lfs.name; Portierung von LFS nach FreeBSD &a.libh.name; Das nächste Installations- und Paketsystem &a.mips.name; Portierung von FreeBSD zu &mips; &a.mobile.name; Diskussionen über mobiles Rechnen &a.mozilla.name; Portierung von Mozilla nach FreeBSD &a.multimedia.name; Multimedia Anwendungen &a.newbus.name; Technische Diskussionen über die Architektur von Bussen &a.net.name; Diskussion über Netzwerke und den TCP/IP Quellcode &a.openoffice.name; Portierung von OpenOffice.org und &staroffice; nach FreeBSD &a.performance.name; Fragen zur Optimierung der Leistung stark ausgelasteter Systeme &a.platforms.name; Portierungen von FreeBSD auf nicht-&intel; Architekturen &a.ports.name; Diskussion über die Ports-Sammlung &a.ports-bugs.name; Diskussion über Fehler und PRs der Ports &a.ppc.name; Portierung von FreeBSD auf den &powerpc; &a.qa.name; Diskussion über Qualitätssicherung, normalerweise kurz vor einem Release &a.realtime.name; Entwicklung von Echtzeiterweiterungen für FreeBSD &a.scsi.name; Diskussion über das SCSI-Subsystem &a.security.name; Sicherheitsthemen &a.small.name; Gebrauch von FreeBSD in eingebetteten Systemen &a.smp.name; Diskussionen über das Design von asymmetrischen und symmetrischen Mehrprozessor-Programmen &a.sparc.name; Portierung von FreeBSD auf &sparc; Systeme &a.standards.name; Konformität von FreeBSD mit den C99- und POSIX-Standards &a.threads.name; Leichgewichtige Prozesse (Threads) in FreeBSD &a.testing.name; Leistungs- und Stabilitätstests von FreeBSD &a.tokenring.name; Token-Ring Unterstützung in FreeBSD Eingeschränkte Listen: Die folgenden Listen wenden sich an Zielgruppen mit speziellen Anforderungen und sind nicht für die Öffentlichkeit gedacht. Bevor Sie eine dieser Listen abonnieren, sollten Sie einige der technischen Listen abonniert haben, um mit den Umgangsformen vertraut zu sein. Mailingliste Zweck &a.hubs.name; Betrieb von FreeBSD Spiegeln &a.usergroups.name; Koordination von Benutzergruppen &a.vendors.name; Koordination von Händlern vor einem Release &a.www.name; Betreuer von www.FreeBSD.org Zusammenfassungen: Alle eben aufgezählten Listen sind auch in zusammengefasster Form (digest) erhältich. In den Einstellungen Ihres Accounts legen Sie fest, in welcher Form Sie die Listen empfangen. CVS Listen: Die folgenden Listen versenden die Log-Einträge zu Änderungen an verschiedenen Teilen des Quellbaums. Diese Listen sollen nur gelesen werden, schicken Sie bitte keine Nachrichten an eine der Listen. Mailingliste Teil des Quellbaums Beschreibung &a.cvsall.name; /usr/(CVSROOT|doc|ports|projects|src) Alle Änderungen im Quellbaum (Obermenge der anderen Commit-Listen) &a.cvs-doc.name; /usr/doc Änderungen im doc-Baum &a.cvs-ports.name; /usr/ports Änderungen im ports-Baum &a.cvs-projects.name; /usr/projects Änderungen im projects-Baum &a.cvs-src.name; /usr/src Änderungen im src-Baum Mailinglisten abonnieren Um eine Liste zu abonnieren, folgen Sie dem oben angegebenen Hyperlink der Liste oder besuchen Sie die Webseite &a.mailman.lists.link; und klicken dort auf Liste, die Sie abonnieren wollen. Sie gelangen dann auf die Webseite der Liste, die weitere Anweisungen enthält. Um eine Nachricht an eine Mailingliste zu schicken, schreiben Sie einfach eine E-Mail an <Liste@FreeBSD.org>. Die E-Mail wird dann an alle Mitglieder der Mailingliste verteilt. Wenn Sie das Abonnement aufheben wollen, folgen Sie der URL, die am Ende jeder Mail der Liste angegeben ist. Sie können das Abonnement auch mit einer E-Mail an freebsd-Liste-unsubscribe@FreeBSD.org aufheben. Verwenden Sie bitte die technischen Listen ausschließlich für technische Diskussionen. Wenn Sie nur an wichtigen Ankündigungen interessiert sind, abonnieren Sie die Mailingliste &a.announce;, auf der nur wenige Nachrichten versendet werden. Chartas der Mailinglisten Alle FreeBSD Mailinglisten besitzen Grundregeln, die von jedem beachtet werden müssen. Für die ersten beiden Male, in denen ein Absender gegen diese Regeln verstößt, erhält er jeweils eine Warnung vom FreeBSD Postmaster postmaster@FreeBSD.org. Ein dritter Verstoß gegen die Regeln führt dazu, dass der Absender in allen FreeBSD Mailinglisten gesperrt wird und weitere Nachrichten von ihm nicht mehr angenommen werden. Wir bedauern sehr, dass wir solche Maßnahmen ergreifen müssen, aber heutzutage ist das Internet eine recht rauhe Umgebung, in der immer weniger Leute Rücksicht aufeinander nehmen. Die Regeln: Das Thema einer Nachricht soll der Charta der Liste, an die sie gesendet wird, entsprechen. Wenn Sie eine Nachricht an eine technische Liste schicken, sollte die Nachricht auch technische Inhalte haben. Fortwährendes Geschwätz oder Streit mindern den Wert der Liste für alle Mitglieder und wird nicht toleriert. Benutzen Sie &a.chat; für allgemeine Diskussionen über FreeBSD. Eine Nachricht sollte an nicht mehr als zwei Mailinglisten gesendet werden. Schicken Sie eine Nachricht nur dann an zwei Listen, wenn das wirklich notwendig ist. Viele Leute haben mehrere Mailinglisten abonniert und Nachrichten sollten nur zu ungewöhnlichen Kombinationen der Listen, wie -stable und -scsi, gesendet werden. Wenn Sie eine Nachricht erhalten, die im Cc-Feld mehrere Listen enthält, sollten Sie das Feld kürzen, bevor Sie eine Antwort darauf verschicken. Unabhängig von dem ursprünglichen Verteiler sind Sie für Ihre eigenen Mehrfach-Sendungen selbst verantwortlich. Persönliche Angriffe und Beschimpfungen sind in einer Diskussion nicht erlaubt. Dies gilt gleichermaßen für Benutzer wie Entwickler. Grobe Verletzungen der Netiquette, wie das Verschicken oder Zitieren von privater E-Mail ohne eine entsprechende Genehmigung, werden nicht gebilligt. Die Nachrichten werden aber nicht besonders auf Verletzungen der Netiquette untersucht. Es kann sein, dass eine Verletzung der Netiquette durchaus zu der Charta einer Liste passt, aber der Absender aufgrund der Verletzung eine Warnung erhält oder gesperrt wird. Werbung für Produkte oder Dienstleistungen, die nichts mit FreeBSD zu tun haben, sind verboten. Ist die Werbung als Spam verschickt worden, wird der Absender sofort gesperrt. Chartas einzelner Listen: &a.afs.name; Andrew File System Auf dieser Liste wird die Portierung des AFS von CMU/Transarc diskutiert. &a.announce.name; Wichtige Ereignisse und Meilensteine Diese Liste ist für Personen, die nur an den wenigen Ankündigungen wichtiger Ereignisse interessiert sind. Die Ankündigungen betreffen Schnappschüsse und Releases, neue Merkmale von FreeBSD und die Suche nach freiwilligen Mitarbeitern. Auf der Liste herrscht wenig Verkehr und sie wird streng moderiert. &a.arch.name; Architektur und Design von FreeBSD Auf dieser technischen Liste wird die FreeBSD Architektur diskutiert. Beispiele für angemessene Themen sind: Wie das Bausystem zu verändern ist, damit verschiedene Läufe gleichzeitig möglich sind. Was am VFS geändert werden muss, damit Heidemann Schichten eingesetzt werden können. Wie die Schnittstelle der Gerätetreiber angepasst werden muss, damit derselbe Treiber auf verschiedenen Bussen und Architekturen eingesetzt werden kann. Wie ein Netzwerktreiber geschrieben wird. &a.audit.name; Source Code Audit Project Dies ist die Liste des FreeBSD Source Code Audit Projects. Ursprünglich war vorgesehen, hier nur sicherheitsrelevante Änderungen zu diskutieren, doch ist die Charta auf alle Änderungen ausgedehnt worden. Zu dieser Liste werden viele Korrekturen gesandt, so dass sie für den normalen FreeBSD Benutzer von wenig Wert ist. Diskussionen über Sicherheit, die sich nicht auf die Änderung von Quellcode beziehen, finden auf der Mailingliste &a.security; statt. Auf der anderen Seite sind aber alle Entwickler aufgefordert, ihre Korrekturen zur Überprüfung an diese Liste zu senden. Dies trifft besonders auf Änderungen zu, in denen ein Fehler die Integrität des Gesamtsystems gefährdet. &a.binup.name; FreeBSD Binary Update Project Auf dieser Liste wird das Design und die Implementierung von binup diskutiert. Weitere Themen sind Fehlerbehebungen, Fehlerberichte und Anfragen nach Neuerungen. Die CVS-Logmeldungen des Projekts werden ebenfalls auf diese Liste gesendet. &a.bugbusters.name; Bearbeitung der Fehlerberichte Auf dieser Liste wird die Bearbeitung der Fehlerberichte (PR, engl. problem report) koordiniert. Sie dient dem Bugmeister und allen Leuten, die ein Interesse an der Datenbank der Fehlerberichte haben, als Diskussionsforum. Auf dieser Liste werden keine spezifischen Fehler, Fehlerbehebungen oder PRs diskutiert. &a.bugs.name; Fehlerberichte Auf dieser Liste werden Fehlerberichte gesammelt. Fehlerberichte sollten immer mit &man.send-pr.1; oder dem Web Formular erstellt werden. &a.chat.name; Nicht technische Themen, die die FreeBSD Gemeinschaft betreffen Auf dieser Liste werden nicht-technische soziale Themen diskutiert, die nicht auf die anderen Listen passen. Hier kann diskutiert werden, ob Jordan wie ein Frettchen aus einem Zeichentrickfilm aussieht oder nicht, ob grundsätzlich in Großbuchstaben geschrieben werden soll, wer zuviel Kaffee trinkt, wo das beste Bier gebraut wird und wer Bier in seinem Keller braut. Gelegentlich können auf den technischen Listen wichtige Ereignisse wie Feste, Hochzeiten oder Geburten angekündigt werden, aber nachfolgende Nachrichten sollten auf die Liste &a.chat; gesendet werden. &a.core.name; FreeBSD Core Team Dies ist eine interne Mailingliste des FreeBSD Core Teams. Wenn in einer wichtigen Angelegenheit, die FreeBSD betrifft, entschieden werden muss oder die Angelegenheit einer genauen Prüfung unterzogen werden muss, können Nachrichten an diese Liste gesendet werden. &a.current.name; Gebrauch von &os.current; Diese Mailingliste ist für die Benutzer von &os.current; eingerichtet. Auf ihr finden sich Ankündigungen über Besonderheiten von -CURRENT, von denen Benutzer betroffen sind. Sie enthält weiterhin Anweisungen, wie man ein System auf -CURRENT hält. Jeder, der ein -CURRENT System besitzt, muss diese Liste lesen. Die Liste ist nur für technische Inhalte bestimmt. &a.cvsweb.name; FreeBSD CVSweb Project Technische Diskussion über den Gebrauch, die Entwicklung und die Pflege von FreeBSD-CVSweb. &a.doc.name; Documentation Project Auf dieser Mailingliste werden Themen und Projekte diskutiert, die im Zusammenhang mit der Erstellung der FreeBSD Dokumentation stehen. The FreeBSD Documentation Project besteht aus den Mitgliedern dieser Liste. Diese Liste steht jedem offen, Sie sind herzlich eingeladen teilzunehmen und mitzuhelfen. &a.firewire.name; &firewire; (iLink, IEEE 1394) Auf dieser Liste wird das Design und die Implementierung eines &firewire;-Subsystems (auch IEEE 1394 oder iLink) für FreeBSD diskutiert. Relevante Themen sind die Standards, Busse und ihre Protokolle, sowie Adapter, Karten und Chipsätze. Des Weiteren die Architektur und der Quellcode, die nötig sind, diese Geräte zu unterstützen. &a.fs.name; Dateisysteme Diskussionen über FreeBSD Dateisysteme. Dies ist eine technische Liste, in der nur technische Inhalte erwartet werden. &a.gnome.name; GNOME Diskussionen über die grafische Benutzeroberfläche GNOME. Dies ist eine technische Liste, in der nur technische Inhalte erwartet werden. &a.ipfw.name; IP Firewall Diskussionen über eine Neubearbeitung des IP-Firewall Quelltexts in FreeBSD. Dies ist eine technische Liste, in der nur technische Inhalte erwartet werden. &a.ia64.name; Portierung von FreeBSD auf die IA64-Plattform Dies ist eine technische Liste für diejenigen, die FreeBSD auf die IA-64 Plattform von &intel; portieren. Themen sind die Probleme bei der Portierung und deren Lösung. Interessierte, die der Diskussion folgen wollen, sind ebenfalls willkommen. &a.isdn.name; ISDN Subsystem Mailingliste für die Entwickler des ISDN Subsystems von FreeBSD. &a.java.name; &java; Entwicklung Mailingliste, auf der die Entwicklung von &java; Anwendungen für FreeBSD sowie die Portierung und Pflege von &jdk;s diskutiert wird. &a.hackers.name; Technische Diskussionen Dies ist ein Forum für technische Diskussionen über FreeBSD. Leute, die aktiv an FreeBSD arbeiten, können hier Probleme und deren Lösungen diskutieren. Interessierte, die den Diskussionen folgen wollen, steht die Liste ebenfalls offen. Auf dieser Liste finden nur technische Diskussionen statt. &a.hardware.name; Allgemeine Diskussionen über Hardware Allgemeine Diskussionen über die Hardware, auf der FreeBSD läuft: Probleme und Ratschläge welche Hardware man kaufen sollte und welche nicht. &a.hubs.name; FreeBSD Spiegel Ankündigungen und Diskussionsforum für Leute, die FreeBSD Spiegel betreiben. &a.isp.name; Themen für Internet Service Provider Diese Liste ist für Internet Service Provider (ISP), die FreeBSD benutzen. Auf dieser Liste finden nur technische Diskussionen statt. &a.kde.name; KDE Diskussionen über KDE auf FreeBSD-Systemen. Dies ist eine technische Liste, in der nur technische Inhalte erwartet werden. &a.newbies.name; Starthilfen für neue FreeBSD Benutzer Ein Forum für Aktivitäten von Neulingen, die anderswo nicht behandelt werden, wie selbständiges Lernen, Techniken zur Problemlösung, Suchen und Benutzen von Ressourcen, wo man Hilfe findet, wie Mailinglisten benutzt werden und welche Listen man abonnieren sollte, allgemeine Unterhaltungen und Geschichten, Berichte über Fehler, die man gemacht hat, Prahlen mit eigenen Erfolgen, Mitteilen von Ideen, moralische (aber keine technische) Unterstützung und wie man aktiver Teil der FreeBSD Gesellschaft wird. Fragen und Probleme werden auf der Liste &a.questions; behandelt, die Mailingliste &a.newbies; gibt neuen FreeBSD Benutzern die nötigen Starthilfen. &a.openoffice.name; OpenOffice.org Portierung und Pflege von OpenOffice.org und &staroffice;. &a.performance.name; Diskussionsforum mit dem Ziel, die Leistung von FreeBSD zu verbessern. Auf dieser Liste diskutieren Hacker, Systemadministratoren und andere Interessierte die Leistung von FreeBSD. Zulässige Themen sind beispielsweise Systeme unter hoher Last, Systeme mit Leistungsproblemen oder Systeme, die Leistungsgrenzen von FreeBSD überwinden. Jeder, der mithelfen will, die Leistung von FreeBSD zu verbessern, sollte diese Liste abonnieren. Die Liste ist technisch anspruchsvoll und geeignet für erfahrene FreeBSD-Benutzer, Hacker oder Administratoren, die FreeBSD schnell, robust und skalierbar halten wollen. Auf der Liste werden Beiträge gesammelt oder Fragen nach ungelösten Problemen beantwortet. Sie ist kein Ersatz für das gründliche Studium der Dokumentation. &a.platforms.name; Portierung auf nicht-&intel; Plattformen Plattformübergreifende Themen und Vorschläge für die Portierung auf nicht-&intel; Plattformen. Auf dieser Liste finden nur technische Diskussionen statt. &a.policy.name; Grundsatzentscheidungen des Core Teams Diese Mailingliste ist für Grundsatzentscheidungen des FreeBSD Core Teams. Sie trägt wenige Nachrichten und ist nur zum Lesen gedacht. &a.ports.name; Diskussion über die Ports-Sammlung Diskussionen über die FreeBSD Ports-Sammlung und die Infrastruktur der Sammlung. Die Liste dient auch der allgemeinen Koordination der Dinge, die die Ports-Sammlung betreffen. Auf dieser Liste finden nur technische Diskussionen statt. &a.ports-bugs.name; Diskussion über Fehler in den Ports Diskussion über Fehler in der Ports-Sammlung (/usr/ports), neue Ports oder Änderungen an bestehenden Ports. Auf dieser Liste finden nur technische Diskussionen statt. &a.questions.name; Benutzerfragen Auf dieser Mailingliste können Fragen über FreeBSD gestellt werden. Fragen Sie bitte nicht nach Anleitungen, wenn Sie nicht sicher sind, dass Ihre Frage wirklich technischer Natur ist. &a.scsi.name; SCSI Subsystem Diese Mailingliste ist für die Entwickler des SCSI Subsystems von FreeBSD. Auf dieser Liste finden nur technische Diskussionen statt. &a.security.name; Sicherheitsthemen Sicherheitsthemen, die FreeBSD betreffen, wie DES, Kerberos, bekannte Sicherheitslöcher und Fehlerbehebungen. Stellen Sie bitte auf dieser Liste keine allgemeinen Fragen zum Thema Sicherheit. Willkommen sind allerdings Beiträge zur FAQ, das heißt eine Frage mit der passenden Antwort. Auf dieser Liste finden nur technische Diskussionen statt. &a.security-notifications.name; Ankündigungen zum Thema Sicherheit Ankündigungen über Sicherheitsprobleme von FreeBSD und deren Behebungen. Diese Liste ist kein Diskussionsforum, benutzen Sie &a.security;, um Sicherheitsthemen zu diskutieren. &a.small.name; Gebrauch von FreeBSD in eingebetteten Systemen. Diese Liste für ungewöhnlich kleine FreeBSD Installation oder den Einsatz von FreeBSD in eingebetteten Systemen gedacht. Auf dieser Liste finden nur technische Diskussionen statt. &a.stable.name; Gebrauch von &os.stable;. Diese Mailingliste ist für die Benutzer von &os.stable; eingerichtet. Auf ihr finden sich Ankündigungen über Besonderheiten von -STABLE, von denen Benutzer betroffen sind. Sie enthält weiterhin Anweisungen, wie man ein System auf -STABLE hält. Jeder, der ein -STABLE System besitzt, muss diese Liste lesen. Die Liste ist nur für technische Inhalte bestimmt. &a.standards.name; Konformität von FreeBSD mit den C99- und &posix; Standards Dieses Forum ist für technische Diskussionen über die Konformität von FreeBSD mit den C99- und POSIX-Standards. &a.usergroups.name; Koordination von Benutzergruppen Diese Liste ist für Koordinatoren lokaler Benutzergruppen und einem ausgesuchten Mitglied des Core Teams eingerichtet worden. Der Inhalt sollte Inhalte von Treffen und die Koordination von Projekten mehrerer Benutzergruppen beschränkt sein. &a.vendors.name; Koordination von Händlern Koordination zwischen dem FreeBSD Projekt und Händlern, die Soft- und Hardware für FreeBSD verkaufen. Filter der Mailinglisten Um die Verbreitung von Spam, Viren und anderen nicht erwünschten E-Mails zu verhindern, werden auf den &os;-Mailinglisten Filter eingesetzt. Dieser Abschnitt beschreibt nur einen Teil der zum Schutz der Listen eingesetzten Filter. Auf den Mailinglisten sind nur die unten aufgeführten Anhänge erlaubt. Anhänge mit einem anderen MIME-Typ werden entfernt, bevor eine E-Mail an eine Liste verteilt wird. application/octet-stream application/pdf application/pgp-signature application/x-pkcs7-signature message/rfc822 multipart/alternative multipart/related multipart/signed text/html text/plain text/x-diff text/x-patch Einige Mailinglisten erlauben vielleicht Anhänge mit anderem MIME-Typ. Für die meisten Mailinglisten sollte die obige Aufzählung aber richtig sein. Wenn eine E-Mail sowohl aus einer HTML-Version wie auch aus einer Text-Version besteht, wird die HTML-Version entfernt. Wenn eine E-Mail nur im HTML-Format versendet wurde, wird sie in reinen Text umgewandelt. Usenet-News Neben den Gruppen, die sich ausschließlich mit BSD beschäftigen, gibt es viele weitere in denen über FreeBSD diskutiert wird, oder die für FreeBSD Benutzer wichtig sind. Warren Toomey wkt@cs.adfa.edu.au stellte großzügig suchbare Archive einiger dieser Gruppen bereit. BSD spezifische Gruppen comp.unix.bsd.freebsd.announce comp.unix.bsd.freebsd.misc de.comp.os.unix.bsd (Deutsch) fr.comp.os.bsd (Französisch) Weitere UNIX Gruppen comp.unix comp.unix.questions comp.unix.admin comp.unix.programmer comp.unix.shell comp.unix.user-friendly comp.security.unix comp.sources.unix comp.unix.advocacy comp.unix.misc comp.bugs.4bsd comp.bugs.4bsd.ucb-fixes comp.unix.bsd X Window System comp.windows.x.i386unix comp.windows.x comp.windows.x.apps comp.windows.x.announce comp.windows.x.intrinsics comp.windows.x.motif comp.windows.x.pex comp.emulators.ms-windows.wine World Wide Web Server – Hauptserver. – IPv6 Dänemark. – IPv6 Deutschland. – IPv6 Großbritannien. – IPv6 (6bone) Japan. – IPv6 Norwegen. – IPv6 Österreich. – IPv6 USA/1. – IPv6 USA/2. – Armenien. – Australien/1. – Australien/2. – Belgien. – Brasilien/1. – Brasilien/2. – Brasilien/3. – Bulgarien. – China. – Dänemark/1. – Dänemark/2. – Deutschland/1. – Deutschland/2. – Deutschland/3. – Estland. – Finnland/1. – Finnland/2. – Frankreich. – Griechenland/1. – Griechenland/2. – Großbritannien/1. – Großbritannien/2. – Großbritannien/3. – Großbritannien/4. – Großbritannien/5. – Hong Kong. – Irland/1. – Irland/2. – Island. – Italien/1. – Italien/2. – Japan. – Kanada/1. – Kanada/2. – Korea/1. – Korea/2. – Korea/3. – Lettland. – Litauen. – Neuseeland. – Niederlande/1. – Niederlande/2. – Norwegen/1. – Norwegen/2. – Österreich/1. – Österreich/2. – Philippinen. – Polen/1. – Polen/2. – Portugal/1. – Portugal/2. – Portugal/3. – Rumänien/1. – Rumänien/2. – Rumänien/3. – Rumänien/4. – Russland/1. – Russland/2. – Russland/3. – Russland/4. – San Marino. – Schweden/1. – Schweden/2. – Schweiz/1. – Schweiz/2. – Singapur. – Slowakische Republik/1. – Slowakische Republik/2. – Slowenien/1. – Slowenien/2. – Spanien/1. – Spanien/2. – Spanien/3. – Südafrika/1. – Südafrika/2. – Taiwan/1. – Taiwan/2. – Taiwan/3. – Taiwan/4. – Tschechische Republik. – Türkei/1. – Türkei/2. – Türkei/3. – Ukraine/1. – Ukraine/2. – Ukraine/3. – Ukraine/Crimea. – Ungarn/1. – Ungarn/2. – USA/1. – USA/2. – USA/3. E-Mail Adressen Die folgenden Benutzergruppen stellen ihren Mitgliedern für die Arbeit an FreeBSD E-Mail Adressen zur Verfügung. Der aufgeführte Administrator behält sich das Recht vor, die Adresse zu sperren, wenn sie missbraucht wird. Domain Angebot Benutzergruppe Administrator ukug.uk.FreeBSD.org nur zum Weiterleiten freebsd-users@uk.FreeBSD.org Lee Johnston lee@uk.FreeBSD.org Shell Accounts Die folgenden Benutzergruppen stellen Personen, die das FreeBSD Projekt aktiv unterstützen, Shell-Accounts zur Verfügung. Der aufgeführte Administrator behält sich das Recht vor, den Account zu sperren, wenn er missbraucht wird. Rechner Zugriff Angebot Administrator storm.uk.FreeBSD.org nur SSH lesender Zugriff auf CVS, persönliche Webseiten, E-Mail &a.brian; dogma.freebsd-uk.eu.org Telnet/FTP/SSH E-Mail, Webseiten, Anonymous FTP Lee Johnston lee@uk.FreeBSD.org diff --git a/de_DE.ISO8859-1/books/handbook/introduction/chapter.sgml b/de_DE.ISO8859-1/books/handbook/introduction/chapter.sgml index bc0fb21198..625328fb78 100644 --- a/de_DE.ISO8859-1/books/handbook/introduction/chapter.sgml +++ b/de_DE.ISO8859-1/books/handbook/introduction/chapter.sgml @@ -1,1234 +1,1227 @@ Jim Mock Neu zusammengestellt, umstrukturiert und um Abschnitte erweitert durch Sascha Edelburg Übersetzt von Einführung Übersicht Herzlichen Dank für Ihr Interesse an FreeBSD! Das folgende Kapitel behandelt verschiedene Aspekte des FreeBSD-Projekts wie dessen geschichtliche Entwicklung, dessen Ziele oder dessen Entwicklungsmodell. Nach dem Durcharbeiten des Kapitels wissen Sie über folgende Punkte Bescheid: Wo FreeBSD im Vergleich zu anderen Betriebssystemen steht Die Geschichte des FreeBSD-Projekts Die Ziele des FreeBSD-Projekts Die Grundlagen des FreeBSD-Open-Source-Entwicklungsmodells Und natürlich wo der Name FreeBSD herrührt Willkommen bei FreeBSD! 4.4BSD-Lite FreeBSD ist ein auf 4.4BSD-Lite basierendes Betriebssystem für Intel (x86), DEC Alpha und Sun &ultrasparc; Rechner. An Portierungen zu anderen Architekturen wird derzeit gearbeitet. - Einen kurzen Überblick zu FreeBSD bietet der folgende Abschnitt. Mehr zur - Geschichte von FreeBSD können Sie im kurzen geschichtlichen Abriss zu FreeBSD oder im Abschnitt Das aktuelle FreeBSD-Release nachlesen. Falls Sie das FreeBSD-Projekt unterstützen wollen (mit Quellcode, Hardware- oder Geldspenden) lesen Sie den Artikel Contributing to FreeBSD (derzeit nur in englischer Sprache verfügbar). Was kann FreeBSD? FreeBSD hat zahlreiche bemerkenswerte Eigenschaften. Um nur einige zu nennen: Präemptives Multitasking Präemptives Multitasking mit dynamischer Prioritätsanpassung zum reibungslosen und ausgeglichenen Teilen der Systemressourcen zwischen Anwendungen und Anwendern, selbst unter schwerster Last. Mehrbenutzerbetrieb Der Mehrbenutzerbetrieb von FreeBSD erlaubt es, viele Anwender gleichzeitig am System mit verschiedenen Aufgaben arbeiten zu lassen. Beispielsweise Geräte wie Drucker oder Bandlaufwerke, die sich nur schwerlich unter allen Anwendern des Systems oder im Netzwerk teilen lassen, können durch Setzen von Verwendungsbeschränkungen auf Benutzer oder Benutzergruppen wichtige Systemressourcen vor Überbeanspruchung schützen. TCP/IP-Netzwerkfähigkeit Hervorragende TCP/IP-Netzwerkfähigkeit mit Unterstützung der Industriestandards wie SLIP, PPP, NFS, DHCP und NIS. Das heißt, Ihr FreeBSD-System kann in einfachster Weise mit anderen Systemen interagieren. Zudem kann es als Server-System im Unternehmen wichtige Aufgaben übernehmen, beispielsweise als NFS- oder E-Mail-Server oder es kann Ihren Betrieb durch HTTP- und FTP-Server beziehungsweise durch Routing und Firewalling Internet-fähig machen. Speicherschutz Der Speicherschutz stellt sicher, dass Anwendungen (oder Anwender) sich nicht gegenseitig stören. Stürzt eine Anwendung ab, hat das keine Auswirkung auf andere Prozesse. FreeBSD ist ein 32-Bit-Betriebssystem (64-Bit auf Alpha und &ultrasparc;) und wurde als solches von Grund auf neu entworfen. X-Window-System XFree86 Das X-Window-System (X11R6) als Industriestandard bietet eine grafische Benutzeroberfläche (GUI). Minimale Voraussetzung zur Verwendung ist lediglich eine Grafikkarte und ein Bildschirm, die beide den VGA-Modus unterstützen. Binärkompatibilität Linux Binärkompatibilität SCO Binärkompatibilität SVR4 Binärkompatibilität BSD/OS Binärkompatibilität NetBSD Binärkompatibilität mit vielen unter verschiedenen Betriebssystemen erstellten Programmen wie Linux, SCO, SVR4, BSDI und NetBSD. Tausende von sofort lauffähigen Anwendungen sind aus den Ports- und Packages-Sammlungen für FreeBSD verfügbar. Warum mühselig im Netz Software suchen, wenn sie bereits hier vorhanden ist? Tausende zusätzliche leicht zu portierende Anwendungen sind über das Internet zu beziehen. FreeBSD ist Quellcode-Kompatibel mit den meisten kommerziellen &unix; Systemen. Daher bedürfen Anwendungen häufig nur geringer oder gar keiner Anpassung, um auf einem FreeBSD-System zu kompilieren. Virtueller Speicher Seitenweise anforderbarer Virtueller Speicher und der merged VM/buffer cache-Entwurf bedient effektiv den großen Speicherhunger mancher Anwendungen bei gleichzeitigem Aufrechterhalten der Bedienbarkeit des Systems für weitere Benutzer. Symmetrisches Multi-Processing (SMP) SMP-Unterstützung für Mehrprozessorsysteme Kompiler C Kompiler C++ Kompiler FORTRAN Ein voller Satz von C, C++, Fortran und Perl Entwicklungswerkzeugen. Viele zusätzliche Programmiersprachen für Wissenschaft und Entwicklung sind aus der Ports- und Packages-Sammlung zu haben. Quellcode Quellcode für das gesamte System bedeutet größtmögliche Kontrolle über Ihre Umgebung. Warum sollte man sich durch proprietäre Lösungen knebeln und sich auf Gedeih und Verderb der Gnade eines Herstellers ausliefern, wenn man doch ein wahrhaft offenes System haben kann? Umfangreiche Online-Dokumentation. 4.4BSD-Lite Computer Systems Research Group (CSRG) U.C. Berkeley FreeBSD basiert auf dem 4.4BSD-Lite-Release der Computer Systems Research Group (CSRG) der Universität von Kalifornien in Berkeley und führt die namhafte Tradition der Entwicklung von BSD-Systemen fort. Zusätzlich zu der herausragenden Arbeit der CSRG hat das FreeBSD-Projekt tausende weitere Arbeitsstunden investiert, um das System zu verfeinern und maximale Leistung und Zuverlässigkeit bei Alltagslast zu bieten. Während viele kommerzielle Riesen Probleme haben PC-Betriebssysteme mit derartigen Funktionen, Leistungpotential und Zuverlässigkeit anzubieten, kann FreeBSD damit schon jetzt aufwarten! Die Anwendungsmöglichkeiten von FreeBSD werden nur durch Ihre Vorstellungskraft begrenzt. Von Software-Entwicklung bis zu Produktionsautomatisierung, von Lagerverwaltung über Abweichungskorrektur bei Satelliten; Falls etwas mit kommerziellen &unix; Produkten machbar ist, dann ist es höchstwahrscheinlich auch mit FreeBSD möglich. FreeBSD profitiert stark von tausenden hochwertigen Anwendungen aus wissenschaftlichen Instituten und Universitäten in aller Welt. Häufig sind diese für wenig Geld oder sogar kostenlos zu bekommen. Kommerzielle Anwendungen sind ebenso verfügbar und es werden täglich mehr. Durch den freien Zugang zum Quellcode von FreeBSD ist es in unvergleichbarer Weise möglich, das System für spezielle Anwendungen oder Projekte anzupassen. Dies ist mit den meisten kommerziellen Betriebssystemen einfach nicht möglich. Beispiele für Anwendungen, die unter FreeBSD laufen, sind: Internet-Dienste: Die robuste TCP/IP-Implementierung in FreeBSD macht es zu einer idealen Plattform für verschiedenste Internet-Dienste, wie zum Beispiel: FTP-Server FTP-Server HTTP-Server HTTP-Server (Standard-Web-Server oder mit SSL-Verschlüsselung) Firewall IP-Masquerading Firewalls und NAT-Gateways (IP-Masquerading) E-Mail E-Mail-Server Usenet Usenet-News und Foren (BBS) Zum Betreiben von FreeBSD reicht schon ein günstiger 386-PC. Wenn es das Wachstum Ihres Unternehmens verlangt, kann FreeBSD aber auch auf einem hochgerüsteten 4-Wege-System mit Xeon-Prozessoren und RAID-Plattenspeicher Verwendung finden. Bildung: Sind Sie Informatikstudent oder Student eines verwandten Studiengangs? Die praktischen Einblicke in FreeBSD sind die beste Möglichkeit etwas über Betriebssysteme, Rechnerarchitektur und Netzwerke zu lernen. Einige frei erhältliche CAD-, mathematische und grafische Anwendungen sind sehr nützlich, gerade für diejenigen, die FreeBSD nicht zum Selbstzweck, sondern als Arbeitsmittel einsetzen. Wissenschaft: Mit dem frei verfügbaren Quellcode für das gesamte System bildet FreeBSD ein exzellentes Studienobjekt in der Disziplin der Betriebssysteme, wie auch in anderen Zweigen der Informatik. Es ist beispielsweise denkbar, das räumlich getrennte Gruppen gemeinsam an einer Idee oder Entwicklung arbeiten. Das Konzept der freien Verfügbarkeit und -nutzung von FreeBSD ermöglicht so einen Gebrauch, auch ohne sich groß Gedanken über Lizenzbedingungen oder -beschränkungen machen zu müssen. Router DNS-Server Netzwerkfähigkeit: Brauchen Sie einen neuen Router? Oder einen Name-Server (DNS)? Eine Firewall zum Schutze Ihres Intranets vor Fremdzugriff? FreeBSD macht aus dem in der Ecke verstaubenden 386- oder 486-PC im Handumdrehen einen leistungsfähigen Router mit anspruchsvollen Packet-Filter-Fähigkeiten. X-Window-System XFree86 X-Window-System Accelerated-X X-Window-Workstation: FreeBSD ist eine gute Wahl als kostengünstiges X-Terminal, egal ob mit dem frei erhältlichen &xfree86; Server oder mit einem der exzellenten kommerziellen Server von Xi Graphics. Im Gegensatz zu einem X-Terminal erlaubt es FreeBSD, viele Anwendungen lokal laufen zu lassen, was die Last eines zentralen Servers erleichtern kann. FreeBSD kann selbst plattenlos starten, was einzelne Workstations noch günstiger macht und die Wartung erleichtert. GNU-Compiler-Collection Software-Entwicklung: Das Standard-System von FreeBSD wird mit einem kompletten Satz an Entwicklungswerkzeugen bereitgestellt, unter anderem mit dem bekannten GNU C/C++-Kompiler und -Debugger. - FreeBSD ist auf CD-ROM in Form von Quellcode oder in - Binärform erhältlich sowie per anonymous FTP. - Näheres zum Bezug von FreeBSD enthält - . + &os; ist sowohl in Form von Quellcode als auch in + Binärform auf CD-ROM, DVD und über anonymous FTP + erhältlich. Näheres zum Bezug von FreeBSD + enthält . Wer benutzt FreeBSD? Anwender Bekannte FreeBSD-Anwender Unter FreeBSD laufen einige der größten Internet-Auftritte, beispielsweise: Yahoo! Yahoo! Apache Apache Blue Mountain Arts Blue Mountain Arts Pair Networks Pair Networks Sony Japan Sony Japan Netcraft Netcraft Weathernews Weathernews Supervalu Supervalu TELEHOUSE America TELEHOUSE America Sophos Anti-Virus Sophos Anti-Virus JMA Wired JMA Wired Das FreeBSD-Projekt Der folgende Abschnitt bietet einige Hintergrundinformationen zum FreeBSD-Projekt, einschließlich einem kurzen geschichtlichen Abriss, den Projektzielen und dem Entwicklungsmodell. Jordan Hubbard Beigesteuert von Kurzer geschichtlicher Abriss zu FreeBSD 386BSD Patchkit Hubbard, Jordan Williams, Nate Grimes, Rod FreeBSD-Projekt Geschichte Das FreeBSD-Projekt erblickte das Licht der Welt Anfang 1993 teils als Auswuchs des Unofficial 386BSD Patchkit unter der Regie der letzten drei Koordinatoren des Patchkits: Nate Williams, Rod Grimes und mir. 386BSD Unser eigentliches Ziel war es, einen zwischenzeitlichen Abzug von 386BSD zu erstellen, um ein paar Probleme zu beseitigen, die das Patchkit-Verfahren nicht lösen konnte. Einige von Ihnen werden sich in dem Zusammenhang noch an die frühen Arbeitstitel 386BSD 0.5 oder 386BSD Interim erinnern. Jolitz, Bill 386BSD war das Betriebssystem von Bill Jolitz. Dieses litt bis zu diesem Zeitpunkt heftig unter fast einjähriger Vernachlässigung. Als das Patchkit mit jedem Tag anschwoll und unhandlicher wurde, waren wir einhellig der Meinung, es müsse etwas geschehen. Wir entschieden uns Bill Jolitz zu helfen, indem wir den übergangsweise bereinigten Abzug zur Verfügung stellten. Diese Pläne wurden unschön durchkreuzt als Bill Jolitz plötzlich seine Zustimmung zu diesem Projekt zurückzog, ohne einen Hinweis darauf, was stattdessen geschehen sollte. Greenman, David Walnut Creek CDROM Es hat nicht lange gedauert zu entscheiden, dass das Ziel es wert war, weiterverfolgt zu werden, selbst ohne Bills Unterstützung. Also haben wir den von David Greenman geprägten Namen FreeBSD angenommen. Unsere anfänglichen Ziele setzten wir nach Rücksprache mit den damaligen Benutzern des Systems fest. Und als deutlich wurde, das Projekt würde möglicherweise Realität, nahm ich Kontakt mit Walnut Creek CDROM auf, mit einem Auge darauf, den Vertriebsweg für die vielen Missbegünstigten zu verbessern, die keinen einfachen Zugang zum Internet hatten. Walnut Creek CDROM unterstützte nicht nur die Idee des CD-ROM-Vertriebs, sondern stellte sogar dem Projekt einen Arbeitsrechner und eine schnelle Internetverbindung zur Verfügung. Ohne den beispiellosen Glauben von Walnut Creek CDROM in ein zu der Zeit absolut unbekanntes Projekt, gäbe es FreeBSD in der heutigen Form wohl nicht. 4.3BSD-Lite Net/2 U.C. Berkeley 386BSD Free Software Foundation Die erste auf CD-ROM (und netzweit) verfügbare Veröffentlichung war FreeBSD 1.0 aus dem Dezember 1993. Diese basierte auf dem Band der 4.3BSD-Lite (Net/2) der Universität von Kalifornien in Berkeley. Viele Teile wurden aus der 386BSD und der Free Software Foundation gestellt. Gemessen am ersten Angebot, war das ein ziemlicher Erfolg und wir ließen dem das extrem erfolgreiche FreeBSD 1.1 im Mai 1994 folgen. Novell U.C. Berkeley Net/2 AT&T Zu der Zeit formierten sich unerwartete Gewitterwolken am Horizont, als Novell und die Universität von Kalifornien in Berkeley (UCB) ihren langen Rechtsstreit über den rechtlichen Status des Berkeley Net/2-Bandes mit einem Vergleich beilegten. Eine Bedingung dieser Einigung war es, dass die UCB große Teile des Net/2-Quellcodes als belastet zugestehen musste, und dass diese Besitz von Novell sind, welches den Code selbst einige Zeit vorher von AT&T bezogen hatte. Im Gegenzug bekam die UCB den Segen von Novell, dass sich das 4.4BSD-Lite-Release bei seiner endgültigen Veröffentlichung als unbelastet bezeichnen darf. Alle Net/2-Benutzer sollten auf das neue Release wechseln. Das betraf auch FreeBSD. Dem Projekt wurde eine Frist bis Ende Juli 1994 eingeräumt, das auf Net/2-basierende Produkt nicht mehr zu vertreiben. Unter den Bedingungen dieser Übereinkunft war es dem Projekt noch erlaubt ein letztes Release vor diesem festgesetzten Zeitpunkt herauszugeben. Das war FreeBSD 1.1.5.1. FreeBSD machte sich dann an die beschwerliche Aufgabe, sich Stück für Stück, aus einem neuen und ziemlich unvollständigen Satz von 4.4BSD-Lite-Teilen, wieder aufzubauen. Die Lite-Veröffentlichungen waren deswegen leicht, weil Berkeleys CSRG große Code-Teile, die für ein start- und lauffähiges System gebraucht wurden, aufgrund diverser rechtlicher Anforderungen entfernen musste und weil die 4.4-Portierung für Intel-Rechner extrem unvollständig war. Das Projekt hat bis November 1994 gebraucht diesen Übergang zu vollziehen, was dann zu dem im Netz veröffentlichten FreeBSD 2.0 und zur CD-ROM-Version (im späten Dezember) führte. Obwohl FreeBSD gerade die ersten Hürden genommen hatte, war dieses Release ein maßgeblicher Erfolg. Diesem folgte im Juni 1995 das robustere und einfacher zu installierende FreeBSD 2.0.5. Im August 1996 veröffentlichten wir FreeBSD 2.1.5. Es schien unter ISPs und der Wirtschaft beliebt genug zu sein, ein weiteres Release aus dem 2.1-STABLE-Zweig zu rechtfertigen. Das war FreeBSD 2.1.7.1. Es wurde im Februar 1997 veröffentlicht und bildete das Ende des Hauptentwicklungszweiges 2.1-STABLE. Derzeit unterliegt dieser Zweig dem Wartungsmodus, das heißt, es werden nur noch Sicherheitsverbesserungen und die Beseitigung von kritischen Fehlern vorgenommen (RELENG_2_1_0). FreeBSD 2.2 entsprang dem Hauptentwicklungszweig (-CURRENT) im November 1996 als RELENG_2_2-Zweig und das erste komplette Release (2.2.1) wurde im April 1997 herausgegeben. Weitere Veröffentlichungen des 2.2-Zweiges gab es im Sommer und Herbst 1997. Das letzte Release des 2.2-Zweiges bildete die Version 2.2.8 und erschien im November 1998. Das erste offizielle 3.0-Release tauchte im Oktober 1998 auf und läutete das Endes des 2.2-Zweiges ein. Am 20. Januar 1999 teilte sich der Quellbaum erneut und führte zu den Zweigen 4.0-CURRENT und 3.X-STABLE. Auf dem 3.X-STABLE-Zweig wurden folgende Releases erstellt: 3.1 am 15. Februar 1999, 3.2 am 15. Mai 1999, 3.3 am 16. September 1999, 3.4 am 20. Dezember 1999 und 3.5 am 24. Juni 2000 veröffentlicht. Dem letzten folgte ein paar Tage später das Release 3.5.1, welches einige akute Sicherheitslöcher von Kerberos stopfte. Es ist die letzte Veröffentlichung des 3.X-Zweiges. Es folgte eine weitere Aufspaltung am 13. März 2000 aus dem der 4.X-STABLE-Zweig hervorging, welcher zurzeit als der stabile Zweig angesehen wird. Bis jetzt gab es mehrere Veröffentlichungen aus diesem Zweig: 4.0-RELEASE erschien im März 2000 und das neuste &rel2.current;-RELEASE erschien im &rel2.current.date;. Bis ins Jahr 2003 wird es weitere Veröffentlichungen aus dem 4.X-STABLE-Zweig (RELENG_4) geben. Das lang erwartete 5.0-RELEASE wurde am 19. Januar 2003 veröffentlicht. Nach nahezu drei Jahren brachte diese Release weiterentwickelte Unterstützung für Mehrprozessor-Systeme und Unterstützung für Multithreading. Mit dieser - Release lief &os; erstmalig auf den Plattformen sparc64 + Release lief &os; erstmalig auf den Plattformen &ultrasparc; und ia64. Im Juni 2003 folgte das 5.1-RELEASE. Neben neuen Funktionen brachten die 5.X-Releases auch weitreichende Änderungen der Systemarchitektur. Dadurch enthält das System eine enorme Menge neuen Code, der nicht weit gehend ausgetestet ist. Die 5.X-Releases werden daher als Neue Technik bezeichnet, während die 4.X-Releases als produktionsreif bezeichnet werden. Mit der Zeit wird sich der 5.X-Zweig stabilisieren, danach wird die Entwicklung auf einem neuen Zweig, 6.0-CURRENT, weitergeführt. Zurzeit werden Projekte mit langem Entwicklungshorizont noch im Zweig 5.0-CURRENT verfolgt und Schnappschüsse von 5.0 auf CD-ROM (und natürlich im Netz) werden bei fortlaufender Entwicklung auf dem Snapshot-Server zur Verfügung gestellt. Jordan Hubbard Beigesteuert von Ziele des FreeBSD-Projekts FreeBSD-Projekt Ziele Das FreeBSD-Projekt stellt Software her, die ohne Einschränkungen für beliebige Zwecke eingesetzt werden kann. Viele von uns haben beträchtlich in Quellcode und Projekt investiert und hätten sicher nichts dagegen, hin und wieder ein wenig finanziellen Ausgleich dafür zu bekommen. Aber in keinem Fall bestehen wir darauf. Wir glauben unsere erste und wichtigste Mission ist es, Software für jeden Interessierten und zu jedem Zweck zur Verfügung zu stellen, damit die Software größtmögliche Verbreitung erlangt und größtmöglichen Nutzen stiftet. Das ist, glaube ich, eines der grundlegenden Ziele freier Software, welche wir mit größter Begeisterung unterstützen. GNU General Public License (GPL) GNU Lesser General Public License (LGPL) BSD Copyright Der Code in unserem Quellbaum, der unter die General Public License (GPL) oder die Library General Public License (LGPL) fällt, stellt geringfügig mehr Bedingungen. Das aber vielmehr im Sinne von eingefordertem Zugriff, als das übliche Gegenteil der Beschränkungen. Aufgrund zusätzlicher Abhängigkeiten, die sich durch die Verwendung von GPL-Software bei kommerziellem Gebrauch ergeben, bevorzugen wir daher Software unter dem transparenteren BSD-Copyright, wo immer es angebracht ist. Satoshi Asami Beigesteuert von Das Entwicklungsmodell von FreeBSD FreeBSD-Projekt Entwicklungsmodell Die Entwicklung von FreeBSD ist ein offener und vielseitiger Prozess. FreeBSD besteht aus Beisteuerungen - von Hunderten von Leuten rund um die Welt, wie Sie aus der + von Hunderten Leuten rund um die Welt, wie Sie aus der Liste - der Beitragenden ersehen können. Wir suchen + der Beitragenden ersehen können. Die vielen + Entwickler können aufgrund der Entwicklungs-Infrastruktur + von &os; über das Internet zusammenarbeiten. Wir suchen ständig nach neuen Entwicklern, Ideen und jenen, die sich in das Projekt tiefer einbringen wollen. Nehmen Sie einfach auf der Mailingliste &a.hackers; Kontakt mit uns auf. Die Mailingliste &a.announce; steht für wichtige Ankündigungen, die alle FreeBSD-Benutzer betreffen, zur Verfügung. Unabhängig davon ob Sie alleine oder mit anderen eng zusammen arbeiten, enthält die folgende Aufstellung nützliche Informationen über das FreeBSD-Projekt und dessen Entwicklungsabläufe. Das CVS-Repository CVS Repository Concurrent-Versions-System CVS Der Hauptquellbaum von FreeBSD wird mit CVS gepflegt, einem frei erhältlichen Versionskontrollsystem, welches mit FreeBSD geliefert wird. Das Haupt- CVS-Repository läuft auf einer Maschine in Santa Clara, Kalifornien, USA. Von dort wird es auf zahlreiche Server in aller Welt gespiegelt. Der - CVS-Quellbaum, als auch die Zweige + CVS-Quellbaum, der die Zweige -CURRENT und - -STABLE können auch in - einfacher Weise auf Ihr eigenes System gespiegelt + -STABLE enthält, + kann einfach auf Ihr eigenes System gespiegelt werden. Näheres dazu können Sie im Handbuch unter Synchronisation der Quellen in Erfahrung bringen. Die Committer-Liste Committer Die Committer sind Personen mit Schreibzugriff auf den CVS-Quellbaum (der Begriff Committer stammt vom &man.cvs.1;-Befehl commit, der zum Einspeisen von Änderungen ins Repository gebraucht wird). Der beste Weg, Vorschläge zur Prüfung durch die Mitglieder der Committer-Liste einzureichen, bietet der Befehl &man.send-pr.1;. Sollte es unerwartete Probleme mit diesem Verfahren geben, besteht immer noch die Möglichkeit eine E-Mail an die Liste &a.committers; zu schicken. Das FreeeBSD-Core-Team Core-Team Würde man das FreeBSD-Projekt mit einem Unternehmen vergleichen, so wäre das FreeBSD-Core-Team das Gegenstück zum Vorstand. Die Hauptaufgabe des Core-Teams ist es, das Projekt als Ganzes in gesunder Verfassung zu halten und die weitere Entwicklung in die richtige Bahn zu lenken. Das Anwerben leidenschaftlicher und verantwortungsbewusster Entwickler ist eine Aufgabe des Core-Team, genauso wie die Rekrutierung neuer Mitglieder für das Core-Team, im Falle, dass Altmitglieder aus dem Projekt aussteigen. Das derzeitige Core-Team wurde im Juni 2002 aus einem Kreis kandidierender Committer gewählt. Wahlen werden alle zwei Jahre abgehalten. Einige Core-Team-Mitglieder haben auch spezielle Verantwortungsbereiche. Das bedeutet, Sie haben sich darauf festgelegt, sicherzustellen, dass ein größerer Teil des Systems so funktioniert wie ausgewiesen. Eine vollständige Liste an FreeBSD beteiligter Entwickler und ihrer Verantwortungsbereiche kann in der Liste der Beitragenden eingesehen werden. Die Mehrzahl der Mitglieder des Core-Teams sind Freiwillige in Bezug auf die FreeBSD-Entwicklung und profitieren nicht finanziell vom Projekt. Daher sollte Verpflichtung nicht als garantierter Support fehlinterpretiert - werden. Der oben angeführte Vergleich mit dem + werden. Der oben angeführte Vergleich mit einem Vorstand hinkt und es wäre angebrachter zu erwähnen, dass diese Leute – wider besseres Wissen – ihr eigenes Leben für FreeBSD aufgegeben haben! Weitere Beitragende Beitragende Als letztes, aber mit Sicherheit nicht das Unwichtigste, ist die größte Gruppe der Entwickler – die Anwender selbst, die Rückmeldungen und Fehlerbehebungen in einem anhaltend hohen Maße an uns senden. Der bevorzugte Weg an dem weniger zentralisierten Bereich der FreeBSD-Entwicklung teilzuhaben, ist die Möglichkeit sich bei der Liste &a.hackers; anzumelden. Weitere Informationen über die verschiedenen FreeBSD-Mailinglisten erhalten Sie in . Die Liste der zu FreeBSD Beitragenden ist eine lange und wachsende. Also warum nicht selbst dort stehen, indem Sie gleich persönlich etwas zu FreeBSD beitragen? Quellcode ist nicht der einzige Weg, etwas zum Projekt beizusteuern. Eine genauere Übersicht über offene Aufgaben finden Sie auf der FreeBSD-Web-Site. Zusammengefasst bildet unser Entwicklungsmodell einen losen Verbund konzentrischer Kreise. Das zentralisierte Modell ist auf die Bedürfnisse der Anwender zugeschnitten, mit der einfachen Möglichkeit eine zentrale Code-Basis zu verfolgen und möglichen neuen Beitragenden nicht das Leben zu erschweren! Unser Ziel ist es, ein stabiles Betriebssystem mit einer großen Zahl passender Programme zu bieten, die der Anwender leicht installieren und anwenden kann. Und dieses Modell funktioniert für diese Aufgabe ziemlich gut. Das Einzige was wir von möglichen neuen Mitgliedern fordern, ist die gleiche Hingabe, mit der die jetzigen Mitglieder am dauerhaften Erfolg arbeiten! Das aktuelle FreeBSD-Release NetBSD OpenBSD 386BSD Free Software Foundation U.C. Berkeley Computer Systems Research Group (CSRG) FreeBSD ist ein (mit vollem Quellcode und ein frei erhältliches) auf 4.4BSD-Lite-basierendes Release für Intel &i386;, &i486;, &pentium;, &pentium; Pro, &celeron;, &pentium; II, &pentium; III, &pentium; 4 (oder ein dazu kompatibler Prozessor), &xeon;, DEC Alpha und Sun &ultrasparc; Systeme. Es stützt sich zum größten Teil auf Software der Computer Systems Research Group (CSRG) der Universität von Kalifornien in Berkeley mit einigen Verbesserungen aus NetBSD, OpenBSD, 386BSD und der Free Software Foundation. Seit unserem FreeBSD 2.0 vom Ende 1994, hat sich Leistung, Funktionsvielfalt und Stabilität dramatisch verbessert. Die größte Änderung erfuhr das virtuelle Speichermanagement durch eine Kopplung von virtuellem Speicher und dem Buffer-Cache, das nicht nur die Leistung steigert, sondern auch den Hauptspeicherverbrauch reduziert und ein 5 MB-System zu einem nutzbaren Minimal-System verhilft. Weitere Verbesserungen sind volle NIS-Client- und - -Server-Unterstützung, T/TCP, Dial-On-Demand-PPP, + Server-Unterstützung, T/TCP, Dial-On-Demand-PPP, integriertes DHCP, ein verbessertes SCSI-Subsystem, ISDN-Support, Unterstützung für ATM-, FDDI-, Fast- - und Gigabit-Ethernet-Karten (1000 Mbit) und verbesserter - Support der neusten Adaptec-Controller, sowie viele hundert + und Gigabit-Ethernet-Karten (1000 Mbit), verbesserter + Support der neusten Adaptec-Controller und tausende Fehlerkorrekturen. - Wir haben uns auch die vielen Anmerkungen und - Vorschläge unserer Anwender zu Herzen genommen und - versucht, einen gradlinigeren und einfacher zu verstehenden - Installationsablauf zu bieten. Rückmeldungen zu diesem - (ständig vorangetriebenen) Punkt sind besonders - willkommen. - Zusätzlich zur Standard-Distribution bietet FreeBSD eine Sammlung von portierter Software mit tausenden begehrten Programmen. Zum Verfassungszeitpunkt waren über &os.numports; Anwendungen in der Ports-Sammlung! Das Spektrum der Ports-Sammlung reicht von HTTP-Servern über Spiele, Programmiersprachen, Editoren und so ziemlich allem dazwischen. Die gesamte Ports-Sammlung benötigt &ports.size; an Speicherplatz, wobei jeder Port anhand eines Deltas zu den Quellen angegeben wird. Das macht es für uns erheblich leichter, Ports zu aktualisieren und es verringert den Plattenbedarf im Vergleich zur älteren 1.0-Port-Sammlung. Um ein Port zu übersetzen, müssen Sie einfach ins Verzeichnis des Programms wechseln und ein make install absetzen. Den Rest erledigt das System. Die originalen Quellen jedes zu installierenden Port werden dynamisch von CD-ROM oder einem FTP-Server bezogen. Es reicht also für genügend Plattenplatz zu sorgen, um die gewünschten Ports zu erstellen. Allen, die Ports nicht selbst kompilieren wollen: Es gibt zu fast jedem Port ein vorkompiliertes - Package und es kann mit einem einfachen Befehl - (pkg_add) installiert werden. + Paket, das einfach mit dem Befehl (pkg_add) + installiert wird. Pakete und Ports werden in + beschrieben. Eine Reihe von weiteren Dokumenten, die sich als hilfreich bei der Installation oder dem Arbeiten mit FreeBSD erweisen - könnten, liegen im Verzeichnis - /usr/share/doc auf jedem Rechner mit - FreeBSD 2.1 und aufwärts. Die lokal installierten + könnten, liegen auf neueren &os;-Systemen im Verzeichnis + /usr/share/doc. Die lokal installierten Anleitungen lassen sich mit jedem HTML-fähigen Browser unter folgenden Adressen betrachten: Das FreeBSD Handbuch /usr/share/doc/handbook/index.html Die FreeBSD FAQ /usr/share/doc/faq/index.html Es besteht auch die Möglichkeit, die (am häufigst-aktualisierten) Referenzdokumente unter http://www.FreeBSD.org/ anzusehen. diff --git a/de_DE.ISO8859-1/books/handbook/kernelconfig/chapter.sgml b/de_DE.ISO8859-1/books/handbook/kernelconfig/chapter.sgml index 163dd4031e..52294d36c7 100644 --- a/de_DE.ISO8859-1/books/handbook/kernelconfig/chapter.sgml +++ b/de_DE.ISO8859-1/books/handbook/kernelconfig/chapter.sgml @@ -1,1659 +1,1660 @@ Jim Mock Erweitert und neu strukturiert von Jake Hamby Ursprünglich veröffentlicht von Robert Altschaffel Übersetzt von Konfiguration des &os; Kernels Übersicht Kernel Erstellen eines angepassten Kernels Der Kernel ist das Herz des &os; Betriebssystems. Er ist verantwortlich für die Speicherverwaltung, das Durchsetzen von Sicherheitsdirektiven, Netzwerkfähigkeit, Festplattenzugriffen und vieles mehr. Obwohl &os; es immer mehr ermöglicht, dynamisch konfiguriert zu werden, ist es ab und an notwendig, den Kernel neu zu konfigurieren und zu kompilieren. Nachdem Sie dieses Kapitel gelesen haben, werden Sie Folgendes wissen: Wieso Sie Ihren Kernel neu konfigurieren sollten. Wie Sie eine Kernelkonfigurationsdatei erstellen oder verändern. Wie Sie mit der Konfigurationsdatei einen neuen Kernel kompilieren. Wie Sie den neuen Kernel installieren. Wie sie die benötigten Einträge in /dev erstellen. Was zu tun ist, falls etwas schiefgeht. Wieso einen eigenen Kernel bauen? Traditionell besaß &os; einen monolithischen Kernel. Das bedeutet, dass der Kernel ein einziges großes Programm war, das eine bestimmte Auswahl an Hardware unterstützte. Also musste man immer, wenn man das Kernelverhalten verändern wollte, zum Beispiel wenn man neue Hardware hinzufügen wollte, einen neuen Kernel kompilieren, installieren und das System neu starten. Heutzutage vertritt &os; immer mehr die Idee eines modularen Kernels, bei dem bestimmte Funktionen, je nach Bedarf, als Module geladen werden können. Ein bekanntes Beispiel dafür sind die Module für die PCMCIA-Karten in Laptops, die zum Starten nicht zwingend benötigt werden, und erst bei Bedarf geladen werden. Diese Module nennt man KLDs (kernel loadable modules). Trotzdem ist es noch immer nötig, einige statische Kernelkonfigurationen durchzuführen. In einigen Fällen ist die Funktion zu systemnah, um durch ein Modul zu realisiert werden. In anderen Fällen hat eventuell noch niemand ein ladbares Kernelmodul für diese Funktion geschrieben. Das Erstellen eines angepaßten Kernels ist eines der wichtigsten Rituale, das nahezu jeder Benutzer eines &unix; Systems erdulden muss. Obwohl dieser Prozess recht viel Zeit in Anspruch nimmt, bringt er doch viele Vorteile für Ihr &os; System. Der GENERIC Kernel muss eine Vielzahl unterschiedlicher Hardware unterstützen, im Gegensatz dazu unterstützt ein angepasster Kernel nur Ihre Hardware. Dies hat einige Vorteile: Schnellerer Bootvorgang. Da der Kernel nach weniger Geräten sucht, ist die Boot-Sequenz weitaus schneller. Geringere Speicherausnutzung. Ein eigener Kernel benötigt in der Regel weniger Speicher als ein GENERIC Kernel, was vorteilhaft ist, da der Kernel immer im RAM verweilt. Insbesondere profitieren Systeme mit wenig RAM davon. Zusätzliche Hardwareunterstützung. Ein angepasster Kernel kann Unterstützung für Geräte wie Soundkarten bieten, die im GENERIC Kernel nicht unterstützt werden. Erstellen und Installation eines angepassten Kernels Kernel Erstellen und Installation Zuerst erläutern wir die Verzeichnisstruktur, in der der Kernel gebaut wird. Die im Folgenden genannten Verzeichnisse sind relativ zu /usr/src/sys angegeben, das Sie auch über /sys erreichen können. Es existieren mehrere Unterverzeichnisse, die bestimmte Teile des Kernels darstellen, aber die für uns wichtigsten sind arch/conf, in dem Sie die Konfigurationsdatei für den angepassten Kernel erstellen werden, und compile, in dem der Kernel gebaut wird. arch kann entweder i386, alpha oder pc98 (eine in Japan beliebte Architektur) sein. Alles in diesen Verzeichnissen ist nur für die jeweilige Architektur relevant, während der Rest des Codes für alle Plattformen, auf die &os; portiert werden kann, gleich ist. Beachten Sie die Verzeichnisstruktur, die jedem unterstützten Gerät, jedem Dateisystem und jeder Option ein eigenes Verzeichnis zuordnet. Ab &os; 5.X wird die sparc64-Architektur unterstützt und es existieren Verzeichnisse für weitere Architekturen, an denen allerdings noch gearbeitet wird. Falls Sie kein /usr/src/sys Verzeichnis vorfinden, so sind die Kernelquellen nicht installiert. Der einfachste Weg dies nachzuholen, ist /stand/sysinstall als root auszuführen. Dort wählen Sie Configure, dann Distributions, dann src und schließlich sys. Wenn Sie eine Aversion gegen sysinstall haben und eine offizielle &os; CD-ROM besitzen, können Sie die Kernelquellen auch von der Kommandozeile installieren: &prompt.root; mount /cdrom &prompt.root; mkdir -p /usr/src/sys &prompt.root; ln -s /usr/src/sys /sys &prompt.root; cat /cdrom/src/ssys.[a-d]* | tar -xzvf - Als nächstes wechseln sie in das Verzeichnis, in dem die GENERIC Konfigurationsdatei liegt und kopieren diese in eine Datei mit dem Namen, den Sie Ihrem Kernel geben wollen: &prompt.root; cd /usr/src/sys/i386/conf &prompt.root; cp GENERIC MYKERNEL Traditionell ist der Name des Kernels immer in Großbuchstaben. Wenn Sie mehrere &os; mit unterschiedlicher Hardware warten, ist es nützlich, wenn Sie Konfigurationsdatei nach dem Hostnamen der Maschinen benennen. Im Beispiel verwenden wir den Namen MYKERNEL. Es ist nicht zu empfehlen die Konfigurationsdatei direkt unterhalb von /usr/src abzuspeichern. Wenn Sie Probleme haben, könnten Sie der Versuchung erliegen, /usr/src einfach zu löschen und wieder von vorne anzufangen. Fünf Sekunden später werden Sie dann feststellen, dass Sie soeben Ihre Kernelkonfigurationsdatei gelöscht haben. Editieren Sie immer eine Kopie von GENERIC. Änderungen an GENERIC können verloren gehen, wenn der Quellbaum aktualisiert wird. Sie sollten die Konfigurationsdatei an anderer Stelle aufheben und in i386 einen Link auf die Datei erstellen. Beispiel: &prompt.root; cd /usr/src/sys/i386/conf &prompt.root; mkdir /root/kernels &prompt.root; cp GENERIC /root/kernels/MYKERNEL &prompt.root; ln -s /root/kernels/MYKERNEL Diese und die folgenden Kommandos müssen Sie als root ausführen, da Sie sonst permission denied Fehler erhalten. Jetzt editieren Sie MYKERNEL mit einem Texteditor Ihres Vertrauens. Wenn Sie gerade neu anfangen, ist Ihnen vielleicht nur der vi Editor bekannt, der allerdings zu komplex ist, um hier erklärt zu werden. Er wird aber in vielen Büchern aus der Bibliographie gut erklärt. &os; bietet aber auch einen leichter zu benutzenden Editor, den ee an, den Sie, wenn Sie Anfänger sind, benutzen sollten. Sie können die Kommentare am Anfang der Konfigurationsdatei ändern, um die Änderungen gegenüber GENERIC zu dokumentieren. SunOS Falls Sie schon einmal einen Kernel unter &sunos; oder einem anderen BSD kompiliert haben, werden Sie diese Konfigurationsdatei bereits kennen. Wenn Sie mit einem anderen Betriebssystem wie DOS vertraut sind, könnte die GENERIC Konfigurationsdatei Sie verschrecken. In diesen Fall sollten Sie den Beschreibungen im Abschnitt über die Konfigurationsdatei langsam und vorsichtig folgen. Wenn Sie die &os; Quellen synchronisieren, sollten Sie immer, bevor Sie etwas verändern, /usr/src/UPDATING durchlesen. Diese Datei enthält alle wichtigen Informationen, die Sie beim Aktualisieren beachten müssen. Da /usr/src/UPDATING immer zu Ihrer Version der &os; Quellen passt, sind die Informationen dort genauer, als in diesem Handbuch. Nun müssen Sie die Kernelquellen kompilieren. Dazu gibt es zwei Verfahren. Welches Verfahren Sie nehmen, hängt davon ab, warum Sie den Kernel neu bauen und welche Version von &os; Sie verwenden. Wenn Sie nur die Kernelquellen installiert haben, benutzen Sie das Verfahren 1. Wenn Sie eine &os; Version vor 4.0 benutzen und nicht auf &os; 4.0 oder höher mit make world migrieren, benutzen Sie Verfahren 1. Wenn Sie einen neuen Kernel bauen wollen, ohne dabei den Quellcode zu aktualisieren, weil Sie vielleicht nur eine neue Option wie IPFIREWALL hinzugefügt haben, können Sie jedes der Verfahren einsetzen. Wenn Sie als Teil eines make world den Kernel aktualisieren, benutzen Sie das Verfahren 2. Verfahren 1. Bau eines Kernels mit der <quote>herkömmlichen</quote> Methode Generieren Sie die Kernel Quellen mit &man.config.8;. &prompt.root; /usr/sbin/config MYKERNEL Das vorige Kommando gibt das Bauverzeichnis aus. Wechseln Sie jetzt in das Bauverzeichnis: &prompt.root; cd ../compile/MYKERNEL Wenn Sie eine &os;-Version vor 5.0 verwenden, wechseln Sie wie folgt in das Bauverzeichnis: &prompt.root; cd ../../compile/MYKERNEL Kompilieren Sie den Kernel. &prompt.root; make depend &prompt.root; make Installieren Sie den neuen Kernel. &prompt.root; make install Verfahren 2. Bau eines Kernels mit der <quote>neuen</quote> Methode Wechseln Sie in das usr/src Verzeichnis. &prompt.root; cd /usr/src Kompilieren Sie den Kernel. &prompt.root; make buildkernel KERNCONF=MYKERNEL Installieren Sie den neuen Kernel. &prompt.root; make installkernel KERNCONF=MYKERNEL Mit &os; 4.2 und älteren Versionen müssen Sie KERNCONF durch KERNEL ersetzen. 4.2-STABLE nach dem 2. Februar 2001 erkennt die Option KERNCONF. cvsup anonymous CVS CTM CVS anonymous Wenn Sie die Quellen nicht auf irgendeine Weise aktualisiert haben, das heißt, Sie haben nicht CVSup, CTM oder anoncvs benutzt, dann können Sie die Sequenz config, make depend, make, make install benutzen. kernel.old Der neue Kernel wird nach /kernel kopiert, während der alte Kernel nach /kernel.old verschoben wird. Um den neuen Kernel zu benutzen, sollten Sie die Maschine jetzt rebooten. Falls etwas schief geht, sehen Sie bitte in dem Abschnitt zur Fehlersuche am Ende dieses Kapitels nach. Dort sollten Sie auch unbedingt den Abschnitt lesen, der erklärt, was zu tun ist, wenn der neue Kernel nicht bootet. Ab &os; 5.0 werden der neue Kernel und die Module in das Verzeichnis /boot/kernel installiert. Der alte Kernel und die dazugehörenden Module werden in das Verzeichnis /boot/kernel.old gesichert. Im Verzeichnis /boot werden auch andere Dateien, die zum Systemstart benötigt werden, wie der Boot-Loader (&man.loader.8;) und dessen Konfiguration, abgelegt. Module von Fremdherstellern oder angepasste Module werden in /boot/modules abgelegt. Beachten Sie bitte, dass diese Module immer zu dem verwendeten Kernel passen müssen, da Module, die nicht zu dem verwendeten Kernel passen, die Stabilität des Systems gefährden. Wenn Sie neue Geräte, wie Soundkarten, hinzugefügt haben und &os; 4.X oder eine frühere Version benutzen, müssen Sie unter Umständen Gerätedateien in /dev erstellen, bevor Sie die Geräte benutzen können. Weitere Informationen finden Sie in Erstellen von Gerätedateien später in diesem Kapitel. Die Kernelkonfigurationsdatei Kernel LINT LINT Kernel Konfigurationsdatei Das Format der Konfigurationsdatei ist recht einfach. Jede Zeile enthält ein Schlüsselwort und ein oder mehrere Argumente. Eine Zeile, die von einen # eingeleitet wird, gilt als Kommentar und wird ignoriert. Die folgenden Abschnitte beschreiben jedes Schlüsselwort in der Reihenfolge, in der es in GENERIC auftaucht. Manche zusammengehörende Schlüsselwörter werden in einem Abschnitt beschrieben, obwohl Sie über GENERIC verstreut sind. Eine ausführliche Liste aller Optionen mit detaillierten Erklärungen finden Sie in der Konfigurationsdatei LINT, die sich in demselben Verzeichnis wie GENERIC befindet. Wenn Sie sich über den Zweck oder die Notwendigkeit einer Zeile im Unklaren sind, überprüfen Sie bitte diese bitte zuerst in LINT. Ab &os; 5.X ist die Datei LINT durch die Datei NOTES ersetzt worden. Hauptsächlich architekturunabhängige Optionen werden zudem in /usr/src/sys/conf/NOTES gespeichert. Schauen Sie sich bitte auch diese Optionen an. Kernel Beispiel Konfigurationsdatei Das folgende Beispiel zeigt eine GENERIC Konfigurationsdatei, die, wo notwendig, zusätzliche Kommentare enthält. Sie sollte der Datei /usr/src/sys/i386/conf/GENERIC auf Ihrem System sehr ähnlich sein. Für detaillierte Informationen über alle möglichen Optionen sehen Sie sich bitte /usr/src/sys/i386/conf/LINT an. # # GENERIC -- Generic kernel configuration file for FreeBSD/i386 # # For more information on this file, please read the handbook section on # Kernel Configuration Files: # # http://www.FreeBSD.org/doc/en_US.ISO8859-1/books/handbook/kernelconfig-config.html # # The handbook is also available locally in /usr/share/doc/handbook # if you've installed the doc distribution, otherwise always see the # &os; World Wide Web server (http://www.FreeBSD.org/) for the # latest information. # # An exhaustive list of options and more detailed explanations of the # device lines is also present in the ../../conf/NOTES and NOTES files. # If you are in doubt as to the purpose or necessity of a line, check first # in NOTES. # # $FreeBSD: src/sys/i386/conf/GENERIC,v 1.380 2003/03/29 13:36:41 mdodd Exp $ Die folgenden Schlüsselwörter sind für jeden Kernel, den Sie bauen, zwingend erforderlich: Kerneloption machine machine i386 Gibt die Architektur der Maschine an und muss entweder i386, pc98, sparc64, alpha, ia64, amd64 oder powerpc sein. Kerneloption cpu cpu I486_CPU cpu I586_CPU cpu I686_CPU Die vorigen Zeilen geben den Typ der CPU Ihres Systems an. Sie können mehrere CPU Typen angeben, wenn Sie sich zum Beispiel nicht sicher sind, ob Sie I586_CPU oder I686_CPU benutzen sollen. Für einen angepassten Kernel ist es aber am besten, wenn Sie nur die CPU angeben, die sich in der Maschine befindet. Der CPU-Typ wird in den Boot-Meldungen ausgegeben, die in der Datei /var/run/dmesg.boot gespeichert sind. Kerneloption CPU-Typ In den Quellen von &os; ist die Option I386_CPU noch enthalten, doch ist die Option sowohl in -STABLE wie auch in -CURRENT deaktiviert. Das heißt Sie haben die folgenden Möglichkeiten, &os; auf einem 386-System zu installieren: Installieren Sie ein älteres &os;-Release und aktualisieren Sie das System mit den Quellen wie in beschrieben. Bauen Sie das Userland und den Kernel auf einer neueren Maschine und installieren Sie die übersetzten Dateien aus /usr/obj. Weitere Details entnehmen Sie bitte . Bauen Sie Ihr eigenes FreeBSD-Release, dessen Installations-CD einen Kernel enthält der die Option I386_CPU unterstützt. Die einfachste Möglichkeit ist sicher die erste. Sie benötigen dazu allerdings sehr viel Plattenplatz, der auf 386-Systemen vielleicht nicht vorhanden ist. Kerneloption ident ident GENERIC Gibt den Namen Ihres Kernels an. Hier sollten Sie den Namen einsetzen, den Sie Ihrer Konfigurationsdatei gegeben haben. In unserem Beispiel ist das MYKERNEL. Der Wert, den Sie ident zuweisen, wird beim Booten des neuen Kernels ausgegeben. Wenn Sie den Kernel von Ihrem normal verwendeten Kernel unterscheiden wollen, weil Sie zum Beispiel einen Kernel zum Testen bauen, ist es nützlich, hier einen anderen Namen anzugeben. Kerneloption maxusers maxusers n Die Größe wichtiger Systemtabellen wird von maxusers bestimmt. Der Wert dieser Variablen sollte ungefähr der Anzahl der Benutzer des Systems entsprechen. Ab &os; 4.5 kann das System diesen Wert selbst setzen, wenn Sie in der Konfigurationsdatei den Wert 0 Der verwendete Algorithmus setzt maxuser auf die Speichergröße des Systems. Der minimale Wert beträgt dabei 32, das Maximum ist 384. angeben. Ab &os; 5.X wird maxusers auf 0 gesetzt, wenn die Option nicht angegeben wird. Wenn Sie eine frühere Version als &os; 4.5 einsetzen, oder den Wert selbst bestimmen wollen, sollten Sie maxusers mindestens auf 4 setzen, insbesondere wenn Sie beabsichtigen, das X Window System zu benutzen oder Software zu kompilieren. Der Grund dafür ist, dass der wichtigste Wert, der von maxusers bestimmt wird, die maximale Anzahl an Prozessen ist, die auf 20 + 16 * maxusers gesetzt wird. Wenn Sie also maxusers auf 1 setzen, können gleichzeitig nur 36 Prozesse laufen, von denen ungefähr 18 schon beim Booten des Systems gestartet werden und nochmal etwa 15 Prozesse dazukommen, wenn Sie das X Window System starten. Selbst eine einfache Aufgabe, wie das Lesen einer Manualpage, braucht neun Prozesse zum Filtern, Dekomprimieren und Anschauen. Für die meisten Benutzer sollte es ausreichen, maxusers auf 64 zu setzen, womit 1044 gleichzeitige Prozesse zur Verfügung stehen.Wenn Sie allerdings den gefürchteten proc table full Fehler, beim Versuch ein Programm zu starten oder auf einem Server mit einer großen Benutzerzahl (wie ftp.FreeBSD.org) sehen, dann sollten Sie den Wert erhöhen und den Kernel neu bauen. Die Anzahl der Benutzer, die sich auf einer Maschine anmelden können, wird nicht durch maxusers begrenzt. Der Wert dieser Variablen zusammen mit einer angenommenen Anzahl Prozesse pro Benutzer legt sinnvolle Größen für bestimmte Systemtabellen fest. Die Option pseudo-device pty 16 legt die Anzahl der erlaubten Anmeldungen von entfernten Systemen und X-Terminals fest. # Floating point support - do not disable. device npx0 at nexus? port IO_NPX irq 13 npx0 ist die Schnittstelle zur Fließkomma-Einheit in &os;. Dies kann entweder ein Coprozessor oder eine mathematische Software-Emulation sein. Die Angabe dieser Option ist verpflichtend. # Pseudo devices - the number indicates how many units to allocate. pseudo-device loop # Network loopback Das TCP/IP Loopback Device. Wenn Sie eine Telnet oder FTP Verbindung zu localhost (a.k.a., 127.0.0.1) aufbauen, erstellen Sie eine Verbindung zu sich selbst durch dieses Pseudo-Device. Die Angabe dieser Option ist verpflichtend. Das Folgende ist mehr oder weniger optional. Mehr Informationen enthalten die Anmerkungen unter oder neben den diskutierten Optionen. #To statically compile in device wiring instead of /boot/device.hints #hints "GENERIC.hints" #Default places to look for devices. Ab &os; 5.X werden Geräte mit &man.device.hints.5; konfiguriert. In der Voreinstellung überprüft &man.loader.8; beim Systemstart die Datei /boot/device.hints. Die Option hints erlaubt es, die Gerätekonfiguration statisch in den Kernel einzubinden, sodass die Datei device.hints in /boot nicht benötigt wird. #makeoptions DEBUG=-g #Build kernel with gdb(1) debug symbols Der normale Bauprozess von FreeBSD erstellt einen Kernel, der keine Debugging-Informationen enthält. Nachdem der Kernel gebunden ist, werden die meisten Symbole entfernt, um bei der Installation Platz zu sparen. Wenn Sie Kernel auf dem -CURRENT-Zweig testen oder eigene Änderungen im Kernel vornehmen, sollten Sie vielleicht diese Zeile aktivieren. &man.gcc.1; wird dann mit der Option aufgerufen und erzeugt die Debugging-Informationen. Erstellen Sie den Kernel mit der herkömmlichen Methode (siehe ), erreichen Sie dasselbe, wenn Sie &man.config.8; mit der Option aufrufen. options MATH_EMULATE #Support for x87 emulation Diese Zeile schaltet die Software-Emulation eines mathematischen Coprozessors für den Fall, das Ihre Maschine keinen besitzt (386 oder 486SX), ein. Wenn Sie einen 386 oder 486SX mit dem dazugehörigen Coprozessor (387 oder 487), einen 486DX oder besser (wie &pentium;, &pentium; II) besitzen, können Sie diese Zeile auskommentieren. Die normalen Emulationsroutinen für den Coprozessor in &os; sind nicht sehr genau. Wenn Sie keinen Coprozessor besitzen, sollten Sie hier GPL_MATH_EMULATE einsetzen, um die Unterstützung der GNU Routinen zu aktivieren. Wegen der damit verbundenen Lizenz, ist diese Option in der Voreinstellung nicht aktiviert. Ab &os; 5.0 ist die Emulation eines mathematischen Coprozessors in der Voreinstellung ausgeschaltet, da heute nicht mehr so viele alte CPUs ohne Coprozessor eingesetzt werden. Damit der GENERIC-Kernel mit diesen CPUs zusammenarbeitet, müssen oft noch weitere Optionen aktiviert werden. options INET #InterNETworking Netzwerkunterstützung. Auch wenn Sie nicht planen, den Rechner mit einem Netzwerk zu verbinden, sollten Sie diese Option aktiviert lassen. Die meisten Programme sind mindestens auf die Loopback Unterstützung (Verbindungen mit sich selbst) angewiesen. Damit ist diese Option im Endeffekt notwendig. options INET6 #IPv6 communications protocols Aktiviert die Unterstützung für das IPv6 Protokoll. options FFS #Berkeley Fast Filesystem options FFS_ROOT #FFS usable as root device [keep this!] Das Dateisystem für Festplatten. Wenn Sie von einer Festplatte booten wollen, lassen Sie diese Option aktiviert. Ab &os; 5.0 wird FFS_ROOT nicht mehr benötigt. options UFS_ACL #Support for access control lists Diese Option, die es erst ab &os; 5.0 gibt, aktiviert Zugriffskontrolllisten (ACL). Die ACLs hängen von erweiterten Attributen und UFS2 ab, eine genaue Beschreibung finden Sie in . Die Zugriffskontrolllisten sind in der Voreinstellung aktiviert und sollten auch nicht deaktiviert werden, wenn Sie schon einmal auf einem Dateisystem verwendet wurden, da dies die Zugriffsrechte auf Dateien in unvorhersehbarer Art und Weise ändern kann. options UFS_DIRHASH #Improve performance on big directories Diese Option steigert die Geschwindigkeit von Plattenzugriffen auf großen Verzeichnissen. Dadurch verbraucht das System etwas mehr Speicher als vorher. Für stark beschäftigte Server oder Arbeitsplatzrechner sollten Sie diese Option aktiviert lassen. Auf kleineren Systemen, bei denen Speicher eine kostbare Ressource darstellt oder Systemen, auf denen die Geschwindigkeit der Plattenzugriffe nicht wichtig ist, wie Firewalls, können Sie diese Option abstellen. options SOFTUPDATES #Enable FFS Soft Updates support Mit dieser Option wird die Unterstützung für Soft Updates, die Schreibzugriffe beschleunigen, in den Kernel eingebunden. Auch wenn die Funktion im Kernel ist, muss sie für einzelne Dateisysteme explizit aktiviert werden. Überprüfen Sie mit &man.mount.8;, ob die Dateisysteme Soft Updates benutzen. Wenn die Option soft-updates nicht aktiviert ist, können Sie die Option nachträglich mit &man.tunefs.8; aktivieren. Für neue Dateisysteme können Sie Option beim Anlegen mit &man.newfs.8; aktivieren. options MFS #Memory Filesystem options MD_ROOT #MD is a potential root device Das speicherbasierte Dateisystem. Dies ist eine RAM-Disk, die zum schnellen Zugriff auf temporäre Dateien dient und nützlich ist, wenn Sie über viel Speicher verfügen. Eine MFS-Partition eignet sich sehr gut für das /tmp Verzeichnis, da dort sehr viele Programme temporäre Daten speichern. Um eine MFS RAM-Disk auf /tmp einzurichten, fügen Sie die folgende Zeile in /etc/fstab hinzu: /dev/ad1s2b /tmp mfs rw 0 0 Um das Dateisystem einzuhängen, können Sie nun booten oder rufen das Kommando mount /tmp auf. Ab &os; 5.0 werden RAM-disks mit &man.md.4; erstellt, daher wird die Option MFS nicht mehr unterstützt. Wie RAM-disks eingerichtet werden, beschreiben die Hilfeseiten &man.mdconfig.8; und &man.mdmfs.8; sowie . Kerneloption NFS Kerneloption NFS_ROOT options NFS #Network Filesystem options NFS_ROOT #NFS usable as root device, NFS required Das Network Filesystem. Wenn Sie keine Partitionen von einem UNIX File-Server über TCP/IP einhängen wollen, können Sie diese Zeile auskommentieren. Kerneloption MSDOSFS options MSDOSFS #MSDOS Filesystem Das &ms-dos; Dateisystem. Sie können diese Zeile auskommentieren, wenn Sie nicht vorhaben, eine DOS-Partition beim Booten einzuhängen. Das nötige Modul wird ansonsten automatisch geladen, wenn Sie das erste mal eine DOS-Partition einhängen. Außerdem können Sie mit den ausgezeichneten mtools aus der Ports-Sammlung auf DOS-Floppies zugreifen, ohne diese an- und abhängen zu müssen (MSDOSFS wird in diesem Fall nicht benötigt). options CD9660 #ISO 9660 Filesystem options CD9660_ROOT #CD-ROM usable as root, CD9660 required Das ISO 9660 Dateisystem für CD-ROMs. Sie können diese Zeile auskommentieren, wenn Sie kein CD-ROM-Laufwerk besitzen oder nur ab und an CDs einhängen. Das Modul wird automatisch geladen, sobald Sie das erste Mal eine CD einhängen. Für Audio-CDs benötigen Sie dieses Dateisystem nicht. options PROCFS #Process filesystem Das Prozeß-Dateisystem. Dies ist ein Pseudo-Dateisystem, das auf /proc eingehangen wird und es Programmen wie &man.ps.1; erlaubt, mehr Informationen über laufende Prozesse auszugeben. Ab &os; 5.0 sollte PROCFS nicht mehr benötigt werden, da die meisten Debug- und Überwachungs-Werkzeuge nicht mehr darauf angewiesen sind. Wenn PROCFS mit &os; 5.0 benutzt werden soll, wird zusätzlich noch die Option PSEUDOFS benötigt: options PSEUDOFS #Pseudo-filesystem framework PSEUDOFS steht unter &os; 4.X nicht zur Verfügung. Im Gegensatz zu &os; 4.X wird ab &os; 5.0 das Prozeß-Dateisystem nicht mehr per Voreinstellung eingehangen. options COMPAT_43 #Compatible with BSD 4.3 [KEEP THIS!] Stellt die Kompatibilität zu 4.3BSD sicher. Belassen Sie diese Option, da sich manche Programme recht sonderbar verhalten werden, wenn Sie diese auskommentieren. options COMPAT_FREEBSD4 #Compatible with FreeBSD4 Mit &os; 5.X stellt diese Option auf &i386;- und Alpha-Systemen sicher, dass Anwendungen, die auf älteren &os; Versionen übersetzt wurden und alte Systemaufrufe verwenden, noch lauffähig sind. Wir empfehlen, diese Option auf allen &i386;- und Alpha-Systemen zu verwenden, auf denen vielleicht noch ältere Anwendungen laufen sollen. Auf Plattformen, die erst ab &os; 5.0 unterstützt werden (wie ia64 und &sparc;), wird diese Option nicht benötigt. options SCSI_DELAY=15000 #Delay (in ms) before probing SCSI Dies weist den Kernel an, 15 Sekunden zu warten, bevor er anfängt nach SCSI-Geräten auf dem System zu suchen. Wenn Sie nur IDE-Geräte besitzen, können Sie die Anweisung ignorieren. Sie können versuchen, den Wert auf 5 Sekunden senken, um den Startvorgang zu beschleunigen. Wenn &os; dann Schwierigkeiten hat, Ihre SCSI-Geräte zu erkennen, sollten Sie den Wert natürlich wieder erhöhen. options UCONSOLE #Allow users to grab the console Erlaubt es Benutzern, die Konsolenausgabe umzulenken. Starten Sie einen xterm mit xterm -C, um Ausgaben von &man.write.1;, &man.talk.1; oder Kernelmeldungen auf der Konsole darin zu sehen. Ab &os; 5.0 wird UCONSOLE nicht mehr benötigt. options USERCONFIG #boot -c editor Diese Option erlaubt es Ihnen, den Konfigurationseditor aus dem Bootmenü zu starten. options VISUAL_USERCONFIG #visual boot -c editor Diese Option erlaubt es Ihnen, den Visual-Konfigurationseditor aus dem Bootmenü zu starten. Ab &os; 5.0 werden Geräte mit &man.device.hints.5; anstelle des Konfigurationseditors konfiguriert, dies wird in erklärt. options KTRACE #ktrace(1) support Dies schaltet die Kernel-Prozessverfolgung (engl. kernel process tracing) ein, die sehr nützlich bei der Fehlersuche ist. options SYSVSHM #SYSV-style shared memory Diese Option aktiviert die Unterstützung für System V Shared-Memory. Die XSHM-Erweiterung von X benötigt diese Option und viele Graphik-Programme werden die Erweiterung automatisch benutzen und schneller laufen. Wenn Sie X benutzen, sollten Sie diese Option auf jeden Fall aktivieren. options SYSVSEM #SYSV-style semaphores Unterstützung für System V Semaphoren. Dies wird selten gebraucht, vergrößert aber den Kernel nur um einige hundert Bytes. options SYSVMSG #SYSV-style message queues Unterstützung für System V Messages. Vergrößert den Kernel wiederum nur um einige hundert Bytes. Programme, die diese System V Erweiterungen benutzen, können Sie sich mit &man.ipcs.1; anzeigen lassen. options P1003_1B #Posix P1003_1B real-time extensions options _KPOSIX_PRIORITY_SCHEDULING - Echtzeit-Erweiterungen, die 1993 zu &posix; hinzugefügt - wurden. Bestimmte Programme wie Star - Office benutzen diese Erweiterungen. + Echtzeit-Erweiterungen, die 1993 zu &posix; + hinzugefügt wurden. Bestimmte Programme wie + &staroffice; benutzen + diese Erweiterungen. Ab &os; 5.0 werden diese Funktionen von _KPOSIX_PRIORITY_SCHEDULING alleine zur Verfügung gestellt. P1003_1B wird nicht mehr benötigt. Kerneloption ICMP_BANDLIM Denial of Service (DoS) options ICMP_BANDLIM #Rate limit bad replies Diese Option aktiviert die ICMP Bandbreitenbegrenzung für Antworten. Diese Option sollten Sie aktiviert lassen, da sie Ihre Maschine vor Denial of Service Angriffen schützt. In der Voreinstellung von &os; 5.X ist diese Funktion aktiviert. ICMP_BANDLIM muss daher nicht extra angegeben werden. Kerneloption SMP # To make an SMP kernel, the next two are needed #options SMP # Symmetric MultiProcessor Kernel #options APIC_IO # Symmetric (APIC) I/O Beide Option werden für SMP Unterstützung benötigt. device isa Alle von &os; unterstützten PCs benötigen diese Zeile. &os; unterstützt den IBM PS/2 (Microchannel Architektur) nur eingeschränkt. Weitere Informationen über die Microchannel Unterstützung entnehmen Sie bitte /usr/src/sys/i386/conf/LINT. device eisa Fügen Sie diese Zeile ein, wenn Sie ein EISA-Motherboard besitzen. Dies aktiviert die Erkennung und Konfiguration von allen Geräten auf dem EISA Bus. device pci Wenn Sie ein PCI-Motherboard besitzen, fügen Sie diese Zeile ein. Dies aktiviert die Erkennung von PCI-Karten und die PCI-ISA bridge. device agp Fügen Sie diese Zeile ein, wenn Sie eine AGP-Karte besitzen. Damit werden Motherboards mit AGP und AGP GART unterstützt. # Floppy drives device fdc0 at isa? port IO_FD1 irq 6 drq 2 device fd0 at fdc0 drive 0 device fd1 at fdc0 drive 1 Der Floppy-Controller. fd0 ist das A: Laufwerk und fd1 ist das B: Laufwerk. device ata Dieser Treiber unterstützt alle ATA und ATAPI Geräte. Eine device ata Zeile reicht aus und der Kernel wird auf modernen Maschinen alle PCI ATA/ATAPI Geräte entdecken. device atadisk # ATA disk drives Für ATA Plattenlaufwerke brauchen Sie diese Zeile zusammen mit device ata. device atapicd # ATAPI CDROM drives Zusammen mit device ata wird dies für ATAPI CD-ROM Laufwerke benötigt. device atapifd # ATAPI floppy drives Zusammen mit device ata wird dies für ATAPI Floppy Laufwerke benötigt. device atapist # ATAPI tape drives Zusammen mit device ata wird dies für ATAPI Bandlaufwerke benötigt. options ATA_STATIC_ID #Static device numbering Erzwingt wie der alte Treiber eine statische Gerätenummer für den Controller. Ist diese Option nicht aktiviert, werden die Gerätenummern dynamisch zugeordnet. # ATA and ATAPI devices device ata0 at isa? port IO_WD1 irq 14 device ata1 at isa? port IO_WD2 irq 15 Benutzen Sie die obigen Zeilen für ältere Systeme ohne einen PCI Bus. # SCSI Controllers device ahb # EISA AHA1742 family device ahc # AHA2940 and onboard AIC7xxx devices device amd # AMD 53C974 (Teckram DC-390(T)) device dpt # DPT Smartcache - See LINT for options! device isp # Qlogic family device ncr # NCR/Symbios Logic device sym # NCR/Symbios Logic (newer chipsets) device adv0 at isa? device adw device bt0 at isa? device aha0 at isa? device aic0 at isa? SCSI Controller. Kommentieren Sie alle Controller aus, die sich nicht in Ihrem System befinden. Wenn Sie ein IDE-System besitzen, können Sie alle Einträge entfernen. # SCSI peripherals device scbus # SCSI bus (required) device da # Direct Access (disks) device sa # Sequential Access (tape etc) device cd # CD device pass # Passthrough device (direct SCSI access) SCSI Peripheriegeräte. Kommentieren Sie wieder alle Geräte aus, die Sie nicht besitzen. Besitzer von IDE-Systemen können alle Einträge entfernen. # RAID controllers device ida # Compaq Smart RAID device amr # AMI MegaRAID device mlx # Mylex DAC960 family Unterstützte RAID Controller. Wenn Sie keinen der aufgeführten Controller besitzen, kommentieren Sie die Einträge aus oder entfernen sie. # atkbdc0 controls both the keyboard and the PS/2 mouse device atkbdc0 at isa? port IO_KBD Der Tastatur-Controller (atkbdc) ist für die Ein- und Ausgabe von AT-Tastaturen und PS/2 Zeigegeräten (z.B. einer Maus) verantwortlich. Dieser Controller wird vom Tastaturtreiber (atkbd) und dem PS/2 Gerätetreiber (psm) benötigt. device atkbd0 at atkbdc? irq 1 Zusammen mit dem atkbdc Controller bietet der atkbd Treiber Zugriff auf AT-Tastaturen. device psm0 at atkbdc? irq 12 Benutzen Sie dieses Gerät, wenn Sie eine Maus mit PS/2 Anschluss besitzen. device vga0 at isa? Der Grafikkartentreiber. # splash screen/screen saver pseudo-device splash Zeigt einen Splash Screen beim Booten. Diese Zeile wird auch von den Bildschirmschonern benötigt. # syscons is the default console driver, resembling an SCO console device sc0 at isa? sc0 ist in der Voreinstellung der Treiber für die Konsole, die der SCO-Konsole ähnelt. Da die meisten bildschirmorientierten Programme auf die Konsole mit Hilfe einer Datenbank wie termcap zugreifen, sollte es keine Rolle spielen, ob Sie diesen Treiber oder vt0, den VT220 kompatiblen Konsolentreiber einsetzen. Wenn Sie Probleme mit bildschirmorientierten Anwendungen unter dieser Konsole haben, setzen Sie beim Anmelden die Variable TERM auf den Wert VT220. # Enable this and PCVT_FREEBSD for pcvt vt220 compatible console driver #device vt0 at isa? #options XSERVER # support for X server on a vt console #options FAT_CURSOR # start with block cursor # If you have a ThinkPAD, uncomment this along with the rest of the PCVT lines #options PCVT_SCANSET=2 # IBM keyboards are non-std Der VT220 kompatible Konsolentreiber ist kompatibel zu VT100/102. Auf einigen Laptops, die aufgrund der Hardware inkompatibel zum sc0 Treiber sind, funktioniert dieser Treiber gut. Beim Anmelden sollten Sie die Variable TERM auf den Wert vt100 setzen. Dieser Treiber kann sich als nützlich erweisen, wenn Sie sich über das Netzwerk auf vielen verschiedenen Maschinen anmelden, da dort oft Einträge in termcap oder terminfo für das sc0 Gerät fehlen. Dagegen sollte vt100 auf jeder Plattform unterstützt werden. # Power management support (see LINT for more options) device apm0 at nexus? disable flags 0x20 # Advanced Power Management Unterstützung zur Energieverwaltung. Nützlich für Laptops. # PCCARD (PCMCIA) support device card device pcic0 at isa? irq 10 port 0x3e0 iomem 0xd0000 device pcic1 at isa? irq 11 port 0x3e2 iomem 0xd4000 disable PCMCIA Unterstützung. Wenn Sie einen Laptop benutzen, brauchen Sie diese Zeile. # Serial (COM) ports device sio0 at isa? port IO_COM1 flags 0x10 irq 4 device sio1 at isa? port IO_COM2 irq 3 device sio2 at isa? disable port IO_COM3 irq 5 device sio3 at isa? disable port IO_COM4 irq 9 Es gibt vier serielle Schnittstellen, die in der &ms-dos; und &windows; Welt COM1 bis COM4 genannt werden. Wenn Sie ein internes Modem, das COM4 benutzt, besitzen und eine serielle Schnittstelle haben, die auf COM2 liegt, müssen Sie den IRQ des Modems auf 2 setzen (wegen undurchsichtigen technischen Gründen ist IRQ2 =IRQ9). Wenn Sie eine serielle Multiport-Karte besitzen, sehen Sie die korrekten Werte für diese Zeilen in &man.sio.4; nach. Einige Graphikkarten, besonders die auf S3-Chips basierten, benutzen IO-Adressen der Form 0x*2e8 und manche billige serielle Karten dekodieren den 16-Bit IO-Adressraum nicht sauber. Dies führt zu Konflikten und blockiert dann die COM4 Schnittstelle. Jeder seriellen Schnittstelle muss ein eigener IRQ zugewiesen werden (wenn Sie eine Multiport-Karte verwenden, bei der das Teilen von Interrupts unterstützt wird, muss das nicht der Fall sein), daher können in der Voreinstellung COM3 und COM4 nicht benutzt werden. # Parallel port device ppc0 at isa? irq 7 Die parallele Schnittstelle auf dem ISA Bus. device ppbus # Parallel port bus (required) Unterstützung für den Bus auf der parallelen Schnittstelle. device lpt # Printer Unterstützung für Drucker über die parallele Schnittstelle. Sie brauchen jede der drei Zeilen, um die Unterstützung für einen Drucker an der parallelen Schnittstelle zu aktivieren. device plip # TCP/IP over parallel Der Treiber für das Netzwerkinterface über die parallele Schnittstelle. device ppi # Parallel port interface device Allgemeine I/O (geek port) und IEEE1284 I/O Unterstützung. #device vpo # Requires scbus and da Zip Laufwerk Dies aktiviert den Treiber für ein Iomega Zip Laufwerk. Zusätzlich benötigen Sie noch die Unterstützung für scbus und da. Die beste Performance erzielen Sie, wenn Sie die Schnittstelle im EPP 1.9 Modus betreiben. # PCI Ethernet NICs. device de # DEC/Intel DC21x4x (Tulip) device fxp # Intel EtherExpress PRO/100B (82557, 82558) device tx # SMC 9432TX (83c170 EPIC) device vx # 3Com 3c590, 3c595 (Vortex) device wx # Intel Gigabit Ethernet Card (Wiseman) Verschiedene Treiber für PCI-Netzwerkkarten. Geräte, die sich nicht in Ihrem System befinden, können Sie entfernen oder auskommentieren. # PCI Ethernet NICs that use the common MII bus controller code. device miibus # MII bus support Einige PCI 10/100 Ethernet Netzwerkkarten, besonders die, die MII-fähige Transceiver verwenden oder Transceiver-Steuerungen implementieren, die ähnlich wie MII funktionieren, benötigen die Unterstützung für den MII-Bus. Die Zeile device miibus fügt dem Kernel die Unterstützung für das allgemeine miibus API und allen PHY-Treibern hinzu. device dc # DEC/Intel 21143 and various workalikes device rl # RealTek 8129/8139 device sf # Adaptec AIC-6915 (Starfire) device sis # Silicon Integrated Systems SiS 900/SiS 7016 device ste # Sundance ST201 (D-Link DFE-550TX) device tl # Texas Instruments ThunderLAN device vr # VIA Rhine, Rhine II device wb # Winbond W89C840F device xl # 3Com 3c90x (Boomerang, Cyclone) Treiber, die den MII Bus Controller Code benutzen. # ISA Ethernet NICs. device ed0 at isa? port 0x280 irq 10 iomem 0xd8000 device ex device ep # WaveLAN/IEEE 802.11 wireless NICs. Note: the WaveLAN/IEEE really # exists only as a PCMCIA device, so there is no ISA attachment needed # and resources will always be dynamically assigned by the pccard code. device wi # Aironet 4500/4800 802.11 wireless NICs. Note: the declaration below will # work for PCMCIA and PCI cards, as well as ISA cards set to ISA PnP # mode (the factory default). If you set the switches on your ISA # card for a manually chosen I/O address and IRQ, you must specify # those parameters here. device an # The probe order of these is presently determined by i386/isa/isa_compat.c. device ie0 at isa? port 0x300 irq 10 iomem 0xd0000 device fe0 at isa? port 0x300 device le0 at isa? port 0x300 irq 5 iomem 0xd0000 device lnc0 at isa? port 0x280 irq 10 drq 0 device cs0 at isa? port 0x300 device sn0 at isa? port 0x300 irq 10 # requires PCCARD (PCMCIA) support to be activated #device xe0 at isa? Treiber für ISA Ethernet Karten. Schauen Sie in /usr/src/sys/i386/conf/LINT nach, um zu sehen, welche Karte von welchem Treiber unterstützt wird. pseudo-device ether # Ethernet support ether brauchen Sie nur, wenn Sie eine Ethernet-Karte besitzen. Der Treiber unterstützt das Ethernet-Protokoll. pseudo-device sl 1 # Kernel SLIP sl aktiviert die SLIP Unterstützung. SLIP ist fast vollständig von PPP verdrängt worden, da letzteres leichter zu konfigurieren, besser geeignet für Modem zu Modem Kommunikation und mächtiger ist. Die Zahl hinter sl gibt der Anzahl der gleichzeitigen SLIP-Verbindungen an, die unterstützt werden. pseudo-device ppp 1 # Kernel PPP Dies ist Kernel Unterstützung für PPP Wählverbindungen. Es existiert auch eine PPP Version im Userland, die den tun Treiber benutzt. Die Userland Version ist flexibler und bietet mehr Option wie die Auswahl auf Anforderung. Die Zahl hinter ppp gibt die Anzahl gleichzeitiger PPP Verbindungen an, die unterstützt werden. pseudo-device tun # Packet tunnel. Dies wird vom der Userland PPP benutzt. Die Zahl hinter tun gibt die Anzahl der unterstützten gleichzeitigen Verbindungen an. Weitere Informationen erhalten Sie im Abschnitt PPP dieses Handbuchs. pseudo-device pty # Pseudo-ttys (telnet etc) Dies ist ein Pseudo-Terminal oder simulierter Login-Terminal. Er wird von einkommenden telnet und rlogin Verbindungen, xterm und anderen Anwendungen wie Emacs benutzt. Eine Zahl hinter pty gibt die Anzahl der zu erstellenden ptys an. Wenn Sie mehr Verbindungen als die 16 erlaubten in der Voreinstellung brauchen, erhöhen Sie diesen Wert bis zu einem Maximum von 256. pseudo-device md # Memory disks Pseudo-Gerät für Speicher-Laufwerke. pseudo-device gif oder pseudo-device gif 4 # IPv6 and IPv4 tunneling Dieses Gerät tunnelt IPv6 über IPv4, IPv4 über IPv6, IPv4 über IPv4 oder IPv6 über IPv6. Ab &os; 4.4 kann die Anzahl der benötigten Geräte vom System bestimmt werden, so dass Sie die erste Zeile (ohne eine Zahl hinter gif) verwenden sollten. Auf früheren Systemen ist die Angabe der Anzahl der Geräte verpflichtend. pseudo-device faith 1 # IPv6-to-IPv4 relaying (translation) Dieses Pseudo-Gerät fängt zu ihm gesendete Pakete ab und leitet Sie zu einem Dæmon weiter, der Verkehr zwischen IPv4 und IPv6 vermittelt. # The `bpf' pseudo-device enables the Berkeley Packet Filter. # Be aware of the administrative consequences of enabling this! pseudo-device bpf # Berkeley packet filter Das ist der Berkeley Paketfilter. Dieses Pseudo-Gerät kann Netzwerkkarten in den promiscuous Modus setzen und erlaubt es damit, Pakete auf einem Broadcast Netzwerk (z.B. einem Ethernet) einzufangen. Die Pakete können auf der Festplatte gespeichert und mit &man.tcpdump.1; untersucht werden. Das bpf-Pseudo-Gerät wird von &man.dhclient.8; genutzt, um die IP-Adresse des Default-Routers zu bekommen. Wenn Sie DHCP benutzen, lassen Sie diese Option bitte aktiviert. # USB support #device uhci # UHCI PCI->USB interface #device ohci # OHCI PCI->USB interface #device usb # USB Bus (required) #device ugen # Generic #device uhid # Human Interface Devices #device ukbd # Keyboard #device ulpt # Printer #device umass # Disks/Mass storage - Requires scbus and da #device ums # Mouse # USB Ethernet, requires mii #device aue # ADMtek USB ethernet #device cue # CATC USB ethernet #device kue # Kawasaki LSI USB ethernet Unterstützung für verschiedene USB Geräte. Mehr Informationen und weitere von &os; unterstützte Geräte entnehmen Sie bitte /usr/src/sys/i386/conf/LINT. Gerätedateien erstellen Gerätedatei MAKEDEV Ab &os; 5.0 werden die Gerätedateien automatisch von &man.devfs.5; erzeugt. Überspringen Sie diesen Abschnitt, wenn Sie &os; 5.0 oder eine neuere Version benutzen. Zu fast jedem Gerät gehört eine Datei in /dev, die zwar wie eine reguläre Datei aussieht, tatsächlich aber eine Schnittstelle zum Kernel ist, die Programme benutzen, um Zugriff auf das Gerät zu erlangen. Das Shellskript /dev/MAKEDEV, das auch bei der Installation des Systems ausgeführt wird, erstellt fast alle unterstützten Gerätedateien. Es legt aber nicht alle Gerätedateien an, das heißt, wenn Sie im Kernel Unterstützung für ein neues Gerät hinzugefügt haben, sollten Sie überprüfen, ob die entsprechenden Einträge in dev vorhanden sind. Wenn nicht, dann legen Sie sie, wie im folgenden Beispiel einfach an. Angenommen, Sie wollen den Kernel um Unterstützung für IDE-CD-ROMs erweitern. Dann müssen Sie folgende Zeile in der Konfigurationsdatei einfügen: device acd0 Nun suchen Sie in /dev nach Dateien, die mit acd0 beginnen, möglicherweise mit c enden oder ein r vorgestellt haben (der Eintrag für das rohe Gerät). Wenn Sie die Einträge nicht finden, wechseln Sie in /dev und führen dort das folgende Kommando aus: MAKEDEV &prompt.root; sh MAKEDEV acd0 Nun sollten die Einträge acd0c und racd0c in /dev vorhanden sein. Das folgende Kommando legt die passenden Einträge für Soundkarten an: &prompt.root; sh MAKEDEV snd0 Wenn Sie Gerätedateien für Geräte wie Soundkarten erstellen und andere Leute Zugriff auf Ihren Rechner haben, wollen Sie vielleicht diese Geräte vor Zugriffen von außen schützen. Sie erreichen dies, in dem Sie das Gerät in /etc/fbtab aufnehmen. Weitere Informationen stellt &man.fbtab.5; zur Verfügung. Folgen Sie dieser Prozedur für alle Geräte, die nicht in GENERIC eingetragen sind. Da alle SCSI Controller die gleichen Einträge in /dev benutzen, brauchen Sie diese nicht erstellen. Weiterhin haben Netzwerkkarten sowie SLIP/PPP-Pseudo-Geräte keine Einträge in /dev. Wenn etwas schiefgeht Es gibt fünf Hauptfehlerquellen beim Erstellen eines angepassten Kernels: config verursacht Fehler: Wenn &man.config.8; misslingt, liegen Fehler in der Kernelkonfigurationsdatei vor. Zum Glück gibt &man.config.8; die die Zeilennummer der Fehlerstelle an, so dass Sie diese schnell in vi finden können. Beispielsweise könnten Sie folgende Fehlermeldung sehen: config: line 17: syntax error Im Befehlsmodus von vi können Sie sofort zur fraglichen Stelle springen, in dem Sie 17G eingeben. Überprüfen Sie dort durch Vergleichen mit GENERIC, ob das Schlüsselwort richtig geschrieben ist. make verursacht Fehler: Wenn make misslingt, liegen meistens ebenfalls Fehler in der Konfigurationsdatei vor, die aber so speziell sind, dass &man.config.8; sie nicht findet. Überprüfen Sie wiederum Ihre Konfiguration und wenn Sie keinen Fehler entdecken können, schicken Sie eine Mail mit Ihrer Kernelkonfiguration an die Mailingliste &a.de.questions;. Sie sollten dann schnell Hilfe erhalten. Der neue Kernel lässt sich nicht installieren: Wenn das Übersetzen des Kernels geklappt hat aber die Installation nicht, weil make install oder make installkernel fehlgeschlagen ist, sollten Sie zuerst überprüfen, ob Ihr System in der Sicherheitsstufe 1 (engl. secure level) läuft (siehe &man.init.8;). Ihr alter Kernel ist durch die Option vor Veränderungen geschützt und die Installationsprozedur versucht, diese Option vom alten Kernel zu entfernen und auf den neuen Kernel zu setzen. Da in der Sicherheitsstufe 1 die Option nicht gesetzt werden kann, muss die Installation des Kernels in der Sicherheitsstufe 0 oder einer niedrigeren stattfinden. Der Kernel bootet nicht: Wenn der Kernel nicht booten will, ist das noch lange kein Grund zur Panik. Denn &os; besitzt exzellente Mechanismen zur Wiederherstellung nach dem Einsatz inkompatibler Kernel. Den Kernel, mit dem Sie booten wollen, können Sie sich im &os; Boot Loader aussuchen. In den Loader gelangen Sie, in dem Sie einfach eine Taste außer Enter drücken, wenn das System von 10 herunterzählt. Geben Sie dann unload ein und mit boot kernel.old booten Sie den alten Kernel. Sie können hier natürlich auch den Dateinamen eines anderen Kernels, der sauber bootet angeben. Für alle Fälle sollten Sie immer einen Kernel, der garantiert bootet, bereit halten. Nun können Sie die Konfiguration noch einmal überprüfen und den Kernel neu kompilieren. Dazu ist /var/log/messages sehr nützlich, da hier sämtliche Kernelmeldungen von jedem erfolgreichen Bootvorgang gespeichert werden. &man.dmesg.8; gibt Ihnen die Kernelmeldungen vom letzten Bootvorgang aus. Heben Sie sich immer einen GENERIC oder einen anderen Kernel, der garantiert bootet, für den Fall, dass Sie Probleme bei dem Bau des Kernels bekommen, auf. Der Name dieses Kernels sollte so gewählt sein, dass er beim nächsten Bau nicht überschrieben wird. Sie können sich nicht auf kernel.old verlassen, da dieser Kernel durch den zuletzt installierten Kernel, der vielleicht schon kaputt war, ersetzt wird, wenn Sie installieren. Kopieren Sie einen laufenden Kernel so schnell wie möglich an die richtige Stelle (/kernel), oder Kommandos wie &man.ps.1; werden nicht richtig funktionieren. Um einen anderen Kernel an die richtige Stelle zu schieben, müssen Sie zuerst die Option von dem Kernel entfernen, den make installiert hat: &prompt.root; chflags noschg /kernel Wenn Sie den Befehl nicht ausführen können, befinden Sie sich in einer höheren Sicherheitsstufe als 0. Setzen Sie in /etc/rc.conf die Variable kern_securelevel auf -1 und booten Sie danach. Wenn der neue Kernel funktioniert, können Sie die Variable wieder auf Ihren alten Wert zurücksetzen. Wenn Sie den neuen Kernel, oder allgemein eine Datei, mit der Option versehen wollen, um sie vor Veränderungen zu schützen, führen Sie folgenden Befehl aus: &prompt.root; chflags schg /kernel Ab &os; 5.0 werden die Kernel nicht mehr mit der Option installiert. Probleme an dieser Stelle werden also nicht mehr von der fehlenden Schreibberechtigung verursacht. Der Kernel ist in Ordnung, aber ps geht nicht mehr: Wenn Sie eine andere Version des Kernels installiert haben als die, mit der Ihre Systemwerkzeuge gebaut wurden (beispielsweise einen 4.X Kernel auf einem 3.X System), werden Programme wie &man.ps.1; und &man.vmstat.8; nicht mehr funktionieren. Sie müssen nun die libkvm und die entsprechenden Programme neu kompilieren. Das ist ein Grund dafür, warum man nie einen Kernel, der nicht zur Systemversion passt, benutzten sollte. diff --git a/de_DE.ISO8859-1/books/handbook/linuxemu/chapter.sgml b/de_DE.ISO8859-1/books/handbook/linuxemu/chapter.sgml index 37bc866b60..b89c708188 100644 --- a/de_DE.ISO8859-1/books/handbook/linuxemu/chapter.sgml +++ b/de_DE.ISO8859-1/books/handbook/linuxemu/chapter.sgml @@ -1,3638 +1,3633 @@ Jim Mock Restrukturiert und teilweise aktualisiert von Brian N. Handy Beigetragen von Rich Murphey Johann Kois Übersetzt von Linux-Binärkompatibilität Übersicht Linux-Binärkompatibilität Binärkompatibilität Linux FreeBSD bietet Binärkompatibilität zu verschiedenen anderen &unix; Betriebssystemen, darunter auch Linux. Nun könnten Sie sich fragen, warum FreeBSD in der Lage sein muss, Linux-Binärprogramme auszuführen? Die Antwort auf diese Frage ist sehr einfach. Viele Unternehmen und Entwickler programmieren bzw. entwickeln nur für Linux, da es das Neueste und Beste in der Computerwelt ist. Für uns FreeBSD-Anwender heißt dies, genau diese Unternehmen und Entwickler zu bitten, FreeBSD-Versionen ihrer Programme herauszubringen. Das Problem dabei ist nur, dass die meisten dieser Firmen trotzdem nicht erkennen, wie viele zusätzliche Anwender ihre Produkte benutzen würden, wenn es auch FreeBSD-Versionen gäbe, und daher weiterhin ausschließlich für Linux entwickeln. Was also kann ein FreeBSD-Anwender tun? Genau an diesem Punkt kommt die Linux- Binärkompatibilität ins Spiel. Um es auf den Punkt zu bringen, genau diese Kompatibilität erlaubt es FreeBSD-Anwendern, etwa 90 % aller Linux-Anwendungen ohne Code-Änderungen zu verwenden. Dies schließt solche Anwendungen wie &staroffice;, Open Office, die Linux-Versionen von &netscape;, &adobe; &acrobat;, RealPlayer 5 und 7, VMWare , &oracle;, WordPerfect , Doom, Quake und viele andere ein. Es wird sogar berichtet, dass diese Linux-Anwendungen in manchen Fällen unter FreeBSD eine bessere Leistung als unter Linux aufweisen. Linux /proc Dateisystem Allerdings gibt es nach wie vor einige Linux-spezifische Betriebssystem-Eigenschaften, die unter FreeBSD nicht unterstützt werden. Linux-Anwendungen, die in großem Stil das Linux-/proc-Dateisystem verwenden, werden unter FreeBSD nicht funktionieren, da sich dieses vom FreeBSD-/proc-Dateisystem unterscheidet. Auch &i386;-spezifische Aufrufe dieser Linux-Anwendungen (wie z.B. die Aktivierung des virtuellen 8086-Modus) funktionieren unter FreeBSD leider nicht. Nach dem Lesen dieses Kapitels werden Sie wissen, wie Sie die Linux-Binärkompatibilität installieren bzw. aktivieren. Wissen, wie man zusätzliche Linux-Systembibliotheken unter FreeBSD installiert. Linux-Anwendungen unter FreeBSD installieren können. Wissen, wie die Linux-Binärkompatibilität unter FreeBSD verwirklicht wurde. Bevor Sie dieses Kapitel lesen, sollten Sie wissen, wie man Software Dritter installiert (). Installation KLD (kernel loadable object) Die Linux-Binärkompatibilität ist per Voreinstellung nicht aktiviert. Der einfachste Weg, dies zu tun, ist das Linux KLD (Kernel LoaDable object) zu laden. Dies geschieht durch die Eingabe von linux an der Eingabeaufforderung. Wollen Sie die Linux-Binärkompatibilität dauerhaft aktivieren, sollten Sie die folgende Zeile in /etc/rc.conf einfügen: linux_enable="YES" Der &man.kldstat.8;-Befehl kann benutzt werden, um festzustellen, ob KLD geladen wurde: &prompt.user; kldstat Id Refs Address Size Name 1 2 0xc0100000 16bdb8 kernel 7 1 0xc24db000 d000 linux.ko Kerneloption LINUX Wenn Sie das KLD nicht laden können oder wollen, besteht auch die Möglichkeit, die Linux-Binärkompatibiltät statisch in den Kernel einzubinden. Dazu fügen Sie Ihrer Kernelkonfigurationsdatei den Eintrag options LINUX hinzu. Anschließend installieren Sie Ihren neuen Kernel wie in beschrieben. Linux-Laufzeitbibliotheken installieren Linux Linux-Laufzeitbibliotheken installieren Dies kann auf zwei Arten geschehen, entweder über den linux_base-Port, oder durch manuelle Installation der Bibliotheken . Installation unter Verwendung des linux_base-Ports Ports Collection Dies ist die einfachste Methode, um die Laufzeitbibliotheken zu installieren. Sie funktioniert genauso wie die Installation eines beliebigen anderen Ports aus der Ports-Sammlung. Dazu machen Sie einfach folgendes: &prompt.root; cd /usr/ports/emulators/linux_base &prompt.root; make install distclean Sie sollten nun über eine funktionierende Linux-Binärkompatibilität verfügen. Einige Programme könnten sich zwar über falsche Unterversionsnummern der Systembibliotheken beschweren, dies ist im Allgemeinen aber kein Problem. Unter Umständen gibt es mehrere Versionen des Ports emulators/linux_base. Die Ports entsprechen unterschiedlichen Versionen verschiedener Linux-Distributionen Sie sollten den Port installieren, der am besten die Anforderungen der Linux-Anwendung erfüllt. Manuelle Installation der Bibliotheken Wenn Sie die Ports-Sammlung nicht installiert haben, können Sie die Bibliotheken auch manuell installieren. Dazu brauchen Sie die jeweiligen Linux-Systembibliotheken, die das zu installierende Programm verwendet sowie den Laufzeit-Linker. Zusätzlich müssen Sie auf Ihrem FreeBSD-System einen virtuellen Verzeichnisbaum für die Linux-Bibliotheken einrichten. Alle unter FreeBSD gestarteten Linux-Programme suchen zuerst in diesem Verzeichnisbaum nach Systembibliotheken. Wenn also ein Linuxprogramm beispielsweise /lib/libc.so lädt, versucht FreeBSD zuerst, /compat/linux/lib/libc.so laden. Ist diese Datei nicht vorhanden, wird /lib/libc.so geladen. Systembibliotheken sollten daher besser in den virtuellen Verzeichnisbaum /compat/linux/lib als in den vom Linux-ld.so vorgeschlagenen installiert werden. Im Allgemeinen müssen Sie nur zu Beginn nach den Systembibliotheken suchen, die von Linuxprogrammen benötigt werden. Nach den ersten Installationen von Linuxprogrammen auf Ihrem FreeBSD-System verfügen Sie über eine Sammlung von Linux-Systembibliotheken, die es Ihnen ermöglichen wird, neue Linuxprogramme ohne Zusatzarbeit zu installieren. Installation zusätzlicher Systembibliotheken Shared-Libraries Was passiert, wenn Sie den linux_base-Port installieren, und Ihr Programm beschwert sich trotzdem über fehlende Systembibliotheken? Woher wissen Sie, welche Systembibliotheken von Linux-Binärprogrammen benötigt werden, und wo Sie diese finden? Grundsätzlich gibt es dafür zwei Möglichkeiten (um dieser Anleitung zu folgen, müssen Sie unter FreeBSD als Benutzer root angemeldet sein): Wenn Sie Zugriff auf ein Linux-System haben, können Sie dort nachsehen, welche Systembibliotheken eine Anwendung benötigt, und diese auf Ihr FreeBSD-System kopieren. Dazu folgendes Beispiel: Nehmen wir an, Sie haben FTP verwendet, um die Linux-Binärversion von Doom zu bekommen und haben sie auf Ihrem Linux-System installiert. Nun können Sie überprüfen, welche Systembibliotheken das Programm benötigt, indem Sie ldd linuxdoom eingeben. Das Resultat sieht dann so aus: &prompt.user; ldd linuxdoom libXt.so.3 (DLL Jump 3.1) => /usr/X11/lib/libXt.so.3.1.0 libX11.so.3 (DLL Jump 3.1) => /usr/X11/lib/libX11.so.3.1.0 libc.so.4 (DLL Jump 4.5pl26) => /lib/libc.so.4.6.29 symbolische Links Sie müssten nun alle Dateien aus der letzten Spalte kopieren und sie unter /compat/linux speichern, wobei die Namen der ersten Spalte als symbolische Links auf diese Dateien zeigen. Damit haben Sie schließlich folgende Dateien auf Ihrem FreeBSD-System: /compat/linux/usr/X11/lib/libXt.so.3.1.0 /compat/linux/usr/X11/lib/libXt.so.3 -> libXt.so.3.1.0 /compat/linux/usr/X11/lib/libX11.so.3.1.0 /compat/linux/usr/X11/lib/libX11.so.3 -> libX11.so.3.1.0 /compat/linux/lib/libc.so.4.6.29 /compat/linux/lib/libc.so.4 -> libc.so.4.6.29
Beachten Sie, dass wenn Sie bereits eine Linux-Systembibliothek einer zur ersten Spalte passenden Hauptversionsnummer (laut ldd-Ausgabe) besitzen, Sie die Datei aus der zweiten Spalte nicht mehr kopieren müssen, da die bereits vorhandene Version funktionieren sollte. Hat die Systembibliothek jedoch eine neuere Versionsnummer, sollten Sie sie dennoch kopieren. Sie können die alte Version löschen, solange Sie einen symbolischen Link auf die neue Version anlegen. Wenn Sie also folgende Bibliotheken auf Ihrem System installiert haben: /compat/linux/lib/libc.so.4.6.27 /compat/linux/lib/libc.so.4 -> libc.so.4.6.27 und Sie haben eine neue Binärdatei, die laut ldd eine neuere Bibliothek benötigt: libc.so.4 (DLL Jump 4.5pl26) -> libc.so.4.6.29 Wenn diese sich nur um ein oder zwei Stellen in der Unterversionsnummer unterscheiden, müssen Sie /lib/libc.so.4.6.29 nicht auf Ihr System kopieren, da das Programm auch mit der etwas älteren Version ohne Probleme funktionieren sollte. Wenn Sie wollen, können Sie libc.so aber dennoch ersetzen (das heißt aktualisieren), was dann zu folgender Ausgabe führt: /compat/linux/lib/libc.so.4.6.29 /compat/linux/lib/libc.so.4 -> libc.so.4.6.29
Der Mechanismus der symbolischen Links wird nur für Linux-Binärdateien benötigt. Der FreeBSD-Laufzeitlinker sucht sich die passenden Hauptversionsnummern selbst, das heißt Sie müssen sich nicht darum kümmern.
Linux ELF-Binärdateien installieren Linux ELF-Binärdatei ELF-Binärdateien benötigen manchmal eine zusätzliche Kennzeichnung. Wenn Sie versuchen, eine nicht gekennzeichnete ELF-Binärdatei auszuführen, werden Sie eine Fehlermeldung ähnlich der folgenden erhalten: &prompt.user; ./my-linux-elf-binary ELF binary type not known Abort Damit der FreeBSD-Kernel eine Linux-ELF-Datei von einer FreeBSD-ELF-Datei unterscheiden kann, gibt es das Werkzeug &man.brandelf.1;: &prompt.user; brandelf -t Linux my-linux-elf-binary GNU Werkzeuge Die GNU Werkzeuge schreiben nun automatisch die passende Kennzeichnungsinformation in die ELF-Binärdateien, so dass Sie diesen Schritt in Zukunft nur noch selten benötigen werden. Namensauflösung konfigurieren Wenn DNS nicht funktioniert, oder Sie folgende Fehlermeldung erhalten: resolv+: "bind" is an invalid keyword resolv+: "hosts" is an invalid keyword müssen sie /compat/linux/etc/host.conf wie folgt anlegen: order hosts, bind multi on Diese Reihenfolge legt fest, dass zuerst /etc/hosts und anschließend DNS durchsucht werden. Wenn /compat/linux/etc/host.conf nicht vorhanden ist, finden Linux-Anwendungen FreeBSD's /etc/host.conf und beschweren sich über die inkompatible FreeBSD-Syntax. Wenn Sie keinen Nameserver (in /etc/resolv.conf) konfiguriert haben, sollten Sie den Eintrag bind entfernen.
Murray Stokely Für Mathematica 4.x aktualisiert von Bojan Bistrovic Mit der Unterstützung von &mathematica; installieren Linux-Anwendungen Mathematica Dieses Dokument beschreibt die Installation der Linux-Version von &mathematica; 4.x auf einem FreeBSD-System. Die Linux-Version von &mathematica; läuft perfekt unter FreeBSD, allerdings müssen die von Wolfram verschickten Binärdateien gekennzeichnet werden, damit FreeBSD weiß, dass es die Linux-ABI verwenden muss, um sie auszuführen. Die Linux-Version von &mathematica; oder &mathematica; für Studenten kann direkt von Wolfram unter bestellt werden. Linux-Binärdateien kennzeichnen Die Linuxbinärdateien befinden sich im Unix-Verzeichnis der von Wolfram vertriebenen &mathematica;-CD-ROM. Sie müssen diesen Verzeichnisbaum auf Ihre Festplatte kopieren, damit Sie die Linux-Binärdateien kennzeichnen können, bevor Sie das Installationsprogramm aufrufen: &prompt.root; mount /cdrom &prompt.root; cp -rp /cdrom/Unix/ /localdir/ &prompt.root; brandelf -t Linux /localdir/Files/SystemFiles/Kernel/Binaries/Linux/* &prompt.root; brandelf -t Linux /localdir/Files/SystemFiles/FrontEnd/Binaries/Linux/* &prompt.root; brandelf -t Linux /localdir/Files/SystemFiles/Installation/Binaries/Linux/* &prompt.root; brandelf -t Linux /localdir/Files/SystemFiles/Graphics/Binaries/Linux/* &prompt.root; brandelf -t Linux /localdir/Files/SystemFiles/Converters/Binaries/Linux/* &prompt.root; brandelf -t Linux /localdir/Files/SystemFiles/LicenseManager/Binaries/Linux/mathlm &prompt.root; cd /localdir/Installers/Linux/ &prompt.root; ./MathInstaller Alternativ können Sie mit folgendem Befehl auch die Standard-ELF-Kennzeichnung für alle ungekennzeichneten Binärdateien festlegen: &prompt.root; sysctl kern.fallback_elf_brand=3 Danach wird FreeBSD annehmen, dass alle ungekennzeichneten ELF-Binärdateien die Linux-ABI verwenden. Dadurch sollte es Ihnen nun möglich sein, das Installationsprogramm direkt von der CD-ROM zu starten. Ihr &mathematica;-Passwort anfordern Bevor Sie &mathematica; ausführen können, müssen Sie von Wolfram ein zu Ihrer Rechner-ID passendes Passwort anfordern. Ethernet MAC-Adresse Nachdem Sie die Linux-Kompatibilitätsbibliotheken installiert und &mathematica; entpackt haben, können Sie Ihre Rechner-ID durch das Ausführen von mathinfo (im Installationsverzeichnis) ermitteln. Diese Rechner-ID basiert ausschließlich auf der MAC-Adresse Ihrer ersten Ethernet-Karte. &prompt.root; cd /localdir/Files/SystemFiles/Installation/Binaries/Linux &prompt.root; mathinfo disco.example.com 7115-70839-20412 Wenn Sie sich bei Wolfram registrieren (durch E-Mail, Telefon oder Fax), teilen Sie Ihre Rechner-ID mit und erhalten dafür ein aus Zahlengruppen bestehendes Passwort. Diese Information geben Sie ein, wenn Sie &mathematica; das erste Mal starten, genauso wie Sie es auch auf jeder anderen &mathematica;-Plattform machen würden. Das &mathematica;-Frontend über ein Netzwerk ausführen &mathematica; verwendet einige spezielle Schriftarten, um Zeichen anzuzeigen, die in den Standardzeichensätzen nicht vorhanden sind (z.B. Integrale, Summen, griechische Buchstaben). Das X-Protokoll verlangt allerdings, dass diese Schriftarten lokal installiert sind. Das bedeutet, dass Sie diese Schriftarten von der CD-ROM oder von einem Rechner, auf dem &mathematica; installiert ist, auf Ihren Rechner kopieren müssen. Diese Schriftarten befinden sich normalerweise in /cdrom/Unix/Files/SystemFiles/Fonts (&mathematica;-CD) oder in /usr/local/mathematica/SystemFiles/Fonts (Festplatte). Die aktuellen Schriftarten befinden sich dabei in den Unterverzeichnissen Type1 und X. Um diese Schriftarten zu verwenden, gibt es mehrere Möglichkeiten, die nun beschrieben werden: Die erste Möglichkeit besteht darin, die Schriftarten in eins der bereits existierenden Schriftartenverzeichnisse unter /usr/X11R6/lib/X11/fonts zu kopieren. Dies bedeutet, dass Sie fonts.dir editieren müssen, indem Sie die Schriftnamen hinzufügen und die Anzahl der Schriftarten in der ersten Zeile ändern. Alternativ ist es auch möglich, im Verzeichnis, in das Sie die Schriftarten kopiert haben, das Kommando &man.mkfontdir.1; auszuführen. Die zweite Möglichkeit, besteht darin, die Verzeichnisse nach /usr/X11R6/lib/X11/fonts zu kopieren: &prompt.root; cd /usr/X11R6/lib/X11/fonts &prompt.root; mkdir X &prompt.root; mkdir MathType1 &prompt.root; cd /cdrom/Unix/Files/SystemFiles/Fonts &prompt.root; cp X/* /usr/X11R6/lib/X11/fonts/X &prompt.root; cp Type1/* /usr/X11R6/lib/X11/fonts/MathType1 &prompt.root; cd /usr/X11R6/lib/X11/fonts/X &prompt.root; mkfontdir &prompt.root; cd ../MathType1 &prompt.root; mkfontdir Nun fügen Sie die neuen Schriftartenverzeichnisse in Ihren Pfad ein: &prompt.root; xset fp+ /usr/X11R6/lib/X11/fonts/X &prompt.root; xset fp+ /usr/X11R6/lib/X11/fonts/MathType1 &prompt.root; xset fp rehash Wenn Sie den &xfree86;-Server verwenden, können Sie die Schriftarten-Verzeichnisse automatisch laden lassen, indem Sie sie Ihrer XF86Config-Datei hinzufügen. Schriftarten Wenn Sie noch kein /usr/X11R6/lib/X11/fonts/Type1-Verzeichnis haben, können Sie das MathType1-Verzeichnis im vorherigen Beispiel in Type1 umbenennen. Aaron Kaplan Beigetragen von Robert Getschmann Mit Unterstützung durch &maple; installieren Linux-Anwendungen Maple &maple; ist ein mit &mathematica; vergleichbares kommerzielles Mathematikprogramm. Sie können dieses Programm unter kaufen und sich anschließend registrieren, um eine Lizenz zu erhalten. Um dieses Programm unter FreeBSD zu installieren, gehen Sie wie folgt vor: Führen Sie das INSTALL-Shell-Skript der Softwaredistribution aus. Wählen Sie die RedHat-Option aus, wenn Sie das Installationsprogramm danach fragt. Ein typisches Installationsverzeichnis wäre z.B. /usr/local/maple. Wenn Sie dies noch nicht gemacht haben, besorgen Sie sich nun eine &maple;-Lizenz von Maple Waterloo Software () und kopieren Sie diese nach /usr/local/maple/license/license.dat. Installieren Sie den FLEXlm-Lizenz-Manager, indem Sie das INSTALL_LIC-Installations-Shellskript ausführen, das mit &maple; ausgeliefert wird. Geben Sie Ihren primären Rechnernamen für den Lizenz-Server an. Verändern Sie /usr/local/maple/bin/maple.system.type wie folgt: ----- snip ------------------ *** maple.system.type.orig Sun Jul 8 16:35:33 2001 --- maple.system.type Sun Jul 8 16:35:51 2001 *************** *** 72,77 **** --- 72,78 ---- # the IBM RS/6000 AIX case MAPLE_BIN="bin.IBM_RISC_UNIX" ;; + "FreeBSD"|\ "Linux") # the Linux/x86 case # We have two Linux implementations, one for Red Hat and ----- snip end of patch ----- Bitte beachten Sie, dass nach "FreeBSD"|\ kein anderes Zeichen eingefügt werden darf. Dieser Patch weist &maple; an, FreeBSD als eine Art von Linux-System zu erkennen. Das Shell-Skript bin/maple ruft das Shell-Skript bin/maple.system.type auf, welches wiederum uname -a verwendet, um den Namen des Betriebssystems herauszufinden. Abhängig vom Betriebssystem weiß das System nun, welche Binärdateien verwendet werden sollen. Starten Sie den Lizenz-Server. Das folgende, als /usr/local/etc/rc.d/lmgrd.sh installierte Shell-Skript ist ein komfortabler Weg, um lmgrd zu starten: ----- snip ------------ #! /bin/sh PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/X11R6/bin PATH=${PATH}:/usr/local/maple/bin:/usr/local/maple/FLEXlm/UNIX/LINUX export PATH LICENSE_FILE=/usr/local/maple/license/license.dat LOG=/var/log/lmgrd.log case "$1" in start) lmgrd -c ${LICENSE_FILE} 2>> ${LOG} 1>&2 echo -n " lmgrd" ;; stop) lmgrd -c ${LICENSE_FILE} -x lmdown 2>> ${LOG} 1>&2 ;; *) echo "Usage: `basename $0` {start|stop}" 1>&2 exit 64 ;; esac exit 0 ----- snip ------------ Versuchen Sie, &maple; zu starten: &prompt.user; cd /usr/local/maple/bin &prompt.user; ./xmaple Nun sollte das Programm laufen und alles funktionieren. Falls ja, vergessen Sie nicht, an Maplesoft zu schreiben und sie wissen zu lassen, dass Sie gerne eine native FreeBSD-Version hätten. Häufige Fehlerquellen Der FLEXlm-Lizenzmanager kann schwierig zu bedienen sein. Zusätzliche Dokumentation zu diesem Thema finden Sie unter . Es ist bekannt, dass lmgrd sehr pingelig ist, wenn es um die Lizenzdatei geht. Gibt es Probleme, führt dies zu einem Speicherauszug (core dump). Ein korrekte Lizenzdatei sollte ähnlich der folgenden aussehen: # ======================================================= # License File for UNIX Installations ("Pointer File") # ======================================================= SERVER chillig ANY #USE_SERVER VENDOR maplelmg FEATURE Maple maplelmg 2000.0831 permanent 1 XXXXXXXXXXXX \ PLATFORMS=i86_r ISSUER="Waterloo Maple Inc." \ ISSUED=11-may-2000 NOTICE=" Technische Universitat Wien" \ SN=XXXXXXXXX Seriennummer und Schlüssel wurden durch mehrere X unkenntlich gemacht. chillig ist ein Rechnername. Veränderungen an der Lizenzdatei sind möglich, solange Sie die FEATURE-Zeile nicht verändern (diese ist durch den Lizenzschlüssel geschützt). Dan Pelleg Beigesteuert von &matlab; installieren Linux-Anwendungen MATLAB Im Folgenden wird die Installation der Linux-Anwendung &matlab; Version 6.5 auf &os; beschrieben. Mit Ausnahme der &java.virtual.machine; (siehe ) läuft die Anwendung auch ganz gut. Die Linux-Version von &matlab; können Sie direkt bei The MathWorks bestellen. Vergewissern Sie sich, dass Sie die Lizenz-Datei oder eine Anleitung zum Erstellen der Lizenz-Datei erhalten haben. Das &matlab;-Installationsskript Um &matlab; zu installieren, gehen Sie wie folgt vor: Hängen Sie die Installations-CD ein und wechseln Sie zu root, wie im Installations-Skript gefordert. Starten Sie die Installation mit dem folgenden Kommando: &prompt.root; /compat/linux/bin/sh /cdrom/install Die Installation erfordert eine graphische Benutzeroberfläche. Wenn Sie die Fehlermeldung erhalten, dass das Display nicht geöffnet werden konnte, führen Sie das folgende Kommando aus: &prompt.root; setenv HOME ~USER Für USER setzen Sie den Benutzer ein, von dem aus Sie root geworden sind. Beantworten Sie die Frage nach dem &matlab;-Root-Verzeichnis mit: /compat/linux/usr/local/matlab. Den langen Pfad werden Sie noch öfter brauchen. Die Tipparbeit können Sie sich mit dem folgenden Befehl erleichtern: &prompt.root; set MATLAB=/compat/linux/usr/local/matlab Editieren Sie die Lizenz-Datei entsprechend der Anweisung, die Sie beim Erwerb der Lizenz erhalten haben. Sie können die Datei schon vorher mit Ihrem Lieblingseditor bearbeiten. Kopieren Sie die Lizenz-Datei nach $MATLAB/etc/license.dat bevor das Installationsprogramm Sie auffordert, die Datei zu editieren. Schließen Sie die Installation ab. Die &matlab;-Installation ist jetzt abgeschlossen. Die folgenden Schritte passen &matlab; an &os; an. Den Lizenzmanager starten Erstellen Sie symbolische Links zu den Startskripten des Lizenzmanagers: &prompt.root; ln -s $MATLAB/etc/lmboot /usr/local/etc/lmboot_TMW &prompt.root; ln -s $MATLAB/etc/lmdown /usr/local/etc/lmdown_TMW Erstellen Sie das Startskript /usr/local/etc/rc.d/flexlm.sh. Das folgende Beispiel ist eine geänderte Version des mitgelieferten Skripts $MATLAB/etc/rc.lm.glnx86. Angepasst wurden die Pfade zu den Dateien und der Start des Lizenzmanagers unter der Linux-Emulation. #!/bin/sh case "$1" in start) if [ -f /usr/local/etc/lmboot_TMW ]; then /compat/linux/bin/sh /usr/local/etc/lmboot_TMW -u username && echo 'MATLAB_lmgrd' fi ;; stop) if [ -f /usr/local/etc/lmdown_TMW ]; then /compat/linux/bin/sh /usr/local/etc/lmdown_TMW > /dev/null 2>&1 fi ;; *) echo "Usage: $0 {start|stop}" exit 1 ;; esac exit 0 Machen Sie Datei ausführbar: &prompt.root; chmod +x /usr/local/etc/rc.d/flexlm.sh Ersetzen Sie im Skript username durch einen existierenden Benutzer Ihres Systems (bitte keinesfalls root). Starten Sie den Lizenzmanager: &prompt.root; /usr/local/etc/rc.d/flexlm.sh start Ein &matlab;-Startskript erstellen Kopieren Sie das folgende Skript nach /usr/local/bin/matlab: #!/bin/sh /compat/linux/bin/sh /compat/linux/usr/local/matlab/bin/matlab "$@" Machen Sie das Skript ausführbar: &prompt.root; chmod +x /usr/local/bin/matlab &matlab; benutzen Jetzt können Sie &matlab; mit dem matlab starten. Die mitgelieferte &java;-Version arbeitet leider nicht mit &os; zusammen. Sie müssen daher &matlab; mit der Option oder der Option starten. Marcel Moolenaar Beigetragen von &oracle; installieren Linux-Anwendungen Oracle Übersicht Dieses Dokument beschreibt die Installation von &oracle; 8.0.5 und &oracle; 8.0.5.1 Enterprise Edition für Linux auf einem FreeBSD-Rechner. Installation der Linux-Umgebung Stellen Sie sicher, dass Sie sowohl emulators/linux_base und devel/linux_devtools aus der Ports-Collection installiert haben. Wenn Sie mit diesen Ports Schwierigkeiten haben, müssen Sie vielleicht ältere Versionen der Linux-Umgebung aus der Ports-Collection installieren. Wenn Sie den Intelligent-Agent verwenden wollen, müssen Sie zusätzlich das RedHat Tcl-Paket installieren: tcl-8.0.3-20.i386.rpm. Zur Installation von RPM-Paketen wir der Port archivers/rpm benötigt. Ist der Port installiert, lassen sich RPM-Pakete anschließend mit dem nachstehenden Befehl installieren: &prompt.root; rpm -i --ignoreos --root /compat/linux --dbpath /var/lib/rpm package Die Installation der RPM-Pakete sollte ohne Fehlermeldung ablaufen. Die &oracle;-Umgebung erzeugen Bevor Sie &oracle; installieren können, müssen Sie eine entsprechende Umgebung erzeugen. Dieses Dokument beschreibt nur, was Sie im Speziellen tun müssen, um die Linux-Version von &oracle; unter FreeBSD zu installieren, nicht aber, was bereits in der Installationsanleitung von &oracle; beschrieben wird. Kernel-Tuning Kernel Tuning Wie in der Installationsanleitung von &oracle; beschrieben, müssen Sie die maximale Shared-Memory Größe festlegen. Verwenden Sie SHMMAX nicht unter FreeBSD. SHMMAX wird lediglich aus SHMMAXPGS und PGSIZE berechnet. Definieren Sie stattdessen SHMMAXPGS. Alle anderen Optionen können wie in der Anleitung beschrieben verwendet werden. Zum Beispiel: options SHMMAXPGS=10000 options SHMMNI=100 options SHMSEG=10 options SEMMNS=200 options SEMMNI=70 options SEMMSL=61 Passen Sie diese Optionen entsprechend dem von Ihnen gewünschten Einsatzzweck von &oracle; an. Stellen Sie außerdem sicher, dass Sie folgende Optionen in Ihren Kernel kompilieren: options SYSVSHM #SysV shared memory options SYSVSEM #SysV semaphores options SYSVMSG #SysV interprocess communication &oracle;-Benutzer anlegen Legen Sie den Account oracle an. Der Account unterschiedet sich von normalen Accounts dadurch, dass er eine Linux-Shell zugeordnet bekommen muss. Fügen Sie /compat/linux/bin/bash in die Datei /etc/shells ein und setzen Sie die Shell für den oracle-Account auf /compat/linux/bin/bash. Umgebung Neben den normalen &oracle;-Variablen, wie z.B. ORACLE_HOME und ORACLE_SID müssen Sie die folgenden Variablen setzen: Variable Wert LD_LIBRARY_PATH $ORACLE_HOME/lib CLASSPATH $ORACLE_HOME/jdbc/lib/classes111.zip PATH /compat/linux/bin /compat/linux/sbin /compat/linux/usr/bin /compat/linux/usr/sbin /bin /sbin /usr/bin /usr/sbin /usr/local/bin $ORACLE_HOME/bin Es ist empfehlenswert, alle Variablen in der Datei .profile zu setzen. Ein komplettes Beispiel sieht folgendermaßen aus: ORACLE_BASE=/oracle; export ORACLE_BASE ORACLE_HOME=/oracle; export ORACLE_HOME LD_LIBRARY_PATH=$ORACLE_HOME/lib export LD_LIBRARY_PATH ORACLE_SID=ORCL; export ORACLE_SID ORACLE_TERM=386x; export ORACLE_TERM CLASSPATH=$ORACLE_HOME/jdbc/lib/classes111.zip export CLASSPATH PATH=/compat/linux/bin:/compat/linux/sbin:/compat/linux/usr/bin PATH=$PATH:/compat/linux/usr/sbin:/bin:/sbin:/usr/bin:/usr/sbin PATH=$PATH:/usr/local/bin:$ORACLE_HOME/bin export PATH &oracle; installieren Auf Grund einer kleinen Unregelmäßigkeit im Linux-Emulator müssen Sie das Verzeichnis .oracle unter /var/tmp erzeugen, bevor Sie das Installationsprogramm starten. Das Verzeichnis muss entwerder für alle Benutzer beschreibbar sein oder dem Account oracle gehören. Sie sollten &oracle; nun ohne Probleme installieren können. Treten dennoch Probleme auf, überprüfen Sie zuerst Ihre &oracle;-Distribution und Ihre Konfiguration. Nachdem Sie &oracle; erfolgreich installiert haben, installieren Sie die Patches wie in den zwei folgenden Abschnitten beschrieben: Ein häufiges Problem ist, dass der TCP Protokoll-Adapter nicht korrekt installiert wird. Daraus folgt, dass Sie keine TCP Listener starten können. Dieses Problem kann durch folgende Schritte behoben werden: &prompt.root; cd $ORACLE_HOME/network/lib &prompt.root; make -f ins_network.mk ntcontab.o &prompt.root; cd $ORACLE_HOME/lib &prompt.root; ar r libnetwork.a ntcontab.o &prompt.root; cd $ORACLE_HOME/network/lib &prompt.root; make -f ins_network.mk install Vergessen Sie nicht, root.sh nochmals auszuführen! root.sh patchen Während der &oracle;-Installation werden einige Aktionen, die als root ausgeführt werden müssen, in ein Shell-Skript mit dem Namen root.sh gespeichert. Dieses Skript befindet sich im Verzeichnis orainst. Verwenden Sie folgenden Patch für root.sh, damit es das richtige chown Kommando verwendet, oder lassen Sie das Skript alternativ unter einer Linux-Shell ablaufen: *** orainst/root.sh.orig Tue Oct 6 21:57:33 1998 --- orainst/root.sh Mon Dec 28 15:58:53 1998 *************** *** 31,37 **** # This is the default value for CHOWN # It will redefined later in this script for those ports # which have it conditionally defined in ss_install.h ! CHOWN=/bin/chown # # Define variables to be used in this script --- 31,37 ---- # This is the default value for CHOWN # It will redefined later in this script for those ports # which have it conditionally defined in ss_install.h ! CHOWN=/usr/sbin/chown # # Define variables to be used in this script Wenn Sie &oracle; nicht von CD-ROM installieren, können Sie Quelldatei für root.sh verändern. Sie heißt rthd.sh und befindet sich im orainst-Verzeichnis des Quellcodebaums. genclntsh patchen Das Skript genclntsh wird verwendet, um eine Shared-Library für Clients zu erzeugen. Diese wird bei der Erzeugung der Demos verwendet. Verwenden Sie folgenden Patch, um die Definition von PATH auszukommentieren: *** bin/genclntsh.orig Wed Sep 30 07:37:19 1998 --- bin/genclntsh Tue Dec 22 15:36:49 1998 *************** *** 32,38 **** # # Explicit path to ensure that we're using the correct commands #PATH=/usr/bin:/usr/ccs/bin export PATH ! PATH=/usr/local/bin:/bin:/usr/bin:/usr/X11R6/bin export PATH # # each product MUST provide a $PRODUCT/admin/shrept.lst --- 32,38 ---- # # Explicit path to ensure that we're using the correct commands #PATH=/usr/bin:/usr/ccs/bin export PATH ! #PATH=/usr/local/bin:/bin:/usr/bin:/usr/X11R6/bin export PATH # # each product MUST provide a $PRODUCT/admin/shrept.lst &oracle; starten Wenn Sie den Anweisungen gefolgt sind, sollten Sie nun in der Lage sein, &oracle; zu starten, genau so, wie Sie dies auch unter Linux tun würden. Holger Kipp Beigetragen von Valentino Vaschetto Originalversion nach SGML konvertiert durch: &sap.r3; installieren Linux-Anwendungen SAP R/3 - &sap;-Installationen unter FreeBSD werden vom &sap; Support Team + Installationen von &sap; + unter FreeBSD werden vom &sap; Support-Team nicht unterstützt – und &sap; bietet Support nur für zertifizierte Plattformen an! Übersicht Dieses Dokument beschreibt einen möglichen Weg, um ein &sap.r3;-System mit &oracle; Datenbank für Linux auf einem FreeBSD-Rechner zu installieren, einschließlich der Installation von FreeBSD und &oracle;. Zwei verschiedene Konfigurationen werden beschrieben: &sap.r3; 4.6B (IDES) mit &oracle; 8.0.5 unter FreeBSD 4.3-STABLE &sap.r3; 4.6C mit &oracle; 8.1.7 unter FreeBSD 4.5-STABLE Obwohl dieses Dokument versucht, alle wichtigen Schritte ausführlich zu beschreiben, besteht nicht die Absicht, die originalen Installationsanleitungen von &oracle; und &sap.r3; zu ersetzen. - Benutzen Sie die mit &sap.r3; Linux Edition - gelieferte Dokumentation für &sap;- und - &oracle;-spezifische Fragen, + Benutzen Sie die mit + &sap.r3; Linux Edition + gelieferte Dokumentation für &sap;- + und &oracle;-spezifische Fragen, sowie die Ressourcen von &oracle; und &sap;-OSS. Software/Programme - Folgende CD-ROMs wurden für die &sap;-Installationen - verwendet: + Folgende CD-ROMs wurden für die Installation von + &sap; verwendet: &sap.r3; 4.6B, &oracle; 8.0.5 Bezeichnung Nummer Beschreibung KERNEL 51009113 &sap; Kernel &oracle; / Installation / AIX, Linux, &solaris; RDBMS 51007558 &oracle; / RDBMS 8.0.5.X / Linux EXPORT1 51010208 IDES / DB-Export / Disc 1 of 6 EXPORT2 51010209 IDES / DB-Export / Disc 2 of 6 EXPORT3 51010210 IDES / DB-Export / Disc 3 of 6 EXPORT4 51010211 IDES / DB-Export / Disc 4 of 6 EXPORT5 51010212 IDES / DB-Export / Disc 5 of 6 EXPORT6 51010213 IDES / DB-Export / Disc 6 of 6 - Zusätzlich wurde die &oracle; 8 Server + Zusätzlich wurde die + &oracle; 8 Server CD-ROM (Pre-production Version 8.0.5 für Linux, Kernel Version 2.0.33) - CD-ROM verwendet, die allerdings nicht unbedingt nötig ist - und natürlich FreeBSD 4.3-STABLE (die Installation wurde - nur ein paar Tage nach dem 4.3 RELEASE durchgeführt). + verwendet, die allerdings nicht unbedingt nötig ist + und FreeBSD 4.3-STABLE (die Installation wurde kurz + nach dem Erscheinen von 4.3-RELEASE durchgeführt). &sap.r3; 4.6C SR2, &oracle; 8.1.7 Bezeichnung Nummer Beschreibung KERNEL 51014004 &sap; Kernel &oracle; / &sap; Kernel Version 4.6D / DEC, Linux RDBMS 51012930 &oracle; 8.1.7/ RDBMS / Linux EXPORT1 51013953 Release 4.6C SR2 / Export / Disc 1 of 4 EXPORT1 51013953 Release 4.6C SR2 / Export / Disc 2 of 4 EXPORT1 51013953 Release 4.6C SR2 / Export / Disc 3 of 4 EXPORT1 51013953 Release 4.6C SR2 / Export / Disc 4 of 4 LANG1 51013954 Release 4.6C SR2 / Language / DE, EN, FR / Disc 1 of 3 Abhängig von den zu installierenden Sprachen kann es sein, dass zusätzliche Sprach-CDs nötig sind. Da hier nur Deutsch und Englisch verwendet wurden, ist die erste Sprachen-CD ausreichend. Nebenbei bemerkt sind die Nummern aller vier Export-CDs identisch. Das heißt alle drei Sprachen-CDs haben diesselbe Nummer (das unterscheidet sie von der Nummerierung der 4.6B IDES-Version). Zum Zeitpunkt der Erstellung dieses Dokuments lief das System unter FreeBSD 4.5-STABLE (20.03.2002). &sap;-Notes Die folgenden Anmerkungen sollten vor der Installation von &sap.r3; gelesen werden, da sie sich während der Installation als nützlich erwiesen haben. &sap.r3; 4.6B, &oracle; 8.0.5 Nummer Bezeichnung 0171356 &sap; Software on Linux: Essential Comments 0201147 INST: 4.6C R/3 Inst. on UNIX - &oracle; 0373203 Update / Migration &oracle; 8.0.5 --> 8.0.6/8.1.6 LINUX 0072984 Release of Digital UNIX 4.0B for &oracle; 0130581 R3SETUP step DIPGNTAB terminates 0144978 Your system has not been installed correctly 0162266 Questions and tips for R3SETUP on Windows NT/W2K &sap.r3; 4.6C, &oracle; 8.1.7 Nummer Bezeichnung 0015023 Initializing table TCPDB (RSXP0004) (EBCDIC) 0045619 R/3 with several languages or typefaces 0171356 &sap; Software on Linux: Essential Comments 0195603 RedHat 6.1 Enterprise version: Known problems 0212876 The new archiving tool SAPCAR 0300900 Linux: Released DELL Hardware 0377187 RedHat 6.2: important remarks 0387074 INST: R/3 4.6C SR2 Installation on UNIX 0387077 INST: R/3 4.6C SR2 Inst. on UNIX - &oracle; 0387078 &sap; Software on UNIX: OS Dependencies 4.6C SR2 Hardware-Anforderungen Die folgende Ausstattung reicht für die Installation eines &sap.r3; Systems aus. Für Produktionszwecke benötigt man natürlich eine exakte Bestimmung dieser Größen: Komponente 4.6B 4.6C Prozessor 2 x 800MHz &pentium; III 2 x 800MHz &pentium; III Hauptspeicher 1GB ECC 2GB ECC Festplattenplatz 50-60GB (IDES) 50-60GB (IDES) Für Produktionszwecke sind &xeon; Prozessoren mit großem Cache, Hochgeschwindigkeitsspeicher (SCSI, RAID Hardware Controller), USV (unterbrechungsfreie Stromversorgung) und ECC-RAM empfehlenswert. Der große Bedarf an Festplattenplatz ergibt sich durch das vorkonfigurierte IDES System, welches während der Installation 27 GB Datenbankdateien erzeugt. Dieser Speicher ist auch für neue Produktionssysteme und Anwendungsdaten ausreichend. &sap.r3; 4.6B, &oracle; 8.0.5 Folgende Standard-Hardware wurde verwendet: Ein Doppelprozessorboard mit zwei 800 MHz &pentium; III Prozessoren, Adaptec 29160 Ultra160 SCSI Adaptern (zum Anschluß eines 40/80 GB DLT Bandlaufwerks und eines CD-ROM-Laufwerks), &mylex; &acceleraid; (2 Kanäle, Firmware 6.00-1-00 mit 32 MB RAM). An den &mylex; Raid-controller wurden 2 (gespiegelte) 17 GB Festplatten sowie vier 36 GB Festplatten (RAID level 5) angeschlossen. &sap.r3; 4.6C, &oracle; 8.1.7 Für diese Installation wurde ein DELL PowerEdge 2500 verwendet: Ein Doppelprozessorboard mit zwei 1000 MHz &pentium; III Prozessoren (256 kB Cache), 2 GB PC133 ECC SDRAM, PERC/3 DC PCI Raid Controller mit 128 MB, und einem EIDE DVD-ROM Laufwerk. An den RAID-Controller sind zwei (gespiegelte) 18 GB Festplatten sowie vier 36 GB Festplatten (RAID level 5) angeschlossen. Installation von FreeBSD Als erstes müssen Sie FreeBSD installieren. - Dazu gibt es mehrere Möglichkeiten (Hier wurde - FreeBSD 4.3 via FTP, FreeBSD 4.5 hingegen direkt - von CD installiert.). + Dazu gibt es mehrere Möglichkeiten: In den Beispielen + wurde FreeBSD 4.3 via FTP, FreeBSD 4.5 hingegen direkt + von CD installiert. Weitere Hinweise zur Installation + von &os; finden Sie in + . + Aufteilung der Festplatte Um das Ganze zu vereinfachen, wurde sowohl für die &sap.r3; 46B- als auch die &sap.r3; 46C SR2-Installation die gleiche Platteneinteilung verwendet. Nur die Gerätenamen änderten sich, da die Installationen auf verschiedenen Hardwareplattformen durchgeführt wurden.(insbesondere /dev/da sowie /dev/amr; wenn also jemand z.B. ein AMI &megaraid; verwendet, so wird er /dev/amr0s1a anstelle von /dev/da0s1a vorfinden): Dateisystem Größe (1k-blocks) HDD-Größe (GB) Gemountet nach /dev/da0s1a 1.016.303 1 / /dev/da0s1b 6 Swap /dev/da0s1e 2.032.623 2 /var /dev/da0s1f 8.205.339 8 /usr /dev/da1s1e 45.734.361 45 /compat/linux/oracle /dev/da1s1f 2.032.623 2 /compat/linux/sapmnt /dev/da1s1g 2.032.623 2 /compat/linux/usr/sap Konfigurieren und initialisieren Sie die zwei logischen Platten mit der &mylex;- oder PERC/3 RAID Software, bevor Sie beginnen. Diese kann während der BIOS-Bootphase gestartet werden. Beachten Sie bitte, dass sich diese Platteneinteilung etwas von den &sap;-Empfehlungen unterscheidet, da &sap; vorschlägt, die &oracle;-Unterverzeichnisse - (und einige andere) separat zu mounten – ich habe mich - jedoch aus Vereinfachungsgründen - dazu entschieden, diese als reale Unterverzeichnisse + (und einige andere) separat einzuhängen – es + ist jedoch einfacher, diese als reale Unterverzeichnisse zu erzeugen. <command>make world</command> und ein neuer Kernel Laden Sie die neuesten STABLE-Quellen herunter. Aktualisieren Sie das System und erzeugen Sie einen neuen Kernel, nachdem Sie die Kernelkonfigurationsdatei angepasst haben. Zusätzlich sollten Sie die Kernel Parameter einfügen, die sowohl von &sap.r3; als auch von &oracle; benötigt werden. Installation der Linux-Umgebung - Während der ersten Installation von FreeBSD 4.3-STABLE - traten einige Fehler beim Download der benötigten - RPM-Pakete (für 4.3-STABLE, am 2. Mai 2001) auf, mit - FreeBSD 4.5-STABLE hingegen lief alles glatt. Sollten dennoch - Probleme auftreten, versuchen Sie diese Pakete manuell herunterzuladen. - Für eine Übersicht der RPM-Spiegelserver - sowie der benötigten Dateien lesen Sie bitte das - zugehörige Makefile. - Das Linux-Basissystem installieren - Als erstes muss der - linux_base-Port - (als root) installiert werden. - Zum Zeitpunkt der Erstellung dieses Artikels war dies - linux_base-6. + Zuerst muss der Port + linux_base + als root installiert werden: &prompt.root; cd /usr/ports/emulators/linux_base &prompt.root; make package - Die Linux-Umgebung installieren und einrichten + Die Linux-Entwicklungsumgebung installieren Die Linux-Entwicklungsumgebung wird benötigt, wenn Sie &oracle; auf Ihrem FreeBSD-System - (gemäß der Beschreibung im Handbuch) - installieren wollen: + installieren wollen (siehe ): &prompt.root; cd /usr/ports/devel/linux_devtools -&prompt.root; make package +&prompt.root; make install distclean - Die Linux-Entwicklungsumgebung wurde hier jedoch nur für die - &sap.r3; 46B IDES-Installation + Die Linux-Entwicklungsumgebung wurde hier jedoch nur für + die &sap.r3; 46B IDES-Installation verwendet. Sie wird nicht benötigt, wenn die &oracle;-Datenbank auf dem FreeBSD System nicht neu gebunden wird. Dies ist dann der Fall, wenn Sie den &oracle; Tarball eines Linux-Systems verwenden. Notwendige RPMs installieren RPMs - Um das R3SETUP-Programm zu starten, wird - PAM-Unterstützung benötigt. - Während der ersten &sap;-Installation unter + Um das R3SETUP-Programm + zu starten, wird PAM-Unterstützung benötigt. + Während der ersten Installation von + &sap; unter FreeBSD 4.3-STABLE wurde versucht, zuerst alle von PAM - benötigten Paketen zu installieren. Anschließend - wurde die Installation von PAM erzwungen (force install), - was dann auch ohne Probleme funktionierte. Die - Installation von &sap.r3; 4.6C SR2 - wurde ebenfalls erzwungen, diesmal ohne die Installation - der benötigten Pakete, was ebenfalls funktionierte. - Es sieht also so aus, dass die abhängigen Pakete - doch nicht benötigt werden. + benötigten Pakete zu installieren. Anschließend + wurde die Installation von PAM erzwungen, was auch ohne + Probleme funktionierte. Für die folgende Installation + von &sap.r3; 4.6C SR2 + wurde die Installation von PAM ohne die abhängigen + Pakete direkt erzwungen und es funktionierte ebenfalls. + Es sieht so aus, als würden die abhängigen Pakete + nicht benötigt. &prompt.root; rpm -i --ignoreos --nodeps --root /compat/linux --dbpath /var/lib/rpm \ pam-0.68-7.i386.rpm Um den Intelligent-Agent von &oracle; 8.0.5 auszuführen, - musste das RedHat Tcl-Paket + musste das RedHat Tcl-Paket tcl-8.0.5-30.i386.rpm installiert werden, - da sonst das Binden (link) während der - &oracle;-Installation nicht - funktionierte. Es gibt noch weitere Punkte beim Binden von - &oracle;, die aber die Kombination &oracle;-Linux betreffen und nicht - FreeBSD spezifisch sind. + da sonst das Binden (link) + während der &oracle;-Installation + nicht funktionierte. Es gibt noch weitere Punkte beim + Binden von &oracle;, die aber die Kombination &oracle;-Linux + betreffen und nicht FreeBSD spezifisch sind. Zusätzliche Hinweise Eine gute Idee ist es, linprocfs - in /etc/fstab einzufügen. Für - weitere Informationen lesen Sie bitte die zugehörige Hilfedatei - (man linprocfs). Ein anderer zu setzender - Parameter ist kern.fallback_elf_brand=3. - Dies erfolgt in /etc/sysctl.conf. + in /etc/fstab einzufügen; + weitere Informationen dazu erhalten Sie in der Hilfeseite + &man.linprocfs.5;. Weiterhin sollten Sie in + der Datei /etc/sysctl.conf + die Zeile kern.fallback_elf_brand=3 + einfügen. Die &sap.r3;-Umgebung erzeugen Die nötigen Dateisysteme erzeugen Für eine einfache Installation reicht es aus, folgende Dateisysteme zu erzeugen: Dateisysteme Größe in GB /compat/linux/oracle 45 GB /compat/linux/sapmnt 2 GB /compat/linux/usr/sap 2 GB Außerdem müssen einige Links angelegt werden. Ansonsten beschwert sich der &sap;-Installer, wenn er die erzeugten Links überprüft: &prompt.root; ln -s /compat/linux/oracle /oracle &prompt.root; ln -s /compat/linux/sapmnt /sapmnt &prompt.root; ln -s /compat/linux/usr/sap /usr/sap Eine Fehlermeldung während der Installation (hier unter dem PRD-System und &sap.r3; 4.6C SR2 könnte beispielsweise so aussehen: INFO 2002-03-19 16:45:36 R3LINKS_IND_IND SyLinkCreate:200 Checking existence of symbolic link /usr/sap/PRD/SYS/exe/dbg to /sapmnt/PRD/exe. Creating if it does not exist... WARNING 2002-03-19 16:45:36 R3LINKS_IND_IND SyLinkCreate:400 Link /usr/sap/PRD/SYS/exe/dbg exists but it points to file /compat/linux/sapmnt/PRD/exe instead of /sapmnt/PRD/exe. The program cannot go on as long as this link exists at this location. Move the link to another location. ERROR 2002-03-19 16:45:36 R3LINKS_IND_IND Ins_SetupLinks:0 can not setup link '/usr/sap/PRD/SYS/exe/dbg' with content '/sapmnt/PRD/exe' Benutzer und Verzeichnisse anlegen &sap.r3; benötigt zwei Benutzer und drei Benutzergruppen. Die Benutzernamen hängen von der (aus drei Buchstaben bestehenden) SAP-System-ID (SID) ab. Einige dieser SIDs sind von &sap; reserviert (z.B. SAP und NIX. Für eine komplette Übersicht schlagen Sie bitte in der &sap;-Dokumentation nach. Für die IDES-Installation wurde IDS verwendet, für die 4.6C-SR2-Installation PRD, da das System für Produktionszwecke eingesetzt werden sollte. Daraus ergaben sich folgende Gruppen (die Gruppen-IDs können variieren, es handelt sich nur um Werte, die für diese spezielle Installation verwendet wurden): Gruppen-ID Gruppen-Name Beschreibung 100 dba Datenbank-Administrator 101 sapsys SAP System 102 oper Datenbank-Operator Für eine Standard-&oracle;-Installation wird nur die Gruppe dba verwendet. Ein Mitglied der Gruppe oper verwendet auch die Gruppe dba (weitere Informationen finden sich in der &oracle;- und &sap;-Dokumentation). Zusätzlich werden auch folgende Benutzer benötigt: Benutzer-ID Benutzername Generischer Name Gruppe Zusätzliche Gruppen Beschreibung 1000 idsadm/prdadm sidadm sapsys oper SAP Administrator 1002 oraids/oraprd orasid dba oper DB Administrator Für das Anlegen des &sap;-Administrators mittels adduser werden folgende Einträge (bitte Shell und Heimatverzeichnis beachten) benötigt: Name: sidadm Password: ****** Fullname: SAP Administrator SID Uid: 1000 Gid: 101 (sapsys) Class: Groups: sapsys dba HOME: /home/sidadm Shell: bash (/compat/linux/bin/bash) und für den Datenbank-Administrator: Name: orasid Password: ****** Fullname: Oracle Administrator SID Uid: 1002 Gid: 100 (dba) Class: Groups: dba HOME: /oracle/sid Shell: bash (/compat/linux/bin/bash) Wenn Sie beide Gruppen (dba und oper) verwenden, sollte auch die Gruppe oper hinzugefügt werden. Verzeichnisse erzeugen Diese Verzeichnisse werden gewöhnlich als eigene Dateisysteme erzeugt und gemountet. Letztlich liegt dies aber an Ihren Anforderungen an das System. Hier wurden sie als einfache Verzeichnisse angelegt, die sich alle im gleichen RAID5 befinden: Zuerst werden die Eigentümer und Rechte für einige Verzeichnisse (als Benutzer root) gesetzt: &prompt.root; chmod 775 /oracle &prompt.root; chmod 777 /sapmnt &prompt.root; chown root:dba /oracle &prompt.root; chown sidadm:sapsys /compat/linux/usr/sap &prompt.root; chmod 775 /compat/linux/usr/sap Danach werden (als Benutzer orasid) einige Verzeichnisse erzeugt, die alle Unterverzeichnisse von /oracle/SID sind: &prompt.root; su - orasid &prompt.root; cd /oracle/SID &prompt.root; mkdir mirrlogA mirrlogB origlogA origlogB &prompt.root; mkdir sapdata1 sapdata2 sapdata3 sapdata4 sapdata5 sapdata6 &prompt.root; mkdir saparch sapreorg &prompt.root; exit Für die &oracle; 8.1.7-Installation werden ebenfalls zusätzliche Verzeichnisse benötigt: &prompt.root; su - orasid &prompt.root; cd /oracle &prompt.root; mkdir 805_32 &prompt.root; mkdir client stage &prompt.root; mkdir client/80x_32 &prompt.root; mkdir stage/817_32 &prompt.root; cd /oracle/SID &prompt.root; mkdir 817_32 Das Verzeichnis client/80x_32 muss genau so genannt werden. Versuchen Sie nicht, das x durch eine Zahl oder einen Buchstaben zu ersetzen. Im dritten Schritt werden wiederum Verzeichnisse (als Benutzer sidadm) erzeugt: &prompt.root; su - sidadm &prompt.root; cd /usr/sap &prompt.root; mkdir SID &prompt.root; mkdir trans &prompt.root; exit Einträge in /etc/services &sap.r3; benötigt einige Einträge in /etc/services, die während der Installation unter FreeBSD nicht richtig gesetzt werden. Sie benötigen mindestens die zur Instanzennummer, in diesem Fall 00, passenden Einträge. Es ist auch möglich für dp, gw, sp und ms alle Einträge von 00 bis 99 einzufügen. Wenn Sie einen SAP-Router verwenden, oder den Zugang zu &sap;-OSS benötigen, müssen Sie auch 99 einfügen, da der Port 3299 normalerweise für den SAP-Router-Prozess auf dem Zielsystem benötigt wird: sapdp00 3200/tcp # SAP Dispatcher. 3200 + Instance-Number sapgw00 3300/tcp # SAP Gateway. 3300 + Instance-Number sapsp00 3400/tcp # 3400 + Instance-Number sapms00 3500/tcp # 3500 + Instance-Number sapmsSID 3600/tcp # SAP Message Server. 3600 + Instance-Number sapgw00s 4800/tcp # SAP Secure Gateway 4800 + Instance-Number Notwendige Lokalisierungen Locale &sap; benötigt mindestens zwei Lokalisierungen, die nicht Teil der RedHat-Standardinstallation sind. &sap; bietet diese als RPMs auf ihrem FTP-Server als Downloads an (diese sind aber nur dann zugänglich, wenn Sie ein Kunde mit OSS-Zugang sind). Für eine Übersicht der notwendigen RPMs lesen Sie bitte den &sap;-Hinweis 0171356. Es ist auch möglich, nur die passenden Links (z.B. von de_DE und en_US) zu erzeugen, diese Vorgehensweise wird aber nicht nicht empfohlen (obwohl es bisher beim IDES-System ohne Probleme funktioniert hat). Folgende Lokalisationen werden benötigt: de_DE.ISO-8859-1 en_US.ISO-8859-1 Erzeugen Sie die Links wie folgt: &prompt.root; cd /compat/linux/usr/share/locale &prompt.root; ln -s de_DE de_DE.ISO-8859-1 &prompt.root; ln -s en_US en_US.ISO-8859-1 Sind diese nicht vorhanden, wird es während der Installation zu einigen Problemen kommen. Wenn diese konsequent ignoriert werden (durch das OK-Setzen der jeweiligen Stadien in CENTRDB.R3S), ist es ohne größeren Aufwand nicht mehr möglich, sich am &sap;-System anzumelden. Kernel-Tuning Kernel Tuning &sap.r3;-Systeme verbrauchen sehr viel Ressourcen. Deshalb wurden folgende Parameter in die Kernelkonfigurationsdatei eingefügt: # Set these for memory pigs (SAP and Oracle): options MAXDSIZ="(1024*1024*1024)" options DFLDSIZ="(1024*1024*1024)" # System V options needed. options SYSVSHM #SYSV-style shared memory options SHMMAXPGS=262144 #max amount of shared mem. pages #options SHMMAXPGS=393216 #use this for the 46C inst.parameters options SHMMNI=256 #max number of shared memory ident if. options SHMSEG=100 #max shared mem.segs per process options SYSVMSG #SYSV-style message queues options MSGSEG=32767 #max num. of mes.segments in system options MSGSSZ=32 #size of msg-seg. MUST be power of 2 options MSGMNB=65535 #max char. per message queue options MSGTQL=2046 #max amount of msgs in system options SYSVSEM #SYSV-style semaphores options SEMMNU=256 #number of semaphore UNDO structures options SEMMNS=1024 #number of semaphores in system options SEMMNI=520 #number of semaphore indentifiers options SEMUME=100 #number of UNDO keys Die minimalen Werte sind in der von &sap; kommenden Dokumentation festgelegt. Da es keine Beschreibung für Linux (und daher auch nicht für FreeBSD) gibt, muss man für weitere Informationen im HP-UX-Abschnitt (32-Bit) nachschlagen. Da das System für die 4.6C SR2-Installation über mehr Hauptspeicher verfügte, können die Shared-Segments für &sap; und &oracle; größer sein. Wählen Sie daher eine größere Anzahl von Shared-Memory-Pages. Bei einer Standard-Installation von FreeBSD 4.5 auf &i386;-Systemen belassen Sie MAXDSIZ und DFLDSIZ auf dem Maximum von 1 GB. Ansonsten könnten seltsame Fehlermeldungen, wie ORA-27102: out of memory oder Linux Error: 12: Cannot allocate memory auftreten. &sap.r3; installieren Die &sap; CD-ROMs vorbereiten Für eine Installation werden viele CD-ROMs benötigt, die gemountet und ungemountet werden müssen. Wenn Sie genügend CD-ROM-Laufwerke haben, können Sie alle gleichzeitig gemountet werden. Ansonsten kopiert man die CD-ROM-Inhalte einfach in die entsprechenden Verzeichnisse, /oracle/SID/sapreorg/cd-name wobei cd-name KERNEL, RDBMS, EXPORT1, EXPORT2, EXPORT3, EXPORT4, EXPORT5 und EXPORT6 bei einer 4.6B/IDES-Installation und KERNEL, RDBMS, DISK1, DISK2, DISK3, DISK4 und LANG bei einer 4.6C SR2-Installation entspricht. Die Dateinamen auf den gemounteten CDs sollten aus Großbuchstaben bestehen. Ist dies nicht der Fall, verwenden Sie zum Mounten die Option . Für das Kopieren der CD-Inhalte verwenden Sie folgenden Befehle: &prompt.root; mount_cd9660 -g /dev/cd0a /mnt &prompt.root; cp -R /mnt/* /oracle/SID/sapreorg/cd-name &prompt.root; umount /mnt Das Installations-Skript ausführen Als erstes müssen Sie ein Installationsverzeichnis anlegen: &prompt.root; cd /oracle/SID/sapreorg &prompt.root; mkdir install &prompt.root; cd install Anschließend wird das Installations-Skript gestartet, das nahezu alle relevanten Daten in das Installationsverzeichnis kopiert: &prompt.root; /oracle/SID/sapreorg/KERNEL/UNIX/INSTTOOL.SH Die IDES-Installation (4.6B) wird mit einem vollständig angepassten &sap.r3; Demo-System geliefert, das heißt es gibt sechs statt drei Export-CDs. Da CENTRDB.R3S für eine Standard-Zentralinstanz (&r3; plus Datenbank) ausgelegt ist, aber nicht für eine IDES-Zentralinstanz, muss die passende CENTRDB.R3S-Datei manuell aus dem EXPORT1-Verzeichnis in das Installationsverzeichnis kopiert werden, da R3SETUP ansonsten nur nach drei EXPORT-CDs verlangt. Die aktuellere Version &sap; 4.6C SR2 wird mit vier EXPORT-CDs geliefert. Die die Installation überwachende Parameter-Datei heißt hier CENTRAL.R3S. Im Gegensatz zu früheren Versionen gibt es nun keine separaten Vorlagen für die Installation von Zentralinstanzen mit und ohne Datenbank mehr. &sap; verwendet eine eigene Vorlage für die Datenbankinstallation. Um die Installation später erneut starten, ist es jedoch ausreichend, die Installation mit der ursprünglichen Datei zu starten. Während und nach der Installation benötigt &sap; hostname, um den Rechnernamen, aber nicht den vollständigen Domain-Namen zu erhalten. Setzen Sie also entweder den Rechnernamen entsprechend, oder setzen Sie einen Alias mit alias hostname='hostname -s' für die Benutzer orasid und sidadm (Und zusätzlich für root. Dies zumindest für die Installationsschritte, die als root ausgeführt werden müssen.). Außerdem ist es möglich, nur die installierten Profil- und Login-Skripts der beiden Benutzer anzupassen, die während der &sap;-Installation erstellt wurden. R3SETUP 4.6B starten Stellen Sie sicher, dass LD_LIBRARY_PATH korrekt gesetzt wurde: &prompt.root; export LD_LIBRARY_PATH=/oracle/IDS/lib:/sapmnt/IDS/exe:/oracle/805_32/lib Gehen Sie in das Installationsverzeichnis und starten Sie R3SETUP als root: &prompt.root; cd /oracle/IDS/sapreorg/install &prompt.root; ./R3SETUP -f CENTRDB.R3S Das Skript stellt anschließend einige Fragen (Vorgaben stehen dabei in Klammern, gefolgt von den aktuellen Eingaben): Frage Vorgabe Eingabe Enter SAP System ID [C11] IDSEnter Enter SAP Instance Number [00] Enter Enter SAPMOUNT Directory [/sapmnt] Enter Enter name of SAP central host [troubadix.domain.de] Enter Enter name of SAP db host [troubadix] Enter Select character set [1] (WE8DEC) Enter Enter Oracle server version (1) Oracle 8.0.5, (2) Oracle 8.0.6, (3) Oracle 8.1.5, (4) Oracle 8.1.6 1Enter Extract Oracle Client archive [1] (Yes, extract) Enter Enter path to KERNEL CD [/sapcd] /oracle/IDS/sapreorg/KERNEL Enter path to RDBMS CD [/sapcd] /oracle/IDS/sapreorg/RDBMS Enter path to EXPORT1 CD [/sapcd] /oracle/IDS/sapreorg/EXPORT1 Directory to copy EXPORT1 CD [/oracle/IDS/sapreorg/CD4_DIR] Enter Enter path to EXPORT2 CD [/sapcd] /oracle/IDS/sapreorg/EXPORT2 Directory to copy EXPORT2 CD [/oracle/IDS/sapreorg/CD5_DIR] Enter Enter path to EXPORT3 CD [/sapcd] /oracle/IDS/sapreorg/EXPORT3 Directory to copy EXPORT3 CD [/oracle/IDS/sapreorg/CD6_DIR] Enter Enter path to EXPORT4 CD [/sapcd] /oracle/IDS/sapreorg/EXPORT4 Directory to copy EXPORT4 CD [/oracle/IDS/sapreorg/CD7_DIR] Enter Enter path to EXPORT5 CD [/sapcd] /oracle/IDS/sapreorg/EXPORT5 Directory to copy EXPORT5 CD [/oracle/IDS/sapreorg/CD8_DIR] Enter Enter path to EXPORT6 CD [/sapcd] /oracle/IDS/sapreorg/EXPORT6 Directory to copy EXPORT6 CD [/oracle/IDS/sapreorg/CD9_DIR] Enter Enter amount of RAM for SAP + DB 850Enter (in Megabytes) Service Entry Message Server [3600] Enter Enter Group-ID of sapsys [101] Enter Enter Group-ID of oper [102] Enter Enter Group-ID of dba [100] Enter Enter User-ID of sidadm [1000] Enter Enter User-ID of orasid [1002] Enter Number of parallel procs [2] Enter Wenn Sie die CD-Inhalte nicht in verschiedene Verzeichnisse kopiert haben, findet der &sap;-Installer die benötigten CDs nicht (diese sind durch die Datei LABEL.ASC gekennzeichnet) und würde von Ihnen verlangen, entweder die CD einzulegen und zu mounten oder den entsprechenden mount-Pfad einzugeben. CENTRDB.R3S ist möglicherweise nicht fehlerfrei. Im vorliegenden Fall wurde die CD EXPORT4 zwar erneut verlangt, dennoch wurde der richtige Schlüssel (6_LOCATION, danach 7_LOCATION) vorgeschlagen. Daher ist es problemlos möglich, durch Eingabe der korrekten Werte fortzufahren. Lassen Sie sich also nicht verwirren. Abgesehen von einigen kleineren (unten angeführten) Problemen, sollte nun bis zur Installation der &oracle;-Datenbank alles ohne Probleme ablaufen. R3SETUP 4.6C SR2 starten Stellen Sie sicher, dass LD_LIBRARY_PATH korrekt gesetzt ist. Dieser Wert unterscheidet sich von dem der 4.6B-&oracle; 8.0.5-Installation: &prompt.root; export LD_LIBRARY_PATH=/sapmnt/PRD/exe:/oracle/PRD/817_32/lib Gehen Sie in das Installationsverzeichnis und führen Sie R3SETUP als root aus: &prompt.root; cd /oracle/PRD/sapreorg/install &prompt.root; ./R3SETUP -f CENTRAL.R3S Das Skript stellt anschließend einige Fragen (Vorgaben in Klammern, gefolgt von den aktuellen Eingaben): Frage Vorgabe Eingabe Enter SAP System ID [C11] PRDEnter Enter SAP Instance Number [00] Enter Enter SAPMOUNT Directory [/sapmnt] Enter Enter name of SAP central host [majestix] Enter Enter Database System ID [PRD] PRDEnter Enter name of SAP db host [majestix] Enter Select character set [1] (WE8DEC) Enter Enter Oracle server version (2) Oracle 8.1.7 2Enter Extract Oracle Client archive [1] (Yes, extract) Enter Enter path to KERNEL CD [/sapcd] /oracle/PRD/sapreorg/KERNEL Enter amount of RAM for SAP + DB 2044 1800Enter (in Megabytes) Service Entry Message Server [3600] Enter Enter Group-ID of sapsys [100] Enter Enter Group-ID of oper [101] Enter Enter Group-ID of dba [102] Enter Enter User-ID of oraprd [1002] Enter Enter User-ID of prdadm [1000] Enter LDAP support 3Enter (no support) Installation step completed [1] (continue) Enter Choose installation service [1] (DB inst,file) Enter Bisher verursacht das Anlegen von Benutzern eine Fehlermeldung während der Installation, und zwar in den Stadien OSUSERDBSID_IND_ORA (beim Anlegen des Benutzers orasid), sowie in OSUSERSIDADM_IND_ORA (beim Anlegen des Benutzers sidadm). Abgesehen von einigen kleineren (unten angeführten) Problemen, sollte nun bis zur Installation der &oracle;-Datenbank alles ohne Probleme ablaufen. &oracle; 8.0.5 installieren Lesen Sie bitte die entsprechenden &sap;-Hinweise und &oracle;-Readmes für Probleme, die Linux und die &oracle;-Datenbank betreffen. Die meisten (wenn nicht alle) Probleme werden durch inkompatible Bibliotheken verursacht. Weitere Informationen zur &oracle;-Installation erhalten Sie im Kapitel Installation von &oracle;. &oracle; 8.0.5 mit orainst installieren Wenn &oracle; 8.0.5 verwendet wird, werden einige zusätzliche Bibliotheken benötigt, da &oracle; 8.0.5 mit einer alten Version von glibc verlinkt wurde, RedHat 6.1 aber bereits eine aktuellere Version verwendet. Daher müssen Sie folgende zusätzliche Pakte installieren, um sicherzustellen, dass die Verlinkung ordnungsgemäß erfolgt: compat-libs-5.2-2.i386.rpm compat-glibc-5.2-2.0.7.2.i386.rpm compat-egcs-5.2-1.0.3a.1.i386.rpm compat-egcs-c++-5.2-1.0.3a.1.i386.rpm compat-binutils-5.2-2.9.1.0.23.1.i386.rpm Lesen Sie bitte die entsprechenden &sap;-Hinweise und die &oracle;-Readme's. Ist dies nicht möglich (z.B. aus Zeitmangel, oder bei Nichtvorhandensein dieser Unterlagen), besteht auch die Möglichkeit, die originalen Binärdateien oder die verlinkten Binärdateien eines RedHat-Systems zu verwenden. Um den Intelligent-Agent zu kompilieren, muss das RedHat Tcl-Paket installiert sein. Wenn Sie tcl-8.0.3-20.i386.rpm nicht bekommen können, sollte es auch problemlos möglich sein, eine neuere Version, z.B. tcl-8.0.5-30.i386.rpm für RedHat 6.1, zu verwenden. Vom Binden abgesehen, läuft die Installation wie folgt ab: &prompt.root; su - oraids &prompt.root; export TERM=xterm &prompt.root; export ORACLE_TERM=xterm &prompt.root; export ORACLE_HOME=/oracle/IDS &prompt.root; cd /ORACLE_HOME/orainst_sap &prompt.root; ./orainst Bestätigen Sie alle Meldungen mit Enter, bis die Software installiert ist. Einzige Ausnahme ist die Frage nach der Installation des &oracle; On-Line Text Viewers. Dieser ist unter Linux (noch) nicht verfügbar. Daher muss diese Option deaktiviert werden. Anschließend will sich &oracle; unter Verwendung von i386-glibc20-linux-gcc anstelle der verfügbaren gcc, egcs oder i386-redhat-linux-gcc verlinken. Auf Grund zeitlicher Einschränkungen wurden für die Installation die Binärdateien der &oracle; 8.0.5 PreProduction-Version verwendet, nachdem sich der erste Versuch, die Version von der RDBMS-CD zum Laufen zu bringen, sowie die richtigen RPMs zu finden und zu installieren, zum Alptraum entwickelt hatte. &oracle; 8.0.5 Pre-Production für Linux (Kernel 2.0.33) installieren Diese Installation ist relativ einfach. Mounten Sie die CD und starten Sie den Installer. Danach wählen Sie das &oracle;-Heimatverzeichnis und kopieren Sie die Binärdateien dorthin. Die Überreste der vorherigen RDBMS-Installationsversuche werden dabei nicht entfernt. Danach konnte die &oracle;-Datenbank ohne Probleme gestartet werden. Das &oracle; 8.1.7-Linux-Archiv entpacken Nehmen Sie das aus dem Installationsverzeichnis eines Linux-Systems erstellte Archiv oracle81732.tgz und entpacken Sie es nach /oracle/SID/817_32/. Mit der &sap.r3;-Installation fortfahren Überprüfen Sie als erstes die Umgebungseinstellungen der Benutzer idsamd(sidadm) und oraids (orasid). Beide sollten nun die Dateien .profile, .login und .cshrc enthalten, die alle hostname benutzen. Falls der Rechnername Ihres Systems der vollständige Rechnername ist, müssen Sie in allen drei Dateien hostname in hostname -s ändern. Datenbanken laden Danach kann R3SETUP entweder erneut gestartet oder fortgesetzt werden (je nachdem, ob sie das Programm zuvor beendet hatten oder nicht). R3SETUP erzeugt nun die Tablespaces und lädt die Daten (für 46B IDES von EXPORT1 bis EXPORT6, für 46C von DISK1 bis DISK4) mittels R3load in die Datenbank. Wenn das Laden der Datenbank abgeschlossen ist (dieser Vorgang kann einige Stunden dauern!), werden einige Passwörter angefordert. Für Testinstallationen können auch Standard-Passwörter verwendet werden. Liegt Ihnen allerdings etwas an der Sicherheit Ihres Systems, so verwenden Sie andere Passwörter. Frage Eingabe Enter Password for sapr3 sapEnter Confirum Password for sapr3 sapEnter Enter Password for sys change_on_installEnter Confirm Password for sys change_on_installEnter Enter Password for system managerEnter Confirm Password for system managerEnter An diesem Punkt gab es während der 4.6B-Installation einige Probleme mit dipgntab. Listener Starten Sie den &oracle;-Listener als Benutzer orasid wie folgt: &prompt.user; umask 0; lsnrctl start Ansonsten könnten Sie die Meldung ORA-12546 erhalten, da die Sockets nicht über die korrekten Berechtigungen verfügen werden. Lesen Sie dazu auch den &sap;-Hinweis 072984. MNLS-Tabellen aktualisieren Wenn Sie Nicht-Latin-1-Sprachen in das &sap;-System einbauen wollen, müssen Sie die MNLS (Multi National Language Support)-Tabellen aktualisieren. Dies wird in den SAP-OSS-Hinweisen 15023 und 45619 beschrieben. Ansonsten können Sie diese Frage während der &sap;-Installation überspringen. Wenn Sie MNLS nicht benötigen, ist es trotzdem nötig, die Tabelle TCPDB zu überprüfen und zu initialisieren, falls dies nicht bereits geschehen ist. Lesen Sie die &sap;-Hinweise 0015023 und 0045619, falls Sie weitere Informationen benötigen. Abschließende Aufgaben &sap.r3;-Lizenzschlüssel anfordern Sie müssen Ihren &sap.r3;-Lizenzschlüssel anfordern, da die zur Installation verwendete Lizenz nur für vier Wochen gültig ist. Dazu ermitteln Sie zuerst Ihren Hardwareschlüssel. Melden Sie sich als idsadm an und rufen Sie saplicense auf: &prompt.root; /sapmnt/IDS/exe/saplicense -get Wird saplicense ohne Optionen aufgerufen, so erhalten Sie eine Übersicht der möglichen Optionen. Nach Erhalt des Lizenzschlüssels kann dieser installiert werden: &prompt.root; /sapmnt/IDS/exe/saplicense -install Nun müssen Sie folgende Daten eingeben: SAP SYSTEM ID = SID, 3 Zeichen CUSTOMER KEY = Hardware-Schlüssel, 11 Zeichen INSTALLATION NO = Installation, 10 Ziffern EXPIRATION DATE = JJJJMMTT, normalerweise "99991231" LICENSE KEY = Lizenzschlüssel, 24 Zeichen Benutzer anlegen Erzeugen Sie einen Benutzer innerhalb von client 000 (für einige Aufgaben muss dies innerhalb von client 000 erfolgen, aber nicht als Benutzer sap* und ddic). Als Benutzername empfiehlt sich z.B. wartung oder service (in Englisch). Benötigte Profile sind sap_new und sap_all. Aus Sicherheitsgründen sollten die Passwörter der Standardbenutzer in allen Clients geändert werden (dies gilt auch für die Benutzer sap* und ddic). Transportsystem, Profile, Betriebsarten usw. konfigurieren Innerhalb von client 000 führen andere Benutzer als ddic und sap* normalerweise folgende Aufgaben durch: Aufgabe Transaktion Konfiguration des Transportsystems, z.B. als Stand-Alone Transport Domain Entity STMS Erstellen und Editieren von Profilen RZ10 Pflege von Betriebsarten und Instanzen RZ04 Diese sowie alle anderen Post-Installationsschritte sind ausführlich in den &sap;-Installationsanleitungen beschrieben. init<replaceable>sid</replaceable>.sap (initIDS.sap) anpassen Die Datei /oracle/IDS/dbs/initIDS.sap enthält das &sap;-Sicherungsprofil. Hier sind die Größe des verwendeten Band(laufwerks), die Kompressionsart und so weiter festgelegt. Um dieses Profil mit sapdba oder brbackup auszuführen, wurden folgende Werte geändert: compress = hardware archive_function = copy_delete_save cpio_flags = "-ov --format=newc --block-size=128 --quiet" cpio_in_flags = "-iuv --block-size=128 --quiet" tape_size = 38000M tape_address = /dev/nsa0 tape_address_rew = /dev/sa0 Erklärungen: compress Das verwendete Bandlaufwerk war ein HP DLT1. Dieses unterstützt Hardware-Kompression. archive_function Hier wird das Standardverhalten beim Sichern von &oracle;-Archivprotokollen festgelegt. Neue Protokolldateien werden auf Band gespeichert, bereits gespeicherte erneut gespeichert und anschließend gelöscht. Dies verhindert eine Vielzahl von Problemen, falls Sie Ihre Datenbank wiederherstellen müssen und dabei feststellen, dass eins Ihrer Archivbänder defekt ist. cpio_flags Standardmäßig wird -B verwendet. Dies setzt die Blockgröße auf 5120 Bytes. Für DLT-Bänder werden von HP mindestens 32 K Blockgröße empfohlen, daher wurde hier --block-size=128 verwendet, um 64 KB-blöcke zu erzeugen. --format=newc wurde benötigt, da das Installationssystem über mehr als 65535 Inodes verfügt. Die letzte Option --quiet ist notwendig, weil brbackup sich sonst beschwert, wenn die cpio die Anzahl der gespeicherten Blöcke ausgibt. cpio_in_flags Flags, die zum Laden der Daten vom Band benötigt werden. Das Format wird dabei automatisch erkannt. tape_size Damit wird die maximale Speicherkapazität des Bandes angegeben. Aus Sicherheitsgründen (das Bandlaufwerk unterstützt Hardware-Kompression) ist dieser Wert geringfügig kleiner als der aktuelle Wert. tape_address Nicht zurückspulendes Gerät für cpio. tape_address_rew Zurückspulendes Gerät für cpio. Konfiguration nach Installationsende Die folgenden &sap;-Parameter sollten nach der Installation optimiert werden (die Beispiele gelten für IDES 46B, 1 GB Hauptspeicher): Name Wert ztta/roll_extension 250000000 abap/heap_area_dia 300000000 abap/heap_area_nondia 400000000 em/initial_size_MB 256 em/blocksize_kB 1024 ipc/shm_psize_40 70000000 &sap;-Hinweis 0013026: Name Wert ztta/dynpro_area 2500000 &sap;-Hinweis 0157246: Name Wert rdisp/ROLL_MAXFS 16000 rdisp/PG_MAXFS 30000 Mit obigen Parametern und einem System mit 1 Gigabyte Hauptspeicher, könnte der Speicherverbrauch in etwa so aussehen: Mem: 547M Active, 305M Inactive, 109M Wired, 40M Cache, 112M Buf, 3492K Free Während der Installation auftretende Probleme Neustarten von R3SETUP nach Behebung eines Problems R3SETUP bricht ab, wenn ein Fehler auftritt. Wenn Sie (nach Durchsicht der jeweiligen Protokolldateien) den Fehler behoben haben, müssen Sie R3SETUP erneut aufrufen, indem Sie für den fehlerhaften Schritt als Option REPEAT eingeben. Um R3SETUP erneut zu starten, rufen Sie die Datei einfach mit der entsprechenden R3S-Datei auf: &prompt.root; ./R3SETUP -f CENTRDB.R3S für 4.6B, oder mit &prompt.root; ./R3SETUP -f CENTRAL.R3S für 4.6C, unabhängig davon, ob der Fehler mit CENTRAL.R3S oder mit DATABASE.R3S auftrat. Zu bestimmten Zeitpunkten nimmt R3SETUP an, dass sowohl der Datenbank- als auch der &sap;-Prozess vorhanden sind und laufen (da dies Schritte sind, die es bereits ausgeführt hat). Sollten Fehler auftreten (z.B. wenn sich die Datenbank nicht starten lässt), müssen Sie sowohl die Datenbank als auch &sap; manuell neu starten, nachdem Sie die Fehler behoben haben. Erst danach darf R3SETUP erneut gestartet werden. Achten Sie auch darauf, den &oracle;-Listener erneut zu starten (als Benutzer orasid mittels umask 0; lsnrctl start), wenn dieser beendet wurde (z.B. durch einen notwendigen Neustart des Systems). Fehler im Stadium OSUSERSIDADM_IND_ORA bei der Ausführung von R3SETUP Wenn sich R3SETUP in diesem Stadium beschwert, editieren Sie die bei der Installation verwendete Version der Vorlage (CENTRDB.R3S (4.6B) oder entweder CENTRAL.R3S oder DATABASE.R3S (4.6C)). Finden Sie [OSUSERSIDADM_IND_ORA] oder suchen Sie nach dem einzigen STATUS=ERROR-Eintrag und ändern Sie die folgenden Werte: HOME=/home/sidadm (war voher leer) STATUS=OK (hatte den Status ERROR) Danach können Sie R3SETUP erneut aufrufen. Fehler im Stadium OSUSERDBSID_IND_ORA bei der Ausführung von R3SETUP Wahrscheinlich beschwert sich R3SETUP auch in diesem Stadium. Der hier auftretende Fehler ähnelt dem im Abschnitt OSUSERSIDADM_IND_ORA. Editieren Sie einfach die bei der Installation verwendete Version der Vorlage (das heißt CENTRDB.R3S (4.6B) oder entweder CENTRAL.R3S oder DATABASE.R3S (4.6C)). Finden Sie [OSUSERDBSID_IND_ORA] oder suchen Sie nach dem einzigen STATUS=ERROR-Eintrag und ändern Sie folgenden Eintrag: STATUS=OK Danach können Sie R3SETUP erneut aufrufen. Fehler <errorname>oraview.vrf FILE NOT FOUND</errorname> bei der &oracle;-Installation Sie haben die Option &oracle; On-Line Text Viewer nicht deaktiviert, bevor Sie die Installation gestartet haben. Per Voreinstellung ist diese Option aktiviert, obwohl sie unter Linux gar nicht verfügbar ist. Deaktivieren Sie daher diese Option im &oracle;-Installationsmenü und starten Sie die Installation erneut. Fehler <errorname>TEXTENV_INVALID</errorname> bei der Ausführung von R3SETUP, RFC oder beim Start von SAPGUI Tritt dieser Fehler auf, so fehlt die korrekte Lokalisierung. &sap;-Hinweis 0171356 führt die notwendigen RPMs auf, die installiert sein müssen (z.B. saplocales-1.0-3, saposcheck-1.0-1 für RedHat 6.1). Falls Sie alle damit verbundenen Fehler ignoriert haben, und bei der Ausführung von R3SETUP den Status jeweils von ERROR auf OK (in CENTRDB.R3S) gesetzt haben, um R3SETUP anschließend neu zu starten, wurde das &sap;-System nicht ordnungsgemäß konfiguriert. Das bedeutet, dass Sie nicht via sapgui am System anmelden können, obwohl das System trotzdem gestartet werden kann. Ein Versuch, sich über die alte Linux-sapgui anzumelden, führte zu folgenden Fehlermeldungen: Sat May 5 14:23:14 2001 *** ERROR => no valid userarea given [trgmsgo. 0401] Sat May 5 14:23:22 2001 *** ERROR => ERROR NR 24 occured [trgmsgi. 0410] *** ERROR => Error when generating text environment. [trgmsgi. 0435] *** ERROR => function failed [trgmsgi. 0447] *** ERROR => no socket operation allowed [trxio.c 3363] Speicherzugriffsfehler Dieses Verhalten kommt daher, weil &sap.r3; nun nicht in der Lage ist, eine korrekte Lokalisierung zuzuweisen, und sich daher nicht ordnungsgemäß konfigurieren kann (durch fehlende Einträge in einigen Datenbank-Tabellen). Um sich in &sap; anmelden zu können, müssen Sie folgende Einträge zur Datei DEFAULT.PFL (lesen Sie dazu auch Hinweis 0043288) hinzufügen: abap/set_etct_env_at_new_mode = 0 install/collate/active = 0 rscp/TCP0B = TCP0B Starten Sie nun das &sap;-System neu. Sie sind nun in der Lage, sich anzumelden, obwohl einige länderspezifische Spracheinstellungen fehlerhaft sein könnten. Nachdem Sie diese Ländereinstellungen korrigiert (und die korrekten Lokalisierungen installiert) haben, können Sie diese Einträge wieder aus DEFAULT.PFL löschen und das &sap;-System anschließend neu starten. <errorcode>ORA-00001</errorcode> Dieser Fehler trat nur bei einer Installation von &oracle; 8.1.7 unter FreeBSD 4.5 auf. Dies geschah deshalb, weil sich die &oracle; Datenbank nicht initialisieren konnte und daher abstürzte. Dadurch verblieben Semaphore und Shared-Memory im System. Der nächste Startversuch führte dann zur Meldung ORA-00001. Suchen Sie diese Semaphore mittels ipcs -a und entfernen Sie sie mit ipcrm. <errorcode>ORA-00445</errorcode> (Hintergrundprozess PMON wurde nicht gestartet) Dieser Fehler trat bei &oracle; 8.1.7 auf. Die Meldung erscheint, wenn die Datenbank mit dem normalen startsap-Skript (z.B. startsap_majestix_00), aber als Benutzer prdadm gestartet wird. Dies kann vermieden werden, indem die Datenbank als Benutzer oraprd über svrmgrl gestartet wird: &prompt.user; svrmgrl SVRMGR> connect internal; SVRMGR> startup; SVRMGR> exit <errorcode>ORA-12546</errorcode> (den Listener mit den richtigen Berechtigungen starten) Starten Sie den &oracle;-Listener als Benutzer oraids mit folgendem Befehl: &prompt.root; umask 0; lsnrctl start Ansonsten könnten Sie die Meldung ORA-12546 erhalten, da die Sockets nun nicht die richtigen Berechtigungen aufweisen. Lesen Sie dazu auch den &sap;-Hinweis 0072984. <errorcode>ORA-27102</errorcode> (kein freier Speicher mehr) Dieser Fehler trat auf, wenn versucht wurde, für MAXDSIZ und DFLDSIZ Werte über 1 GB (1024x1024x1024) festzulegen. Zusätzlich führte dies zur Fehlermeldung Linux Error 12: Cannot allocate memory. Fehler im Stadium [DIPGNTAB_IND_IND] bei der Ausführung von R3SETUP Für allgemeine Informationen lesen Sie bitte den &sap;-Hinweis 0130581 # (R3SETUP - Abbruch im Stadium DIPGNTAB). Bei der IDES-spezifischen Installation verwendete der Installationsprozess aus irgendwelchen Gründen nicht den korrekten &sap;-Systemnamen IDS, sondern den (leeren) String "". Dies führte zu einigen kleineren Problemen beim Zugriff auf bestimmte Verzeichnisse, da die Pfade durch SID (in diesem Fall IDS) dynamisch generiert werden. Das heißt anstatt auf /usr/sap/IDS/SYS/... /usr/sap/IDS/DVMGS00 zuzugreifen, wurden folgende Pfade verwendet: /usr/sap//SYS/... /usr/sap/D00 Um dennoch mit der Installation fortfahren zu können, wurden ein Link sowie ein zusätzliches Verzeichnis erzeugt: &prompt.root; pwd /compat/linux/usr/sap &prompt.root; ls -l total 4 drwxr-xr-x 3 idsadm sapsys 512 May 5 11:20 D00 drwxr-x--x 5 idsadm sapsys 512 May 5 11:35 IDS lrwxr-xr-x 1 root sapsys 7 May 5 11:35 SYS -> IDS/SYS drwxrwxr-x 2 idsadm sapsys 512 May 5 13:00 tmp drwxrwxr-x 11 idsadm sapsys 512 May 4 14:20 trans Dieses Verhalten wird auch in den &sap;-Hinweisen 0029227 und 0008401 beschrieben. Bei der Installtion von &sap; 4.6C trat allerdings keines dieser Probleme auf. Fehler im Stadium [RFCRSWBOINI_IND_IND] bei der Ausführung von R3SETUP Bei der Installation von &sap; 4.6C trat dieser Fehler als Folge eines anderen, bereits vorher aufgetretenen Fehlers auf. Daher müssen Sie sich die entsprechenden Protokolldateien durchsehen, und danach das wirkliche (bereits vorher aufgetretene) Problem beheben. Wenn Sie nach dem Durchsehen der Protokolldateien feststellen, dass dieser Fehler wirklich der eigentliche Fehler ist (lesen Sie dazu wiederum die &sap;-Hinweise), können Sie den StATUS des betreffenden Schritts von ERROR auf OK setzen (und zwar in der Datei CENTRDB.R3S). Anschließend starten Sie R3SETUP erneut. Nach der Installation müssen Sie den Report RSWBOINS der Transaktion SE38 ausführen. Lesen Sie den &sap;-Hinweis 0162266, um weitere Informationen zu den Stadien RFCRSWBOINI und RFCRADDBDIF zu erhalten. Fehler im Stadium [RFCRADDBDIF_IND_IND] bei der Ausführung von R3SETUP Hier gilt das Gleiche wie für den letzten Fehler. Stellen Sie durch Überprüfen der Protokolldateien sicher, dass dieser Fehler nicht durch ein früheres Problem verursacht wird. Wenn Sie sicher sind, dass &sap;-Hinweis 0162266 auf Ihr System zutrifft, setzen Sie den STATUS des betreffenden Stadiums von ERROR auf OK (und zwar in der Datei CENTRDB.R3S). Anschließend starten Sie R3SETUP erneut. Nach der Installation müssen Sie den Report RADDBDIF der Transaktion SE38 ausführen. sigaction sig31: File size limit exceeded Dieser Fehler trat beim Start des &sap;-Prozesses disp+work auf. Wird &sap; mit startsap-Skript gestartet, werden Subprozesse gestartet, deren Aufgabe es ist, alle anderen &sap;-Prozesse zu starten. Als Folge davon erkennt startsap dabei auftretende Fehler nicht. Um zu überprüfen, ob die &sap;-Prozesse korrekt gestartet wurden, überprüfen Sie den Prozessstatus mit ps ax | grep SID. Sie erhalten dadurch eine Liste aller &oracle;- und &sap;-Prozesse. Wenn einige Prozesse fehlen, oder Sie sich nicht mit dem &sap;-System verbinden können, überprüfen Sie wiederum die entsprechenden Protokolldateien, die sich unter /usr/sap/SID/DVEBMGSnr/work/ befinden. Die zu durchsuchenden Dateien heißen dev_ms und dev_disp. Wenn &oracle; und &sap; mehr Speicher anfordern als in der Kernelkonfigurationsdatei festgelegt wurde, wird das Signal 31 ausgeliefert. Der Fehler kann behoben werden, indem im Kernel ein größerer Wert verwendet wird. # larger value for 46C production systems: options SHMMAXPGS=393216 # smaller value sufficient for 46B: #options SHMMAXPGS=262144 Der Start von saposcol schlug fehl Das Programm saposcol (Version 4.6D) kann einige Probleme verursachen. Saposcol wird vom &sap;-System verwendet, um Daten über die Systemleistung zu sammeln. Für die Benutzung des &sap;-Systems hingegen ist es es nicht erforderlich. Daher handelt es sich hier auch nur um ein kleineres Problem. Ältere Versionen von saposcol (z.B. 4.6B) funktionieren, sammeln allerdings nicht alle Daten (viele Aufrufe geben, zum Beispiel die CPU-Nutzung, einfach 0 (Null) zurück. Weiterführende Themen Wenn Sie sich fragen, wie die Linux-Binärkompatibilität unter FreeBSD realisiert wurde, sollten Sie diesen Abschnitt lesen. Der Großteil der folgenden Informationen stammt aus einer E-Mail, die von Terry Lambert (tlambert@primenet.com) an die FreeBSD-Chat-Mailingliste (freebsd-chat@FreeBSD.org) geschrieben wurde (Message ID: <199906020108.SAA07001@usr09.primenet.com>). Wie funktioniert es? execution class loader FreeBSD verfügt über eine execution class loader genannte Abstraktion. Dabei handelt es sich um einen Eingriff in den &man.execve.2; Systemaufruf. FreeBSD verfügt über eine Liste von Ladern, anstelle eines einzigen, auf #! zurückgreifenden Laders, um Shell-Interpreter oder Shell-Skripte auszuführen. Historisch gesehen untersuchte der einzige, auf UNIX-Plattformen vorhandene Lader die "magische Zahl" (in der Regel die ersten 4 oder 8 Bytes der Datei), um festzustellen, ob der Binärtyp dem System bekannt war. War dies der Fall, wurde der Binärlader aufgerufen. Wenn es sich nicht um den zum System gehörigen Binärtyp handelte, gab &man.execve.2; einen Fehler zurück, und die Shell versuchte stattdessen, die Datei als Shell-Befehl auszuführen. Dabei wurde als Standardeinstellung was auch immer die aktuelle Shell ist festgelegt. Später wurde ein Hack in &man.sh.1; eingefügt, der die zwei ersten Zeichen untersuchte. Wenn diese :\n entsprachen, wurde stattdessen die &man.csh.1;-Shell aufgerufen (wir glauben, dass dies zuerst von SCO umgesetzt wurde). FreeBSD versucht heute eine Liste von Ladern, unter denen sich ein allgemeiner Lader für Interpreter befindet. Der auszuführende Interpreter wird im ersten, durch Leerzeichen getrennten Feld, der #!-Zeile angegeben. Läßt sich der Interpreter nicht ermitteln, wird auf /bin/sh zurückgegriffen. ELF Für die Linux ABI-Unterstützung erkennt FreeBSD die magische Zahl als ELF-Binärdatei (Zu diesem Zeitpunkt wird nicht zwischen FreeBSD, &solaris;, Linux oder anderen Systemen unterschieden, die über ELF-Binärdateien verfügen.). Solaris Der ELF-Lader sucht nach einer speziellen Kennzeichnung, die aus einem Kommentarabschnitt in der ELF-Datei besteht, und die in SVR4/&solaris; ELF Binärdateien nicht vorhanden ist. Damit Linux-Binärdateien (unter FreeBSD) funktionieren, müssen sie als Linux gekennzeichnet werden, und zwar durch &man.brandelf.1;: &prompt.root; brandelf -t Linux file Nachdem dies geschehen ist, erkennt der ELF-Lader die Linux-Kennzeichnung der Datei. ELF brandelf Wenn der ELF-Lader die Linux-Kennzeichnung sieht, wird ein Zeiger in der proc-Struktur ersetzt. Alle Systemaufrufe werden durch diesen Zeiger indiziert (in einem traditionellen &unix; System wäre das ein sysent[]-Strukturfeld, das die Systemaufrufe enthält). Der Prozess wird weiterhin speziell gekennzeichnet, so dass der Trap-vector im Signal-trampoline-code eine spezielle Behandlung erfährt und das Linux-Kernelmodul verschiedene kleinere Korrekturen vornehmen kann. Der Linux-Systemaufrufvektor enthält neben anderen Dingen eine Liste der sysent[]-Einträge, deren Adressen sich im Kernelmodul befinden. Wenn ein Linux-Programm einen Systemaufruf ausführt, dereferenziert die Trap-Behandlungsroutine den Zeiger auf die Eintrittspunkte für die Systemaufrufe und erhält damit die Linux-Eintrittspunkte und nicht die FreeBSD-Eintrittspunkte. Zusätzlich verändert der Linuxmodus die Systempfade dynamisch; genauso, wie dies die union Option beim Einbinden von Dateisystemen macht (Achtung: nicht unionfs!). Zuerst wird die Datei im Verzeichnis /compat/linux/Originalpfad gesucht, danach, wenn sie dort nicht gefunden wurde, wird sie im FreeBSD-Verzeichnis /Originalpfad gesucht. Dadurch wird sichergestellt, dass Binärdateien, die zur Ausführung andere Binärdateien benötigen, ausgeführt werden können (so dass alle Linux-Werkzeuge unter der ABI laufen). Dies bedeutet auch, dass Linux-Binärdateien FreeBSD-Binärdateien laden und ausführen können, wenn keine passenden Linux-Binärdateien vorhanden sind. Ein in /compat/linux plaziertes &man.uname.1; kann damit Linux-Programmen vorgaukeln, dass sie auf einem Linux-System laufen. Im Endeffekt gibt es einen Linux-Kernel innerhalb des FreeBSD-Kernels. Die Sprungtabellen für Linux- beziehungsweise FreeBSD-Systemaufrufe verweisen allerdings auf dieselben Funktionen, die Kerneldienste wie Dateisystemoperationen, Operationen für den virtuellen Speicher, Signalübermittlung und System V IPC bereitstellen, Der einzige Unterschied ist, dass Binärdateien unter FreeBSD FreeBSD-glue-Funktionen verwenden. Linux-Binärdateien hingegen verwenden die Linux-glue-Funktionen. Die meisten älteren Betriebssysteme hatten ihre eigenen glue-Funktionen: Funktionsadressen in einem globalen, statischen sysent[] Strukturfeld an Stelle von Funktionsadressen, die durch einen dynamisch initialisierten Zeiger aus der proc Struktur, die den Aufruf gemacht hatte, dereferenziert wurden. Welche ist die echte FreeBSD ABI? Das spielt keine Rolle. Grundsätzlich ist der einzige Unterschied (zurzeit ist das so; dies könnte sich in zukünftigen Versionen leicht ändern und wird sich wahrscheinlich auch ändern), dass die FreeBSD-glue-Funktionen statisch in den Kernel gelinkt sind, und dass die Linux-glue-Funktionen statisch gelinkt oder über ein Modul eingebunden werden können. Ja, aber ist das wirkliche eine Emulation? Nein. Es ist eine Implementierung eines ABIs, keine Emulation. Es ist kein Emulator (oder Simulator, um der nächsten Frage zuvorzukommen) beteiligt. Warum wird es manchmal Linux-Emulation genannt? Um es schwerer zu machen, FreeBSD zu verkaufen. Wirklich, das kommt daher, weil dies zu einer Zeit implemtiert wurde, in der es kein anderes Wort (als Emulation) gab, das beschrieb, was vor sich ging. Wenn der Kernel nicht entsprechend konfiguriert wurde oder das Modul geladen wurde, war es falsch zu behaupten, FreeBSD würde Linux-Binärprogramme ausführen. Man benötigte ein Wort, das beschrieb, was da geladen wurde – daher Der Linux-Emulator.
diff --git a/de_DE.ISO8859-1/books/handbook/mail/chapter.sgml b/de_DE.ISO8859-1/books/handbook/mail/chapter.sgml index e78a4d561a..fc7fbb25ce 100644 --- a/de_DE.ISO8859-1/books/handbook/mail/chapter.sgml +++ b/de_DE.ISO8859-1/books/handbook/mail/chapter.sgml @@ -1,1644 +1,1651 @@ Bill Lloyd Ursprüglicher Text von Jim Mock Neugeschrieben von Robert Drehmel Übersetzt von Elektronische Post (E-Mail) Terminologie E-Mail Terminologie Das 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. Übersicht E-Mail elektronische Post Elektronische 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 FreeBSD. Es 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. Nachdem Sie dieses Kapitel gelesen haben, werden Sie wissen: Welche Software-Komponenten beim Senden und Empfangen von elektronischer Post involviert sind. Wo sich grundlegende sendmail Konfigurationsdateien in FreeBSD befinden. 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 eine Einwahlverbindung gehandhabt + werden. + Wie Sie die SMTP-Authentifizierung einrichten. 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 benutzen POP IMAP DNS Fünf größere Teile sind am E-Mail-Austausch beteiligt: Das Benutzerprogramm, der Server-Dämon, DNS, ein POP- oder IMAP-Dämon und natürlich der E-Mail-Server selbst. Das Benutzerprogramm Das 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ämon E-Mail-Server Dämonen sendmail E-Mail-Server Dämonen postfix E-Mail-Server Dämonen qmail E-Mail-Server Dämonen exim Normalerweise ist das sendmail (standardmäßig bei FreeBSD) oder einer der anderen E-Mail-Server Dämonen wie qmail, postfix oder exim. Es gibt andere, aber die eben genannten werden am häufigsten verwendet. 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. Er erlaubt Ihnen nicht, ihn per POP oder IMAP zu kontaktieren um Ihre E-Mails zu lesen. Sie benötigen einen zusätzlichen Dämon dafür. Bedenken Sie, dass ältere Versionen von sendmail schwerwiegende Sicherheitsprobleme haben. Solange Sie jedoch eine aktuelle Version benutzen, sollten Sie keine Probleme haben. Wie immer ist es eine gute Idee, aktuelle Programmversionen zu benutzen. E-Mail und DNS Das Domain Name System (DNS) und sein Dämon named spielen eine große Rolle in der Auslieferung von E-Mails. Um E-Mails von Ihrer Stelle zu einer anderen zu transportieren, sucht der Server-Dämon im DNS nach der Gegenstelle um den Rechner zu ermitteln, der die E-Mails für das Ziel empfangen wird. Genauso funktioniert es, wenn Ihnen E-Mails geschickt werden. Das DNS enthält einen Datenbankeintrag mit dem Rechnernamen und dazugehöriger IP-Adresse sowie einen Eintrag mit Rechnername und dazugehörigem E-Mail-Server. Die IP-Adresse wird in einem A-Eintrag angegeben. Der MX (Mail eXchanger)-Eintrag beschreibt den E-Mail-Server, der Ihre E-Mails empfängt. Wenn Sie keinen MX-Eintrag für Ihren Rechnernamen haben, wird die E-Mail direkt an Ihren Rechner geliefert. E-Mails empfangen E-Mail empfangen Das Empfangen von E-Mails für Ihre Domäne wird von dem E-Mail-Server übernommen. Er sammelt die an Sie gesendeten E-Mails und lagert diese zum Lesen oder Abholen. Damit Sie die gelagerten E-Mails abholen können, müssen Sie mit POP oder IMAP eine Verbindung zum E-Mail-Server herstellen. Wenn Sie die E-Mails direkt auf dem E-Mail-Server lesen möchten, wird kein POP- oder IMAP-Server gebraucht. POP IMAP Wollen Sie einen POP- oder IMAP-Server laufen lassen, gibt es zwei Dinge, die Sie tun müssen: Besorgen Sie sich einen POP- oder IMAP-Dämon aus der Ports-Sammlung und installieren Sie diesen auf Ihrem System. Verändern Sie /etc/inetd.conf um den POP- oder IMAP-Server zu starten. Der E-Mail-Server E-Mail-Server E-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. Christopher Shumway Beigesteuert von <application>sendmail</application>-Konfiguration sendmail &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 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 Mailboxen Mailbox = 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/virtusertable Dateiname Funktion /etc/mail/access Datenbank, in der Zugriffsrechte auf sendmail verwaltet werden /etc/mail/aliases Mailbox Aliase /etc/mail/local-host-names Liste der Rechner für die sendmail E-Mails akzeptiert /etc/mail/mailer.conf Mailer Programmkonfiguration /etc/mail/mailertable Mailer Versand-Zuordnungstabelle /etc/mail/sendmail.cf Hauptkonfigurationsdatei für sendmail /etc/mail/virtusertable Virtuelle Benutzer und Domänen-Tabellen <filename>/etc/mail/access</filename> Die 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 <application>sendmail</application> Zugriffsdatenbank cyberspammer.com 550 We don't accept mail from spammers FREE.STEALTH.MAILER@ 550 We don't accept mail from spammers another.source.of.spam REJECT okay.cyberspammer.com OK 128.32 RELAY In 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. <filename>/etc/mail/aliases</filename> Die 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 Aliases root: 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. <filename>/etc/mail/local-host-names</filename> Das 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.com Wird diese Datei geändert, muss &man.sendmail.8; neu gestartet werden, damit es die Neuerungen einliest. <filename>/etc/mail/sendmail.cf</filename> Die 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. <filename>/etc/mail/virtusertable</filename> Die 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 Zuordnung root@example.com root postmaster@example.com postmaster@noc.example.net @example.com joe In 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. Andrew Boothman Geschrieben von Gregory Neil Shapiro Informationen entnommen aus E-Mails geschrieben von Wechseln des Mailübertragungs-Agenten E-Mail MTA, wechseln Wie 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 MTA Sie 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 <application>sendmail</application> Die 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. FreeBSD 4.5-STABLE vor dem 4.4.2002 (inklusive 4.5-RELEASE und frühere Versionen) Schreiben Sie sendmail_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 sendmail_enable="NONE" in Ihre /etc/rc.conf schreiben. 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 sendmail_enable="NO" in /etc/rc.conf setzen. Mehr Informationen zu sendmails Start-Optionen sind vorhanden auf der &man.rc.sendmail.8; Manual Page. Starten Ihres neuen MTA beim Hochfahren des Systems Abhä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 Versionen Fü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 start ausfü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 stop ausfü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 setzen mta_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 <application>sendmail</application> als Standard-Mailer des Systems Das 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/sendmail Das 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-compat Fertigstellen Sobald 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. Fehlerbeseitigung Hier 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. Warum meldet Sendmail mail loops back to myself? Dies wird in der Sendmail-FAQ wie folgt beantwortet: Ich erhalte "Local configuration error" Meldungen, wie: 553 relay.domain.net config error: mail loops back to myself 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 (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. PPP Wie 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. Es 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 pppmyisp Wenn 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.com Eine 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 POP3-Server installiert ist, werden die Benutzer in der Lage sein, Ihre E-Mails von der Schule, Arbeit oder anderen entfernten Orten zu überprüfen, jedoch werden sie keine E-Mails von außerhalb 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-domains Nach 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.org Jetzt 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 Themen Die folgenden Abschnitte behandeln kompliziertere Themen wie E-Mail-Konfiguration und das Einrichten von E-Mail für Ihre ganze Domäne. Grundlegende Konfiguration Mit 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.XX Wenn 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.org So 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.com Wie 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äne Um 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 ; Mailhost Diese 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 UUCP Die 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/sendmail Keine Panik, das sind nur ein paar hundert Kilobyte. Die Datei README im Verzeichnis cf kann zur grundlegenden Einführung in die m4-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.cf Eine 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.UUCP Die 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.relay Ein 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 Ctrl D 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 . > > ^D E-Mail über Einwahl-Verbindungen Wenn 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. Für gewöhnlich wird von Ihrem ISP POP3 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 fetchmail Falls 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')dnl Im 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. SMTP-Authentifizierung Ein 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: passwd Zur 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=-lsasl Beim Ü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 install sendmail 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')dnl Diese 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 Zeilen in /etc/rc.conf ein: sasl_pwcheck_enable="YES" sasl_pwcheck_program="/usr/local/sbin/pwcheck" Weitere Information erhalten Sie im WWW auf der Webseite von sendmail. diff --git a/de_DE.ISO8859-1/books/handbook/preface/preface.sgml b/de_DE.ISO8859-1/books/handbook/preface/preface.sgml index a4e96d06a2..7e050951a1 100644 --- a/de_DE.ISO8859-1/books/handbook/preface/preface.sgml +++ b/de_DE.ISO8859-1/books/handbook/preface/preface.sgml @@ -1,559 +1,559 @@ Vorwort Über dieses Buch Der erste Teil dieses Buchs führt FreeBSD-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 FreeBSD-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 seit der ersten Auflage Die zweite Auflage ist das Ergebnis der engagierten Arbeit der Mitglieder des FreeBSD 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, System Administration und Anhänge unterteilt. (FreeBSD Installation) 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 (FreeBSDs 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 FreeBSD 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 (). Gliederung Dieses Buch ist in drei Abschnitte unterteilt. Der erste Abschnitt, Erste Schritte, behandelt die Installation und die Grundlagen von FreeBSD. Dieser Abschnitt sollte in der vorgegebenen Reihenfolge durchgearbeitet werden, schon Bekanntes darf aber übersprungen werden. Der zweite Abschnitt, System Administration behandelt weiterführende Themen für erfahrene Benutzer. Jeder Abschnitt beginnt mit einer kurzen Übersicht, die das Thema des Abschnitts und das nötige Vorwissen erläutert. Die Übersichten sollen dem Leser helfen, interessante Kapitel zu finden und das Stöbern im Handbuch erleichtern. Der dritte Abschnitt enthält Anhänge und Verweise auf weitere Informationen. , Einführung Dieses Kapitel macht Einsteiger mit FreeBSD vertraut. Es behandelt die Geschichte, die Ziele und das Entwicklungsmodell des FreeBSD Projekts. , Installation Beschreibt den Ablauf der Installation. Spezielle Installationsmethoden, wie die Installation mit einer seriellen Konsole, werden ebenfalls behandelt. , Grundlagen des &unix; Betriebssystems Erläutert die elementaren Kommandos und Funktionen von FreeBSD. Wenn Sie schon mit Linux oder einem anderen &unix; System vertraut sind, können Sie dieses Kapitel überspringen. , Installieren von Anwendungen Zeigt wie mit der innovativen Ports-Sammlung oder mit Paketen Software von Fremdherstellern installiert wird. , Das X Window System Beschreibt das X Window System und geht speziell auf &xfree86; unter FreeBSD ein. Weiterhin werden grafische Benutzeroberflächen wie KDE und GNOME behandelt. , Konfiguration und Tuning Beschreibt die Einstellungen, die ein Systemadministrator vornehmen kann, um die Leistungsfähigkeit eines FreeBSD Systems zu verbessern. In diesem Kapitel werden auch verschiedene Konfigurationsdateien besprochen. , FreeBSDs Bootvorgang Erklärt den Bootprozess von FreeBSD und beschreibt die Optionen, mit denen sich der Bootprozess beeinflussen lässt. , Benutzer und grundlegende Account-Verwaltung Beschreibt, 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. , Konfiguration des FreeBSD Kernels Erklärt, warum Sie einen angepassten Kernel erzeugen sollten und gibt ausführliche Anweisungen wie Sie einen angepassten Kernel konfigurieren, bauen und installieren. , Sicherheit Beschreibt die Werkzeuge mit denen Sie Ihr FreeBSD System absichern. Unter Anderem werden Kerberos, IPsec, OpenSSH und Firewalls besprochen. , Drucken Beschreibt, wie Sie Drucker unter FreeBSD verwalten. Diskutiert werden Deckblätter, das Einrichten eines Druckers und ein Abrechnungssystem für ausgedruckte Seiten. , Speichermedien Erläutert den Umgang mit Speichermedien und Dateisystemen. Behandelt werden Plattenlaufwerke, RAID-Systeme, optische Medien, Bandlaufwerke, RAM-Laufwerke und verteilte Dateisysteme. , Vinum Beschreibt den Vinum Volume Manager, der virtuelle Laufwerke, RAID-0, RAID-1 und RAID-5 auf Software-Ebene zur Verfügung stellt. , Lokalisierung Zeigt wie Sie FreeBSD mit anderen Sprachen als Englisch einsetzen. Es wird sowohl die Lokalisierung auf der System-Ebene wie auch auf der Anwendungs-Ebene betrachtet. , Desktop-Anwendungen Enthält eine Aufstellung verbreiteter Anwendungen wie Browser, Büroanwendungen und Office-Pakete und beschreibt wie diese Anwendungen installiert werden. , Multimedia Erklärt, wie Sie auf Ihrem System Musik und Videos abspielen können. Beispielhaft werden auch Anwendungen aus dem Multimedia-Bereich beleuchtet. , Serielle Datenübertragung Erläutert, wie Sie Terminals und Modems an Ihr FreeBSD System anschließen und sich so ein- und auswählen können. , PPP und SLIP Erklärt wie Sie mit PPP, SLIP oder PPP über Ethernet ein FreeBSD System mit einem entfernten System verbinden. , Weiterführende Netzwerkthemen Behandelt viele Netz-Themen zum Beispiel wie eine Internet-Verbindung anderen Rechnern im LAN zugänglich gemacht wird, wie Dateisysteme über das Netz genutzt werden, wie Account-Informationen mit NIS zugänglich gemacht werden oder wie ein Nameserver eingerichtet wird. , Electronic Mail Erläutert die verschiedenen Bestandteile eines E-Mail Servers und zeigt einfache Konfigurationen für sendmail, dem meist genutzten E-Mail-Server. , Das Neueste und Beste Erklärt die Unterschiede zwischen FreeBSD-STABLE, FreeBSD-CURRENT und FreeBSD 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. , Linux-Binärkompatibilität Beschreibt die binäre Kompatibilität zu Linux. Weiterhin werden ausführliche Installationsanleitungen für &oracle;, &sap.r3; und Mathematica gegeben. , Bezugsquellen für FreeBSD Enthält eine Aufstellung der Quellen von denen Sie FreeBSD beziehen können: CD-ROM, DVD sowie Internet-Sites. , Bibliografie Dieses 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 Internet Enthält eine Aufstellung der Foren, die FreeBSD Benutzern für Fragen und Diskussionen zur Verfügung stehen. , PGP Schlüssel Enthält PGP-Fingerabdrücke von etlichen FreeBSD Entwicklern. Konventionen in diesem Buch Damit der Text einheitlich erscheint und leicht zu lesen ist, werden im ganzen Buch die nachstehenden Konventionen beachtet: Typographie Kursiv Für Dateinamen, URLs, betonte Teile eines Satzes und das erste Vorkommen eines Fachbegriffs wird ein kursiver Zeichensatz benutzt. Fixschrift Fehlermeldungen, Kommandos, Umgebungsvariablen, Namen von Ports, Hostnamen, Benutzernamen, Gruppennamen, Gerätenamen, Variablen und Code-Ausschnitte werden in einer Fixschrift dargestellt. Fett Fett kennzeichnet Anwendungen, Kommandozeilen und Tastensymbole. Benutzereingaben Tasten werden fett dargestellt, um sie von dem umgebenden Text abzuheben. Tasten, die gleichzeitig gedrückt - werden müssen, werden durch ein `+' zwischen + werden müssen, werden durch ein + zwischen den einzelnen Tasten dargestellt: Ctrl Alt Del Tasten, die nacheinander gedrückt werden müssen, sind durch Kommas getrennt: Ctrl X , Ctrl S Das 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. Beispiele Beispiele, 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 FreeBSD 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/fd0 Beispiele, 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; top Danksagung Dieses 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 FreeBSD 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). diff --git a/de_DE.ISO8859-1/books/handbook/security/chapter.sgml b/de_DE.ISO8859-1/books/handbook/security/chapter.sgml index c5c0836f33..8778603784 100644 --- a/de_DE.ISO8859-1/books/handbook/security/chapter.sgml +++ b/de_DE.ISO8859-1/books/handbook/security/chapter.sgml @@ -1,4887 +1,5641 @@ Matthew Dillon Viel von diesem Kapitel stammt aus der security(7) Manualpage von Martin Heinen Übersetzt von Sicherheit Sicherheit Übersicht Dieses 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. FreeBSD 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 FreeBSD bezogene Sicherheitsaspekte kennen. Die verschiedenen Verschlüsselungsmechanismen von FreeBSD, wie DES oder MD5, kennen. Wissen, wie Sie ein Einmalpasswörter zur Authentifizierung verwenden. Wissen, wie Sie Kerberos, ein weiteres Authentifizierungssystem, einrichten. Firewalls mit IPFW erstellen können. Wissen, wie Sie IPsec konfigurieren und ein VPN zwischen FreeBSD/&windows; Systemen einrichten, OpenSSH, FreeBSDs Implementierung von SSH, konfigurieren und benutzen können. Wie sie mithilfe des TrustedBSD-MAC-Frameworks Zugrifsskontrollen konfigurieren. Bevor Sie dieses Kapitel lesen, sollten Sie Grundlegende Konzepte von FreeBSD und dem Internet verstehen. Einführung Sicherheit 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 Angriffe Denial-of-Service (DoS) Sicherheit DoS Angriffe Denial-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. Sicherheit kompromittierte Accounts Kompromittierte 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. Sicherheit Hintertüren Es 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 FreeBSD Sicherheit FreeBSD absichern Kommandos und Protokolle In diesem Abschnitt wird fett verwendet, um Kommandos oder Anwendungen zu kennzeichnen. Zum Beispiel wird SSH so gekennzeichnet, da es sowohl ein Protokoll wie auch ein Kommando ist. Die folgenden Abschnitte behandeln die im letzten Abschnitt erwähnten Methoden Ihr FreeBSD-System zu sichern. Absichern von <username>root</username> und Accounts su Zuallererst, 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. wheel Natü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 wie foobar:R9DT/Fa1/LV9U:1000:1000::0:0:Foo Bar:/home/foobar:/usr/local/bin/tcsh sollte wie folgt abgeändert werden: foobar:*:1000:1000::0:0:Foo Bar:/home/foobar:/usr/local/bin/tcsh Da 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. Kerberos Mit 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 <username>root</username> laufenden Servern und SUID/SGID Programmen ntalk comsat finger Sandkästen sshd telnetd rshd rlogind Ein 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 FreeBSD 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. sendmail Einige 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 Accounts Accounts 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-Datei Der 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 Dateisystemen Wenn 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 FreeBSD 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. sysctl Auch 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 Dateien Sie 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. Paranoia Es 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 Angriffe Denial-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 sendmail MaxDaemonChildren 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 dieses sendmail 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 tcpwrapper. Diese Funktion der tcpwrapper 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 FreeBSD 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_BANDLIM Eine 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 FreeBSD-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 SSH ssh Kerberos Es 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. Bill Swingle Teile umgeschrieben und aktualisiert von DES, MD5, und <function>crypt()</function> Sicherheit crypt() crypt() DES MD5 Jedem 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 FreeBSD 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üsselungsmethode Vor FreeBSD 4.4 war libcrypt.a ein symbolischer Link, der auf die Library zeigte, die die Verschlüsselungsroutinen enthielt. Seit FreeBSD 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 FreeBSD die MD5-Hash Funktion. Sie können leicht herausfinden, welche Verschlüsselungsmethode von FreeBSD 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 $2$ 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örter Einmalpasswörter Sicherheit Einmalpasswörter S/Key ist ein Einmalpasswort System, das auf einer nicht umkehrbaren Hash-Funktion basiert. Aus Kompatibilitätsgründen benutzt FreeBSD MD4-Hashes, andere Systeme benutzen MD5 und DES-MAC. S/Key ist seit Version 1.1.5 Teil des FreeBSD Basissystems und wird auch auf einer wachsenden Anzahl anderer Systeme benutzt. S/Key ist eine geschützte Warenmarke von Bell Communications Research, Inc. Ab der FreeBSD Version 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örter Unter &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 andere Wert ist der Iterationszähler, der eine Zahl zwischen 1 und 100 ist. 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 Verbindung Benutzen 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 SOFT Mit 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 Verbindung Um 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 GORE Mit 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 keyinit key 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 GORE Mit 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 Einmalpasswortes Nachdem 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-DOS Windows MacOS Jetzt 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 HAAG Mit 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 CHAT Mit 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örtern Manchmal 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 BILK Mit 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 PHI Mit 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örtern Mit 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 FreeBSD 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 ttyd0 Die 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 FreeBSD 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.0 Diese 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. Mark Murray Beigesteuert von Mark Dapoz Basiert auf einem Beitrag von Kerberos Kerberos Kerberos 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 FreeBSD konfigurieren. Für eine komplette Beschreibung des Systems, sollten Sie sich auf jeden Fall die entsprechenden Manualpage ansehen. Installation von Kerberos MIT Kerberos Installation Kerberos ist eine optionale Komponente von FreeBSD. Am leichtesten installieren Sie die Software, wenn Sie bei der ersten Installation von FreeBSD 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 FreeBSD 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 Datenbank Die 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.realms Wenn 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.gov Die 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.EDU Die 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_init Realm 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; kstash Enter 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 Prinzipals Fü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: passwd Instance: 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: rcmd Instance: 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 verlassen Erstellen der Server-Datei Wir 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 grunt Enter 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 srvtab Wenn 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 srvtab Füllen der Datenbank Wir 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: jane Instance: <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 verlassen Testen Zuerst 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.COM Versuchen 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 <command>su</command> Privilegien Mit 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: jane Instance: 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 verlassen Versuchen 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.COM Jetzt 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.COM Weitere Kommandos In 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.COM Das gilt auch für die .klogin-Datei im Heimatverzeichnis eines Benutzers: &prompt.user; cat ~/.klogin jane@EXAMPLE.COM jack@EXAMPLE.COM Die 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 1995 Im 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 1995 + + + + + Tillman + Hodgson + Beigetragen von + + + + + Mark + Murray + Beruht auf einem Beitrag von + + + + + <application>Kerberos5</application> + + Das 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. + + + + Geschichte + + Das 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 <acronym>KDC</acronym> einrichten + + Kerberos 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 + } +[domain_realm] + .example.org = EXAMPLE.ORG + + Diese 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.ORG + + Die 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.ORG. + + + 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: xxxxxxxx + + Jetzt 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.ORG + Aug 27 15:37:58 Aug 28 01:37:58 krbtgt/EXAMPLE.ORG@EXAMPLE.ORG + +v4-ticket file: /tmp/tkt500 +k5list: No ticket file (tf_util) + + + + <application>Kerberos</application>-Dienste + einrichten + + Alle 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> exit + + Das 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> exit + + Anschließ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 user + + Ausschlaggebend 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. + + + + <application>Kerberos</application>-Clients + einrichten + + Ein 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. + + + + <filename>.k5login</filename> und + <filename>.k5users</filename> + + Normalerweise 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.org + + Die 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 Fehlersuche + + + + Wenn 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? + Ist die Zeitdifferenz zu groß (normalerweise + größer 5 Minuten), dann schlägt + die Authentifizierung fehl. + + + + 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. + + + + Die Zeit innerhalb des Realms muss synchronisiert + sein. Für die Synchronisation setzen Sie am + besten NTP (siehe + ) ein. + + + + 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 <acronym>MIT</acronym>-Port + + Der 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 + <application>Kerberos</application> + + + <application>Kerberos</application> muss ganzheitlich + verwendet werden + + Jeder ü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 + telnet Kerberos + zu benutzen, dagegen aber POP3-Zugriff + auf einen Mail-Server zu erlauben, da POP3 + Passwörter im Klartext versendet. + + + + <application>Kerberos</application> ist für + Einbenutzer-Systeme gedacht + + In 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 <acronym>KDC</acronym> ist verwundbar + + Das 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 + <application>Kerberos</application> + + Mit 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. + + + + Gary Palmer Beigetragen von Alex Nash Firewalls Firewall Sicherheit Firewalls Firewalls sind sehr wichtig für Leute, die mit dem Internet verbunden sind. Weiterhin halten sie Einzug in private Netzwerke, um dort die Sicherheit zu verbessern. Dieser Abschnitt erklärt, was Firewalls sind, wie sie benutzt werden und wie man die Möglichkeiten von FreeBSD benutzen kann, um eine Firewall zu implementieren. Es wird oft gedacht, dass eine Firewall zwischen dem internen Netzwerk und dem weiten, schlechten Internet alle Sicherheitsprobleme löst. Eine Firewall kann die Sicherheit erhöhen, doch eine schlecht aufgesetzte Firewall ist ein größeres Sicherheitsrisiko als gar keine Firewall. Eine Firewall ist nur eine weitere Sicherheitsschicht, sie verhindert aber nicht, dass ein wirklich entschlossener Cracker in Ihr internes Netz eindringt. Wenn Sie Ihre interne Sicherheit vernachlässigen, weil Sie Ihre Firewall für undurchdringlich halten, machen Sie den Crackern die Arbeit leichter. Was ist eine Firewall? Auf dem Internet sind momentan zwei Arten von Firewalls gebräuchlich. Die erste Art ist ein Paketfilter, in dem ein Kernel auf einer Maschine mit mehreren Netzwerkkarten auf Grund von Regeln entscheidet, ob er ein Paket weiterleitet oder nicht. Der zweite Typ sind Proxy-Server, die auf Dæmonen angewiesen sind. Die Dæmonen authentifizieren Benutzer und leiten Pakete weiter, das heißt sie können auf Maschinen mit mehreren Netzwerkverbindungen laufen, auf denen das Weiterleiten von Paketen durch den Kernel ausgeschaltet ist. Manchmal werden beide Arten einer Firewall kombiniert und es ist nur einer besonderen Maschine, die Bastion Host genannt wird, erlaubt, Pakete in das interne Netzwerk über einen Paketfilter zu schicken. Auf dem Bastion Host laufen Proxy-Dienste, die im Allgemeinen sicherer als normale Authentifizierungsmechanismen sind. FreeBSD besitzt einen Kernel-Paketfilter (IPFW), der im Rest dieses Abschnitts behandelt wird. Proxy-Server können mithilfe Software Dritter auf FreeBSD eingerichtet werden. Da es so viele unterschiedliche Proxy-Server gibt, können wir sie nicht in diesem Abschnitt besprechen. Paketfilter Ein Router ist eine Maschine, die Pakete zwischen zwei oder mehr Netzwerken weiterleitet. Ein Paketfilter ist ein spezieller Router, der mit einem Regelwerk entscheidet, ob er Pakete weiterleitet. Um den Filter zu aktivieren, müssen Sie zuerst die Regeln definieren, die festlegen, ob ein Paket weitergeleitet wird oder nicht. Um zu entscheiden, ob ein Paket weitergeleitet wird, sucht die Firewall eine Regel, die auf den Inhalt des Paketheaders passt. Wenn eine passende Regel gefunden wurde, wird die Aktion der Regel ausgeführt. Die Aktion kann das Paket blockieren, weiterleiten oder auch dem Sender eine ICMP-Nachricht schicken. Die Regeln werden der Reihenfolge nach durchsucht und nur die erste passende Regel wird angewandt. Daher wird auch von einer Regelkette gesprochen. Die Kriterien, nach denen Sie ein Paket spezifizieren können, hängen von der eingesetzten Software ab. Typischerweise können Sie Pakete nach der Quell IP-Adresse, der Ziel IP-Adresse, dem Quellport, dem Zielport (bei Protokollen, die diese unterscheiden) oder dem Pakettyp (UDP, TCP, ICMP) unterscheiden. Proxy-Server Auf Proxy-Servern werden die normalen Systemdienste, wie telnetd oder ftpd, durch besondere Server ersetzt. Diese Server werden Proxy-Server genannt, da sie normalerweise nur weitergehende Verbindungen erlauben (proxy engl. für Stellvertreter). Zum Beispiel können Sie auf Ihrer Firewall einen Proxy-Server für telnet laufen lassen, der Verbindungen aus dem Internet erlaubt. Ein Authentifizierungsmechanismus auf dem Proxy-Server erlaubt dann den Zugriff auf Ihr internes Netzwerk. Für den umgekehrten Weg können Sie natürlich auch Proxy-Server einsetzen. Proxy-Server sind in aller Regel sicherer als normale Server und bieten oft eine Reihe von Authentifizierungsmechanismen. Dazu gehören Einmalpasswort Systeme, bei denen das zum Anmelden verwendete Passwort sofort ungültig wird und nicht zu einer weiteren Anmeldung benutzt werden kann, auch wenn es abgehört wurde. Da Proxy-Server den Benutzern keinen Zugang zu dem System geben, wird es für einen Angreifer sehr schwer, Hintertüren zur Umgehung Ihres Sicherheitssystems zu installieren. Mit Proxy-Servern lassen sich die Zugriffe meist noch weiter beschränken. Der Zugriff kann auf bestimmte Rechner eingeschränkt werden und oft ist es möglich, festzulegen, welcher Benutzer mit welcher Zielmaschine kommunizieren darf. Welche Möglichkeiten Sie haben, hängt stark von der Proxy-Software ab, die Sie einsetzen. Was kann ich mit IPFW machen? ipfw IPFW, das von FreeBSD zur Verfügung gestellt wird, ist ein Paketfilter und ein Accounting-System, das im Kernel läuft und mit &man.ipfw.8; ein Werkzeug im Userland zur Verfügung stellt. Beide Teile zusammen erlauben es Ihnen, die Regeln für Routing Entscheidungen im Kernel zu definieren oder abzufragen. In IPFW gibt es zwei zusammenhängende Teile: Die Firewall filtert Pakete und das IP-Accounting-Modul überwacht mit einem Regelwerk, ähnlich dem der Firewall, die Nutzung Ihres Routers. Damit können Sie zum Beispiel sehen, wie viel Verkehr auf Ihrem Router von einer bestimmten Maschine kommt oder wie viel WWW (World Wide Web) Verkehr durch Ihren Router geht. Durch das Design von IPFW können Sie IPFW auch auf Maschinen, die keine Router sind, einsetzen und einen Paketfilter für eingehende und ausgehende Verbindungen konfigurieren. Dies ist ein Spezialfall der normalen Verwendung von IPFW und daher werden dieselben Kommandos und Techniken benutzt. Aktivieren von IPFW ipfw aktivieren Der größte Teil des IPFW-Systems befindet sich im Kernel, daher müssen Sie die Konfigurationsdatei des Kernels editieren und anschließend den Kernel neu übersetzen. Das Kapitel Konfiguration des FreeBSD Kernels beschreibt, wie Sie dazu vorzugehen haben. In der Voreinstellung verbietet IPFW alle Verbindungen. Sie haben sich ausgesperrt, wenn Sie den Kernel mit Firewall-Unterstützung starten und keine eigenen Regeln, die einen Zugriff erlauben, definiert haben. Zum ersten Überprüfen der Firewall-Funktion können Sie die Firewall öffnen, indem Sie firewall_type=open in /etc/rc.conf eintragen und danach, wenn alles funktioniert hat, die Regeln in /etc/rc.firewall anpassen. Um zu vermeiden, dass Sie sich aus Versehen aussperren, konfigurieren Sie die Firewall nicht über eine SSH-Verbindung sondern an der Konsole. Sie können auch in der Voreinstellung alle Verbindungen zulassen, indem Sie die Option IPFIREWALL_DEFAULT_TO_ACCEPT in die Kernelkonfiguration aufnehmen. Momentan gibt es vier Optionen in der Kernelkonfiguration, die IPFW betreffen: options IPFIREWALL Fügt den Paketfilter-Code in den Kernel ein. options IPFIREWALL_VERBOSE Aktiviert das Loggen von Paketen mit &man.syslogd.8;. Ohne diese Option werden keine Pakete geloggt, auch wenn Sie in den Filterregeln das Loggen angeben. options IPFIREWALL_VERBOSE_LIMIT=10 Begrenzt die Anzahl der über &man.syslogd.8; geschriebenen Einträge. Die Option ist in Umgebungen mit hoher Aktivität nützlich, in denen Sie die Firewall Aktivitäten loggen möchten, aber einem Angreifer nicht die Möglichkeit eines Denial-of-Service Angriffs durch das Überlasten von syslog geben wollen. Erreicht eine Regel der Regelkette die angegebene Grenze, so wird für diesen Eintrag das Loggen abgestellt. Um das Loggen von Paketen wieder zu aktivieren, müssen Sie den Zähler mit &man.ipfw.8; zurücksetzen: &prompt.root; ipfw zero 4500 Hier ist 4500 die Nummer der Regel in der Regelkette, für die Sie das Log weiterführen möchten. options IPFIREWALL_DEFAULT_TO_ACCEPT Ändert die Voreinstellung der Firewall, sodass alle Verbindungen erlaubt anstatt verboten sind. Diese Einstellung vermeidet, dass Sie sich aussperren, wenn Sie einen Kernel mit IPFIREWALL und ohne eigene Regeln starten. Wenn Sie &man.ipfw.8; wie einen Filter zum Lösen spezieller Probleme bei deren Auftreten verwenden, kann diese Option sehr nützlich sein. Diese Einstellung öffnet die Firewall und verändert ihre Arbeitsweise. Gehen Sie daher sehr vorsichtig mit ihr um. Frühere Versionen von FreeBSD stellten die Option IPFIREWALL_ACCT zur Verfügung. Die Option ist mittlerweile überholt, da der Firewall Code automatisch Accounting Möglichkeiten bereitstellt. Konfiguration von IPFW ipfw Konfiguration Mit &man.ipfw.8; konfigurieren Sie die IPFW-Software. Die Syntax dieses Kommandos sieht ziemlich kompliziert aus, doch wenn Sie einmal den Aufbau der Kommandos verstanden haben, ist es sehr einfach. Das Kommando unterstützt vier verschiedene Operationen: Hinzufügen/Löschen, Anzeigen und Zurücksetzen von Regeln, sowie das Zurücksetzen von Paketzählern. Die Operationen Hinzufügen/Löschen werden genutzt, um die Regeln, nach denen Pakete akzeptiert, blockiert oder geloggt werden, zu erstellen. Die Operation Anzeigen zeigt die Regelkette und die Paketzähler an. Die Operation Zurücksetzen löscht alle Regeln der Regelkette. Mit der letzten Operation können Sie ein oder mehrere Paketzähler auf den Wert Null zurücksetzen. Ändern der IPFW-Regeln Die Syntax für diese Operation lautet: ipfw -N Kommando index Aktion log Protokoll Adressen Optionen Dieser Aufruf unterstützt eine Option: -N Löst Adressen und Namen von Diensten in der Ausgabe auf. Kommando kann auf die kürzeste eindeutige Länge reduziert werden. Gültig sind die Werte: add Fügt einen Eintrag in die Firewall/Accounting Regelkette ein. delete Löscht einen Eintrag in der Firewall/Accounting Regelkette. Frühere Versionen von IPFW verfügten über getrennte Firewall- und Accounting-Einträge in der Regelkette. In der jetzigen Version steht das Accounting für jeden Eintrag in der Firewall-Regelkette zur Verfügung. Wenn ein Wert für index angegeben ist, so wird die Regel an entsprechender Stelle in die Regelkette eingefügt. Ansonsten wird die Regel an das Ende der Kette gestellt, wobei der Index um 100 größer ist als der Index der letzten Regel (die voreingestellte letzte Regel mit der Nummer 65535 wird in diesem Verfahren nicht berücksichtigt). Wenn der Kernel mit IPFIREWALL_VERBOSE erstellt wurde, gibt die Regel mit der Option log Meldungen auf der Systemkonsole aus. Gültige Werte für Aktion sind: reject Blockiert das Paket und schickt dem Sender die ICMP-Nachricht host or port unreachable. allow Leitet das Paket normal weiter. Zulässige Aliase sind pass, permit und accept. deny Blockiert das Paket und benachrichtigt den Sender nicht mit einer ICMP-Nachricht. Dem Sender kommt es so vor, als hätte das Paket sein Ziel nie erreicht. count Erhöht den Paketzähler für diese Regel, trifft aber keine Entscheidung wie mit dem Paket zu verfahren ist, das heißt die nächste Regel der Kette wird auf das Paket angewendet. Es ist möglich, die kürzeste eindeutige Form der Aktion anzugeben. Für Protokoll können die folgenden Werte angegeben werden: all Trifft auf jedes IP-Paket zu. icmp Passt auf jedes ICMP-Paket. tcp Passt auf jedes TCP-Paket. udp Trifft auf jedes UDP-Paket zu. Die Syntax für Adresse lautet: from Adresse/MaskePort to Adresse/MaskePort via Interface Port können Sie nur angeben, wenn das Protokoll auch Ports unterstützt (UDP und TCP). ist optional und gibt die IP-Adresse, den Domainnamen eines lokalen Interfaces oder den Namen des Interfaces (z.B. ed0) an und trifft nur auf Pakete zu, die durch dieses Interface gehen. Die Nummern der Interfaces können mit einem Platzhalter angegeben werden, ppp* trifft auf alle Kernel-PPP Interfaces zu. Adresse/Maske können Sie wie folgt angeben: Adresse oder Adresse/Bitmaske oder Adresse:Maskenmuster Anstelle einer IP-Adresse können Sie einen gültigen Hostnamen angeben. ist eine dezimale Zahl, die angibt, wie viele Bits in der Adressmaske gesetzt werden sollen. Die Angabe 192.216.222.1/24 erstellt eine Maske, die auf jede Adresse des Klasse C Subnetzes 192.216.222 zutrifft. Das wird mit der gegebenen IP-Adresse logisch UND verknüpft. Das Schlüsselwort any trifft auf jede IP-Adresse zu. Die Portnummern werden wie folgt angegeben: Port,Port,Port Dies gibt entweder einen Port oder eine Liste von Ports an. Port-Port Gibt einen Portbereich an. Sie können einen einzelnen Bereich mit einer Liste kombinieren, müssen aber den Bereich immer zuerst angeben. Die verfügbaren Optionen sind: frag Trifft auf Pakete zu, die nicht das erste Fragment eines Datagrams sind. in Trifft auf eingehende Pakete zu. out Trifft auf ausgehende Pakete zu. ipoptions spec Trifft auf alle IP-Pakete zu, deren Header die in spec angegebenen, durch Kommata separierte, Optionen enthalten. Die unterstützten IP-Optionen sind: ssrr (strict source route), lsrr (loose source route), rr (record packet route), und ts (time stamp). Ein führendes ! trifft auf alle Pakete zu, die diese Option nicht gesetzt haben. established Trifft auf alle Pakete zu, die zu einer schon bestehenden TCP-Verbindung gehören, das heißt das RST- oder ACK-Bit ist gesetzt. Sie können den Durchsatz der Firewall verbessern, wenn Sie die established Regeln soweit wie möglich an den Anfang der Regelkette stellen. setup Passt auf alle Pakete, die versuchen eine TCP-Verbindung aufzubauen, das heißt das SYN-Bit ist gesetzt und das ACK-Bit ist nicht gesetzt. tcpflags flags Trifft auf alle Pakete zu, die im TCP-Header eine der durch Kommata getrennten Option gesetzt haben. Die gültigen Optionen sind: fin, syn, rst, psh, ack und urg. Mit einem führenden ! kann die Abwesenheit einer Option angegeben werden. icmptypes types Trifft auf ICMP-Pakete vom Typ types. Hier kann eine Kommata separierte Aufzählung von Bereichen oder einzelnen Typen angegeben werden. Gebräuchliche Typen sind: 0 echo reply (ping reply), 3 destination unreachable, 5 redirect, 8 echo request (ping request) und 11 time exceeded, das die Überschreitung der TTL angibt und zum Beispiel von &man.traceroute.8; genutzt wird. Anzeigen der IPFW-Regeln Die Syntax für dieses Kommando lautet: ipfw -a -c -d -e -t -N -S list Sieben Optionen sind für diese Form gültig: -a Zeigt die Paketzähler zu den Regeln an. Diese Option ist die einzige Möglichkeit, die Zähler zu sehen. -c Zeigt die Regeln in einer kompakten Darstellung an. -d Zeigt zusätzlich zu den statischen Regeln die dynamischen Regeln an. -e Zeigt auch abgelaufene dynamische Regeln an, wenn die Option zusammen mit angegeben wird. -t Zeigt die Zeit, zu der die Regel zuletzt aktiviert wurde. Die Syntax dieser Ausgabe ist nicht kompatibel mit der Eingabesyntax von &man.ipfw.8;. -N Versucht Adressen und Namen von Diensten aufzulösen. -S Zeigt den Regelsatz an, zu dem die Regel gehört. Inaktive Regeln werden ohne diesen Schalter nicht angezeigt. Zurücksetzen der IPFW-Regeln Die Regeln setzen Sie wie folgt zurück: ipfw flush Damit werden alle Regeln der Regelkette, mit Ausnahme der Vorgaberegel 65535 gelöscht. Seien Sie vorsichtig, wenn Sie die Regeln zurücksetzen. Die Vorgabe für die Regel 65535 ist es, alle Pakete zu blockieren, das heißt, das System ist solange vom Netzwerk abgeschnitten, bis wieder neue Regeln in die Kette eingefügt werden. Zurücksetzen der Paketzähler Um einen oder mehrere Paketzähler zurückzusetzen, verwenden Sie folgende Syntax: ipfw zero index Wenn Sie das Argument index nicht angeben, werden alle Paketzähler zurückgesetzt. Wenn Sie das Argument angeben, wird nur der Zähler der angegebenen Regel zurückgesetzt. Beispiel für <application>ipfw</application> Kommandozeilen Das folgende Kommando blockiert alle Pakete, die von dem Host evil.crackers.org auf den Telnet-Port von nice.people.org gehen: &prompt.root; ipfw add deny tcp from evil.crackers.org to nice.people.org 23 Das nächste Beispiel verbietet jeden IP-Verkehr von dem ganzen crackers.org Klasse C Netzwerk zu der Maschine nice.people.org: &prompt.root; ipfw add deny log tcp from evil.crackers.org/24 to nice.people.org Wenn Sie X-Sitzungen zu Ihrem internen Netzwerk, einem Subnetz eines C Klasse Netzwerkes, verbieten wollen, wenden Sie das folgende Kommando an: &prompt.root; ipfw add deny tcp from any to my.org/28 6000 setup Um die Accounting Einträge zu sehen: &prompt.root; ipfw -a list oder kürzer &prompt.root; ipfw -a l Den Zeitpunkt, an dem eine Regel das letzte Mal aktiviert wurde, sehen Sie mit: &prompt.root; ipfw -at l Aufbau einer Firewall mit Paketfiltern Beachten Sie bitte, dass die folgenden Vorschläge wirklich nur Vorschläge sind. Die Anforderungen jeder Firewall sind verschieden und wir können Ihnen wirklich nicht sagen, wie Sie Ihre maßgeschneiderte Firewall einrichten müssen. Wenn Sie Ihre Firewall außerhalb eines kontrollierten Testumfelds aufbauen, empfehlen wir Ihnen dringend, das Loggen der Regeln im Kernel zu aktivieren und Regeln zu verwenden, die loggen. Das macht es Ihnen leichter, Fehler zu finden und diese ohne große Unterbrechungen zu beheben. Auch nachdem Sie die Firewall aufgesetzt haben, empfehlen wir Ihnen, die `deny'-Regeln zu loggen. Dies macht es leichter, Angriffen nachzugehen und das Regelwerk Ihrer Firewall zu ändern, wenn sich die Anforderungen einmal ändern. Wenn Sie Pakete der accept-Regel loggen, denken Sie bitte daran, dass Sie leicht sehr große Datenmengen erzeugen können, da jedes durchgelassene Paket einen Eintrag im Log generiert. Es kann vorkommen, das große FTP oder HTTP Übertragungen das System langsamer machen. Weiterhin wird für jedes der betroffenen Pakete die Latenzzeit erhöht, da von Seiten des Kernels mehr Arbeit zum Weiterleiten des Paketes erforderlich ist. Da alle Daten auf die Platte ausgeschrieben werden wird syslogd auch mehr Prozessorzeit beanspruchen und es kann leicht passieren, dass die Partition, die /var/log enthält voll läuft. Sie sollten Ihre Firewall aus /etc/rc.conf.local oder /etc/rc.conf aktivieren. Die entsprechende Manualpage zeigt Ihnen, welche Einstellungen Sie vornehmen müssen und zeigt einige vorgegebene Firewall-Konfigurationen. Wenn Sie keine der Vorgaben verwenden, können Sie Ihre Regelkette mit ipfw list in eine Datei ausgeben und diese Datei in /etc/rc.conf angeben. Wenn sie weder /etc/rc.conf.local oder /etc/rc.conf benutzen, um Ihre Firewall zu aktivieren, stellen Sie bitte sicher, dass die Firewall aktiviert ist, bevor die IP-Interfaces konfiguriert werden. Als nächstes müssen Sie festlegen, was Ihre Firewall machen soll. Das wird sehr stark davon abhängen welche Zugriffe Sie von außen auf Ihr Netzwerk erlauben wollen und welche Zugriffe von innen nach außen erlaubt sein sollen. Einige gebräuchliche Regeln sind: Blockieren Sie jeden einkommenden Zugriff auf Ports unter 1024 für TCP. Dort befinden sich die meisten der sicherheitsrelevanten Dienste wie finger, SMTP (Post) und telnet. Blockieren Sie jeden einkommenden UDP-Verkehr. Es gibt wenige nützliche UDP-Dienste und die, die nützlich sind, stellen meist eine Bedrohung der Sicherheit dar (z.B. die RPC- und NFS-Protokolle von Sun). Dies bringt allerdings auch Nachteile mit sich. Da UDP ein verbindungsloses Protokoll ist, verbieten Sie auch die Antworten auf ausgehende UDP-Pakete, wenn Sie eingehende UDP-Verbindungen blockieren. Dies kann zum Beispiel Probleme für Anwender des internen Netzwerks hervorrufen, wenn diese einen externen Archie-Server (prospero) verwenden. Wenn Sie den Zugriff auf Archie erlauben wollen, müssen Sie Pakete von den Ports 191 und 1525 zu jedem internen UDP-Port durch Ihre Firewall lassen. Ein anderer Dienst, den Sie vielleicht erlauben wollen, ist ntp, der vom Port 123 ausgeht. Verbieten Sie Verkehr von außen zum Port 6000. Der Port 6000 wird für den Zugriff auf X-Server genutzt und kann eine Bedrohung der Sicherheit darstellen, insbesondere wenn die Anwender gewohnt sind xhost + zu benutzen. Tatsächlich kann X einen Bereich von Ports verwenden, der bei 6000 anfängt. Die Obergrenze ist durch die Anzahl der Displays, die auf einer Maschine laufen, gegeben. Laut RFC 1700 (Assigned Numbers) hat der höchst mögliche Port die Nummer 6063. Überprüfen Sie, welche Ports von internen Servern (z.B. SQL-Servern) benutzt werden. Da diese normalerweise aus dem oben angesprochenen Bereich von 1-1024 fallen, ist es wahrscheinlich gut, diese Ports ebenfalls zu blockieren. Eine Checkliste zum Aufbau einer Firewall ist vom CERT unter erhältlich. Wie oben schon gesagt, können wir Ihnen nur Richtlinien geben. Sie müssen selbst entscheiden, welche Regeln Sie auf Ihrer Firewall einsetzen wollen. Wir übernehmen keine Verantwortung dafür, dass jemand in Ihr Netzwerk eindringt, auch wenn Sie die obigen Ratschläge befolgt haben. IPFW Overhead und Optimierungen Viele Leute wollen wissen, wie viel zusätzliche Last IPFW auf einem System erzeugt. Hauptsächlich hängt dies von der Art der Regelkette und der Geschwindigkeit des Prozessors ab. Für die meisten Anwendungen mit einer kleinen Regelkette auf einem Ethernet ist der Aufwand vernachlässigbar klein. Wenn Sie genaue Zahlen brauchen, lesen Sie bitte weiter. Die folgenden Messungen wurden auf einem 486-66 mit 2.2.5-STABLE durchgeführt. Obwohl sich IPFW in späteren FreeBSD Versionen leicht geändert hat, läuft es doch mit vergleichbarer Geschwindigkeit. Zur Durchführung der Messungen wurde in IPFW die verbrauchte Zeit in der Routine ip_fw_chk gemessen. Die Ergebnisse wurden alle 1000 Pakete auf der Konsole ausgegeben. Zwei Regelsätze mit je 1000 Regeln wurden getestet. Der erste Regelsatz sollte den schlimmsten Fall durch wiederholte Anwendung der folgenden Regel demonstrieren: &prompt.root; ipfw add deny tcp from any to any 55555 Da ein Großteil der Routine, die die Pakete überprüft, durchlaufen werden muss, bevor entschieden werden kann, ob das Paket wegen der Portnummer nicht auf die Regel passt, wird mit dieser Regel der schlimmste Fall gut simuliert. Nach 999 Wiederholungen dieser Regel folgte die Regel allow ip from any to any. Der zweite Regelsatz wurde so entworfen, dass die Überprüfung der Regel schnell abgeschlossen werden kann: &prompt.root; ipfw add deny ip from 1.2.3.4 to 1.2.3.4 Die Regel kann aufgrund einer nicht passenden IP-Adresse sehr schnell verlassen werden. Nach 999 Wiederholungen dieser Regel folgte wie im ersten Fall die Regel allow ip from any to any. Im ersten Fall betrug der zusätzliche Aufwand 2,703 ms pro Paket also ungefähr 2,7 µs pro Regel. Damit könnten maximal ungefähr 370 Pakete pro Sekunde verarbeitet werden. Mit einem 10 Mbps Ethernet und Paketen, die ungefähr 1500 Bytes groß sind, entspricht dies einer Ausnutzung von 55% der zur Verfügung stehenden Bandbreite. Im letzten Fall wurde jedes Paket in 1,172 ms abgearbeitet, was ungefähr 1,2 µs pro Regel entspricht. In diesem Fall könnten maximal 853 Pakete pro Sekunde verarbeitet werden, was die Bandbreite eines 10 Mbps Ethernet vollständig ausnutzt. Die große Anzahl und die Beschaffenheit der Regeln in den Beispielen entsprechen nicht der Wirklichkeit. Die Regeln dienten nur der Messung der Geschwindigkeit. Wenn Sie eine effiziente Regelkette aufbauen wollen, sollten Sie die folgenden Ratschläge berücksichtigen: Setzen Sie eine established Regel so früh wie möglich in die Regelkette, um den Großteil des TCP Verkehrs abzudecken. Vor dieser Regel sollten Sie keine allow tcp Regeln stehen haben. Plazieren Sie häufig benutzte Regeln vor selten benutzten Regeln, ohne dabei den Sinn der Regelkette zu ändern. Welche Regeln häufig durchlaufen werden, können Sie den Paketzählern mit ipfw -a l entnehmen. OpenSSL Sicherheit OpenSSL OpenSSL Das OpenSSL-Toolkit ist seit FreeBSD 4.0 Teil des Basissystems. OpenSSL stellt eine universale Kryptographie Bibliothek sowie die Protokolle Secure Sockets Layer v2/v3 (SSLv2/SSLv3) und Transport Layer Security v1 (TLSv1) zur Verfügung. Einer der Algorithmen, namentlich IDEA, in OpenSSL ist durch Patente in den USA und anderswo geschützt und daher nicht frei verfügbar. IDEA ist Teil des Quellcodes von OpenSSL wird aber in der Voreinstellung nicht kompiliert. Wenn Sie den Algorithmus benutzen wollen und die Lizenzbedingungen erfüllen, können Sie MAKE_IDEA in /etc/make.conf aktivieren und das System mit make world neu bauen. Der RSA-Algorithmus ist heute in den USA und anderen Ländern frei verfügbar. Früher wurde er ebenfalls durch ein Patent geschützt. OpenSSL Installation Installation des Quellcodes OpenSSL ist Teil der src-crypto und src-secure CVSup-Kollektionen. Mehr Informationen über die Erhältlichkeit und das Aktualisieren des FreeBSD Quellcodes erhalten Sie im Abschnitt Bezugsquellen für FreeBSD. Nik Clayton
nik@FreeBSD.org
Geschrieben von
VPNs mit IPsec Dieser Abschnitt beschreibt, wie Sie mit FreeBSD-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. Pandya
hmp@FreeBSD.org
Geschrieben von
IPsec Grundlagen Dieser Abschnitt zeigt Ihnen, wie Sie IPsec einrichten und damit FreeBSD-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 FreeBSD realisierte IPsec-Protokoll baut auf der KAME-Implementierung auf und unterstützt sowohl IPv4 als auch IPv6. FreeBSD 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: options 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;. IPsec 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. IPsec 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 FreeBSD enthält die Hilfeseite &man.ipsec.4;. Die folgenden Optionen in der Kernelkonfiguration aktivieren IPsec: options IPSEC #IP security options IPSEC_ESP #IP security (crypto; define w/ IPSEC) Wenn Sie zur Fehlersuche im IPsec-Subsystem Unterstützung wünschen, sollten Sie die folgende Option ebenfalls aktivieren: options IPSEC_DEBUG #debug for IP security
Was 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. Szenario I: Zwei Netzwerke verbunden über das Internet Dieses Szenario hat die folgenden Vorausetzungen: Es müssen zwei Netzwerke vorhanden sein. Beide Netzwerke müssen intern IP benutzen. Beide Netzwerke sind über einen FreeBSD-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 einrichten - - Nehmen 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 FreeBSD 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: - pseudo-device gif - - Wie 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. - - 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 + + Schritt 1: Die virtuelle Verbindung einrichten + + Nehmen 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 FreeBSD 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: + + pseudo-device gif + + Wie 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. + + 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 0xffffffff - Auf dem anderen Gateway benutzen Sie dieselben Kommandos, - allerdings mit vertauschten IP-Adressen: + Auf dem anderen Gateway benutzen Sie dieselben Kommandos, + allerdings mit vertauschten IP-Adressen: - gifconfig gif0 W.X.Y.Z A.B.C.D + gifconfig gif0 W.X.Y.Z A.B.C.D ifconfig gif0 inet 192.168.2.1 192.168.1.1 netmask 0xffffffff - Die Konfiguration können Sie anschließend mit - dem folgenden Kommando überprüfen: + Die Konfiguration können Sie anschließend mit + dem folgenden Kommando überprüfen: - gifconfig gif0 + gifconfig gif0 - Auf dem Gateway in Netzwerk #1 sollten Sie - beispielsweise die nachstehende Ausgabe erhalten: + Auf dem Gateway in Netzwerk #1 sollten Sie + beispielsweise die nachstehende Ausgabe erhalten: - &prompt.root; gifconfig gif0 + &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.Z - Wie 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. + Wie 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: + 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 + &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. + 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. + 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: + 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 gif0 + ipfw add 1 allow ip from any to any via gif0 - Diese Regel muss offensichtlich auf beiden Gateway-Maschinen - existieren. + Diese 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: + 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.1 + ping 192.168.2.1 - Denselben Test können Sie auch auf der anderen - Gateway-Maschine ausführen. + Denselben 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. + 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: + 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 0xffffff00 + route add 192.168.2.0 192.168.2.1 netmask 0xffffff00 - Dies 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. + Dies 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. + 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: + 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.1 + tcpdump dst host 192.168.2.1 - Starten Sie dann, ebenfalls auf dem ersten Gateway, den - folgenden Befehl: + Starten Sie dann, ebenfalls auf dem ersten Gateway, den + folgenden Befehl: - ping 192.168.2.1 + ping 192.168.2.1 - Sie werden die nachstehende Ausgabe erhalten: + Sie werden die nachstehende Ausgabe erhalten: - 16:10:24.018080 192.168.1.1 > 192.168.2.1: icmp: echo request + 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 reply - Die ICMP-Nachrichten werden unverschlüsselt - übertragen. Mit der Option - von &man.tcpdump.1; können Sie sich weitere Daten - der Pakete anzeigen lassen. + Die 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. + Die Daten sollen aber automatisch verschlüsselt + werden. Wie das geht, wird im nächsten Abschnitt + erläutert. - - Zusammenfassung: - - Richten sie in beiden Kerneln das - gif-Gerät ein. - + + Zusammenfassung: + + Richten 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: + + 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" + 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: + Setzen Sie dabei die richtigen IP-Adressen für + die Platzhalter ein. + - ipfw add 1 allow ip from any to any via gif0 - + + Fügen Sie auf beiden Gateways die nachstehende + Regel in das Firewall-Skript (zum Beispiel + /etc/rc.firewall) ein: - - Nehmen Sie in /etc/rc.conf auf dem - Gateway #2 analoge Änderungen, die IP-Adressen - müssen vertauscht werden, vor. - - - + ipfw add 1 allow ip from any to any via gif0 + - - Schritt 2: Die Verbindung mit IPsec schützen - - Um 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. - + + Nehmen Sie in /etc/rc.conf auf dem + Gateway #2 analoge Änderungen, die IP-Adressen + müssen vertauscht werden, vor. + + + - - 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: - - options IPSEC + + Schritt 2: Die Verbindung mit IPsec schützen + + Um 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: + + options IPSEC options IPSEC_ESP - Wie ü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. - - Sie 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. - - Mit &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 FreeBSD verwalten - wollen. Im Folgenden wird racoon - beschrieben. racoon lässt sich in gewohnter - Weise aus der Ports-Collection installieren. Sie finden - das Programm unter - security/racoon. - - Auf beiden Gateway-Maschinen muss racoon laufen. - Auf jedem System wird es mit der IP-Adresse der Gegenstelle - und einem geheimen Schlüssel konfiguriert. Auf beiden - Gateway-Maschinen muss 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 geheim - - Die 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 geheim - - Die 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 + Wie ü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. + + Sie 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. + + Mit &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 FreeBSD verwalten + wollen. Im Folgenden wird racoon + beschrieben. racoon lässt sich in gewohnter + Weise aus der Ports-Collection installieren. Sie finden + das Programm unter + security/racoon. + + Auf beiden Gateway-Maschinen muss racoon laufen. + Auf jedem System wird es mit der IP-Adresse der Gegenstelle + und einem geheimen Schlüssel konfiguriert. Auf beiden + Gateway-Maschinen muss 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 geheim + + Die 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 geheim + + Die 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 isakmp - Wenn 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 -D - - Damit 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: - - - - - - - - + Wenn 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 -D + + Damit 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: + 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; + + + + 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: + 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 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.D - Da die Regeln symmetrisch sind, können sie auf - beiden Systemen verwendet werden. + Da die Regeln symmetrisch sind, können sie auf + beiden Systemen verwendet werden. - Damit sehen ausgehende Pakete wie folgt aus: + 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. + 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: + 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.1 + tcpdump dst host 192.168.2.1 - Auf demselben Rechner setzen Sie dann noch das - nachstehende Kommando ab: + Auf demselben Rechner setzen Sie dann noch das + nachstehende Kommando ab: - ping 192.168.2.1 + ping 192.168.2.1 - Dieses Mal wird die Ausgabe wie folgt aussehen: + Dieses Mal wird die Ausgabe wie folgt aussehen: - XXX tcpdump output + XXX tcpdump output - Jetzt 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. + Jetzt 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. + Herzlichen Glückwunsch. Sie haben soeben ein + VPN zwischen zwei entfernten Netzen eingerichtet. - - Zusammenfassung - - IPsec muss in beiden Kernelkonfigurationsdateien - enthalten sein: + + Zusammenfassung + + IPsec muss in beiden Kernelkonfigurationsdateien + enthalten sein: - options IPSEC + options IPSEC options IPSEC_ESP - - - - Installieren 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" + + + + Installieren 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: + + 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 + 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: + Auf dem Gateway #2 sieht die Datei so aus: - spdadd W.X.Y.Z/32 A.B.C.D/32 ipencap -P out ipsec + 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: + + 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 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.D - - + + - Das VPN wurde in zwei Schritten eingerichtet. Maschinen - auf beiden Netzen können miteinander kommunizieren - und der Datenverkehr zwischen beiden Netzen wird automatisch - verschlüsselt. + Das VPN wurde in zwei Schritten eingerichtet. Maschinen + auf beiden Netzen können miteinander kommunizieren + und der Datenverkehr zwischen beiden Netzen wird automatisch + verschlüsselt. +
Chern Lee Beigetragen von OpenSSH OpenSSH Sicherheit OpenSSH OpenSSH 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 FreeBSD 4.0 ist die OpenSSH Teil des Basissystems. Vorteile von OpenSSH Mit &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 sshd OpenSSH aktivieren Stellen Sie sicher, dass /etc/rc.conf die folgende Zeile enthält: sshd_enable="YES" Dadurch wird &man.sshd.8;, der Dæmon von OpenSSH bei dem nächsten Neustart geladen. Alternativ können Sie den Dæmon auch direkt starten, indem Sie auf der Kommandozeile das Kommando sshd absetzen. SSH Client OpenSSH Client &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 OpenSSH-Server Verbindungen mit SSH v1 und SSH v2. Die Clients können sich aber das Protokoll auswählen, dabei wird die Protokollversion 2 als robuster und sicherer als die Vorgängerversion angesehen. Mit den Optionen oder kann die Protokollversion, die ssh verwendet, erzwungen werden. Secure Copy OpenSSH secure copy scp Mit &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. Konfiguration OpenSSH Konfiguration Die 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-keygen Mit &man.ssh-keygen.1; können RSA-Schlüssel für einen Benutzer erzeugt werden, die anstelle von Passwörtern verwendet werden können: &prompt.user; ssh-keygen -t rsa1 Initializing random number generator... Generating p: .++ (distance 66) Generating q: ..............................++ (distance 498) Computing the keys... Key generation complete. Enter file in which to save the key (/home/user/.ssh/identity): Enter passphrase: Enter the same passphrase again: Your identification has been saved in /home/user/.ssh/identity. ... &man.ssh-keygen.1; erzeugt einen öffentlichen und einen privaten Schlüssel für die Authentifizierung. Der private Schlüssel wird in ~/.ssh/identity, der öffentliche Schlüssel in ~/.ssh/identity.pub gespeichert. Damit die RSA-Schlüssel zur Authentifizierung verwendet werden können, muss der öffentliche Schlüssel in der Datei ~/.ssh/authorized_keys auf der entfernten Maschine abgelegt werden. Damit werden Verbindungen zu der entfernten Maschine über den RSA-Mechanismus anstelle von Passwörtern authentifiziert. Die erstellt RSA-Schlüssel für die Version 1 des SSH-Protokolls. RSA-Schlüssel für die Version 2 des SSH-Protokolls erstellen Sie mit dem Kommando ssh-keygen -t rsa. 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. Zum gleichen Zweck kann ein DSA-Schlüssel für Version 2 des SSH-Protokolls mit dem Kommando ssh-keygen -t dsa erstellt werden. Dies erzeugt ein DSA-Schlüsselpaar, das nur in Sitzungen der Protokollversion 2 verwendet wird. Der öffentliche Schlüssel wird in ~/.ssh/id_dsa.pub, der private Schlüssel in ~/.ssh/id_dsa gespeichert. Die öffentlichen DSA-Schlüssel werden auch in ~/.ssh/authorized_keys auf der entfernten Maschine abgelegt. Mit &man.ssh-agent.1; und &man.ssh-add.1; können Sie mehrere durch Passwörter geschützte private Schlüssel verwalten. Die Kommandozeilemoptionen 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-Tunnel OpenSSH Tunnel Mit 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 ESMTP Zusammen 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-Tunnel Sicherer Zugriff auf einen POP3-Server Nehmen 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 Firewall Einige 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. Weiterführende Informationen: OpenSSH &man.ssh.1; &man.scp.1; &man.ssh-keygen.1; &man.ssh-agent.1; &man.ssh-add.1; &man.sshd.8; &man.sftp-server.8; Robert Watson Gefördert von DARPA und Network Associates Laboratories. Beigetragen von MAC Vorgeschriebene Zugriffskontrolle (MAC) In FreeBSD 5.0 wurde ein neues kernelbasiertes Sicherheitssystem eingeführt: das TrustedBSD-MAC-Framework. Das MAC-Framework erlaubt die Erweiterung der Zugriffskontrollen des Kernels beim Übersetzen, beim Systemstart und zur Laufzeit. Damit lassen sich Module laden, die vorgeschriebene Zugriffskontrollen (Mandatory Access Control, MAC) bereitstellen, oder angepasste Module laden, die zur Systemhärtung eingesetzt werden können. Das MAC-Framework befindet sich noch im Teststadium und sollte daher erst nach sorgfältigen Überlegungen auf produktiven Systemen eingesetzt werden. Voraussichtlich wird das MAC-Framework ab FreeBSD 5.2 produktionsreif sein. Wenn das MAC-Framework im Kernel aktiviert ist, können Sicherheitsmodule die Zugriffskontrollen des Kernels erweitern und damit Zugriffe auf Systemdienste oder Systemobjekte einschränken. Beispielsweise erweitert das &man.mac.bsdextended.4;-Modul die Zugriffskontrollen auf Dateisysteme und erlaubt es, Regelsätze, wie sie analog in Firewalls verwendet werden, aufzustellen, die Zugriffe auf Dateisystemobjekte anhand der Benutzer-ID und der Zugehörigkeit zu Gruppen regeln. Einige Module, wie das &man.mac.seeotheruids.4;-Modul, müssen gar nicht oder nur minimal konfiguriert werden, andere Module, wie das &man.mac.biba.4;-Modul oder das &man.mac.mls.4;-Modul, sind aufwändig zu konfigurieren, da sie Objekte systemweit kennzeichnen. Fügen Sie die nachstehende Zeile der Kernelkonfiguration hinzu, um das MAC-Framework zu aktivieren: options MAC Die Sicherheitsmodule des Basissystems können Sie mit &man.kldload.8; oder während des Systemstarts mit &man.loader.8; laden oder mit den nachstehenden Optionen fest in den Kernel einbinden. Die Zugriffsrichtlinien (policy) der Module werden unterschiedlich konfiguriert. Oft lässt sich ein Modul über den Namensraum security.mac der &man.sysctl.8;-MIB konfigurieren. Richtlinien, die vom Dateisystem oder bestimmten Kennzeichen abhängen, erfordern vielleicht eine initiale Konfiguration, in der Systemobjekten Kennzeichen zugeordnet werden müssen oder eine Konfigurationsdatei für die Richtlinie erstellt werden muss. Die erforderlichen Schritte werden in den Hilfeseiten des betreffenden Moduls beschrieben. Zur Konfiguration des MAC-Frameworks und der Kennzeichen, die von verschiedenen Richtlinien verwendet werden, stehen eine Reihe von Werkzeugen zur Verfügung. Das Anmeldeverfahren und die Verwaltung von Berechtigungsnachweisen (&man.setusercontext.3;) wurden erweitert, so dass Kennzeichen für Benutzerkonten mit &man.login.conf.5; eingerichtet werden können. Um Kennzeichen auf Prozessen, Dateien und Adaptern lesen und schreiben zu können, wurden &man.su.1;, &man.ps.1;, &man.ls.1; und &man.ifconfig.8; geändert. Zur Verwaltung der Kennzeichen wurden neue Werkzeuge eingeführt, beispielsweise &man.getfmac.8;, &man.setfmac.8; und &man.setfsmac.8; zur Verwaltung von Dateikennzeichen oder &man.getpmac.8; und &man.setpmac.8;. Die folgende Aufstellung beschreibt alle mit FreeBSD 5.0 ausgelieferten Sicherheitsmodule. Biba-Richtlinie zur Sicherung der Integrität (mac_biba) Richtlinie Biba-Richtlinie, Biba Integrity Policy Hersteller: TrustedBSD Project Modulname: mac_biba.ko Kerneloption: MAC_BIBA Die Biba-Richtlinie (Biba Integrity Policy, &man.mac.biba.4;) kennzeichnet die Integrität aller Systemobjekte (die Kennzeichnung kann hierarchisch oder nicht-hierarchisch erfolgen) und erzwingt einen Informationsfluß, der verhindert, dass Objekte mit hoher Integrität von Subjekten mit niedriger Integrität verändert werden. Die Integrität der Objekte wird dadurch sichergestellt, dass Subjekte mit hoher Integrität (üblicherweise Prozesse) nicht lesend auf Objekte niedrigerer Integrität (häufig Dateien) zugreifen dürfen und Subjekte niedrigerer Integrität nicht schreibend auf Objekte höherer Integrität zugreifen dürfen. Diese Richtlinie dient häufig zum Schutz der Trusted Code Base in kommerziellen Sicherheitssystemen. Da die Biba-Richtlinie systemweite Kennzeichen zur Verfügung stellt, muss Sie fest in den Kernel integriert sein oder zum Zeitpunkt des Systemstarts geladen werden. Dateisystem-Richtlinie (mac_bsdextended) Richtlinie Dateisystem-Richtlinie, File System Firewall Policy Hersteller: TrustedBSD Project Modulname: mac_bsdextended.ko Kerneloption: MAC_BSDEXTENDED Die Dateisystem-Richtlinie (File System Firewall Policy, &man.mac.bsdextended.4;) erweitert die Zugriffsrechte des BSD-Dateisystems. Ein Administrator kann für Zugriffe auf Dateisystemobjekte anderer Benutzer und Gruppen Regelsätze, analog den von Firewalls verwendeten, definieren. Die Regelsätze, die mit &man.ugidfw.8; verwaltet werden, beschränken den Zugriff auf Dateien und Verzeichnisse aufgrund der UID und der GID des zugreifenden Prozesses sowie dem Besitzer und der Gruppe des Objekts auf das zugegriffen werden soll. Da alle Regeln die möglichen Zugriffe beschränken, können sie in beliebiger Reihenfolge angelegt werden. Diese Richtlinie erfordert keine gesonderte Konfiguration oder die Vergabe von Kennzeichen und mag für Mehrbenutzer-Umgebungen geeignet sein, in denen vorgeschriebene Zugriffskontrollen für den Datenaustausch zwischen Benutzern erforderlich sind. Seien Sie vorsichtig, wenn Sie die Zugriffe auf Dateien von root oder anderen System-Accounts einschränken. Viele nützliche Programme und Verzeichnisse gehören diesen Benutzern und die falsche Anwendung der Dateisystem-Richtlinie kann, wie ein falscher Regelsatz einer Firewall, das System unbrauchbar machen. Mithilfe der Bibliothek &man.libugidfw.3; können leicht neue Werkzeuge zur Verwaltung der Regelsätze geschrieben werden. Interface-silencing-Richtlinie (mac_ifoff) Richtlinie Interface-silencing-Richtlinie, Interface Silencing Policy Hersteller: TrustedBSD Project Modulname: mac_ifoff.ko Kerneloption: MAC_IFOFF Die Interface-silencing-Richtlinie (&man.mac.ifoff.4;) verhindert, das die Netzwerkkarte vom Systemstart an bis zu dem Zeitpunkt, an dem sie explizit aktiviert wird, benutzt werden kann. Damit verhindert die Richtlinie ungewollte Antworten auf eingehende Pakete. Diese Richtlinie eignet sich für Umgebungen, in denen der Netzverkehr passiv, das heißt ohne eigene Pakete zu erzeugen, beobachtet werden soll. Low-Watermark Mandatory Access Control (mac_lomac) Richtlinie Low-Watermark LOMAC Hersteller: Network Associates Laboratories Modulname: mac_lomac.ko Kerneloption: MAC_LOMAC Wie die Biba-Richtlinie kennzeichnet die LOMAC-Richtlinie (&man.mac.lomac.4;) systemweit die Integrität aller Objekte. Im Gegensatz zur Biba-Richtlinie können allerdings Subjekte hoher Integrität lesend auf Objekte niedrigerer Integrität zugreifen. In diesem Fall wird aber die Integrität des lesenden Subjekts heruntergesetzt, damit dieses nicht mehr schreibend auf Objekte mit hoher Integrität zugreifen kann. Diese Richtlinie ist leichter als die Biba-Richtlinie zu benutzen und zu konfigurieren. Da sie allerdings systemweit die Objekte kennzeichnet, muss sie, wie die Biba-Richtlinie, fest in den Kernel eingebunden sein oder beim Systemstart geladen werden. Multi-Level-Security Richtlinie (mac_mls) Richtlinie Multi-Level-Security Multi-Level-Security Richtlinie Hersteller: TrustedBSD Project Modulname: mac_mls.ko Kerneloption: MAC_MLS Die Multi-Level-Security Richtlinie (MLS, &man.mac.mls.4;) stellt systemweit hierarchische und nicht-hierarchische Kennzeichen zur Markierung der Vertraulichkeit von Objekten zur Verfügung. Die Richtlinie stellt einen Informationsfluß sicher, der garantiert, dass vertrauliche Daten nicht unberechtigt weitergeleitet werden. Die MLS-Richtlinie wird häufig zusammen mit der Biba-Richtlinie in sicheren kommerziellen Mehrbenutzerumgebungen verwendet. Mit hierarchischen Kennzeichen können Zugangsberechtigungen zu Verschlusssachen (Einteilung in streng geheim, geheim, usw.) abgebildet werden. Nicht-hierarchische Kennzeichen dienen zur Verwirklichung des Prinzips Kenntnis nur, wenn nötig (need to know). Alle Systemobjekte müssen wie bei der Biba-Richtlinie vorher gekennzeichnet werden, so dass die Richtlinie fest in den Kernel eingebunden werden muss oder beim Systemstart als Modul geladen werden muss. Der Konfigurationsaufwand der MLS-Richtlinie kann analog zur Biba-Richtlinie sehr hoch sein. Rumpf-Richtlinie (mac_none) Richtlinie Rumpf-Richtlinie, MAC Stub Policy Hersteller: TrustedBSD Project Modulname: mac_none.ko Kerneloption: MAC_NONE Die Rumpf-Richtlinie (MAC Stub Policy, &man.mac.none.4;) ist als Beispiel für Entwickler gedacht. Sie stellt alle benötigten Funktionen zur Verfügung, ohne die Zugriffsrechte im System zu verändern. Auf einem Produktionssystem ist die Anwendung dieser Richtlinie nicht sehr sinnvoll. Partitions-Richtlinie (mac_partition) Richtlinie Partitions-Richtlinie, Process Partition Policy Hersteller: TrustedBSD Project Modulname: mac_partition.ko Kerneloption: MAC_PARTITION Die Partitions-Richtlinie (Process Partition Policy, &man.mac.partition.4;) schränkt die Sichtbarkeit von Prozessen ein, indem Prozessen Partitionsnummern zugewiesen werden. Besitzt ein Prozess keine Partitionsnummer, so kann er alle Prozesse auf dem System sehen, besitzt er hingegen eine Partitionsnummer, so kann er nur Prozesse in derselben Partition sehen. Die Richtlinie kann fest in den Kernel eingebunden werden, beim Systemstart oder zur Laufzeit geladen werden. See Other Uids (mac_seeotheruids) Richtlinie See Other Uids Hersteller: TrustedBSD Project Modulname: mac_seeotheruids.ko Kerneloption: MAC_SEEOTHERUIDS Die Richtlinie See Other Uids (&man.mac.seeotheruids.4;) schränkt wie &man.mac.partition.4; die Sichtbarkeit von Prozessen ein. Allerdings wird die Sichtbarkeit anderer Prozesse von den Berechtigungen eines Prozesses anstelle einer Partitionsnummer bestimmt. Die Richtlinie kann so konfiguriert werden, dass sie für bestimmte Accounts oder Gruppen nicht gilt, so dass beispielsweise Systemverwalter alle Prozesse sehen können. Die Richtlinie kann fest in den Kernel eingebunden werden, beim Systemstart oder zur Laufzeit geladen werden. Test-Richtlinie (mac_test) Richtlinie Test-Richtlinie, MAC Framework Test Hersteller: TrustedBSD Project Modulname: mac_test.ko Kerneloption: MAC_TEST Die Test-Richtlinie (MAC Framework Test Policy, &man.mac.test.4;) stellt einen Regressions-Test für das MAC-Framework bereit. Die Richtlinie führt zu einem Systemstopp für den Fall, dass interne Prüfungen auf korrekte Kennzeichen fehlschlagen. Sie kann fest in den Kernel eingebunden werden, beim Systemstart oder zur Laufzeit geladen werden. Tom Rhodes Beigetragen von ACL Zugriffskontrolllisten für Dateisysteme Zusammen mit anderen Verbesserungen des Dateisystems wie Schnappschüsse gibt es ab FreeBSD 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_ACL Diese 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_html Die Verzeichnisse directory1, directory2 und directory3 sind durch Zugriffskontrolllisten geschützt, das Verzeichnis public_html nicht.
diff --git a/de_DE.ISO8859-1/books/handbook/x11/chapter.sgml b/de_DE.ISO8859-1/books/handbook/x11/chapter.sgml index dcad45edd5..a6d0e76023 100644 --- a/de_DE.ISO8859-1/books/handbook/x11/chapter.sgml +++ b/de_DE.ISO8859-1/books/handbook/x11/chapter.sgml @@ -1,1739 +1,1739 @@ Martin Heinen Übersetzt von Das X-Window-System Übersicht Mit &xfree86; steht unter FreeBSD eine leistungsfähige grafische Benutzeroberfläche zur Verfügung. &xfree86; ist eine Open-Source Realisierung des X-Window-Systems. Dieses Kapitel behandelt die Installation und Konfiguration von &xfree86; auf einem FreeBSD-System. Weitere Informationen über &xfree86; und unterstützte Video-Hardware finden Sie auf der &xfree86; Website. Nachdem Sie dieses Kapitel gelesen haben, werden Sie die Komponenten des X-Window-Systems und ihr Zusammenspiel kennen. Wissen, wie &xfree86; installiert und konfiguriert wird. Wissen, wie Sie verschiedene Window-Manager installieren und benutzen. Wissen, wie &truetype;-Schriftarten mit &xfree86; benutzt werden. Wissen, wie Sie die grafische Anmeldung (XDM) einrichten. Bevor Sie dieses Kapitel lesen, sollten Sie wissen, wie Sie Software Dritter installieren (). X-Grundlagen Anwendern 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 X X 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. Wenn, wie oft in kleinen Umgebungen, nur ein Rechner zur Verfügung steht, 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. Der X-Server von FreeBSD heißt &xfree86; und steht kostenlos unter einer Lizenz, die ähnlich der FreeBSD-Lizenz ist, zur Verfügung. Kommerzielle X-Server sind ebenfalls erhältlich. Der Window-Manager Die 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. Alt Tab 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äßt 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 Konfigurations-Arbeiten an. Die Konfigurationsdatei von sawfish ist sogar in einem Lisp-Dialekt geschrieben. Fokus Weiterhin ist der Window-Manager 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-mouse Den 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-focus Diese 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äßt. click-to-focus Das 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. Widgets Die 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. &xfree86; installieren Legen Sie zuerst die &xfree86;-Version fest, die Sie einsetzen wollen. &xfree86; 3.X ist sehr stabil und unterstützt zahlreiche Grafikkarten, allerdings wird dieser Entwicklungszweig nicht mehr weiterentwickelt. &xfree86; 4.X wurde komplett neu entworfen und besitzt neue Merkmale wie die verbesserte Unterstützung von Schriftarten und Anti-aliasing. Leider mussten dafür auch die Grafiktreiber neu geschrieben werden und einige der alten Karten, die in 3.X unterstützt wurden, werden in 4.X noch nicht unterstützt. Da Treiber für neue Grafikkarten nur noch in &xfree86; 4.X erstellt werden, ist diese Version in FreeBSD voreingestellt. Während Sie FreeBSD einrichten, haben Sie Gelegenheit &xfree86; 4.X zu installieren. &xfree86; 3.X müssen Sie nach dem Basissystem installieren. Aus der Ports-Sammlung installieren Sie &xfree86; 3.X wie folgt: &prompt.root; cd /usr/ports/x11/XFree86 &prompt.root; make all install clean Beide Versionen von &xfree86; können Sie auch direkt mit den binären Distributionen von der &xfree86; Website installieren. &xfree86; 4.X steht ebenfalls als Paket für &man.pkg.add.1; zur Verfügung. Soll das Paket auch mit &man.pkg.add.1; heruntergeladen werden, darf die Versionsnummer auf der Kommandozeile nicht verwendet werden, da &man.pkg.add.1; automatisch die neuste Version herunterlädt. Die neuste Version von &xfree86; 4.X wird mit dem folgenden Kommando heruntergeladen und installiert: &prompt.root; pkg_add -r XFree86 &xfree86; 4.X lässt sich auch aus der Ports-Sammlung installieren: &prompt.root; cd /usr/ports/x11/XFree86-4 &prompt.root; make install clean Die obigen Beispiele installieren ein komplettes X (mit Servern, Clients und Schriftarten). Einzelne Komponenten von &xfree86; 4.X stehen auch als separates Paket oder als separater Port zur Verfügung. Der Rest dieses Kapitels erklärt, wie Sie &xfree86; konfigurieren und sich eine Arbeitsumgebung einrichten. Christopher Shumway Beigetragen von &xfree86; konfigurieren XFree86 4.X XFree86 Vorarbeiten Bevor Sie &xfree86; 4.X konfigurieren, benötigen Sie folgende Informationen: die Spezifikationen des Monitors den Chipset des Grafikadapters die Speichergröße des Grafikadapters Synchronisationsfrequenz horizontale Synchronisationsfrequenz vertikale Aus den Spezifikationen des Monitors ermittelt &xfree86; 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 &xfree86; 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. &xfree86; 4.X konfigurieren &xfree86; 4.X wird in mehreren Schritten konfiguriert. Mit der Option von &xfree86; wird zuerst eine Vorgabe für die Konfigurationsdatei erstellt. Setzen Sie dazu als root den folgenden Befehl ab: &prompt.root; XFree86 -configure Die Vorgabe-Konfiguration wird dann unter dem Namen XF86Config.new im Verzeichnis /root abgespeichert (das verwendete Verzeichnis wird durch die Umgebungsvariable $HOME bestimmt und hängt davon ab, wie Sie zu root gewechselt sind). &xfree86; hat in diesem Schritt versucht, die Grafik-Hardware des Systems zu erkennen und eine Konfigurationsdatei ausgeschrieben, die die zur Hardware passenden Treiber lädt. Im nächsten Schritt wird geprüft, ob &xfree86; die Grafik-Hardware des Systems verwenden kann. Setzen Sie dazu den folgenden Befehl ab: &prompt.root; XFree86 -xf86config XF86Config.new Wenn jetzt ein graues Raster und der X-Mauszeiger erscheinen, war die Konfiguration erfolgreich. Beenden Sie den Test indem Sie Ctrl Alt Backspace drücken. Wenn die Maus nicht funktioniert, überprüfen Sie, ob die Maus konfiguriert wurde. Die Mauskonfiguration wird in beschrieben. &xfree86; 4 anpassen Als Nächstes passen Sie 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 EndSection Unter 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" XF86Config Die gewünschte Auflösung und Farbtiefe stellen Sie im Abschnitt "Screen" ein: Section "Screen" Identifier "Screen0" Device "Card0" Monitor "Monitor0" DefaultDepth 24 SubSection "Display" Depth 24 Modes "1024x768" EndSubSection EndSection Mit DefaultDepth wird die Farbtiefe des X-Servers vorgegeben. Mit der Option -bpp von &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 sie wie oben beschrieben. Installieren Sie dann die Datei an einen Ort, an dem &man.XFree86.1; sie findet (typischerweise /etc/X11/XF86Config oder /usr/X11R6/etc/X11/XF86Config): &prompt.root; cp XF86Config.new /etc/X11/XF86Config Damit ist die Konfiguration beendet. Wenn Sie &xfree86; 4.X mit &man.startx.1; starten wollen, müssen Sie noch den Port x11/wrapper installieren. Sie können &xfree86; 4.X aber auch mit &man.xdm.1; starten. &xfree86; 4.X kann auch im Grafikmodus mit &man.xf86cfg.1; konfiguriert werden. Mit dem interaktiven Werkzeug können Treiber ausgewählt und Einstellungen vorgenommen werden. Das Programm kann auch auf der Konsole benutzt werden, starten Sie es einfach mit xf86cfg -textmode. Weitere Informationen erhalten Sie in der Hilfeseite &man.xf86cfg.1;. Spezielle Konfigurationen Konfiguration des &intel; i810 Graphics Chipsets Intel i810 Chipset Der &intel; i810 Chipset benötigt den Treiber agpgart, die AGP-Schnittstelle von &xfree86;. Der Treiber &man.agp.4; befindet sich seit 4.8-RELEASE und 5.0-RELEASE in der Vorgabekonfiguration GENERIC. Wenn Sie eine frühere FreeBSD-Version benutzen müssen Sie Ihre Kernelkonfiguration um die nachstehende Zeile erweitern: device agp Anschließ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 agpgart Wenn 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 der &xfree86;-Konfigurationsdatei ein: Option "NoDDC" Murray Stokely Beigetragen von Schriftarten in &xfree86; benutzen Type 1 Schriftarten Die Schriftarten, die mit &xfree86; 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 &xfree86; (Version 3.X oder 4.X) 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, so dass sich die Sammlung nicht für den alltäglichen Gebrauch eignet. Weiterhin kann &xfree86; leicht so konfiguriert werden, dass es &truetype;-Schriftarten verwendet (dies wird später im Abschnitt &truetype; Schriftarten beschrieben). 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 clean Analog lassen sich Freefont und andere Sammlungen installieren. Die neuen Schriftarten müssen dem X-Server in der Datei XF86Config bekannt gegeben werden. In der Version 3 von &xfree86; befindet diese Datei in /etc, in Version 4 befindet sich die Datei im Verzeichnis /etc/X11/. 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 rehash Dann 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 XftConfig, die im Abschnitt Anti-aliasing beschrieben wird, eintragen. &truetype;-Schriftarten TrueType-Schriftarten Schriftarten TrueType &xfree86; 4.X kann &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/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;/DOS/&windows;-Format liegen, Schriftarten von einem &macintosh; können Sie nicht direkt übernehmen. Die Schriftarten müssen noch in der Datei fonts.dir katalogisiert werden. Den Katalog können Sie mit ttmkfdir aus dem Port x11-fonts/ttmkfdir erzeugen: &prompt.root; cd /usr/X11R6/lib/X11/fonts/TrueType &prompt.root; ttmkfdir > fonts.dir Geben 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 rehash Oder fügen Sie eine -Zeile in XF86Config hinzu. 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 Marcus Clarke Aktualisiert von Anti-aliasing Anti-aliasing Schriftarten Anti-aliasing &xfree86; beherrscht das Anti-aliasing-Verfahren seit der Version 4.0.2. Die Konfiguration der Schriftarten war vor &xfree86; 4.3.0 ziemlich schwierig. Ab der Version 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;. XML Die 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 -f Das 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> Schriftarten Abstände Das 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 &xfree86; 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 &xfree86;-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. LCD Schriftarten auf einem LCD Mit 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. Mozilla Web-Browser Mozilla Mozilla Der 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. Seth Kingsley Beigetragen von Der X-Display-Manager Einführung X-Display-Manager Der 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äßt 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 einrichten Der 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äßt 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 secure In 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 konfigurieren Das 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: Datei Beschreibung Xaccess Regelsatz, der zur Autorisierung von Clients benutzt wird. Xresources Vorgabewerte für X-Ressourcen. Xservers Liste mit lokalen und entfernten Bildschirmen, die verwaltet werden. Xsession Vorgabe für das Startskript der Sitzung. Xsetup_* Skript, das dazu dient, Anwendungen vor der Anmeldung zu starten. xdm-config Konfiguration für alle auf der Maschine verwalteten Bildschirme. xdm-errors Fehlermeldungen des Servers. xdm-pid Die 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. Xaccess Verbindungen 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. Xresources In dieser Datei kann das Erscheinungsbild der Bildschirmauswahl und der Anmeldemasken festgelegt werden. Das Format entspricht den Dateien im Verzeichnis app-defaults, die in der &xfree86;-Dokumentation beschrieben sind. Xservers Diese Datei enthält eine Liste entfernter Maschinen, die in der Bildschirmauswahl angeboten werden. Xsession Dieses 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-config Diese Datei enthält Einstellungen, die für jeden verwalteten Bildschirm zutreffen. Das Format entspricht dem der Dateien aus app-defaults. xdm-errors Die 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 Netzwerk Damit 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, entfernen Sie einen Kommentar in xdm-config: ! SECURITY: do not listen for XDMCP or Chooser requests ! Comment out this line if you want to manage X terminals with xdm DisplayManager.requestPort: 0 Starten 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 ersetzen Es 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. Valentino Vaschetto Beigetragen von Grafische Oberflächen Dieser 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 GNOME GNOME GNOME 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. GNOME installieren Am 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 gnome2 Wenn Sie den Quellcode von GNOME übersetzen wollen, benutzen Sie die Ports-Sammlung: &prompt.root; cd /usr/ports/x11/gnome2 &prompt.root; make install clean Nachdem GNOME installiert ist, muss der X-Server GNOME anstelle eines Window-Managers starten. Wenn Sie bereits eine angepasste .xinitrc besitzen, ersetzen Sie dort den Start 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" > ~/.xinitrc Rufen Sie dann startx auf, um die GNOME Oberfläche zu starten. Wenn Sie einen 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 ~/.xsession Sie können auch den Display-Manager so konfigurieren, dass der Window-Manager beim Anmelden ausgesucht werden kann. Im Abschnitt Details zu KDE wird das für kdm, den Display-Manager von KDE erklärt. Anti-aliasing-Verfahren mit GNOME GNOME Anti-Aliasing-Verfahren Ab der Version 4.0.2 beherrscht &xfree86; mit der RENDER-Erweiterung das Anti-Aliasing-Verfahren. Gtk+ 2.0 und spätere Versionen (das GNOME-Toolkit) kann dieses Verfahren benutzen. Die Konfiguration des Verfahrens ist in beschrieben. Aktivieren Sie Anti-Aliasing im Menü Applications Desktop Preferences Font . 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 KDE KDE KDE 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 installieren Am 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 clean Nachdem 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" > ~/.xinitrc Wenn 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 KDE Wenn 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-Manager KDE Display-Manager Der 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 esac Fü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 esac Wenn 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/kdmdesktop Damit kdm beim nächsten Systemstart gestartet wird, muss ein entsprechender Eintrag in /etc/ttys vorhanden sein. Folgen Sie dazu den Anweisungen aus dem Anschnitt über xdm und ersetzen Sie alle Bezüge auf /usr/X11R6/bin/xdm durch /usr/local/bin/kdm. Anti-aliasing-Verfahren mit KDE KDE Anti-Aliasing-Verfahren Ab der Version 4.0.2 beherrscht &xfree86; durch die RENDER-Erweiterung das Anti-aliasing-Verfahren. 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 Preferences Look and Feel Fonts . 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 XFce XFce 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 installieren Das XFce-Paket installieren Sie mit dem nachstehenden Kommando: &prompt.root; pkg_add -r xfce Mit der Ports-Sammlung können Sie auch den Quellcode übersetzen: &prompt.root; cd /usr/ports/x11-wm/xfce &prompt.root; make install clean Damit beim nächsten Start des X-Servers XFce benutzt wird, setzen Sie das folgende Kommando ab: &prompt.user; echo "/usr/X11R6/bin/startxfce" > ~/.xinitrc Wenn Sie einen Display-Manager benutzen, erstellen Sie die Datei .xsession, wie im GNOME Abschnitt beschrieben. Verwenden Sie jetzt allerdings das Kommando /usr/X11R6/bin/startxfce. 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.