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 d2f647d8cb..f223feed1f 100644 --- a/de_DE.ISO8859-1/books/handbook/advanced-networking/chapter.sgml +++ b/de_DE.ISO8859-1/books/handbook/advanced-networking/chapter.sgml @@ -1,1400 +1,1400 @@ 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 - Ein häufige Frage lautet: Warum (oder wie) + 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. 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. Für komplexere Situationen sollen Sie sich net/gated näher ansehen. 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. - Bekanntmachen von Routen + 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 (z.B. durch Nichterreichbarkeit eines Gateway-Rechners). Für weitere Informationen lesen Sie bitte die Dokumentation zu &man.traceroute.8;. Eric Anderson Geschrieben von 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. Wireless background 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 + 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 + 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. 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 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. 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. Für weitere Informationen lesen Sie bitte die Dokumentationen zu &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 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 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. Für weitere Informationen über &man.ipsec.4;-Sicherheit, und dessen Implementierung lesen Sie 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. Für weitere Informationen zum Installieren von Ports lesen Sie bitte 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. wicontrol, ancontrol, raycontrol 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. ifconfig &man.ifconfig.8; kennt zwar viele Optionen von &man.wicontrol.8;, einige fehlen jedoch. Lesen Sie die Dokumentation zu &man.ifconfig.8; für weitere Informationen zu Parametern und Optionen. 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. Für weitere Informationen zur Konfiguration der Bridge als Firewall lesen Sie bitte den entsprechenden Abschnitt des Handbuchs (). Wenn Sie Nicht-IP-Pakete (wie z.B. ARP) 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 Leistung Meine Bridge/Firewall besteht aus einem Pentium90-System mit einer 3Com 3C900B und einer 3Com 3C905B Netzkarte. Die geschützte Seite des Netzwerks läuft im 10 mbps Halbduplex-Modus, und die Verbindung zwischen der Bridge und meinem Router (einem Cisco 675) läuft im 100 mbps Fullduplex-Modus. Ohne aktivierte Paketfilterung habe ich festgestellt, dass die Bridge Pings vom geschützten Netzwerk zum Cisco-Router um etwa 0,4  Millisekunden verzögert. 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. NFS (Network File System) Dieser Abschnitt ist noch nicht übersetzt. Lesen Sie bitte das Original in englischer Sprache. Start und Betrieb von FreeBSD über ein Netzwerk Dieser Abschnitt ist noch nicht übersetzt. Lesen Sie bitte das Original in englischer Sprache. ISDN (Integrated Service Data Network) Dieser Abschnitt ist noch nicht übersetzt. Lesen Sie bitte das Original in englischer Sprache. NIS / YP (Network Information Service) Dieser Abschnitt ist noch nicht übersetzt. Lesen Sie bitte das Original in englischer Sprache. DHCP (Dynamic Host Configuration Protocol) Dieser Abschnitt ist noch nicht übersetzt. Lesen Sie bitte das Original in englischer Sprache. 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 2fe866a264..902ebc6e25 100644 --- a/de_DE.ISO8859-1/books/handbook/basics/chapter.sgml +++ b/de_DE.ISO8859-1/books/handbook/basics/chapter.sgml @@ -1,1884 +1,1884 @@ 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 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 in einer POSIX.1e-kompatiblen Art und 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. 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— + 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 + 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: Mount Optionen 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. Virtuelle Konsolen und Terminals Virtuelle Konsole Terminal 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. 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/config/chapter.sgml b/de_DE.ISO8859-1/books/handbook/config/chapter.sgml index 2323d0c4ed..70f07e1d74 100644 --- a/de_DE.ISO8859-1/books/handbook/config/chapter.sgml +++ b/de_DE.ISO8859-1/books/handbook/config/chapter.sgml @@ -1,1855 +1,2146 @@ Chern Lee Geschrieben von Mike Smith Nach einem Tutorium von Matt Dillon Basiert ebenfalls auf tuning(7) von Martin Heinen Übersetzt von Konfiguration und Tuning Übersicht System-Konfiguration/Optimierung Ein korrekt konfiguriertes System kann die Arbeit, die bei der zukünftigen Pflege und bei Migrationen des Systems entsteht, erheblich reduzieren. Dieses Kapitel beschreibt die Konfiguration von FreeBSD sowie Maßnahmen zur Leistungssteigerung von FreeBSD Systemen. Nachdem Sie dieses Kapitel durchgearbeitet haben, werden Sie Folgendes wissen: Wie Sie effizient Dateisysteme und Swap-Partitionen auf Ihrer Festplatte einrichten. Die Grundlagen der Konfiguration mit rc.conf und des Systems zum Starten von Anwendungen in /usr/local/etc/rc.d. Wie Sie virtuelle Hosts und Netzwerkgeräte konfigurieren. Wie Sie die verschiedenen Konfigurationsdateien in /etc benutzen. Wie Sie mit sysctl-Variablen FreeBSD einstellen können. Wie Sie die Platten Performance einstellen und Kernel Parameter modifizieren können. Bevor Sie dieses Kapitel lesen, sollten Sie die Grundlagen von &unix; und FreeBSD () verstehen. Damit vertraut sein, wie Sie die FreeBSD-Quellen aktuell halten () und wissen, wie Sie einen Kernel konfigurieren und kompilieren (). Vorbereitende Konfiguration Layout von Partitionen Layout von Partitionen /etc /var /usr Partitionen Wenn Sie Dateisysteme mit &man.disklabel.8; oder &man.sysinstall.8; anlegen, sollten Sie beachten, dass Festplatten auf Daten in den äußeren Spuren schneller zugreifen können als auf Daten in den inneren Spuren. Daher sollten die kleineren oft benutzten Dateisysteme, wie das Root-Dateisystem oder die Swap-Partition, an den äußeren Rand der Platte gelegt werden. Die größeren Partitionen wie /usr sollten in die inneren Bereiche gelegt werden. Es empfiehlt sich, die Partitionen in einer ähnlichen Reihenfolge wie Root-Partition, Swap, /var und /usr anzulegen. Die Größe von /var ist abhängig vom Zweck der Maschine. /var enthält hauptsächlich Postfächer, den Spoolbereich zum Drucken und Logdateien. Abhängig von der Anzahl der Systembenutzer und der Aufbewahrungszeit für Logdateien, können gerade die Postfächer und Logdateien zu ungeahnten Größen wachsen. Oft werden Sie mit weniger als einem Gigabyte auskommen, doch beachten Sie, dass /var/tmp für Pakete ausreichend dimensioniert ist. Die /usr-Partition enthält den Hauptteil des Systems, die Ports-Sammlung (empfohlen) und die Quellen (optional). Im Laufe der Installation haben Sie die Möglichkeit, die Quellen und die Ports-Sammlung gleich mit zu installieren. Für die /usr-Partition sollten Sie mindestens 2 Gigabyte vorsehen. Wenn Sie die Größe der Partitionen festlegen, beachten Sie bitte das Wachstum Ihres Systems. Wenn Sie den Platz auf einer Partition vollständig aufgebraucht haben, eine andere Partition aber kaum benutzen, kann die Handhabung des Systems schwierig werden. Die automatische Partitionierung von &man.sysinstall.8; mit Auto-defaults legt manchmal zu kleine / und /var-Partition an. Partitionieren Sie weise und großzügig. Swap Partition Größe der Swap-Partition Swap-Partition Als Daumenregel sollten Sie doppelt soviel Speicher für die Swap-Partition vorsehen, als Sie Hauptspeicher haben. Verfügt die Maschine beispielsweise über 128 Megabyte Hauptspeicher, sollten Sie 256 Megabyte für den Swap-Bereich vorsehen. Systeme mit weniger Speicher werden wahrscheinlich mit viel mehr Swap mehr leisten. Es wird nicht empfohlen, weniger als 256 Megabyte Swap einzurichten. Außerdem sollten Sie künftige Speichererweiterungen beachten, wenn Sie die Swap-Partition einrichten. Die VM-Paging-Algorithmen im Kernel sind so eingestellt, dass Sie am besten laufen, wenn die Swap-Partition mindestens doppelt so groß wie der Hauptspeicher ist. Zu wenig Swap kann zu einer Leistungsverminderung im VM page scanning Code führen, sowie Probleme verursachen, wenn Sie später mehr Speicher in Ihre Maschine bauen. Auf größeren Systemen mit mehreren SCSI-Laufwerken (oder mehreren IDE-Laufwerken an unterschiedlichen Controllern) empfehlen wir Ihnen, Swap-Bereiche auf bis zu vier Laufwerken einzurichten. Diese Swap-Partitionen sollten ungefähr dieselbe Größe haben. Der Kernel kann zwar mit beliebigen Größen umgehen, aber die internen Datenstrukturen skalieren bis zur vierfachen Größe der größten Partition. Ungefähr gleich große Swap-Partitionen erlauben es dem Kernel, den Swap-Bereich optimal über die Laufwerke zu verteilen. Große Swap-Bereiche, auch wenn sie nicht oft gebraucht werden, sind nützlich, da sich ein speicherfressendes Programm unter Umständen auch ohne einen Neustart des Systems beenden lässt. Warum partitionieren? Gegen eine einzelne Partition sprechen mehrere Gründe. Jede Partition hat im Betrieb unterschiedliche Eigenschaften und die Trennung der Partitionen erlaubt es, die Dateisysteme an diese Eigenschaften anzupassen. Die Root- und /usr-Partitionen weisen meist nur lesende Zugriffe auf, während /var und /var/tmp hauptsächlich beschrieben werden. Indem Sie ein System richtig partitionieren, verhindern Sie, dass eine Fragmentierung in den häufig beschriebenen Partitionen auf die meist nur gelesenen Partitionen übergreift. Wenn Sie die häufig beschriebenen Partitionen an den Rand der Platte, legen, dann wird die I/O-Leistung diesen Partitionen steigen. Die I/O-Leistung ist natürlich auch für große Partitionen wichtig, doch erzielen Sie eine größere Leistungssteigerung, wenn Sie /var an den Rand der Platte legen. Schließlich sollten Sie noch die Stabilität des Systems beachten. Eine kleine Root-Partition, auf die meist nur lesend zugegriffen wird, überlebt einen schlimmen Absturz wahrscheinlich eher als eine große Partition. Basiskonfiguration rc Dateien rc.conf Informationen zur Systemkonfiguration sind hauptsächlich in /etc/rc.conf, die meist beim Start des Systems verwendet wird, abgelegt. Der Name der Datei zeigt ihren Zweck an: Sie enthält die Konfigurationen für die rc* Dateien. In rc.conf werden die Vorgabewerte aus /etc/defaults/rc.conf überschrieben. Die Vorgabedatei sollte nicht nach /etc kopiert werden, da sie die Vorgabewerte und keine Beispiele enthält. Jede systemspezifische Änderung wird in rc.conf vorgenommen. Um den administrativen Aufwand gering zu halten, existieren in geclusterten Anwendungen mehrere Strategien, globale Konfigurationen von systemspezifischen Konfigurationen zu trennen. Der empfohlene Weg hält die globale Konfiguration in einer separaten Datei z.B. rc.conf.site. Diese Datei wird dann in /etc/rc.conf, die nur systemspezifische Informationen enthält, eingebunden. Da rc.conf von &man.sh.1; gelesen wird, ist das einfach zu erreichen: rc.conf: . rc.conf.site hostname="node15.example.com" network_interfaces="fxp0 lo0" ifconfig_fxp0="inet 10.1.1.1" rc.conf.site: defaultrouter="10.1.1.254" saver="daemon" blanktime="100" rc.conf.site kann dann auf jedes System mit rsync verteilt werden, rc.conf bleibt dabei systemspezifisch. Bei einem Upgrade des Systems mit &man.sysinstall.8; oder make world wird rc.conf nicht überschrieben, so dass die Systemkonfiguration erhalten bleibt. Konfiguration von Anwendungen Installierte Anwendungen haben typischerweise eigene Konfigurationsdateien, die eine eigene Syntax verwenden. Damit diese Dateien leicht von der Paketverwaltung gefunden und verwaltet werden können, ist es wichtig, sie vom Basissystem zu trennen. /usr/local/etc Für gewöhnlich werden diese Dateien in /usr/local/etc installiert. Besitzt eine Anwendung viele Konfigurationsdateien, werden diese in einem separaten Unterverzeichnis abgelegt. Wenn ein Port oder ein Paket installiert wird, werden normalerweise auch Beispiele für die Konfigurationsdateien installiert. Diese erkennt man gewöhnlich an dem Suffix .default. Wenn keine Konfigurationsdateien für eine Anwendung existieren, werden sie durch Kopieren der .default Dateien erstellt. Als Beispiel sei /usr/local/etc/apache gezeigt: -rw-r--r-- 1 root wheel 2184 May 20 1998 access.conf -rw-r--r-- 1 root wheel 2184 May 20 1998 access.conf.default -rw-r--r-- 1 root wheel 9555 May 20 1998 httpd.conf -rw-r--r-- 1 root wheel 9555 May 20 1998 httpd.conf.default -rw-r--r-- 1 root wheel 12205 May 20 1998 magic -rw-r--r-- 1 root wheel 12205 May 20 1998 magic.default -rw-r--r-- 1 root wheel 2700 May 20 1998 mime.types -rw-r--r-- 1 root wheel 2700 May 20 1998 mime.types.default -rw-r--r-- 1 root wheel 7980 May 20 1998 srm.conf -rw-r--r-- 1 root wheel 7933 May 20 1998 srm.conf.default Anhand der Dateigröße erkennen Sie, dass sich nur srm.conf geändert hat. Eine spätere Aktualisierung des Apache Ports überschreibt diese Datei nicht. Start von Diensten Dienste Es ist üblich, dass ein System mehrere Dienste zur Verfügung stellt. Diese können auf verschiedene Weisen, die jeweils andere Vorteile haben, gestartet werden. /usr/local/etc/rc.d Software, die von einem Port oder einem Paket installiert wurde, wird oft ein Skript in /usr/local/etc/rc.d stellen. Dieses wird beim Hochfahren des Systems mit dem Argument und beim Herunterfahren mit dem Argument aufgerufen. Das ist der empfohlene Weg, systemweite Dienste, die unter root laufen oder unter root gestartet werden, zu starten. Die Skripten werden bei der Installation des Paketes registriert und entfernt, wenn das Paket entfernt wird. Ein typisches Skript in /usr/local/etc/rc.d sieht wie folgt aus: #!/bin/sh echo -n ' FooBar' case "$1" in start) /usr/local/bin/foobar ;; stop) kill -9 `cat /var/run/foobar.pid` ;; *) echo "Usage: `basename $0` {start|stop}" >&2 exit 64 ;; esac exit 0 Die Startskripten von FreeBSD suchen in /usr/local/etc/rc.d nach Dateien mit dem Suffix .sh, die von root ausgeführt werden können. Die gefundenen Skripten werden beim Hochfahren des Systems mit der Option und beim Herunterfahren mit der Option aufgerufen, damit sie die passenden Aktionen ausführen können. Wenn Sie das vorige Beispiel beim Systemstart verwenden wollen, sollten Sie es also als FooBar.sh in /usr/local/etc/rc.d speichern und sicherstellen, das das Skript ausführbar ist. Benutzen Sie &man.chmod.1;, um das Skript ausführbar zu machen: &prompt.root; chmod 755 FooBar.sh Manche Dienste werden von &man.inetd.8; aufgerufen, wenn eine Verbindung auf dem passenden Port aufgebaut wird. Üblich ist das für Server von Mail-Clients (POP, IMAP, usw.). Diese Dienste werden durch das Editieren von /etc/inetd.conf aktiviert. Details dazu finden sich in &man.inetd.8;. Weitere Systemdienste werden vielleicht nicht von /etc/rc.conf abgedeckt. Diese werden traditionell durch Kommandos in /etc/rc.local aktiviert. Seit FreeBSD 3.1 existiert keine Vorgabe für /etc/rc.local mehr. Wenn die Datei allerdings von einem Administrator angelegt wird, so wird sie auch ausgeführt. Beachten Sie bitte, dass /etc/rc.local als der letzte Weg, einen Dienst zu starten, angesehen wird. Wenn es eine andere Möglichkeit gibt, den Dienst zu starten, nehmen Sie diese bitte wahr. Fügen Sie bitte keine Kommandos in /etc/rc.conf ein. Starten Sie stattdessen Dæmons oder Kommandos beim Hochfahren mit Skripten in /usr/local/etc/rc.d. Systemdienste können auch mit &man.cron.8; gestartet werden. Dieser Ansatz hat einige Vorteile; nicht zuletzt, weil &man.cron.8; die Prozesse unter dem Eigentümer der crontab startet, ist es möglich, dass Dienste von nicht-root Benutzern gestartet und gepflegt werden können. Dies nutzt eine Eigenschaft von &man.cron.8;: Für die Zeitangabe kann @reboot eingesetzt werden. Damit wird das Kommando gestartet, wenn &man.cron.8; kurz nach dem Systemboot gestartet wird. Marc Fonvieille Beigetragen von Einrichten von Netzwerkkarten Netzwerkkarten Ein Rechner ohne Netzanschluss ist heute nicht mehr vorstellbar. Die Konfiguration einer Netzwerkkarte gehört zu den alltäglichen Aufgaben eines FreeBSD Administrators. Bestimmen des richtigen Treibers Netzwerkkarten Treiber Bevor Sie anfangen, sollten Sie das Modell Ihrer Karte kennen, wissen welchen Chip die Karte benutzt und bestimmen, ob es sich um eine PCI- oder ISA-Karte handelt. Eine Aufzählung der unterstützten PCI- und ISA-Karten finden Sie in der Liste der unterstützen Geräte. Schauen Sie nach, ob Ihre Karte dort aufgeführt ist. Wenn Sie wissen, dass Ihre Karte unterstützt wird, müssen Sie den Treiber für Ihre Karte bestimmen. /usr/src/sys/i386/conf/LINT enthält eine Liste der verfügbaren Treiber mit Informationen zu den unterstützten Chipsätzen und Karten. Wenn Sie sich nicht sicher sind, ob Sie den richtigen Treiber ausgewählt haben, lesen Sie die Hilfeseite des Treibers. Die Hilfeseite enthält weitere Informationen über die unterstützten Geräte und macht auch auf mögliche Probleme aufmerksam. Wenn Sie eine gebräuchliche Karte besitzen, brauchen Sie meistens nicht lange nach dem passenden Treiber zu suchen. Die Treiber zu diesen Karten sind schon im GENERIC-Kernel enthalten und die Karte sollte während des Systemstarts erkannt werden: dc0: <82c169 PNIC 10/100BaseTX> port 0xa000-0xa0ff mem 0xd3800000-0xd38 000ff irq 15 at device 11.0 on pci0 dc0: Ethernet address: 00:a0:cc:da:da:da miibus0: <MII bus> on dc0 ukphy0: <Generic IEEE 802.3u media interface> on miibus0 ukphy0: 10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, auto dc1: <82c169 PNIC 10/100BaseTX> port 0x9800-0x98ff mem 0xd3000000-0xd30 000ff irq 11 at device 12.0 on pci0 dc1: Ethernet address: 00:a0:cc:da:da:db miibus1: <MII bus> on dc1 ukphy1: <Generic IEEE 802.3u media interface> on miibus1 ukphy1: 10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, auto Im Beispiel erkennt das System zwei Karten, die den &man.dc.4; Treiber benutzen. Der richtige Treiber muss geladen sein, damit eine Netzwerkkarte benutzt werden kann. Der Treiber kann auf zwei Arten geladen werden: Am einfachsten laden Sie das Kernelmodul für Ihre Karte mit &man.kldload.8;. Für manche Netzwerkkarten gibt es kein Kernelmodul (beispielsweise für ISA-Karten, die den &man.ed.4; Treiber benutzen). Die zweite Möglichkeit ist, die Unterstützung für Ihre Karte fest in den Kernel einzubinden. Schauen Sie sich dazu /usr/src/sys/i386/conf/LINT und die Hilfeseite des Treibers, den Sie in den Kernel einbinden möchten, an. Die Übersetzung des Kernels wird in beschrieben. Wenn Ihre Karte während des Systemstarts vom Kernel (GENERIC) erkannt wurde, müssen Sie den Kernel nicht neu übersetzen. Konfiguration von Netzwerkkarten Netzwerkkarten konfigurieren Nachdem der richtige Treiber für die Karte geladen ist, muss die Karte konfiguriert werden. Unter Umständen ist die Karte schon während der Installation mit sysinstall konfiguriert worden. Das nachstehende Kommando zeigt die Konfiguration der Karten eines Systems an: &prompt.user; ifconfig dc0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500 inet 192.168.1.3 netmask 0xffffff00 broadcast 192.168.1.255 ether 00:a0:cc:da:da:da media: Ethernet autoselect (100baseTX <full-duplex>) status: active dc1: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500 inet 10.0.0.1 netmask 0xffffff00 broadcast 10.0.0.255 ether 00:a0:cc:da:da:db media: Ethernet 10baseT/UTP status: no carrier lp0: flags=8810<POINTOPOINT,SIMPLEX,MULTICAST> mtu 1500 lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 16384 inet 127.0.0.1 netmask 0xff000000 tun0: flags=8010<POINTOPOINT,MULTICAST> mtu 1500 In alten Versionen von FreeBSD müssen Sie vielleicht noch auf der Kommandozeile von &man.ifconfig.8; angeben. Hinweise zum Gebrauch von &man.ifconfig.8; entnehmen Sie bitte der Hilfeseite. Beachten Sie, dass in diesem Beispiel die IPv6-Ausgaben (inet6 etc.) ausgelassen wurden. Im Beispiel werden Informationen zu den folgenden Geräten angezeigt: dc0: Der erste Ethernet-Adapter dc1: Der zweite Ethernet-Adapter lp0: Die parallele Schnittstelle lo0: Das Loopback-Gerät tun0: Das von ppp benutzte Tunnel-Gerät Der Name der Netzwerkkarte wird aus dem Namen des Treibers und einer Zahl zusammengesetzt. Die Zahl gibt die Reihenfolge an, in der die Geräte beim Systemstart erkannt wurden. Die dritte Karte, die den &man.sis.4; Treiber benutzt, würde beispielsweise sis2 heißen. Der Adapter dc0 aus dem Beispiel ist aktiv. Sie erkennen das an den folgenden Hinweisen: UP bedeutet, dass die Karte konfiguriert und aktiv ist. Der Karte wurde die Internet-Adresse (inet) 192.168.1.3 zugewiesen. Die Subnetzmaske ist richtig (0xffffff00 entspricht 255.255.255.0). Die Broadcast-Adresse 192.168.1.255 ist richtig. Die MAC-Adresse der Karte (ether) lautet 00:a0:cc:da:da:da. Die automatische Medienerkennung ist aktiviert (media: Ethernet autoselect (100baseTX <full-duplex>)). Der Adapter dc1 benutzt das Medium 10baseT/UTP. Weitere Informationen über die einstellbaren Medien entnehmen Sie bitte der Hilfeseite des Treibers. Der Verbindungsstatus (status) ist active, das heißt es wurde ein Trägersignal entdeckt. Für dc1 wird status: no carrier angezeigt. Das ist normal, wenn kein Kabel an der Karte angeschlossen ist. Wäre die Karte nicht konfiguriert, würde die Ausgabe von &man.ifconfig.8; so aussehen: dc0: flags=8843<BROADCAST,SIMPLEX,MULTICAST> mtu 1500 ether 00:a0:cc:da:da:da Sie brauchen die Berechtigungen von root, um Ihre Karte zu konfigurieren. Die Konfiguration kann auf der Kommandozeile mit &man.ifconfig.8; erfolgen, allerdings müsste sie dann nach jedem Neustart wiederholt werden. Dauerhaft wird die Karte in /etc/rc.conf konfiguriert. Öffnen Sie /etc/rc.conf mit Ihrem Lieblingseditor und fügen Sie für jede Karte Ihres Systems eine Zeile hinzu. In dem hier diskutierten Fall wurden die nachstehenden Zeilen eingefügt: ifconfig_dc0="inet 192.168.1.3 netmask 255.255.255.0" ifconfig_dc1="inet 10.0.0.1 netmask 255.255.255.0 media 10baseT/UTP" Ersetzen Sie dc0, dc1 usw. durch die Gerätenamen Ihrer Karten und setzen Sie die richtigen IP-Adressen ein. Die Hilfeseiten des Treibers und &man.ifconfig.8; enthalten weitere Einzelheiten über verfügbare Optionen. Die Syntax von /etc/rc.conf wird in &man.rc.conf.5; erklärt. Wenn Sie das Netz während der Installation konfiguriert haben, existieren vielleicht schon Einträge für Ihre Karten. Überprüfen Sie /etc/rc.conf bevor Sie weitere Zeilen hinzufügen. In /etc/hosts können Sie die Namen und IP-Adressen der Rechner Ihres LANs eintragen. Weitere Informationen entnehmen Sie bitte &man.hosts.5; und /usr/share/examples/etc/hosts. Test und Fehlersuche Nachdem Sie die notwendigen Änderungen in /etc/rc.conf vorgenommen haben, führen Sie einen Neustart Ihres Systems durch. Dadurch werden die Adapter konfiguriert und Sie stellen sicher, dass der Start ohne Konfigurationsfehler erfolgt. Wenn das System gestartet ist, sollten Sie die Netzwerkkarten testen. Test der Ethernet-Karte Netzwerkkarten Test Mit zwei Tests können Sie prüfen, ob die Ethernet-Karte richtig konfiguriert ist. Testen Sie zuerst mit ping den Adapter selbst und sprechen Sie dann eine andere Maschine im LAN an. Zuerst, der Test des Adapters: &prompt.user; ping -c5 192.168.1.3 PING 192.168.1.3 (192.168.1.3): 56 data bytes 64 bytes from 192.168.1.3: icmp_seq=0 ttl=64 time=0.082 ms 64 bytes from 192.168.1.3: icmp_seq=1 ttl=64 time=0.074 ms 64 bytes from 192.168.1.3: icmp_seq=2 ttl=64 time=0.076 ms 64 bytes from 192.168.1.3: icmp_seq=3 ttl=64 time=0.108 ms 64 bytes from 192.168.1.3: icmp_seq=4 ttl=64 time=0.076 ms --- 192.168.1.3 ping statistics --- 5 packets transmitted, 5 packets received, 0% packet loss round-trip min/avg/max/stddev = 0.074/0.083/0.108/0.013 ms Jetzt versuchen wir, eine andere Maschine im LAN zu erreichen: &prompt.user; ping -c5 192.168.1.2 PING 192.168.1.2 (192.168.1.2): 56 data bytes 64 bytes from 192.168.1.2: icmp_seq=0 ttl=64 time=0.726 ms 64 bytes from 192.168.1.2: icmp_seq=1 ttl=64 time=0.766 ms 64 bytes from 192.168.1.2: icmp_seq=2 ttl=64 time=0.700 ms 64 bytes from 192.168.1.2: icmp_seq=3 ttl=64 time=0.747 ms 64 bytes from 192.168.1.2: icmp_seq=4 ttl=64 time=0.704 ms --- 192.168.1.2 ping statistics --- 5 packets transmitted, 5 packets received, 0% packet loss round-trip min/avg/max/stddev = 0.700/0.729/0.766/0.025 ms Sie können auch den Namen der Maschine anstelle von 192.168.1.2 benutzen, wenn Sie /etc/hosts entsprechend eingerichtet haben. Fehlersuche Netzwerkkarten Fehlersuche Wo finde ich Informationen über mögliche Probleme mit meiner Karte? Zuerst sollten Sie die Hilfeseiten des Treibers lesen. Die Archive der Mailinglisten können ebenfalls hilfreich sein. Wenn ich versuche mit ping einen anderen Rechner im LAN zu erreichen, erhalte ich die Meldung: ping: sendto: Permission denied. Sie dürfen keine ICMP-Pakete verschicken. Prüfen Sie, ob auf der Maschine eine Firewall läuft, die ICMP verbietet. In den Systemprotokollen finden sich viele watchdog timeout Meldungen. Bei dem Versuch andere Rechner im LAN zu erreichen, gibt ping die Meldung ping: sendto: No route to host aus. Kontrollieren Sie zuerst das Netzkabel. Überprüfen Sie dann, ob der PCI-Steckplatz der Karte Bus Mastering unterstützt. Auf einigen älteren Motherboards ist das nur für einen Steckplatz (meistens Steckplatz 0) der Fall. Lesen Sie in der Dokumentation Ihrer Karte und Ihres Motherboards nach, ob das vielleicht die Ursache des Problems sein könnte. Ich finde viele device timeout Meldungen in den Systemprotokollen und meine Karte funktioniert nicht. Je nach Karte können mal ein oder zwei dieser Meldungen auftauchen. Wenn sie aber immer wieder kommen und sich das Netz nicht benutzen lässt, prüfen Sie das Netzkabel. Stellen Sie zudem sicher, dass es keinen IRQ-Konflikt zwischen der Netzwerkkarte und anderen Geräten Ihres Systems gibt. Die Leistung der Karte ist schlecht. Wie kann ich das ändern? Das ist schwer zu beantworten, was genau verstehen Sie unter Leistung? Überprüfen Sie die Konfiguration und lesen Sie &man.tuning.7;. Kaufen Sie auch keine billigen Netzwerkkarten. Viele Benutzer berichten, dass die automatische Medienerkennung (autoselect) mit mancher Hardware zu Leistungseinbrüchen führt. Welche Karten soll ich einsetzen und welche nicht? Setzen Sie keine billigen Karten ein. Diese Karten benutzen oft fehlerhafte Chipsätze und die meisten sind nicht sehr leistungsfähig. Viele FreeBSD Anwender benutzen den &man.fxp.4; Chipsatz, das heißt aber nicht, dass die anderen Chipsätze schlecht sind. Virtual Hosts virtual hosts IP Aliase Ein gebräuchlicher Zweck von FreeBSD ist das virtuelle Hosting, bei dem ein Server im Netzwerk wie mehrere Server aussieht. Dies wird dadurch erreicht, dass einem Netzwerkinterface mehrere Netzwerk-Adressen zugewiesen werden. Ein Netzwerkinterface hat eine echte Adresse und kann beliebig viele alias Adressen haben. Die Aliase werden durch entsprechende alias Einträge in /etc/rc.conf festgelegt. Ein alias Eintrag für das Interface fxp0 sieht wie folgt aus: ifconfig_fxp0_alias0="inet xxx.xxx.xxx.xxx netmask xxx.xxx.xxx.xxx" Beachten Sie, dass die alias Einträge mit alias0 anfangen müssen und dann weiter hochgezählt werden, das heißt _alias1, _alias2, usw. Die Konfiguration der Aliase hört bei der ersten fehlenden Zahl auf. Die Berechnung der Alias-Netzwerkmasken ist wichtig, doch zum Glück einfach. Für jedes Interface muss es eine Adresse geben, die die Netzwerkmaske des Netzwerkes richtig beschreibt. Alle anderen Adressen in diesem Netzwerk haben dann - eine Netzwerkmaske, die mit 1 gefüllt ist. + eine Netzwerkmaske, die mit 1 gefüllt + ist. Als Beispiel betrachten wir den Fall, in dem fxp0 mit zwei Netzwerken verbunden ist: dem Netzwerk 10.1.1.0 mit der Netzwerkmaske 255.255.255.0 und dem Netzwerk 202.0.75.16 mit der Netzwerkmaske 255.255.255.240. Das System soll die Adressen 10.1.1.1 bis 10.1.1.5 und 202.0.75.17 bis 202.0.75.20 belegen. Die folgenden Einträge konfigurieren den Adapter entsprechend dem Beispiel: ifconfig_fxp0="inet 10.1.1.1 netmask 255.255.255.0" ifconfig_fxp0_alias0="inet 10.1.1.2 netmask 255.255.255.255" ifconfig_fxp0_alias1="inet 10.1.1.3 netmask 255.255.255.255" ifconfig_fxp0_alias2="inet 10.1.1.4 netmask 255.255.255.255" ifconfig_fxp0_alias3="inet 10.1.1.5 netmask 255.255.255.255" ifconfig_fxp0_alias4="inet 202.0.75.17 netmask 255.255.255.240" ifconfig_fxp0_alias5="inet 202.0.75.18 netmask 255.255.255.255" ifconfig_fxp0_alias6="inet 202.0.75.19 netmask 255.255.255.255" ifconfig_fxp0_alias7="inet 202.0.75.20 netmask 255.255.255.255" Konfigurationsdateien <filename>/etc</filename> Layout Konfigurationsdateien finden sich in einigen Verzeichnissen unter anderem in: /etc Enthält generelle Konfigurationsinformationen, die Daten hier sind systemspezifisch. /etc/defaults Default Versionen der Konfigurationsdateien. /etc/mail Enthält die &man.sendmail.8; Konfiguration und weitere MTA Konfigurationsdateien. /etc/ppp Hier findet sich die Konfiguration für die User- und Kernel-ppp Programme. /etc/namedb Das Vorgabeverzeichnis, in dem Daten von &man.named.8; gehalten werden. Normalerweise werden hier named.conf und Zonendaten abgelegt. /usr/local/etc Installierte Anwendungen legen hier ihre Konfigurationsdateien ab. Dieses Verzeichnis kann Unterverzeichnisse für bestimmte Anwendungen enthalten. /usr/local/etc/rc.d Ort für Start- und Stopskripten installierter Anwendungen. /var/db Automatisch generierte systemspezifische Datenbanken, wie die Paket-Datenbank oder die locate-Datenbank. Hostnamen hostname DNS <filename>/etc/resolv.conf</filename> resolv.conf Wie der FreeBSD Resolver auf das Internet Domain Name System (DNS) zugreift, wird in /etc/resolv.conf festgelegt. Die gebräuchlichsten Einträge in /etc/resolv.conf sind: nameserver Die IP-Adresse eines Nameservers, den der Resolver abfragen soll. Bis zu drei Server werden in der Reihenfolge, in der sie aufgezählt sind, abgefragt. search Suchliste mit Domain-Namen zum Auflösen von Hostnamen. Die Liste wird normalerweise durch den Domain-Teil des lokalen Hostnamens festgelegt. domain Der lokale Domain-Name. Beispiel für eine typische resolv.conf: search example.com nameserver 147.11.1.11 nameserver 147.11.100.30 Nur eine der Anweisungen search oder domain sollte benutzt werden. Wenn Sie DHCP benutzen, überschreibt &man.dhclient.8; für gewöhnlich resolv.conf mit den Informationen vom DHCP-Server. <filename>/etc/hosts</filename> hosts /etc/hosts ist eine einfache textbasierte Datenbank, die aus alten Internetzeiten stammt. Zusammen mit DNS und NIS stellt sie eine Abbildung zwischen Namen und IP-Adressen zur Verfügung. Anstatt &man.named.8; zu konfigurieren, können hier lokale Rechner, die über ein LAN verbunden sind, eingetragen werden. Lokale Einträge für gebräuchliche Internet-Adressen in /etc/hosts verhindern die Abfrage eines externen Servers und beschleunigen die Namensauflösung. # $FreeBSD$ # # Host Database # This file should contain the addresses and aliases # for local hosts that share this file. # In the presence of the domain name service or NIS, this file may # not be consulted at all; see /etc/nsswitch.conf for the resolution order. # # ::1 localhost localhost.my.domain myname.my.domain 127.0.0.1 localhost localhost.my.domain myname.my.domain # # Imaginary network. #10.0.0.2 myname.my.domain myname #10.0.0.3 myfriend.my.domain myfriend # # According to RFC 1918, you can use the following IP networks for # private nets which will never be connected to the Internet: # # 10.0.0.0 - 10.255.255.255 # 172.16.0.0 - 172.31.255.255 # 192.168.0.0 - 192.168.255.255 # # In case you want to be able to connect to the Internet, you need # real official assigned numbers. PLEASE PLEASE PLEASE do not try # to invent your own network numbers but instead get one from your # network provider (if any) or from the Internet Registry (ftp to # rs.internic.net, directory `/templates'). # /etc/hosts hat ein einfaches Format: [Internet Adresse] [Offizieller Hostname] [Alias1] [Alias2] ... Zum Beispiel: 10.0.0.1 myRealHostname.example.com myRealHostname foobar1 foobar2 Weitere Informationen entnehmen Sie bitte &man.hosts.5;. Konfiguration von Logdateien Logdateien <filename>syslog.conf</filename> syslog.conf syslog.conf ist die Konfigurationsdatei von &man.syslogd.8;. Sie legt fest, welche syslog Meldungen in welche Logdateien geschrieben werden. # $FreeBSD$ # # Spaces ARE valid field separators in this file. However, # other *nix-like systems still insist on using tabs as field # separators. If you are sharing this file between systems, you # may want to use only tabs as field separators here. # Consult the syslog.conf(5) manpage. *.err;kern.debug;auth.notice;mail.crit /dev/console *.notice;kern.debug;lpr.info;mail.crit;news.err /var/log/messages security.* /var/log/security mail.info /var/log/maillog lpr.info /var/log/lpd-errs cron.* /var/log/cron *.err root *.notice;news.err root *.alert root *.emerg * # uncomment this to log all writes to /dev/console to /var/log/console.log #console.info /var/log/console.log # uncomment this to enable logging of all log messages to /var/log/all.log #*.* /var/log/all.log # uncomment this to enable logging to a remote log host named loghost #*.* @loghost # uncomment these if you're running inn # news.crit /var/log/news/news.crit # news.err /var/log/news/news.err # news.notice /var/log/news/news.notice !startslip *.* /var/log/slip.log !ppp *.* /var/log/ppp.log Weitere Informationen enthält &man.syslog.conf.5;. <filename>newsyslog.conf</filename> newsyslog.conf Die Konfigurationsdatei für &man.newsyslog.8;, das normalerweise von &man.cron.8; aufgerufen wird, ist newsyslog.conf. &man.newsyslog.8; stellt fest, ob Logdateien archiviert oder verschoben werden müssen. So wird logfile nach logfile.0 geschoben und logfile.0 nach logfile.1 usw. Zudem können Logdateien mit &man.gzip.1; komprimiert werden. Die Namen der Logdateien sind dann logfile.0.gz, logfile.1.gz usw. newsyslog.conf legt fest, welche Logdateien wann bearbeitet und wie viele Dateien behalten werden. Logdateien können auf Basis ihrer Größe oder zu einem gewissen Zeitpunkt archiviert bzw. umbenannt werden. # configuration file for newsyslog # $FreeBSD$ # # filename [owner:group] mode count size when [ZB] [/pid_file] [sig_num] /var/log/cron 600 3 100 * Z /var/log/amd.log 644 7 100 * Z /var/log/kerberos.log 644 7 100 * Z /var/log/lpd-errs 644 7 100 * Z /var/log/maillog 644 7 * @T00 Z /var/log/sendmail.st 644 10 * 168 B /var/log/messages 644 5 100 * Z /var/log/all.log 600 7 * @T00 Z /var/log/slip.log 600 3 100 * Z /var/log/ppp.log 600 3 100 * Z /var/log/security 600 10 100 * Z /var/log/wtmp 644 3 * @01T05 B /var/log/daily.log 640 7 * @T00 Z /var/log/weekly.log 640 5 1 $W6D0 Z /var/log/monthly.log 640 12 * $M1D0 Z /var/log/console.log 640 5 100 * Z Um mehr zu erfahren, lesen Sie bitte &man.newsyslog.8;. <filename>sysctl.conf</filename> sysctl.conf sysctl sysctl.conf sieht ähnlich wie rc.conf aus. Werte werden in der Form Variable=Wert gesetzt. Die angegebenen Werte werden gesetzt, nachdem sich das System im Mehrbenutzer Modus befindet, das heißt nicht alle Werte können in diesem Modus gesetzt werden. In der folgenden sysctl.conf wird das Loggen von fatalen Signalen abgestellt und Linux Programmen wird klar gemacht, dass sie in Wirklichkeit unter FreeBSD laufen: kern.logsigexit=0 # Do not log fatal signal exits (e.g. sig 11) compat.linux.osname=FreeBSD compat.linux.osrelease=4.3-STABLE Einstellungen mit sysctl sysctl Einstellungen mit sysctl Mit &man.sysctl.8; können Sie Änderungen an einem laufenden FreeBSD System vornehmen. Unter anderem können Optionen des TCP/IP-Stacks oder des virtuellen Speichermanagements verändert werden. Unter der Hand eines erfahrenen Systemadministrators kann dies die Systemperformance erheblich verbessern. Über 500 Variablen können mit &man.sysctl.8; gelesen und gesetzt werden. Der Hauptzweck von &man.sysctl.8; besteht darin, Systemeinstellungen zu lesen und zu verändern. Alle auslesbaren Variablen werden wie folgt angezeigt: &prompt.user; sysctl -a Sie können auch eine spezielle Variable, z.B. kern.maxproc lesen: &prompt.user; sysctl kern.maxproc kern.maxproc: 1044 Um eine Variable zu setzen, benutzen Sie die Syntax Variable= Wert: &prompt.root; sysctl kern.maxfiles=5000 kern.maxfiles: 2088 -> 5000 Mit sysctl können Sie Strings, Zahlen oder Boolean-Werte setzen. Bei Boolean-Werten setzen sie 1 für wahr und 0 für falsch. + + + + + + Tom + Rhodes + Contributed by + + + + + Schreibgeschützte Variablen + + Manchmal ist es notwendig, obwohl es nicht + empfohlen ist, schreibgeschützte + sysctl-Variablen zu verändern. + + Beispielsweise hat &man.cardbus.4; auf einigen Laptops + Schwierigkeiten, Speicherbereiche zu erkennen. Es treten + dann Fehlermeldungen wie die folgende auf: + + cbb0: Could not map register memory +device_probe_and_attach: cbb0 attach returned 12 + + Um dieses Problem zu lösen, muss eine + schreibgeschützte sysctl-Variable verändert + werden. Eine OID kann in der Datei + /boot/loader.conf.local überschrieben + werden. Die Datei /boot/defaults/loader.conf + enthält Vorgabewwerte für sysctl-Variablen. + + Das oben erwähnte Problem wird durch die Angabe von + in + /boot/loader.conf.local gelöst. + Danach sollte &man.cardbus.4; fehlerfrei funktionieren. + Tuning von Laufwerken Sysctl Variablen <varname>vfs.vmiodirenable</varname> vfs.vmiodirenable Die Variable vfs.vmiodirenable besitzt in der Voreinstellung den Wert 1. Die Variable kann auf den Wert 0 (ausgeschaltet) oder 1 (angeschaltet) gesetzt werden. Sie steuert, wie Verzeichnisse vom System zwischengespeichert werden. Die meisten Verzeichnisse sind klein und benutzen nur ein einzelnes Fragment, typischerweise 1 kB, im Dateisystem. Im Buffer-Cache verbrauchen sie mit 512 Bytes noch weniger Platz. In der Voreinstellung wird der Buffer-Cache nur eine limitierte Anzahl Verzeichnisse zwischenspeichern, auch wenn das System über sehr viel Speicher verfügt. Wenn Sie diese Variable aktivieren, kann der Buffer-Cache den VM-Page-Cache benutzen, um Verzeichnisse zwischenzuspeichern. Der ganze Speicher steht damit zum Zwischenspeichern von Verzeichnissen zur Verfügung. Der Nachteil bei dieser Vorgehensweise ist, dass zum Zwischenspeichern eines Verzeichnisses mindestens eine physikalische Seite im Speicher, die normalerweise 4 kB groß ist, anstelle von 512 Bytes gebraucht wird. Wir empfehlen diese Option zu aktivieren, wenn Sie Dienste zur Verfügung stellen, die viele Dateien manipulieren. Beispiele für solche Dienste sind Web-Caches, große Mail-Systeme oder Netnews. Trotz des verschwendeten Speichers vermindert das Aktivieren dieser Variable in aller Regel nicht die Leistung des Systems, obwohl Sie das nachprüfen sollten. + + <varname>vfs.write_behind</varname> + + + vfs.write_behind + + + In der Voreinstellung besitzt die Variable + vfs.write_behind den Wert + 1 (aktiviert). Mit dieser Einstellung + schreibt das Dateisystem anfallende vollständige Cluster, + die besonders beim sequentiellen Schreiben großer Dateien + auftreten, direkt auf das Medium aus. Dies verhindert, + dass sich im Buffer-Cache veränderte Puffer + (dirty buffers) ansammeln, + die die I/O-Verarbeitung nicht mehr beschleunigen + würden. Unter bestimmten Umständen blockiert + diese Funktion allerdings Prozesse. Setzen Sie in diesem + Fall die Variable vfs.write_behind auf + den Wert 0. + + + + <varname>vfs.hirunningspace</varname> + + + vfs.hirunningspace + + + Die Variable vfs.hirunningspace + bestimmt systemweit die Menge ausstehender Schreiboperationen, + die dem Platten-Controller zu jedem beliebigen Zeitpunkt + übergeben werden können. Normalerweise können + Sie den Vorgabewert verwenden. Auf Systemen mit + vielen Platten kann der Wert aber auf 4 bis + 5 Megabyte erhöht werden. + Beachten Sie, dass ein zu hoher Wert (größer + als der Schreib-Schwellwert des Buffer-Caches) zu + Leistungverlusten führen kann. Setzen Sie den Wert daher + nicht zu hoch! Hohe Werte können auch Leseoperationen + verzögern, die gleichzeitig mit Schreiboperationen + ausgeführt werden. + + Es gibt weitere Variablen, mit denen Sie den Buffer-Cache + und den VM-Page-Cache beeinflussen können. Wir raten + Ihnen allerdings davon ab, diese Variablen zu verändern: + Seit FreeBSD 4.3 stellt sich die Verwaltung des virtuellen + Speichers sehr gut selbst ein. + + + + <varname>vm.swap_idle_enabled</varname> + + + vm.swap_idle_enabled + + + Die Variable vm.swap_idle_enabled + ist für große Mehrbenutzer-Systeme gedacht, auf + denen sich viele Benutzer an- und abmelden und auf denen + es viele Prozesse im Leerlauf + (idle) gibt. Solche Systeme + fragen kontinuierlich freien Speicher an. Wenn Sie die + Variable vm.swap_idle_enabled aktivieren, + können Sie die Auslagerungs-Hysterese von Seiten mit + den Variablen vm.swap_idle_threshold1 und + vm.swap_idle_threshold2 einstellen. Die + Schwellwerte beider Variablen geben die Zeit in Sekunden an, + in denen sich ein Prozess im Leerlauf befinden muss. Wenn die + Werte so eingestellt sind, dass Seiten früher als nach dem + normalen Algorithmus ausgelagert werden, verschafft das dem + Auslagerungs-Prozess mehr Luft. Aktivieren Sie diese Funktion + nur, wenn Sie sie wirklich benötigen: Die Speicherseiten + werden eher früher als später ausgelagert. Der + Platz im Swap-Bereich wird dadurch schneller verbraucht und + die Plattenaktivitäten steigen an. Auf kleine Systeme + hat diese Funktion spürbare Auswirkungen. Auf großen + Systemen, die sowieso schon Seiten auslagern müssen, + können ganze Prozesse leichter in den Speicher geladen + oder ausgelagert werden. + + <varname>hw.ata.wc</varname> hw.ata.wc In FreeBSD 4.3 wurde versucht, den IDE Schreib-Zwischenspeicher abzustellen. Obwohl dies die Bandbreite zum Schreiben auf IDE-Platten verringerte, wurde es aus Gründen der Datenkonsistenz als notwenig angesehen. Der Kern des Problems ist, dass IDE-Platten keine zuverlässige Aussage über das Ende eines Schreibvorgangs treffen. Wenn der Schreib-Zwischenspeicher aktiviert ist, werden die Daten nicht in der Reihenfolge ihres Eintreffens geschrieben. Es kann sogar passieren, dass das Schreiben mancher Blöcke im Fall von starker Plattenaktivität auf unbefristete Zeit verzögert wird. Ein Absturz oder Stromausfall zu dieser Zeit kann die Dateisysteme erheblich beschädigen. Wir entschieden uns daher für die sichere Variante und stellten den Schreib-Zwischenspeicher ab. Leider war damit auch ein großer Leistungsverlust verbunden, so dass wir die Variable nach dem Release wieder aktiviert haben. Sie sollten den Wert der Variable hw.ata.wc auf Ihrem System überprüfen. Wenn der Schreib-Zwischenspeicher abgestellt ist, können Sie ihn aktivieren, indem Sie die Variable auf den Wert 1 setzen. Dies muss zum Zeitpunkt des Systemstarts im Boot-Loader geschehen. Eine Änderung der Variable, nachdem der Kernel gestartet ist, hat keine Auswirkungen. Weitere Informationen finden Sie in &man.ata.4;. + + + <option>SCSI_DELAY</option> + (<varname>kern.cam.scsi_delay</varname>) + + + + kern.cam.scsi_delay + + + Mit der Kerneloption kann + die Dauer des Systemstarts verringert werden. Der Vorgabewert + ist recht hoch und er verzögert den Systemstart um 15 oder + mehr Sekunden. Normalerweise kann dieser Wert, insbesondere + mit modernen Laufwerken, auf 5 Sekunden heruntergesetzt + werden. Ab FreeBSD 5.0 wird dazu die + sysctl-Variable + kern.cam.scsi_delay benutzt. Die Variable + sowie die Kerneloption verwenden für die Zeitangabe + Millisekunden und nicht Sekunden. + Soft Updates Soft Updates tunefs Mit &man.tunefs.8; lassen sich Feineinstellungen an Dateisystemen vornehmen. Das Programm hat verschiedene Optionen, von denen hier nur Soft Updates betrachtet werden. Soft Updates werden wie folgt ein- und ausgeschaltet: &prompt.root; tunefs -n enable /filesystem &prompt.root; tunefs -n disable /filesystem Ein eingehängtes Dateisystem kann nicht mit &man.tunefs.8; modifiziert werden. Soft Updates werden am besten im Single-User Modus aktiviert, bevor Partitionen eingehangen sind. Ab FreeBSD 4.5 können Sie Soft Updates mit der Option -U von &man.newfs.8; beim Anlegen der Dateisysteme aktivieren. Durch Einsatz eines Zwischenspeichers wird die Performance im Bereich der Metadaten, vorwiegend beim Anlegen und Löschen von Dateien, gesteigert. Wir empfehlen, Soft Updates auf allen Dateisystemen zu aktivieren. Allerdings sollten Sie sich über die zwei Nachteile von Soft Updates bewusst sein: Erstens garantieren Soft Updates zwar die Konsistenz der Daten im Fall eines Absturzes, aber es kann leicht passieren, dass das Dateisystem über mehrere Sekunden oder gar eine Minute nicht synchronisiert wurde. Im Fall eines Absturzes verlieren Sie mit Soft Updates unter Umständen mehr Daten als ohne. Zweitens verzögern Soft Updates die Freigabe von Datenblöcken. Eine größere Aktualisierung eines fast vollen Dateisystems, wie dem Root-Dateisystem, z.B. während eines make installworld, kann das Dateisystem vollaufen lassen. Dadurch würde die Aktualisierung fehlschlagen. Details über Soft Updates Soft Updates (Details) Es gibt zwei klassische Herangehensweisen, wie man die Metadaten des Dateisystems (also Daten über Dateien, wie inode Bereiche oder Verzeichniseinträge) aktualisiert auf die Platte zurückschreibt: Das historisch übliche Verfahren waren synchrone Updates der Metadaten, d. h. wenn eine Änderung an einem Verzeichnis nötig war, wurde anschließend gewartet, bis diese Änderung tatsächlich auf die Platte zurückgeschrieben worden war. Der Inhalt der Dateien wurde im Buffer Cache zwischengespeichert und asynchron irgendwann später auf die Platte geschrieben. Der Vorteil dieser Implementierung ist, dass sie sicher funktioniert. Wenn während eines Updates ein Ausfall erfolgt, haben die Metadaten immer einen konsistenten Zustand. Eine Datei ist entweder komplett angelegt oder gar nicht. Wenn die Datenblöcke einer Datei im Fall eines Absturzes noch nicht den Weg aus dem Buffer Cache auf die Platte gefunden haben, kann &man.fsck.8; das Dateisystem reparieren, indem es die Dateilänge einfach auf 0 setzt. Außerdem ist die Implementierung einfach und überschaubar. Der Nachteil ist, dass Änderungen der Metadaten sehr langsam vor sich gehen. Ein rm -r beispielsweise fasst alle Dateien eines Verzeichnisses der Reihe nach an, aber jede dieser Änderungen am Verzeichnis (Löschen einer Datei) wird einzeln synchron auf die Platte geschrieben. Gleiches beim Auspacken großer Hierarchien (tar -x). Der zweite Fall sind asynchrone Metadaten-Updates. Das ist z. B. der Standard bei Linux/ext2fs oder die Variante mount -o async für *BSD UFS. Man schickt die Updates der Metadaten einfach auch noch über den Buffer Cache, sie werden also zwischen die Updates der normalen Daten eingeschoben. Vorteil ist, dass man nun nicht mehr auf jeden Update warten muss, Operationen, die zahlreiche Metadaten ändern, werden also viel schneller. Auch hier ist die Implementierung sehr einfach und wenig anfällig für Fehler. Nachteil ist, dass keinerlei Konsistenz des Dateisystems mehr gesichert ist. Wenn mitten in einer Operation, die viele Metadaten ändert, ein Ausfall erfolgt (Stromausfall, drücken des Reset-Tasters), dann ist das Dateisystem anschließend in einem unbestimmten Zustand. Niemand kann genau sagen, was noch geschrieben worden ist und was nicht mehr; die Datenblöcke einer Datei können schon auf der Platte stehen, während die inode Tabelle oder das zugehörige Verzeichnis nicht mehr aktualisiert worden ist. Man kann praktisch kein fsck mehr implementieren, das diesen Zustand wieder reparieren kann, da die dazu nötigen Informationen einfach auf der Platte fehlen. Wenn ein Dateisystem derart beschädigt worden ist, kann man es nur neu erzeugen (&man.newfs.8;) und die Daten vom Backup zurückspielen. Der historische Ausweg aus diesem Dilemma war ein dirty region logging (auch als Journalling bezeichnet, wenngleich dieser Begriff nicht immer gleich benutzt und manchmal auch für andere Formen von Transaktionsprotokollen gebraucht wird). Man schreibt die Metadaten-Updates zwar synchron, aber nur in einen kleinen Plattenbereich, die logging area. Von da aus werden sie dann asynchron auf ihre eigentlichen Bereiche verteilt. Da die logging area ein kleines zusammenhängendes Stückchen ist, haben die Schreibköpfe der Platte bei massiven Operationen auf Metadaten keine allzu großen Wege zurückzulegen, so dass alles ein ganzes Stück schneller geht als bei klassischen synchronen Updates. Die Komplexität der Implementierung hält sich ebenfalls in Grenzen, somit auch die Anfälligkeit für Fehler. Als Nachteil ergibt sich, dass Metadaten zweimal auf die Platte geschrieben werden müssen (einmal in die logging area, einmal an die richtige Stelle), so dass das im Falle regulärer Arbeit (also keine gehäuften Metadatenoperationen) eine Pessimisierung des Falls der synchronen Updates eintritt, es wird alles langsamer. Dafür hat man als Vorteil, dass im Falle eines Crashes der konsistente Zustand dadurch erzielbar ist, dass die angefangenen Operationen aus dem dirty region log entweder zu Ende ausgeführt oder komplett verworfen werden, wodurch das Dateisystem schnell wieder zur Verfügung steht. Die Lösung von Kirk McKusick, dem Schöpfer von Berkeley FFS, waren Soft Updates: die notwendigen Updates der Metadaten werden im Speicher gehalten und dann sortiert auf die Platte geschrieben (ordered metadata updates). Dadurch hat man den Effekt, dass im Falle massiver Metadaten-Änderungen spätere Operationen die vorhergehenden, noch nicht auf die Platte geschriebenen Updates desselben Elements im Speicher einholen. Alle Operationen, auf ein Verzeichnis beispielsweise, werden also in der Regel noch im Speicher abgewickelt, bevor der Update überhaupt auf die Platte geschrieben wird (die dazugehörigen Datenblöcke werden natürlich auch so sortiert, dass sie nicht vor ihren Metadaten auf der Platte sind). Im Fall eines Absturzes hat man ein implizites log rewind: alle Operationen, die noch nicht den Weg auf die Platte gefunden haben, sehen danach so aus, als hätten sie nie stattgefunden. Man hat so also den konsistenten Zustand von ca. 30 bis 60 Sekunden früher sichergestellt. Der verwendete Algorithmus garantiert dabei, dass alle tatsächlich benutzten Ressourcen auch in den entsprechenden Bitmaps (Block- und inode Tabellen) als belegt markiert sind. Der einzige Fehler, der auftreten kann, ist, dass Ressourcen noch als belegt markiert sind, die tatsächlich frei sind. &man.fsck.8; erkennt dies und korrigiert diese nicht mehr belegten Ressourcen. Die Notwendigkeit eines Dateisystem-Checks darf aus diesem Grunde auch ignoriert und das Dateisystem mittels mount -f zwangsweise eingebunden werden. Um noch allozierte Ressourcen freizugeben muss später ein &man.fsck.8; nachgeholt werden. Das ist dann auch die Idee des background fsck: beim Starten des Systems wird lediglich ein Schnappschuss des Filesystems gemacht, mit dem &man.fsck.8; dann später arbeiten kann. Alle Dateisysteme dürfen unsauber eingebunden werden und das System kann sofort in den Multiuser-Modus gehen. Danach wird ein Hintergrund-fsck für die Dateisysteme gestartet, die dies benötigen, um möglicherweise irrtümlich belegte Ressourcen freizugeben. (Dateisysteme ohne Soft Updates benötigen natürlich immer noch den üblichen (Vordergrund-)fsck, bevor sie eingebunden werden können.) Der Vorteil ist, dass die Metadaten-Operationen beinahe so schnell ablaufen wie im asynchronen Fall (also durchaus auch schneller als beim logging, das ja die Metadaten immer zweimal schreiben muss). Als Nachteil stehen dem die Komplexität des Codes (mit einer erhöhten Fehlerwahrscheinlichkeit in einem bezüglich Datenverlust hoch sensiblen Bereich) und ein erhöhter Speicherverbrauch entgegen. Außerdem muss man sich an einige Eigenheiten gewöhnen: Nach einem Absturz ist ein etwas älterer - Stand auf der Platte — statt einer leeren, aber bereits + Stand auf der Platte – statt einer leeren, aber bereits angelegten Datei (wie nach einem herkömmlichen fsck Lauf) ist auf einem Dateisystem mit Soft Updates keine Spur der entsprechenden Datei mehr zu sehen, da weder die Metadaten noch der Dateiinhalt je auf die Platte geschrieben wurden. Weiterhin kann der Platz nach einem rm -r nicht sofort wieder als verfügbar markiert werden, sondern erst dann, wenn der Update auch auf die Platte vermittelt worden ist. Dies kann besonders dann Probleme bereiten, wenn große Datenmengen in einem Dateisystem ersetzt werden, das nicht genügend Platz hat, um alle Dateien zweimal unterzubringen. Einstellungen von Kernel Limits Einstellungen von Kernel Limits Datei und Prozeß Limits <varname>kern.maxfiles</varname> kern.maxfiles Abhängig von den Anforderungen Ihres Systems kann kern.maxfiles erhöht oder erniedrigt werden. Die Variable legt die maximale Anzahl von Dateideskriptoren auf Ihrem System fest. Wenn die Dateideskriptoren aufgebraucht sind, werden Sie die Meldung file: table is full wiederholt im Puffer für Systemmeldungen sehen. Den Inhalt des Puffers können Sie sich mit dmesg anzeigen lassen. Jede offene Datei, jedes Socket und jede FIFO verbraucht einen Dateideskriptor. Auf dicken Produktionsservern können leicht Tausende Dateideskriptoren benötigt werden, abhängig von der Art und Anzahl der gleichzeitig laufenden Dienste. Die Voreinstellung von kern.maxfile wird von aus Ihrer Kernelkonfiguration bestimmt. kern.maxfiles wächst proportional mit dem Wert von . Wenn Sie einen angepassten Kernel kompilieren, empfiehlt es sich diese Option entsprechend der maximalen Benutzerzahl Ihres Systems einzustellen. Obwohl auf einer Produktionsmaschine vielleicht nicht 256 Benutzer gleichzeitig angemeldet sind, können die benötigten Ressourcen ähnlich denen eines großen Webservers sein. Ab FreeBSD 4.5 können Sie in der Kernelkonfiguration auf 0 setzen. Das System setzt dann automatisch einen passenden Wert, der von der Größe Ihres Hauptspeichers abhängt, ein. + + + <varname>kern.ipc.somaxconn</varname> + + + kern.ipc.somaxconn + + + Die Variable kern.ipc.somaxconn + beschränkt die Größe der Warteschlange + (Listen-Queue) für + neue TCP-Verbindungen. Der Vorgabewert von + 128 ist normalerweise zu klein, um neue + Verbindungen auf einem stark ausgelasteten Webserver + zuverlässig zu handhaben. Auf solchen Servern sollte + der Wert auf 1024 oder höher gesetzt + werden. Ein Dienst (z.B. &man.sendmail.8;, oder + Apache) kann die Größe + der Queue selbst einschränken. Oft gibt es die + Möglichkeit, die Größe der Listen-Queue in + einer Konfigurationsdatei einzustellen. Eine große + Listen-Queue übersteht vielleicht auch einen + Denial of Service Angriff (DoS). Netzwerk Limits Die Kerneloption schreibt - die Anzahl der Netzwerkpuffer (MBUFs) fest, die das System besitzt. - Eine zu geringe Anzahl MBUFs auf einem Server mit viel Netzwerkverkehr - verringert die Leistung von FreeBSD. Jeder MBUF Cluster nimmt + die Anzahl der Netzwerkpuffer (Mbufs) fest, die das System besitzt. + Eine zu geringe Anzahl Mbufs auf einem Server mit viel Netzwerkverkehr + verringert die Leistung von FreeBSD. Jeder Mbuf-Cluster nimmt ungefähr 2 kB Speicher in Anspruch, so dass ein Wert von 1024 insgesamt 2 Megabyte Speicher für Netzwerkpuffer im System reserviert. Wie viele Cluster benötigt werden, lässt sich durch eine einfache Berechnung herausfinden. Wenn Sie einen Webserver besitzen, der maximal 1000 gleichzeitige Verbindungen servieren soll und jede der Verbindungen je einen - 16 kB großen Puffer zum Senden und Empfangen braucht, brauchen - Sie ungefähr 32 MB Speicher für Netzwerkpuffer. Als - Daumenregel verdoppeln Sie diese Zahl, so dass sich - für NMBCLUSTERS der Wert - 2x32 MB / 2 kB = 32768 ergibt. + 16 kB großen Puffer zum Senden und Empfangen braucht, + brauchen Sie ungefähr 32 MB Speicher für + Netzwerkpuffer. Als Daumenregel verdoppeln Sie diese Zahl, + so dass sich für NMBCLUSTERS der Wert + 2x32 MB / 2 kB = 32768 ergibt. + Für Maschinen mit viel Speicher sollten Werte zwischen + 4096 und 32768 genommen werden. Sie können diesen Wert + nicht willkürlich erhöhen, da dies bereits zu einem + Absturz beim Systemstart führen kann. Mit der Option + von &man.netstat.1; können Sie den + Gebrauch der Netzwerkpuffer kontrollieren. + + Die Netzwerkpuffer können beim Systemstart mit der + Loader-Variablen kern.ipc.nmbclusters + eingestellt werden. Nur auf älteren FreeBSD-Systemen + müssen Sie die Kerneloption + verwenden. + + Unter extremen Bedingungen müssen + Sie vielleicht die Variable kern.ipc.nsfbufs + verändern. Diese Variable bestimmt die Anzahl der + Dateisystem-Puffer, die &man.sendfile.2; verwenden kann. + Der Wert dieser Variablen wird durch den Wert der Variablen + kern.maxusers bestimmt, so dass es eine + Anpassung nicht nötig sein sollte. + + + <varname>net.inet.ip.portrange.*</varname> + + + net.inet.ip.portrange.* + + + Die sysctl-Variable net.inet.ip.portrange.* + legt die Portnummern für TCP- und UDP-Sockets fest. + Es gibt drei Bereiche: den niedrigen Bereich, den + normalen Bereich und den hohen Bereich. Die meisten + Netzprogramme benutzen den normalen Bereich. Dieser Bereich + umfasst in der Voreinstellung die Portnummern 500 bis 5000 + und wird durch die Variablen + net.inet.ip.portrange.first und + net.inet.ip.portrange.last festgelegt. + Die festgelegten Bereiche für Portnummern werden von + ausgehenden Verbindungen benutzt. Unter bestimmten + Umständen, beispielsweise auf stark ausgelasteten + Proxy-Servern, sind alle Portnummern für ausgehende + Verbindungen belegt. Bereiche + für Portnummern spielen auf Servern keine Rolle, die + hauptsächlich eingehende Verbindungen verarbeiten (wie ein + normaler Webserver) oder nur eine begrenzte Anzahl ausgehender + Verbindungen öffnen (beispielsweise ein Mail-Relay). + Wenn Sie keine freien Portnummern mehr haben, sollten Sie + die Variable net.inet.ip.portrange.last + langsam erhöhen. Ein Wert von 10000, + 20000 oder 30000 ist + angemessen. Beachten Sie auch eine vorhandene + Firewall, wenn Sie die Bereiche für Portnummern + ändern. Einige Firewalls sperren große Bereiche + (normalerweise aus den kleinen Portnummern) und erwarten, + dass hohe Portnummern für ausgehende Verbindungen + verwendet werden. Daher kann es erforderlich sein, den + Wert von net.inet.ip.portrange.first + zu erhöhen. + + + + TCP Bandwidth Delay Product Begrenzung + + + TCP Bandwidth Delay Product Begrenzung + + net.inet.tcp.inflight_enable + + + + Die TCP Bandwidth Delay Product Begrenzung gleicht + TCP/Vegas von NetBSD. Die + Begrenzung wird aktiviert, indem Sie die sysctl-Variable + net.inet.tcp.inflight_enable auf den + Wert 1 setzen. Das System wird dann + versuchen, für jede Verbindung, das Produkt aus der + Übertragungsrate und der Verzögerungszeit zu + bestimmen. Dieses Produkt begrenzt die Datenmenge, die + für einen optimales Durchsatz zwischengespeichert + werden muss. + + Diese Begrenzung ist nützlich, wenn Sie Daten + über Verbindungen mit einem hohen Produkt aus + Übertragungsrate und Verzögerungszeit wie Modems, + Gigabit-Ethernet oder schnellen WANs, zur Verfügung + stellen. Insbesondere wirkt sich die Begrenzung aus, wenn + die Verbindung die TCP-Option + Window-scaling verwendet oder + große Sende-Fenster + (send window) benutzt. + Schalten Sie die Debug-Meldungen aus, wenn Sie die Begrenzung + aktiviert haben. Dazu setzen Sie die Variable + net.inet.tcp.inflight_debug auf + 0. Auf Produktions-Systemen sollten Sie + zudem die Variable net.inet.tcp.inflight_min + mindestens auf den Wert 6144 setzen. + Allerdings kann ein zu hoher Wert, abhängig von der + Verbindung, die Begrenzungsfunktion unwirksam machen. + Die Begrenzung reduziert die Datenmenge in den Queues von Routern + und Switches, sowie die Datenmenge in der Queue der lokalen + Netzwerkkarte. Die Verzögerungszeit + (Round Trip Time) für + interaktive Anwendungen sinkt, da weniger Pakete + zwischengespeichert werden. Dies gilt besonders für + Verbindungen über langsame Modems. Die Begrenzung + wirkt sich allerdings nur auf das Versenden von Daten aus + (Uploads, Server). Auf den Empfang von Daten (Downloads) + hat die Begrenzung keine Auswirkungen. + + Die Variable net.inet.tcp.inflight_stab + sollte nicht angepasst werden. Der + Vorgabewert der Variablen beträgt 20, + das heißt es werden maximal zwei Pakete zu dem Produkt + aus Übertragungsrate und Verzögerungszeit addiert. + Dies stabilisiert den Algorithmus und verbessert die + Reaktionszeit auf Veränderungen. Bei langsamen + Verbindungen können sich aber die Laufzeiten der Pakete + erhöhen (ohne diesen Algorithmus wären sie + allerdings noch höher). In solchen Fällen + können Sie versuchen, den Wert der Variablen auf + 15, 10 oder + 5 zu erniedrigen. Gleichzeitig müssen + Sie vielleicht auch net.inet.tcp.inflight_min + auf einen kleineren Wert (beispielsweise 3500) + setzen. Ändern Sie diese Variablen nur ab, wenn Sie + keine anderen Möglichkeiten mehr haben. + Hinzufügen von Swap-Bereichen Egal wie vorausschauend Sie planen, manchmal entspricht ein System einfach nicht Ihren Erwartungen. Es ist leicht, mehr Swap-Bereiche hinzuzufügen. Dazu stehen Ihnen drei Wege offen: Sie können eine neue Platte einbauen, den Swap-Bereich über NFS ansprechen oder eine Swap-Datei auf einer existierenden Partition einrichten. Swap auf einer neuen Festplatte Der einfachste Weg, zusätzlich einen Swap-Bereich einzurichten, ist der Einbau einer neuen Platte, da Sie ja immer eine neue Platte einbauen können. Nachdem Sie das getan haben, lesen Sie bitte noch einmal den Abschnitt Swap Partition aus dem Kapitel Vorbereitende Konfiguration des Handbuchs. Dort finden Sie Vorschläge, wie Sie den Swap-Bereich am besten einrichten. Swap-Bereiche über NFS Swap-Bereiche über NFS sollten Sie nur dann einsetzen, wenn Sie über keine lokale Platte verfügen. In FreeBSD Versionen vor 4.X ist dies zudem sehr langsam und nicht effizient. Ab FreeBSD 4.0 ist das Nutzen von Swap über NFS genügend schnell und effizient, doch wird es durch die zur Verfügung stehende Bandbreite limitiert und belastet zusätzlich den NFS-Server. Swap-Dateien Sie können eine Datei festgelegter Größe als Swap-Bereich nutzen. Im folgenden Beispiel werden wir eine 64 MB große Datei mit dem Namen /usr/swap0 benutzen, Sie können natürlich einen beliebigen Namen für den Swap-Bereich benutzen. Erstellen einer Swap-Datei mit FreeBSD 4.X Zuerst stellen Sie bitte sicher, dass Ihr Kernel den vnode-Treiber enthält. In neueren Versionen von GENERIC ist dieser nicht enthalten. pseudo-device vn 1 #Vnode driver (turns a file into a device) Erstellen Sie das vn-Gerät: &prompt.root; cd /dev &prompt.root; sh MAKEDEV vn0 Legen Sie die Swap-Datei /usr/swap0 an: &prompt.root; dd if=/dev/zero of=/usr/swap0 bs=1024k count=64 Setzen Sie die richtigen Berechtigungen für /usr/swap0: &prompt.root; chmod 0600 /usr/swap0 Aktivieren Sie die Swap-Datei in /etc/rc.conf: swapfile="/usr/swap0" # Set to name of swapfile if aux swapfile desired. Um die Swap-Datei zu aktivieren, führen Sie entweder einen Neustart durch oder geben das folgende Kommando ein: &prompt.root; vnconfig -e /dev/vn0b /usr/swap0 swap Erstellen einer Swap-Datei mit FreeBSD 5.X Stellen Sie sicher, dass der Kernel RAM-Disks (&man.md.4;) unterstützt. Dies ist in der GENERIC-Konfiguration voreingestellt. device md # Memory "disks" Legen Sie die Swap-Datei /usr/swap0 an: &prompt.root; dd if=/dev/zero of=/usr/swap0 bs=1024k count=64 Setzen Sie die richtigen Berechtigungen für /usr/swap0: &prompt.root; chmod 0600 /usr/swap0 Aktivieren Sie die Swap-Datei /etc/rc.conf: swapfile="/usr/swap0" # Set to name of swapfile if aux swapfile desired. Um die Swap-Datei zu aktivieren, führen Sie entweder einen Neustart durch oder geben das folgende Kommando ein: &prompt.root; mdconfig -a -t vnode -f /usr/swap0 -u 0 && swapon /dev/md0 Hiten Pandya Verfasst von Tom Rhodes ACPI und FreeBSD Es ist sehr wichtig, Hardware effizient einzusetzen. Vor der Einführung des Advanced Configuration and Power Interface (ACPI) konnten der Stromverbrauch und die Wärmeabgabe eines Systems nur sehr schlecht von Betriebssystemen gesteuert werden. Die Hardware wurde mit BIOS-Funktionen, wie Plug and Play BIOS (PNPBIOS) oder Advanced Power Management (APM), gesteuert. Das Betriebssystem soll aber das System überwachen können und auf Ereignisse, beispielsweise einen unerwarteten Temperaturanstieg, reagieren können. Dieser Abschnitt erklärt das Advanced Configuration and Power Interface (ACPI). Beachten Sie, dass Sie das ACPI erst ab FreeBSD 5.X benutzen können. Was ist ACPI? Advanced Configuration and Power Interface (ACPI) ist ein Standard verschiedener Hersteller, der die Verwaltung von Hardware und Energiesparfunktionen festlegt. Die ACPI-Funktionen können von einem Betriebssystem gesteuert werden. Der Vorgänger des ACPI, Advanced Power Management (APM), der auch in FreeBSD 4.X verwendet wird, erwies sich in modernen Systemen als unzureichend. Konfiguration des <acronym>ACPI</acronym> Das Modul acpi.ko wird standardmäß beim Systemstart vom &man.loader.8; geladen und sollte daher nicht fest in den Kernel eingebunden werden. Dadurch kann acpi.ko ohne einen Neubau des Kernels ersetzt werden und das Modul ist leichter zu testen. Wenn Sie in der Ausgabe von &man.dmesg.8; das Wort ACPI sehen, ist das Modul geladen worden. Es ist nicht sinnvoll, das Modul im laufenden Betrieb zu laden, dies kann sogar manchmal fatale Folgen haben. Das Modul kann im laufenden Betrieb nicht entfernt werden, da es zur Kommunikation mit der Hardware verwendet wird. Mit &man.acpiconf.8; können Sie das ACPI konfigurieren (unter anderem können Sie damit auch die Energieverwaltung deaktivieren). ACPI und APM können nicht zusammen verwendet werden. Das zuletzt geladene Modul beendet sich, sobald es bemerkt, dass das andere Modul geladen ist. Mit &man.acpiconf.8; können Sie das System in einen Ruhemodus (sleep mode) versetzen. Es gibt verschiedene Modi (von 1 bis 5), die Sie auf der Kommandozeile mit angeben können. Für die meisten Anwender ist der Modus 1 völlig ausreichend. Der Modus 5 schaltet das System aus (Soft-off) und entspricht dem Ausführen des folgenden Befehls: &prompt.root; halt -p Weitere Informationen entnehmen Sie bitte der Hilfeseite &man.acpiconf.8;. 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 2379ab7c6d..b689cef5e0 100644 --- a/de_DE.ISO8859-1/books/handbook/cutting-edge/chapter.sgml +++ b/de_DE.ISO8859-1/books/handbook/cutting-edge/chapter.sgml @@ -1,1976 +1,1976 @@ 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; und &a.cvsall; zu lesen. Wenn Sie &a.current; 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; Mailingliste sehen Sie zu jeder Änderung das Commit-Log, das Informationen zu möglichen Seiteneffekten enthält. Um diese Listen zu lesen, senden Sie eine E-Mail mit dem folgenden Inhalt im Textkörper der Nachricht an &a.majordomo;: subscribe freebsd-current subscribe cvs-all Majordomo Sie können Majordomo auch den Text help schicken und erhalten dann eine ausführliche Hilfe, die beschreibt, wie Sie die verschiedenen Mailinglisten abonnieren bzw. wieder abbestellen. Beschaffen Sie sich die Quellen von ftp.FreeBSD.org. Sie haben dazu drei Möglichkeiten: cvsup cron -CURRENT Synchronisation mit CVSup Benutzen Sie cvsup mit + url="ftp://ftp.jp.FreeBSD.org/pub/FreeBSD/FreeBSD-current/src/share/examples/cvsup/standard-supfile"> einer geeigneten Sup-Datei. 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 -CURRENT Herunterladen mit ftp Benutzen Sie ftp. Der Quellbaum für &os.current; ist unter ftp://ftp.FreeBSD.org/pub/FreeBSD/FreeBSD-current/ erhältlich. Einige FTP-Spiegel unterstützen das Herunterladen von komprimierten mit tar gepackten Dateibäumen. Wenn Sie beispielsweise das Verzeichnis usr.bin/lex als tar-Datei herunterladen wollen, geben Sie Folgendes ein: ftp> cd usr.bin ftp> get lex.tar -CURRENT Synchronisation mit CTM 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 Änderungen im Installationsverfahren, die manchmal vor der Einführung eines neuen Releases notwendig sind, informiert zu sein. Seien Sie aktiv! Wenn Sie &os.current; laufen lassen, wollen wir wissen, was Sie darüber denken, besonders wenn Sie Verbesserungsvorschläge oder Fehlerbehebungen haben. Verbesserungsvorschläge, die Code enthalten, werden übrigens begeistert entgegengenommen. &os.stable; Was ist &os.stable;? -STABLE &os.stable; ist der Entwicklungszweig, auf dem Releases erstellt werden. Dieser Zweig ändert sich langsamer als &os.current; und alle Änderungen hier sollten zuvor in &os.current; ausgetestet sein. Beachten Sie, dass dies immer noch ein Entwicklungszweig ist und daher zu jedem Zeitpunkt die Quellen von &os.stable; verwendbar sein können oder nicht. &os.stable; ist Teil des Entwicklungsprozesses und nicht für Endanwender gedacht. Wer braucht &os.stable;? Wenn Sie den FreeBSD Entwicklungsprozess, besonders im Hinblick auf das nächste Release, verfolgen oder dazu beitragen wollen, sollten Sie erwägen, &os.stable; zu benutzen. Auch wenn sicherheitsrelevante Fehlerbehebungen in den &os.stable; Zweig einfließen, müssen Sie deswegen noch lange nicht &os.stable; verfolgen. Jeder der FreeBSD Sicherheitshinweise beschreibt für jedes betroffene Release, Das stimmt nicht ganz. Obwohl wir alte FreeBSD Releases für einige Jahre unterstützen, können wir sie nicht ewig unterstützen. Eine vollständige Beschreibung der Sicherheitspolitik für alte FreeBSD Releases entnehmen Sie bitte http://www.FreeBSD.org/security/ wie sie einen sicherheitsrelevanten Fehler beheben. Wenn Sie den Entwicklungszweig aus Sicherheitsgründen verfolgen wollen, bedenken Sie, dass Sie neben Fehlerbehebungen auch eine Vielzahl unerwünschter Änderungen erhalten werden. Obwohl wir versuchen sicherzustellen, dass der &os.stable; Zweig sich jederzeit übersetzen lässt und läuft, können wir dafür keine Garantie übernehmen. Auch wenn Neuentwicklungen in &os.current; stattfinden, ist es jedoch so, dass mehr Leute &os.stable; benutzen als &os.current; und es daher unvermeidlich ist, dass Fehler und Grenzfälle erst in &os.stable; auffallen. Aus diesen Gründen empfehlen wir Ihnen nicht, blindlings &os.stable; zu benutzen. Es ist wichtig, dass Sie &os.stable; zuerst sorgfältig in einer Testumgebung austesten, bevor Sie Ihre Produktion auf &os.stable; migrieren. Wenn Sie dies nicht leisten können, empfehlen wir Ihnen, das aktuelle FreeBSD Release zu verwenden. Benutzen Sie dann den binären Update-Mechanismus, um auf neue Releases zu migrieren. Benutzen von &os.stable; -STABLE benutzen Lesen Sie Mailingliste &a.stable;, 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; Mailingliste sehen Sie zu jeder Änderung das Commit-Log, das Informationen zu möglichen Seiteneffekten enthält. Um diese Listen zu lesen, senden Sie eine E-Mail mit dem folgenden Inhalt im Textkörper der Nachricht an &a.majordomo;: subscribe freebsd-stable subscribe cvs-all Majordomo Sie können Majordomo auch den Text help schicken und erhalten dann eine ausführliche Hilfe, die beschreibt, wie Sie die verschiedenen Mailinglisten abonnieren bzw. wieder abbestellen. Wenn Sie ein neues System installieren und so aktuell wie möglich sein wollen, holen Sie sich einfach den neusten Snapshot von ftp://releng4.FreeBSD.org/pub/FreeBSD/ und installieren ihn wie ein normales Release. Wenn Sie schon ein älteres Release von &os; benutzen und mit dem Quellcode migrieren wollen, stehen Ihnen dazu ausgehend von ftp.FreeBSD.org drei Möglichkeiten zur Verfügung: cvsup cron -STABLE Synchronisation mit CVSup Benutzen Sie cvsup mit + url="ftp://ftp.jp.FreeBSD.org/pub/FreeBSD/FreeBSD-current/src/share/examples/cvsup/stable-supfile"> einer geeigneten Sup-Datei. 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
-STABLE Herunterladen mit ftp Benutzen Sie ftp. Der Quellbaum für &os.stable; ist unter ftp://ftp.FreeBSD.org/pub/FreeBSD/FreeBSD-stable/ erhältlich. Einige FTP-Spiegel unterstützen das Herunterladen von komprimierten mit tar gepackten Dateibäumen. Wenn Sie beispielsweise das Verzeichnis usr.bin/lex als tar-Datei herunterladen wollen, geben Sie Folgendes ein: ftp> cd usr.bin ftp> get lex.tar -STABLE Synchronisation mit CTM 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 Ä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 und Installation des Basissystems + Ü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 alten 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 alte 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/disks/chapter.sgml b/de_DE.ISO8859-1/books/handbook/disks/chapter.sgml index 40343d8e8e..ed5db2e73a 100644 --- a/de_DE.ISO8859-1/books/handbook/disks/chapter.sgml +++ b/de_DE.ISO8859-1/books/handbook/disks/chapter.sgml @@ -1,3023 +1,3023 @@ Bernd Warken Übersetzt von Martin Heinen Speichermedien Übersicht Dieses Kapitel behandelt die Benutzung von Laufwerken unter FreeBSD. Laufwerke können speichergestützte Laufwerke, Netzwerklaufwerke oder normale SCSI/IDE Geräte sein. Nachdem Sie dieses Kapitel gelesen haben, werden Sie Folgendes wissen: Die Begriffe, die FreeBSD verwendet, um die Organisation der Daten auf einem physikalischen Laufwerk zu beschreiben (Partitionen und Slices). Wie Sie Dateisysteme an- und abhängen. Wie Sie ein weiteres Laufwerk zu Ihrem System hinzufügen. Wie virtuelle Dateisysteme, zum Beispiel RAM-Disks, aufgesetzt werden. Wie Sie mit Quotas die Benutzung von Laufwerken einschränken können. Wie unter FreeBSD CDs und DVDs gebrannt werden. Sie werden die Speichermedien, die Sie für Backups einsetzen können, kennen. Wie Sie die unter FreeBSD erhältlichen Backup Programme benutzen. Wie Sie ein Backup mit Disketten erstellen. Was Schnappschüsse sind und wie sie eingesetzt werden. Gerätenamen Die folgende Tabelle zeigt die von FreeBSD unterstützten Speichergeräte und deren Gerätenamen. Namenskonventionen von physikalischen Laufwerken Laufwerkstyp Gerätename IDE-Festplatten ad IDE-CD-ROM Laufwerke acd SCSI-Festplatten und USB-Speichermedien da SCSI-CD-ROM Laufwerke cd Verschiedene proprietäre CD-ROM-Laufwerke mcd Mitsumi CD-ROM, scd Sony CD-ROM, matcd Matsushita/Panasonic CD-ROM Der &man.matcd.4;-Treiber wurde am 5. Oktober vom FreeBSD 4.X Zweig entfernt und existiert in FreeBSD 5.0 und späteren Versionen nicht. Diskettenlaufwerke fd SCSI-Bandlaufwerke sa IDE-Bandlaufwerke ast Flash-Laufwerke fla für DiskOnChip Flash device RAID-Laufwerke aacd für Adaptec AdvancedRAID, mlxd und mlyd für Mylex, amrd für AMI MegaRAID, idad für Compaq Smart RAID, twed für 3Ware RAID.
David O'Brian Im Original von Hinzufügen von Laufwerken Laufwerke hinzufügen Angenommen, Sie wollen ein neues SCSI-Laufwerk zu einer Maschine hinzufügen, die momentan nur ein Laufwerk hat. Dazu schalten Sie zuerst den Rechner aus und installieren das Laufwerk entsprechend der Anleitungen Ihres Rechners, Ihres Controllers und Laufwerk Herstellers. Wegen der großen Abweichungen in der genauen Vorgehensweise würde eine detaillierte Beschreibung den Rahmen dieses Dokumentes sprengen. Nachdem Sie das Laufwerk installiert haben, melden Sie sich als Benutzer root an und kontrollieren Sie /var/run/dmesg.boot, um sicherzustellen, dass das neue Laufwerk gefunden wurde. Das neue Laufwerk wird, um das Beispiel fortzuführen, da1 heißen und soll unter /1 angehangen werden. Fügen Sie eine IDE-Platte hinzu, wird sie wd1 auf FreeBSD Systemen vor 4.0 und ad1 auf den meisten 4.X Systemen heißen. Partitionen Slices fdisk Da FreeBSD auf IBM-PC kompatiblen Rechnern läuft, muss es die PC BIOS-Partitionen, die verschieden von den traditionellen BSD-Partitionen sind, berücksichtigen. Eine PC Platte kann bis zu vier BIOS-Partitionen enthalten. Wenn die Platte ausschließlich für FreeBSD verwendet wird, können Sie den dedicated Modus benutzen, ansonsten muss FreeBSD in eine der BIOS-Partitionen installiert werden. In FreeBSD heißen die PC BIOS-Partitionen Slices, um sie nicht mit den traditionellen BSD-Partitionen zu verwechseln. Sie können auch Slices auf einer Platte verwenden, die ausschließlich von FreeBSD benutzt wird, sich aber in einem Rechner befindet, der noch ein anderes Betriebssystem installiert hat. Dadurch stellen Sie sicher, dass Sie fdisk des anderen Betriebssystems noch benutzen können. Im Fall von Slices wird die Platte als /dev/da1s1e hinzugefügt. Das heißt: SCSI-Platte, Einheit 1 (die zweite SCSI-Platte), Slice 1 (PC BIOS-Partition 1) und die e BSD-Partition. Wird die Platte ausschließlich für FreeBSD verwendet (dangerously dedicated), wird sie einfach als /dev/da1e hinzugefügt. Verwenden von &man.sysinstall.8; sysinstall hinzufügen von Laufwerken su Das <application>sysinstall</application> Menü Um ein Laufwerk zu partitionieren und zu labeln, kann das menügestützte /stand/sysinstall benutzt werden. Dazu melden Sie sich als root an oder benutzen su, um root zu werden. Starten Sie /stand/sysinstall und wählen das Configure Menü, wählen Sie dort den Punkt Fdisk aus. Partitionieren mit <application>fdisk</application> Innerhalb von fdisk geben Sie A ein, um die ganze Platte für FreeBSD zu benutzen. Beantworten Sie die Frage remain cooperative with any future possible operating systems mit YES. W schreibt die Änderung auf die Platte, danach können Sie fdisk mit q verlassen. Da Sie eine Platte zu einem schon laufenden System hinzugefügt haben, beantworten Sie die Frage nach dem Master Boot Record mit None. Disk Label Editor BSD Partitionen Als nächstes müssen Sie sysinstall verlassen und es erneut starten. Folgen Sie dazu bitte den Anweisungen von oben, aber wählen Sie dieses Mal die Option Label, um in den Disk Label Editor zu gelangen. Hier werden die traditionellen BSD-Partitionen erstellt. Ein Laufwerk kann acht Partitionen, die mit den Buchstaben a-h gekennzeichnet werden, besitzen. Einige Partitionen sind für spezielle Zwecke reserviert. Die a Partition ist für die Root-Partition (/) reserviert. Deshalb sollte nur das Laufwerk, von dem gebootet wird, eine a Partition besitzen. Die b Partition wird für Swap-Partitionen benutzt, wobei Sie diese auf mehreren Platten benutzen dürfen. Im dangerously dedicated Modus spricht die c Partition die gesamte Platte an, werden Slices verwendet, wird damit die ganze Slice angesprochen. Die anderen Partitionen sind für allgemeine Zwecke verwendbar. Der Label Editor von sysinstall bevorzugt die e Partition für Partitionen, die weder Root-Partitionen noch Swap-Partitionen sind. Im Label Editor können Sie ein einzelnes Dateisystem mit C erstellen. Wählen Sie FS, wenn Sie gefragt werden, ob Sie ein FS (Dateisystem) oder Swap erstellen wollen, und geben Sie einen Mountpoint z.B. /mnt an. Wenn Sie nach einer FreeBSD Installation ein Dateisystem mit sysinstall erzeugen, so werden die Einträge in /etc/fstab nicht erzeugt, so dass die Angabe des Mountpoints nicht wichtig ist. Sie können nun das Label auf das Laufwerk schreiben und das Dateisystem erstellen, indem Sie W drücken. Ignorieren Sie die Meldung von sysinstall, dass die neue Partition nicht angehangen werden konnte, und verlassen Sie den Label Editor sowie sysinstall. Ende Im letzten Schritt fügen Sie noch in /etc/fstab den Eintrag für das neue Laufwerk ein. Die Kommandozeile Anlegen von Slices Mit der folgenden Vorgehensweise wird eine Platte mit anderen Betriebssystemen, die vielleicht auf Ihrem Rechner installiert sind, zusammenarbeiten und nicht das fdisk Programm anderer Betriebssysteme stören. Bitte benutzen Sie den dedicated Modus nur dann, wenn Sie dazu einen guten Grund haben! &prompt.root; dd if=/dev/zero of=/dev/da1 bs=1k count=1 &prompt.root; fdisk -BI da1 # Initialisieren der neuen Platte &prompt.root; disklabel -B -w -r da1s1 auto # Labeln &prompt.root; disklabel -e da1s1 # Editieren des Disklabels und Hinzufügen von Partitionen &prompt.root; mkdir -p /1 &prompt.root; newfs /dev/da1s1e # Wiederholen Sie diesen Schritt für jede Partition &prompt.root; mount /dev/da1s1e /1 # Anhängen der Partitionen &prompt.root; vi /etc/fstab # Ändern Sie /etc/fstab entsprechend Wenn Sie ein IDE-Laufwerk besitzen, ändern Sie da in ad. Auf Systemen vor 4.0 benutzen Sie wd. Dedicated OS/2 Wenn das neue Laufwerk nicht von anderen Betriebssystemen benutzt werden soll, können Sie es im dedicated Modus betreiben. Beachten Sie bitte, dass Microsoft Betriebssysteme mit diesem Modus eventuell nicht zurechtkommen, aber es entsteht kein Schaden am Laufwerk. Im Gegensatz dazu wird IBMs OS/2 versuchen, jede ihm nicht bekannte Partition zu reparieren. &prompt.root; dd if=/dev/zero of=/dev/da1 bs=1k count=1 &prompt.root; disklabel -Brw da1 auto &prompt.root; disklabel -e da1 # Erstellen der `e' Partition &prompt.root; newfs -d0 /dev/da1e &prompt.root; mkdir -p /1 &prompt.root; vi /etc/fstab # /dev/da1e hinzufügen &prompt.root; mount /1 Eine alternative Methode: &prompt.root; dd if=/dev/zero of=/dev/da1 count=2 &prompt.root; disklabel /dev/da1 | disklabel -BrR da1 /dev/stdin &prompt.root; newfs /dev/da1e &prompt.root; mkdir -p /1 &prompt.root; vi /etc/fstab # /dev/da1e hinzufügen &prompt.root; mount /1 RAID Software RAID Christopher Shumway Geschrieben von Valentino Vaschetto Mark Up von ccd (Concatenated Disk Configuration) Die wichtigsten Faktoren bei der Auswahl von Massenspeichern sind Geschwindigkeit, Zuverlässigkeit und der Preis. Selten findet sich eine ausgewogene Mischung aller drei Faktoren. Schnelle und zuverlässige Massenspeicher sind für gewöhnlich teuer. Um die Kosten zu senken, muss entweder an der Geschwindigkeit oder an der Zuverlässigkeit gespart werden. Bei der Planung meines Systems habe ich die Faktoren nach ihrer Wichtigkeit geordnet. Der wichtigste Faktor waren die Kosten, da ich sehr viel Speicher zu einem guten Preis brauchte. Der nächste Faktor, Geschwindigkeit, war nicht so wichtig, da auf die Daten über ein geswitchtes 100 Mbit Ethernet, das wahrscheinlich den Engpass darstellen würde, zugegriffen werden sollte. Die Möglichkeit, die Ein- und Ausgabeoperationen auf mehrere Platten zu verteilen, sollte für dieses Netzwerk mehr als schnell genug sein. Die Frage nach der Zuverlässigkeit war leicht zu beantworten, da sich die Daten ja schon auf CD-Rs befanden und der Massenspeicher nur für den leichteren Zugriff auf die Daten sorgen sollte. Wenn ein Laufwerk kaputt geht, kann es leicht ersetzt werden und die Daten können nach dem Wiederherstellen des Dateisystems von CD-Rs wieder kopiert werden. Unter dem Strich wollte ich also möglichst viel Speicher für mein Geld. Große IDE-Laufwerke sind heutzutage billig: Ich fand IDE-Laufwerke von Western Digital mit 30,7 GB und 5400 RPM für 130 US Dollars, von denen ich drei und damit ungefähr neunzig Gigabyte Speicher kaufte. Installation der Hardware Die Laufwerke wurden in ein System eingebaut, das schon ein IDE-Laufwerk als Systemplatte besaß. Es wäre ideal gewesen, für jedes IDE-Laufwerk einen eigenen Controller und ein eigenes Kabel zu haben, doch haben das die damit verbundenen Kosten verboten. Zwei Platten wurden als Slave und eine als Master konfiguriert. An den ersten IDE-Controller schloss ich eine als Slave konfigurierte Platte zusätzlich zur Systemplatte an. Die beiden anderen Platten wurden als Master und Slave an den zweiten Controller angeschlossen. Beim Reboot wurde das BIOS so konfiguriert, dass es die angeschlossenen Platten automatisch erkennt und FreeBSD erkannte die Platten ebenfalls: ad0: 19574MB <WDC WD205BA> [39770/16/63] at ata0-master UDMA33 ad1: 29333MB <WDC WD307AA> [59598/16/63] at ata0-slave UDMA33 ad2: 29333MB <WDC WD307AA> [59598/16/63] at ata1-master UDMA33 ad3: 29333MB <WDC WD307AA> [59598/16/63] at ata1-slave UDMA33 Wenn FreeBSD die Platten jetzt nicht erkennt, überprüfen Sie, ob die Jumper korrekt konfiguriert sind. Ich habe von vielen Problemen gehört, die dadurch entstanden sind, dass die Platten mit cable select anstatt richtig als Master und Slave konfiguriert waren. Die nächste Überlegung war, wie die Platten in das Dateisystem eingebunden werden sollten. Ich schaute mir &man.vinum.8; () und FreeBSDs &man.ccd.4; im Hinblick auf meine Konfiguration an. Die Entscheidung fiel zugunsten von &man.ccd.4;, da es aus weniger Teilen besteht und weniger Teile häufig eine höhere Stabilität anzeigen. Vinum schien für meine Zwecke ein bisschen zuviel zu sein. Konfiguration von CCD Mit ccd können mehrere gleiche Platten zu einem logischen Dateisystem zusammengefasst werden. Um ccd zu benutzen, muss der Kernel mit der entsprechenden Unterstützung übersetzt werden. Ich fügte die folgende Zeile zu meiner Konfigurationsdatei hinzu und übersetzte den Kernel neu: pseudo-device ccd 4 Ab FreeBSD 5.0 muss die gewünschte Anzahl an Geräten nicht mehr angegeben werden, da die Geräte automatisch zur Laufzeit erzeugt werden. In FreeBSD 4.0 und späteren Versionen kann ccd auch als Kernelmodul geladen werden. Um ccd zu benutzen, müssen die Laufwerke zuerst mit einem Label versehen werden. Die Label erstellte ich mit den folgenden Kommandos: disklabel -r -w ad1 auto disklabel -r -w ad2 auto disklabel -r -w ad3 auto Damit wurden die Label ad1c, ad2c und ad3c erstellt, die jeweils das gesamte Laufwerk umfassen. Im nächsten Schritt muss der Typ des Labels geändert werden. Zum Editieren der Lables benutzte ich folgende Kommandos: disklabel -e ad1 disklabel -e ad2 disklabel -e ad3 Für jedes Label startete dies den durch EDITOR gegebenen Editor, in meinem Fall &man.vi.1;, der dann einen Abschnitt, wie den folgenden zeigte: 8 partitions: # size offset fstype [fsize bsize bps/cpg] c: 60074784 0 unused 0 0 0 # (Cyl. 0 - 59597) Für ccd musste ich eine e Partition erstellen. Diese kann durch Kopieren der c Partition erstellt werden, allerdings muss auf 4.2BSD gesetzt werden. Der editierte Label sah dann wie folgt aus: 8 partitions: # size offset fstype [fsize bsize bps/cpg] c: 60074784 0 unused 0 0 0 # (Cyl. 0 - 59597) e: 60074784 0 4.2BSD 0 0 0 # (Cyl. 0 - 59597) Erstellen des Dateisystems Nachdem die Label erstellt waren, musste ich ccd konfigurieren. Dazu dient &man.ccdconfig.8;, das als ersten Parameter das zu konfigurierende Gerät, in meinem Fall /dev/ccd0c, erwartet. Wenn die Gerätedatei für ccd0c noch nicht existiert, können Sie diese mit den folgenden Kommandos erstellen: cd /dev sh MAKEDEV ccd0 Ab FreeBSD 5.0 werden die Gerätedateien automatisch von &man.devfs.5; erzeugt. MAKEDEV muss also nicht aufgerufen werden. Das nächste Argument, das ccdconfig erwartet, ist der Interleave für das Dateisystem. Der Interleave definiert die Größe eines Streifens in Blöcken, die normal 512 Bytes groß sind. Ein Interleave von 32 ist demnach 16384 Bytes groß. Nach der Angabe des Interleaves können Sie Optionen für ccdconfig angeben. Wenn Sie gespiegelte Laufwerke einrichten möchten, müssen Sie an dieser Stelle eine Option angeben. Da ich keinen Spiegel erstellen wollte, habe ich 0 eingesetzt. Zum Schluss werden die Geräte des Verbundes angegeben. Die komplette Kommandozeile sieht dann wie folgt aus: ccdconfig ccd0 32 0 /dev/ad1e /dev/ad2e /dev/ad3e Damit ist ccd konfiguriert und mit &man.newfs.8; kann nun ein Dateisystem angelegt werden: newfs /dev/ccd0c Automatisierung Damit ccd beim Start automatisch aktiviert wird, ist die Datei /etc/ccd.conf mit dem folgenden Kommando zu erstellen: ccdconfig -g > /etc/ccd.conf Wenn /etc/ccd.conf existiert, wird beim Reboot ccdconfig -C von /etc/rc aufgerufen. Damit wird ccd eingerichtet und die darauf befindlichen Dateisysteme können angehängt werden. Wenn Sie in den Single-User Modus booten, müssen Sie den Verbund erst konfigurieren, bevor Sie darauf befindliche Dateisysteme anhängen können: ccdconfig -C In /etc/fstab ist noch ein Eintrag für das auf dem Verbund befindliche Dateisystem zu erstellen, damit dieses beim Start des Systems immer angehängt wird: /dev/ccd0c /media ufs rw 2 2 Der Vinum Volume Manager Der Vinum Volume Manager ist ein Block-Gerätetreiber, der virtuelle Platten zur Verfügung stellt. Er trennt die Verbindung zwischen der Festplatte und dem zugehörigen Block-Gerät auf. Im Gegensatz zur konventionellen Aufteilung einer Platte in Slices lassen sich dadurch Daten flexibler, leistungsfähiger und zuverlässiger verwalten. &man.vinum.8; stellt RAID-0, RAID-1 und RAID-5 sowohl einzeln wie auch in Kombination zur Verfügung. Mehr Informationen über &man.vinum.8; erhalten Sie in . Hardware RAID RAID Hardware FreeBSD unterstützt eine Reihe von RAID-Controllern, die mit Hilfe eines BIOS auf der Karte ein RAID System aufbauen und verwalten können. Wie ein RAID System eingerichtet wird, sei kurz am Beispiel des Promise IDE RAID-Controllers gezeigt. Nachdem die Karte eingebaut ist und der Rechner neu gestartet wurde, erscheint eine Eingabeaufforderung. Wenn Sie den Anweisungen auf dem Bildschirm folgen, gelangen Sie in eine Maske, in der Sie mit den vorhandenen Festplatten ein RAID System aufbauen können. Das RAID System erscheint später unter FreeBSD als eine Festplatte. Wiederherstellen eines ATA-RAID-1 Verbunds Mit FreeBSD können Sie eine ausgefallene Platte in einem RAID-Verbund während des Betriebs auswechseln, vorausgesetzt Sie bemerken den Ausfall vor einem Neustart. Einen Ausfall erkennen Sie, wenn in den Protokollen von &man.syslogd.8; oder &man.dmesg.8; Meldungen wie die folgenden auftauchen: ad6 on monster1 suffered a hard error. ad6: READ command timeout tag=0 serv=0 - resetting ad6: trying fallback to PIO mode ata3: resetting devices .. done ad6: hard error reading fsbn 1116119 of 0-7 (ad6 bn 1116119; cn 1107 tn 4 sn 11) status=59 error=40 ar0: WARNING - mirror lost Überprüfen Sie den RAID-Verbund mit &man.atacontrol.8;: &prompt.root; atacontrol list ATA channel 0: Master: no device present Slave: acd0 <HL-DT-ST CD-ROM GCR-8520B/1.00> ATA/ATAPI rev 0 ATA channel 1: Master: no device present Slave: no device present ATA channel 2: Master: ad4 <MAXTOR 6L080J4/A93.0500> ATA/ATAPI rev 5 Slave: no device present ATA channel 3: Master: ad6 <MAXTOR 6L080J4/A93.0500> ATA/ATAPI rev 5 Slave: no device present &prompt.root; atacontrol status ar0 ar0: ATA RAID1 subdisks: ad4 ad6 status: DEGRADED Damit Sie die Platte ausbauen können, muss sie zuerst aus dem Verbund entfernt werden: &prompt.root; atacontrol detach 3 Ersetzen Sie dann die Platte. Nehmen Sie die neue Platte in den Verbund auf: &prompt.root; atacontrol attach 3 Master: ad6 <MAXTOR 6L080J4/A93.0500> ATA/ATAPI rev 5 Slave: no device present Stellen Sie die Organisation des Verbunds wieder her: &prompt.root; atacontrol rebuild ar0 Das Kommando blockiert den Terminal bis der Verbund wiederhergestellt ist. Den Fortgang des Prozesses können Sie in einem anderen Terminal mit den folgenden Befehlen kontrollieren: &prompt.root; dmesg | tail -10 [output removed] ad6: removed from configuration ad6: deleted from ar0 disk1 ad6: inserted into ar0 disk1 as spare &prompt.root; atacontrol status ar0 ar0: ATA RAID1 subdisks: ad4 ad6 status: REBUILDING 0% completed Warten Sie bis die Wiederherstellung beendet ist. Mike Meyer Beigesteuert von Handhabung von optischen Speichermedien (CDs & DVDs) CD-ROM erstellen Einführung CDs besitzen einige Eigenschaften, die sie von konventionellen Laufwerken unterscheiden. Zuerst konnten sie nicht beschrieben werden. Sie wurden so entworfen, dass sie ununterbrochen, ohne Verzögerungen durch Kopfbewegungen zwischen den Spuren, gelesen werden können. Sie konnten früher auch leichter als vergleichbar große Medien zwischen Systemen bewegt werden. CDs besitzen Spuren, aber damit ist der Teil Daten gemeint, der ununterbrochen gelesen wird, und nicht eine physikalische Eigenschaft der CD. Um eine CD mit FreeBSD zu erstellen, werden die Daten jeder Spur der CD in Dateien vorbereitet und dann die Spuren auf die CD geschrieben. ISO 9660 Dateisysteme ISO-9660 Das ISO 9660-Dateisystem wurde entworfen, um mit diesen Unterschieden umzugehen. Leider hat es auch damals übliche Grenzen für Dateisysteme implementiert. Glücklicherweise existiert ein Erweiterungsmechanismus, der es korrekt geschriebenen CDs erlaubt, diese Grenzen zu überschreiten und dennoch auf Systemen zu funktionieren, die diese Erweiterungen nicht unterstützen. mkisofs Mit sysutils/mkisofs wird eine Datei erstellt, die ein ISO 9660-Dateisystem enthält. Das Kommando hat Optionen, um verschiedene Erweiterungen zu unterstützen, und wird unten beschrieben. Sie können es aus dem sysutils/mkisofs Port installieren. CD Brenner ATAPI Welches Tool Sie zum Brennen von CDs benutzen, hängt davon ab, ob Ihr CD Brenner ein ATAPI Gerät ist oder nicht. Mit ATAPI CD Brennern wird burncd benutzt, das Teil des Basissystems ist. SCSI und USB CD-Brenner werden mit cdrecord aus sysutils/cdrtools benutzt. Von burncd wird nur eine beschränkte Anzahl von Laufwerken unterstützt. Um herauszufinden, ob ein Laufwerk unterstützt wird, sehen Sie bitte unter CD-R/RW supported drives nach. mkisofs sysutils/mkisofs erstellt ein ISO 9660-Dateisystem, das ein Abbild eines Verzeichnisbaumes des Dateisystems ist. Die einfachste Anwendung ist wie folgt: &prompt.root; mkisofs -o Imagedatei /path/to/tree Dateisysteme ISO-9660 Dieses Kommando erstellt eine Imagedatei, die ein ISO 9660-Dateisystem enthält, das eine Kopie des Baumes unter /path/to/tree ist. Dabei werden die Dateinamen auf Namen abgebildet, die den Restriktionen des ISO 9660-Dateisystems entsprechen. Dateien mit Namen, die im ISO 9660-Dateisystem nicht gültig sind, bleiben unberücksichtigt. Dateisysteme HFS Dateisysteme Joliet Es einige Optionen, um diese Beschränkungen zu überwinden. Die unter &unix; Systemen üblichen Rock Ridge Erweiterungen werden durch aktiviert, aktiviert die von Microsoft Systemen benutzten Joliet Erweiterungen und dient dazu, um das von MacOS benutzte HFS zu erstellen. Für CDs, die nur auf FreeBSD-Systemen verwendet werden sollen, kann genutzt werden, um alle Beschränkungen für Dateinamen aufzuheben. Zusammen mit wird ein Abbild des Dateisystems, ausgehend von dem Startpunkt im FreeBSD-Dateibaum, erstellt, obwohl dies den ISO 9660 Standard verletzen kann. CD-ROM bootbare erstellen Die letzte übliche Option ist . Sie wird benutzt, um den Ort eines Bootimages einer El Torito bootbaren CD anzugeben. Das Argument zu dieser Option ist der Pfad zu einem Bootimage ausgehend von der Wurzel des Baumes, der auf die CD geschrieben werden soll. Wenn /tmp/myboot ein bootbares FreeBSD-System enthält, dessen Bootimage sich in /tmp/myboot/boot/cdboot befindet, können Sie ein Abbild eines ISO 9660-Dateisystems in /tmp/bootable.iso wie folgt erstellen: &prompt.root; mkisofs -U -R -b boot/cdboot -o /tmp/bootable.iso /tmp/myboot Wenn Sie vn (mit FreeBSD 4.X) oder md (mit FreeBSD 5.X) in Ihrem Kernel konfiguriert haben, können Sie danach das Dateisystem einhängen. Mit FreeBSD 4.X setzen Sie dazu die nachstehenden Kommandos ab: &prompt.root; vnconfig -e vn0c /tmp/bootable.iso &prompt.root; mount -t cd9660 /dev/vn0c /mnt Mit FreeBSD 5.X verwenden Sie die Kommandos: &prompt.root; mdconfig -a -t vnode -f /tmp/bootable.iso -u 0 &prompt.root; mount -t cd9660 /dev/md0 /mnt Jetzt können Sie überprüfen, dass /mnt und /tmp/myboot identisch sind. Sie können das Verhalten von sysutils/mkisofs mit einer Vielzahl von Optionen beeinflussen. Insbesondere können Sie das ISO-9660 Dateisystem modifizieren und Joliet- oder HFS-Dateisysteme brennen. Details dazu entnehmen Sie bitte der Manualpage von sysutils/mkisofs. burncd CD-ROM brennen Wenn Sie einen ATAPI CD Brenner besitzen, können Sie burncd benutzen, um ein ISO-Image auf CD zu brennen. burncd ist Teil des Basissystems und unter /usr/sbin/burncd installiert. Da es nicht viele Optionen hat, ist es leicht zu benutzen: &prompt.root; burncd -f cddevice data imagefile.iso fixate Dieses Kommando brennt eine Kopie von imagefile.iso auf das Gerät cddevice. In der Grundeinstellung wird das Gerät /dev/acd0c benutzt. &man.burncd.8; beschreibt, wie die Schreibgeschwindigkeit gesetzt wird, die CD ausgeworfen wird und Audio Daten geschrieben werden. cdrecord Wenn Sie keinen ATAPI CD Brenner besitzen, benutzen Sie cdrecord, um CDs zu brennen. cdrecord ist nicht Bestandteil des Basissystems. Sie müssen es entweder aus den Ports in sysutils/cdrtools oder dem passenden Paket installieren. Änderungen im Basissystem können Fehler im binären Programm verursachen und führen möglicherweise dazu, dass Sie einen Untersetzer brennen. Sie sollten daher den Port aktualisieren, wenn Sie Ihr System aktualisieren bzw. wenn Sie STABLE verfolgen, den Port aktualisieren, wenn es eine neue Version gibt. Obwohl cdrecord viele Optionen besitzt, ist die grundlegende Anwendung einfacher als burncd. Ein ISO 9660 Image erstellen Sie mit: &prompt.root; cdrecord dev=device imagefile.iso Der Knackpunkt in der Benutzung von cdrecord besteht darin, das richtige Argument zu zu finden. Benutzen Sie dazu den Schalter von cdrecord, der eine ähnliche Ausgabe wie die folgende produziert: CD-ROM brennen &prompt.root; cdrecord -scanbus Cdrecord 1.9 (i386-unknown-freebsd4.2) Copyright (C) 1995-2000 Jörg Schilling Using libscg version 'schily-0.1' scsibus0: 0,0,0 0) 'SEAGATE ' 'ST39236LW ' '0004' Disk 0,1,0 1) 'SEAGATE ' 'ST39173W ' '5958' Disk 0,2,0 2) * 0,3,0 3) 'iomega ' 'jaz 1GB ' 'J.86' Removable Disk 0,4,0 4) 'NEC ' 'CD-ROM DRIVE:466' '1.26' Removable CD-ROM 0,5,0 5) * 0,6,0 6) * 0,7,0 7) * scsibus1: 1,0,0 100) * 1,1,0 101) * 1,2,0 102) * 1,3,0 103) * 1,4,0 104) * 1,5,0 105) 'YAMAHA ' 'CRW4260 ' '1.0q' Removable CD-ROM 1,6,0 106) 'ARTEC ' 'AM12S ' '1.06' Scanner 1,7,0 107) * Für die aufgeführten Geräte in der Liste wird das passende Argument zu gegeben. Benutzen Sie die drei durch Kommas separierten Zahlen, die zu Ihrem CD Brenner angegeben sind, als Argument für . Im Beispiel ist das CDRW Gerät 1,5,0, so dass die passende Eingabe dev=1,5,0 wäre. Einfachere Wege das Argument anzugeben, sind in &man.cdrecord.1; beschrieben. Dort sollten Sie auch nach Informationen über Audio Spuren, das Einstellen der Geschwindigkeit und ähnlichem suchen. Kopieren von Audio-CDs Um eine Kopie einer Audio-CD zu erstellen, kopieren Sie die Stücke der CD in einzelne Dateien und brennen diese Dateien dann auf eine leere CD. Das genaue Verfahren hängt davon ab, ob Sie ATAPI-Laufwerke oder SCSI-Laufwerke verwenden. SCSI-Laufwerke Kopieren Sie die Audio-Daten mit cdda2wav: &prompt.user; cdda2wav -v255 -D2,0 -B -Owav Die erzeugten .wav Dateien schreiben Sie mit cdrecord auf eine leere CD: &prompt.user; cdrecord -v dev=2,0 -dao -useinfo *.wav Das Argument von gibt das verwendete Gerät an, das Sie, wie in beschrieben, ermitteln können. ATAPI-Laufwerke Der ATAPI CD-Treiber stellt die einzelnen Stücke der CD über die Dateien /dev/acddtn, zur Verfügung. d bezeichnet die Laufwerksnummer und n ist die Nummer des Stücks. Die Datei /dev/acd0t1 bezeichnet also das erste Stück auf dem ersten CD-Laufwerk. Die entsprechenden Dateien in /dev erstellen Sie mit MAKEDEV: &prompt.root; cd /dev &prompt.root; sh MAKEDEV acd0t99 Ab FreeBSD 5.0 werden die Gerätedateien automatisch von &man.devfs.5; erzeugt, so dass Sie MAKEDEV nicht laufen lassen müssen. Die einzelnen Stücke kopieren Sie mit &man.dd.1;. Sie müssen dazu eine spezielle Blockgröße angeben: &prompt.root; dd if=/dev/acd0t1 of=track1.cdr bs=2352 &prompt.root; dd if=/dev/acd0t2 of=track2.cdr bs=2352 ... Die kopierten Dateien können Sie dann mit burncd brennen. Auf der Kommandozeile müssen Sie angeben, dass Sie Audio-Daten brennen wollen und dass das Medium fixiert werden soll: &prompt.root; burncd -f /dev/acd0c audio track1.cdr track2.cdr ... fixate Kopieren von Daten-CDs Sie können eine Daten-CD in eine Datei kopieren, die einem Image entspricht, das mit sysutils/mkisofs erstellt wurde. Mit Hilfe dieses Images können Sie jede Daten-CD kopieren. Das folgende Beispiel verwendet acd0 für das CD-ROM Gerät. Wenn Sie ein anderes Laufwerk benutzen, setzen Sie bitte den richtigen Namen ein. An den Gerätenamen muss ein c angehangen werden, um die ganze Partition, in diesem Fall ist das die ganze CD-ROM, anzusprechen. &prompt.root; dd if=/dev/acd0c of=file.iso bs=2048 Danach haben Sie ein Image, das Sie wie oben beschrieben, auf eine CD brennen können. Einhängen von Daten-CDs Nachdem Sie eine Daten-CD gebrannt haben, wollen Sie wahrscheinlich auch die Daten auf der CD lesen. Dazu müssen Sie die CD in den Dateibaum einhängen. Die Voreinstellung für den Typ des Dateisystems von &man.mount.8; ist UFS. Das System wird die Fehlermeldung Incorrect super block ausgeben, wenn Sie versuchen, die CD mit dem folgenden Kommando einzuhängen: &prompt.root; mount /dev/cd0c /mnt Auf der CD befindet sich ja kein UFS Dateisystem, so dass der Versuch, die CD einzuhängen fehlschlägt. Sie müssen &man.mount.8; sagen, dass es ein Dateisystem vom Typ ISO9660 verwenden soll. Dies erreichen Sie durch die Angabe von auf der Kommandozeile. Wenn Sie also die CD-ROM /dev/cd0c in /mnt einhängen wollen, führen Sie folgenden Befehl aus: &prompt.root; mount -t cd9660 /dev/cd0c /mnt Abhängig vom verwendeten CD-ROM kann der Gerätename von dem im Beispiel (/dev/cd0c) abweichen. Die Angabe von führt &man.mount.cd9660.8; aus, so dass das Beispiel verkürzt werden kann: &prompt.root; mount_cd9660 /dev/cd0c /mnt Auf diese Weise können Sie Daten-CDs von jedem Hersteller verwenden. Es kann allerdings zu Problemen mit CDs kommen, die verschiedene ISO 9660 Erweiterungen benutzen. So speichern Joliet CDs alle Dateinamen unter Verwendung von zwei Byte langen Unicode Zeichen. Der FreeBSD Kernel unterstützt zurzeit noch kein Unicode und manche Sonderzeichen werden als Fragezeichen dargestellt. Ab FreeBSD 4.3 sind im CD9660-Treiber Möglichkeiten vorgesehen, eine Konvertierungstabelle zur Laufzeit zu laden. Module für die gebräuchlisten Kodierungen finden Sie im Port sysutils/cd9660_unicode. Manchmal werden Sie die Meldung Device not configured erhalten, wenn Sie versuchen, eine CD-ROM einzuhängen. Für gewöhnlich liegt das daran, dass das Laufwerk meint es sei keine CD eingelegt, oder dass das Laufwerk auf dem Bus nicht erkannt wird. Es kann einige Sekunden dauern, bevor das Laufwerk merkt, dass eine CD eingelegt wurde. Seien Sie also geduldig. Manchmal wird ein SCSI-CD-ROM nicht erkannt, weil es keine Zeit hatte, auf das Zurücksetzen des Busses zu antworten. Wenn Sie ein SCSI-CD-ROM besitzen, sollten Sie die folgende Zeile in Ihre Kernelkonfiguration aufnehmen und einen neuen Kernel bauen: options SCSI_DELAY=15000 Die Zeile bewirkt, dass nach dem Zurücksetzen des SCSI-Busses beim Booten 15 Sekunden gewartet wird, um dem CD-ROM-Laufwerk genügend Zeit zu geben, darauf zu antworten. Brennen von rohen CDs Sie können eine Datei auch direkt auf eine CD brennen, ohne vorher auf ihr ein ISO 9660 Dateisystem einzurichten. Einige Leute nutzen dies, um Datensicherungen durchzuführen. Diese Vorgehensweise hat den Vorteil, dass Sie schneller als das Brennen einer normalen CD ist. &prompt.root; burncd -f /dev/acd1c -s 12 data archive.tar.gz fixate Wenn Sie die Daten von einer solchen CD wieder zurückbekommen wollen, müssen Sie sie direkt von dem rohen Gerät lesen: &prompt.root; tar xzvf /dev/acd1c Eine auf diese Weise gefertigte CD können Sie nicht in das Dateisystem einhängen. Sie können Sie auch nicht auf einem anderen Betriebssystem lesen. Wenn Sie die erstellten CDs in das Dateisystem einhängen oder mit anderen Betriebssystemen austauschen wollen, müssen Sie sysutils/mkisofs, wie oben beschrieben, benutzen. Julio Merino Beigetragen von Handhabung von Disketten Heutzutage sind Disketten kein geeignetes Speichermedium mehr. Trotzdem werden sie manchmal noch verwendet, wenn zum Beispiel kein anderes Medium zur Verfügung steht und auf Daten eines anderen Rechners zugegriffen werden muss. Dieser Abschnitt zeigt Ihnen, wie Sie Disketten formatieren, Daten auf Disketten schreiben und Daten von Disketten lesen. Tatsächlich habe ich diesen Abschnitt geschrieben, um Ihnen zu zeigen, wie Sie die Kapazität Ihrer Disketten erhöhen können. Die Gerätedateien Wie auf jedes andere Gerät auch, greifen Sie auf Disketten über Einträge im Verzeichnis /dev zu. Um auf das rohe Gerät zuzugreifen, benutzen Sie /dev/fdX, wobei Sie für X die Gerätenummer, normalerweise 0, einsetzen. Auf eine formatierte Diskette greifen Sie über das Gerät /dev/fdX zu. Sie können dazu auch die Einträge /dev/fdXY, wobei Y ein Buchstabe ist, benutzen. Die Einträge der Form /dev/fdX. Größe werden genutzt, um Disketten zu formatieren. Größe gibt die Kapazität der Diskette in Kilobytes an. Manchmal müssen Sie diese Einträge in /dev anlegen oder wiederherstellen. Dazu können Sie das folgende Kommando benutzen: &prompt.root; cd /dev && ./MAKEDEV "fd*" Ab FreeBSD 5.0 werden die Gerätedateien automatisch von &man.devfs.5; erzeugt. Es ist nicht notwendig MAKEDEV laufen zu lassen. Formatieren Bevor eine Diskette benutzt werden kann, muss Sie (low-level) formatiert werden, was normalerweise der Hersteller schon gemacht hat. Sie können sie allerdings noch einmal formatieren, um das Medium zu überprüfen, oder die Kapazität zu erhöhen. Mit &man.fdformat.1; formatieren Sie eine Diskette. Dieses Werkzeug erwartet die Angabe eines Gerätenamens der Form /dev/fdX. Größe aus /dev, mit dem Sie die Kapazität der Diskette steuern können. Legen Sie eine 3,5 Zoll Diskette in Ihr Laufwerk ein und führen das folgende Kommando aus: &prompt.root; /usr/sbin/fdformat /dev/fd0.1440 Das Formatieren dauert eine Weile und hier auftauchende Fehler zeigen schlechte Medien an. Um eine andere Kapazität zu erzwingen, nehmen Sie einen anderen Eintrag aus /dev. Benutzen Sie dieselbe Diskette mit folgendem Befehl: &prompt.root; /usr/sbin/fdformat /dev/fd0.1720 Das Formatieren mit einer höheren Kapazität nimmt etwas mehr Zeit in Anspruch als das vorige Beispiel. Nachdem der Befehl ausgeführt ist, haben Sie eine Diskette mit 1720 KB Kapazität. Sie können auch andere Einträge aus /dev verwenden, doch sind 1720 KB für 3,5-Zoll Disketten am besten geeignet. Das Disklabel Nach dem Formatieren muss auf der Diskette ein Disklabel erstellt werden. Das Disklabel wird später zerstört, ist aber notwendig, um die Größe und Geometrie der Diskette zu erkennen. Das Disklabel gilt für die ganze Diskette und enthält alle Informationen über die Geometrie der Diskette. Eine Liste der möglichen Geometrien finden Sie in /etc/disktab. Erstellen Sie nun das Label mit disklabel: &prompt.root; /sbin/disklabel -B -r -w /dev/fd0 fdsize Wenn Sie eine andere Kapazität benutzen wollen, ersetzen Sie fdsize mit dem passenden Wert (beispielsweise fd1440 oder fd1720). Damit bestimmen Sie, welchen Eintrag disklabel aus /etc/disktab benutzt. Das Dateisystem Auf der Diskette muss nun ein Dateisystem erstellt werden (high-level Formatierung), damit FreeBSD von der Diskette lesen und auf sie schreiben kann. Das Disklabel wird durch das Anlegen eines Dateisystems zerstört. Falls Sie die Diskette später erneut formatieren wollen, müssen Sie dann auch ein neues Disklabel anlegen. Für das zu erstellende Dateisystem haben Sie die Wahl zwischen UFS und FAT. Da UFS für Disketten weniger geeignet ist, nehmen Sie bitte FAT. Das folgende Kommando legt ein Dateisystem auf der Diskette an: &prompt.root; /sbin/newfs_msdos /dev/fd0 Durch das Disklabel erkennt &man.newfs.8; den Diskettentyp und ist in der Lage, ein neues Dateisystem anzulegen. Die Diskette kann nun benutzt werden. Verwenden der Diskette Sie können die Diskette mit &man.mount.msdos.8; in Ihren Dateibaum einhängen oder mit den Mtools aus der Ports-Sammlung darauf zugreifen. Wenn Sie die Mtools benutzen und die Diskette mit einer erhöhten Kapazität formatiert haben, sollte mdir diese Kapazität anzeigen. Disketten mit erhöhter Kapazität lassen sich praktisch mit allen anderen Betriebssystemen ohne zusätzliche Utilities verwenden. Microsoft-Systeme können mit ihnen ohne Probleme umgehen. Es kann allerdings sein, dass ältere Laufwerke nicht mit diesen Disketten zurechtkommen. Handhabung von Bandmedien Bandmedien Die wichtigsten Bandmedien sind 4mm, 8mm, QIC, Mini-Cartridge und DLT. 4mm (DDS: Digital Data Storage) Bandmedien DDS (4mm) Bänder Bandmedien QIC Bänder Die 4mm-Bänder ersetzen mehr und mehr das QIC-Format als Backupmedium der Wahl für Workstations. Dieser Trend nahm stark zu, als Conner die Firma Archive, einen führenden Hersteller von QIC-Laufwerken, aufkaufte und die Produktion von QIC-Laufwerken stoppte. 4mm-Laufwerke sind klein und ruhig, haben aber nicht den gleichen Ruf der Zuverlässigkeit, den die 8mm-Laufwerke genießen. Die 4mm-Kassetten sind preiswerter und mit den Maßen 76,2 x 50,8 x 12,7 mm (3 x 2 x 0,5 Inch) kleiner als die 8mm-Kassetten. Sowohl die 4mm- als auch die 8mm-Magnetköpfe haben eine relativ kurze Lebensdauer, weil beide die gleiche Helical-Scan-Technologie benutzen. Der Datendurchsatz dieser Laufwerke beginnt bei etwa 150 kByte/s, Spitzenwerte liegen bei etwa 500 kByte/s. Die Datenkapazität liegt zwischen 1,3 GB und 2 GB. Die meisten Geräte haben eine Hardwarekompression eingebaut, die die Kapazität ungefähr verdoppelt. Es gibt Multi-Drive-Einheiten für Bandbibliotheken mit bis zu 6 Laufwerken in einem Gehäuse und automatischem Bandwechsel. Die Kapazität einer solchen Bibliothek liegt bei 240 GB. Der Standard DDS-3 unterstützt nun Bandkapazitäten bis zu 12 GB (oder komprimiert 24 GB). 4mm-Laufwerke, ebenso wie 8mm-Laufwerke, verwenden Helical-Scan. Alle Vor- und Nachteile von Helical-Scan gelten sowohl für 4mm- als auch für 8mm-Laufwerke. Bänder sollten nach 2.000 Banddurchläufen oder 100 vollen Backups ersetzt werden. 8mm (Exabyte) Bandmedien Exabyte (8mm) Bänder 8mm-Bänder sind die verbreitetsten SCSI-Bandlaufwerke; sie sind das geeignetste Bandformat zum Austausch von Bändern. Fast an jedem Standort gibt es ein 8mm-Bandlaufwerk mit 2 GB. 8mm-Bänder sind zuverlässig, gut zu handhaben und arbeiten leise. Bandkassetten sind preiswert und klein mit 122 x 84 x 15 mm (4,8 x 3,3 x 0,6 Inch). Ein Nachteil der 8mm-Technologie ist die relativ kurze Lebensdauer des Schreib-/Lesekopfs und der Bänder auf Grund der hohen Relativgeschwindigkeit des Bandes über die Köpfe hinweg. Der Datendurchsatz liegt ungefähr zwischen 250 kByte/s und 500 kByte/s. Die Datenkapazität beginnt bei 300 MB und erreicht bis zu 7 GB bei den Spitzengeräten. Die meisten Geräte haben eine Hardwarekompression eingebaut, die die Kapazität ungefähr verdoppelt. Diese Laufwerke sind erhältlich in Form von Einzelgeräten oder als Multi-Drive-Bandbibliotheken mit 6 Laufwerken und 120 Bändern in einem Gehäuse. Die Bänder werden von der Geräteeinheit automatisch gewechselt. Die Kapazität einer solchen Bibliothek liegt bei 840 GB und mehr. Das Exabyte-Modell Mammoth unterstützt 12 GB auf einem Band (24 GB mit Kompression) und kostet etwa doppelt so viel wie ein konventionelles Bandlaufwerk. Die Daten werden mittels Helical-Scan auf das Band aufgezeichnet, die Köpfe sind leicht schräg zum Medium angebracht (mit einem Winkel von etwa 6 Grad). Das Band wickelt sich 270 Grad um die Spule, die die Köpfe trägt. Die Spule dreht sich, während das Band darüberläuft. Das Resultat ist eine hohe Datendichte und eng gepackte Spuren, die von einem Rand des Bands zum gegenüberliegenden quer über das Band abgewinkelt verlaufen. QIC Bandmedien QIC-150 QIC-150-Bänder und -Laufwerke sind wohl der am weitesten verbreitete Bandtyp überhaupt. QIC-Bandlaufwerke sind die preiswertesten seriösen Backupgeräte, die angeboten werden. Der Nachteil dabei ist der hohe Preis der Bänder. QIC-Bänder sind im Vergleich zu 8mm- oder 4mm-Bändern bis zu fünf Mal teurer, wenn man den Preis auf 1 GB Datenkapazität umrechnet. Aber wenn Ihr Bedarf mit einem halben Dutzend Bänder abgedeckt werden kann, mag QIC die richtige Wahl sein. QIC ist der gängigste Bandlaufwerkstyp. Jeder Standort hat ein QIC-Laufwerk der einen oder anderen Dichte. Aber gerade das ist der Haken an der Sache, QIC bietet eine große Anzahl verschiedener Datendichten auf physikalisch ähnlichen (manchmal gleichen) Bändern. QIC-Laufwerke sind nicht leise. Diese Laufwerke suchen lautstark die richtige Bandstelle, bevor sie mit der Datenaufzeichnung beginnen. Sie sind während des Lesens, Schreibens und Suchens deutlich hörbar. Die Abmessungen der QIC-Kassetten betragen 152.4 x 101.6 x 17.78 mm (6 x 4 x 0,7 Inch), die QIC-Bandbreite beträgt 6,35 mm (1/4 Inch). Mini-Cartridges, die die gleiche Bandbreite verwenden, werden gesondert vorgestellt. Bandbibliotheken und Bandwechselgeräte gibt es im QIC-Format keine. Der Datendurchsatz liegt ungefähr zwischen 150 kByte/s und 500 kByte/s. Die Datenkapazität reicht von 40 MB bis zu 15 GB. Hardwarekompression ist in vielen der neueren QIC-Laufwerke eingebaut. QIC-Laufwerke werden heute seltener eingesetzt; sie werden von den DAT-Laufwerken abgelöst. Die Daten werden auf dem Band in Spuren aufgezeichnet. Die Spuren verlaufen entlang der Längsachse des Bandmediums von einem Ende zum anderen. Die Anzahl der Spuren, und damit auch die Breite einer Spur, variiert mit der Kapazität des Laufwerks. Die meisten, wenn nicht alle neueren Laufwerke sind rückwärtskompatibel, zumindest zum Lesen (aber oft auch zum Schreiben). QIC hat einen guten Ruf bezüglich der Datensicherheit (die Mechanik ist einfacher und robuster als diejenige der Helical-Scan-Laufwerke). Bänder sollten nach 5,000 Backups ersetzt werden. XXX* Mini-Cartridge DLT Bandmedien DLT DLT hat die schnellste Datentransferrate von allen hier aufgelisteten Gerätetypen. Das 1/2-Inch-Band (12,7 mm) befindet sich in einer Spulkassette mit den Abmessungen 101,6 x 101,6 x 25,4 mm (4 x 4 x 1 Inch). Die eine Seite der Kassette hat eine bewegliche Abdeckung. Der Laufwerksmechanismus öffnet diese Abdeckung und zieht die Bandführung heraus. Die Bandführung trägt ein ovales Loch, die das Laufwerk zum Einhängen des Bandes benutzt. Die Aufwickelspule befindet sich im Innern des Bandlaufwerks. Bei allen anderen hier besprochenen Bandkassetten (9-Spur-Bänder sind die einzige Ausnahme) befinden sich sowohl die Auf- als auch die Abwickelspule im Inneren der Bandkassette. Der Datendurchsatz liegt bei etwa 1,5 MBytes/s, der dreifache Durchsatz der 4mm-, 8mm- oder QIC-Bandlaufwerke. Die Datenkapazität reicht von 10 GB bis 20 GB für Einfachlaufwerke. Auch Mehrfachbandgeräte sind erhältlich, sowohl als Bandwechsler wie auch als Multi-Drive-Bandbibliotheken, die Platz für 5 bis 900 Bänder verteilt auf 1 bis 20 Laufwerke enthalten, mit einer Speicherkapazität von 50 GB bis 9 TB. Mit Kompression unterstützt das Format DLT Type IV bis zu 70 GB Kapazität. Die Daten werden auf dem Band in Spuren aufgezeichnet, die parallel zur Bewegungsrichtung verlaufen (gerade so wie bei den QIC-Bändern). Zwei Spuren werden dabei gleichzeitig beschrieben. Die Lebenszeit der Lese- und Schreibköpfe sind relativ lang; denn sobald das Band anhält, gibt es keine Relativbewegung mehr zwischen den Köpfen und dem Band. AIT Bandmedien AIT AIT ist ein neues Format von Sony, das (mit Kompression) bis zu 50 GB pro Band speichern kann. Die Bänder haben einen Speicherchip, der einen Index mit dem Inhalt des Bandes anlegt. Dieser Index kann vom Bandlaufwerk zur schnellen Bestimmung der Lage von Dateien auf dem Band benutzt werden, während andere Bänder einige Minuten zur Lokalisierung benötigen. Entsprechende Software wie etwa SAMS:Alexandria können 40 oder mehr AIT-Bandbibliotheken verarbeiten, indem sie direkt mit dem Speicherchip des Bandes kommunizieren, wenn der Bandinhalt am Bildschirm dargestellt werden soll oder bestimmt werden soll, welche Dateien auf welchem Band gespeichert sind, oder um das richtige Band zu lokalisieren, zu laden und Daten vom Band zurückzuspielen. Bibliotheken dieser Art liegen in der Preiskategorie von $20,000, womit sie etwas aus dem Hobbymarkt herausfallen. Die erste Benutzung eines neuen Bands Der Versuch ein neues, vollkommen leeres Band ohne weiteres zu lesen oder zu beschreiben wird schief gehen. Auf der Konsole werden dann Meldungen ähnlich wie folgt ausgegeben: sa0(ncr1:4:0): NOT READY asc:4,1 0(ncr1:4:0): Logical unit is in process of becoming ready Das Band enthält nämlich keinen Identifier-Block (Blocknummer 0). Alle QIC-Bandlaufwerke seit der Einführung des QIC-525-Standards schreiben einen Identifier-Block auf das Band. Es gibt zwei Lösungen: mt fsf 1 veranlasst das Bandlaufwerk einen Identifier-Block auf das Band zu schreiben. Das Band durch Drücken des Bandauswurfknopfs an der Vorderseite des Bandgeräts auswerfen. Danach das Band wieder einlegen und mit dump Daten auf das Band übertragen. Das Kommando dump gibt die Meldung DUMP: End of tape detected zurück und die Konsole zeigt: HARDWARE FAILURE info:280 asc:80,96. Das Band zurückspulen mit dem Kommando: mt rewind. Nachfolgende Bandoperationen werden dann erfolgreich ausgeführt. Was ist mit Backups auf Disketten? Kann ich Disketten zum Backup meiner Daten verwenden? Backup Disketten Disketten Disketten sind kein wirklich geeignetes Medium für Backups aus folgenden Gründen: Disketten sind unzuverlässig, besonders langfristig. Speichern und Wiederherstellen ist sehr langsam. Sie haben eine sehr eingeschränkte Kapazität (Die Zeiten sind längst vorbei, wo eine ganze Festplatte auf ein Dutzend Floppies oder so gespeichert werden konnte). Wenn jedoch keine andere Möglichkeit zum Datenbackup vorhanden ist, dann sind Disketten immer noch besser als gar kein Backup. Wenn man gezwungen ist Disketten zu verwenden, dann sollte man auf eine gute Qualität achten. Floppies, die schon einige Jahre im Büro herumgelegen haben, sind eine schlechte Wahl. Ideal sind neue Disketten von einem renommierten Hersteller. Wie mache ich ein Backup auf Disketten? Die beste Art eines Diskettenbackups ist der Befehl &man.tar.1; mit der Mehrfachband-Option , die es ermöglicht ein Backup über mehrere Floppies zu verteilen. Ein Backup aller Dateien im aktuellen Verzeichnis einschließlich aller Unterverzeichnisse wird durch den folgenden Befehl veranlasst (als root): &prompt.root; tar Mcvf /dev/fd0 * Wenn die erste Floppy voll ist, meldet sich &man.tar.1; und verlangt einen Diskettenwechsel (weil &man.tar.1; unabhängig vom Medium arbeitet, wird das nächste Band (Volume) verlangt, was in diesem Zusammenhang eine Diskette bedeutet), in etwa wie folgt: Prepare volume #2 for /dev/fd0 and hit return: Dies wird mit steigender Volumenzahl wiederholt, bis alle angegebenen Dateien archiviert sind. Können Diskettenbackups komprimiert werden? tar gzip Kompression Leider erlaubt es &man.tar.1; nicht, die Option für Multi-Volume-Archive zu verwenden. Man kann natürlich alle Dateien mit &man.gzip.1; komprimieren, sie mit &man.tar.1; auf die Floppies aufspielen, und dann die Dateien wieder &man.gunzip.1; entkomprimieren! Wie werden Diskettenbackups wieder hergestellt? Zur Wiederherstellung des gesamten Archivs verwendet man: &prompt.root; tar Mxvf /dev/fd0 Eine Methode um nur bestimmte Dateien wieder her zu stellen ist mit der ersten Diskette den folgenden Befehl auszuführen: &prompt.root; tar Mxvf /dev/fd0 filename &man.tar.1; wird dann die folgenden Disketten anfordern, bis die benötigte Datei gefunden ist. Wenn man die Diskette kennt, auf der sich die Datei befindet, kann man alternativ diese Diskette auch direkt einlegen und den gleichen Befehl wie oben verwenden. Man beachte, dass, falls die erste Datei eine Fortsetzung einer Datei von einer der vorigen Disketten ist, &man.tar.1; die Warnung ausgibt, dass diese Datei nicht wiederhergestellt werden kann, selbst dann, wenn dies gar nicht verlangt wurde! Datensicherung Datensicherung Backup Die drei wichtigsten Programme zur Sicherung von Daten sind &man.dump.8;, &man.tar.1; und &man.cpio.1;. Sichern und Wiederherstellen Backup Software Sichern / Wiederherstellen dump restore dump und restore sind die traditionellen Backupprogramme in &unix; Systemen. Sie betrachten das Laufwerk als eine Ansammlung von Blöcken, operieren also unterhalb dem Abstraktionslevel von Dateien, Links und Verzeichnissen, die die Grundlage des Dateisystemkonzepts bilden. dump sichert ein ganzes Dateisystem auf einem Gerät, es ist nicht möglich nur einen Teil des Dateisystems, oder einen Verzeichnisbaum, der mehr als ein Dateisystem umfasst zu sichern. dump schreibt keine Dateien oder Verzeichnisse auf das Band, sondern die Blöcke, aus denen Dateien und Verzeichnisse bestehen. Wenn Sie mit dump das Root-Verzeichnis sichern, werden /home, /usr und viele andere Verzeichnisse nicht gesichert, da dies normalerweise Mountpunkte für andere Dateisysteme oder symbolische Links zu diesen Dateisystemen sind. dump hat einige Eigenarten, die noch aus den frühen Tagen der Version 6 von ATT Unix (ca. 1975) stammen. Die Parameter sind für 9-Spur-Bänder (6250 bpi) voreingestellt, nicht auf die heute üblichen Medien hoher Dichte (bis zu 62.182 ftpi). Bei der Verwendung der Kapazitäten moderner Bandlaufwerke muss diese Voreinstellung auf der Kommandozeile überschrieben werden. .rhosts rdump und rrestore können Daten über Netzwerk auf ein Band, das sich in einem Laufwerk eines anderen Computers befindet, überspielen. Beide Programme benutzen die Befehle rcmd und ruserok zum Zugriff auf das entfernte Bandlaufwerk. Daher muss der Anwender, der das Backup durchführt, auf dem entfernten Rechner in .rhosts eingetragen sein. Die Argumente zu rdump und rrestore müssen zur Verwendung auf dem entfernten Computer geeignet sein. Wenn Sie zum Beispiel mit rdump von einem FreeBSD Rechner aus auf ein Exabyte Bandlaufwerk einer Sun mit Namen komodo zugreifen möchten, setzen Sie das folgende Kommando ab: &prompt.root; /sbin/rdump 0dsbfu 54000 13000 126 komodo:/dev/nsa8 /dev/da0a 2>&1 Zum Ausführen dieses Kommandos müssen Sie auf dem entfernten Rechner in .rhosts eingetragen sein. Die r-Kommandos sind ein großes Sicherheitsrisiko, daher sollten Sie deren Verwendung sorgfältig abwägen. Es ist auch möglich, dump und restore über eine gesicherte Verbindung mit ssh einzusetzen: <command>dump</command> mit <application>ssh</application> benutzen &prompt.root; /sbin/dump -0uan -f - /usr | gzip -2 | ssh1 -c blowfish \ targetuser@targetmachine.example.com dd of=/mybigfiles/dump-usr-l0.gz <command>tar</command> Backup Software tar &man.tar.1; stammt ebenfalls aus Version 6 von ATT Unix (ca. 1975). tar arbeitet mit dem Dateisystem, denn es schreibt Dateien und Verzeichnisse auf das Band. tar unterstützt zwar nicht den vollen Umfang von Optionen, die bei &man.cpio.1; zur Verfügung stehen, aber dafür erfordert tar nicht die ungewöhnliche Kommando-Pipeline, die cpio verwendet. tar Die meisten Versionen von tar unterstützen keine Backups über das Netzwerk. Die GNU-Version von tar die in FreeBSD verwendet wird, unterstützt jedoch entfernte Geräte mit der gleichen Syntax wie rdump. Um tar für ein Exabyte-Bandlaufwerk auf einer Sun namens komodo auszuführen, muss folgendes Kommando aufgerufen werden: &prompt.root; /usr/bin/tar cf komodo:/dev/nsa8 . 2>&1 Bei den Versionen ohne Unterstützung für entfernte Geräte kann man die Daten über eine Pipeline und rsh an ein entferntes Laufwerk senden. &prompt.root; tar cf - . | rsh hostname dd of=tape-device obs=20b Wenn Sie Bedenken bezüglich der Sicherheit beim Backup über das Netz haben, sollten Sie ssh anstatt rsh benutzen. Cpio Backup Software cpio &man.cpio.1; ist das ursprüngliche Programm von &unix; Systemen zum Dateitransfer mit magnetischen Medien. cpio hat (neben vielen anderen Leistungsmerkmalen) Optionen zum Byte-Swapping, zum Schreiben einer Anzahl verschiedener Archivformate und zum Weiterleiten von Daten an andere Programme über eine Pipeline. Dieses letzte Leistungsmerkmal macht cpio zu einer ausgezeichneten Wahl für Installationsmedien. Leider kann cpio keine Dateibäume durchlaufen, so dass eine Liste der zu bearbeitenden Dateien über stdin angegeben werden muss. cpio unterstützt keine Backups über das Netzwerk. Man kann aber eine Pipeline und rsh verwenden, um Daten an ein entferntes Bandlaufwerk zu senden. &prompt.root; for f in directory_list; do find $f >> backup.list done &prompt.root; cpio -v -o --format=newc < backup.list | ssh user@host "cat > backup_device" Dabei steht directory_list für eine Aufzählung der Verzeichnisse, die Sie sichern wollen. user@host gibt den Benutzer auf dem Zielrechner an, der die Sicherung laufen lässt. Der Ort der Sicherung wird durch backup_device angegeben (z.B. /dev/nsa0). <command>pax</command> Backup Software pax pax POSIX IEEE &man.pax.1; ist die Antwort von IEEE/POSIX auf tar und cpio. Über die Jahre hinweg sind die verschiedenen Versionen von tar und cpio leicht inkompatibel geworden. Daher hat POSIX, statt eine Standardisierung zwischen diesen auszufechten, ein neues Archivprogramm geschaffen. pax versucht viele der unterschiedlichen cpio- und tar-Formate zu lesen und zu schreiben, außerdem einige neue, eigene Formate. Die Kommandostruktur ähnelt eher cpio als tar. <application>Amanda</application> Backup Software Amanda Amanda Amanda (Advanced Maryland Network Disk Archiver) ist ein Client/Server-Backupsystem, nicht nur ein einzelnes Programm. Ein Amanda-Server kann auf einem einzigen Bandlaufwerk Datensicherungen von jeder beliebigen Anzahl von Computern speichern, sofern auf diesen jeweils ein Amanda-Client läuft und sie über Netzwerk mit dem Amanda-Server verbunden sind. Ein häufiges Problem bei Standorten mit einer Anzahl großer Festplatten ist, dass das Kopieren der Daten auf Band langsamer vor sich geht als solche Daten anfallen. Amanda löst dieses Problem durch Verwendung einer Holding Disk, einer Festplatte zum gleichzeitigen Zwischenspeichern mehrerer Dateisysteme. Für Datensicherungen über einen längeren Zeitraum erzeugt Amanda Archivsets von allen Dateisystemen, die in Amanda's Konfigurationsdatei genannt werden. Ein Archivset ist eine Gruppe von Bändern mit vollen Backups und Reihen von inkrementellen (oder differentiellen) Backups, die jeweils nur die Unterschiede zum vorigen Backup enthalten. Zur Wiederherstellung von beschädigten Dateisystemen benötigt man Das Letzte volle Backup und alle darauf folgenden inkrementellen Backups. Die Konfigurationsdatei ermöglicht die Feineinstellung der Backups und des Netzwerkverkehrs von Amanda. Amanda kann zum Schreiben der Daten auf das Band jedes der oben beschriebenen Backuprogramme verwenden. Amanda ist nicht Teil des Basissystems, Sie müssen Amanda über die Ports-Sammlung oder als Paket installieren. Tue nichts Tue nichts ist kein Computerprogramm, sondern die am häufigsten angewendete Backupstrategie. Diese kostet nichts, man muss keinen Backupplan befolgen, einfach nur nein sagen. Wenn etwas passiert, einfach grinsen und ertragen! Wenn Ihre Zeit und Ihre Daten nicht so wichtig sind, dann ist die Strategie Tue nichts das geeignetste Backupprogramm für Ihren Computer. Aber &unix; ist ein nützliches Werkzeug, Sie müssen damit rechnen, dass Sie innerhalb von sechs Monaten eine Sammlung von Dateien haben, die für Sie wertvoll geworden sind. Tue nichts ist die richtige Backupmethode für /usr/obj und andere Verzeichnisbäume, die vom Computer exakt wiedererzeugt werden können. Ein Beispiel - sind die Dateien, die diese Handbuchseiten darstellen — sie + sind die Dateien, die diese Handbuchseiten darstellen – sie wurden aus Quelldateien im Format SGML erzeugt. Es ist nicht nötig, Sicherheitskopien der Dateien in den sekundären Formaten wie etwa HTML zu erstellen. Die Quelldateien in SGML sollten jedoch in die regelmäßigen Backups mit einbezogen werden. Welches Backup-Programm ist am Besten? LISA dump, Punkt und Schluss. Elizabeth D. Zwicky hat alle hier genannten Backup-Programme bis zur Erschöpfung ausgetestet. Ihre eindeutige Wahl zur Sicherung aller Daten mit Berücksichtigung aller Besonderheiten von &unix; Dateisystemen ist dump. Elizabeth erzeugte Dateisysteme mit einer großen Vielfalt ungewöhnlicher Bedingungen (und einiger gar nicht so ungewöhnlicher) und testete jedes Programm durch ein Backup und eine Wiederherstellung dieser Dateisysteme. Unter den Besonderheiten waren Dateien mit Löchern, Dateien mit Löchern und einem Block mit Null-Zeichen, Dateien mit ausgefallenen Buchstaben im Dateinamen, unlesbare und nichtschreibbare Dateien, Gerätedateien, Dateien, deren Länge sich während des Backups ändert, Dateien, die während des Backups erzeugt und gelöscht werden, u.v.m. Sie berichtete über ihre Ergebnisse in LISA V im Oktober 1991, s. Torture-testing Backup and Archive Programs. Die Wiederherstellung in einem Notfall Vor dem Unglück Es sind nur vier Vorkehrungen zu treffen, um auf jedes erdenkliche Unglück vorbereitet zu sein. disklabel Als erstes drucken Sie das Disklabel jeder Ihrer Festplatten (z.B. mittels disklabel da0 | lpr), die Partitions- und Dateisystemtabelle jeder Festplatte (mit /etc/fstab) sowie alle Bootmeldungen, jeweils in zweifacher Ausfertigung. fix-it floppies Zweitens, überzeugen Sie sich, dass sowohl die Bootdiskette als auch die Reparaturdiskette (boot.flp bzw. fixit.flp) all Ihre Geräte ansprechen können. Die einfachste Methode dies nachzuprüfen ist, Ihren Rechner mit der Boot-Diskette im Floppylaufwerk neu zu starten und die Bootmeldungen zu durchzusehen. Wenn all Ihre Geräte aufgelistet sind und funktionieren, können Sie weiter zu Schritt drei gehen. Ist das nicht der Fall, müssen Sie sich eine eigene Version der beiden zum Booten benötigten Disketten erstellen. Diese müssen einen Kernel enthalten, der all Ihre Platten mounten kann und Zugriff auf Ihr Bandlaufwerk gestattet. Diese Disketten müssen ferner folgende Programme enthalten: fdisk, disklabel, newfs, mount sowie jedes Backup-Programm, das Sie verwenden. Diese Programme müssen statisch gelinkt sein. Falls Sie dump verwenden, muss die Diskette auch restore enthalten. Drittens, machen Sie oft Backups auf Band. Jede Änderung seit Ihrem letzten Backup kann unwiederbringlich verloren gehen. Versehen Sie die Backup-Bänder mit Schreibschutz. Viertens, testen Sie aus, wie die Disketten (entweder boot.flp und fixit.flp oder Ihre beiden eigenen Disketten aus Schritt zwei) und die Bänder mit den Backups zu behandeln sind. Machen Sie sich Notizen zu diesem Test. Bewahren Sie diese Notizen zusammen mit den Bootdisketten, den Ausdrucken und den Bändern mit den Backups auf. Wenn der Ernstfall eintritt, werden Sie vielleicht so genervt sein, dass Sie ohne Ihre Notizen vielleicht das Backup auf Ihren Bändern zerstören. (Wie das geht? Man braucht nur unglücklicherweise den Befehl tar cvf /dev/sa0 einzugeben um ein Band zu überschreiben). Als zusätzliche Sicherheitsvorkehrung, kann man jeweils die Disketten und Bänder zweifach erstellen. Eine der Kopien sollte an einem entfernten Standort aufbewahrt werden. Ein entfernter Standort ist NICHT der Keller im gleichen Bürogebäude. Eine Anzahl von Firmen im World Trade Center musste diese Lektion auf die harte Tour lernen. Ein entfernter Standort sollte von Ihrem Computer und Ihren Festplatten physikalisch durch eine erhebliche Entfernung getrennt sein. Ein Beispielskript zum Erstellen eigener Bootdisketten /mnt/sbin/init gzip -c -best /sbin/fsck > /mnt/sbin/fsck gzip -c -best /sbin/mount > /mnt/sbin/mount gzip -c -best /sbin/halt > /mnt/sbin/halt gzip -c -best /sbin/restore > /mnt/sbin/restore gzip -c -best /bin/sh > /mnt/bin/sh gzip -c -best /bin/sync > /mnt/bin/sync cp /root/.profile /mnt/root cp -f /dev/MAKEDEV /mnt/dev chmod 755 /mnt/dev/MAKEDEV chmod 500 /mnt/sbin/init chmod 555 /mnt/sbin/fsck /mnt/sbin/mount /mnt/sbin/halt chmod 555 /mnt/bin/sh /mnt/bin/sync chmod 6555 /mnt/sbin/restore # # Geraetedateien erstellen # cd /mnt/dev ./MAKEDEV std ./MAKEDEV da0 ./MAKEDEV da1 ./MAKEDEV da2 ./MAKEDEV sa0 ./MAKEDEV pty0 cd / # # Minimale Dateisystemtabelle erstellen # cat > /mnt/etc/fstab < /mnt/etc/passwd < /mnt/etc/master.passwd < Nach dem Unglück Die Schlüsselfrage ist, ob Ihre Hardware überlebt hat. Denn da Sie ja regelmäßig Backups angefertigt haben, brauchen Sie sich um die Software keine Sorgen zu machen. Falls die Hardware beschädigt wurde, ersetzen Sie zuerst die defekten Teile. Falls die Hardware funktioniert, überprüfen Sie die Disketten. Wenn Sie eigene Bootdisketten verwenden, booten Sie im Single-User-Modus (geben dazu Sie -s am Boot-Prompt boot: ein). Überspringen Sie den folgenden Paragrafen. Wenn Sie die Standarddisketten boot.flp und fixit.flp verwenden, lesen Sie hier weiter. Legen Sie die Bootdiskette boot.flp in das erste Floppylaufwerk ein und starten Sie den Computer. Wie üblich wird dann das originale Installationsmenü von FreeBSD gestartet. Wählen Sie die Option Fixit--Repair mode with CD-ROM or floppy. Legen Sie die Diskette fixit.flp ein, wenn danach gefragt wird. restore und die anderen Programme, die Sie benötigen, befinden sich dann in /mnt2/stand. Stellen Sie die Dateisysteme nacheinander, getrennt von einander, wieder her. mount Root-Partition disklabel newfs Versuchen Sie die Root-Partition Ihrer ersten Festplatte einzuhängen (z.B. mit mount /dev/sd0a /mnt). Wenn das Disklabel beschädigt wurde, benutzen Sie disklabel um die Platte neu zu partitionieren und zu benennen und zwar so, dass die Festplatte mit dem Label übereinstimmt, das Sie ausgedruckt und aufbewahrt haben. Verwenden Sie newfs um neue Dateisysteme auf den Partitionen anzulegen. Hängen Sie nun die Root-Partition der Festplatte mit Schreibzugriff ein (mit mount -u -o rw /mnt). Benutzen Sie Ihr Backup-Programm um die Daten für das jeweilige Dateisystem aus den Backup-Bändern wieder her zu stellen (z.B. durch restore vrf /dev/sta). Hängen Sie das Dateisystem wieder aus (z.B. durch umount /mnt). Wiederholen Sie diesen Ablauf für jedes betroffene Dateisystem. Sobald Ihr System wieder läuft, machen Sie gleich wieder ein vollständiges Backup auf neue Bänder. Denn die Ursache für den Absturz oder den Datenverlust kann wieder zuschlagen. Eine weitere Stunde, die Sie jetzt noch dranhängen, kann Ihnen später ein weiteres Missgeschick ersparen. * Ich habe mich nicht auf Missgeschicke vorbereitet - was nun? ]]> Marc Fonvieille Verbessert und neu strukturiert von Netzwerk-, speicher- und dateibasierte Dateisysteme Laufwerke virtuelle Neben Laufwerken, die sich physikalisch im Rechner befinden wie Floppylaufwerke, CDs, Festplatten usw., kann FreeBSD auch mit anderen Laufwerken, den virtuellen Laufwerken, umgehen. NFS Coda Laufwerke speicherbasierte Laufwerke RAM-Disks Dazu zählen Netzwerkdateisysteme wie Network Filesystem und Coda, speicher- und dateibasierte Dateisysteme. Abhängig von der verwendeten FreeBSD Version werden speicher- und dateibasierte Dateisysteme mit unterschiedlichen Werkzeugen angelegt. In FreeBSD 4.X werden Gerätedateien mit &man.MAKEDEV.8; angelegt. FreeBSD 5.X erzeugt Gerätedateien automatisch mithilfe von &man.devfs.5;. Dateibasierte Laufwerke unter FreeBSD 4.X Laufwerke dateibasierte unter FreeBSD 4.X Mit &man.vnconfig.8; werden vnode Pseudo-Platten konfiguriert und aktiviert. Ein vnode stellt eine Datei dar, auf der Dateioperationen ablaufen. Das bedeutet, dass &man.vnconfig.8; Dateien benutzt, um ein Dateisystem zu erstellen und zu verwalten. Damit ist es z.B. möglich, Dateien, die Abbilder von Floppies oder CDs enthalten, anzuhängen. In der Kernelkonfiguration muss die &man.vn.4;-Unterstützung aktiviert sein, damit &man.vnconfig.8; funktioniert: pseudo-device vn Um ein existierendes Abbild eines Dateisystems einzuhängen: Einhängen eines existierenden Abbildes unter FreeBSD 4.X &prompt.root; vnconfig vn0 diskimage &prompt.root; mount /dev/vn0c /mnt Um ein neues Dateisystem mit &man.vnconfig.8; anzulegen: Anlegen eines dateibasierten Laufwerks &prompt.root; dd if=/dev/zero of=newimage bs=1k count=5k 5120+0 records in 5120+0 records out &prompt.root; vnconfig -s labels -c vn0 newimage &prompt.root; disklabel -r -w vn0 auto &prompt.root; newfs vn0c Warning: 2048 sector(s) in last cylinder unallocated /dev/vn0c: 10240 sectors in 3 cylinders of 1 tracks, 4096 sectors 5.0MB in 1 cyl groups (16 c/g, 32.00MB/g, 1280 i/g) super-block backups (for fsck -b #) at: 32 &prompt.root; mount /dev/vn0c /mnt &prompt.root; df /mnt Filesystem 1K-blocks Used Avail Capacity Mounted on /dev/vn0c 4927 1 4532 0% /mnt Dateibasierte Laufwerke unter FreeBSD 5.X Laufwerke dateibasierte unter FreeBSD 5.X Unter FreeBSD 5.0 werden virtuelle Laufwerke (&man.md.4;) mit &man.mdconfig.8; erzeugt. Dazu muss das Modul &man.md.4; geladen sein oder das entsprechende Gerät in der Kernelkonfiguration aktiviert sein: device md Mit &man.mdconfig.8; können drei verschiedene virtuelle Laufwerke angelegt werden: speicherbasierte Laufwerke, deren Speicher von &man.malloc.9; zur Verfügung gestellt wird, oder dateibasierte Laufwerke, deren Speicher von einer Datei oder dem Swap-Bereich zur Verfügung gestellt wird. Eine mögliche Anwendung ist das Einhängen von Dateien, die Abbilder von CD-ROMs oder Floppies enthalten. Das Abbild eines Dateisystems wird wie folgt eingehangen: Einhängen eines existierenden Abbildes unter FreeBSD 5.X &prompt.root; mdconfig -a -t vnode -f diskimage -u 0 &prompt.root; mount /dev/md0c /mnt Ein neues Dateisystem-Abbild erstellen Sie mit &man.mdconfig.8; wie folgt: Erstellen eines dateibasierten Laufwerks mit <command>mdconfig</command> &prompt.root; dd if=/dev/zero of=newimage bs=1k count=5k 5120+0 records in 5120+0 records out &prompt.root; mdconfig -a -t vnode -f newimage -u 0 &prompt.root; disklabel -r -w md0 auto &prompt.root; newfs md0c /dev/md0c: 5.0MB (10240 sectors) block size 16384, fragment size 2048 using 4 cylinder groups of 1.27MB, 81 blks, 256 inodes. super-block backups (for fsck -b #) at: 32, 2624, 5216, 7808 &prompt.root; mount /dev/md0c /mnt &prompt.root; df /mnt Filesystem 1K-blocks Used Avail Capacity Mounted on /dev/md0c 4846 2 4458 0% /mnt Wenn Sie keine Gerätenummer mit dem Schalter angeben, wird von &man.md.4; automatisch eine ungenutzte Gerätenummer zugewiesen. Das zugewiesene Gerät wird auf der Standardausgabe ausgegeben (zum Beispiel md4). Weitere Informationen entnehmen Sie bitte der Hilfeseite &man.mdconfig.8;. Das Werkzeug &man.mdconfig.8; ist sehr nützlich, doch muss man viele Kommandos absetzen, um ein dateibasiertes Dateisystem zu erstellen. FreeBSD enthält das Werkzeug &man.mdmfs.8;, das die notwendigen Schritte in einem Befehl zusammenfasst. Es konfiguriert mit &man.mdconfig.8; ein &man.md.4;-Laufwerk, erstellt darauf mit &man.newfs.8; ein Dateisystem und hängt es anschließend mit &man.mount.8; ein. Das virtuelle Laufwerk aus dem obigen Beispiel kann somit einfach mit den nachstehenden Befehlen erstellt werden: &prompt.root; dd if=/dev/zero of=newimage bs=1k count=5k 5120+0 records in 5120+0 records in 5120+0 records out &prompt.root; mdmfs -F newimage -s 5m md0 /mnt &prompt.root; df /mnt Filesystem 1K-blocks Used Avail Capacity Mounted on /dev/md0 4846 2 4458 0% /mnt Wenn sie die Option ohne Gerätenummer verwenden, wählt &man.md.4; automatisch ein ungenutztes Gerät aus. Weitere Einzelheiten entnehmen Sie bitte der Hilfeseite &man.mdmfs.8;. Speicherbasierte Laufwerke unter FreeBSD 4.X Laufwerke speicherbasierte unter FreeBSD 4.X Laufwerke RAM-Disks unter FreeBSD 4.X Mit dem Gerätetreiber &man.md.4; lassen sich unter FreeBSD 4.X leicht speicherbasierte Laufwerke (RAM-disks) anlegen. Der dazu nötige Speicher wird mit &man.malloc.9; belegt. Nehmen Sie einfach ein Dateisystem, dass Sie z.B. mit &man.vnconfig.8; vorbereitet haben: Speicherbasiertes Laufwerk unter FreeBSD 4.X &prompt.root; dd if=newimage of=/dev/md0 5120+0 records in 5120+0 records out &prompt.root; mount /dev/md0c /mnt &prompt.root; df /mnt Filesystem 1K-blocks Used Avail Capacity Mounted on /dev/md0c 4927 1 4532 0% /mnt Weitere Einzelheiten entnehmen Sie bitte der Hilfeseite &man.md.4;. Speicherbasierte Laufwerke unter FreeBSD 5.X Laufwerke speicherbasierte unter FreeBSD 5.X Laufwerke RAM-Disks unter FreeBSD 5.X Speicher- und dateibasierte Laufwerke werden in FreeBSD 5.0 mit denselben Werkzeugen erstellt: &man.mdconfig.8; oder &man.mdmfs.8;. Der Speicher für speicherbasierte Laufwerke (RAM-disks) wird mit &man.malloc.9; belegt. Erstellen eines speicherbasierten Laufwerks mit <command>mdconfig</command> &prompt.root; mdconfig -a -t malloc -s 5m -u 1 &prompt.root; newfs -U md1 /dev/md1: 5.0MB (10240 sectors) block size 16384, fragment size 2048 using 4 cylinder groups of 1.27MB, 81 blks, 256 inodes. with soft updates super-block backups (for fsck -b #) at: 32, 2624, 5216, 7808 &prompt.root; mount /dev/md1 /mnt &prompt.root; df /mnt Filesystem 1K-blocks Used Avail Capacity Mounted on /dev/md1 4846 2 4458 0% /mnt Erstellen eines speicherbasierten Laufwerks mit <command>mdmfs</command> &prompt.root; mdmfs -M -s 5m md2 /mnt &prompt.root; df /mnt Filesystem 1K-blocks Used Avail Capacity Mounted on /dev/md2 4846 2 4458 0% /mnt Der Speicher für das Dateisystem muss nicht mit &man.malloc.9; zugewiesen werden, sondern kann auch aus dem Swap-Bereich stammen. Auf der Kommandozeile von &man.mdconfig.8; ist dazu durch zu ersetzen. Ohne Angabe des Schalters verwendet &man.mdmfs.8; Speicher aus dem Swap-Bereich. Weitere Informationen entnehmen Sie bitte den Hilfeseiten &man.mdconfig.8; und &man.mdmfs.8;. Virtuelle Laufwerke freigeben Laufwerke Freigabe von virtuellen Laufwerken Wenn ein virtuelles Laufwerk nicht mehr gebraucht wird, sollten Sie dem System die belegten Ressourcen zurückgeben. Hängen Sie dazu zuerst das Dateisystem ab und geben Sie dann die benutzten Ressourcen mit &man.mdconfig.8; frei. Alle von /dev/md4 belegten Ressourcen werden mit dem nachstehenden Kommando freigegeben: &prompt.root; mdconfig -d -u 4 Eingerichtete &man.md.4;-Geräte werden mit dem Befehl mdconfig -l angezeigt. Unter FreeBSD 4.X geben Sie die Ressourcen mit &man.vnconfig.8; frei. Die von /dev/vn4 belegten Ressourcen geben Sie wie folgt frei: &prompt.root; vnconfig -u vn4 Tom Rhodes Beigetragen von Schnappschüsse von Dateisystemen Schnappschüsse von Dateisystemen Schnappschüsse Zusammen mit Soft Updates bietet FreeBSD 5.0 eine neue Funktion: Schnappschüsse von Dateisystemen. Schnappschüsse sind Dateien, die ein Abbild eines Dateisystems enthalten und müssen auf dem jeweiligen Dateisystem erstellt werden. Pro Dateisystem darf es maximal 20 Schnappschüsse, die im Superblock vermerkt werden, geben. Schnappschüsse bleiben erhalten, wenn das Dateisystem abgehangen, neu eingehangen oder das System neu gestartet wird. Wenn Sie einen Schnappschuss nicht mehr benötigen, können Sie ihn mit &man.rm.1; löschen. Es ist egal, in welcher Reihenfolge Schnappschüsse gelöscht werden. Es kann allerdings vorkommen, dass nicht der gesamte Speicherplatz wieder freigegeben wird, da ein anderer Schnappschuss einen Teil der entfernten Blöcke für sich beanspruchen kann. Schnappschüsse werden mit dem Flag (siehe &man.chflags.1;) angelegt, um sicherzustellen, das nicht einmal root den Schnappschuss beschreiben kann. In &man.unlink.1; wird allerdings für Schnappschüsse eine Ausnahme gemacht: Sie dürfen gelöscht werden, ohne das das Flag vorher entfernt werden muss. Schnappschüsse werden mit &man.mount.8; erstellt. Das folgende Kommando legt einen Schnappschuss von /var in /var/snapshot/snap ab: &prompt.root; mount -u -o snapshot /var/snapshot/snap /var Nachdem ein Schnappschuss erstellt wurde, können Sie ihn für verschiedene Zwecke benutzen: Sie können den Schnappschuss für die Datensicherung benutzen und ihn auf eine CD oder ein Band schreiben. Sie können den Schnappschuss mit &man.fsck.8; prüfen. Wenn das Dateisystem zum Zeitpunkt der Erstellung des Schnappschusses in Ordnung war, sollte &man.fsck.8; immer erfolgreich durchlaufen. Sie können den Schnappschuss mit &man.dump.8; sichern. Sie erhalten dann eine konsistente Sicherung des Dateisystems zu dem Zeitpunkt, der durch den Zeitstempel des Schnappschusses gegeben ist. Der Schalter von &man.dump.8; erstellt für die Sicherung einen Schnappschuss und entfernt diesen am Ende der Sicherung wieder. Sie können einen Schnappschuss in den Verzeichnisbaum einhängen und sich dann den Zustand des Dateisystems zu dem Zeitpunkt ansehen, an dem der Schnappschuss erstellt wurde. Der folgende Befehl hängt den Schnappschuss /var/snapshot/snap ein: &prompt.root; mdconfig -a -t vnode -f /var/snapshot/snap -u 4 &prompt.root; mount -r /dev/md4 /mnt Sie können sich nun den eingefrorenen Stand des /var Dateisystems unterhalb von /mnt ansehen. Mit Ausnahme der früheren Schnappschüsse, die als leere Dateien auftauchen, wird alles so aussehen, wie zu dem Zeitpunkt als der Schnappschuss erstellt wurde. Wenn Sie den Schnappschuss nicht mehr benötigen, können Sie ihn, wie nachfolgend gezeigt, abhängen: &prompt.root; umount /mnt &prompt.root; mdconfig -d -u 4 Weitere Informationen über Soft Updates und Schnappschüsse von Dateisystemen sowie technische Artikel finden Sie auf der Webseite von Marshall Kirk McKusick. Dateisystem Quotas Accounting Plattenplatz Disk Quotas Quotas sind eine optionale Funktion des Betriebssystems, die es Ihnen erlauben, den Plattenplatz und/oder die Anzahl der Dateien eines Benutzers oder der Mitglieder einer Gruppe, auf Dateisystemebene zu beschränken. Oft wird dies auf Timesharing-Systemen (Mehrbenutzersystemen) genutzt, da es dort erwünscht ist, die Ressourcen, die ein Benutzer oder eine Gruppe von Benutzern belegen können, zu limitieren. Das verhindert, dass ein Benutzer oder eine Gruppe von Benutzern den ganzen verfügbaren Plattenplatz belegt. Konfiguration des Systems, um Quotas zu aktivieren Bevor Quotas benutzt werden können, müssen sie im Kernel konfiguriert werden, wozu die folgende Zeile der Kernelkonfiguration hinzugefügt wird: options QUOTA Im gewöhnlichen GENERIC Kernel sind Quotas nicht aktiviert, so dass Sie einen angepassten Kernel konfigurieren und bauen müssen, um Quotas zu benutzen. Weitere Informationen finden Sie in . Durch Hinzufügen der folgenden Zeile in /etc/rc.conf wird das Quota-System aktiviert: enable_quotas="YES" Disk Quotas überprüfen Um den Start des Quota-Systems zu beeinflussen, steht eine weitere Variable zur Verfügung. Normalerweise wird beim Booten die Integrität der Quotas auf allen Dateisystemen mit &man.quotacheck.8; überprüft. &man.quotacheck.8; stellt sicher, dass die Quota-Datenbank mit den Daten auf einem Dateisystem übereinstimmt. Dies ist allerdings ein sehr zeitraubender Prozess, der die Zeit, die das System zum Booten braucht, signifikant beeinflusst. Eine Variable in /etc/rc.config erlaubt es Ihnen, diesen Schritt zu überspringen: check_quotas="NO" Wenn Sie ein FreeBSD vor 3.2-RELEASE benutzen, ist die Konfiguration einfacher. In /etc/rc.conf setzen Sie nur eine Variable: check_quotas="YES" Schließlich müssen Sie noch in /etc/fstab die Plattenquotas auf Dateisystemebene aktivieren. Dort können Sie für alle Dateisysteme Quotas für Benutzer, Gruppen oder für beide aktivieren. Um Quotas pro Benutzer für ein Dateisystem zu aktivieren, geben Sie für dieses Dateisystem die Option im Feld Optionen von /etc/fstab an. Beispiel: /dev/da1s2g /home ufs rw,userquota 1 2 Um Quotas für Gruppen einzurichten, verwenden Sie anstelle von . Um Quotas für Benutzer und Gruppen einzurichten, ändern Sie den Eintrag wie folgt ab: /dev/da1s2g /home ufs rw,userquota,groupquota 1 2 Die Quotas werden jeweils im Rootverzeichnis des Dateisystems unter dem Namen quota.user für Benutzer-Quotas und quota.group für Gruppen-Quotas abgelegt. Obwohl &man.fstab.5; beschreibt, dass diese Dateien an anderer Stelle gespeichert werden können, wird das nicht empfohlen, da es den Anschein hat, dass die verschiedenen Quota-Utilities das nicht richtig unterstützen. Jetzt sollten Sie Ihr System mit dem neuen Kernel booten. /etc/rc wird dann automatisch die richtigen Kommandos aufrufen, die die Quota-Dateien für alle Quotas, die Sie in /etc/fstab definiert haben, anlegen. Deshalb müssen vorher auch keine leeren Quota-Dateien angelegt werden. Normalerweise brauchen Sie die Kommandos &man.quotacheck.8;, &man.quotaon.8; oder &man.quotaoff.8; nicht händisch aufzurufen, obwohl Sie vielleicht die entsprechenden Seiten im Manual lesen sollten, um sich mit ihnen vertraut zu machen. Setzen von Quota-Limits Disk Quotas Limits Nachdem Sie Quotas in Ihrem System aktiviert haben, sollten Sie überprüfen, dass Sie auch tatsächlich aktiviert sind. Führen Sie dazu einfach den folgenden Befehl aus: &prompt.root; quota -v Für jedes Dateisystem, auf dem Quotas aktiviert sind, sollten Sie eine Zeile mit der Plattenauslastung und den aktuellen Quota-Limits sehen. Mit &man.edquota.8; können Sie nun Quota-Limits setzen. Sie haben mehrere Möglichkeiten, die Limits für den Plattenplatz, den ein Benutzer oder eine Gruppe verbrauchen kann, oder die Anzahl der Dateien, die angelegt werden dürfen, festzulegen. Die Limits können auf dem Plattenplatz (Block-Quotas) oder der Anzahl der Dateien (Inode-Quotas) oder einer Kombination von beiden basieren. Jedes dieser Limits wird weiterhin in zwei Kategorien geteilt: Hardlimits und Softlimits. Hardlimit Ein Hardlimit kann nicht überschritten werden. Hat der Benutzer einmal ein Hardlimit erreicht, so kann er auf dem betreffenden Dateisystem keinen weiteren Platz mehr beanspruchen. Hat ein Benutzer beispielsweise ein Hardlimit von 500 Blöcken auf einem Dateisystem und benutzt davon 490 Blöcke, so kann er nur noch 10 weitere Blöcke beanspruchen. Der Versuch, weitere 11 Blöcke zu beanspruchen, wird fehlschlagen. Softlimit Im Gegensatz dazu können Softlimits für eine befristete Zeit überschritten werden. Diese Frist beträgt in der Grundeinstellung eine Woche. Hat der Benutzer das Softlimit über die Frist hinaus überschritten, so wird das Softlimit in ein Hardlimit umgewandelt und der Benutzer kann keinen weiteren Platz mehr beanspruchen. Wenn er einmal das Softlimit unterschreitet, wird die Frist wieder zurückgesetzt. Das folgende Beispiel zeigt die Benutzung von &man.edquota.8;. Wenn &man.edquota.8; aufgerufen wird, wird der Editor gestartet, der durch EDITOR gegeben ist oder vi falls EDITOR nicht gesetzt ist. In dem Editor können Sie die Limits eingeben. &prompt.root; edquota -u test Quotas for user test: /usr: blocks in use: 65, limits (soft = 50, hard = 75) inodes in use: 7, limits (soft = 50, hard = 60) /usr/var: blocks in use: 0, limits (soft = 50, hard = 75) inodes in use: 0, limits (soft = 50, hard = 60) Für jedes Dateisystem, auf dem Quotas aktiv sind, sehen Sie zwei Zeilen, eine für die Block-Quotas und die andere für die Inode-Quotas. Um ein Limit zu modifizieren, ändern Sie einfach den angezeigten Wert. Um beispielsweise das Blocklimit dieses Benutzers von einem Softlimit von 50 und einem Hardlimit von 75 auf ein Softlimit von 500 und ein Hardlimit von 600 zu erhöhen, ändern Sie die Zeile /usr: blocks in use: 65, limits (soft = 50, hard = 75) zu: /usr: blocks in use: 65, limits (soft = 500, hard = 600) Die neuen Limits sind wirksam, wenn Sie den Editor verlassen. Manchmal ist es erwünscht, die Limits für einen Bereich von UIDs zu setzen. Dies kann mit der Option von &man.edquota.8; bewerkstelligt werden. Weisen Sie dazu die Limits einem Benutzer zu und rufen danach edquota -p protouser startuid-enduid auf. Besitzt beispielsweise der Benutzer test die gewünschten Limits, können diese mit dem folgenden Kommando für die UIDs 10.000 bis 19.999 dupliziert werden: &prompt.root; edquota -p test 10000-19999 Weitere Informationen erhalten Sie in &man.edquota.8;. Überprüfen von Quota-Limits und Plattennutzung Disk Quotas überprüfen Sie können &man.quota.1; oder &man.repquota.8; benutzen, um Quota-Limits und Plattennutzung zu überprüfen. Um die Limits oder die Plattennutzung individueller Benutzer und Gruppen zu überprüfen, kann &man.quota.1; benutzt werden. Ein Benutzer kann nur die eigenen Quotas und die Quotas der Gruppe, der er angehört untersuchen. Nur der Superuser darf sich alle Limits ansehen. Mit &man.repquota.8; erhalten Sie eine Zusammenfassung von allen Limits und der Plattenausnutzung für alle Dateisysteme, auf denen Quotas aktiv sind. Das folgende Beispiel zeigt die Ausgabe von quota -v für einen Benutzer, der Quota-Limits auf zwei Dateisystemen besitzt: Disk quotas for user test (uid 1002): Filesystem blocks quota limit grace files quota limit grace /usr 65* 50 75 5days 7 50 60 /usr/var 0 50 75 0 50 60 Disk Quotas Frist Im Dateisystem /usr liegt der Benutzer momentan 15 Blöcke über dem Softlimit von 50 Blöcken und hat noch 5 Tage seiner Frist übrig. Der Stern * zeigt an, dass der Benutzer sein Limit überschritten hat. In der Ausgabe von &man.quota.1; werden Dateisysteme, auf denen ein Benutzer keinen Platz verbraucht, nicht angezeigt, auch wenn diesem Quotas zugewiesen wurden. Mit werden diese Dateisysteme, wie /usr/var im obigen Beispiel, angezeigt. Quotas über NFS NFS Quotas werden von dem Quota-Subsystem auf dem NFS Server erzwungen. Der &man.rpc.rquotad.8; Dæmon stellt &man.quota.1; die Quota Informationen auf dem NFS Client zur Verfügung, so dass Benutzer auf diesen Systemen ihre Quotas abfragen können. Aktivieren Sie rpc.rquotad in /etc/inetd.conf wie folgt: rquotad/1 dgram rpc/udp wait root /usr/libexec/rpc.rquotad rpc.rquotad Anschließend starten Sie inetd neu: &prompt.root; kill -HUP `cat /var/run/inetd.pid`
diff --git a/de_DE.ISO8859-1/books/handbook/eresources/chapter.sgml b/de_DE.ISO8859-1/books/handbook/eresources/chapter.sgml index b282037088..44845b5df8 100644 --- a/de_DE.ISO8859-1/books/handbook/eresources/chapter.sgml +++ b/de_DE.ISO8859-1/books/handbook/eresources/chapter.sgml @@ -1,2135 +1,2130 @@ 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 cvs-all Änderungen im FreeBSD-Quellbaum freebsd-advocacy Verbreitung von FreeBSD freebsd-announce Wichtige Ereignisse und Meilensteine des Projekts freebsd-arch Architektur und Design von FreeBSD freebsd-bugbusters Diskussionen über die Pflege der FreeBSD Fehlerberichte-Datenbank und die dazu benutzten Werkzeuge freebsd-bugs Fehlerberichte freebsd-chat Nicht technische Themen, die die FreeBSD Gemeinschaft betreffen freebsd-config Entwicklung von Konfigurations- und Installations-Werkzeugen für FreeBSD freebsd-current Gebrauch von &os.current; freebsd-isp Themen, die Internet Service Provider betreffen, die FreeBSD benutzen freebsd-jobs Anstellung und Beratung im FreeBSD Umfeld freebsd-newbies Starthilfen für neue FreeBSD Benutzer freebsd-policy Grundsatzentscheidungen des FreeBSD Core Teams. Wenig Verkehr und nur zum Lesen freebsd-questions Benutzerfragen und technische Unterstützung freebsd-security-notifications Ankündigungen zum Thema Sicherheit freebsd-stable Gebrauch von &os.stable; freebsd-test 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 freebsd-afs Portierung von AFS nach FreeBSD freebsd-aic7xxx Entwicklung von Adaptec AIC 7xxx Treibern freebsd-alpha Portierung von FreeBSD auf Alpha Maschinen freebsd-arm Portierung von FreeBSD auf ARM Prozessoren freebsd-atm Benutzung von ATM Netzen mit FreeBSD freebsd-audit Audit der FreeBSD Quellen freebsd-binup Design und Entwicklung eines Systems, das es erlaubt, ein FreeBSD System mit binären Paketen zu aktualisieren freebsd-cluster Benutzung von FreeBSD in einem Cluster freebsd-cvsweb Pflege von CVSWeb freebsd-database Diskussion über Datenbanken und Datenbankprogrammierung unter FreeBSD freebsd-doc Erstellen der FreeBSD Dokumentation freebsd-emulation Emulation anderer Systeme wie Linux, DOS oder Windows freebsd-firewire Technische Diskussion über FreeBSD Firewire (iLink, IEEE 1394) freebsd-fs Dateisysteme freebsd-gnome Portierung von GNOME und GNOME-Anwendungen freebsd-hackers Allgemeine technische Diskussionen freebsd-hardware Allgemeine Diskussion über Hardware, auf der FreeBSD läuft freebsd-i18n Internationalisierung von FreeBSD freebsd-ia32 FreeBSD für die IA-32 (Intel x86) Plattform freebsd-ia64 Portierung von FreeBSD auf Intels neue IA64 Systeme freebsd-ipfw Technische Diskussion über die Neubearbeitung der IP-Firewall Quellen freebsd-isdn Für Entwickler des ISDN Systems freebsd-java Für Java-Entwickler und Leute, die JDKs nach FreeBSD portieren freebsd-lfs Portierung von LFS nach FreeBSD freebsd-libh Das nächste Installations- und Paketsystem freebsd-mips Portierung von FreeBSD zu MIPS freebsd-mobile Diskussionen über mobiles Rechnen freebsd-mozilla Portierung von Mozilla nach FreeBSD freebsd-multimedia Multimedia Anwendungen freebsd-new-bus Technische Diskussionen über die Architektur von Bussen freebsd-net Diskussion über Netzwerke und den TCP/IP Quellcode freebsd-openoffice Portierung von OpenOffice.org und StarOffice nach FreeBSD freebsd-platforms Portierungen von FreeBSD auf nicht-Intel Architekturen freebsd-ports Diskussion über die Ports-Sammlung freebsd-ppc Portierung von FreeBSD auf den PowerPC freebsd-qa Diskussion über Qualitätssicherung, normalerweise kurz vor einem Release freebsd-realtime Entwicklung von Echtzeiterweiterungen für FreeBSD freebsd-scsi Diskussion über das SCSI Subsystem freebsd-security Sicherheitsthemen freebsd-small Gebrauch von FreeBSD in eingebetteten Systemen freebsd-smp Diskussionen über das Design von asymmetrischen und symmetrischen Mehrprozessor-Programmen freebsd-sparc Portierung von FreeBSD auf SPARC Systeme freebsd-testing Leistungs- und Stabilitätstests von FreeBSD freebsd-standards Konformität von FreeBSD mit den C99- und POSIX-Standards freebsd-tokenring 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 freebsd-core FreeBSD Core Team freebsd-hubs Betrieb von FreeBSD Spiegeln freebsd-install Entwicklung von Installations-Werkzeugen freebsd-user-groups Koordination von Benutzergruppen freebsd-vendors Koordination von Händlern vor einem Release freebsd-www Betreuer von www.FreeBSD.org Zusammenfassungen: Viele der oben aufgeführten Listen sind auch als Zusammenfassungen erhältlich. Neue Nachrichten werden solange gesammelt, bis ihre Größe 100 KB überschreitet und dann als eine E-Mail verschickt. Von den folgenden Listen gibt es Zusammenfassungen: Mailingliste cvs-all-digest freebsd-afs-digest freebsd-alpha-digest freebsd-arm-digest freebsd-chat-digest freebsd-current-digest freebsd-database-digest freebsd-hackers-digest freebsd-ia32-digest freebsd-ia64-digest freebsd-isdn-digest freebsd-java-digest freebsd-questions-digest freebsd-security-digest freebsd-sparc-digest freebsd-stable-digest freebsd-test-digest 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 cvs-all /usr/src Alle Änderungen am Quellbaum Mailinglisten abonnieren Um eine Liste zu abonnieren, schicken Sie eine E-Mail mit dem folgenden Textkörper an &a.majordomo;: subscribe Liste [optionale Adresse] Die Mailingliste freebsd-announce abonnieren Sie zum Beispiel wie folgt: &prompt.user; mail majordomo@FreeBSD.org subscribe freebsd-announce ^D 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. Beachten Sie, dass die Listen über &a.majordomo; abonniert werden, benutzen Sie dazu nicht die Adresse der Liste. Wenn Sie die Liste unter einem anderen Namen empfangen wollen, oder die Liste für eine lokale Mailingliste abonnieren (dafür sind wir übrigens sehr dankbar, da es unsere Ressourcen schont), geben Sie die Adresse, an die die Nachrichten geschickt werden sollen, mit an: &prompt.user; mail majordomo@FreeBSD.org subscribe freebsd-announce local-announce@example.com ^D Ferner können Sie &a.majordomo; noch weitere Kommandos schicken, mit denen Sie Ihr Abonnement aufheben, die Mitglieder einer Liste einsehen oder eine Aufzählung der verfügbaren Listen erhalten. Eine vollständige Liste der Kommandos erhalten Sie, wenn Sie die folgende Nachricht versenden: &prompt.user; mail majordomo@FreeBSD.org help ^D 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: FREEBSD-AFS Andrew File System Auf dieser Liste wird die Portierung des AFS von CMU/Transarc diskutiert. FREEBSD-ANNOUNCE 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. FREEBSD-ARCH 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. FREEBSD-AUDIT 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. FREEBSD-BINUP 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. FREEBSD-BUGBUSTERS 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. FREEBSD-BUGS Fehlerberichte Auf dieser Liste werden Fehlerberichte gesammelt. Fehlerberichte sollten immer mit &man.send-pr.1; oder dem Web Formular erstellt werden. FREEBSD-CHAT 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. FREEBSD-CORE 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. FREEBSD-CURRENT 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. FREEBSD-CURRENT-DIGEST Gebrauch von &os.current; Dies ist die Zusammenfassung der Mailingliste &a.current;. Alle Nachrichten der Liste &a.current; werden gesammelt und in einer E-Mail versendet. Die Zusammenfassung ist nur zum Lesen gedacht, schicken Sie keine Nachrichten an diese Liste. FREEBSD-CVSWEB FreeBSD CVSweb Project Technische Diskussion über den Gebrauch, die Entwicklung und die Pflege von FreeBSD-CVSweb. FREEBSD-DOC 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. FREEBSD-FIREWIRE 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. FREEBSD-FS Dateisysteme Diskussionen über FreeBSD Dateisysteme. Dies ist eine technische Liste, in der nur technische Inhalte erwartet werden. FREEBSD-GNOME GNOME Diskussionen über die grafische Benutzeroberfläche GNOME. Dies ist eine technische Liste, in der nur technische Inhalte erwartet werden. FREEBSD-IPFW IP Firewall Diskussionen über eine Neubearbeitung des IP-Firewall Quelltexts in FreeBSD. Dies ist eine technische Liste, in der nur technische Inhalte erwartet werden. FREEBSD-IA64 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. FREEBSD-ISDN ISDN Subsystem Mailingliste für die Entwickler des ISDN Subsystems von FreeBSD. FREEBSD-JAVA Java Entwicklung Mailingliste, auf der die Entwicklung von Java Anwendungen für FreeBSD sowie die Portierung und Pflege von JDKs diskutiert wird. FREEBSD-HACKERS 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. FREEBSD-HACKERS-DIGEST Technische Diskussionen Dies ist die Zusammenfassung der Mailingliste &a.hackers;. Alle Nachrichten der Liste &a.hackers; werden gesammelt und in einer E-Mail versendet. Die Zusammenfassung ist nur zum Lesen gedacht, schicken Sie keine Nachrichten an diese Liste. FREEBSD-HARDWARE 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. FREEBSD-HUBS FreeBSD Spiegel Ankündigungen und Diskussionsforum für Leute, die FreeBSD Spiegel betreiben. FREEBSD-INSTALL Entwicklung von Installations-Werkzeugen Auf dieser Liste wird die Entwicklung von Installations-Werkzeugen für künftige Releases diskutiert. FREEBSD-ISP 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. FREEBSD-NEWBIES 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. FREEBSD-OPENOFFICE OpenOffice.org Portierung und Pflege von OpenOffice.org und StarOffice. FREEBSD-PLATFORMS 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. FREEBSD-POLICY 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. FREEBSD-PORTS Diskussion über die Ports-Sammlung Diskussionen über die FreeBSD Ports-Sammlung, neue Ports, Veränderungen am System der Ports-Sammlung. Die Liste dient auch der allgemeinen Koordination der Dinge, die die Ports-Sammlung betreffen. Auf dieser Liste finden nur technische Diskussionen statt. FREEBSD-QUESTIONS 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. FREEBSD-QUESTIONS-DIGEST Benutzerfragen Dies ist die Zusammenfassung der Mailingliste &a.questions;. Die Nachrichten der Liste werden gesammelt und in einer E-Mail versendet. FREEBSD-SCSI SCSI Subsystem Diese Mailingliste ist für die Entwickler des SCSI Subsystems von FreeBSD. Auf dieser Liste finden nur technische Diskussionen statt. FREEBSD-SECURITY 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. FREEBSD-SECURITY-NOTIFICATIONS 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. FREEBSD-SMALL 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. FREEBSD-STABLE 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. FREEBSD-STANDARDS 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. FREEBSD-USER-GROUPS 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. FREEBSD-VENDORS Koordination von Händlern Koordination zwischen dem FreeBSD Projekt und Händlern, die Soft- und Hardware für FreeBSD verkaufen. 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 http://www.FreeBSD.org/ - — Hauptserver. + – Hauptserver. http://www.ar.FreeBSD.org/ — Armenien. + url="http://www.ar.FreeBSD.org/">http://www.ar.FreeBSD.org/ – Armenien. http://www.au.FreeBSD.org/ — Australien/1. + url="http://www.au.FreeBSD.org/">http://www.au.FreeBSD.org/ – Australien/1. http://www2.au.FreeBSD.org/ — Australien/2. + url="http://www2.au.FreeBSD.org/">http://www2.au.FreeBSD.org/ – Australien/2. http://www3.au.FreeBSD.org/ — Australien/3. + url="http://www3.au.FreeBSD.org/">http://www3.au.FreeBSD.org/ – Australien/3. http://www4.au.FreeBSD.org/ — Australien/4. + url="http://www4.au.FreeBSD.org/">http://www4.au.FreeBSD.org/ – Australien/4. http://www5.au.FreeBSD.org/ — Australien/5. + url="http://www5.au.FreeBSD.org/">http://www5.au.FreeBSD.org/ – Australien/5. http://www6.au.FreeBSD.org/ — Australien/6. + url="http://www6.au.FreeBSD.org/">http://www6.au.FreeBSD.org/ – Australien/6. http://http://freebsd.itworks.com.au/ — Australien/7. + url="http://http://freebsd.itworks.com.au/">http://http://freebsd.itworks.com.au/ – Australien/7. freebsd.unixtech.be/ — Belgien. + url="http://freebsd.unixtech.be/">freebsd.unixtech.be/ – Belgien. http://www.br.FreeBSD.org/ — Brasilien/1. + url="http://www.br.FreeBSD.org/">http://www.br.FreeBSD.org/ – Brasilien/1. http://www2.br.FreeBSD.org/ — Brasilien/2. + url="http://www2.br.FreeBSD.org/">http://www2.br.FreeBSD.org/ – Brasilien/2. http://www3.br.FreeBSD.org/ — Brasilien/3. + url="http://www3.br.FreeBSD.org/">http://www3.br.FreeBSD.org/ – Brasilien/3. http://www.bg.FreeBSD.org/ — Bulgarien. + url="http://www.bg.FreeBSD.org/">http://www.bg.FreeBSD.org/ – Bulgarien. http://www.cn.FreeBSD.org/ — China. + url="http://www.cn.FreeBSD.org/">http://www.cn.FreeBSD.org/ – China. http://www.dk.FreeBSD.org/ — Dänemark. + url="http://www.dk.FreeBSD.org/">http://www.dk.FreeBSD.org/ – Dänemark. http://www3.dk.FreeBSD.org/ — Dänemark/3. + url="http://www3.dk.FreeBSD.org/">http://www3.dk.FreeBSD.org/ – Dänemark/3. http://www.de.FreeBSD.org/ — Deutschland/1. + url="http://www.de.FreeBSD.org/">http://www.de.FreeBSD.org/ – Deutschland/1. http://www1.de.FreeBSD.org/ — Deutschland/2. + url="http://www1.de.FreeBSD.org/">http://www1.de.FreeBSD.org/ – Deutschland/2. http://www2.de.FreeBSD.org/ — Deutschland/3. + url="http://www2.de.FreeBSD.org/">http://www2.de.FreeBSD.org/ – Deutschland/3. http://www.ee.FreeBSD.org/ — Estland. + url="http://www.ee.FreeBSD.org/">http://www.ee.FreeBSD.org/ – Estland. http://www.fi.FreeBSD.org/ — Finnland. + url="http://www.fi.FreeBSD.org/">http://www.fi.FreeBSD.org/ – Finnland. http://www2.fi.FreeBSD.org/ — Finnland/2. + url="http://www2.fi.FreeBSD.org/">http://www2.fi.FreeBSD.org/ – Finnland/2. http://www.fr.FreeBSD.org/ — Frankreich. + url="http://www.fr.FreeBSD.org/">http://www.fr.FreeBSD.org/ – Frankreich. http://www.gr.FreeBSD.org/ — Griechenland. + url="http://www.gr.FreeBSD.org/">http://www.gr.FreeBSD.org/ – Griechenland. http://www.uk.FreeBSD.org/ — Großbritannien/1. + url="http://www.uk.FreeBSD.org/">http://www.uk.FreeBSD.org/ – Großbritannien/1. http://www2.uk.FreeBSD.org/ — Großbritannien/2. + url="http://www2.uk.FreeBSD.org/">http://www2.uk.FreeBSD.org/ – Großbritannien/2. http://www3.uk.FreeBSD.org/ — Großbritannien/3. + url="http://www3.uk.FreeBSD.org/">http://www3.uk.FreeBSD.org/ – Großbritannien/3. http://www4.uk.FreeBSD.org/ — Großbritannien/4. + url="http://www4.uk.FreeBSD.org/">http://www4.uk.FreeBSD.org/ – Großbritannien/4. http://www.hk.FreeBSD.org/ — Hong Kong. + url="http://www.hk.FreeBSD.org/">http://www.hk.FreeBSD.org/ – Hong Kong. http://www.ie.FreeBSD.org/ — Irland. + url="http://www.ie.FreeBSD.org/">http://www.ie.FreeBSD.org/ – Irland. http://www2.ie.FreeBSD.org/ — Irland/2. + url="http://www2.ie.FreeBSD.org/">http://www2.ie.FreeBSD.org/ – Irland/2. http://www.is.FreeBSD.org/ — Island. + url="http://www.is.FreeBSD.org/">http://www.is.FreeBSD.org/ – Island. http://www.it.FreeBSD.org/ — Italien. + url="http://www.it.FreeBSD.org/">http://www.it.FreeBSD.org/ – Italien. http://www.gufi.org/mirrors/www.freebsd.org/data/ — Italien/2. + url="http://www.gufi.org/mirrors/www.freebsd.org/data/">http://www.gufi.org/mirrors/www.freebsd.org/data/ – Italien/2. http://www.jp.FreeBSD.org/www.FreeBSD.org/ — Japan. + url="http://www.jp.FreeBSD.org/www.FreeBSD.org/">http://www.jp.FreeBSD.org/www.FreeBSD.org/ – Japan. http://www.ca.FreeBSD.org/ — Kanada. + url="http://www.ca.FreeBSD.org/">http://www.ca.FreeBSD.org/ – Kanada. http://www3.ca.FreeBSD.org/ — Kanada/3. + url="http://www3.ca.FreeBSD.org/">http://www3.ca.FreeBSD.org/ – Kanada/3. http://www.kr.FreeBSD.org/ — Korea/1. + url="http://www.kr.FreeBSD.org/">http://www.kr.FreeBSD.org/ – Korea/1. http://www2.kr.FreeBSD.org/ — Korea/2. + url="http://www2.kr.FreeBSD.org/">http://www2.kr.FreeBSD.org/ – Korea/2. http://www3.kr.FreeBSD.org/ — Korea/3. + url="http://www3.kr.FreeBSD.org/">http://www3.kr.FreeBSD.org/ – Korea/3. http://www.lv.FreeBSD.org/ — Lettland. + url="http://www.lv.FreeBSD.org/">http://www.lv.FreeBSD.org/ – Lettland. http://www.lt.FreeBSD.org/ — Litauen. + url="http://www.lt.FreeBSD.org/">http://www.lt.FreeBSD.org/ – Litauen. http://rama.asiapac.net/freebsd/ — Malaysia. + url="http://rama.asiapac.net/freebsd/">http://rama.asiapac.net/freebsd/ – Malaysia. http://www.nz.FreeBSD.org/ — Neuseeland. + url="http://www.nz.FreeBSD.org/">http://www.nz.FreeBSD.org/ – Neuseeland. http://www.nl.FreeBSD.org/ — Niederlande/1. + url="http://www.nl.FreeBSD.org/">http://www.nl.FreeBSD.org/ – Niederlande/1. http://www2.nl.FreeBSD.org/ — Niederlande/2. + url="http://www2.nl.FreeBSD.org/">http://www2.nl.FreeBSD.org/ – Niederlande/2. http://www.no.FreeBSD.org/ — Norwegen. + url="http://www.no.FreeBSD.org/">http://www.no.FreeBSD.org/ – Norwegen. http://www.no2.FreeBSD.org/ — Norwegen/2. + url="http://www.no2.FreeBSD.org/">http://www.no2.FreeBSD.org/ – Norwegen/2. http://www.FreeBSD.org.ph/ — Philippinen. + url="http://www.FreeBSD.org.ph/">http://www.FreeBSD.org.ph/ – Philippinen. http://www.at.FreeBSD.org/ — Österreich. + url="http://www.at.FreeBSD.org/">http://www.at.FreeBSD.org/ – Österreich. http://www2.at.FreeBSD.org/ — Österreich/2. + url="http://www2.at.FreeBSD.org/">http://www2.at.FreeBSD.org/ – Österreich/2. http://www.pl.FreeBSD.org/ — Polen/1. + url="http://www.pl.FreeBSD.org/">http://www.pl.FreeBSD.org/ – Polen/1. http://www2.pl.FreeBSD.org/ — Polen/2. + url="http://www2.pl.FreeBSD.org/">http://www2.pl.FreeBSD.org/ – Polen/2. http://www2.pt.FreeBSD.org/ — Portugal/2. + url="http://www2.pt.FreeBSD.org/">http://www2.pt.FreeBSD.org/ – Portugal/2. http://www3.pt.FreeBSD.org/ — Portugal/3. + url="http://www3.pt.FreeBSD.org/">http://www3.pt.FreeBSD.org/ – Portugal/3. http://www4.pt.FreeBSD.org/ — Portugal/4. + url="http://www4.pt.FreeBSD.org/">http://www4.pt.FreeBSD.org/ – Portugal/4. http://www.ro.FreeBSD.org/ — Rumänien. + url="http://www.ro.FreeBSD.org/">http://www.ro.FreeBSD.org/ – Rumänien. http://www2.ro.FreeBSD.org/ — Rumänien/2. + url="http://www2.ro.FreeBSD.org/">http://www2.ro.FreeBSD.org/ – Rumänien/2. http://www3.ro.FreeBSD.org/ — Rumänien/3. + url="http://www3.ro.FreeBSD.org/">http://www3.ro.FreeBSD.org/ – Rumänien/3. http://www4.ro.FreeBSD.org/ — Rumänien/4. + url="http://www4.ro.FreeBSD.org/">http://www4.ro.FreeBSD.org/ – Rumänien/4. http://www.ru.FreeBSD.org/ — Russland/1. + url="http://www.ru.FreeBSD.org/">http://www.ru.FreeBSD.org/ – Russland/1. http://www2.ru.FreeBSD.org/ — Russland/2. + url="http://www2.ru.FreeBSD.org/">http://www2.ru.FreeBSD.org/ – Russland/2. http://www3.ru.FreeBSD.org/ — Russland/3. + url="http://www3.ru.FreeBSD.org/">http://www3.ru.FreeBSD.org/ – Russland/3. http://www4.ru.FreeBSD.org/ — Russland/4. + url="http://www4.ru.FreeBSD.org/">http://www4.ru.FreeBSD.org/ – Russland/4. http://www.sm.FreeBSD.org/ — San Marino. + url="http://www.sm.FreeBSD.org/">http://www.sm.FreeBSD.org/ – San Marino. http://www.se.FreeBSD.org/ — Schweden. + url="http://www.se.FreeBSD.org/">http://www.se.FreeBSD.org/ – Schweden. http://www.se2.FreeBSD.org/ — Schweden/2. + url="http://www.se2.FreeBSD.org/">http://www.se2.FreeBSD.org/ – Schweden/2. http://www.ch.FreeBSD.org/ — Schweiz. + url="http://www.ch.FreeBSD.org/">http://www.ch.FreeBSD.org/ – Schweiz. http://www.ch2.FreeBSD.org/ — Schweiz/2. + url="http://www.ch2.FreeBSD.org/">http://www.ch2.FreeBSD.org/ – Schweiz/2. http://www.sg.FreeBSD.org/ — Singapur. + url="http://www2.sg.FreeBSD.org/">http://www2.sg.FreeBSD.org/ – Singapur. http://www2.sg.FreeBSD.org/ — Singapur/2. + url="http://www.sk.FreeBSD.org/">http://www.sk.FreeBSD.org/ – Slowakische Republik. http://www.sk.FreeBSD.org/ — Slowakische Republik. - - - - http://www.sk2.FreeBSD.org/ — Slowakische Republik/2. + url="http://www.sk2.FreeBSD.org/">http://www.sk2.FreeBSD.org/ – Slowakische Republik/2. http://www.si.FreeBSD.org/ — Slowenien. + url="http://www.si.FreeBSD.org/">http://www.si.FreeBSD.org/ – Slowenien. http://www2.si.FreeBSD.org/ — Slowenien/2. + url="http://www2.si.FreeBSD.org/">http://www2.si.FreeBSD.org/ – Slowenien/2. http://www.es.FreeBSD.org/ — Spanien. + url="http://www.es.FreeBSD.org/">http://www.es.FreeBSD.org/ – Spanien. http://www2.es.FreeBSD.org/ — Spanien/2. + url="http://www2.es.FreeBSD.org/">http://www2.es.FreeBSD.org/ – Spanien/2. http://www3.es.FreeBSD.org/ — Spanien/3. + url="http://www2.es.FreeBSD.org/">http://www3.es.FreeBSD.org/ – Spanien/3. http://www.za.FreeBSD.org/ — Südafrika/1. + url="http://www.za.FreeBSD.org/">http://www.za.FreeBSD.org/ – Südafrika/1. http://www2.za.FreeBSD.org/ — Südafrika/2. + url="http://www2.za.FreeBSD.org/">http://www2.za.FreeBSD.org/ – Südafrika/2. http://www.tw.FreeBSD.org/www.freebsd.org/data/ — Taiwan. + url="http://www.tw.FreeBSD.org/www.freebsd.org/data/">http://www.tw.FreeBSD.org/www.freebsd.org/data/ – Taiwan. http://www2.tw.FreeBSD.org/ — Taiwan/2. + url="http://www.tw2.FreeBSD.org/">http://www2.tw.FreeBSD.org/ – Taiwan/2. http://www3.tw.FreeBSD.org/ — Taiwan/3. + url="http://www.tw3.FreeBSD.org/">http://www3.tw.FreeBSD.org/ – Taiwan/3. http://www4.tw.FreeBSD.org/ — Taiwan/4. + url="http://www.tw4.FreeBSD.org/">http://www4.tw.FreeBSD.org/ – Taiwan/4. http://www.cz.FreeBSD.org/ — Tschechische Republik. + url="http://www.cz.FreeBSD.org/">http://www.cz.FreeBSD.org/ – Tschechische Republik. http://www.tr.FreeBSD.org/ — Türkei. + url="http://www.tr.FreeBSD.org/">http://www.tr.FreeBSD.org/ – Türkei. http://www.tr2.FreeBSD.org/ — Türkei/2. + url="http://www.tr2.FreeBSD.org/">http://www.tr2.FreeBSD.org/ – Türkei/2. http://www.enderunix.org/freebsd/ — Türkei/3. + url="http://www.enderunix.org/freebsd/">http://www.enderunix.org/freebsd/ – Türkei/3. http://www.ua.FreeBSD.org/www.freebsd.org/ — Ukraine/1. + url="http://www.ua.FreeBSD.org/www.freebsd.org/">http://www.ua.FreeBSD.org/www.freebsd.org/ – Ukraine/1. http://www2.ua.FreeBSD.org/ — Ukraine/2. + url="http://www2.ua.FreeBSD.org/">http://www2.ua.FreeBSD.org/ – Ukraine/2. http://www4.ua.FreeBSD.org/ — Ukraine/Crimea. + url="http://www4.ua.FreeBSD.org/">http://www4.ua.FreeBSD.org/ – Ukraine/Crimea. http://www5.ua.FreeBSD.org/ — Ukraine/5. + url="http://www5.ua.FreeBSD.org/">http://www5.ua.FreeBSD.org/ – Ukraine/5. http://www.hu.FreeBSD.org/ — Ungarn. + url="http://www.hu.FreeBSD.org/">http://www.hu.FreeBSD.org/ – Ungarn. http://www.hu2.FreeBSD.org/ — Ungarn/2. + url="http://www.hu2.FreeBSD.org/">http://www.hu2.FreeBSD.org/ – Ungarn/2. http://www2.FreeBSD.org/ — USA/Texas. + url="http://www2.FreeBSD.org/">http://www2.FreeBSD.org/ – USA/Texas. http://www3.FreeBSD.org/ — USA/3. + url="http://www3.FreeBSD.org/">http://www3.FreeBSD.org/ – USA/3. http://www7.FreeBSD.org/ — USA/7. + url="http://www7.FreeBSD.org/">http://www7.FreeBSD.org/ – USA/7. 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/linuxemu/chapter.sgml b/de_DE.ISO8859-1/books/handbook/linuxemu/chapter.sgml index 473c671659..26aebc684e 100644 --- a/de_DE.ISO8859-1/books/handbook/linuxemu/chapter.sgml +++ b/de_DE.ISO8859-1/books/handbook/linuxemu/chapter.sgml @@ -1,3414 +1,3414 @@ 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- + 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 Star Office, Open Office, die Linux-Versionen von Netscape, Adobe Acrobat, RealPlayer 8, 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. 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 http://www.wolfram.com/ 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 mkfontdir 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 (http://register.maplesoft.com)) 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). 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 linux_base und linux_devtools (aus der Ports-Sammlung) installiert haben. Diese Ports wurden nach der Veröffentlichung von FreeBSD 3.2 hinzugefügt. Wenn Sie FreeBSD 3.2 oder eine ältere Version verwenden, aktualisieren Sie Ihre Ports-Sammlung. Sie könnten auch in Betracht ziehen, Ihre FreeBSD-Version zu aktualisieren. Wenn linux_base-6.1 oder linux_devtools-6.1 Probleme verursachen, kann es sein, dass Sie Version 5.2 dieser Pakete verwenden müssen. Wenn Sie den Intelligent Agent verwenden wollen, müssen Sie zusätzlich das RedHat Tcl-Paket installieren: tcl-8.0.3-20.i386.rpm. Die allgemeine Form des Befehls, um Pakete mit dem offiziellen RPM-Port zu installieren, lautet: &prompt.root; rpm -i --ignoreos --root /compat/linux --dbpath /var/lib/rpm package Die Installation dieses Paketes 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 Oracle Installationsanleitung 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 einen Oracle-Benutzerzugang an. Dies funktioniert genauso wie für jeden anderen Zugang auch. Der Oracle-Zugang hat allerdings die Besonderheit, dass er eine Linux-Shell zugeordnet bekommen muss. Fügen Sie daher /compat/linux/bin/bash in die Datei /etc/shells ein und setzen Sie die Shell für den Oracle-Benutzerzugang 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. Machen Sie es entweder für alle Benutzer schreibbar oder belassen Sie den Oracle-Benutzer als Eigentümer. Sie sollten Oracle nun ohne Probleme installieren können. Treten dennoch Probleme auf, überprüfen Sie zuerst Ihre Oracle-Dateien und/oder 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. root.sh befindet sich im Verzeichnis orainst. Verwenden Sie folgenden Patch für root.sh, damit es die richtige Position von chown findet 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 PATH-Definition 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 R/3 installieren Linux-Anwendungen SAP R/3 SAP-Installationen unter FreeBSD werden vom SAP Support Team - nicht unterstützt — und SAP bietet Support nur + nicht unterstützt – und SAP bietet Support nur für zertifizierte Plattformen an! Übersicht Dieses Dokument beschreibt einen möglichen Weg, um ein SAP R/3-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 R/3 4.6B (IDES) mit Oracle 8.0.5 unter FreeBSD 4.3-STABLE SAP R/3 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 R/3 zu ersetzen. Benutzen Sie die mit SAP R/3 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: SAP R/3 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 (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). SAP R/3 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 R/3 gelesen werden, da sie sich während der Installation als nützlich erwiesen haben. SAP R/3 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 R/3 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 R/3 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 R/3 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 R/3 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.). Aufteilung der Festplatte Um das Ganze zu vereinfachen, wurde sowohl für die SAP R/3 46B- als auch die SAP R/3 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 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 R/3 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. &prompt.root; cd /usr/ports/emulators/linux_base &prompt.root; make package Die Linux-Umgebung installieren und einrichten Die Linux-Entwicklungsumgebung wird benötigt, wenn Sie Oracle auf Ihrem FreeBSD-System (gemäß der Beschreibung im Handbuch) installieren wollen: &prompt.root; cd /usr/ports/devel/linux_devtools &prompt.root; make package Die Linux-Entwicklungsumgebung wurde hier jedoch nur für die SAP R/3 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 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 R/3 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. &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 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. 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. 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 R/3 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 R/3 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 R/3 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 R/3-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 R/3 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 R/3 Demo-System geliefert, das heißt es gibt sechs statt drei Export-CDs. Da CENTRDB.R3S für eine Standard-Zentralinstanz (R/3 plus Datenbank) ausgelegt ist, aber nicht für eine IDES-Zentralinstanz, muss die passende CENTRDB.R3S-Datei - manuell aus dem EXPORT1-Verzeichnis ins Installationsverzeichnis + 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 ins Installationsverzeichnis und starten Sie + 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 ins Installationsverzeichnis und führen + 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. Für weitere Informationen zur Oracle-Installation, lesen Sie bitte das Kapitel zur 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 Für weitere Informationen lesen Sie bitte die entsprechenden SAP-Hinweise sowie 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 R/3-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 R/3-Lizenzschlüssel anfordern Sie müssen Ihren SAP R/3-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 R/3 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 ABI Implementation, 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 die historische Implementation zu einer Zeit durchgeführt 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. + 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 df70f2904d..766f2d7c37 100644 --- a/de_DE.ISO8859-1/books/handbook/mail/chapter.sgml +++ b/de_DE.ISO8859-1/books/handbook/mail/chapter.sgml @@ -1,1374 +1,1374 @@ 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 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 + 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 liegen ein wenig außerhalb des Rahmens dieses Kapitels. 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.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-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. Kopieren Sie die .cf-Datei nach sendmail.cf und starten Sie sendmail mit kill -HUP neu. 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. Weitere Information erhalten Sie im WWW auf der Webseite von sendmail. diff --git a/de_DE.ISO8859-1/books/handbook/mirrors/chapter.sgml b/de_DE.ISO8859-1/books/handbook/mirrors/chapter.sgml index d220997286..0e71b24092 100644 --- a/de_DE.ISO8859-1/books/handbook/mirrors/chapter.sgml +++ b/de_DE.ISO8859-1/books/handbook/mirrors/chapter.sgml @@ -1,4733 +1,4738 @@ Bezugsquellen für FreeBSD CD-ROM und DVD Verleger FreeBSD Pakete FreeBSD Pakete (FreeBSD CDs, zusätzliche Software und gedruckte Dokumentation) erhalten Sie von mehreren Händlern:
CompUSA WWW: http://www.compusa.com/
Frys Electronics WWW: http://www.frys.com/
Staples WWW: http://www.staples.com/
FreeBSD CDs und DVDs Die FreeBSD CDs und DVDs werden von vielen Online-Händlern angeboten:
Daemon News Mall 560 South State Street, Suite A2 Orem, UT 84058 USA Telefon: +1 800 407-5170 Fax: +1 1 801 765-0877 E-Mail: sales@daemonnews.org WWW: http://www.bsdmall.com/
FreeBSD Mall, Inc. 3623 Sanford Street Concord, CA 94520-1405 USA Telefon: +1 925 674-0783 Fax: +1 925 674-0821 E-Mail: info@freebsdmall.com WWW: http://www.freebsdmall.com/
FreeBSD Services Ltd. 11 Lapwing Close Bicester OX26 6XR United Kingdom WWW: http://www.freebsd-services.com/
Hinner EDV St. Augustinus-Str. 10 D-81825 München Germany Telefon: (089) 428 419 WWW: http://www.hinner.de/linux/freebsd.html
Ingram Micro 1600 E. St. Andrew Place Santa Ana, CA 92705-4926 USA Telefon: 1 (800) 456-8000 WWW: http://www.ingrammicro.com/
The Linux Emporium Hilliard House, Lester Way Wallingford OX10 9TA United Kingdom Telefon: +44 1491 837010 Fax: +44 1491 837016 WWW: http://www.linuxemporium.co.uk/bsd.html
Lieferanten Wenn Sie FreeBSD CD-ROM Produkte weiterverkaufen möchten, kontaktieren Sie einen der folgenden Lieferanten:
Cylogistics 2672 Bayshore Parkway, Suite 610 Mountain View, CA 94043 USA Telefon: +1 650 694-4949 Fax: +1 650 694-4953 E-Mail: sales@cylogistics.com WWW: http://www.cylogistics.com/
FreeBSD Services Ltd. 11 Lapwing Close Bicester OX26 6XR United Kingdom WWW: http://www.freebsd-services.com/
Kudzu, LLC 7375 Washington Ave. S. Edina, MN 55439 USA Telefon: +1 952 947-0822 Fax: +1 952 947-0876 E-Mail: sales@kudzuenterprises.com
Navarre Corp 7400 49th Ave South New Hope, MN 55428 USA Telefon: +1 763 535-8333 Fax: +1 763 535-0341 WWW: http://www.navarre.com/
FTP Server Die offiziellen Quellen von FreeBSD sind über anonymous FTP unter der folgenden URL erhältlich:
ftp://ftp.FreeBSD.org/pub/FreeBSD/.
Die Datenbank der FreeBSD Spiegel ist aktueller als die folgende Liste, da sie im Gegensatz zu einer statischen Liste die Informationen aus dem DNS erhält. Sie können FreeBSD auch über anonymous FTP von den folgenden Spiegeln beziehen. Wenn Sie FreeBSD über anonymous FTP beziehen wollen, wählen Sie bitte einen Spiegel in Ihrer Nähe. Argentinien, Australien, Brasilien, Bulgarien, China, Dänemark, Deutschland, Estland, Finnland, Frankreich, Griechenland, Großbritannien, Hong Kong, Irland, Island, Italien, Japan, Kanada, Korea, Litauen, Neuseeland, Niederlande, Norwegen, Österreich, Polen, Portugal, Rumänien, Russland, Saudi Arabien, Schweden, Schweiz, Singapur, Slowakische Republik, Slowenien, Spanien, Südafrika, Taiwan, Thailand, Tschechische Republik, Ukraine, Ungarn, USA. Argentinien Bei Problemen wenden Sie sich bitte an den Betreuer hostmaster@ar.FreeBSD.org dieser Domain. ftp://ftp.ar.FreeBSD.org/pub/FreeBSD/ Australien Bei Problemen wenden Sie sich bitte an den Betreuer hostmaster@au.FreeBSD.org dieser Domain. ftp://ftp.au.FreeBSD.org/pub/FreeBSD/ ftp://ftp2.au.FreeBSD.org/pub/FreeBSD/ ftp://ftp3.au.FreeBSD.org/pub/FreeBSD/ ftp://ftp4.au.FreeBSD.org/pub/FreeBSD/ ftp://ftp5.au.FreeBSD.org/pub/FreeBSD/ ftp://ftp6.au.FreeBSD.org/pub/FreeBSD/ Brasilien Bei Problemen wenden Sie sich bitte an den Betreuer hostmaster@br.FreeBSD.org dieser Domain. ftp://ftp.br.FreeBSD.org/pub/FreeBSD/ ftp://ftp2.br.FreeBSD.org/pub/FreeBSD/ ftp://ftp3.br.FreeBSD.org/pub/FreeBSD/ ftp://ftp4.br.FreeBSD.org/pub/FreeBSD/ ftp://ftp5.br.FreeBSD.org/pub/FreeBSD/ ftp://ftp6.br.FreeBSD.org/pub/FreeBSD/ ftp://ftp7.br.FreeBSD.org/pub/FreeBSD/ Bulgarien Bei Problemen wenden Sie sich bitte an den Betreuer hostmaster@bg.FreeBSD.org dieser Domain. ftp://ftp.bg.FreeBSD.org/pub/FreeBSD/ China Bei Problemen wenden Sie sich bitte an den Betreuer phj@cn.FreeBSD.org dieser Domain. ftp://ftp.cn.FreeBSD.org/pub/FreeBSD/ ftp://ftp2.cn.FreeBSD.org/pub/FreeBSD/ ftp://ftp3.cn.FreeBSD.org/pub/FreeBSD/ Dänemark Bei Problemen wenden Sie sich bitte an den Betreuer hostmaster@dk.FreeBSD.org dieser Domain. ftp://ftp.dk.FreeBSD.org/pub/FreeBSD/ ftp://ftp2.dk.FreeBSD.org/pub/FreeBSD/ Deutschland Bei Problemen wenden Sie sich bitte an die Administratoren der Spiegel de-bsd-hubs@de.FreeBSD.org . ftp://ftp.de.FreeBSD.org/pub/FreeBSD/ ftp://ftp2.de.FreeBSD.org/pub/FreeBSD/ ftp://ftp3.de.FreeBSD.org/pub/FreeBSD/ ftp://ftp4.de.FreeBSD.org/pub/FreeBSD/ ftp://ftp5.de.FreeBSD.org/pub/FreeBSD/ ftp://ftp6.de.FreeBSD.org/pub/FreeBSD/ ftp://ftp7.de.FreeBSD.org/pub/FreeBSD/ Estland Bei Problemen wenden Sie sich bitte an den Betreuer hostmaster@ee.FreeBSD.org dieser Domain. ftp://ftp.ee.FreeBSD.org/pub/FreeBSD/ Finnland Bei Problemen wenden Sie sich bitte an den Betreuer hostmaster@fi.FreeBSD.org dieser Domain. ftp://ftp.fi.FreeBSD.org/pub/FreeBSD/ ftp://ftp.fi3.FreeBSD.org/pub/FreeBSD/ Frankreich Bei Problemen wenden Sie sich bitte an den Betreuer hostmaster@fr.FreeBSD.org dieser Domain. ftp://ftp.fr.FreeBSD.org/pub/FreeBSD/ ftp://ftp2.fr.FreeBSD.org/pub/FreeBSD/ ftp://ftp3.fr.FreeBSD.org/pub/FreeBSD/ ftp://ftp5.fr.FreeBSD.org/pub/FreeBSD/ ftp://ftp6.fr.FreeBSD.org/pub/FreeBSD/ ftp://ftp8.fr.FreeBSD.org/pub/FreeBSD/ Griechenland Bei Problemen wenden Sie sich bitte an den Betreuer hostmaster@gr.FreeBSD.org dieser Domain. ftp://ftp.gr.FreeBSD.org/pub/FreeBSD/ ftp://ftp2.gr.FreeBSD.org/pub/FreeBSD/ Großbritannien Bei Problemen wenden Sie sich bitte an den Betreuer hostmaster@uk.FreeBSD.org dieser Domain. ftp://ftp.uk.FreeBSD.org/pub/FreeBSD/ ftp://ftp2.uk.FreeBSD.org/pub/FreeBSD/ ftp://ftp3.uk.FreeBSD.org/pub/FreeBSD/ ftp://ftp4.uk.FreeBSD.org/pub/FreeBSD/ ftp://ftp5.uk.FreeBSD.org/pub/FreeBSD/ ftp://ftp6.uk.FreeBSD.org/pub/FreeBSD/ Hong Kong ftp://ftp.hk.FreeBSD.org/pub/FreeBSD/ Irland Bei Problemen wenden Sie sich bitte an den Betreuer hostmaster@ie.FreeBSD.org dieser Domain. ftp://ftp.ie.FreeBSD.org/pub/FreeBSD/ ftp://ftp2.ie.FreeBSD.org/pub/FreeBSD/ ftp://ftp3.ie.FreeBSD.org/pub/FreeBSD/ Island Bei Problemen wenden Sie sich bitte an den Betreuer hostmaster@is.FreeBSD.org dieser Domain. ftp://ftp.is.FreeBSD.org/pub/FreeBSD/ Italien Bei Problemen wenden Sie sich bitte an den Betreuer hostmaster@it.FreeBSD.org dieser Domain. ftp://ftp.it.FreeBSD.org/pub/FreeBSD/ ftp://ftp2.it.FreeBSD.org/pub/FreeBSD/ Japan Bei Problemen wenden Sie sich bitte an den Betreuer hostmaster@jp.FreeBSD.org dieser Domain. ftp://ftp.jp.FreeBSD.org/pub/FreeBSD/ ftp://ftp2.jp.FreeBSD.org/pub/FreeBSD/ ftp://ftp3.jp.FreeBSD.org/pub/FreeBSD/ ftp://ftp4.jp.FreeBSD.org/pub/FreeBSD/ ftp://ftp5.jp.FreeBSD.org/pub/FreeBSD/ ftp://ftp6.jp.FreeBSD.org/pub/FreeBSD/ ftp://ftp7.jp.FreeBSD.org/pub/FreeBSD/ Kanada Bei Problemen wenden Sie sich bitte an den Betreuer hostmaster@ca.FreeBSD.org dieser Domain. ftp://ftp.ca.FreeBSD.org/pub/FreeBSD/ ftp://ftp2.ca.FreeBSD.org/pub/FreeBSD/ Korea Bei Problemen wenden Sie sich bitte an den Betreuer hostmaster@kr.FreeBSD.org dieser Domain. ftp://ftp.kr.FreeBSD.org/pub/FreeBSD/ ftp://ftp2.kr.FreeBSD.org/pub/FreeBSD/ ftp://ftp3.kr.FreeBSD.org/pub/FreeBSD/ ftp://ftp4.kr.FreeBSD.org/pub/FreeBSD/ ftp://ftp5.kr.FreeBSD.org/pub/FreeBSD/ ftp://ftp6.kr.FreeBSD.org/pub/FreeBSD/ ftp://ftp7.kr.FreeBSD.org/pub/FreeBSD/ Litauen Bei Problemen wenden Sie sich bitte an den Betreuer hostmaster@lt.FreeBSD.org dieser Domain. ftp://ftp.lt.FreeBSD.org/pub/FreeBSD/ Neuseeland Bei Problemen wenden Sie sich bitte an den Betreuer hostmaster@nz.FreeBSD.org dieser Domain. ftp://ftp.nz.FreeBSD.org/pub/FreeBSD/ Niederlande Bei Problemen wenden Sie sich bitte an den Betreuer hostmaster@nl.FreeBSD.org dieser Domain. ftp://ftp.nl.FreeBSD.org/pub/FreeBSD/ ftp://ftp2.nl.FreeBSD.org/pub/FreeBSD/ Norwegen Bei Problemen wenden Sie sich bitte an den Betreuer hostmaster@no.FreeBSD.org dieser Domain. ftp://ftp.no.FreeBSD.org/pub/FreeBSD/ ftp://ftp3.no.FreeBSD.org/pub/FreeBSD/ Österreich Bei Problemen wenden Sie sich bitte an den Betreuer hostmaster@at.FreeBSD.org dieser Domain. ftp://ftp.at.FreeBSD.org/pub/FreeBSD/ ftp2://ftp.at.FreeBSD.org/pub/FreeBSD/ Polen Bei Problemen wenden Sie sich bitte an den Betreuer hostmaster@pl.FreeBSD.org dieser Domain. ftp://ftp.pl.FreeBSD.org/pub/FreeBSD/ ftp://ftp2.pl.FreeBSD.org/pub/FreeBSD/ ftp://ftp3.pl.FreeBSD.org/pub/FreeBSD/ Portugal Bei Problemen wenden Sie sich bitte an den Betreuer hostmaster@pt.FreeBSD.org dieser Domain. ftp://ftp.pt.FreeBSD.org/pub/FreeBSD/ ftp://ftp2.pt.FreeBSD.org/pub/FreeBSD/ ftp://ftp3.pt.FreeBSD.org/pub/FreeBSD/ Rumänien Bei Problemen wenden Sie sich bitte an den Betreuer hostmaster@ro.FreeBSD.org dieser Domain. ftp://ftp.ro.FreeBSD.org/pub/FreeBSD/ Russland Bei Problemen wenden Sie sich bitte an den Betreuer hostmaster@ru.FreeBSD.org dieser Domain. ftp://ftp.ru.FreeBSD.org/pub/FreeBSD/ ftp://ftp2.ru.FreeBSD.org/pub/FreeBSD/ ftp://ftp3.ru.FreeBSD.org/pub/FreeBSD/ ftp://ftp4.ru.FreeBSD.org/pub/FreeBSD/ Saudi Arabien Bei Problemen wenden Sie sich bitte an ftpadmin@isu.net.sa ftp://ftp.isu.net.sa/pub/mirrors/ftp.freebsd.org/. Schweden Bei Problemen wenden Sie sich bitte an den Betreuer hostmaster@se.FreeBSD.org dieser Domain. ftp://ftp.se.FreeBSD.org/pub/FreeBSD/ ftp://ftp2.se.FreeBSD.org/pub/FreeBSD/ ftp://ftp3.se.FreeBSD.org/pub/FreeBSD/ ftp://ftp5.se.FreeBSD.org/pub/FreeBSD/ Schweiz Bei Problemen wenden Sie sich bitte an den Betreuer hostmaster@ch.FreeBSD.org dieser Domain. ftp://ftp.ch.FreeBSD.org/pub/FreeBSD/ Singapur Bei Problemen wenden Sie sich bitte an den Betreuer hostmaster@sg.FreeBSD.org dieser Domain. ftp://ftp.sg.FreeBSD.org/pub/FreeBSD/ Slowakische Republik Bei Problemen wenden Sie sich bitte an den Betreuer hostmaster@sk.FreeBSD.org dieser Domain. ftp://ftp.sk.FreeBSD.org/pub/FreeBSD/ ftp://ftp2.sk.FreeBSD.org/pub/FreeBSD/ Slowenien Bei Problemen wenden Sie sich bitte an den Betreuer hostmaster@si.FreeBSD.org dieser Domain. ftp://ftp2.si.FreeBSD.org/pub/FreeBSD/ Spanien Bei Problemen wenden Sie sich bitte an den Betreuer hostmaster@es.FreeBSD.org dieser Domain. ftp://ftp.es.FreeBSD.org/pub/FreeBSD/ ftp://ftp2.es.FreeBSD.org/pub/FreeBSD/ ftp://ftp3.es.FreeBSD.org/pub/FreeBSD/ Südafrika Bei Problemen wenden Sie sich bitte an den Betreuer hostmaster@za.FreeBSD.org dieser Domain. ftp://ftp.za.FreeBSD.org/pub/FreeBSD/ ftp://ftp2.za.FreeBSD.org/pub/FreeBSD/ ftp://ftp3.za.FreeBSD.org/pub/FreeBSD/ ftp://ftp4.za.FreeBSD.org/pub/FreeBSD/ Taiwan Bei Problemen wenden Sie sich bitte an den Betreuer hostmaster@tw.FreeBSD.org dieser Domain. ftp://ftp.tw.FreeBSD.org/pub/FreeBSD/ ftp://ftp2.tw.FreeBSD.org/pub/FreeBSD/ ftp://ftp3.tw.FreeBSD.org/pub/FreeBSD/ ftp://ftp4.tw.FreeBSD.org/pub/FreeBSD/ ftp://ftp5.tw.FreeBSD.org/pub/FreeBSD/ ftp://ftp6.tw.FreeBSD.org/pub/FreeBSD/ ftp://ftp7.tw.FreeBSD.org/pub/FreeBSD/ ftp://ftp8.tw.FreeBSD.org/pub/FreeBSD/ ftp://ftp9.tw.FreeBSD.org/pub/FreeBSD/ Thailand ftp://ftp.nectec.or.th/pub/FreeBSD/ Kontakt: ftpadmin@ftp.nectec.or.th. Tschechische Republik Bei Problemen wenden Sie sich bitte an den Betreuer hostmaster@cz.FreeBSD.org dieser Domain. ftp://ftp.cz.FreeBSD.org/pub/FreeBSD/ Kontakt: calda@dzungle.ms.mff.cuni.cz Ukraine ftp://ftp.ua.FreeBSD.org/pub/FreeBSD/ Kontakt: freebsd-mnt@lucky.net. ftp://ftp2.ua.FreeBSD.org/pub/FreeBSD/ ftp://ftp3.ua.FreeBSD.org/pub/FreeBSD/ ftp://ftp5.ua.FreeBSD.org/pub/FreeBSD/ + + ftp://ftp6.ua.FreeBSD.org/pub/FreeBSD/ + + ftp://ftp7.ua.FreeBSD.org/pub/FreeBSD/ Ungarn Bei Problemen wenden Sie sich bitte an den Betreuer mohacsi@ik.bme.hu dieser Domain. ftp://ftp.hu.FreeBSD.org/pub/FreeBSD/ USA Bei Problemen wenden Sie sich bitte an den Betreuer hostmaster@FreeBSD.org dieser Domain. ftp://ftp1.FreeBSD.org/pub/FreeBSD/ ftp://ftp2.FreeBSD.org/pub/FreeBSD/ ftp://ftp3.FreeBSD.org/pub/FreeBSD/ ftp://ftp4.FreeBSD.org/pub/FreeBSD/ ftp://ftp5.FreeBSD.org/pub/FreeBSD/ ftp://ftp6.FreeBSD.org/pub/FreeBSD/ ftp://ftp7.FreeBSD.org/pub/FreeBSD/ ftp://ftp8.FreeBSD.org/pub/FreeBSD/ ftp://ftp9.FreeBSD.org/pub/os/FreeBSD/ ftp://ftp10.FreeBSD.org/pub/FreeBSD/ ftp://ftp11.FreeBSD.org/pub/FreeBSD/ ftp://ftp12.FreeBSD.org/pub/FreeBSD/ ftp://ftp13.FreeBSD.org/pub/FreeBSD/ ftp://ftp14.FreeBSD.org/pub/FreeBSD/
Anonymous CVS <anchor id="anoncvs-intro">Einführung Anonymous CVS (oder anoncvs) dient zum Synchronisieren mit entfernten Repositories und steht mit den CVS Werkzeugen, die im FreeBSD Basissystem enthalten sind, zur Verfügung. Benutzer von FreeBSD können damit unter anderem lesende Operationen auf den Anoncvs Servern des FreeBSD Projekts durchführen, ohne über besondere Berechtigungen zu verfügen. Um es zu benutzen, setzen Sie einfach die CVSROOT Umgebungsvariable auf einen Anoncvs Server und geben beim Login mit cvs login das Passwort anoncvs an. Danach können Sie mit &man.cvs.1; wie auf jedes lokale Repository (allerdings nur lesend) zugreifen. cvs login speichert Passwörter zur Authentifizierung an einem CVS Server in der Datei .cvspass in Ihrem HOME-Verzeichnis. Wenn diese Datei beim ersten Benutzen von cvs login nicht existiert, erhalten Sie vielleicht eine Fehlermeldung. In diesem Fall legen Sie einfach eine leere .cvspass Datei an und melden sich erneut an. CVSup und Anoncvs bieten dieselbe Funktionalität, die folgenden Kriterien helfen Ihnen zu entscheiden, welche Methode Sie benutzen sollen. CVSup geht wesentlich effizienter mit Netzwerk-Ressourcen um und ist auch technisch ausgereifter. Allerdings müssen Sie zuerst einen speziellen Client installieren und konfigurieren, bevor Sie CVSup benutzen können. Weiterhin können Sie mit CVSup nur relativ große Teile der Quellen, die Sammlungen genannt werden, synchronisieren. Im Gegensatz dazu können Sie mit Anoncvs jede beliebige Datei oder indem Sie einfach den CVS Namen des Moduls angeben, ein beliebiges Programm, wie ls oder grep, bearbeiten. Natürlich können Sie mit Anoncvs nur lesend auf ein CVS Repository zugreifen. Wenn Sie lokal mit dem FreeBSD Repository entwickeln wollen, dann ist CVSup die einzige Wahl. <anchor id="anoncvs-usage">Benutzen von Anonymous CVS Setzen Sie einfach die CVSROOT Umgebungsvariable, um &man.cvs.1; das CVS Repository eines FreeBSD Anoncvs Servers bekannt zu geben. Zurzeit stehen folgende Server zur Verfügung: USA: :pserver:anoncvs@anoncvs.FreeBSD.org:/home/ncvs (Benutzen Sie cvs login und das Passwort anoncvs.) Deutschland: :pserver:anoncvs@anoncvs.de.FreeBSD.org:/home/ncvs (Benutzen Sie cvs login und das Passwort anoncvs.) Deutschland: :pserver:anoncvs@anoncvs2.de.FreeBSD.org:/home/ncvs (rsh, pserver, ssh, ssh/2022) Japan: :pserver:anoncvs@anoncvs.jp.FreeBSD.org:/home/ncvs (Benutzen Sie cvs login und das Passwort anoncvs.) Mit CVS können Sie praktisch jede Version von FreeBSD, die schon einmal existiert hat (oder in manchen Fällen existieren wird) auschecken. Sie sollten daher damit vertraut sein, wie Sie mit Tags unter &man.cvs.1; arbeiten (die Option). Zudem müssen Sie die Namen der Tags im FreeBSD Repository kennen. Es gibt zwei verschiedene TagsTags sind symbolische Namen, die im Repository vergeben werden. : Tags, die Revisionen bezeichnen und Tags, die Zweige bezeichnen. Die Ersten sind statisch und fest an eine Revision gebunden. Ein Tag, das einen Zweig bezeichnet, bezieht sich dagegen zu einem gegebenen Zeitpunkt immer auf die aktuellste Revision. Da ein Tag eines Zweiges nicht an eine bestimmte Revision gebunden ist, kann sich dessen Bedeutung von heute auf morgen ändern. In finden Sie eine Liste der gültigen Tags. Beachten Sie bitte, dass keines der Tags auf die Ports-Sammlung anwendbar ist, da diese nicht über Zweige verfügt. Wenn Sie ein Tag eines Zweiges verwenden, erhalten Sie die aktuellsten Dateien dieses Entwicklungszweiges. Wenn Sie eine frühere Revision erhalten möchten, können Sie zum Beispiel einen Zeitpunkt mit der Option angeben. Weitere Informationen dazu entnehmen Sie bitte &man.cvs.1;. Beispiele Im Folgenden finden Sie einige Beispiele für den Umgang mit Anonymous CVS. Sie sollten sich aber die Manualpage von &man.cvs.1; sorgfältig durchlesen, bevor Sie anfangen. &man.ls.1; von -CURRENT auschecken und wieder löschen: &prompt.user; setenv CVSROOT :pserver:anoncvs@anoncvs.FreeBSD.org:/home/ncvs &prompt.user; cvs login Wenn Sie dazu aufgefordert werden, benutzen Sie das Passwort anoncvs. &prompt.user; cvs co ls &prompt.user; cvs release -d ls &prompt.user; cvs logout &man.ls.1; aus dem 3.X-STABLE Zweig auschecken: &prompt.user; setenv CVSROOT :pserver:anoncvs@anoncvs.FreeBSD.org:/home/ncvs &prompt.user; cvs login Wenn Sie dazu aufgefordert werden, benutzen Sie das Passwort anoncvs. &prompt.user; cvs co -rRELENG_3 ls &prompt.user; cvs release -d ls &prompt.user; cvs logout Änderungen in &man.ls.1; zwischen 3.0 RELEASE und 3.4 RELEASE (als unified diff) &prompt.user; setenv CVSROOT :pserver:anoncvs@anoncvs.FreeBSD.org:/home/ncvs &prompt.user; cvs login Wenn Sie dazu aufgefordert werden, benutzen Sie das Passwort anoncvs. &prompt.user; cvs rdiff -u -rRELENG_3_0_0_RELEASE -rRELENG_3_4_0_RELEASE ls &prompt.user; cvs logout Gültige Modulnamen herausfinden: &prompt.user; setenv CVSROOT :pserver:anoncvs@anoncvs.FreeBSD.org:/home/ncvs &prompt.user; cvs login Wenn Sie dazu aufgefordert werden, benutzen Sie das Passwort anoncvs. &prompt.user; cvs co modules &prompt.user; more modules/modules &prompt.user; cvs release -d modules &prompt.user; cvs logout Weitere Ressourcen Die folgenden Ressourcen sind nützlich, um den Umgang mit CVS zu lernen: CVS Tutorial von Cal Poly. CVS Home, die Homepage des CVS Projekts. CVSWeb das Web Interface zu CVS des FreeBSD Projekts. CTM Mit CTM Abkürzung für CVS Through eMail können Sie einen entfernten Verzeichnisbaum mit einem zentralen Baum synchronisieren. Es wurde extra zum Synchronisieren der FreeBSD Quellen entwickelt, obwohl es mit der Zeit vielleicht auch andere Anwendungen geben wird. Zurzeit existiert leider so gut wie keine Dokumentation zum Erstellen der Deltas. Wenn Sie CTM für andere Zwecke einsetzen wollen, wenden Sie sich bitte &a.phk;. Warum soll ich <application>CTM</application> benutzen? Mit CTM erhalten Sie eine lokale Kopie des FreeBSD Quellbaums, den es in mehreren Varianten gibt. Sie können das ganze Repository oder nur einen Zweig spiegeln. Wenn Sie ein aktiver FreeBSD Entwickler mit einer schlechten oder gar keiner TCP/IP Verbindung sind, oder die Änderungen einfach automatisch zugesandt bekommen wollen, dann ist CTM das Richtige für Sie. Für die Zweige mit der meisten Aktivität müssen Sie sich täglich bis zu drei Deltas beschaffen, Sie sollten allerdings erwägen, die Deltas automatisch über E-Mail zu beziehen. Die Größe der Updates wird so klein wie möglich gehalten. Normalerweise sind sie kleiner als 5 kB, manchmal sind sie 10-50 kB groß (etwa jedes 10. Update) und ab und an werden Sie auch einmal ein Update mit 100 kB oder mehr erhalten. Sie sollten sich über die Vorbehalte gegen die Verwendung der Quellen anstelle eines offiziellen Releases bewusst sein. Das trifft besonders auf &os.current; zu, lesen Sie dazu bitte den Abschnitt &os.current;. Was brauche ich, um <application>CTM</application> zu benutzen? Zwei Sachen: Das CTM Programm und die initialen Deltas, von denen aus Sie auf die aktuellen Stände kommen. CTM ist schon seit der Version 2.0 Teil des FreeBSD Basissystems. Sie finden es in /usr/src/usr.sbin/ctm, wenn Sie eine Kopie der Quellen besitzen. Wenn Sie eine frühere Version als FreeBSD 2.0 besitzen, können Sie die aktuellen CTM Quellen von der folgenden URL beziehen: ftp://ftp.FreeBSD.org/pub/FreeBSD/FreeBSD-current/src/usr.sbin/ctm/ Die Deltas, die CTM verarbeitet, können Sie über FTP oder E-Mail beziehen. Wenn Sie über einen FTP Zugang zum Internet verfügen, erhalten Sie die Deltas unter der folgenden URL: ftp://ftp.FreeBSD.org/pub/FreeBSD/CTM/ Die Deltas werden auch von CTM Spiegeln bereitgehalten. Wechseln Sie in das passende Verzeichnisse zum Beispiel src-cur für &os.current; und laden Sie sich von dort die Deltas herunter. Sie können die Deltas auch über E-Mail beziehen. Dazu senden Sie eine E-Mail an &a.majordomo; und abonnieren eine der Verteilerlisten. Über ctm-cvs-cur erhalten Sie den kompletten CVS Baum, über ctm-src-cur erhalten Sie &os.current; und über ctm-src-4 erhalten Sie den FreeBSD 4.X-Zweig. Wenn Sie nicht wissen, wie Sie eine Majordomo-Liste abonnieren, senden Sie eine E-Mail mit dem Text help im Textkörper an &a.majordomo;. Sie erhalten dann eine ausführliche Anleitung. Benutzen Sie ctm_rmail, um die CTM Updates, die Sie per E-Mail empfangen, auszupacken und anzuwenden. Wenn Sie diesen Prozess automatisiert ablaufen lassen möchten, können Sie dazu einen Eintrag in /etc/aliases verwenden. Genauere Informationen finden Sie in der Manualpage von ctm_rmail. Sie sollten die Mailingliste ctm-announce@FreeBSD.org abonnieren, unabhängig davon über welche Methode Sie die CTM Deltas erhalten. In dieser Liste werden Ankündigungen, die die Verwendung von CTM betreffen, bekannt gegeben. Senden Sie eine E-Mail mit dem Text subscribe ctm-announce an &a.majordomo; um diese Liste zu abonieren. Initialisieren von <application>CTM</application> Bevor Sie die CTM Deltas benutzen können, brauchen Sie einen Startpunkt, auf den die nachfolgenden Deltas angewendet werden. Sie können natürlich mit einem leeren Verzeichnis beginnen. In diesem Fall benötigen Sie ein XEmpty-Delta, mit dem Sie den CTM-Verzeichnisbaum initialisieren. Wenn Sie Glück haben, finden Sie ein XEmpty-Delta, mit dem sie beginnen können, auf einer der CDs Ihrer Distribution. Da die Verzeichnisbäume mehrere Megabyte groß sind, sollten Sie nach Möglichkeit etwas schon vorhandenes benutzen. Wenn Sie eine -RELEASE CD besitzen, können Sie die Quellen von dieser CD benutzen. Sie ersparen sich damit das Übertragen großer Datenmengen. Die Deltas, mit denen Sie beginnen können, enthalten ein X in ihrem Namen, wie in src-cur.3210XEmpty.gz. Hinter dem X wird der Startpunkt der Deltas angegeben, in diesem Fall steht Empty für ein leeres Verzeichnis. Nach etwa 100 Deltas wird ein neues XEmpty-Delta erstellt. Mit ungefähr 75 Megabyte komprimierter Daten sind diese XEmpty-Deltas übrigens sehr groß. Nachdem Sie Ihren Startpunkt festgelegt haben, benötigen Sie alle Deltas mit einer höheren Nummer. Benutzen von <application>CTM</application> Um ein Delta einzuspielen, benutzen Sie das folgende Kommando: &prompt.root; cd /Pfad/zu/den/Quellen &prompt.root; ctm -v -v /Pfad/zu/den/Deltas/src-xxx.* CTM kann mit Deltas arbeiten, die mit gzip komprimiert wurden. Sie brauchen die Deltas vorher nicht mit gunzip zu dekomprimieren und sparen damit Plattenplatz. Ihr Quellbaum wird erst dann verändert, wenn CTM die Deltas sauber verarbeiten kann. Die Integrität der Deltas und ihre Anwendbarkeit auf den Quellbaum lassen sich durch die Angabe des Schalters -c überprüfen, CTM ändert in diesem Fall Ihren Quellbaum nicht. CTM verfügt über weitere Kommandozeilenoptionen, Informationen dazu finden Sie in der Manualpage oder dem Quellcode. Das war schon alles. Um Ihre Quellen aktuell zu halten, verwenden Sie CTM jedes Mal, wenn Sie neue Deltas bekommen. Löschen Sie die Deltas nicht, wenn Sie diese nur schwer wieder beschaffen können. Behalten Sie sie für den Fall, das etwas passiert. Auch wenn Sie nur Disketten besitzen, sollten Sie erwägen, die Deltas mit fdwrite zu sichern. Umgang mit lokalen Änderungen Entwickler wollen mit den Dateien im Quellbaum experimentieren und diese verändern. In beschränkter Weise werden lokale Änderungen von CTM unterstützt. Wenn CTM die Datei foo bearbeiten will, überprüft es zuerst ob die Datei foo.ctm existiert. Wenn diese Datei existiert, werden Änderungen in ihr anstatt in foo vorgenommen. Mit diesem Verfahren ist eine leichte Handhabung lokaler Änderungen möglich. Kopieren Sie die Dateien, die Sie ändern möchten, in Dateien, die das Suffix .ctm tragen. Sie können dann ungestört mit dem Quellcode arbeiten, während CTM die .ctm Dateien aktualisiert. Weitere <application>CTM</application>-Optionen Was wird aktualisiert? Eine Liste der Änderungen, die CTM an Ihrem Quellbaum vornehmen wird, erhalten Sie, wenn Sie die Option angeben. Das ist nützlich, wenn Sie Logs über die Änderungen führen wollen, geänderte Dateien vor- oder nachbearbeiten wollen, oder einfach ein bisschen paranoid sind. Sicherungen vor einer Aktualisierung erstellen Sie wollen vielleicht die Dateien, die durch eine CTM Aktualisierung verändert werden, sichern. Mit weisen Sie CTM an, alle Dateien, die durch ein CTM Delta verändert würden, nach backup-file zu sichern. Dateien ausschließen Manchmal wollen Sie nur bestimmte Teile aktualisieren oder nur bestimmte Dateien aus einer Folge von Deltas extrahieren. Sie können die Liste der Dateien, mit denen CTM arbeitet, einschränken, indem Sie reguläre Ausdrücke mit den Optionen und angeben. Wenn Sie eine aktuelle Kopie von lib/libc/Makefile aus den gesicherten CTM Deltas erhalten wollen, setzen Sie das folgende Kommando ab: &prompt.root; cd /wo/Sie/es/auspacken/wollen/ &prompt.root; ctm -e '^lib/libc/Makefile' ~ctm/src-xxx.* Die Optionen und werden in der Reihenfolge angewandt, in der sie auf der Kommandozeile angegeben wurden. Eine Datei wird nur dann von CTM verarbeitet, wenn dies nach der Anwendung der Optionen und noch erlaubt ist. Pläne für <application>CTM</application> Mehrere: Hinzufügen eines Authentifizierungsmechanismus, damit gefälschte CTM-Deltas erkannt werden können. Aufräumen der CTM-Optionen, die mit der Zeit unübersichtlich und irreführend wurden. Verschiedenes Es gibt Deltas für die Ports-Sammlung, die aber nicht intensiv genutzt werden. CTM-Spiegel Die CTM-Deltas können Sie mit anonymous FTP von den folgenden Spiegeln beziehen. Versuchen Sie bitte einen Spiegel in Ihrer Nähe zu benutzen. Bei Problemen wenden Sie sich bitte an &a.phk;. Kalifornien, Bay Area, Offizieller Server ftp://ftp.FreeBSD.org/pub/FreeBSD/development/CTM/ Südafrika, Backup-Server für alte Deltas ftp://ftp.za.FreeBSD.org/pub/FreeBSD/CTM/ Taiwan/R.O.C. ftp://ctm.tw.FreeBSD.org/pub/FreeBSD/development/CTM/ ftp://ctm2.tw.FreeBSD.org/pub/FreeBSD/development/CTM/ ftp://ctm3.tw.FreeBSD.org/pub/freebsd/development/CTM/ Wenn die Liste keinen Spiegel in Ihrer Nähe enthält oder Sie Probleme mit dem ausgewählten Spiegel haben, versuchen Sie einen Spiegel mit einer Suchmaschine, wie alltheweb, zu finden. Benutzen von CVSup Einführung CVSup ist eine Anwendung, die Verzeichnisbäume von einem entfernten CVS-Server bereitstellt und aktualisiert. Die Quellen von FreeBSD werden in einem CVS-Repository auf einer Entwicklungsmaschine in Kalifornien gepflegt. Mit CVSup können sich FreeBSD Benutzer den eigenen Quellbaum auf aktuellem Stand halten. Zum Aktualisieren benutzt CVSup die Pull-Methode, bei der die Aktualisierungen vom Client angefragt werden. Der Server wartet dabei passiv auf Anfragen von Clients, das heißt er verschickt nicht unaufgefordert Aktualisierungen. Somit gehen alle Anfragen vom Client aus und die Benutzer müssen CVSup entweder manuell starten oder einen cron Job einrichten, um regelmäßig Aktualisierungen zu erhalten. CVSup in genau dieser Schreibweise bezeichnet die Anwendung, die aus dem Client cvsup und dem Server cvsupd besteht. cvsup läuft auf den Maschinen der Benutzer, cvsupd läuft auf jedem der FreeBSD-Spiegel. Wenn Sie die FreeBSD Dokumentation und die Mailinglisten lesen, werden Sie oft auf Sup, dem Vorgänger von CVSup stoßen. CVSup wird in gleicher Weise wie Sup benutzt und verfügt sogar über Konfigurationsdateien, die kompatibel zu denen von Sup sind. Da CVSup schneller und flexibler als Sup ist, wird Sup vom FreeBSD-Projekt nicht mehr benutzt. Installation von <application>CVSup</application> CVSup können Sie leicht installieren, wenn Sie das vorkompilierte Paket net/cvsup aus der Ports-Sammlung benutzen. Alternativ können Sie net/cvsup auch ausgehend von den Quellen bauen, doch seien Sie gewarnt: net/cvsup hängt vom Modula-3 System ab, das viel Zeit und Platz zum Herunterladen und Bauen braucht. Wenn Sie CVSup auf einer Maschine ohne XFree86, beispielsweise einem Server, benutzen, stellen Sie sicher, dass Sie den Port ohne das CVSup-GUI, cvsup-without-gui verwenden. Wenn Sie CVSup möglichst einfach installieren und konfigurieren wollen, installieren Sie mit &man.pkg.add.1; das Paket net/cvsupit. Bei der Installation können Sie dann die Konfiguration von CVSup menügestützt durchführen. Konfiguration von CVSup Das Verhalten von CVSup wird mit einer Konfigurationsdatei gesteuert, die supfile genannt wird. Beispiele für Konfigurationsdateien finden Sie in dem Verzeichnis /usr/share/examples/cvsup/. Ein supfile enthält die folgenden Informationen: Welche Dateien Sie erhalten wollen. Welche Versionen der Dateien Sie benötigen. Woher Sie die Dateien beziehen wollen. Wo Sie die erhaltenen Dateien speichern. Wo Sie die Status-Dateien aufbewahren wollen. In den folgenden Abschnitten erstellen wir ein typisches supfile indem wir nach und nach diese Punkte klären. Zuerst beschreiben wir aber den Aufbau dieser Konfigurationsdatei. Ein supfile ist eine Textdatei. Kommentare beginnen mit einem # und gelten bis zum Zeilenende. Leerzeilen und Zeilen, die nur Kommentare enthalten, werden ignoriert. Die anderen Zeilen legen die Dateien fest, die ein Benutzer erhalten will. Der Server organisiert verschiedene Dateien in einer Sammlung, deren Name auf einer Zeile angegeben wird. Nach dem Namen der Sammlung können mehrere durch Leerzeichen getrennte Felder folgen, die die oben angesprochenen Informationen festlegen. Es gibt zwei Arten von Feldern: Felder, die Optionen festlegen und Felder mit Parametern. Optionen bestehen aus einem Schlüsselwort, wie oder und stehen alleine. Ein Parameterfeld beginnt mit einem Schlüsselwort, dem = und ein Parameter, wie in , folgt. Dieses Feld darf keine Leerzeichen enthalten. In einem supfile werden normalerweise mehrere Sammlungen angefordert. Die erforderlichen Felder können explizit für jede Sammlung angegeben werden, dann werden jedoch die Zeilen ziemlich lang. Außerdem ist dieses Vorgehen sehr unhandlich, da die meisten Felder für alle Sammlungen gleich sind. CVSup bietet die Möglichkeit, Vorgaben für die Felder der Sammlungen festzulegen. Zeilen, die mit der Pseudo-Sammlung *default beginnen, legen Optionen und Parameter für nachfolgende Sammlungen im supfile fest. Der Vorgabewert kann in der Zeile einer bestimmten Sammlung überschrieben werden. Durch Hinzufügen weiterer *default Zeilen können die Vorgaben auch mitten im supfile überschrieben oder erweitert werden. Mit diesem Wissen können wir nun ein supfile erstellen, das den Quellbaum von FreeBSD-CURRENT anfordert und aktualisiert. Welche Dateien wollen Sie empfangen? Dateien werden von CVSup in Sammlungen organisiert. Die erhältlichen Sammlungen werden später beschrieben. Wir wollen den Quellbaum von FreeBSD empfangen, der in der Sammlung src-all enthalten ist. Das supfile enthält pro Zeile eine Sammlung, in diesem Fall also nur eine einzige Zeile: src-all Welche Versionen der Dateien werden benötigt? Mit CVSup können Sie jede Version der Quellen bekommen, da der cvsupd-Server seine Daten direkt aus dem CVS-Repository bezieht. Sie können die benötigten Versionen in den Parameterfeldern tag= und angeben. Achten Sie darauf, dass Sie das richtige tag=-Feld angeben. Einige Tags sind nur für spezielle Sammlungen gültig. Wenn Sie ein falsches Tag angeben oder sich verschreiben, wird CVSup Dateien löschen, die Sie wahrscheinlich gar nicht löschen wollten. Achten Sie insbesondere bei den ports-*-Sammlungen darauf, ausschließlich tag=. zu verwenden. Mit tag= wird ein symbolischer Name aus dem Repository angegeben. Es gibt zwei verschiedene Tags: Tags, die Revisionen bezeichnen und Tags, die Zweige bezeichnen. Die ersteren sind statisch und fest an eine Revision gebunden. Ein Tag, das einen Zweig bezeichnet, bezieht sich dagegen zu einem gegebenen Zeitpunkt immer auf die aktuellste Revision. Da ein Tag eines Zweiges nicht an eine bestimmte Revision gebunden ist, kann sich dessen Bedeutung von heute auf morgen ändern. zählt für Benutzer relevante Tags auf. Wenn Sie in der Konfigurationsdatei ein Tag, wie RELENG_4, angeben, müssen Sie diesem tag= vorstellen: tag=RELENG_4. Denken Sie daran, dass es für die Ports-Sammlung nur tag=. gibt. Achten Sie darauf, dass Sie den Namen eines Tags richtig angeben. CVSup kann nicht zwischen richtigen und falschen Tags unterscheiden. Wenn Sie sich bei der Angabe eines Tags vertippen, nimmt CVSup an, Sie hätten ein gültiges Tag angegeben, dem nur keine Dateien zugeordnet sind. Die Folge davon ist, dass Ihre vorhandenen Quellen gelöscht werden. Wenn Sie ein Tag angeben, das sich auf einen Zweig bezieht, erhalten Sie die aktuellsten Revisionen der Dateien auf diesem Zweig. Wenn Sie eine frühere Revision erhalten möchten, können Sie diese im Feld angeben. Einzelheiten dazu finden Sie in der Manualpage von cvsup. Wir möchten gerne FreeBSD-CURRENT beziehen und fügen die folgende Zeile am Anfang der Konfigurationsdatei ein: *default tag=. Eine wichtige Ausnahme ist wenn Sie weder ein tag=-Feld noch ein date=-Feld angeben. In diesem Fall erhalten Sie anstelle einer speziellen Revision die wirklichen RCS-Dateien aus dem CVS-Repository des Servers. Diese Vorgehensweise wird von Entwicklern bevorzugt, da sie mit einem eigenen Repository leicht die Entwicklungsgeschichte und Veränderungen von Dateien verfolgen können. Dieser Vorteil muss allerdings mit sehr viel Plattenplatz bezahlt werden. Woher sollen die Dateien bezogen werden? Im host=-Feld wird angegeben, woher cvsup die Dateien holen soll. Sie können hier jeden der CVSup-Spiegel angeben, doch sollten Sie einen Server in Ihrer Nähe auswählen. Für dieses Beispiel wollen wir den erfundenen Server cvsup666.FreeBSD.org verwenden: *default host=cvsup666.FreeBSD.org Bevor Sie CVSup laufen lassen, sollten Sie hier einen existierenden Server einsetzen. Den zu verwendenden Server können Sie auf der Kommandozeile mit überschreiben. Wo sollen die Dateien gespeichert werden? Im prefix=-Feld teilen Sie cvsup mit, wo die Dateien gespeichert werden sollen. In diesem Beispiel werden wir die Quelldateien direkt im Verzeichnisbaum für Quellen /usr/src ablegen. Das Verzeichnis src ist schon in der Sammlung, die wir beziehen enthalten, so dass wir die folgende Zeile angeben: *default prefix=/usr Wo sollen die Statusinformationen von cvsup gespeichert werden? cvsup legt in einem Verzeichnis Statusinformationen ab, die festhalten, welche Versionen schon empfangen wurden. Wir verwenden das Standardverzeichnis /usr/local/etc/cvsup: *default base=/usr/local/etc/cvsup Der Vorgabewert für base= ist genau dieses Verzeichnis, so dass wir diese Zeile nicht angeben müssen. Wenn das Verzeichnis für die Statusinformationen nicht existiert, sollten Sie es jetzt anlegen, da cvsup ohne dieses Verzeichnis nicht startet. Verschiedene Einstellungen: Eine weitere Zeile sollte normalerweise in jedem supfile sein: *default release=cvs delete use-rel-suffix compress Mit release=cvs wird angegeben, dass der Server das FreeBSD Haupt-Repository abfragen soll, was praktisch immer der Fall ist (die Ausnahmen können in diesem Rahmen nicht diskutiert werden). delete erlaubt es CVSup, Dateien zu löschen. Diese Option sollten Sie immer angeben, damit CVSup Ihren Quellbaum auch wirklich aktuell halten kann. CVSup löscht nur Dateien für die es auch verantwortlich ist. Andere Dateien, die sich in einem Baum unter Kontrolle von CVSup befinden, werden nicht verändert. Wenn Sie wirklich etwas über das obskure use-rel-suffix erfahren wollen, lesen Sie bitte in der Manualpage nach, ansonsten geben Sie es einfach an und vergessen es. Wenn Sie compress angeben, werden Daten auf dem Kommunikationskanal komprimiert. Wenn Sie über eine T1-Leitung oder eine schnellere Netzanbindung verfügen, brauchen Sie diese Option vielleicht nicht. In allen anderen Fällen beschleunigt sie aber den Ablauf. Zusammenfassung: Das vollständige supfile unseres Beispiels sieht nun so aus: *default tag=. *default host=cvsup666.FreeBSD.org *default prefix=/usr *default base=/usr/local/etc/cvsup *default release=cvs delete use-rel-suffix compress src-all Die <filename>refuse</filename> Datei CVSup benutzt die Pull-Methode, das heißt wenn sich ein Client mit einem Server verbindet, erhält er eine Liste der verfügbaren Sammlungen und wählt aus diesen die herunterzuladenden Dateien aus. In der Voreinstellung wählt der Client alle Dateien aus, die zu einer gegebenen Sammlung und zu einem gegebenen Tag passen. Dieses Verhalten ist aber nicht immer erwünscht, besonders wenn Sie die doc, ports oder www Verzeichnisbäume synchronisieren. Die wenigsten Leute beherrschen vier oder fünf Sprachen und benötigen Dateien mit speziellen Anpassungen für eine Sprache. Wenn Sie die Ports-Sammlung synchronisieren, können Sie anstelle von ports-all einzelne Ports, wie ports-astrology oder ports-biology angeben. Die doc und www Verzeichnisbäume verfügen aber nicht über Sammlungen für spezielle Sprachen. In diesem Fall müssen Sie eines der vielen eleganten Merkmale von CVSup benutzen: Die refuse Datei. Mit einer refuse Datei können Sie bestimmte Dateien einer Sammlung von der Übertragung ausschließen. Der Ort der refuse ist base/sup/refuse, wobei base in Ihrem supfile festgelegt wurde. In der Voreinstellung ist base das Verzeichnis /usr/local/etc/cvsup, der Ort der refuse Datei ist daher /usr/local/etc/cvsup/sup/refuse. Das Format der refuse Datei ist einfach: Sie enthält eine Liste der Dateien und Verzeichnisse, die Sie nicht herunterladen wollen. Wenn Sie zum Beispiel keinen Bedarf an Anwendungen mit Anpassungen für Sprachen außer Englisch haben, könnte ein Teil Ihrer refuse Datei wie folgt aussehen: ports/chinese ports/french ports/german ports/hebrew ports/japanese ports/hungarian ports/korean ports/portuguese ports/russian ports/ukrainian ports/vietnamese doc/de_DE.ISO8859-1 doc/el_GR.ISO8859-7 doc/es_ES.ISO8859-1 doc/fr_FR.ISO8859-1 doc/it_IT.ISO8859-15 doc/ja_JP.eucJP doc/nl_NL.ISO8859-1 doc/pt_BR.ISO8859-1 doc/ru_RU.KOI8-R doc/sr_YU.ISO8859-2 doc/zh_TW.Big5 Die Aufzählung setzt sich für andere Sprachen fort. Eine vollständige Liste erhalten Sie, wenn Sie sich die Verzeichnisse auf dem FreeBSD FTP server anschauen. Beachten Sie bitte, dass der Name des Repositories das erste Verzeichnis in der refuse Datei ist. Die refuse Datei spart Anwendern von CVSup, die über eine langsame Internetanbindung verfügen oder deren Internetverbindung zeitlich abgerechnet wird, wertvolle Zeit, da sie Dateien, die sie nicht benötigen, nicht mehr herunterladen müssen. Weitere Informationen zu refuse Dateien und anderen Eigenschaften von CVSup entnehmen Sie bitte der Manualpage. Ausführen von <application>CVSup</application> Wir können nun eine Aktualisierung mit der folgenden Kommandozeile starten: &prompt.root; cvsup supfile supfile gibt dabei das eben erstelle supfile an. Wenn Sie X11 benutzen, wird cvsup ein GUI starten. Drücken Sie go und schauen Sie zu. Das Beispiel aktualisiert die Dateien im Verzeichnisbaum /usr/src. Sie müssen cvsup als root starten, damit Sie die nötigen Rechte haben, die Dateien zu aktualisieren. Sie sind vielleicht ein bisschen nervös weil Sie das Programm zum ersten Mal anwenden und möchten zuerst einmal einen Testlauf durchführen. Legen Sie dazu ein temporäres Verzeichnis an und übergeben es auf der Kommandozeile von cvsup: &prompt.root; mkdir /var/tmp/dest &prompt.root; cvsup supfile /var/tmp/dest Aktualisierungen werden dann nur in dem angegebenen Verzeichnis vorgenommen. CVSup untersucht die Dateien in /usr/src, wird aber keine dieser Dateien verändern. Die veränderten Dateien finden Sie stattdessen in /var/tmp/dest/usr/src. Die Statusdateien von CVSup werden ebenfalls nicht geändert, sondern in dem angegebenen Verzeichnis abgelegt. Wenn Sie Leseberechtigung in /usr/src haben, brauchen Sie das Programm noch nicht einmal unter root laufen zu lassen. Wenn Sie X11 nicht benutzen wollen oder keine GUIs mögen, sollten Sie cvsup wie folgt aufrufen: &prompt.root; cvsup -g -L 2 supfile verhindert den Start des GUIs. Wenn Sie kein X11 laufen haben, passiert das automatisch, ansonsten müssen Sie diesen Schalter angeben. Mit gibt CVSup Einzelheiten zu jeder Aktualisierung aus. Die Wortfülle der Meldungen können Sie von bis einstellen. In der Voreinstellung werden nur Fehlermeldungen ausgegeben. Eine Zusammenfassung der Optionen von CVSup erhalten Sie mit cvsup -H. Genauere Informationen finden Sie in der Manualpage von CVSup. Wenn Sie mit dem Ablauf der Aktualisierung zufrieden sind, können Sie CVSup regelmäßig aus &man.cron.8; ausführen. In diesem Fall sollten Sie natürlich nicht das GUI benutzen. <application>CVSup</application> Sammlungen Die CVSup Sammlungen sind hierarchisch organisiert. Es gibt wenige große Sammlungen, die in kleinere Teilsammlungen unterteilt sind. Wenn Sie eine große Sammlung beziehen, entspricht das dem Beziehen aller Teilsammlungen. Der Hierarchie der Sammlung wird in der folgenden Aufzählung durch Einrückungen dargestellt. Die am häufigsten benutzen Sammlungen sind src-all und ports-all. Die anderen Sammlungen werden von wenigen Leuten zu speziellen Zwecken benutzt und es kann sein, dass diese nicht auf allen Spiegeln zur Verfügung stehen. cvs-all release=cvs Das FreeBSD Haupt-Repository einschließlich der Kryptographie-Module. distrib release=cvs Dateien, die zum Verteilen und Spiegeln von FreeBSD benötigt werden. doc-all release=cvs Quellen des FreeBSD Handbuchs und weiterer Dokumentation. Diese Sammlung enthält nicht die FreeBSD Webseite. ports-all release=cvs Die FreeBSD Ports-Sammlung. ports-archivers release=cvs Werkzeuge zum Archivieren. ports-astro release=cvs Astronomie-Programme. ports-audio release=cvs Audio-Programme. ports-base release=cvs Infrastruktur der Ports-Sammlung. ports-benchmarks release=cvs Benchmarks. ports-biology release=cvs Biologie. ports-cad release=cvs Computer Aided Design Werkzeuge. ports-chinese release=cvs Chinesische Sprachunterstützung. ports-comms release=cvs Programme zur Datenkommunikation. ports-converters release=cvs Zeichensatz Konvertierer. ports-databases release=cvs Datenbanken. ports-deskutils release=cvs Sachen, die sich vor dem Computer-Zeitalter auf dem Schreibtisch befanden. ports-devel release=cvs Werkzeuge für Entwickler. ports-editors release=cvs Editoren. ports-emulators release=cvs Programme, die andere Betriebssysteme emulieren. ports-finance release=cvs Finanz-Anwendungen. ports-ftp release=cvs Werkzeuge für FTP Clients und Server. ports-games release=cvs Spiele. ports-german release=cvs Deutsche Sprachunterstützung. ports-graphics release=cvs Graphik-Programme. ports-hungarian release=cvs Ungarische Sprachunterstützung. ports-irc release=cvs Internet Relay Chat Werkzeuge. ports-japanese release=cvs Japanische Sprachunterstützung. ports-java release=cvs Java Werkzeuge. ports-korean release=cvs Koreanische Sprachunterstützung. ports-lang release=cvs Programmiersprachen. ports-mail release=cvs E-Mail Programme. ports-math release=cvs Programme zur numerischen Mathematik. ports-mbone release=cvs MBone Anwendungen. ports-misc release=cvs Verschiedene Werkzeuge. ports-multimedia release=cvs Multimedia-Anwendungen. ports-net release=cvs Netzwerk-Programme. ports-news release=cvs USENET News Werkzeuge. ports-palm release=cvs Programme für den Palm. ports-portuguese release=cvs Portugiesische Sprachunterstützung. ports-print release=cvs Druckprogramme. ports-russian release=cvs Russische Sprachunterstützung. ports-security release=cvs Werkzeuge zum Thema Sicherheit. ports-shells release=cvs Kommandozeilen-Shells. ports-sysutils release=cvs System-Werkzeuge. ports-textproc release=cvs Programme zur Textverarbeitung (ohne Desktop Publishing). ports-vietnamese release=cvs Vietnamesische Sprachunterstützung. ports-www release=cvs Software rund um das World Wide Web. ports-x11 release=cvs X-Window Programme. ports-x11-clocks release=cvs X11-Uhren. ports-x11-fm release=cvs X11-Dateiverwalter. ports-x11-fonts release=cvs X11-Zeichensätze und Werkzeuge dazu. ports-x11-toolkits release=cvs X11-Werkzeuge. ports-x11-servers X11-Server. ports-x11-wm X11-Fensterverwalter. src-all release=cvs Die FreeBSD Quellen einschließlich der Kryptographie-Module. src-base release=cvs Verschiedene Dateien unter /usr/src. src-bin release=cvs Benutzer-Werkzeuge die im Einzelbenutzermodus gebraucht werden (/usr/src/bin). src-contrib release=cvs Werkzeuge und Bibliotheken, die nicht aus dem FreeBSD-Projekt stammen und wenig verändert übernommen werden. (/usr/src/contrib). src-crypto release=cvs Kryptographische Werkzeuge und Bibliotheken, die nicht aus dem FreeBSD-Projekt stammen und wenig verändert übernommen werden. (/usr/src/crypto). src-eBones release=cvs Kerberos und DES (/usr/src/eBones). Wird in aktuellen Releases von FreeBSD nicht benutzt. src-etc release=cvs Konfigurationsdateien des Systems (/usr/src/etc). src-games release=cvs Spiele (/usr/src/games). src-gnu release=cvs Werkzeuge, die unter der GNU Public License stehen (/usr/src/gnu). src-include release=cvs Header Dateien (/usr/src/include). src-kerberos5 release=cvs Kerberos5 (/usr/src/kerberos5). src-kerberosIV release=cvs KerberosIV (/usr/src/kerberosIV). src-lib release=cvs Bibliotheken (/usr/src/lib). src-libexec release=cvs Systemprogramme, die von anderen Programmen ausgeführt werden (/usr/src/libexec). src-release release=cvs Dateien, die zum Erstellen eines FreeBSD Releases notwendig sind (/usr/src/release). src-sbin release=cvs Werkzeuge für den Einzelbenutzermodus (/usr/src/sbin). src-secure release=cvs Kryptographische Bibliotheken und Befehle (/usr/src/secure). src-share release=cvs Dateien, die von mehreren Systemen gemeinsam benutzt werden können (/usr/src/share). src-sys release=cvs Der Kernel (/usr/src/sys). src-sys-crypto release=cvs Kryptographie Quellen des Kernels (/usr/src/sys/crypto). src-tools release=cvs Verschiedene Werkzeuge zur Pflege von FreeBSD (/usr/src/tools). src-usrbin release=cvs Benutzer-Werkzeuge (/usr/src/usr.bin). src-usrsbin release=cvs System-Werkzeuge (/usr/src/usr.sbin). www release=cvs Die Quellen der FreeBSD WWW Seite. distrib release=self Die Konfigurationsdateien des CVSup Servers. Diese werden von den CVSup benutzt. gnats release=current Die GNATS Datenbank, in der Problemberichte verwaltet werden. mail-archive release=current Das Archiv der FreeBSD Mailinglisten. www release=current Die formatierten Dateien der FreeBSD WWW Seite (nicht die Quellen). Diese werden von den WWW-Spiegeln benutzt. Weiterführende Informationen Die CVSup FAQ und weitere Informationen über CVSup finden Sie auf The CVSup Home Page. FreeBSD spezifische Diskussionen über CVSup finden auf der Mailingliste &a.hackers; statt. Dort und auf der Liste &a.announce; werden neue Versionen von CVSup angekündigt. Fragen und Problemberichte sollten an den Autor des Programms cvsup-bugs@polstra.com weitergeleitet werden. CVSup Server Die folgende Aufzählung enthält CVSup Server für FreeBSD: Argentinien cvsup.ar.FreeBSD.org (Betreuer msagre@cactus.fi.uba.ar) Australien cvsup.au.FreeBSD.org (Betreuer cvsup@ntt.net.au) cvsup2.au.FreeBSD.org (Betreuer cvsup@isp.net.au) cvsup3.au.FreeBSD.org (Betreuer cvsup@speednet.com.au) cvsup4.au.FreeBSD.org (Betreuer cvsup@ideal.net.au) cvsup5.au.FreeBSD.org (Betreuer cvsup@cvsup5.au.FreeBSD.org) Brasilien cvsup.br.FreeBSD.org (Betreuer cvsup@cvsup.br.FreeBSD.org) cvsup2.br.FreeBSD.org (Betreuer tps@ti.sk) cvsup3.br.FreeBSD.org (Betreuer camposr@matrix.com.br) cvsup4.br.FreeBSD.org (Betreuer cvsup@tcoip.com.br) cvsup5.br.FreeBSD.org (Betreuer hostmaster@br.FreeBSD.org) Bulgarien cvsup.bg.FreeBSD.org (Betreuer hostmaster@bg.FreeBSD.org) China cvsup.cn.FreeBSD.org (Betreuer phj@cn.FreeBSD.org) Dänemark cvsup.dk.FreeBSD.org (Betreuer jesper@FreeBSD.org) Deutschland cvsup.de.FreeBSD.org (Betreuer cvsup@cosmo-project.de) cvsup2.de.FreeBSD.org (Betreuer cvsup@apfel.de) cvsup3.de.FreeBSD.org (Betreuer ag@leo.org) cvsup4.de.FreeBSD.org (Betreuer cvsup@cosmo-project.de) cvsup5.de.FreeBSD.org (Betreuer &a.rse;) cvsup6.de.FreeBSD.org (Betreuer adminmail@heitec.net) cvsup7.de.FreeBSD.org (Betreuer karsten@rohrbach.de) Estland cvsup.ee.FreeBSD.org (Betreuer taavi@uninet.ee) Finnland cvsup.fi.FreeBSD.org (Betreuer count@key.sms.fi) cvsup2.fi.FreeBSD.org (Betreuer count@key.sms.fi) Frankreich cvsup.fr.FreeBSD.org (Betreuer hostmaster@fr.FreeBSD.org) cvsup2.fr.FreeBSD.org (Betreuer ftpmaint@uvsq.fr) cvsup3.fr.FreeBSD.org (Betreuer ftpmaint@enst.fr) cvsup4.fr.FreeBSD.org (Betreuer ftpmaster@t-online.fr) cvsup5.fr.FreeBSD.org (Betreuer freebsdcvsup@teaser.net) cvsup8.fr.FreeBSD.org (Betreuer ftpmaint@crc.u-strasbg.fr) Griechenland cvsup.gr.FreeBSD.org (Betreuer ftpadm@duth.gr) cvsup2.gr.FreeBSD.org (Betreuer paschos@cs.uoi.gr) Großbritannien cvsup.uk.FreeBSD.org (Betreuer ftp-admin@plig.net) cvsup2.uk.FreeBSD.org (Betreuer &a.brian;) cvsup3.uk.FreeBSD.org (Betreuer ben.hughes@uk.easynet.net) cvsup4.uk.FreeBSD.org (Betreuer ejb@leguin.org.uk) cvsup5.uk.FreeBSD.org (Betreuer mirror@teleglobe.net) Irland cvsup.ie.FreeBSD.org (Betreuer dwmalone@maths.tcd.ie), Trinity College, Dublin. Island cvsup.is.FreeBSD.org (Betreuer hostmaster@is.FreeBSD.org) Japan cvsup.jp.FreeBSD.org (Betreuer cvsupadm@jp.FreeBSD.org) cvsup2.jp.FreeBSD.org (Betreuer &a.max;) cvsup3.jp.FreeBSD.org (Betreuer shige@cin.nihon-u.ac.jp) cvsup4.jp.FreeBSD.org (Betreuer cvsup-admin@ftp.media.kyoto-u.ac.jp) cvsup5.jp.FreeBSD.org (Betreuer cvsup@imasy.or.jp) cvsup6.jp.FreeBSD.org (Betreuer cvsupadm@jp.FreeBSD.org) Kanada cvsup.ca.FreeBSD.org (Betreuer cvsup@ca.FreeBSD.org) Korea cvsup.kr.FreeBSD.org (Betreuer cjh@kr.FreeBSD.org) cvsup2.kr.FreeBSD.org (Betreuer holywar@mail.holywar.net) cvsup3.kr.FreeBSD.org (Betreuer hostmaster@cvsup3.kr.FreeBSD.org) Lettland cvsup.lv.FreeBSD.org (Betreuer system@soft.lv) Litauen cvsup.lt.FreeBSD.org (Betreuer domas.mituzas@delfi.lt) cvsup2.lt.FreeBSD.org (Betreuer vaidas.damosevicius@if.lt) Neuseeland cvsup.nz.FreeBSD.org (Betreuer cvsup@langille.org) Niederlande cvsup.nl.FreeBSD.org (Betreuer xaa@xaa.iae.nl) cvsup2.nl.FreeBSD.org (Betreuer cvsup@nl.uu.net) cvsup3.nl.FreeBSD.org (Betreuer cvsup@vuurwerk.nl) cvsup4.nl.FreeBSD.org (Betreuer hostmaster@cvsup4.nl.FreeBSD.org) Norwegen cvsup.no.FreeBSD.org (Betreuer Per.Hove@math.ntnu.no) Österreich cvsup.at.FreeBSD.org (Betreuer postmaster@wu-wien.ac.at) cvsup2.at.FreeBSD.org (Betreuer ftp-admin.zid@univie.ac.at) Polen cvsup.pl.FreeBSD.org (Betreuer Mariusz@kam.pl) cvsup2.pl.FreeBSD.org (Betreuer hostmaster@cvsup2.pl.FreeBSD.org) cvsup3.pl.FreeBSD.org (Betreuer hostmaster@cvsup3.pl.FreeBSD.org) Portugal cvsup.pt.FreeBSD.org (Betreuer jpedras@webvolution.net) Rumänien cvsup.ro.FreeBSD.org (Betreuer razor@ldc.ro) cvsup2.ro.FreeBSD.org (Betreuer hostmaster@rofug.ro) cvsup3.ro.FreeBSD.org (Betreuer veedee@c7.campus.utcluj.ro) Russland cvsup.ru.FreeBSD.org (Betreuer ache@nagual.pp.ru) cvsup2.ru.FreeBSD.org (Betreuer dv@dv.ru) cvsup3.ru.FreeBSD.org (Betreuer fjoe@iclub.nsu.ru) cvsup4.ru.FreeBSD.org (Betreuer zhecka@klondike.ru) cvsup5.ru.FreeBSD.org (Betreuer maxim@macomnet.ru) cvsup6.ru.FreeBSD.org (Betreuer pvr@corbina.net) San Marino cvsup.sm.FreeBSD.org (Betreuer sysadmin@alexdupre.com) Schweden cvsup.se.FreeBSD.org (Betreuer pantzer@ludd.luth.se) cvsup2.se.FreeBSD.org (Betreuer cvsup@dataphone.net) Singapur cvsup.sg.FreeBSD.org (Betreuer mirror-maintainer@mirror.averse.net) Slowakische Republik cvsup.sk.FreeBSD.org (Betreuer scorp@scorp.sk) cvsup2.sk.FreeBSD.org (Betreuer scorp@scorp.sk) Slowenien cvsup.si.FreeBSD.org (Betreuer blaz@si.FreeBSD.org) cvsup2.si.FreeBSD.org (Betreuer cuk@cuk.nu) Spanien cvsup.es.FreeBSD.org (Betreuer &a.jesusr;) cvsup2.es.FreeBSD.org (Betreuer &a.jesusr;) cvsup3.es.FreeBSD.org (Betreuer jose@we.lc.ehu.es) Südafrika cvsup.za.FreeBSD.org (Betreuer &a.markm;) cvsup2.za.FreeBSD.org (Betreuer &a.markm;) Taiwan cvsup.tw.FreeBSD.org (Betreuer ijliao@FreeBSD.org) cvsup3.tw.FreeBSD.org (Betreuer foxfair@FreeBSD.org) cvsup4.tw.FreeBSD.org (Betreuer einstein@NHCTC.edu.tw) cvsup5.tw.FreeBSD.org (Betreuer einstein@NHCTC.edu.tw) cvsup6.tw.FreeBSD.org (Betreuer jason@tw.FreeBSD.org) cvsup7.tw.FreeBSD.org (Betreuer cvsup@abpe.org) cvsup8.tw.FreeBSD.org (Betreuer heboy@FreeBSD.tku.edu.tw) cvsup9.tw.FreeBSD.org (Betreuer cs871256@csie.ncu.edu.tw) cvsup10.tw.FreeBSD.org (Betreuer rafan@infor.org) cvsup11.tw.FreeBSD.org (Betreuer vanilla@FreeBSD.org) cvsup12.tw.FreeBSD.org (Betreuer GEO.bbs@birdnest.twbbs.org) cvsup13.tw.FreeBSD.org (Betreuer cdsheen@tw.FreeBSD.org) Tschechische Republik cvsup.cz.FreeBSD.org (Betreuer cejkar@fit.vutbr.cz) Ukraine cvsup2.ua.FreeBSD.org (Betreuer freebsd-mnt@lucky.net) cvsup3.ua.FreeBSD.org (Betreuer ftpmaster@ukr.net), Kiev cvsup4.ua.FreeBSD.org (Betreuer phantom@cris.net) cvsup5.ua.FreeBSD.org (Betreuer never@nevermind.kiev.ua) + + cvsup6.ua.FreeBSD.org (Betreuer + freebsd-cvs@colocall.net) + + cvsup7.ua.FreeBSD.org (Betreuer never@nevermind.kiev.ua) Türkei cvsup.tr.FreeBSD.org (Betreuer roots@enderunix.org) Ungarn cvsup.hu.FreeBSD.org (Betreuer janos.mohacsi@bsd.hu) USA cvsup1.FreeBSD.org (Betreuer cwt@networks.cwu.edu), Washington state cvsup2.FreeBSD.org (Betreuer djs@secure.net und &a.nectar;), Virginia cvsup3.FreeBSD.org (Betreuer &a.wollman;), Massachusetts cvsup5.FreeBSD.org (Betreuer mjr@blackened.com), Arizona cvsup6.FreeBSD.org (Betreuer cvsup@cvsup.adelphiacom.net), Illinois cvsup7.FreeBSD.org (Betreuer &a.jdp;), Washington state cvsup8.FreeBSD.org (Betreuer hostmaster@bigmirror.com), Washington state cvsup9.FreeBSD.org (Betreuer &a.jdp;), Minnesota cvsup10.FreeBSD.org (Betreuer &a.jdp;), California cvsup11.FreeBSD.org (Betreuer cvsup@research.uu.net), Virginia cvsup12.FreeBSD.org (Betreuer &a.will;), Indiana cvsup13.FreeBSD.org (Betreuer dima@valueclick.com), California cvsup14.FreeBSD.org (Betreuer freebsd-cvsup@mfnx.net), California cvsup15.FreeBSD.org (Betreuer cvsup@math.uic.edu), Illinois cvsup16.FreeBSD.org (Betreuer pth3k@virginia.edu), Virginia cvsup17.FreeBSD.org (Betreuer cvsup@mirrortree.com), Washington state - - - cvsup18.FreeBSD.org (Betreuer - hostmaster@cvsup18.FreeBSD.org) - CVS Tags Wenn Sie Quellen mit CVS oder CVSup erhalten oder aktualisieren wollen, müssen Sie dazu ein Tag oder eine Revision angeben. Im Folgenden finden Sie Tags, die verschiedene FreeBSD Zweige zu verschiedenen Zeiten angeben. Der ports Baum besitzt kein eigenes Tag, er ist immer CURRENT. Die am häufigsten verwendeten Tags sind: HEAD Symbolischer Name für den Hauptzweig, auch &os.current; genannt. Dies ist die Vorgabe, wenn keine Revision angegeben wird. In CVSup wird dieses Tag mit einem . (Punkt) bezeichnet. In CVS ist das die Vorgabe, wenn Sie kein Tag oder eine Revision angeben. Außer Sie wollen einen -STABLE Rechner auf -CURRENT aktualisieren, ist es nicht ratsam, die -CURRENT Quellen auf einem -STABLE Rechner einzuspielen. RELENG_5_0 Der Zweig, auf dem sicherheitsrelevante oder kritische Fehlerbehebungen für FreeBSD 5.0 durchgeführt werden. RELENG_4 Der FreeBSD 4.X Entwicklungszweig, der auch &os.stable; genannt wird. RELENG_4_7 Der Zweig, auf dem sicherheitsrelevante oder kritische Fehlerbehebungen für FreeBSD 4.7 durchgeführt werden. RELENG_4_6 Der Zweig, auf dem sicherheitsrelevante oder kritische Fehlerbehebungen für FreeBSD 4.6 und FreeBSD 4.6.2 durchgeführt werden. RELENG_4_5 Der Zweig, auf dem sicherheitsrelevante oder kritische Fehlerbehebungen für FreeBSD 4.5 durchgeführt werden. RELENG_4_4 Der Zweig, auf dem sicherheitsrelevante oder kritische Fehlerbehebungen für FreeBSD 4.4 durchgeführt werden. RELENG_4_3 Der Zweig, auf dem sicherheitsrelevante oder kritische Fehlerbehebungen für FreeBSD 4.3 durchgeführt werden. RELENG_3 Der FreeBSD-3.X Entwicklungszweig, der auch 3.X-STABLE genannt wird. RELENG_2_2 Der FreeBSD-2.2.X Entwicklungszweig, der auch 2.2-STABLE genannt wird. Weitere Revision-Tags sind: RELENG_4_7_RELEASE FreeBSD 4.7 RELENG_4_6_2_RELEASE FreeBSD 4.6.2. RELENG_4_6_1_RELEASE FreeBSD 4.6.1. RELENG_4_6_0_RELEASE FreeBSD 4.6. RELENG_4_5_0_RELEASE FreeBSD 4.5. RELENG_4_4_0_RELEASE FreeBSD 4.4. RELENG_4_3_0_RELEASE FreeBSD 4.3. RELENG_4_2_0_RELEASE FreeBSD 4.2. RELENG_4_1_1_RELEASE FreeBSD 4.1.1. RELENG_4_1_0_RELEASE FreeBSD 4.1. RELENG_4_0_0_RELEASE FreeBSD 4.0. RELENG_3_5_0_RELEASE FreeBSD-3.5. RELENG_3_4_0_RELEASE FreeBSD-3.4. RELENG_3_3_0_RELEASE FreeBSD-3.3. RELENG_3_2_0_RELEASE FreeBSD-3.2. RELENG_3_1_0_RELEASE FreeBSD-3.1. RELENG_3_0_0_RELEASE FreeBSD-3.0. RELENG_2_2_8_RELEASE FreeBSD-2.2.8. RELENG_2_2_7_RELEASE FreeBSD-2.2.7. RELENG_2_2_6_RELEASE FreeBSD-2.2.6. RELENG_2_2_5_RELEASE FreeBSD-2.2.5. RELENG_2_2_2_RELEASE FreeBSD-2.2.2. RELENG_2_2_1_RELEASE FreeBSD-2.2.1. RELENG_2_2_0_RELEASE FreeBSD-2.2.0. AFS Server Die folgende Aufzählung enthält AFS Server für FreeBSD: Schweden Die Dateien sind unter dem Pfad /afs/stacken.kth.se/ftp/pub/FreeBSD/ erreichbar. stacken.kth.se # Stacken Computer Club, KTH, Sweden 130.237.234.43 #hot.stacken.kth.se 130.237.237.230 #fishburger.stacken.kth.se 130.237.234.3 #milko.stacken.kth.se Betreuer ftp@stacken.kth.se rsync Server rsync wird ähnlich wie rcp verwendet, besitzt aber mehr Optionen und verwendet das rsync remote-update Protokoll, das nur geänderte Dateien überträgt und damit viel schneller als ein normaler Kopiervorgang ist. rsync ist sehr nützlich, wenn Sie einen FreeBSD FTP-Spiegel oder einen CVS-Spiegel betreiben. Das Programm ist für viele Betriebssysteme erhältlich, mit FreeBSD können Sie den Port net/rsync oder das fertige Paket benutzen. Die folgenden Server stellen FreeBSD über das rsync Protokoll zur Verfügung: Deutschland rsync://grappa.unix-ag.uni-kl.de/ Verfügbare Sammlungen: freebsd-cvs: Das vollständige CVS-Repository von &os;. Neben anderen Repositories spiegelt diese Maschine auch die Repositories der NetBSD- und OpenBSD-Projekte. Niederlande rsync://ftp.nl.FreeBSD.org/ Verfügbare Sammlungen: vol/3/freebsd-core: Kompletter Spiegel des FreeBSD FTP Servers. Tschechische Republik rsync://ftp.cz.FreeBSD.org/ Verfügbare Sammlungen: ftp: Unvollständiger Spiegel des FreeBSD FTP Servers. FreeBSD: Vollständiger Spiegel des FreeBSD FTP Servers. USA rsync://ftp-master.FreeBSD.org/ Dieser Server darf nur von primären Spiegeln benutzt werden. Verfügbare Sammlungen: FreeBSD: Das Hauptarchiv des FreeBSD FTP Servers. acl: Die primäre ACL-Liste. rsync://ftp13.FreeBSD.org/ Verfügbare Sammlungen: FreeBSD: Kompletter Spiegel des FreeBSD FTP Servers.
diff --git a/de_DE.ISO8859-1/books/handbook/pgpkeys/chapter.sgml b/de_DE.ISO8859-1/books/handbook/pgpkeys/chapter.sgml index fc3d70212d..c59d557f88 100644 --- a/de_DE.ISO8859-1/books/handbook/pgpkeys/chapter.sgml +++ b/de_DE.ISO8859-1/books/handbook/pgpkeys/chapter.sgml @@ -1,599 +1,623 @@ PGP Schlüssel PGP Schlüssel Verwenden Sie die nachstehenden Schlüssel, wenn Sie eine Signatur überprüfen oder eine verschlüsselte E-Mail an einen Ansprechpartner oder einen Entwickler schicken wollen. Den vollständigen Schlüsselring der Benutzer von FreeBSD.org finden Sie unter http://www.FreeBSD.org/doc/pgpkeyring.txt. Ansprechpartner - + &a.security-officer; &pgpkey.security-officer; - + &a.core-secretary; &pgpkey.core-secretary; - Mitglieder des Core Teams - + &a.imp; &pgpkey.imp; - + &a.kuriyama; &pgpkey.kuriyama; - + &a.murray; &pgpkey.murray; - + &a.peter; &pgpkey.peter; - + &a.wes; &pgpkey.wes; Entwickler - + &a.will; &pgpkey.will; - + &a.asami; &pgpkey.asami; - + + &a.dougb; + &pgpkey.dougb; + + + &a.tobez; &pgpkey.tobez; - + &a.mbr; &pgpkey.mbr; - + + &a.harti; + &pgpkey.harti; + + + &a.obraun; &pgpkey.obraun; - + &a.jmb; &pgpkey.jmb; - + &a.brueffer; &pgpkey.brueffer; - + &a.wilko; &pgpkey.wilko; - + &a.jon; &pgpkey.jon; - + &a.luoqi; &pgpkey.luoqi; - + &a.ache; &pgpkey.ache; - + &a.seanc; &pgpkey.seanc; - + &a.cjh; &pgpkey.cjh; - + &a.cjc; &pgpkey.cjc; - + &a.nik; &pgpkey.nik; - + &a.ceri; &pgpkey.ceri; - + &a.brooks; &pgpkey.brooks; - + &a.bsd; &pgpkey.bsd; - + &a.dd; &pgpkey.dd; - + &a.ue; &pgpkey.ue; - + &a.ru; &pgpkey.ru; - + &a.jedgar; &pgpkey.jedgar; - + &a.green; &pgpkey.green; - + &a.lioux; &pgpkey.lioux; - + &a.fanf; &pgpkey.fanf; - + &a.blackend; &pgpkey.blackend; - + &a.petef; &pgpkey.petef; - + &a.billf; &pgpkey.billf; - + &a.patrick; &pgpkey.patrick; - + &a.gioria; &pgpkey.gioria; - + &a.jmg; &pgpkey.jmg; - + &a.dannyboy; &pgpkey.dannyboy; - + &a.jhay; &pgpkey.jhay; - + &a.sheldonh; &pgpkey.sheldonh; - + &a.mikeh; &pgpkey.mikeh; - + &a.ghelmer; &pgpkey.ghelmer; - + &a.mux; &pgpkey.mux; - + &a.jkh; &pgpkey.jkh; - + &a.trevor; &pgpkey.trevor; - + &a.phk; &pgpkey.phk; - + &a.joe; &pgpkey.joe; - + &a.kris; &pgpkey.kris; - + &a.keramida; &pgpkey.keramida; - + &a.fjoe; &pgpkey.fjoe; - + &a.andreas; &pgpkey.andreas; - + &a.jkoshy; &pgpkey.jkoshy; - + + &a.rushani; + &pgpkey.rushani; + + + &a.alex; &pgpkey.alex; - + &a.leeym; &pgpkey.leeym; - + &a.netchild; &pgpkey.netchild; - + &a.ijliao; &pgpkey.ijliao; - + &a.clive; &pgpkey.clive; - + &a.arved; &pgpkey.arved; - + &a.bmah; &pgpkey.bmah; - + &a.mtm; &pgpkey.mtm; - + &a.dwmalone; &pgpkey.dwmalone; - + &a.matusita; &pgpkey.matusita; - + &a.ken; &pgpkey.ken; - + &a.dinoex; &pgpkey.dinoex; - + &a.sanpei; &pgpkey.sanpei; - + &a.jim; &pgpkey.jim; - + &a.marcel; &pgpkey.marcel; - + &a.tmm; &pgpkey.tmm; - + &a.rich; &pgpkey.rich; - + &a.knu; &pgpkey.knu; - + &a.max; &pgpkey.max; - + &a.yoichi; &pgpkey.yoichi; - + &a.anders; &pgpkey.anders; - + &a.obrien; &pgpkey.obrien; - + &a.mp; &pgpkey.mp; - + &a.roam; &pgpkey.roam; - + &a.pirzyk; &pgpkey.pirzyk; - + &a.jdp; &pgpkey.jdp; - + &a.markp; &pgpkey.markp; - + &a.thomas; &pgpkey.thomas; - + &a.dfr; &pgpkey.dfr; - + &a.trhodes; &pgpkey.trhodes; - + &a.benno; &pgpkey.benno; - + &a.roberto; &pgpkey.roberto; - + &a.guido; &pgpkey.guido; - + &a.hrs; &pgpkey.hrs; - + &a.wosch; &pgpkey.wosch; - + &a.schweikh; &pgpkey.schweikh; - + &a.gshapiro; &pgpkey.gshapiro; - + &a.vanilla; &pgpkey.vanilla; - + &a.cshumway; &pgpkey.cshumway; - + &a.demon; &pgpkey.demon; - + &a.jesper; &pgpkey.jesper; - + &a.scop; &pgpkey.scop; - + &a.ben; &pgpkey.ben; - + &a.des; &pgpkey.des; - + &a.sobomax; &pgpkey.sobomax; - + &a.dcs; &pgpkey.dcs; - + &a.brian; &pgpkey.brian; - + &a.nsouch; &pgpkey.nsouch; - + &a.gsutter; &pgpkey.gsutter; - + &a.nyan; &pgpkey.nyan; - + &a.mi; &pgpkey.mi; - + &a.gordon; &pgpkey.gordon; - + &a.nectar; &pgpkey.nectar; - + &a.adamw; &pgpkey.adamw; - + &a.nate; &pgpkey.nate; - + &a.wollman; &pgpkey.wollman; - + &a.joerg; &pgpkey.joerg; - + &a.phantom; &pgpkey.phantom; + + + &a.scottl; + &pgpkey.scottl; + + + + &a.foxfair; + &pgpkey.foxfair; + diff --git a/de_DE.ISO8859-1/books/handbook/ports/chapter.sgml b/de_DE.ISO8859-1/books/handbook/ports/chapter.sgml index 47b3933fad..c54ef61e69 100644 --- a/de_DE.ISO8859-1/books/handbook/ports/chapter.sgml +++ b/de_DE.ISO8859-1/books/handbook/ports/chapter.sgml @@ -1,1650 +1,1650 @@ Uwe Pierau Übersetzt von Installieren von Anwendungen: Pakete und Ports Übersicht Ports Pakete FreeBSD enthält sehr viele Systemwerkzeuge, die Teil des Basissystems sind. Allerdings sind Sie früher oder später auf Software Dritter angewiesen, damit Sie bestimmte Arbeiten durchführen können. Um diese Software zu installieren, stellt FreeBSD zwei, sich ergänzende, Methoden zur Verfügung: Die Ports-Sammlung und binäre Softwarepakete. Sie können beide Methoden benutzen, um Ihre Lieblingsanwendungen von lokalen Medien oder über das Netzwerk zu installieren. Nachdem Sie dieses Kapitel durchgearbeitet haben, werden Sie wissen wie Sie binäre Softwarepakete installieren, wie Sie Software Dritter mit der Ports-Sammlung bauen und wie Sie zuvor installierte Pakete oder Ports von einem System entfernen. Installation von Software Wenn Sie schon einmal ein &unix; System benutzt haben, werden Sie wissen, dass zusätzliche Software meist wie folgt installiert wird: Download der Software, die als Quelltext oder im Binärformat vorliegen kann. Auspacken der Software, die typischerweise ein mit &man.compress.1; oder &man.gzip.1; komprimiertes Tar-Archiv enthält. Durchsuchen der Dokumentation, die sich meist in Dateien wie INSTALL, README oder mehreren Dateien im Verzeichnis doc/ befindet, nach Anweisungen, wie die Software zu installieren ist. Kompilieren der Software wenn sie als Quelltext vorliegt. Dazu müssen Sie vielleicht das Makefile anpassen, oder configure laufen lassen, oder andere Arbeiten durchführen. Testen und installieren der Software. Das beschreibt aber nur den optimalen Fall. Wenn Sie Software installieren, die nicht speziell für FreeBSD geschrieben wurde, müssen Sie vielleicht sogar den Quelltext anpassen, damit die Software funktioniert. Wenn Sie unbedingt wollen, können Sie mit FreeBSD Software nach der althergebrachten Methode installieren. Mit Paketen oder Ports bietet Ihnen FreeBSD allerdings zwei Methoden an, die Ihnen sehr viel Zeit sparen können. Zurzeit werden über &os.numports; Anwendungen Dritter über diese Methoden zur Verfügung gestellt. Das FreeBSD Paket einer Anwendung besteht aus einer einzigen Datei, die Sie sich herunterladen müssen. Das Paket enthält schon übersetzte Kommandos der Anwendung, sowie zusätzliche Konfigurationsdateien oder Dokumentation. Zur Handhabung der Pakete stellt FreeBSD Kommandos wie &man.pkg.add.1;, &man.pkg.delete.1; oder &man.pkg.info.1; zur Verfügung. Mit diesem System können neue Anwendungen mit einem Kommando, pkg_add, installiert werden. Der FreeBSD Port einer Anwendung ist eine Sammlung von Dateien, die das Kompilieren der Quelltexte einer Anwendung automatisieren. Die Dateien eines Ports führen für Sie alle oben aufgeführten Schritte zum Installieren einer Anwendung durch. Mit einigen wenigen Kommandos wird der Quellcode der Anwendung automatisch heruntergeladen, ausgepackt, gepatcht, übersetzt und installiert. Tatsächlich kann das Portsystem auch dazu benutzt werden, Pakete zu generieren, die Sie mit den gleich beschriebenen Kommandos, wie pkg_add, manipulieren können. Pakete und Ports beachten Abhängigkeiten zwischen Anwendungen. Angenommen, Sie wollen eine Anwendung installieren, die von einer Bibliothek abhängt und die Anwendung wie die Bibliothek sind als Paket oder Port für FreeBSD verfügbar. Wenn Sie pkg_add oder das Portsystem benutzen, um die Anwendung zu installieren, werden Sie bemerken, dass die Bibliothek zuerst installiert wird, wenn sie nicht schon vorher installiert war. Sie werden sich fragen, warum FreeBSD Pakete und Ports unterstützt, wo doch beide Methoden fast gleiches leisten. Beide Methoden haben ihre Stärken und welche Sie einsetzen, hängt letztlich von Ihren Vorlieben ab. Vorteile von Paketen Das komprimierte Paket einer Anwendung ist normalerweise kleiner als das komprimierte Archiv der Quelltexte. Pakete müssen nicht mehr kompiliert werden. Dies ist ein Vorteil, wenn Sie große Pakete, wie Mozilla, KDE oder GNOME auf langsamen Maschinen installieren. Wenn Sie Pakete verwenden, brauchen Sie nicht zu verstehen, wie Sie Software unter FreeBSD kompilieren. Vorteile von Ports Da die Pakete auf möglichst vielen System laufen sollen, werden Optionen beim Übersetzen zurückhaltend gesetzt. Wenn Sie eine Anwendung über die Ports installieren, können Sie die Angabe der Optionen optimieren. Zum Beispiel können Sie spezifischen Code für Pentium III oder Athlon Prozessoren erzeugen. Die Eigenschaften einiger Anwendungen werden über Optionen zum Zeitpunkt des Übersetzens festgelegt. Apache kann zum Beispiel über viele eingebaute Optionen konfiguriert werden. Wenn Sie das Portsystem benutzen, können Sie die Vorgaben für die Optionen überschreiben. Für einige Fälle existieren verschiedene Pakete einer Anwendung, die beim Übersetzen unterschiedlich konfiguriert wurden. Für Ghostscript gibt es ein ghostscript-Paket und ein ghostscript-nox11-Paket, die sich durch die X11 Unterstützung unterscheiden. Diese grobe Unterscheidung ist mit dem Paketsystem möglich, wird aber schnell unhandlich, wenn eine Anwendung mehr als ein oder zwei Optionen zum Zeitpunkt des Übersetzens besitzt. Die Lizenzbestimmungen mancher Software verbietet ein Verbreiten in binärer Form. Diese Software muss als Quelltext ausgeliefert werden. Einige Leute trauen binären Distributionen nicht. Wenn Sie den Quelltext besitzen, können Sie sich diesen (zumindest theoretisch) durchlesen und nach möglichen Problemen durchsuchen. Wenn Sie eigene Anpassungen besitzen, benötigen Sie den Quelltext, um diese anzuwenden. Manch einer besitzt gerne den Quelltext, um ihn zu lesen, wenn es einmal langweilig ist, ihn zu hacken, oder sich einfach ein paar Sachen abzugucken (natürlich nur, wenn es die Lizenzbestimmungen erlauben). Wenn Sie über aktualisierte Ports informiert sein wollen, lesen Sie bitte die Mailinglisten &a.ports; und &a.ports-bugs;. Der Rest dieses Kapitels beschreibt, wie Sie Software Dritter mit Paketen oder Ports auf einem FreeBSD System installieren und verwalten. Suchen einer Anwendung Bevor Sie eine Anwendung installieren, müssen Sie deren Art und Namen kennen. Die Anzahl der nach FreeBSD portierten Anwendungen steigt ständig. Zum Glück gibt es einige Wege, die richtige zu finden. Eine aktuelle Liste verfügbarer Anwendungen, die sich auch durchsuchen lässt, finden Sie unter http://www.FreeBSD.org/ports/. Die Anwendungen sind in Kategorien unterteilt und Sie können sich alle Anwendungen einer Kategorie anzeigen lassen. Wenn Sie den Namen der Anwendung kennen, können Sie natürlich auch direkt nach dem Namen suchen. FreshPorts FreshPorts, das von Dan Langille gepflegt wird, erreichen Sie unter http://www.FreshPorts.org/. FreshPorts verfolgt Änderungen an Anwendungen aus den Ports. Mit FreshPorts können Sie ein oder mehrere Ports beobachten und sich eine E-Mail schicken lassen, wenn ein Port aktualisiert wird. FreshMeat Wenn Sie den Namen einer Anwendung nicht kennen, versuchen Sie eine Webseite wie FreshMeat (http://www.freshmeat.net/), um eine passende Anwendung zu finden. Schauen Sie dann auf der FreeBSD Webseite nach, ob die Anwendung schon portiert wurde. Chern Lee Beigesteuert von Benutzen des Paketsystems Installieren eines Pakets Pakete installieren pkg_add Mit &man.pkg.add.1; können Sie ein FreeBSD Paket von einer lokalen Datei oder über das Netzwerk installieren. Download vor Installation eines Pakets &prompt.root; ftp -a ftp2.FreeBSD.org Connected to ftp2.FreeBSD.org. 220 ftp2.FreeBSD.org FTP server (Version 6.00LS) ready. 331 Guest login ok, send your email address as password. 230- 230- This machine is in Vienna, VA, USA, hosted by Verio. 230- Questions? E-mail freebsd@vienna.verio.net. 230- 230- 230 Guest login ok, access restrictions apply. Remote system type is UNIX. Using binary mode to transfer files. ftp> cd /pub/FreeBSD/ports/packages/sysutils/ 250 CWD command successful. ftp> get lsof-4.56.4.tgz local: lsof-4.56.4.tgz remote: lsof-4.56.4.tgz 200 PORT command successful. 150 Opening BINARY mode data connection for 'lsof-4.56.4.tgz' (92375 bytes). 100% |**************************************************| 92375 00:00 ETA 226 Transfer complete. 92375 bytes received in 5.60 seconds (16.11 KB/s) ftp> exit &prompt.root; pkg_add lsof-4.56.4.tgz Wenn Sie die Pakete nicht lokal vorliegen haben (zum Beispiel auf den FreeBSD CD-ROMs), ist es wahrscheinlich einfacher den Schalter von &man.pkg.add.1; zu verwenden. Das Werkzeug bestimmt dann automatisch das nötige Objektformat und die richtige Version des Pakets, lädt dieses dann von einem FTP-Server und installiert das Paket. pkg_add &prompt.root; pkg_add -r lsof Das obige Beispiel würde ohne weitere Interaktion das richtige Paket herunterladen und installieren. Die Dateien werden mit &man.fetch.3;, das Umgebungsvariablen wie FTP_PASSIVE_MODE, FTP_PROXY und FTP_PASSWORD berücksichtigt, heruntergeladen. Wenn Sie durch eine Firewall geschützt werden, müssen Sie vielleicht eine oder mehrere dieser Umgebungsvariablen setzen oder einen FTP oder HTTP Proxy verwenden. Eine Liste der unterstützten Umgebungsvariablen finden Sie in &man.fetch.3;. Beachten Sie, dass im obigen Beispiel lsof anstelle von lsof-4.56.4 verwendet wird. Wenn Sie &man.pkg.add.1; zum Herunterladen eines Pakets verwenden, darf die Versionsnummer des Pakets nicht angegeben werden, da automatisch die neuste Version der Anwendung geholt wird. Pakete werden im .tgz Format ausgeliefert. Sie finden Sie unter ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/packages/ oder auf der FreeBSD CD-ROM Distribution. Jede CD der FreeBSD Distribution (oder des PowerPaks) enthält Pakete im Verzeichnis /packages. Die Struktur des Paketbaums entspricht dem /usr/ports Baum. Jede Kategorie besitzt ein eigenes Verzeichnis und alle Pakete befinden sich im Verzeichnis All. Die Verzeichnisstruktur des Paketbaums ist ein Abbild der Ports, da beide Systeme eng zusammenarbeiten. Verwalten von Paketen Pakete verwalten &man.pkg.info.1; zeigt alle installierten Pakete und deren Beschreibung an. pkg_info &prompt.root; pkg_info cvsup-16.1 A general network file distribution system optimized for CV docbook-1.2 Meta-port for the different versions of the DocBook DTD ... &man.pkg.version.1; vergleicht die Version installierter Pakete mit der Version aus der Ports-Sammlung. pkg_version &prompt.root; pkg_version cvsup = docbook = ... Die Symbole in der zweiten Spalte zeigen das Alter des Pakets im Vergleich zu der lokalen Version aus der Ports-Sammlung an. Symbol Bedeutung = Die Version des installierten Paketes stimmt mit der Version aus der lokalen Ports-Sammlung überein. < Die installierte Version ist älter als die der verfügbaren Version aus der Ports-Sammlung. > Die installierte Version ist neuer als die aus der Ports-Sammlung (Eventuell ist die lokale Ports-Sammlung veraltet). ? Das installierte Paket konnte in der Ports-Sammlung nicht gefunden werden. * In der Ports-Sammlung befinden sich mehrere Versionen der Anwendung. Entfernen eines Pakets pkg_delete Pakete entfernen Um ein zuvor installiertes Paket zu entfernen, benutzen Sie das Werkzeug &man.pkg.delete.1;. &prompt.root; pkg_delete xchat-1.7.1 Verschiedenes Informationen über alle installierte Pakete werden in /var/db/pkg abgelegt. Das Verzeichnis enthält Dateien, in denen sich die Beschreibungen der Pakete und Listen von Dateien, die zu einem Paket gehören, befinden. Benutzen der Ports-Sammlung Die folgenden Abschnitte stellen die grundlegenden Anweisungen vor, um Anwendungen aus der Ports-Sammlung auf Ihren Rechner zu installieren oder zu löschen. Installation der Ports-Sammlung Bevor Sie einen Port installieren können, müssen Sie zuerst die Ports-Sammlung installieren, die aus Makefiles, Patches und Beschreibungen besteht. Die Ports-Sammlung wird für gewöhnlich unter /usr/ports installiert. Bei der FreeBSD Installation hatten Sie in Sysinstall die Möglichkeit, die Ports-Sammlung zu installieren. Wenn Sie die Sammlung damals nicht installiert haben, können Sie das mit den folgenden Anweisungen nachholen: Installieren mit <application>Sysinstall</application> Sie können die Ports-Sammlung nachträglich mit sysinstall installieren. Führen Sie als root /stand/sysinstall aus: &prompt.root; /stand/sysinstall Wählen Sie den Punkt Configure aus und drücken Sie Enter. Wählen Sie dann Distributions aus und drücken Sie Enter. In diesem Menü wählen Sie ports aus und drücken die Leertaste. Danach wählen Sie Exit aus und drücken Enter. Legen Sie nun ein geeignetes Installationsmedium, wie CD-ROM oder FTP, fest. Wählen Sie nun Exit aus und drücken Enter. Verlassen Sie sysinstall mit X. Alternativ können Sie die Ports-Sammlung auch mit CVSup installieren und aktualisieren. Ein Beispiel für die Konfiguration von CVSup finden Sie in /usr/share/examples/cvsup/ports-supfile. Weitere Informationen über CVSup und dessen Konfiguration finden Sie in Benutzen von CVSup (). Installieren mit <application>CVSup</application> Dies ist eine schnelle Methode um die Ports-Sammlung zu aktualisieren. Installieren Sie den net/cvsup Port. Weitere Informationen finden Sie in Installation von CVSup (). Kopieren Sie als root /usr/share/examples/cvsup/ports-supfile an einen neuen Ort, beispielsweise nach /root oder in Ihr Heimatverzeichnis. Editieren Sie die Kopie von ports-supfile. Ersetzen Sie CHANGE_THIS.FreeBSD.org durch einen CVSup-Server in Ihrer Nähe. Eine vollständige Liste der CVSup-Spiegel finden Sie in CVSup Spiegel (). Führen Sie cvsup aus: &prompt.root; cvsup -g -L 2 /root/ports-supfile Mit diesem Kommando können Sie später die Ports-Sammlung aktualisieren. Die installierten Ports werden mit diesem Kommando nicht aktualisiert. Ports installieren Ports installieren Was ist mit einem Gerüst im Zusammenhang mit der Ports-Sammlung gemeint? In aller Kürze: ein Gerüst eines Ports ist ein minimaler Satz von Dateien, mit denen das FreeBSD System eine Anwendung sauber übersetzen und installieren kann. Ein jeder Port beinhaltet: Eine Datei Makefile. Das Makefile enthält verschiedene Anweisungen, die spezifizieren, wie eine Anwendung kompiliert wird und wo sie auf Ihrem System installiert werden sollte. Eine Datei distinfo. Diese enthält Informationen, welche Dateien heruntergeladen werden müssen, sowie Prüfsummen, um sicher zu gehen, dass diese Dateien während des Herunterladens nicht beschädigt wurden. Ein files Verzeichnis. Hierin liegen Patches, welche das Übersetzen und Installieren der Anwendung ermöglichen. Patches sind im Wesentlichen kleine Dateien, die Änderungen an speziellen Dateien spezifizieren. Sie liegen als reiner Text vor und sagen ungefähr: Lösche Zeile 10 oder Ändere Zeile 26 zu .... Patches sind auch bekannt unter dem Namen diffs, weil Sie mit dem Programm &man.diff.1; erstellt werden. Dieses Verzeichnis kann auch noch andere Dateien enthalten, welche zum Bauen des Ports benutzt werden. Eine Datei pkg-comment. Eine einzeilige Beschreibung der Anwendung. Eine Datei pkg-descr. Eine ausführlichere, oft mehrzeilige Beschreibung der Anwendung. Eine Datei pkg-plist. Das ist eine Liste aller Dateien, die durch diesen Port installiert werden. Außerdem sind hier Informationen enthalten, die zum Entfernen des Ports benötigt werden. Einige Ports besitzen noch andere Dateien, wie pkg-message, die vom Portsystem benutzt werden, um spezielle Situationen zu handhaben. Wenn Sie mehr über diese Dateien oder das Port-System erfahren sollen, lesen Sie bitte im FreeBSD FreeBSD Porter's Handbook weiter. Nun haben Sie genug Hintergrund Informationen über die Ports-Sammlung und Sie können Ihren ersten Port installieren. Es gibt dazu zwei Möglichkeiten, die im Folgenden erläutert werden. Bevor Sie damit beginnen, müssen Sie sich natürlich einen Port zum Installieren aussuchen. Sie können dazu mehrere Wege gehen, als einfachste Methode gibt es die Liste aller Ports auf dem FreeBSD Web-Server. Sie können dort suchen oder in der Liste schmökern. Jeder Port enthält außerdem eine Beschreibung, so dass Sie sich vor der Entscheidung, welchen Port Sie installieren wollen, über den Port informieren können. Sie können einen Port auch mit &man.whereis.1; suchen. Geben Sie einfach whereis Datei ein, wobei Datei der Name des Programms ist, das Sie suchen: &prompt.root; whereis lsof lsof: /usr/ports/sysutils/lsof Damit haben wir herausgefunden, dass sich lsof, ein Systemwerkzeug, in /usr/ports/sysutils/lsof befindet. Ein weiterer Weg, einen bestimmten Port zu finden, ist es, die eingebaute Suchfunktion der Ports-Sammlung zu benutzen. Dazu müssen Sie im Verzeichnis /usr/ports sein. Darin geben Sie make search name=Anwendungsname ein, worin Anwendungsname der Name der von Ihnen gesuchten Anwendung ist. Wenn Sie zum Beispiel nach lsof suchen: &prompt.root; cd /usr/ports &prompt.root; make search name=lsof Port: lsof-4.56.4 Path: /usr/ports/sysutils/lsof Info: Lists information about open files (similar to fstat(1)) Maint: obrien@FreeBSD.org Index: sysutils B-deps: R-deps: Der Teil der Ausgabe der Sie interessiert ist die Zeile, die mit Path: beginnt, weil sie Ihnen sagt, wo der Port zu finden ist. Die anderen Informationen werden zum Installieren des Ports nicht direkt benötigt, Sie brauchen sich darum jetzt nicht weiter zu kümmern. Mit make search key=Text können Sie erweiterte Suchen durchführen. Damit werden Portnamen, Kommentare, Beschreibungen und Abhängigkeiten nach Text durchsucht. Dies kann sehr nützlich sein, wenn Sie den Namen des Programms, nach dem Sie suchen, nicht kennen. In beiden Fällen wird Groß- und Kleinschreibung bei der Suche ignoriert. Die Suche nach LSOF wird dieselben Ergebnisse wie die Suche nach lsof liefern. Zum Installieren von Ports müssen Sie als Benutzer root angemeldet sein. Jetzt, wo Sie den gewünschten Port gefunden haben, kann es mit der eigentlichen Installation losgehen. Der Port enthält Anweisungen, wie der Quelltext zu bauen ist, enthält aber nicht den Quelltext selbst. Den Quelltext erhalten Sie von einer CD-ROM oder aus dem Internet. Quelltexte werden in einem Format nach Wahl des jeweiligen Software-Autors ausgeliefert. Häufig ist dies ein gezipptes Tar-Archiv, aber es kann auch mit einem anderen Tool komprimiert oder gar nicht komprimiert sein. Der Quelltext, in welcher Form er auch immer vorliegen mag, wird Distfile genannt. Installation von einer CD-ROM Ports Installation von einer CD-ROM Die offiziellen FreeBSD CD-ROMs enthalten keine Distfiles mehr, da diese sehr viel Platz beanspruchen, der besser von vorkompilierten Paketen genutzt werden kann. Andere FreeBSD CD-ROMs, wie der FreeBSD PowerPak, enthalten Distfiles. Diese CD-ROMs können Sie über einen Händler wie FreeBSD Mall beziehen. Dieser Abschnitt geht davon aus, dass Sie eine solche CD-ROM Distribution besitzen. &prompt.root; cd /usr/ports/sysutils/lsof Im Verzeichnis lsof kann man das Gerüst erkennen. Der nächste Schritt ist das Übersetzen (auch Bauen genannt) des Ports. Dies wird durch Eingabe von make getan. Haben Sie das eingegeben, so werden Sie etwas lesen wie: &prompt.root; make >> lsof_4.57D.freebsd.tar.gz doesn't seem to exist in /usr/ports/distfiles/. >> Attempting to fetch from file:/cdrom/ports/distfiles/. ===> Extracting for lsof-4.57 ... [Ausgabe des Auspackens weggelassen] ... >> Checksum OK for lsof_4.57D.freebsd.tar.gz. ===> Patching for lsof-4.57 ===> Applying FreeBSD patches for lsof-4.57 ===> Configuring for lsof-4.57 ... [configure-Ausgabe weggelassen] ... ===> Building for lsof-4.57 ... [Ausgabe der Übersetzung weggelassen] ... &prompt.root; Ist die Übersetzungsprozedur beendet, sind Sie wieder in der Kommandozeile und der nächste Schritt ist die Installation. Erweitern Sie dazu einfach die make-Kommandozeile um das Wort install: &prompt.root; make install ===> Installing for lsof-4.57 ... [Ausgabe der Installation weggelassen] ... ===> Generating temporary packing list ===> Compressing manual pages for lsof-4.57 ===> Registering installation for lsof-4.57 ===> SECURITY NOTE: This port has installed the following binaries which execute with increased privileges. &prompt.root; Wenn Sie wieder den Prompt haben, sollten Sie in der Lage sein, die gerade installierte Anwendung laufen zu lassen. Da lsof eine Anwendung ist, die mit erhöhten Rechten läuft, wird eine Sicherheitswarnung angezeigt. Sie sollten alle Warnungen während des Baus und der Installation eines Ports beachten. Sie können einen Schritt sparen, wenn Sie gleich make install anstelle von make und dem anschließenden make install eingeben. Um die Suche nach Kommandos zu beschleunigen, speichern einige Shells eine Liste der verfügbaren Kommandos in den durch die Umgebungsvariable PATH gegebenen Verzeichnissen. Nach der Installation eines Ports müssen Sie in einer solchen Shell vielleicht das Kommando rehash absetzen, um die neu installierten Kommandos benutzen zu können. Dies betrifft sowohl die beiden Shells des Basissystems, wie die tcsh, und Shells aus den Ports, zum Beispiel die shells/zsh. Beachten Sie bitte, dass die Lizenzen einiger Ports die Einbeziehung auf der CD-ROM verbieten. Das kann verschiedene Gründe haben. Beispielsweise eine Registrierung vor dem Herunterladen erforderlich oder die Weiterverteilung ist verboten. Wenn Sie einen Port installieren wollen, der nicht auf der CD-ROM enthalten ist, müssen Sie Online sein. Folgen Sie bitte den Anweisungen des nächsten Abschnitts. Ports vom Internet installieren Dieser Abschnitt setzt voraus, dass Sie eine Verbindung mit dem Internet haben. Haben Sie dies nicht, müssen Sie eine CD-ROM Installation durchführen oder das Distfile selber nach /usr/ports/distfiles stellen. Das Installieren eines Ports vom Internet wird genauso durchgeführt wie das Installieren von CD-ROM. Der einzige Unterschied zwischen beiden ist, dass das Distfile des Ports vom Internet heruntergeladen und nicht von der CD-ROM gelesen wird. Die durchgeführten Schritte sind identisch: &prompt.root; make install >> lsof_4.57D.freebsd.tar.gz doesn't seem to exist in /usr/ports/distfiles/. >> Attempting to fetch from ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/distfiles/. Receiving lsof_4.57D.freebsd.tar.gz (439860 bytes): 100% 439860 bytes transferred in 18.0 seconds (23.90 kBps) ===> Extracting for lsof-4.57 ... [Ausgabe des Auspackens weggelassen] ... >> Checksum OK for lsof_4.57D.freebsd.tar.gz. ===> Patching for lsof-4.57 ===> Applying FreeBSD patches for lsof-4.57 ===> Configuring for lsof-4.57 ... [configure-Ausgabe weggelassen] ... ===> Building for lsof-4.57 ... [Ausgabe der Übersetzung weggelassen] ... ===> Installing for lsof-4.57 ... [Ausgabe der Installation weggelassen] ... ===> Generating temporary packing list ===> Compressing manual pages for lsof-4.57 ===> Registering installation for lsof-4.57 ===> SECURITY NOTE: This port has installed the following binaries which execute with increased privileges. &prompt.root; Wie Sie sehen können, besteht der einzige Unterschied in der Zeile, die Ihnen sagt, woher das System den Quellcode holt. Die Ports-Sammlung benutzt zum Herunterladen von Dateien &man.fetch.3;, das Umgebungsvariablen wie FTP_PASSIVE_MODE, FTP_PROXY und FTP_PASSWORD berücksichtigt. Wenn Sie durch eine Firewall geschützt werden, müssen Sie vielleicht eine oder mehrere dieser Umgebungsvariablen setzen, oder einen FTP oder HTTP Proxy verwenden. Eine Liste der unterstützten Umgebungsvariablen finden Sie in &man.fetch.3;. Entfernen installierter Ports Ports entfernen Da Sie nun wissen, wie man einen Port installiert, wollen Sie sicher auch wissen, wie man einen Port entfernt, für den Fall, dass Sie versehentlich einen falschen installiert haben. Nun wollen wir mal unser vorheriges Beispiel wieder löschen (für alle die nicht aufgepasst haben, das war lsof). Wie beim Installieren wechseln Sie zuerst in das Verzeichnis des Ports /usr/ports/sysutils/lsof. Nachdem Sie das Verzeichnis gewechselt haben, können Sie lsof mit make deinstall entfernen: &prompt.root; cd /usr/ports/sysutils/lsof &prompt.root; make deinstall ===> Deinstalling for lsof-4.57 Das war leicht, Sie haben lsof von Ihrem System entfernt. Möchten Sie den Port doch wieder neu installieren, geben Sie make reinstall im Verzeichnis /usr/ports/sysutils/lsof ein. make deinstall und make reinstall funktionieren nicht mehr, wenn Sie einmal make clean ausgeführt haben. Wenn Sie dennoch einen Port nach einem make clean entfernen möchten, benutzen Sie &man.pkg.delete.1; wie im Abschnitt Benutzen des Paketsystems beschrieben. Nach der Installation Nach der Installation einer neuen Anwendung wollen Sie wahrscheinlich die mitgelieferte Dokumentation lesen und die Konfigurationsdateien der Anwendung anpassen. Wenn die Anwendung ein Dæmon ist, sollten Sie sicherstellen, dass die Anwendung beim Booten startet. Die einzelnen Schritte sind natürlich von Anwendung zu Anwendung verschieden. Wenn Sie sich allerdings nach der Installation einer Anwendung die Frage Was nun? stellen, helfen die folgenden Hinweise vielleicht weiter. Finden Sie mit &man.pkg.info.1; heraus, welche Dateien die Anwendung wo installiert hat. Wenn Sie beispielsweise gerade die Version 1.0.0 von FooPackage installiert haben, zeigt Ihnen das folgende Kommando alle installierten Dateien des Pakets: &prompt.root; pkg_info -L foopackage-1.0.0 | less Achten Sie besonders auf die Manualpages, die Sie in man/ Verzeichnissen finden und auf Konfigurationsdateien, die in etc/ abgelegt werden. Manche Pakete enthalten in doc/ zusätzliche Dokumentation. Wenn Sie sich nicht sicher sind, welche Version einer Anwendung Sie gerade installiert haben, können Sie mit dem folgenden Kommando nach der Anwendung suchen: &prompt.root; pkg_info | grep foopackage Das Kommando zeigt alle installierten Pakete, deren Paketname foopackage enthält. Ersetzen Sie foopackage durch den Namen der Anwendung, die Sie suchen. Nachdem Sie die Manualpages der Anwendung gefunden haben, lesen Sie diese bitte mit &man.man.1;. Schauen Sie sich auch die Beispiele für Konfigurationsdateien und die zusätzliche Dokumentation, wenn es welche gibt, an. Wenn es für die Anwendung eine Webseite gibt, suchen Sie dort nach zusätzlicher Dokumentation wie FAQs (häufig gestellte Fragen). Wenn Sie die Adresse der Webseite nicht kennen, versuchen Sie das folgende Kommando: &prompt.root; pkg_info foopackage-1.0.0 Die Ausgabe enthält oft eine Zeile, die mit WWW: beginnt und die URL der Webseite enthält. Fehlersuche und -behebung Der folgende Abschnitt beschreibt einige einfache Fehlerbehebungsmöglichkeiten beim Benutzen der Ports-Sammlung und ein paar Fehlerbehandlungen, falls ein Port kaputt ist. Einige Fragen und Antworten Ich dachte hierbei ging es um Modems??! Ah, Sie müssen an die serielle Schnittstelle auf der Rückseite Ihres Computers gedacht haben (engl. port). Wir benutzen hier Port als Ergebnis des Portierens einer Anwendung von einem Betriebssystem auf ein anderes. Was ist ein Patch? Ein Patch ist eine kleine Datei, die beschreibt, wie man von einer Version einer Datei zu einer anderen kommt. Sie enthält reinen Text und sagt im Prinzip Dinge wie lösche Zeile 23, füge diese zwei Zeilen hinter Zeile 468 an oder ändere Zeile 197 hierzu. Patche werden mit &man.diff.1; erstellt, daher werden die resultierenden Dateien auch diffs genannt. Tarball Worum gehts eigentlich bei diesen Tarballs? Das ist eine Datei mit der Endung .tar oder als Varianten mit .tar.gz, .tar.Z, .tar.bz2, oder auch .tgz. Vereinfacht ist das ein Verzeichnisbaum, welcher in eine einzelne Datei (.tar) archiviert und optional gepackt (.gz) wurde. Diese Technik wurde ursprünglich für Tape ARchives benutzt (daher der Name tar), aber stellt heute einen weit verbreiteten Weg da, im Internet Quellcode zu verbreiten und zu verteilen. Sie können nachsehen, welche Dateien im Archiv enthalten sind oder diese auspacken, indem Sie das Programm &man.tar.1;, das Teil des FreeBSD Basissystems ist, benutzen. Das sähe in etwa so aus: &prompt.user; tar tvzf foobar.tar.gz &prompt.user; tar xzvf foobar.tar.gz &prompt.user; tar tvf foobar.tar &prompt.user; tar xvf foobar.tar Prüfsumme Eine Prüfsumme? Das ist eine Zahl, die dadurch generiert wird, indem man die ganzen Daten einer Datei aufaddiert. Ändert sich ein Zeichen in dieser Datei, ist die Prüfsumme nicht mehr die gleiche und ein einfacher Vergleich ermöglicht das Erkennen des Unterschieds. Ich tat, was ihr zum Übersetzen von Ports von der CD-ROM geschrieben habt und es funktionierte auch prima, bis ich zum Port Kermit kam. &prompt.root; make install >> cku190.tar.gz doesn't seem to exist on this system. >> Attempting to fetch from ftp://kermit.columbia.edu/kermit/archives/. Warum kann die Datei nicht gefunden werden? Habe ich eine kaputte CD-ROM? Wie im Abschnitt Installation von CD-ROM erläutert, dürfen einige Ports wegen Lizenz-Beschränkungen nicht auf CD-ROM veröffentlicht werden. Kermit ist ein solches Beispiel. Die Lizenz-Bestimmungen verbieten uns das Brennen des Tarballs auf CD-ROM, leider müssen Sie es sich von Hand aus dem Netz - herunterladen — sorry! + herunterladen – sorry! Der Grund für die ganzen Fehlermeldungen liegt darin, dass Sie zu diesem Zeitpunkt nicht mit dem Internet verbunden waren. Haben Sie den Tarball von einer der MASTER_SITES (aufgeführt im Makefile) gezogen, können Sie die Installation erneut starten. Das habe ich getan, aber als ich ihn in das Verzeichnis /usr/ports/distfiles legen wollte, erhielt ich eine Fehlermeldung bezüglich der Zugriffsrechte. Der Port-Mechanismus versucht heruntergeladene Tarballs in /usr/ports/distfiles abzulegen. Dieses Verzeichnis verweist aber oft auf ein Verzeichnis eines Fileservers oder eine CD-ROM, die nur gelesen werden können. Wenn dies der Fall ist, können Sie einen anderen Ort zum Speichern der Tarballs angeben: &prompt.root; make DISTDIR=/Verzeichnis/mit/Schreibberechtigung install Funktioniert das Konzept der Ports nur, wenn alles in /usr/ports abläuft? Mein Systemadministrator sagt, dass ich alles unter /u/people/guests/wurzburger haben muss, aber das scheint nicht zu klappen. Die Variablen PORTSDIR und PREFIX legen die Verzeichnisse fest, die das Ports-System benutzt. &prompt.root; make PORTSDIR=/u/people/guests/wurzburger/ports install Der obige Befehl übersetzt den Port in /u/people/guests/wurzburger/ports und installiert alles unter /usr/local. Der folgende Befehl kompiliert in /usr/ports und installiert den Port in /u/people/guests/wurzburger/local: &prompt.root; make PREFIX=/u/people/guests/wurzburger/local install Sie können beide Variablen auch zusammen benutzen: &prompt.root; make PORTSDIR=../ports PREFIX=../local install Die Kommandozeile ist zu lang, um es hier komplett wiederzugeben, aber Sie sollten die zugrunde liegende Idee erkennen. imake Einige Ports, welche &man.imake.1; (Teil des X Window Systems) benutzen, funktionieren nicht gut mit PREFIX und bestehen darauf, unter /usr/X11R6 installiert zu werden. In ähnlicher Weise verhalten sich einige Perl Ports, die PREFIX ignorieren und sich in den Perl Verzeichnisbaum installieren. Zu erreichen, dass solche Ports PREFIX beachten, ist schwierig oder sogar unmöglich. Wenn Sie keine Lust haben, dies jedes Mal zu tippen, sollten Sie diese Variablen als Umgebungsvariablen setzen. Lesen Sie die Manualpage Ihrer Shell, um zu erfahren, wie man das anstellt. Ich habe keine FreeBSD CD-ROM, würde aber gerne die Tarballs auf meinem Rechner liegen haben, damit ich nicht jedes Mal auf das Herunterladen warten muss, wenn ich mal einen Port installieren will. Gibt es einen Weg, alle auf einmal zu holen? Um jeden einzelnen Tarball für die Ports-Sammlung zu holen geben Sie ein: &prompt.root; cd /usr/ports &prompt.root; make fetch Für alle Tarballs eines Ports-Verzeichnis: &prompt.root; cd /usr/ports/Verzeichnis &prompt.root; make fetch - und für nur einen Port — gut, das haben Sie sicher + und für nur einen Port – gut, das haben Sie sicher schon erraten. Ich weiß, das es wohl schneller geht, wenn ich die Tarballs von einem FreeBSD Spiegel in der Nähe hole. Kann ich sagen, dass andere als in MASTER_SITES angegebene Server genommen werden sollen? Ja. Zum Beispiel, wenn ftp.FreeBSD.org näher bei Ihnen ist, als der in MASTER_SITES angegebene, machen Sie das wie folgt: &prompt.root; cd /usr/ports/directory &prompt.root; make MASTER_SITE_OVERRIDE= \ ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/distfiles/ fetch Ich würde gerne vorher wissen, welche Dateien make holen wird, bevor es das versucht. make fetch-list gibt aus, welche Dateien für den Port benötigt werden. Gibt es einen Weg einen Port am Kompilieren zu hindern? Ich möchte gerne vor der Installation etwas im Quellcode hacken. Es ist aber etwas nervig, immer aufzupassen und im richtigen Moment mit Ctrl C abzubrechen. Die Eingabe von make extract erreicht, dass der Port Quellcode nur geholt und entpackt wird. Ich versuche einen eigenen Port zu erstellen und will, dass der Port vor dem Übersetzen anhält, damit ich eine Chance habe zu sehen, ob meine Patches sauber funktionieren. Gibt es etwas wie make extract für Patches? Klar, make patch ist alles was Sie wünschen. Sie werden wahrscheinlich die Variable PATCH_DEBUG auch recht nützlich finden. Ach ja, und vielen Dank für Ihre Bemühungen! Stimmt es, dass einige Compiler Fehler machen? Wie kann ich sicher gehen, dass ich mit den richtigen Einstellungen übersetze? Ja, in der Version 2.6.3 des gcc (diese Version ist bei FreeBSD 2.1.0 und 2.1.5 dabei) kann die Option fehlerhafte Ergebnisse liefern, sofern man nicht auch die Option benutzt. (Die meisten Ports benutzen nicht). Sie sollten die Compiler-Optionen etwa wie folgt spezifizieren können: &prompt.root; make CFLAGS='-O2 -fno-strength-reduce' install Die Compiler-Optionen können Sie auch in /etc/make.conf angeben, allerdings beachten das nicht alle Ports. Der sicherste Weg ist, nach einem make configure in das Verzeichnis mit dem Quellcode zu gehen und dort die Makefiles von Hand zu untersuchen. Das kann aber sehr mühselig werden, da es oft sehr viele Unterverzeichnisse mit eigenen Makefiles geben kann. Die bei FreeBSD voreingestellten Compiler Optionen sind recht konservativ, Sie sollten eigentlich keine Probleme bekommen, wenn Sie diese nicht verändert haben. Das sind aber ganz schön viele Ports und es ist nicht leicht, den einen zu finden, den ich gerade möchte. Gibt es eine Liste der erhältlichen Ports? Schauen Sie in die Datei INDEX im Verzeichnis /usr/ports. Sie können auch die Ports-Sammlung nach einem Stichwort durchsuchen. Wollen Sie zum Beispiel alle Ports finden, die mit der Programmiersprache LISP zu tun haben, geben Sie ein: &prompt.user; cd /usr/ports &prompt.user; make search key=lisp Als ich den Port bla installieren wollte, hört das System auf einmal mit dem Kompilieren auf und fing an, den Port sülz zu erstellen. Was ist hier los? Der Port bla braucht etwas aus dem - Port sülz — beispielsweise, + Port sülz – beispielsweise, wenn bla Grafik benutzt, könnte der Port sülz eine Bibliothek mit nützlichen grafischen Routinen enthalten. Oder sülz könnte ein Werkzeug sein, das zum Übersetzen des Ports bla notwendig ist. Wenn sülz einmal installiert ist, sollte das System mit dem Bau von bla fortfahren. Ich habe aus der Ports-Sammlung die Anwendung grizzle installiert und nun festgestellt, dass es reine Verschwendung von Plattenplatz ist. Ich will ihn wieder löschen, weiß aber nicht wohin der Port seine Dateien installiert hat. Tips? Alles kein Problem, tippen Sie einfach: &prompt.root; pkg_delete grizzle-6.5 Sie können alternativ auch eingeben: &prompt.root; cd /usr/ports/somewhere/grizzle &prompt.root; make deinstall Moment, man muss die Versionsnummer wissen, um das Kommando benutzen zu können. Es wird aber nicht wirklich erwartet, dass ich mich daran noch erinnere, oder? Nein, Sie finden diese Nummer durch folgende Eingabe heraus: &prompt.root; pkg_info -a | grep 'grizzle*' Information for grizzle-6.5: grizzle-6.5 - the combined piano tutorial, LOGO interpreter and shoot 'em up arcade game. Die Versionsnummer finden Sie auch mit pkg_info heraus, oder indem Sie ls /var/db/pkg eingeben. Apropos Plattenplatz, die Ports-Sammlung scheint recht viel Platz einzunehmen. Ist es gefährlich darin Sachen zu löschen? Nun, wenn Sie Anwendungen installiert haben und sicher sind, dass Sie den Quellcode nicht benötigen, gibt es keinen Grund diesen herumliegen zu haben. Der sicherste Weg aufzuräumen ist: &prompt.root; cd /usr/ports &prompt.root; make clean Das geht durch alle Ports-Verzeichnisse und löscht für jeden Port alles bis auf das Gerüst. Dasselbe können Sie auch erreichen, ohne rekursiv jedes Makefile aufzurufen. Die work/ Verzeichnisse können Sie auch mit dem folgenden Kommando löschen: &prompt.root; find /usr/ports -depth -name work -exec rm -rf {} \; Das habe ich probiert, aber da liegen immer noch diese Tarballs (oder wie die genannt werden) im Verzeichnis distfiles herum. Darf ich die auch löschen? Ja, wenn Sie mit denen fertig sind, können die auch verschwinden. Man kann sie von Hand löschen oder das Kommando make distclean benutzen. Ich finde es toll, tierisch viele Anwendungen zu haben und damit rumzuspielen. Gibt es einen Weg alle Ports auf einmal zu installieren? Machen Sie einfach: &prompt.root; cd /usr/ports &prompt.root; make install Vorsicht: Einige Ports könnten Dateien mit dem gleichen Namen installieren. Wenn man zwei grafische Ports installiert und beide eine Datei /usr/local/bin/plot anlegen, haben Sie ein Problem. Okay, das habe ich gemacht und da ich dachte, dass das sicherlich ziemlich lange dauert, ging ich zu Bett. Als ich heute morgen zum Computer kam, waren erst dreieinhalb Ports installiert. Hat da etwas nicht geklappt? Nein, das Problem ist, dass es Ports gibt, die Ihnen Fragen stellen, auf die wir die Antworten nicht für Sie geben konnten (z.B. Drucken Sie auf Papier im A4 oder US Letter Format?). In solchen Fällen muss jemand da sein und die Fragen beantworten. Ich möchte aber nicht wirklich einen ganzen Tag damit verbringen, auf den Monitor zu starren. Irgendeine bessere Idee? Klar, bevor Sie zu Bett/zur Arbeit/in den Park gehen, geben Sie ein: &prompt.root; cd /usr/ports &prompt.root; make -DBATCH install Das installiert Ihnen alle Ports, die keine Eingaben des Benutzers erfordern. Die restlichen Ports installieren Sie, wenn Sie zurück sind, mit dem Kommando: &prompt.root; cd /usr/ports &prompt.root; make -DINTERACTIVE install Auf der Arbeit benutzen wir die Anwendung frobble, die in der Ports-Sammlung ist. Wir haben sie aber etwas auf unsere Bedürfnisse angepasst. Können wir irgendwie ein eigenes Paket erstellen, so dass wir die Anwendung leichter auf unsere Rechner verteilen können? Kein Problem. Angenommen Sie wissen, wie Sie für Ihre Anpassungen Patches erzeugen: &prompt.root; cd /usr/ports/somewhere/frobble &prompt.root; make extract &prompt.root; cd work/frobble-2.8 [Ihre patche einspielen] &prompt.root; cd ../.. &prompt.root; make package Diese Geschichte mit den Ports ist wirklich clever. Ich habe keine Ahnung, wie ihr das hinbekommen habt. Was ist das Geheimnis dahinter? Keine Geheimnisse. Sehen Sie einfach in die Dateien bsd.port.mk und bsd.port.subdir.mk im Verzeichnis /usr/ports/Mk/. Lesern mit einer Aversion gegen komplizierte Shell-Skripten wird geraten, dieses Verzeichnis nicht zu besuchen. Hilfe! Dieser Port ist kaputt! Stolpern Sie mal über einen Port, der bei Ihnen nicht funktioniert, könnten Sie zum Beispiel Folgendes tun: Reparieren Sie ihn! Das FreeBSD Porter's Handbook enthält eine detaillierte Beschreibung des Portsystems. Damit sind Sie in der Lage, einen gelegentlich kaputten Port zu reparieren oder einen eigenen Port zu erstellen. - Rummeckern — nur mittels E-Mail! + Rummeckern – nur mittels E-Mail! Senden Sie zuerst eine E-Mail an den Betreuer des Ports. Geben Sie dazu make maintainer ein oder lesen Sie das Makefile im Verzeichnis des Ports, um an die E-Mail-Adresse zu kommen. Vergessen Sie nicht den Namen und die Version des Ports (schicken Sie die Zeile mit $FreeBSD: aus dem Makefile) und die Ausgabe bis zur Fehlermeldung mitzuschicken. Erhalten Sie vom Betreuer keine Resonanz, können mit &man.send-pr.1; einen Fehler-Report senden. Holen Sie sich das Paket von einem FTP-Server in Ihrer Nähe. Die Basis Sammlung aller Pakete liegt auf ftp.de.FreeBSD.org im Verzeichnis packages. Aber versuchen Sie zuerst einen Spiegel in Ihrer Nähe! Benutzen Sie das Programm &man.pkg.add.1;, um Pakete auf Ihrem Rechner zu installieren. Dies hat zudem den Vorteil, dass es schneller geht. diff --git a/de_DE.ISO8859-1/books/handbook/ppp-and-slip/chapter.sgml b/de_DE.ISO8859-1/books/handbook/ppp-and-slip/chapter.sgml index 3acaf5b180..3e32721a6a 100644 --- a/de_DE.ISO8859-1/books/handbook/ppp-and-slip/chapter.sgml +++ b/de_DE.ISO8859-1/books/handbook/ppp-and-slip/chapter.sgml @@ -1,3474 +1,3474 @@ Jim Mock Restrukturiert, neu organisiert und aktualisiert von Thomas Schwarzkopf Übersetzt von PPP und SLIP Übersicht PPP SLIP Unter FreeBSD stehen verschiedene Möglichkeiten zur Verfügung, um Computer miteinander zu verbinden. Der Aufbau einer Netzwerk- oder Internetverbindung mit Hilfe eines Einwahlmodems - — für den eigenen oder für andere Rechner — + – für den eigenen oder für andere Rechner – erfordert den Einsatz von PPP oder SLIP. Nachdem Sie dieses Kapitel gelesen haben, werden Sie wissen: Wie Sie User-PPP einrichten. Wie Sie Kernel-PPP einrichten. Was zu tun ist, um PPPoE (PPP over Ethernet) einzurichten. Wie Sie PPPoA (PPP over ATM) einrichten. Wie Sie einen SLIP-Client und -Server einrichten und konfigurieren PPP User-PPP PPP Kernel-PPP PPP over Ethernet Bevor Sie dieses Kapitel lesen, sollten Sie: mit den grundlegenden Begriffen der Netzwerktechnik vertraut sein. die Grundlagen und den Zweck einer Einwahlverbindung sowie PPP und/oder SLIP kennen. Sie fragen sich vielleicht, worin denn der Hauptunterschied zwischen User-PPP und Kernel-PPP liegt. Die Antwort ist einfach: User-PPP verarbeitet die ein- und ausgehenden Daten im Userland, statt im Kernel. Dies ist zwar aufwändig, im Hinblick auf die Daten, die dadurch zwischen Kernel und Userland hin und her kopiert werden müssen, doch es ermöglicht auch eine PPP-Implementierung mit weitaus mehr Funktionen. User-PPP verwendet das tun Device, um mit anderen Rechnern zu kommunizieren, während Kernel-PPP hierfür das ppp Device benutzt. In diesem Kapitel wird durchgängig die Bezeichnung PPP verwendet, wenn auf User-PPP Bezug genommen wird. Ausnahmen werden gemacht, wenn eine Unterscheidung gegenüber anderer PPP-Software, wie z.B. pppd notwendig wird. Soweit nichts anderes angegeben wird, sollten alle Befehle, die in diesem Kapitel erklärt werden, als root ausgeführt werden. Tom Rhodes Aktualisiert und erweitert von Brian Somers Ursprünglich geschrieben von Nik Clayton Mit Beiträgen von Dirk Frömberg Peter Childs User-PPP User-PPP Voraussetzungen Dieses Dokument geht davon aus, dass Sie Folgendes zur Verfügung haben: ISP PPP Einen Account bei einem Internet Service Provider (ISP), zu dem Sie mit PPP eine Verbindung aufbauen können. Ein Modem oder ein anderes Gerät, das, richtig konfiguriert und mit Ihrem Rechner verbunden, Ihnen die Herstellung einer Verbindung zu Ihrem ISP erlaubt. Die Einwahlnummer(n) Ihres ISP. PAP CHAP UNIX Login Name Passwort Ihren Login-Namen und Ihr Passwort (entweder ein reguläres Login/Passwort-Paar im UNIX-Stil oder ein PAP bzw. CHAP Login/Passwort-Paar). Nameserver Die IP-Adresse von einem oder mehreren Nameservern. Üblicherweise werden Ihnen von Ihrem ISP zwei IP-Adressen für diesen Zweck zur Verfügung gestellt. Wenn Sie keine solche IP-Adresse von Ihrem Provider bekommen haben, können Sie das Kommando enable dns in der Datei ppp.conf verwenden, um ppp anzuweisen, den Nameserver für Sie einzutragen. Diese Funktion setzt allerdings voraus, dass Ihr ISP eine PPP-Implementierung verwendet, die das Aushandeln eines Nameservers unterstützt. Die folgenden Informationen werden Ihnen möglicherweise von Ihrem ISP zur Verfügung gestellt, sie sind aber nicht zwingend erforderlich: Die Gateway IP-Adresse Ihres ISP. Als Gateway wird der Computer bezeichnet, zu dem Sie eine Verbindung aufbauen. Die IP-Adresse dieses Rechners wird als default route eingetragen. Wenn Sie diese Information nicht zur Verfügung haben, kann PPP so konfiguriert werden, dass der PPP-Server Ihres ISP während des Verbindungsaufbaus eine gültige Adresse übermittelt. ppp bezieht sich mit HISADDR auf diese IP-Adresse. Die Netzmaske, die Sie verwenden sollten. Falls Ihnen Ihr ISP keine Netzmaske vorgegeben hat, können Sie 255.255.255.255 verwenden. feste IP-Adresse Wenn Ihnen Ihr ISP eine statische IP-Adresse zur Verfügung stellt, können Sie diese eintragen. Andernfalls lassen wir uns einfach von der Gegenstelle eine IP-Adresse zuweisen. Falls Ihnen die erforderlichen Informationen fehlen sollten, nehmen Sie bitte Kontakt mit Ihrem ISP auf. Die Beispieldateien, die in diesem Kapitel dargestellt werden, enthalten Zeilennummern. Die Nummerierung dient lediglich einer leichteren Orientierung und sollte von Ihnen nicht in Ihre Dateien übernommen werden. Richtiges Einrücken, durch Tabulatoren und Leerzeichen, ist ebenfalls wichtig. Einrichten des <devicename>tun</devicename>-Geräts Unter normalen Umständen werden die meisten Anwender nur ein tun Device benötigen (/dev/tun0). Weiter unten werden wir uns statt auf tun0 auch auf tunN beziehen, wobei N jedem möglichen weiteren Tunnel-Device Ihres Rechners entspricht. Bei FreeBSD-Installationen, die &man.devfs.5; nicht aktiviert haben (FreeBSD 4.X und frühere Versionen), sollte überprüft werden, ob tun0 vorhanden ist (Dies ist nicht erforderlich, wenn &man.devfs.5; aktiviert ist, da in diesem Fall Gerätedateien bei Bedarf erzeugt werden). Der einfachste Weg, um sicherzustellen, dass das tun0 Device richtig konfiguriert ist, besteht darin, das Device neu zu erzeugen. Dazu geben Sie bitte Folgendes ein: &prompt.root; cd /dev &prompt.root; sh MAKEDEV tun0 Wenn Sie 16 Tunnel-Devices im Kernel benötigen, werden Sie diese erzeugen müssen. Sie können die Devices durch die Ausführung folgender Befehle erstellen: &prompt.root; cd /dev &prompt.root; sh MAKEDEV tun15 Überprüfung des Modems Wenn Sie den kernel neu konfiguriert haben, kennen Sie das sio Gerät. Verhält sich Ihr Modem wie ein normales serielles Gerät, so müssen Sie wahrscheinlich nur die Gerätedateien erzeugen. Wechseln Sie dazu nach /dev und führen das Skript MAKEDEV aus: &prompt.root; sh MAKEDEV cuaa0 cuaa1 cuaa2 cuaa3 Wenn Ihr Modem an sio1 angeschlossen ist (in DOS ist dieser Anschluss als COM2 bekannt), ist das Device Ihres Modems /dev/cuaa1. Manuelle Verbindungen Ein Verbindungsaufbau zum Internet durch manuelle Steuerung von ppp geht schnell, ist einfach und stellt einen guten Weg dar, eine Verbindung auf Fehler hin zu überprüfen oder einfach Informationen darüber zu sammeln, wie Ihr ISP Verbindungen handhabt. Lassen Sie uns PPP von der Kommandozeile aus starten. Beachten Sie, dass in allen Beispielen localhost der Hostname der Maschine ist, auf der PPP läuft. Sie starten ppp, indem Sie einfach ppp eingeben: &prompt.root; ppp Wir haben ppp nun gestartet. ppp ON example> set device /dev/cuaa1 Wir geben das Device an, an das unser Modem angeschlossen ist. In diesem Fall ist es cuaa1: ppp ON example> set speed 115200 Wir geben die Verbindungsgeschwindigkeit an. Im Beispiel verwenden wir 115200 kbps ppp ON example> enable dns Wir weisen ppp an, unseren Resolver zu konfigurieren und in der Datei /etc/resolv.conf Einträge für den Nameserver hinzuzufügen. Falls ppp unseren Hostnamen nicht bestimmen kann, geben wir diesen später manuell an. ppp ON example> term Wir wechseln in den Terminal-Modus, um das Modem manuell kontrollieren zu können. deflink: Entering terminal mode on /dev/cuaa1 type '~h' for help at OK atdt123456789 Sie verwenden at zur Initialisierung Ihres Modems und dann atdt sowie die Nummer Ihres ISP, um den Einwählprozess zu starten. CONNECT Dies ist die Bestätigung, dass eine Verbindung aufgebaut wurde. Falls wir Verbindungsprobleme bekommen, die nicht mit der Hardware zusammenhängen, werden wir an dieser Stelle ansetzen müssen, um eine Lösung zu finden. ISP Login:myusername Hier werden Sie nach einem Benutzernamen gefragt. Geben Sie am Prompt den Namen ein, den Ihnen Ihr ISP zur Verfügung gestellt hat. ISP Pass:mypassword An dieser Stelle müssen Sie das Passwort angeben, das Ihnen von Ihrem ISP vorgegeben wurde. Das Passwort wird, analog dem normalen Anmeldevorgang, auch hier nicht angezeigt. Shell or PPP:ppp Abhängig von Ihrem ISP, kann es sein, dass dieser Prompt bei Ihnen gar nicht erscheint. Wir werden hier gefragt, ob wir eine Shell beim Provider verwenden oder ppp starten wollen. Weil wir eine Internetverbindung aufbauen wollen, haben wir uns in diesem Beispiel für ppp entschieden. Ppp ON example> Beachten Sie, dass sich in diesem Beispiel das erste in einen Großbuchstaben verwandelt hat. Dies zeigt, dass wir erfolgreich eine Verbindung zu unserem ISP hergestellt haben. PPp ON example> An dieser Stelle haben wir uns erfolgreich bei unserem ISP authentifiziert und warten darauf, dass uns eine IP-Adresse zugewiesen wird. PPP ON example> Wir haben uns mit der Gegenstelle auf eine IP-Adresse geeinigt und den Verbindungsaufbau erfolgreich abgeschlossen PPP ON example> add default HISADDR Hier geben wir unsere Standardroute an. Weil zu diesem Zeitpunkt unsere einzige Verbindung zu unserer Gegenstelle besteht, müssen wir dies tun, bevor wir Kontakt zu unserer Umwelt aufnehmen können. Falls dies aufgrund bestehender Routen nicht funktionieren sollte, können Sie ein Ausrufungszeichen ! vor setzen. Sie können diese Standardroute aber auch vor dem eigentlichen Verbindungsaufbau angeben und PPP wird entsprechend eine neue Route aushandeln. Wenn alles gut ging, sollten wir nun eine aktive Internetverbindung haben, die wir mit CTRL z in den Hintergrund schicken können Wenn sie feststellen, dass PPP wieder zu ppp wird, ist die Verbindung abgebrochen. Es ist gut dies zu wissen, weil dadurch der Verbindungsstatus angezeigt wird. Große Ps zeigen an, dass wir eine Verbindung zum ISP haben und kleine ps zeigen an, dass wir aus irgendeinem Grund die Verbindung verloren haben. ppp hat nur diese beiden Zustände. Fehlersuche bei manuellen Verbindungen Wie überall, können auch im Zusammenhang mit PPP gelegentlich Probleme auftreten. Falls ppp nicht mehr reagiert, gibt es einige Dinge die wir probieren können. Wenn sie einen Direktanschluss haben und keine Verbindung aufbauen können, schalten Sie die Hardware-Flusssteuerung CTS/RTS aus, indem Sie die Option verwenden. Dies ist zumeist dann der Fall, wenn Sie mit einem PPP-fähigen Terminalserver verbunden sind. Hier bleibt PPP bei dem Versuch hängen, Daten über Ihre Nachrichtenverbindung zu schicken, weil auf ein CTS-Signal (Clear To Send Signal) gewartet wird, das nie kommt. Wenn Sie diese Option jedoch gebrauchen, sollten Sie auch die Option verwenden, die erforderlich sein kann, um bestimmte Hardware zu kontrollieren, die auf die Übertragung bestimmter Zeichen zwischen den Kommunikations-Endpunkten (zumeist XON/XOFF) angewiesen ist. Die Manual-Seite &man.ppp.8; bietet mehr Informationen zu dieser Option und ihrer Verwendung. Wenn Sie ein älteres Modem haben, benötigen Sie vielleicht die Option . Standardmäßig wird keine Parität vorausgesetzt, sie ist aber für die Fehlerprüfung bei älteren Modems und bei bestimmten ISPs erforderlich. Sie könnten diese Option für den ISP Compuserve benötigen. PPP kehrt möglicherweise nicht in den Befehlsmodus zurück, was normalerweise auf einen Fehler bei der Aushandlung hinweist, wobei der ISP wartet, dass Ihre Seite den Aushandlungsprozess beginnt. Die Option ~p zwingt ppp in diesem Fall damit zu beginnen, die Konfigurationsinformationen zu senden. Wenn Sie nie einen Login-Prompt erhalten, müssen Sie statt des im Beispiel gezeigten UNIX-Stils höchst wahrscheinlich PAP oder CHAP für die Authentifizierung verwenden. Um PAP oder CHAP zu verwenden, ergänzen Sie PPP einfach um folgende Optionen, bevor Sie in den Terminalmodus wechseln: ppp ON localhost> set authname myusername Hierbei sollte myusername durch den Benutzernamen ersetzt werden, den Sie von Ihrem ISP bekommen haben. ppp ON localhost> set authkey mypassword mypassword sollten Sie durch das Passwort ersetzen, das Ihnen Ihr ISP gegeben hat. Wenn die Verbindung aufgebaut wird, Sie aber keine Rechner unter ihrem Domänen-Namen erreichen können, versuchen Sie, einen Rechner mit &man.ping.8; und seiner IP-Adresse zu erreichen. Wenn 100% der Pakete verloren gehen, ist es sehr wahrscheinlich, dass Ihnen keine Standardroute zugewiesen wurde. Überprüfen Sie, ob während des Verbindungsaufbaus die Option gesetzt war. Wenn Sie zu einer entfernten IP-Adresse eine Verbindung aufbauen können, ist es möglich, dass die Adresse eines Nameservers nicht in die Datei /etc/resolv.conf eingetragen wurde. Diese Datei sollte folgendermaßen aussehen: domain example.com nameserver x.x.x.x nameserver y.y.y.y Dabei sollten x.x.x.x und y.y.y.y durch die IP-Adresse des DNS-Servers Ihres ISP ersetzt werden. Diese Information ist Ihnen bei Vertragsabschluss mitgeteilt worden oder auch nicht, aber ein Anruf bei Ihrem ISP kann hier Abhilfe schaffen. Mit &man.syslog.3; können Sie Ihre PPP-Verbindung protokollieren. Fügen Sie einfach die folgende Zeile in /etc/syslog.conf ein: !ppp *.* /var/log/ppp.log In den meisten Fällen existiert diese Funktionalität bereits. Automatische Konfiguration von <application>PPP</application> PPP Konfiguration Sowohl ppp als auch pppd (die PPP-Implementierung auf Kernelebene) verwenden die Konfigurationsdateien im Verzeichnis /etc/ppp. Beispiele für User-PPP sind in /usr/share/examples/ppp/ zu finden. Die Konfiguration von ppp erfordert, je nach Ihren besonderen Bedingungen, die Bearbeitung einiger Dateien. Was Sie in diese Dateien eintragen, hängt unter anderem davon ab, ob Ihnen Ihr ISP eine statische IP-Adresse (Sie verwenden immer dieselbe IP-Adresse, die Ihnen einmal zugeteilt wurde) oder eine dynamische IP-Adresse (Ihre IP-Adresse ändert sich bei jeder Verbindung mit dem ISP) zugewiesen hat. PPP und statische IP-Adressen PPP mit fester IP-Adresse Sie müssen die Konfigurationsdatei /etc/ppp/ppp.conf bearbeiten. Sie sollte so aussehen, wie in dem unten angegebenen Beispiel. Zeilen die mit einem : enden, beginnen in der ersten Spalte (am Beginn der Zeile). Alle anderen Zeilen sollten wie dargestellt durch Leerzeichen oder Tabulatoren eingerückt werden. Die meisten Informationen die Sie hier angeben müssen, kennen wir bereits durch unsere oben beschriebene manuelle Einwahl. 1 default: 2 set log Phase Chat LCP IPCP CCP tun command 3 ident user-ppp VERSION (built COMPILATIONDATE) 4 set device /dev/cuaa0 5 set speed 115200 6 set dial "ABORT BUSY ABORT NO\\sCARRIER TIMEOUT 5 \ 7 \"\" AT OK-AT-OK ATE1Q0 OK \\dATDT\\T TIMEOUT 40 CONNECT" 8 set timeout 180 9 enable dns 10 11 provider: 12 set phone "(123) 456 7890" 13 set authname foo 14 set authkey bar 15 set login "TIMEOUT 10 \"\" \"\" gin:--gin: \\U word: \\P col: ppp" 16 set timeout 300 17 set ifaddr x.x.x.x y.y.y.y 255.255.255.255 0.0.0.0 18 add default HISADDR Zeile 1: Gibt den Standardeintrag an. Befehle dieses Eintrags werden automatisch ausgeführt, wenn ppp läuft. Zeile 2: Schaltet die Loggingparameter ein. Wenn die Verbindung zufriedenstellend funktioniert, können Sie diese Zeile verkürzen: set log phase tun Dies verhindert ein übermäßiges Anwachsen der Logdateien. Zeile 3: Gibt PPP an, wie es sich gegenüber der Gegenstelle identifizieren soll. PPP identifiziert sich gegenüber der Gegenstelle, wenn es Schwierigkeiten bei der Aushandlung und beim Aufbau der Verbindung gibt. Dabei werden Informationen bereitgestellt, die dem Administrator der Gegenstelle helfen können, die Ursache der Probleme zu finden. Zeile 4: Gibt das Device an, an dem das Modem angeschlossen ist. COM1 entspricht /dev/cuaa0 und COM2 entspricht /dev/cuaa1. Zeile 5: Legt die Geschwindigkeit fest, mit der Sie die Verbindung betreiben möchten. Falls ein Wert von 115200 nicht funktioniert (was aber bei jedem einigermaßen neuen Modem funktionieren sollte), versuchen Sie es stattdessen mit 38400. Zeilen 6 & 7: PPP User-PPP Die Zeichenfolge für die Einwahl. User-PPP verwendet eine expect-send Syntax, ähnlich dem &man.chat.8;-Programm. Weitere Informationen zu den Eigenschaften dieser Sprache bietet die Manual-Seite. Beachten Sie, dass dieser Befehl aufgrund der besseren Lesbarkeit auf der nächsten Zeile weitergeht. Das kann für jeden Befehl in ppp.conf gelten, wenn ``\'' das letzte Zeichen in einer Zeile ist. Zeile 8: Legt den Zeitrahmen fest, innerhalb dessen eine Reaktion erfolgen muss. Der Standardwert liegt bei 180 Sekunden, so dass diese Zeile lediglich einen kosmetischen Charakter hat. Zeile 9: Weist PPP an, bei der Gegenstelle eine Bestätigung der lokalen Resolvereinstellungen anzufordern. Wenn Sie einen lokalen Nameserver betreiben, sollte diese Zeile auskommentiert oder gelöscht werden. Zeile 10: Eine leere Zeile zur besseren Lesbarkeit. Leere Zeilen werden von PPP ignoriert. Zeile 11: Bestimmt einen Provider, namens provider. Wenn Sie hier den Namen Ihres ISP einsetzen, können Sie später die Verbindung mit aufbauen. Zeile 12: Gibt die Telefonnummer des Providers an. Mehrere Telefonnummern können angegeben werden, indem Doppelpunkte (:) oder Pipe-Zeichen (|) als Trennzeichen verwendet werden. Der Unterschied zwischen diesen beiden Trennzeichen ist in &man.ppp.8; beschrieben. Zusammenfassend: Wenn Sie die verschiedenen Nummern abwechselnd verwenden möchten, sollten Sie die Nummern durch einen Doppelpunkt trennen. Wenn Sie immer die erste Nummer verwenden möchten und die anderen nur zum Einsatz kommen sollen, wenn eine Einwahl mit der ersten Telefonnummer nicht möglich ist, sollten Sie das Pipe-Zeichen zur Trennung verwenden. Wie im Beispiel, sollten Sie die gesamte Reihe der Telefonnummern in Anführungszeichen setzen. Sie müssen die Telefonnummer in Anführungszeichen (") setzen, wenn Sie Leerzeichen in der Telefonnummer verwenden, ansonsten rufen Sie einen Fehler hervor, der vielleicht schwer zu finden ist. Zeilen 13 & 14: Gibt den Benutzernamen und das Passwort an. Wenn Sie zur Verbindung einen Login-Prompt im UNIX-Stil verwenden, bezieht sich der Befehl set login mit den \U und \P Variablen auf diese Werte. Wenn Sie zum Verbindungsaufbau PAP oder CHAP verwenden, werden diese Werte zum Zeitpunkt der Authentifizierung verwendet. Zeile 15: PAP CHAP Wenn Sie PAP oder CHAP einsetzen, gibt es an dieser Stelle keinen Login-Prompt, weshalb Sie diese Zeile auskommentieren oder löschen sollten. Der Abschnitt Authentifizierung mit PAP und CHAP enthält hierzu weitere Einzelheiten. Der Login-String hat die gleiche chat-ähnliche Syntax, wie der Einwahlstring. Der String in diesem Beispiel funktioniert mit einem ISP, dessen Login-Session folgendermaßen aussieht: J. Random Provider login: foo password: bar protocol: ppp Sie müssen dieses Skript noch an Ihre eigenen Erfordernisse anpassen. Wenn Sie dieses Skript zum ersten Mal schreiben, sollten Sie sicherstellen, dass Sie chat-logging aktiviert haben, damit Sie überprüfen zu können, ob die Konversation zwischen Ihrem Rechner und dem Rechner des Providers wie erwartet abläuft. Zeile 16: Zeitbeschränkung Setzt einen Zeitrahmen (in Sekunden), innerhalb dessen eine Reaktion erfolgen muss. In diesem Fall, wird die Verbindung nach 300 Sekunden automatisch geschlossen, wenn keine Aktivität zu verzeichnen ist. Wenn Sie keinen Zeitrahmen festlegen wollen, nach dessen Überschreiten die Verbindung geschlossen wird, können Sie diesen Wert auf 0 setzen oder die Kommandozeilen-Option verwenden. Zeile 17: ISP Gibt die IP-Adresse für das Interface an. Der String x.x.x.x sollte durch die IP-Adresse ersetzt werden, die Ihnen Ihr Provider zugeteilt hat. Der String y.y.y.y sollte durch die IP-Adresse ersetzt werden, die Ihr ISP als Gateway angegeben hat (das ist der Rechner, mit dem Ihr Rechner eine Verbindung aufbaut). Wenn Ihnen Ihr ISP keine Gateway Adresse zur Verfügung gestellt hat, verwenden Sie hier einfach 10.0.0.2/0. Wenn Sie eine erratene IP-Adresse verwenden müssen, sollten Sie in der Datei /etc/ppp/ppp.linkup einen entsprechenden Eintrag machen. Folgen Sie dazu den Anweisungen im Abschnitt PPP und dynamische IP-Adressen. Wenn diese Zeile ausgelassen wird, kann ppp nicht im Modus betrieben werden. Zeile 18: Fügt eine Defaultroute für das Gateway Ihres Providers hinzu. Das Wort HISADDR wird dabei durch die in Zeile 9 angegebene Gateway Adresse ersetzt. Wichtig ist, dass diese Zeile nach Zeile 9 erscheint, da andernfalls HISADDR noch nicht initialisiert ist. Wenn Sie ppp nicht im Modus betreiben, sollte diese Zeile in die Datei ppp.linkup verschoben werden. Wenn Sie eine statische IP-Adresse verwenden und ppp im Modus läuft, ist es nicht notwendig, einen Eintrag in die Datei ppp.linkup hinzuzufügen. In diesem Fall hat ihre Routingtabelle bereits die richtigen Einträge, bevor Sie die Verbindung aufbauen. Sie möchten aber vielleicht einen Eintrag hinzufügen, um ein Programm aufzurufen, nachdem die Verbindung aufgebaut ist. Dies wird weiter unten am Beispiel von Sendmail erklärt. Beispiele für Konfigurationsdateien finden Sie im Verzeichnis /usr/share/examples/ppp/. PPP und dynamische IP-Adressen PPP mit dynamischen IP-Adressen IPCP Wenn Ihnen Ihr ISP keine statische IP-Adresse zuteilt, kann ppp so konfiguriert werden, dass die lokale und die entfernte IP-Adresse beim Verbindungsaufbau ausgehandelt werden. Dies geschieht, indem zunächst eine IP-Adresse erraten wird, die von ppp, unter Verwendung des IP Configuration Protocol (IPCP) durch eine richtige ersetzt wird, wenn die Verbindung aufgebaut ist. Die Konfiguration der Datei ppp.conf entspricht derjenigen, die im Abschnitt PPP und statische IP- Adressen dargestellt wurde, jedoch mit folgender Änderung: 17 set ifaddr 10.0.0.1/0 10.0.0.2/0 255.255.255.255 Auch hier dient die Zeilennummerierung lediglich der besseren Übersichtlichkeit. Einrückungen, von mindestens einem Leerzeichen, sind allerdings erforderlich. Zeile 17: Die Zahl nach dem / Zeichen, gibt die Anzahl der Bits der Adresse an, auf die ppp besteht. Sie möchten vielleicht andere IP-Adressen verwenden, die oben angegebenen werden aber immer funktionieren. Das letzte Argument (0.0.0.0) weist PPP an, den Verbindungsaufbau mit der Adresse 0.0.0.0 zu beginnen, statt 10.0.0.1 zu verwenden. Dies ist bei einigen ISPs notwendig. Verwenden Sie nicht 0.0.0.0 als erstes Argument für set ifaddr, da so verhindert wird, dass PPP im Modus eine initiale Route setzt. Wenn PPP nicht im Modus läuft, müssen Sie die Datei/etc/ppp/ppp.linkup editieren. ppp.linkup kommt zum Einsatz, wenn eine Verbindung aufgebaut worden ist. Zu diesem Zeitpunkt hat ppp die Interface Adressen vergeben und es ist möglich, die Einträge in der Routingtabelle hinzuzufügen: 1 provider: 2 add default HISADDR Zeile 1: Beim Aufbau einer Verbindung sucht ppp in der Datei ppp.linkup nach einem Eintrag. PPP geht dabei nach folgenden Regeln vor: Suche zunächst nach der gleichen Bezeichnung, die wir auch in der Datei ppp.conf verwendet haben. Falls das nicht funktioniert, suche nach einem Eintrag der IP-Adresse unseres Gateways. Dieser Eintrag ist eine Bezeichnung im Stil von IP-Adressen, die sich aus vier Oktetts zusammensetzt. Falls immer noch kein passender Eintrag gefunden wurde, suche nach dem Eintrag MYADDR. Zeile 2: Diese Zeile weist ppp an, eine Defaultroute zu verwenden, die auf HISADDR zeigt. HISADDR wird nach der Aushandlung mit IPCP durch die IP-Adresse des Gateways ersetzt. Die Dateien /usr/share/examples/ppp/ppp.conf.sample und /usr/share/examples/ppp/ppp.linkup.sample bieten detaillierte Beispiele für pmdemand Einträge. Annahme eingehender Anrufe PPP eingehende Anrufe annehmen Wenn Sie ppp auf einem Rechner, der in ein LAN eingebunden ist, so konfigurieren, dass eingehende Anrufe angenommen werden, müssen Sie entscheiden, ob Pakete an das LAN weitergeleitet werden sollen. Wenn Sie das möchten, sollten Sie an die Gegenstelle eine IP-Adresse aus Ihrem lokalen Subnetz vergeben und den Befehl enable proxy in die Datei /etc/ppp/ppp.conf einfügen. Außerdem sollte die Datei /etc/rc.conf Folgendes enthalten: gateway_enable="YES" Welches getty? Der Abschnitt Einwählverbindungen bietet eine gute Beschreibung, wie Einwählverbindungen unter Verwendung von &man.getty.8; genutzt werden können. Eine Alternative zu getty ist mgetty, eine raffiniertere Version von getty, die mit Blick auf Einwählverbindungen entworfen wurde. Der Vorteil von mgetty ist, dass es auf aktive Weise mit Modems spricht, das heißt wenn ein Port in /etc/ttys ausgeschaltet ist, wird Ihr Modem nicht auf Anrufe reagieren. Spätere Versionen von mgetty (von 0.99beta aufwärts) unterstützen auch die automatische Erkennung von PPP-Streams, was Ihren Clients den skriptlosen Zugang zu Ihren Servern erlaubt. Der Abschnitt Mgetty und AutoPPP bietet weitere Informationen zu mgetty. <application>PPP</application> und Rechte Der Befehl ppp muss normalerweise als root ausgeführt werden. Wenn Sie jedoch möchten, dass ppp im Server-Modus auch von einem normalen Benutzer, wie unten beschrieben, durch Aufruf von ppp ausgeführt werden kann, müssen Sie diesem Benutzer die Rechte erteilen, ppp auszuführen, indem Sie ihn in der Datei /etc/group der Gruppe network hinzufügen. Sie werden ihm ebenfalls den Zugriff auf einen oder mehrere Abschnitte der Konfigurationsdatei geben müssen, indem Sie den allow Befehl verwenden: allow users fred mary Wenn dieser Befehl im default Abschnitt verwendet wird, erhalten die angegebenen Benutzer vollständigen Zugriff. PPP-Shells für dynamische IP-Adressen PPP Shells Erzeugen Sie eine Datei mit dem Namen /etc/ppp/ppp-shell, die Folgendes enthält: #!/bin/sh IDENT=`echo $0 | sed -e 's/^.*-\(.*\)$/\1/'` CALLEDAS="$IDENT" TTY=`tty` if [ x$IDENT = xdialup ]; then IDENT=`basename $TTY` fi echo "PPP for $CALLEDAS on $TTY" echo "Starting PPP for $IDENT" exec /usr/sbin/ppp -direct $IDENT Dieses Skript sollte ausführbar sein. Nun erzeugen Sie einen symbolischen Link ppp-dialup auf dieses Skript mit folgendem Befehl: &prompt.root; ln -s ppp-shell /etc/ppp/ppp-dialup Sie sollten dieses Skript als Shell für alle Benutzer von Einwählverbindungen verwenden. Dies ist ein Beispiel aus der Datei /etc/password für einen Benutzer namens pchilds, der PPP für Einwählverbindungen verwenden kann (Denken Sie daran, die Passwortdatei nicht direkt zu editieren, sondern dafür den Befehl vipw zu verwenden). pchilds:*:1011:300:Peter Childs PPP:/home/ppp:/etc/ppp/ppp-dialup Erstellen Sie ein Verzeichnis /home/ppp, das von allen Benutzern gelesen werden kann und die folgenden leeren Dateien enthält: -r--r--r-- 1 root wheel 0 May 27 02:23 .hushlogin -r--r--r-- 1 root wheel 0 May 27 02:22 .rhosts Dies verhindert, dass /etc/motd angezeigt wird. PPP-Shells für statische IP-Adressen PPP Shells Erstellen Sie die Datei ppp-shell wie oben oben dargestellt. Erzeugen Sie nun für jeden Account mit statischer IP-Adresse einen symbolischen Link auf ppp-shell. Wenn Sie beispielsweise die drei Kunden, fred, sam, und mary haben, für die Sie Netzwerke der Klasse C routen, schreiben Sie Folgendes: &prompt.root; ln -s /etc/ppp/ppp-shell /etc/ppp/ppp-fred &prompt.root; ln -s /etc/ppp/ppp-shell /etc/ppp/ppp-sam &prompt.root; ln -s /etc/ppp/ppp-shell /etc/ppp/ppp-mary Jeder Einwählzugang dieser Kunden sollte den oben erzeugten symbolischen Link als Shell haben (mary's Shell sollte also /etc/ppp/ppp-mary sein). Einrichten von <filename>ppp.conf</filename> für dynamische IP-Adressen Die Datei /etc/ppp/ppp.conf sollte in etwa wie folgt aussehen: default: set debug phase lcp chat set timeout 0 ttyd0: set ifaddr 203.14.100.1 203.14.100.20 255.255.255.255 enable proxy ttyd1: set ifaddr 203.14.100.1 203.14.100.21 255.255.255.255 enable proxy Die Einrückungen sind wichtig. Der Abschnitt default: wird für jede Sitzung geladen. Erstellen Sie für jede Einwählverbindung, die Sie in der Datei /etc/ttys ermöglicht haben, einen Eintrag, wie oben für ttyd0: gezeigt. Jede Verbindung sollte eine eigene IP-Adresse aus dem Pool der Adressen bekommen, die sie für diese Benutzergruppe reserviert haben. Einrichten von <filename>ppp.conf</filename> für statische IP-Adressen Zu dem bisher dargestellten Inhalt der Beispieldatei /usr/share/examples/ppp/ppp.conf sollten Sie einen Abschnitt für jeden Benutzer mit statisch zugewiesener IP-Adresse hinzufügen. Wir werden nun unser Beispiel mit den Accounts fred, sam und mary weiterführen. fred: set ifaddr 203.14.100.1 203.14.101.1 255.255.255.255 sam: set ifaddr 203.14.100.1 203.14.102.1 255.255.255.255 mary: set ifaddr 203.14.100.1 203.14.103.1 255.255.255.255 Die Datei /etc/ppp/ppp.linkup sollte, falls erforderlich, ebenfalls Routinginformationen für jeden Benutzer mit statischer IP-Adresse enthalten. Die unten dargestellte Zeile würde dem Klasse C Netzwerk 203.14.101.0 eine Route über die PPP-Verbindung des Client hinzufügen. fred: add 203.14.101.0 netmask 255.255.255.0 HISADDR sam: add 203.14.102.0 netmask 255.255.255.0 HISADDR mary: add 203.14.103.0 netmask 255.255.255.0 HISADDR Mehr zu <command>mgetty</command>, AutoPPP und MS-Erweiterungen <command>mgetty</command> und AutoPPP mgetty AutoPPP LCP Wird mgetty mit der Option AUTO_PPP konfiguriert und kompiliert, kann mgetty die LCP Phase von PPP-Verbindungen erkennen und automatisch eine ppp-Shell starten. Da hierbei jedoch die Login/Passwort-Sequenz nicht durchlaufen wird, ist es notwendig, Benutzer durch PAP oder CHAP zu authentifizieren. In diesem Abschnitt wird davon ausgegangen, dass der Benutzer eine Version von mgetty mit der Option AUTO_PPP (v0.99beta oder neuer) erfolgreich konfiguriert, kompiliert und installiert hat. Stellen Sie sicher, dass die Datei /usr/local/etc/mgetty+sendfax/login.config Folgendes enthält: /AutoPPP/ - - /etc/ppp/ppp-pap-dialup Hierdurch wird mgetty angewiesen, das Skript ppp-pap-dialup für die erkannten PPP-Verbindungen auszuführen. Erstellen Sie nun die Datei /etc/ppp/ppp-pap-dialup mit folgendem Inhalt (die Datei sollte ausführbar sein): #!/bin/sh exec /usr/sbin/ppp -direct pap$IDENT Erstellen Sie bitte für jede Einwählverbindung, die Sie in /etc/ttys ermöglicht haben, einen korrespondierenden Eintrag in der Datei /etc/ppp/ppp.conf. Diese Einträge können problemlos, mit den Definitionen die wir weiter oben gemacht haben, koexistieren. pap: enable pap set ifaddr 203.14.100.1 203.14.100.20-203.14.100.40 enable proxy Jeder Benutzer, der sich auf diese Weise anmeldet, benötigt einen Benutzernamen und ein Passwort in der Datei /etc/ppp/ppp.secret. Sie haben auch die Möglichkeit, Benutzer mit Hilfe von PAP zu authentifizieren, indem Sie der Datei /etc/password folgende Option hinzufügen: enable passwdauth Wenn Sie bestimmten Benutzern eine statische IP-Adresse zuweisen möchten, können Sie diese als drittes Argument in der Datei /etc/ppp/ppp.secret angeben. In /usr/share/examples/ppp/ppp.secret.sample finden Sie hierfür Beispiele. MS-Erweiterungen DNS NetBIOS PPP Erweiterungen von Microsoft Es ist möglich PPP so zu konfigurieren, dass bei Bedarf DNS und NetBIOS Nameserveradressen bereitgestellt werden. Um diese Erweiterungen für die PPP Version 1.x zu aktivieren, sollte der entsprechende Abschnitt der Datei /etc/ppp/ppp.conf um folgende Zeilen ergänzt werden: enable msext set ns 203.14.100.1 203.14.100.2 set nbns 203.14.100.5 Für PPP Version 2 und höher: accept dns set dns 203.14.100.1 203.14.100.2 set nbns 203.14.100.5 Damit werden den Clients die primären und sekundären Nameserveradressen sowie ein NetBIOS Nameserver-Host mitgeteilt. In Version 2 und höher verwendet PPP die Werte, die in /etc/resolv.conf zu finden sind, wenn die Zeile set dns weggelassen wird. Authentifizierung durch PAP und CHAP PAP CHAP Einige ISPs haben ihr System so eingerichtet, dass der Authentifizierungsteil eines Verbindungsaufbaus mit Hilfe von PAP oder CHAP-Mechanismen durchgeführt wird. Wenn dies bei Ihnen der Fall sein sollte, wird Ihnen Ihr ISP bei der Verbindung keinen login:-Prompt präsentieren, sondern sofort mit der Aushandlung der PPP-Verbindung beginnen. PAP ist nicht so sicher wie CHAP, doch die Sicherheit ist hierbei normalerweise kein Problem, da Passwörter, obgleich von PAP im Klartext versandt, lediglich über die serielle Verbindung verschickt werden. Es gibt für Cracker wenig Möglichkeiten zu lauschen. Zurückkommend auf die Abschnitte PPP und statische IP-Adressen oder PPP und dynamische IP-Adressen müssen folgende Veränderungen vorgenommen werden: 7 set login … 12 set authname MyUserName 13 set authkey MyPassword Zeile 7: Ihr ISP wird normalerweise nicht von Ihnen verlangen, dass Sie sich am Server einloggen, wenn Sie PAP oder CHAP verwenden. Sie müssen deshalb den String set login deaktivieren. Zeile 12: Diese Zeile legt Ihren PAP/CHAP Benutzernamen fest. Sie müssen den richtigen Wert für MyUserName eingeben. Zeile 13: Passwort Diese Zeile legt Ihr PAP/CHAP Passwort fest. Sie müssen den richtigen Wert für MyPassword eingeben. Sie können eine zusätzliche Zeile, wie etwa: 15 accept PAP oder 15 accept CHAP verwenden, um deutlich zu machen, dass dies beabsichtigt ist, aber sowohl PAP wie auch CHAP als standardmäßig akzeptiert werden. Veränderung Ihrer <command>ppp</command> Konfiguration im laufenden Betrieb Es ist möglich, dem Programm ppp Befehle zu erteilen, während es im Hintergrund läuft. Dazu ist jedoch die Einrichtung eines passenden Diagnose-Ports erforderlich. Ergänzen Sie hierzu Ihre Konfigurationsdatei um folgende Zeile: set server /var/run/ppp-tun%d DiagnosticPassword 0177 Damit wird PPP angewiesen, auf den angegebenen UNIX-Domainsocket zu hören und Clients nach dem angegebenen Passwort zu fragen, bevor der Zugang Gewährt wird. Das %d wird durch die Nummer des benutzten tun-Devices ersetzt. Wenn ein Socket eingerichtet ist, kann das Programm &man.pppctl.8; in Skripten verwendet werden, mit denen in das laufende Programm eingegriffen wird. Interne NAT von PPP benutzen PPP NAT PPP kann Network Address Translation (NAT) ohne Hilfe des Kernels durchführen. Wenn Sie diese Funktion benutzen wollen, fügen Sie die folgende Zeile in /etc/ppp/ppp.conf ein: PPP has ability to use internal NAT without kernel diverting capabilities. This functionality may be enabled by the following line in /etc/ppp/ppp.conf: nat enable yes Sie können NAT mit der Option auf der Kommandozeile von PPP aktivieren. Weiterhin kann NAT in /etc/rc.conf mit der Variablen ppp_nat aktiviert werden. Dies ist auch die Voreinstellung. Die nachstehende /etc/ppp/ppp.conf benutzt NAT für bestimmte eingehende Verbindungen: nat port tcp 10.0.0.2:ftp ftp nat port tcp 10.0.0.2:http http Wenn Sie Verbindungen von außen überhaupt nicht trauen, benutzen Sie die folgende Zeile: nat deny_incoming yes Abschließende Systemkonfiguration PPP Konfiguration Sie haben ppp nun konfiguriert, aber bevor PPP eingesetzt werden kann, gibt noch einige weitere Dinge zu erledigen, die alle die Bearbeitung der Datei /etc/rc.conf erfordern. Gehen Sie diese Datei von oben nach unten durch, und stellen Sie als erstes sicher, dass die Zeile hostname= vorhanden ist: hostname="foo.example.com" Wenn Ihnen Ihr ISP eine statische IP-Adresse und einen Namen zugewiesen hat, ist es wahrscheinlich am besten, wenn Sie diesen Namen als Hostnamen verwenden. Schauen Sie nach der Variable network_interfaces. Wenn Sie Ihr System so konfigurieren möchten, dass bei Bedarf eine Verbindung zu Ihrem ISP aufgebaut wird, sollten Sie das Device tun0 zu der Liste hinzufügen oder es andernfalls entfernen. network_interfaces="lo0 tun0" ifconfig_tun0= Die Variable ifconfig_tun0 sollte leer sein und eine Datei namens /etc/start_if.tun0 sollte erstellt werden. Diese Datei sollte die nachfolgende Zeile enthalten: ppp -auto mysystem Dieses Skript startet Ihren ppp-Dæmon im Automatik-Modus. Es wird bei der Netzwerkkonfiguration ausgeführt. Wenn Ihr Rechner als Gateway für ein LAN fungiert, möchten Sie vielleicht auch die Option verwenden. In der Manual-Seite sind weitere Einzelheiten hierzu zu finden. Mit folgender Zeile in der Datei /etc/rc.conf verhindern Sie den Start eines Routerprogramms: router_enable="NO" routed Es ist wichtig, dass der routed Dæmon nicht gestartet wird (was standardmäßig geschehen würde), da routed dazu tendiert, die von ppp erstellten Einträge der Standardroute zu überschreiben. Es ist außerdem sinnvoll, darauf zu achten, dass die Zeile sendmail_flags nicht die Option enthält, da sendmail sonst ab und zu die Netzwerkverbindung prüfen wird, was möglicherweise dazu führt, dass sich Ihr Rechner einwählt. Sie können hier Folgendes angeben: sendmail_flags="-bd" sendmail Der Nachteil dieser Lösung ist, dass Sie sendmail nach jedem Aufbau einer ppp-Verbindung auffordern müssen, die Mailwarteschlange zu überprüfen, indem Sie Folgendes eingeben: &prompt.root; /usr/sbin/sendmail -q Vielleicht möchten Sie den Befehl !bg in der Datei ppp.linkup verwenden, um dies zu automatisieren: 1 provider: 2 delete ALL 3 add 0 0 HISADDR 4 !bg sendmail -bd -q30m SMTP Wenn Sie dies nicht möchten, ist es möglich, einen dfilter einzusetzen, um SMTP-Verkehr zu blockieren. Weitere Einzelheiten hierzu finden Sie in den Beispieldateien. Das Einzige, was nun noch zu tun bleibt, ist Ihren Rechner neu zu starten. Nach dem Neustart können Sie entweder: &prompt.root; ppp und danach dial provider eingeben, um eine PPP-Sitzung zu starten, oder Sie geben: &prompt.root; ppp -auto provider ein, um ppp bei Datenverkehr aus Ihrem Netzwerk heraus, automatisch eine Verbindung herstellen zu lassen (vorausgesetzt Sie haben kein start_if.tun0 Skript erstellt). Zusammenfassung Die folgenden Schritte sind nötig, wenn ppp zum ersten Mal eingerichtet werden soll: Clientseite: Stellen Sie sicher, dass das tun Device in den Kernel eingebaut ist. Vergewissern Sie sich, dass die Gerätedatei tunX im Verzeichnis /dev vorhanden ist. Bearbeiten Sie die Datei /etc/ppp/ppp.conf. Das Beispiel pmdemand sollte für die meisten ISP ausreichen. Wenn Sie eine dynamische IP-Adresse haben, erstellen Sie einen Eintrag in der Datei /etc/ppp/ppp.linkup. Aktualisieren Sie die Datei /etc/rc.conf. Erstellen Sie das Skript start_if.tun0, wenn Sie einen bedarfgesteuerten Einwahlprozess (demand dialing) benötigen. Serverseite: Stellen Sie sicher, dass das tun Device in den Kernel eingebaut ist. Vergewissern Sie sich, dass die Gerätedatei tunX im Verzeichnis /dev vorhanden ist Erstellen Sie einen Eintrag in der Datei /etc/passwd (verwenden Sie dazu das Programm &man.vipw.8;). Erstellen Sie ein Profil im Heimatverzeichnis des Benutzers, das ppp -direct direct-server o.Ä. ausführt. Bearbeiten Sie die Datei /etc/ppp/ppp.conf. Das Beispiel direct-server sollte ausreichen. Erzeugen Sie einen Eintrag in /etc/ppp/ppp.linkup. Aktualisieren Sie die Datei /etc/rc.conf. Gennady B. Sorokopud Teile wurden ursprünglich beigetragen von Robert Huff Kernel-PPP Einrichtung von Kernel-PPP PPP Kernel-PPP Bevor Sie PPP auf Ihrem Computer einrichten, sollten Sie dafür sorgen, dass pppd im Verzeichnis /usr/sbin vorhanden ist und /etc/ppp existiert. pppd kann auf zweierlei Weise arbeiten: - Als Client — Sie möchten + Als Client – Sie möchten Ihren Rechner mit einem Netz verbinden, indem Sie eine serielle PPP-Verbindung aufbauen. PPP Server - Als Server — Ihr Rechner ist in + Als Server – Ihr Rechner ist in ein Netzwerk eingebunden und stellt die PPP-Verbindung für andere Rechner im Netzwerk her. In beiden Fällen werden Sie eine Datei mit den benötigten Optionen erstellen müssen (/etc/ppp/options oder, wenn mehr als ein Benutzer PPP verwendet, ~/.ppprc). Sie benötigen außerdem eine Software (vorzugsweise kermit), mit der Sie seriell/per Modem wählen und eine Verbindung zu dem entfernten Host aufbauen können. Trev Roydhouse Basierend auf Informationen von Verwendung von <command>pppd</command> als Client PPP Client Cisco Die folgende Datei /etc/ppp/options kann für einen Verbindungsaufbau mit PPP zu einem Cisco Terminalserver verwendet werden. crtscts # enable hardware flow control modem # modem control line noipdefault # remote PPP server must supply your IP address. # if the remote host doesn't send your IP during IPCP # negotiation , remove this option passive # wait for LCP packets domain ppp.foo.com # put your domain name here :<remote_ip> # put the IP of remote PPP host here # it will be used to route packets via PPP link # if you didn't specified the noipdefault option # change this line to <local_ip>:<remote_ip> defaultroute # put this if you want that PPP server will be your # default router Um eine Verbindung herzustellen, sollten Sie: kermit Modem Mit kermit (oder einem anderen Modemprogramm) den entfernten Host anwählen und Ihren Benutzernamen sowie Ihr Passwort (oder was sonst nötig ist, um PPP auf dem entfernten Host zu aktivieren) eingeben. kermit beenden (ohne die Verbindung abzubrechen). Folgendes eingeben: &prompt.root; /usr/src/usr.sbin/pppd.new/pppd /dev/tty01 19200 Achten Sie darauf, dass sie eine geeignete Geschwindigkeit wählen und das richtige Device verwenden. Nun ist Ihr Computer mit Hilfe von PPP verbunden. Wenn die Verbindung nicht funktionieren sollte, können Sie die Option in die Datei /etc/ppp/options eintragen und die Ausgaben auf der Konsole beobachten, um die Fehler zu finden. Das folgende Skript /etc/ppp/pppup führt alle 3 Schritte automatisch aus: #!/bin/sh ps ax |grep pppd |grep -v grep pid=`ps ax |grep pppd |grep -v grep|awk '{print $1;}'` if [ "X${pid}" != "X" ] ; then echo 'killing pppd, PID=' ${pid} kill ${pid} fi ps ax |grep kermit |grep -v grep pid=`ps ax |grep kermit |grep -v grep|awk '{print $1;}'` if [ "X${pid}" != "X" ] ; then echo 'killing kermit, PID=' ${pid} kill -9 ${pid} fi ifconfig ppp0 down ifconfig ppp0 delete kermit -y /etc/ppp/kermit.dial pppd /dev/tty01 19200 kermit /etc/ppp/kermit.dial ist ein kermit-Skript das den Einwählvorgang und alle notwendigen Autorisationen auf dem entfernten Host durchführt (ein Beispiel für ein solches Skript ist im Anhang zu diesem Dokument zu finden). Verwenden Sie das folgende Skript /etc/ppp/pppdown, um die PPP-Verbindung abzubrechen: #!/bin/sh pid=`ps ax |grep pppd |grep -v grep|awk '{print $1;}'` if [ X${pid} != "X" ] ; then echo 'killing pppd, PID=' ${pid} kill -TERM ${pid} fi ps ax |grep kermit |grep -v grep pid=`ps ax |grep kermit |grep -v grep|awk '{print $1;}'` if [ "X${pid}" != "X" ] ; then echo 'killing kermit, PID=' ${pid} kill -9 ${pid} fi /sbin/ifconfig ppp0 down /sbin/ifconfig ppp0 delete kermit -y /etc/ppp/kermit.hup /etc/ppp/ppptest Prüfen Sie, ob PPP immer noch läuft, indem Sie /usr/etc/ppp/ppptest ausführen. Dieses Skript sollte folgendermaßen aussehen: #!/bin/sh pid=`ps ax| grep pppd |grep -v grep|awk '{print $1;}'` if [ X${pid} != "X" ] ; then echo 'pppd running: PID=' ${pid-NONE} else echo 'No pppd running.' fi set -x netstat -n -I ppp0 ifconfig ppp0 Um die Modemverbindung abzubrechen, können Sie das Skript /etc/ppp/kermit.hup verwenden, das Folgendes enthalten sollte: set line /dev/tty01 ; put your modem device here set speed 19200 set file type binary set file names literal set win 8 set rec pack 1024 set send pack 1024 set block 3 set term bytesize 8 set command bytesize 8 set flow none pau 1 out +++ inp 5 OK out ATH0\13 echo \13 exit Hier ist eine alternative Methode, bei der chat an Stelle von kermit eingesetzt wird. Die folgenden beiden Dateien reichen aus, um eine pppd Verbindung herzustellen. /etc/ppp/options: /dev/cuaa1 115200 crtscts # enable hardware flow control modem # modem control line connect "/usr/bin/chat -f /etc/ppp/login.chat.script" noipdefault # remote PPP serve must supply your IP address. # if the remote host doesn't send your IP during # IPCP negotiation, remove this option passive # wait for LCP packets domain <your.domain> # put your domain name here : # put the IP of remote PPP host here # it will be used to route packets via PPP link # if you didn't specified the noipdefault option # change this line to <local_ip>:<remote_ip> defaultroute # put this if you want that PPP server will be # your default router /etc/ppp/login.chat.script: Die folgenden Angaben sollten in einer Zeile stehen. ABORT BUSY ABORT 'NO CARRIER' "" AT OK ATDT<phone.number> CONNECT "" TIMEOUT 10 ogin:-\\r-ogin: <login-id> TIMEOUT 5 sword: <password> Wenn diese Dateien richtig installiert und modifiziert sind, müssen Sie pppd, nur noch wie folgt starten: &prompt.root; pppd Verwendung von <command>pppd</command> als Server /etc/ppp/options sollte etwa Folgendes enthalten: crtscts # Hardware flow control netmask 255.255.255.0 # netmask ( not required ) 192.114.208.20:192.114.208.165 # ip's of local and remote hosts # local ip must be different from one # you assigned to the ethernet ( or other ) # interface on your machine. # remote IP is ip address that will be # assigned to the remote machine domain ppp.foo.com # your domain passive # wait for LCP modem # modem line Das folgende Skript /etc/ppp/pppserv lässt pppd als Server zu arbeiten: #!/bin/sh ps ax |grep pppd |grep -v grep pid=`ps ax |grep pppd |grep -v grep|awk '{print $1;}'` if [ "X${pid}" != "X" ] ; then echo 'killing pppd, PID=' ${pid} kill ${pid} fi ps ax |grep kermit |grep -v grep pid=`ps ax |grep kermit |grep -v grep|awk '{print $1;}'` if [ "X${pid}" != "X" ] ; then echo 'killing kermit, PID=' ${pid} kill -9 ${pid} fi # reset ppp interface ifconfig ppp0 down ifconfig ppp0 delete # enable autoanswer mode kermit -y /etc/ppp/kermit.ans # run ppp pppd /dev/tty01 19200 Verwenden Sie das Skript/etc/ppp/pppservdown, um den Server zu beenden: #!/bin/sh ps ax |grep pppd |grep -v grep pid=`ps ax |grep pppd |grep -v grep|awk '{print $1;}'` if [ "X${pid}" != "X" ] ; then echo 'killing pppd, PID=' ${pid} kill ${pid} fi ps ax |grep kermit |grep -v grep pid=`ps ax |grep kermit |grep -v grep|awk '{print $1;}'` if [ "X${pid}" != "X" ] ; then echo 'killing kermit, PID=' ${pid} kill -9 ${pid} fi ifconfig ppp0 down ifconfig ppp0 delete kermit -y /etc/ppp/kermit.noans Mit dem kermit-Skript (/etc/ppp/kermit.ans) lässt sich die Funktion Ihres Modems, automatisch zu antworten, ein- bzw. ausschalten. Es sollte folgendermaßen aussehen: set line /dev/tty01 set speed 19200 set file type binary set file names literal set win 8 set rec pack 1024 set send pack 1024 set block 3 set term bytesize 8 set command bytesize 8 set flow none pau 1 out +++ inp 5 OK out ATH0\13 inp 5 OK echo \13 out ATS0=1\13 ; change this to out ATS0=0\13 if you want to disable ; autoanswer mod inp 5 OK echo \13 exit Ein Skript namens /etc/ppp/kermit.dial wird für die Einwahl und Authentifizierung am entfernten Host verwendet. Sie müssen es noch an Ihre lokalen Gegebenheiten anpassen. Geben Sie in diesem Skript Ihren Benutzernamen und Ihr Passwort ein. In Abhängigkeit von der Reaktion Ihres Modems und des entfernten Hosts, werden Sie auch noch die input Anweisungen verändern müssen. ; ; put the com line attached to the modem here: ; set line /dev/tty01 ; ; put the modem speed here: ; set speed 19200 set file type binary ; full 8 bit file xfer set file names literal set win 8 set rec pack 1024 set send pack 1024 set block 3 set term bytesize 8 set command bytesize 8 set flow none set modem hayes set dial hangup off set carrier auto ; Then SET CARRIER if necessary, set dial display on ; Then SET DIAL if necessary, set input echo on set input timeout proceed set input case ignore def \%x 0 ; login prompt counter goto slhup :slcmd ; put the modem in command mode echo Put the modem in command mode. clear ; Clear unread characters from input buffer pause 1 output +++ ; hayes escape sequence input 1 OK\13\10 ; wait for OK if success goto slhup output \13 pause 1 output at\13 input 1 OK\13\10 if fail goto slcmd ; if modem doesn't answer OK, try again :slhup ; hang up the phone clear ; Clear unread characters from input buffer pause 1 echo Hanging up the phone. output ath0\13 ; hayes command for on hook input 2 OK\13\10 if fail goto slcmd ; if no OK answer, put modem in command mode :sldial ; dial the number pause 1 echo Dialing. output atdt9,550311\13\10 ; put phone number here assign \%x 0 ; zero the time counter :look clear ; Clear unread characters from input buffer increment \%x ; Count the seconds input 1 {CONNECT } if success goto sllogin reinput 1 {NO CARRIER\13\10} if success goto sldial reinput 1 {NO DIALTONE\13\10} if success goto slnodial reinput 1 {\255} if success goto slhup reinput 1 {\127} if success goto slhup if < \%x 60 goto look else goto slhup :sllogin ; login assign \%x 0 ; zero the time counter pause 1 echo Looking for login prompt. :slloop increment \%x ; Count the seconds clear ; Clear unread characters from input buffer output \13 ; ; put your expected login prompt here: ; input 1 {Username: } if success goto sluid reinput 1 {\255} if success goto slhup reinput 1 {\127} if success goto slhup if < \%x 10 goto slloop ; try 10 times to get a login prompt else goto slhup ; hang up and start again if 10 failures :sluid ; ; put your userid here: ; output ppp-login\13 input 1 {Password: } ; ; put your password here: ; output ppp-password\13 input 1 {Entering SLIP mode.} echo quit :slnodial echo \7No dialtone. Check the telephone line!\7 exit 1 ; local variables: ; mode: csh ; comment-start: "; " ; comment-start-skip: "; " ; end: Jim Mock Beigetragen (durch http://node.to/freebsd/how-tos/how-to-freebsd-pppoe.html) von <application>PPP</application> over Ethernet (PPPoE) PPP over Ethernet PPPoE PPP, over Ethernet Dieser Abschnitt beschreibt, wie Sie PPP over Ethernet (PPPoE) einrichten. Konfiguration des Kernels Eine besondere Kernelkonfiguration ist für PPPoE nicht mehr erforderlich. Sofern die notwendige Netgraph Unterstützung nicht in den Kernel eingebaut wurde, wird diese von ppp dynamisch geladen. Einrichtung von <filename>ppp.conf</filename> Dies hier ist ein Beispiel einer funktionierenden ppp.conf: default: set log Phase tun command # you can add more detailed logging if you wish set ifaddr 10.0.0.1/0 10.0.0.2/0 name_of_service_provider: set device PPPoE:xl1 # replace xl1 with your ethernet device set authname YOURLOGINNAME set authkey YOURPASSWORD set dial set login add default HISADDR <application>PPP</application> ausführen Als root, geben Sie ein: &prompt.root; ppp -ddial name_of_service_provider <application>PPP</application> beim Systemstart ausführen Fügen Sie Folgendes in Ihre Datei /etc/rc.conf ein: ppp_enable="YES" ppp_mode="ddial" ppp_nat="YES" # if you want to enable nat for your local network, otherwise NO ppp_profile="name_of_service_provider" Verwendung einer PPPoE-Dienstbezeichnung (service tag) Manchmal kann es notwendig sein, eine Dienstbezeichnung (service tag) zu verwenden, um eine Verbindung aufzubauen. Dienstbezeichnungen werden eingesetzt, um zwischen verschiedenen PPPoE-Servern unterscheiden zu können, die einem bestehenden Netzwerk zugeteilt sind. Die erforderlichen Dienstbezeichnungen sollten in der Dokumentation, zu finden sein, die Ihnen Ihr ISP zur Verfügung gestellt hat. Wenn Sie diese Informationen dort nicht finden, fragen Sie beim technischen Kundendienst Ihres ISP danach. Als letzte Möglichkeit, bleibt die Methode, die von dem Programm Roaring Penguin PPPoE vorgeschlagen wird, das in der Ports-Sammlung zu finden ist. Bedenken Sie aber, dass dadurch Daten Ihres Modems gelöscht werden können, so dass es nicht mehr benutzt werden kann. Überlegen Sie also genau, ob Sie dies machen wollen. Installieren Sie einfach das Programm, das Ihnen Ihr Provider zusammen mit dem Modem geliefert hat. Dann gehen Sie in das System Menü dieses Programms. Der Name Ihres Profils, sollte in der Liste aufgeführt sein. Normalerweise ist dies ISP. Der Name des Profils (service tag) wird im Eintrag für die PPPoE-Konfiguration in der Datei ppp.conf verwendet, als der Teil des Befehls set device (die manpage &man.ppp.8; enthält Einzelheiten hierzu), der den Provider angibt. Dieser Eintrag sollte folgendermaßen aussehen: set device PPPoE:xl1:ISP Vergessen Sie nicht, statt xl1 das richtige Device Ihrer Netzwerkkarte anzugeben. Denken sie auch daran, ISP durch das Profil, das Sie oben gefunden haben zu ersetzen. Weitere Informationen bieten: Nutzung von T-DSL und T-Online mit FreeBSD von Udo Erdelhoff Cheaper Broadband with FreeBSD on DSL von Renaud Waldura. PPPoE mit einem 3Com HomeConnect ADSL Modem Dual Link Dieses Modem folgt nicht dem RFC 2516 (A Method for transmitting PPP over Ethernet (PPPoE), verfasst von L. Mamakos, K. Lidl, J. Evarts, D. Carrel, D. Simone, und R. Wheeler). Stattdessen wurden andere Pakettyp-Codes für die Ethernet Frames verwendet. Bitte beschweren Sie sich unter 3Com, wenn Sie der Ansicht sind, dass dieses Modem die PPPoE-Spezifikation einhalten sollte. Um FreeBSD in die Lage zu versetzen, mit diesem Gerät zu kommunizieren, muss ein sysctl Befehl angegeben werden. Dies kann beim Systemstart automatisch geschehen, indem die Datei /etc/sysctl.conf angepasst wird: net.graph.nonstandard_pppoe=1 oder, wenn der Befehl unmittelbar wirksam werden soll, durch sysctl net.graph.nonstandard_pppoe=1. Da hiermit eine systemweit gültige Einstellung vorgenommen wird, ist es nicht möglich, gleichzeitig mit einem normalen PPPoE-Client oder Server und einem 3Com HomeConnect ADSL Modem zu kommunizieren. <application>PPP</application> over ATM (PPPoA) PPP over ATM PPPoA PPP, over ATM Nachfolgend wird beschrieben, wie PPP over ATM (PPPoA) eingerichtet wird. PPPoA ist vor allem unter europäischen DSL-Providern populär. Der Einsatz von PPPoA mit dem Alcatel Speedtouch USB PPPoA-Unterstützung für dieses Gerät ist unter FreeBSD als Port verfügbar, da die Firmware unter Alcatels Lizenzvereinbarung vertrieben wird und deshalb nicht mit dem FreeBSD-Basissystem frei verteilt werden kann. Um die Software zu installieren, verwenden Sie einfach die Ports-Sammlung. Installieren Sie den Port net/pppoa und folgen Sie den dabei angegebenen Instruktionen. Die Verwendung von mpd Sie können mpd verwenden, um zu einer Reihe von Diensten, insbesondere pptp-Diensten eine Verbindung herzustellen. Sie finden mpd in der Ports-Sammlung unter net/mpd. Zuerst müssen Sie den Port installieren, um danach mpd entsprechend Ihren Anforderungen und den Vorgaben Ihres Providers konfigurieren zu können. Der Port installiert auch einige gut dokumentierte Beispielkonfigurationsdateien in PREFIX/etc/mpd/. Beachten Sie, dass PREFIX hier das Verzeichnis angibt, in das Ihre Ports installiert werden. Standardmäßig ist dies das Verzeichnis /usr/local/. Ein kompletter Leitfaden zur Konfiguration von mpd ist im HTML-Format verfügbar, sobald der Port installiert ist. Dieser ist in PREFIX/share/mpd/ zu finden. Hier ist eine Beispielkonfiguration, um mit mpd eine Verbindung zu einem ADSL-Dienst aufzubauen. Die Konfiguration ist auf zwei Dateien verteilt. Zunächst die Datei mpd.conf: default: load adsl adsl: new -i ng0 adsl adsl set bundle authname username set bundle password password set bundle disable multilink set link no pap actcomp protocomp set link disable chap set link accept chap set link keep-alive 30 10 set ipcp no vjcomp set ipcp ranges 0.0.0.0/0 0.0.0.0/0 set iface route default set iface disable on-demand set iface enable proxy-arp set iface idle 0 open Der Benutzername, den Sie zur Authentifizierung bei Ihrem ISP verwenden. Das Passwort, das Sie zur Authentifizierung bei Ihrem ISP verwenden. Die Datei mpd.links enthält Informationen über die Verbindung(en), die Sie aufbauen möchten. Eine Beispieldatei mpd.links, die das vorige Beispiel ergänzt, wird unten angegeben: adsl: set link type pptp set pptp mode active set pptp enable originate incoming outcall set pptp self 10.0.0.140 set pptp peer 10.0.0.138 Ein Verbindungsaufbau kann einfach durch Eingabe des folgenden Befehls als root gestartet werden: &prompt.root; mpd -b adsl Sie können sich den Status der Verbindung durch folgenden Befehl anzeigen lassen: &prompt.user; ifconfig ng0 : flags=88d1<UP,POINTOPOINT,RUNNING,NOARP,SIMPLEX,MULTICAST> mtu 1500 inet 216.136.204.117 --> 204.152.186.171 netmask 0xffffffff Die Verwendung von mpd ist der empfehlenswerteste Weg, um mit &os; eine Verbindung zu einem ADSL-Dienst aufzubauen. Die Verwendung von pptpclient Es ist außerdem möglich, mit FreeBSD eine Verbindung zu anderen PPPoA-Diensten aufzubauen. Dazu wird net/pptpclient verwendet. Um mit net/pptpclient eine eine Verbindung zu einem DSL-Dienst aufbauen zu können, müssen Sie den entsprechenden Port bzw. das Paket installieren und die Datei /etc/ppp/ppp.conf bearbeiten. Sie müssen root sein, um diese Schritte durchführen zu können. Eine Beispieldatei für ppp.conf ist weiter unten angegeben. Weitere Informationen zu den Optionen von ppp.conf bietet die Manual-Seite ppp &man.ppp.8;: adsl: set log phase chat lcp ipcp ccp tun command set timeout 0 enable dns set authname username set authkey password set ifaddr 0 0 add default HISADDR Der Benutzername für den Zugang zu den Diensten Ihres ISP. Das Passwort für Ihren Account. Weil Sie Ihr Passwort in der Datei ppp.conf in Klartext angeben müssen, sollten Sie sicherstellen, dass niemand den Inhalt dieser Datei lesen kann. Die folgende Reihe von Befehlen stellt sicher, dass die Datei nur von root lesbar ist. Zusätzliche Informationen bieten die Manual-Seiten &man.chmod.1; und &man.chown.8;: &prompt.root; chown root:wheel /etc/ppp/ppp.conf &prompt.root; chmod 600 /etc/ppp/ppp.conf Dies wird einen Tunnel für eine PPP-Session zu Ihrem DSL-Router öffnen. Ethernet DSL-Modems haben eine vorkonfigurierte LAN IP-Adresse, mit der Sie eine Verbindung aufbauen. Im Falle des Alcatel Speedtouch Home handelt es sich dabei um die Adresse 10.0.0.138. In der Dokumentation Ihres Routers sollte angegeben sein, welche Adresse Ihr Gerät verwendet. Um den Tunnel zu öffnen und eine ppp-Session zu starten, führen Sie bitte folgendes Kommando aus: &prompt.root; pptp address isp Vielleicht möchten Sie ein kaufmännisches Und (&) an das Ende oben angegebenen Kommandos anfügen, da pptp sonst den Prompt nicht zurückgibt. Ein virtuelles Tunnel-Device tun wird für das Zusammenspiel der Prozesse pptp und ppp geschaffen. Wenn Sie den Prompt zurückerhalten haben oder der pptp-Prozess das Vorliegen einer Verbindung bestätigt, können Sie den Tunnel folgendermaßen überprüfen: &prompt.user; ifconfig tun0 tun0: flags=8051<UP,POINTOPOINT,RUNNING,MULTICAST> mtu 1500 inet 216.136.204.21 --> 204.152.186.171 netmask 0xffffff00 Opened by PID 918 Wenn Sie nicht in der Lage sein sollten eine Verbindung aufzubauen, prüfen Sie die Konfiguration Ihres Routers, den Sie normalerweise per telnet oder mit einem Web-Browser erreichen können. Falls dennoch keine Verbindung zustande kommt, sollten Sie die Ausgabe des Befehls pptp und den Inhalt der ppp-Logdatei, /var/log/ppp.log auf Hinweise durchsehen. Satoshi Asami Ursprünglich beigetragen von Guy Helmer Mit Beiträgen von Piero Serini SLIP SLIP Einrichtung eines SLIP-Clients SLIP Client Im Folgenden wird ein Weg beschrieben, SLIP auf einer FreeBSD Maschine für ein Netzwerk mit festen Hostnamen einzurichten. Bei einer dynamischen Zuweisung des Hostnamens (das heißt wenn sich Ihre Adresse bei jeder Einwahl ändert) wird die Einrichtung wahrscheinlich etwas komplexer aussehen. Bestimmen Sie zuerst, an welcher seriellen Schnittstelle Ihr Modem angeschlossen ist. Viele Leute erzeugen einen symbolischen Link, wie etwa /dev/modem, der auf den wirklichen Gerätenamen /dev/cuaaN verweist. Damit ist es Ihnen möglich, vom eigentlichen Gerätenamen zu abstrahieren, sollten Sie das Modem einmal an eine andere Schnittstelle anschließen müssen. Es kann ziemlich umständlich sein, wenn Sie eine viele Dateien in /etc und .kermrc-Dateien, die über das ganze System verstreut sind, anpassen müssen! /dev/cuaa0 ist COM1, cuaa1 ist COM2, etc. Stellen Sie sicher, dass Folgendes in Ihrer Kernelkonfigurationsdatei steht: pseudo-device sl 1 Dieses pseudo-device ist im GENERIC Kernel enthalten. Falls es von Ihnen nicht gelöscht wurde, sollten Sie hier kein Problem haben. Dinge, die Sie nur einmal erledigen müssen Tragen Sie Ihren lokalen Rechner, das Gateway, sowie die Nameserver in Ihre Datei /etc/hosts ein. Diese Datei sieht bei mir so aus: 127.0.0.1 localhost loghost 136.152.64.181 water.CS.Example.EDU water.CS water 136.152.64.1 inr-3.CS.Example.EDU inr-3 slip-gateway 128.32.136.9 ns1.Example.EDU ns1 128.32.136.12 ns2.Example.EDU ns2 Vergewissern Sie sich, dass in der Datei /etc/host.conf vor steht, wenn Sie ein System vor FreeBSD 5.0 verwenden. Ab FreeBSD 5.0 wird die Datei /etc/nsswitch.conf verwendet, in deren -Zeile vor stehen sollte. Ohne diese Reihenfolge könnten lustige Dinge passieren. Editieren Sie die Datei /etc/rc.conf. Ihren Hostnamen geben Sie an, indem Sie folgende Zeile bearbeiten: hostname="myname.my.domain" Hier sollte der vollständige Internethostname Ihres Rechners angegeben werden. Fügen Sie sl0 zur Liste der Netzwerkinterfaces hinzu, indem Sie die folgende Zeile abändern: network_interfaces="lo0" wird zu: network_interfaces="lo0 sl0" Legen Sie die Startwerte von sl0 fest, indem Sie die Zeile ergänzen: ifconfig_sl0="inet ${hostname} slip-gateway netmask 0xffffff00 up" Defaultroute Den Defaultrouter geben Sie durch die Modifikation folgender Zeile an: defaultrouter="NO" wird zu: defaultrouter="slip-gateway" Erstellen Sie die Datei /etc/resolv.conf, die Folgendes enthält: domain CS.Example.EDU nameserver 128.32.136.9 nameserver 128.32.136.12 Nameserver Domain Name Wie Sie sehen, werden hiermit die Nameserver angegeben. Natürlich hängen die tatsächlichen Domainnamen und Adressen von Ihren Gegebenheiten ab. Legen Sie ein Passwort für root und toor (sowie für alle anderen Accounts die kein Passwort haben) fest. Starten Sie Ihren Rechner neu und überprüfen Sie, ob er mir dem richtigen Hostnamen startet. Aufbau einer SLIP-Verbindung SLIP Verbindungsaufbau Wählen Sie sich ein, geben Sie slip und am Prompt den Namen Ihres Rechners sowie Ihr Passwort ein. Was Sie eingeben müssen, hängt von Ihren Gegebenheiten ab. Wenn Sie kermit verwenden, können Sie ein Skript wie das Folgende verwenden: # kermit setup set modem hayes set line /dev/modem set speed 115200 set parity none set flow rts/cts set terminal bytesize 8 set file type binary # The next macro will dial up and login define slip dial 643-9600, input 10 =>, if failure stop, - output slip\x0d, input 10 Username:, if failure stop, - output silvia\x0d, input 10 Password:, if failure stop, - output ***\x0d, echo \x0aCONNECTED\x0a Natürlich müssen Sie hier Ihren Hostnamen und Ihr Passwort eintragen. Wenn Sie das getan haben, können Sie am kermit-Propmt einfach slip eingeben, um sich zu verbinden. Es ist generell eine schlechte Idee, Ihr Passwort in einer unverschlüsselten Textdatei irgendwo im Dateisystem zu speichern. Tun Sie dies auf Ihr eigenes Risiko. Belassen Sie kermit so (Sie können es mit Ctrl z unterbrechen) und geben Sie als root ein: &prompt.root; slattach -h -c -s 115200 /dev/modem Wenn Sie mit ping Hosts auf der anderen Seite des Routers erreichen können, sind Sie verbunden! Wenn es nicht funktionieren sollte, können Sie versuchen statt als Argument für slattach zu verwenden. Beenden der Verbindung Um slattach zu beenden, geben Sie Folgendes ein: &prompt.root; kill -INT `cat /var/run/slattach.modem.pid` Beachten Sie, dass Sie root sein müssen, um dies durchführen zu können. Kehren Sie zu kermit zurück (mit Hilfe von fg, wenn Sie es unterbrochen haben) und beenden Sie dieses Programm (q). Die slattach Manual-Seite gibt an, dass ifconfig sl0 down verwendet werden soll, um das Interface zu deaktivieren, doch das scheint in meinem Fall keinen Unterschied zu machen. (ifconfig sl0 gibt dasselbe aus). Es kann vorkommen, dass Ihr Modem sich weigert, das Trägersignal zu beenden (mein Modem macht dies oft). In diesem Fall starten Sie einfach kermit und beenden es wieder. Beim zweiten Versuch geht es meist aus. Lösungen bei Problemen Wenn es nicht funktionieren sollte, können Sie mich gerne fragen. Über diese Dinge sind Benutzer bisher gestolpert: Nicht oder in slattach verwenden (Das sollte nicht entscheidend sein, aber einige Benutzer haben berichtet, dass dies ihre Probleme löst). Verwendung von statt (bei einigen Schriftarten kann der Unterschied schwer zu erkennen sein). Probieren Sie ifconfig sl0, um den Status Ihrer Schnittstelle abzufragen. Das Ergebnis könnte beispielsweise so aussehen: &prompt.root; ifconfig sl0 sl0: flags=10<POINTOPOINT> inet 136.152.64.181 --> 136.152.64.1 netmask ffffff00 Wenn ping die Fehlermeldung no route to host ausgibt, kann die Routingtabelle falsch sein. Die Routen können Sie sich mit dem Kommando netstat -r ansehen: &prompt.root; netstat -r Routing tables Destination Gateway Flags Refs Use IfaceMTU Rtt Netmasks: (root node) (root node) Route Tree for Protocol Family inet: (root node) => default inr-3.Example.EDU UG 8 224515 sl0 - - localhost.Exampl localhost.Example. UH 5 42127 lo0 - 0.438 inr-3.Example.ED water.CS.Example.E UH 1 0 sl0 - - water.CS.Example localhost.Example. UGH 34 47641234 lo0 - 0.438 (root node) Die Zahlen im Beispiel stammen von einer recht ausgelasteten Maschine. Die Zahlen auf Ihrem System werden, je nach Netzaktivität, von den gezeigten abweichen. Einrichtung eines SLIP-Servers SLIP Server Dieses Dokument bietet Empfehlungen, wie Sie Ihr FreeBSD-System als SLIP-Server einrichten. Typischerweise bedeutet dies, Ihr System so zu, konfigurieren, dass beim Login automatisch eine Verbindung für entfernte SLIP-Clients aufgebaut wird. Voraussetzungen TCP/IP Netze Dieser Abschnitt ist ausgesprochen technischer Natur, weshalb Hintergrundwissen erforderlich ist. Wir gehen davon aus, dass Sie mit dem TCP/IP Protokoll, insbesondere mit Netzwerk- und Rechneradressierung, Netzwerkmasken, Subnetzen, Routing und Routingprotokollen, wie RIP, vertraut sind. Die Konfiguration von SLIP-Diensten auf einem Einwählserver erfordert die Kenntnis dieser Konzepte. Wenn Sie damit nicht vertraut sein sollten, lesen Sie bitte Craig Hunt's TCP/IP Network Administration publiziert von O'Reilly & Associates, Inc. (ISBN Nummer 0-937175-82-X) oder die Bücher von Douglas Comer über das TCP/IP Protokoll. Modem Wir gehen außerdem davon aus, dass Sie Ihr(e) Modem(s) eingerichtet haben und die entsprechenden Systemdateien so konfiguriert haben, dass Logins durch Ihr Modem zugelassen sind. Wenn Sie Ihr System dafür noch nicht vorbereitet haben, sehen Sie sich bitte das Tutorium zur Konfiguration von Einwähldiensten an. Wenn Sie einen WWW-Browser zur Verfügung haben, schauen Sie in der Liste der Tutorien unter http://www.FreeBSD.org/ nach. Sie können auch die Manual-Seiten &man.sio.4; für Informationen zum Gerätetreiber der seriellen Schnittstelle &man.ttys.5;, &man.gettytab.5;, &man.getty.8;, & &man.init.8; für Informationen zu Rate ziehen, die benötigt werden, um das System so zu konfigurieren, dass Logins über ein Modem akzeptiert werden. &man.stty.1; bietet Informationen zur Einstellung der Parameter der seriellen Schnittstelle (wie beispielsweise clocal für direkt angeschlossene serielle Geräte). Ein kurzer Überblick Mit der normal verwendeten Konfiguration funktioniert der FreeBSD SLIP-Server folgendermaßen: Ein SLIP-Benutzer wählt einen FreeBSD SLIP-Server an und meldet sich mit einer speziellen SLIP Login-ID ein, wobei /usr/sbin/sliplogin als Shell dieses besonderen Accounts dient. Das Programm sliplogin durchsucht die Datei /etc/sliphome/slip.hosts nach einer passenden Zeile für diesen Account. Falls ein Treffer erzielt wird, verbindet es den seriellen Anschluss mit einem verfügbaren SLIP-Interface und führt das Shellskript /etc/sliphome/slip.login aus, um das SLIP-Interface zu konfigurieren. Ein Beispiel für ein Login eines SLIP-Servers Wenn beispielsweise die Kennung eines SLIP-Benutzers, Shelmerg wäre, könnte der Eintrag des Benutzers Shelmerg in der Datei /etc/master.passwd etwa so aussehen: Shelmerg:password:1964:89::0:0:Guy Helmer - SLIP:/usr/users/Shelmerg:/usr/sbin/sliplogin Wenn sich Shelmerg anmeldet, wird sliplogin die Datei /etc/sliphome/slip.hosts nach einer übereinstimmenden Benutzerkennung durchsuchen. So könnte etwa folgende Zeile in /etc/sliphome/slip.hosts stehen: Shelmerg dc-slip sl-helmer 0xfffffc00 autocomp sliplogin wird die passende Zeile finden, den seriellen Anschluss mit dem nächsten verfügbaren SLIP-Interface verbinden und dann /etc/sliphome/slip.login wie hier dargestellt ausführen: /etc/sliphome/slip.login 0 19200 Shelmerg dc-slip sl-helmer 0xfffffc00 autocomp Wenn alles gut läuft, wird /etc/sliphome/slip.login ein ifconfig für das SLIP Interface durchführen, mit dem sich sliplogin verbunden hat (in obigem Beispiel ist das slip 0, der als erster Parameter in der Liste an slip.login übergeben wurde), um die lokale IP-Adresse (dc-slip), die entfernte IP-Adresse (sl-helmer), die Netzmaske des SLIP-Interface (0xfffffc00) und alle zusätzlichen Optionen (autocomp) festzulegen. Wenn etwas schief laufen sollte, bietet, sliplogin normalerweise informative Meldungen durch den Syslog daemon, der die Meldungen standardmäßig nach /var/log/messages schreibt (sehen Sie hierzu auch in den Manual-Seiten für &man.syslogd.8; und &man.syslog.conf.5; nach). Überprüfen Sie vielleicht auch /etc/syslog.conf, um zu sehen was syslogd aufzeichnet und wohin es aufgezeichnet wird. - OK, genug der Beispiele — lassen Sie uns ein + OK, genug der Beispiele – lassen Sie uns ein System einrichten. Kernelkonfiguration Kernel Konfiguration Die FreeBSD Standardkernels haben normalerweise bereits zwei SLIP-Interfaces definiert (sl0 und sl1). Sie können netstat -i verwenden, um zu überprüfen, ob diese beiden Interfaces in Ihrem Kernel definiert sind. Ein Beispiel für die Ausgabe von netstat -i: Name Mtu Network Address Ipkts Ierrs Opkts Oerrs Coll ed0 1500 <Link>0.0.c0.2c.5f.4a 291311 0 174209 0 133 ed0 1500 138.247.224 ivory 291311 0 174209 0 133 lo0 65535 <Link> 79 0 79 0 0 lo0 65535 loop localhost 79 0 79 0 0 sl0* 296 <Link> 0 0 0 0 0 sl1* 296 <Link> 0 0 0 0 0 Die sl0 und sl1 Interfaces, die von netstat -i angezeigt werden, weisen darauf hin, dass zwei SLIP-Interfaces in den Kernel eingebaut sind. (Der Asteriskus nach sl0 und sl1 zeigt an, dass diese Interfaces deaktiviert sind.) Der FreeBSD Standardkernel ist jedoch nicht so konfiguriert, dass Pakete weitergeleitet werden (standardmäßig wird sich ihre FreeBSD Maschine nicht als Router verhalten), aufgrund von Internet RFC Maßgaben für Internet Hosts (vergleichen Sie hierzu RFCs 1009 [Requirements for Internet Gateways], 1122 - [Requirements for Internet Hosts — Communication Layers], + [Requirements for Internet Hosts – Communication Layers], und vielleicht auch 1127 [A Perspective on the Host Requirements RFCs]). Wenn Sie Ihren FreeBSD SLIP-Server als Router einsetzen möchten, müssen Sie die Datei editieren /etc/rc.conf und und den Wert der Variable gateway_enable auf setzen. Danach sollten Sie Ihren Rechner neu starten, damit die neuen Einstellungen wirksam werden. Sie werden im unteren Teil der Konfigurationsdatei des Standardkernels (/sys/i386/conf/GENERIC) die folgende Zeile finden: pseudo-device sl 2 SLIP Dies ist die Zeile, in der die Anzahl der SLIP Devices festgelegt wird, die im Kernel verfügbar sind. Die Zahl am Ende der Zeile gibt die maximale Anzahl an SLIP-Verbindungen an, die gleichzeitig betrieben werden können. Weitere Informationen zur Konfiguration Ihres Kernels, finden Sie in dieses Handbuches. Konfiguration des Sliplogin Wie bereits erwähnt, gibt es im Verzeichnis /etc/sliphome drei Dateien, die Teil der Konfiguration für /usr/sbin/sliplogin sind (sliplogin ist in &man.sliplogin.8; beschrieben): slip.hosts, definiert die SLIP-Benutzer sowie deren IP-Adresse; slip.login, womit normalerweise nur das SLIP-Interface konfiguriert wird und (optional) slip.logout, womit die Auswirkungen von slip.login rückgängig gemacht werden, wenn die serielle Verbindung beendet wird. Konfiguration der Datei <filename>slip.hosts</filename> /etc/sliphome/slip.hosts enthält Zeilen, die mindestens vier durch Leerzeichen getrennte Elemente enthalten: Login-Kennung des SLIP-Benutzers Lokale Adresse (lokal für den SLIP-Server) der SLIP-Verbindung Entfernte Adresse der SLIP-Verbindung Netzwerkmaske Die lokalen und entfernten Adressen können Hostnamen sein, deren zugehörige IP-Adresse durch die Datei /etc/hosts oder mithilfe des Domain Name Service aufgelöst wird. Wie die Adressen aufgelöst werden, hängt auf FreeBSD 5.X von den Einstellungen in /etc/nsswitch.conf und auf FreeBSD 4.X von den Einstellungen in /etc/host.conf ab. Die Netzwerkmaske kann ein Name sein, der durch eine Suche in /etc/networks aufgelöst werden kann. Auf einem Beispielsystem, würde die Datei /etc/sliphome/slip.hosts folgendermaßen aussehen: # # login local-addr remote-addr mask opt1 opt2 # (normal,compress,noicmp) # Shelmerg dc-slip sl-helmerg 0xfffffc00 autocomp Am Ende der Zeile stehen eine oder mehrere der folgenden Optionen. - — keine + – keine Header-Kompression - — Header werden + – Header werden komprimiert - — Header werden + – Header werden komprimiert, sofern die Gegenstelle es erlaubt - — ICMP-Pakete werden + – ICMP-Pakete werden deaktiviert (ping Pakete werden unterdrückt, statt die Ihnen zur Verfügung stehende Bandbreite aufzubrauchen) SLIP TCP/IP Netze Die Auswahl von lokalen und entfernten Adressen für Ihre SLIP-Verbindung, hängt davon ab, ob Sie ein TCP/IP-Subnetz reservieren oder ob Sie proxy ARP auf Ihrem SLIP-Server verwenden (es handelt sich nicht um echtes proxy ARP, aber dieser Begriff wird in diesem Abschnitt verwendet, um diesen Sachverhalt zu beschreiben). Wenn Sie nicht sicher sind, welche Methode Sie wählen sollen oder wie IP-Adressen zugewiesen werden, lesen Sie bitte in den Büchern zum Thema TCP/IP nach, die als Voraussetzungen für SLIP () angegeben worden sind oder fragen Sie Ihren IP-Netzwerkadministrator. Wenn Sie für Ihre SLIP-Clients ein eigenes Subnetz verwenden, werden Sie die Nummer des Subnetzes aus der Ihnen zugewiesenen IP-Netzwerknummer zuteilen und die IP-Adressen Ihrer SLIP-Clients aus diesem Subnetz verwenden müssen. Dann können Sie eine statische Route zu Ihrem SLIP-Subnetz über Ihren SLIP-Server auf Ihren nächsten IP-Router konfigurieren. Ethernet Wenn Sie aber andererseits die proxy ARP Methode verwenden möchten, werden Sie die IP-Adressen Ihrer SLIP-Clients aus dem Subnetz Ihres SLIP-Server nehmen und die Skripte /etc/sliphome/slip.login /etc/sliphome/slip.logout anpassen müssen, damit diese &man.arp.8; zur Verwaltung der proxy-ARP-Einträge in der ARP-Tabelle Ihres SLIP-Servers verwenden Konfiguration von <filename>slip.login</filename> Eine typische Datei /etc/sliphome/slip.login sieht folgendermaßen aus: #!/bin/sh - # # @(#)slip.login 5.1 (Berkeley) 7/1/90 # # generic login file for a slip line. sliplogin invokes this with # the parameters: # 1 2 3 4 5 6 7-n # slipunit ttyspeed loginname local-addr remote-addr mask opt-args # /sbin/ifconfig sl$1 inet $4 $5 netmask $6 Diese slip.login Datei führt lediglich ifconfig für das entsprechende SLIP-Interface mit den lokalen und entfernten Adressen und der Netzwerkmaske des SLIP-Interface aus. Wenn Sie sich dafür entschieden haben, die proxy ARP Methode zu verwenden (statt eines separaten Subnetzes für Ihre SLIP-Clients) sollte Ihre Datei /etc/sliphome/slip.login etwa folgendermaßen aussehen: #!/bin/sh - # # @(#)slip.login 5.1 (Berkeley) 7/1/90 # # generic login file for a slip line. sliplogin invokes this with # the parameters: # 1 2 3 4 5 6 7-n # slipunit ttyspeed loginname local-addr remote-addr mask opt-args # /sbin/ifconfig sl$1 inet $4 $5 netmask $6 # Answer ARP requests for the SLIP client with our Ethernet addr /usr/sbin/arp -s $5 00:11:22:33:44:55 pub Die zusätzliche Zeile arp -s $5 00:11:22:33:44:55 pub in der Datei slip.login erzeugt einen ARP-Eintrag in der ARP-Tabelle des SLIP-Servers. Dieser ARP-Eintrag veranlasst den SLIP-Server mit seiner Ethernet MAC-Adresse zu antworten, sobald ein anderer IP-Knoten im Ethernet mit der IP-Adresse des SLIP-Clients Kontakt aufnehmen möchte. Ethernet MAC Adresse Wenn Sie das Beispiel von oben verwenden, achten Sie darauf die Ethernet MAC-Adresse (00:11:22:33:44:55) durch die MAC-Adresse der Ethernetkarte Ihres Systems zu ersetzen. Sonst wird Ihr proxy ARP sicher nicht funktionieren! Sie können die MAC-Adresse Ihres SLIP-Servers herausfinden, indem Sie sich die Ausgabe von netstat -i ansehen. Die zweite Zeile der Ausgabe sollte ungefähr aussehen wie diese hier: ed0 1500 <Link>0.2.c1.28.5f.4a 191923 0 129457 0 116 Dies zeigt an, dass die Ethernet MAC-Adresse dieses Systems 00:02:c1:28:5f:4a lautet. Die Punkte in der Ethernet MAC-Adresse, die von netstat -i ausgegeben wird, müssen durch Doppelpunkte ersetzt werden. Bei jeder einstelligen Hexadezimalzahl sollten außerdem führende Nullen hinzugefügt werden, um die Adresse in die Form zu bringen, die von &man.arp.8; verlangt wird. Die Manual-Seite von &man.arp.8; bietet hierzu eine vollständige Übersicht. Wenn Sie die Dateien /etc/sliphome/slip.login und /etc/sliphome/slip.logout erstellen, müssen diese ausführbar gemacht werden (chmod 755 /etc/sliphome/slip.login /etc/sliphome/slip.logout), da sliplogin auf deren Ausführbarkeit angewiesen ist. Konfiguration von <filename>slip.logout</filename> Die Datei/etc/sliphome/slip.logout ist nicht zwingend erforderlich (außer Sie verwenden proxy ARP), aber falls Sie diese Datei erzeugen möchten, ist hier ein Beispiel für ein grundlegendes slip.logout Skript: #!/bin/sh - # # slip.logout # # logout file for a slip line. sliplogin invokes this with # the parameters: # 1 2 3 4 5 6 7-n # slipunit ttyspeed loginname local-addr remote-addr mask opt-args # /sbin/ifconfig sl$1 down Wenn Sie proxy ARP einsetzen, muss /etc/sliphome/slip.logout den ARP-Eintrag für den SLIP-Client löschen: #!/bin/sh - # # @(#)slip.logout # # logout file for a slip line. sliplogin invokes this with # the parameters: # 1 2 3 4 5 6 7-n # slipunit ttyspeed loginname local-addr remote-addr mask opt-args # /sbin/ifconfig sl$1 down # Quit answering ARP requests for the SLIP client /usr/sbin/arp -d $5 arp -d $5 löscht den ARP-Eintrag, den die proxy ARP slip.login hinzufügte, als der SLIP-Client sich eingeloggt hatte. Es soll nochmals darauf hingewiesen werden, dass für die Datei /etc/sliphome/slip.logout das Ausführungs-Bit gesetzt werden muss, nachdem die Datei erstellt worden ist (z.B. chmod 755 /etc/sliphome/slip.logout). Überlegungen zum Routing SLIP Routing Wenn Sie nicht die proxy ARP Methode benutzen, um Datenpakete zwischen Ihren SLIP-Clients und dem Rest Ihres Netzwerkes (oder vielleicht dem Internet) zu routen, werden Sie wahrscheinlich statische Routen zu Ihrem nächsten Standardrouter hinzufügen müssen, um Pakete aus dem Subnetz Ihres SLIP-Clients über Ihren SLIP-Server weiterzuleiten. Statische Routen Statische Routen Das Hinzufügen von statischen Routen zu Ihrem nächsten Standardrouter kann problematisch sein (oder unmöglich, wenn Sie nicht die erforderliche Berechtigung haben...). Wenn Sie in Ihrer Organisation ein Netzwerk mit mehreren Routern haben, müssen einige Router, wie etwa die von Cisco und Proteon hergestellten, nicht nur mit der statischen Route zum SLIP-Subnetz konfiguriert werden, sondern es muss ihnen auch mitgeteilt werden, über welche statischen Routen sie andere Router informieren sollen. Daher ist einiges an Fachwissen und Problemlösungskompetenz erforderlich, um auf statischen Routen basierendes Routing erfolgreich einzurichten. Der Einsatz von <command>gated</command> gated gated ist inzwischen proprietäre Software und steht der Öffentlichkeit nicht mehr als Sourcecode zur Verfügung (weitere Informationen hierzu sind auf der gated Webseite zu finden). Dieser Abschnitt existiert lediglich, um die Rückwärtskompatibilität für diejenigen sicherzustellen, die noch eine ältere Version verwenden. Eine Alternative zu dem aufwändigen Einsatz von statischen Routen ist die Installation von gated auf Ihrem FreeBSD SLIP-Server. gated kann so konfiguriert werden, dass er die passenden Routingprotokolle (RIP/OSPF/BGP/EGP) verwendet, um die anderen Router über Ihr SLIP-Subnetz zu informieren. Sie müssen die Datei /etc/gated.conf erstellen, um gated zu konfigurieren. Hier ist eine Beispieldatei, ähnlich derjenigen, die der Autor auf einem FreeBSD SLIP-Server verwendet hat: # # gated configuration file for dc.dsu.edu; for gated version 3.5alpha5 # Only broadcast RIP information for xxx.xxx.yy out the ed Ethernet interface # # # tracing options # traceoptions "/var/tmp/gated.output" replace size 100k files 2 general ; rip yes { interface sl noripout noripin ; interface ed ripin ripout version 1 ; traceoptions route ; } ; # # Turn on a bunch of tracing info for the interface to the kernel: kernel { traceoptions remnants request routes info interface ; } ; # # Propagate the route to xxx.xxx.yy out the Ethernet interface via RIP # export proto rip interface ed { proto direct { xxx.xxx.yy mask 255.255.252.0 metric 1; # SLIP connections } ; } ; # # Accept routes from RIP via ed Ethernet interfaces import proto rip interface ed { all ; } ; RIP Die oben angegebene Beispieldatei gated.conf sendet Routinginformationen, die das SLIP-Subnetz xxx.xxx.yy betreffen, mit Hilfe von RIP zum Ethernet. Wenn Sie einen anderen Ethernet-Treiber als ed verwenden, werden Sie die Einträge, die sich auf ed beziehen, entsprechend abändern müssen. Mit dieser Beispieldatei wird auch die Aufzeichnung der Aktivitäten von gated in der Datei /var/tmp/gated.output eingerichtet, was für eine eventuelle Fehlersuche nützlich sein kann. Sie können diese Option natürlich auch abschalten, wenn gated bei Ihnen ohne Probleme läuft. Sie müssen xxx.xxx.yy noch durch die Netzwerkadresse Ihres SLIP-Subnetzes ersetzen (ändern Sie die Netzmaske im Abschnitt proto direct ebenfalls). Wenn Sie gated auf Ihrem System installiert und konfiguriert haben, müssen Sie die FreeBSD Startskripten noch anweisen, gated statt routed zu verwenden. Am einfachsten können Sie dies erreichen, indem Sie die Variablen router und router_flags in der Datei /etc/rc.conf entsprechend setzen. Die Manual-Seite für gated bietet weitere Informationen zu den Kommandozeilenparametern. diff --git a/de_DE.ISO8859-1/books/handbook/security/chapter.sgml b/de_DE.ISO8859-1/books/handbook/security/chapter.sgml index 3ed8a01945..78c984fafd 100644 --- a/de_DE.ISO8859-1/books/handbook/security/chapter.sgml +++ b/de_DE.ISO8859-1/books/handbook/security/chapter.sgml @@ -1,4051 +1,4093 @@ 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 S/Key, ein Einmal-Passwort Authentifizierungssystem konfigurieren. Wissen, wie Sie Kerberos, ein weiteres Authentifizierungssystem, einrichten. Firewalls mit IPFW erstellen können. Wissen, wie Sie IPsec konfigurieren. 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. Sicherheit Absichern Absichern von FreeBSD 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 sshd 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 sshd 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 — + 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 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. S/Key S/Key Sicherheit S/Key S/Key ist ein Einmal-Passwort 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 (Onetime Passwords In Everything), das die gleichen Funktionen bietet, abgelöst. OPIE benutzt MD5 Hash-Funktionen. In der folgenden Diskussion 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 Einmal-Passwort, 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 Einmal-Passwort genannt. Das Dritte Passwort ist das geheime Passwort, das Sie mit den Programmen key/opiekey (manchmal auch mit keyinit/opiepasswd) zum Erstellen der Einmal-Passwö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 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 Einmal-Passwort, 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 Einmal-Passwort sind. Das Authentifizierungssystem (meistens PAM) merkt sich das zuletzt benutzte Einmal-Passwort 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 Einmal-Passwö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 Einmal-Passwort oder eine Liste von Einmal-Passwö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 Einmal-Passwort. 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 Einmal-Passwö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 Einmal-Passwort 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 Einmal-Passwort, 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 Einmal-Passwö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 Einmal-Passwort ein. Erzeugen eines einzelnen Einmal-Passwortes 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 Einmal-Passwort 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 Einmal-Passwort 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 Einmal-Passwö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 einige Einmal-Passwö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 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 Einmal-Passwort zeigt, trotzdem finden Sie es vielleicht hilfreich, eine Zeile nach Gebrauch durchzustreichen. Einschränken der Benutzung von System-Passwörtern Basierend auf dem Hostnamen, Benutzernamen, Terminal oder IP-Adresse, können Sie die Verwendung von System-Passwörtern 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 und das ist unter FreeBSD die Vorgabe, 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 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. 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 rcp, rlogin und rsh 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 mv 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 passwd 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 su 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 su: &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 su 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, über rlogin, rsh oder rcp Zugriff auf den Account jane und dessen Dateien. 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 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 Netzwerkverbindungen 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 mit Hilfe von Software von Drittherstellern auf FreeBSD realisiert werden, doch gibt es so viele Proxy-Server, dass deren Behandlung den Rahmen dieses Abschnitts sprengen würde. Paket-Filter Ein Router ist eine Maschine, die Pakete zwischen zwei oder mehr Netzwerken weiterleitet. Ein Paketfilter ist ein spezieller Router, der extra Code im Kernel hat, der es im erlaubt, die Pakete mit Regeln zu vergleichen, bevor er das Paket weiterleitet. Um die 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 der Code des Paketfilters 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 (telnetd, ftpd, usw.) 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-Telnet Server laufen lassen, der es Personen erlaubt, aus dem Internet auf die Firewall eine Telnet-Verbindung zu öffnen. Dort laufen Sie durch einen Authentifizierungsmechanismus und haben dann 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 Einmal-Passwort 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. Mit der Firewall können Sie einen Paketfilter konfigurieren. Das IP-Accounting Modul erlaubt es Ihnen, mit ähnlichen Regeln wie den Firewall-Regeln, die Nutzung Ihres Routers zu überwachen. 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 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 - l + -S + list - Drei Optionen sind für diese Form gültig: + 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 http://www.cert.org/tech_tips/packet_filtering.html 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 security 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. Yoshinobu Inoue Beigetragen von IPsec IPsec Sicherheit IPsec Abschließende Zeichen Am Ende der Beispiele in diesem und anderen Abschnitten werden Sie oft ein ^D sehen. Das bedeutet, dass Sie die Control-Taste zusammen mit der Taste D drücken sollen. Eine weiterere häufig genutzte Kombination ist ^C. Hier drücken Sie die Taste Control zusammen mit der C-Taste. HOWTOs, die die Implementierung von IPsec in FreeBSD beschreiben, finden Sie unter und . IPsec stellt eine sichere Kommunikation auf IP- und Socket-Ebene zur Verfügung. Der folgende Abschnitt zeigt wie Sie IPsec benutzen. Weitere Einzelheiten können Sie dem FreeBSD Developers' Handbook entnehmen. Die aktuelle Version von IPsec unterstützt den Transport-Modus sowie den Tunnel-Modus, wobei der Tunnel-Modus einige Beschränkungen besitzt. Unter http://www.kame.net/newsletter/ finden Sie weitere Beispiele. Um IPsec benutzen zu können, müssen Sie folgende Optionen in Ihren Kernel kompiliert haben: options IPSEC #IP security options IPSEC_ESP #IP security (crypto; define w/IPSEC) Transport-Modus mit IPv4 Um zwischen zwei Rechnern, im folgenden Beispiel HOST A (10.2.3.4) und HOST B (10.6.7.8) sicher zu kommunizieren, müssen wir zuerst eine Sicherheitsassoziation einrichten. Das folgende Beispiel benutzt den alten AH (Authentication Header) von HOST A zu HOST B. Für die Kommunikation von HOST B zu HOST A wird der neue AH mit dem neuen ESP (Encapsulating Security Payload) kombiniert. Zu den Verfahren AH, neuer AH, ESP und neuem ESP müssen nun Algorithmen ausgewählt werden. Die zur Verfügung stehenden Algorithmen werden in &man.setkey.8; erläutert. Wir entschieden uns für die Kombinationen MD5 für AH, new-HMAC-SHA1 für neuen AH und new-DES-expIV mit 8 Byte IV für den neuen ESP. Die Schlüssellänge hängt stark vom gewählten Algorithmus ab. Für MD5 beträgt sie 16 Bytes, für new-HMAC-SHA1 20 Bytes und 8 Bytes für new-DES-expIV. Wie wählten jeweils die Schlüssel MYSECRETMYSECRET, KAMEKAMEKAMEKAMEKAME und PASSWORD. Als nächstes müssen wir jedem Protokoll einen SPI (Security Parameter Index) zuweisen. Beachten Sie bitte, dass wir drei SPIs benötigen, da drei Header erzeugt werden (einer für die Kommunikation von HOST A zu HOST B und zwei für die Kommunikation von HOST B zu HOST A). Beachten Sie weiterhin, dass die SPIs größer oder gleich 256 sein müssen. Im folgenden Beispiel haben wir uns für 1000, 2000 und 3000 entschieden. (1) HOST A ------> HOST B (1)PROTO=AH ALG=MD5(RFC1826) KEY=MYSECRETMYSECRET SPI=1000 (2.1) HOST A <------ HOST B <------ (2.2) (2.1) PROTO=AH ALG=new-HMAC-SHA1(new AH) KEY=KAMEKAMEKAMEKAMEKAME SPI=2000 (2.2) PROTO=ESP ALG=new-DES-expIV(new ESP) IV length = 8 KEY=PASSWORD SPI=3000 Um die Sicherheitsassoziation einzurichten, führen Sie &man.setkey.8; auf HOST A und HOST B aus: &prompt.root; setkey -c add 10.2.3.4 10.6.7.8 ah-old 1000 -m transport -A keyed-md5 "MYSECRETMYSECRET" ; add 10.6.7.8 10.2.3.4 ah 2000 -m transport -A hmac-sha1 "KAMEKAMEKAMEKAMEKAME" ; add 10.6.7.8 10.2.3.4 esp 3000 -m transport -E des-cbc "PASSWORD" ; ^D Bevor Sie die Kommunikation mit IPsec benutzen können, müssen Sie noch eine Sicherheits-Policy auf beiden Rechnern einrichten: Auf Host A: &prompt.root; setkey -c spdadd 10.2.3.4 10.6.7.8 any -P out ipsec ah/transport/10.2.3.4-10.6.7.8/require ; ^D Auf Host B: &prompt.root; setkey -c spdadd 10.6.7.8 10.2.3.4 any -P out ipsec esp/transport/10.6.7.8-10.2.3.4/require ; spdadd 10.6.7.8 10.2.3.4 any -P out ipsec ah/transport/10.6.7.8-10.2.3.4/require ; ^D HOST A --------------------------------------> HOST E 10.2.3.4 10.6.7.8 | | ========== old AH keyed-md5 ==========> <========= new AH hmac-sha1 =========== <========= new ESP des-cbc ============ Transport-Modus mit IPv6 Das folgende Beispiel zeigt die Nutzung von IPsec mit IPv6. Das folgende Beispiel richtet den ESP Transport-Modus für TCP Verbindungen zwischen HOST B Port 110 und HOST A ein. ============ ESP ============ | | Host-A Host-B fec0::10 -------------------- fec0::11 Der Algorithmus zum Verschlüsseln ist blowfish-cbc, der zugehörige Schlüssel ist kamekame. Für die Authentifizierung wird hmac-sha1 mit dem Schlüssel this is the test key verwendet. Auf HOST A geben Sie die folgenden Befehle ein: &prompt.root; setkey -c <<EOF spdadd fec0::10[any] fec0::11[110] tcp -P out ipsec esp/transport/fec0::10-fec0::11/use ; spdadd fec0::11[110] fec0::10[any] tcp -P in ipsec esp/transport/fec0::11-fec0::10/use ; add fec0::10 fec0::11 esp 0x10001 -m transport -E blowfish-cbc "kamekame" -A hmac-sha1 "this is the test key" ; add fec0::11 fec0::10 esp 0x10002 -m transport -E blowfish-cbc "kamekame" -A hmac-sha1 "this is the test key" ; EOF Entsprechend auf HOST B: &prompt.root; setkey -c <<EOF spdadd fec0::11[110] fec0::10[any] tcp -P out ipsec esp/transport/fec0::11-fec0::10/use ; spdadd fec0::10[any] fec0::11[110] tcp -P in ipsec esp/transport/fec0::10-fec0::11/use ; add fec0::10 fec0::11 esp 0x10001 -m transport -E blowfish-cbc "kamekame" -A hmac-sha1 "this is the test key" ; add fec0::11 fec0::10 esp 0x10002 -m transport -E blowfish-cbc "kamekame" -A hmac-sha1 "this is the test key" ; EOF Beachten Sie bitte die Richtung der erstellen Security Policy. Tunnel-Modus mit IPv4 Das folgende Beispiel baut einen Tunnel zwischen zwei Gateways auf. Als Protokoll wird der alte AH Tunnel-Modus (RFC 1826) verwendet. Zur Authentifizierung wird keyed-md5 mit dem Schlüssel this is the test verwendet. ======= AH ======= | | Network-A Gateway-A Gateway-B Network-B 10.0.1.0/24 ---- 172.16.0.1 ----- 172.16.0.2 ---- 10.0.2.0/24 Der Gateway A wird wie folgt konfiguriert: &prompt.root; setkey -c <<EOF spdadd 10.0.1.0/24 10.0.2.0/24 any -P out ipsec ah/tunnel/172.16.0.1-172.16.0.2/require ; spdadd 10.0.2.0/24 10.0.1.0/24 any -P in ipsec ah/tunnel/172.16.0.2-172.16.0.1/require ; add 172.16.0.1 172.16.0.2 ah-old 0x10003 -m any -A keyed-md5 "this is the test" ; add 172.16.0.2 172.16.0.1 ah-old 0x10004 -m any -A keyed-md5 "this is the test" ; EOF Wenn wie oben die Portnummer weggelassen wird, wird [any] verwendet. Mit -m wird der Modus der Sicherheitsassoziation angegeben. -m any gilt für den Transport- sowie den Tunnel-Modus. Auf Gateway B geben Sie Folgendes ein: &prompt.root; setkey -c <<EOF spdadd 10.0.2.0/24 10.0.1.0/24 any -P out ipsec ah/tunnel/172.16.0.2-172.16.0.1/require ; spdadd 10.0.1.0/24 10.0.2.0/24 any -P in ipsec ah/tunnel/172.16.0.1-172.16.0.2/require ; add 172.16.0.1 172.16.0.2 ah-old 0x10003 -m any -A keyed-md5 "this is the test" ; add 172.16.0.2 172.16.0.1 ah-old 0x10004 -m any -A keyed-md5 "this is the test" ; EOF Tunnel-Modus mit IPv6 Transport- und Tunnel-Modus zwischen zwei Gateways Zwischen Gateway A und Gateway B soll der AH Transport-Modus und der ESP Tunnel-Modus eingerichtet werden. In diesem Fall wird zuerst der ESP-Tunnel eingerichtet, danach folgt das Einrichten des AH Transport-Modus. ========== AH ========= | ======= ESP ===== | | | | | Network-A Gateway-A Gateway-B Network-B fec0:0:0:1::/64 --- fec0:0:0:1::1 ---- fec0:0:0:2::1 --- fec0:0:0:2::/64 Für ESP wird 3des-cbc zur Verschlüsselung und hmac-sha1 zur Authentifizierung verwendet. Bei AH wird zur Authentifizierung hmac-md5 benutzt. Auf Gateway A sieht die Konfiguration wie folgt aus: &prompt.root; setkey -c <<EOF spdadd fec0:0:0:1::/64 fec0:0:0:2::/64 any -P out ipsec esp/tunnel/fec0:0:0:1::1-fec0:0:0:2::1/require ah/transport/fec0:0:0:1::1-fec0:0:0:2::1/require ; spdadd fec0:0:0:2::/64 fec0:0:0:1::/64 any -P in ipsec esp/tunnel/fec0:0:0:2::1-fec0:0:0:1::1/require ah/transport/fec0:0:0:2::1-fec0:0:0:1::1/require ; add fec0:0:0:1::1 fec0:0:0:2::1 esp 0x10001 -m tunnel -E 3des-cbc "kamekame12341234kame1234" -A hmac-sha1 "this is the test key" ; add fec0:0:0:1::1 fec0:0:0:2::1 ah 0x10001 -m transport -A hmac-md5 "this is the test" ; add fec0:0:0:2::1 fec0:0:0:1::1 esp 0x10001 -m tunnel -E 3des-cbc "kamekame12341234kame1234" -A hmac-sha1 "this is the test key" ; add fec0:0:0:2::1 fec0:0:0:1::1 ah 0x10001 -m transport -A hmac-md5 "this is the test" ; EOF Im Folgenden werden zwei Sicherheitsassoziationen mit unterschiedlichen Endpunkten erstellt. Zwischen Host A und Gateway A soll ein ESP-Tunnel eingerichtet werden. Zur Verschlüsselung wird cast128-cbc und zur Authentifizierung wird hmac-sha1 verwendet. Zusätzlich wird zwischen Host A und Host B der ESP Transport-Modus eingerichtet. Zur Verschlüsselung wird rc5-cbc verwendet. Die Authentifizierung verwendet hmac-md5. ================== ESP ================= | ======= ESP ======= | | | | | Host-A Gateway-A Host-B fec0:0:0:1::1 ---- fec0:0:0:2::1 ---- fec0:0:0:2::2 Host A wird wie folgt konfiguriert: &prompt.root; setkey -c <<EOF spdadd fec0:0:0:1::1[any] fec0:0:0:2::2[80] tcp -P out ipsec esp/transport/fec0:0:0:1::1-fec0:0:0:2::2/use esp/tunnel/fec0:0:0:1::1-fec0:0:0:2::1/require ; spdadd fec0:0:0:2::1[80] fec0:0:0:1::1[any] tcp -P in ipsec esp/transport/fec0:0:0:2::2-fec0:0:0:l::1/use esp/tunnel/fec0:0:0:2::1-fec0:0:0:1::1/require ; add fec0:0:0:1::1 fec0:0:0:2::2 esp 0x10001 -m transport -E cast128-cbc "12341234" -A hmac-sha1 "this is the test key" ; add fec0:0:0:1::1 fec0:0:0:2::1 esp 0x10002 -E rc5-cbc "kamekame" -A hmac-md5 "this is the test" ; add fec0:0:0:2::2 fec0:0:0:1::1 esp 0x10003 -m transport -E cast128-cbc "12341234" -A hmac-sha1 "this is the test key" ; add fec0:0:0:2::1 fec0:0:0:1::1 esp 0x10004 -E rc5-cbc "kamekame" -A hmac-md5 "this is the test" ; EOF Chern Lee Beigetragen von OpenSSH OpenSSH Sicherheit OpenSSH Secure Shell stellt Werkzeuge bereit, um sicher auf entfernte Maschinen zuzugreifen. Die Kommandos rlogin, rsh, rcp und telnet können durch ssh 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" Der ssh Dæmon wird damit bei dem nächsten Neustart des Systems geladen. Alternativ können Sie den Dæmon auch händisch starten. 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 das Protokoll der Version 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 scp lassen sich Dateien analog wie mit rcp 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 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. 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 zur Verwendung mit SSH v2 erstellt werden. Dazu rufen Sie das Kommando ssh-keygen -d oder ssh-keygen -t dsa mit FreeBSD &os.current; auf. Sie erzeugen damit ein DSA-Schlüsselpaar, das nur in SSH v2 Verbindungen genutzt 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 in ~/.ssh/authorized_keys2 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. 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.myserver.com user@unfirewalled.myserver.com'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 Mandatory Access Control (LOMAC) 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 Richtlinie (MLS) MLS 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 Policy 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. diff --git a/de_DE.ISO8859-1/books/handbook/serialcomms/chapter.sgml b/de_DE.ISO8859-1/books/handbook/serialcomms/chapter.sgml index 5172fe4234..906dde438c 100644 --- a/de_DE.ISO8859-1/books/handbook/serialcomms/chapter.sgml +++ b/de_DE.ISO8859-1/books/handbook/serialcomms/chapter.sgml @@ -1,2796 +1,2796 @@ Martin Heinen Übersetzt von Serielle Datenübertragung Übersicht serielle Datenübertragung &unix; Systeme unterstützten schon immer die serielle Datenübertragung. Tatsächlich wurden Ein- und Ausgaben auf den ersten &unix; Maschinen über serielle Leitungen durchgeführt. Seit der Zeit, in der ein durchschnittlicher Terminal aus einem seriellen Drucker mit 10 Zeichen/Sekunde und einer Tastatur bestand, hat sich viel verändert. Dieses Kapitel behandelt einige Möglichkeiten, serielle Datenübertragung unter FreeBSD zu verwenden. Nachdem Sie dieses Kapitel durchgearbeitet haben, werden Sie Folgendes wissen: Wie Sie Terminals an Ihr FreeBSD anschließen. Wie Sie sich mit einem Modem auf einem entfernten Rechner einwählen. Wie Sie entfernten Benutzern erlauben, sich mit einem Modem in Ihr System einzuwählen. Wie Sie Ihr System über eine serielle Konsole booten. Bevor Sie dieses Kapitel lesen, sollten Sie einen neuen Kernel konfigurieren und installieren können (). Das Berechtigungskonzept von &unix; und Prozesse verstehen (). Zudem sollten Sie Zugriff auf die Handbücher der seriellen Komponenten (Modem oder Multiportkarte) haben, die Sie mit FreeBSD verwenden wollen. Einführung Begriffe bits-per-second bps - Bits pro Sekunde — Einheit für die + Bits pro Sekunde – Einheit für die Übertragungsgeschwindigkeit. DEE (DTE) DEE DTE - Datenendeinrichtung (Data Terminal Equipment) — + Datenendeinrichtung (Data Terminal Equipment) – zum Beispiel Ihr Computer. DÜE (DCE) DÜE DCE Datenübertragungseinrichtung (Data Communications - Equipment) — Ein Modem. + Equipment) – Ein Modem. RS-232 RS-232C Kabel EIA (Electronic Industries Association) Norm für die serielle Datenübertragung. In diesem Abschnitt wird der Begriff Baud nicht für Übertragungsgeschwindigkeiten gebraucht. Baud bezeichnet elektrische Zustandswechsel pro Zeiteinheit, die Taktrate, während bps (Bits pro Sekunde) der richtige Begriff für die Übertragungsgeschwindigkeit ist (die meisten Pedanten sollten damit zufrieden sein). Kabel und Schnittstellen Um ein Modem oder einen Terminal an Ihr FreeBSD System anzuschließen, muss Ihr Computer über eine serielle Schnittstelle verfügen. Zusätzlich brauchen Sie noch das passende Kabel, um das Gerät mit der Schnittstelle zu verbinden. Wenn Sie mit Ihren Geräten und den nötigen Kabeln schon vertraut sind, können Sie diesen Abschnitt überspringen. Kabel Es gibt verschiedene serielle Kabel. Die zwei häufigsten sind Nullmodemkabel und Standard RS-232 Kabel. Die Dokumentation Ihrer Hardware sollte beschreiben, welchen Kabeltyp Sie benötigen. Nullmodemkabel Nullmodemkabel Ein Nullmodemkabel verbindet einige Signale, wie die Betriebserde, eins zu eins, andere Signale werden getauscht: Die Sende- und Empfangsleitungen werden zum Beispiel gekreuzt. Wenn Sie Ihre Kabel selber herstellen möchten, zeigt die folgende Tabelle die RS-232C Signalnamen und Pinbelegung für einen DB-25 Stecker: Signal Pin # Pin # Signal SG 7 verbunden mit 7 SG TxD 2 verbunden mit 3 RxD RxD 3 verbunden mit 2 TxD RTS 4 verbunden mit 5 CTS CTS 5 verbunden mit 4 RTS DTR 20 verbunden mit 6 DSR DCD 8 6 DSR DSR 6 verbunden mit 20 DTR Das Signal Data Terminal Ready (DTR) wird mit den Signalen Data Set Ready (DSR) und Data Carrier Detect (DCD) der Gegenstelle verbunden. Standard RS-232C Kabel RS-232C Kabel Ein Standard RS-232C Kabel verbindet alle Signale direkt, das heißt das Signal Sendedaten wird mit dem Signal Sendedaten der Gegenstelle verbunden. Dieses Kabel wird benötigt, um ein Modem mit einem FreeBSD System zu verbinden. Manche Terminals benötigen dieses Kabel ebenfalls. Schnittstellen Über serielle Schnittstellen werden Daten zwischen dem FreeBSD System und dem Terminal übertragen. Dieser Abschnitt beschreibt die verschiedenen Schnittstellen und wie sie unter FreeBSD angesprochen werden. Arten von Schnittstellen Da es verschiedene Schnittstellen gibt, sollten Sie vor dem Kauf oder Selbstbau eines Kabels sicherstellen, dass dieses zu den Schnittstellen Ihres Terminals und FreeBSD Systems passt. Die meisten Terminals besitzen DB25 Stecker. Personal Computer haben DB25 oder DB9 Stecker. Wenn Sie eine serielle Multiportkarte für Ihren PC besitzen, haben Sie vielleicht RJ-12 oder RJ-45 Anschlüsse. Die Dokumentation Ihrer Geräte sollte Aufschluss über den Typ der benötigten Anschlüsse geben. Oft hilft es, wenn Sie sich den Anschluss einfach ansehen. Schnittstellenbezeichnung Unter FreeBSD sprechen Sie die serielle Schnittstelle (Port) über einen Eintrag im /dev Verzeichnis an. Es gibt dort zwei verschiedene Einträge: Schnittstellen für eingehende Verbindungen werden /dev/ttydN genannt. Dabei ist N die Nummer der Schnittstelle, deren Zählung bei Null beginnt. Allgemein wird diese Schnittstelle für Terminals benutzt. Diese Schnittstelle funktioniert nur, wenn ein Data Carrier Detect Signal (DCD) vorliegt. Für ausgehende Verbindungen wird /dev/cuaaN verwendet. Dieser Port wird normalerweise nur von Modems genutzt. Sie können ihn allerdings für Terminals benutzen, die das Data Carrier Detect Signal nicht unterstützen. Wenn Sie einen Terminal an die erste serielle Schnittstelle (COM1 in MS-DOS), angeschlossen haben, sprechen Sie ihn über /dev/ttyd0 an. Wenn er an der zweiten seriellen Schnittstelle angeschlossen ist, verwenden Sie /dev/ttyd1, usw. Kernelkonfiguration In der Voreinstellung benutzt FreeBSD vier serielle Schnittstellen, die in MS-DOS Kreisen als COM1, COM2, COM3 und COM4 bekannt sind. Momentan unterstützt FreeBSD einfache Multiportkarten (z.B. die BocaBoard 1008 und 2016) und bessere wie die von Digiboard und Stallion Technologies. In der Voreinstellung sucht der Kernel allerdings nur nach den Standardanschlüssen. Um zu überprüfen, ob der Kernel eine Ihrer seriellen Schnittstellen erkennt, achten Sie auf die Meldungen beim Booten, oder schauen sich diese später mit /sbin/dmesg an. Insbesondere sollten Sie auf Meldungen achten, die mit den Zeichen sio anfangen. Das folgende Kommando zeigt Ihnen nur die Meldungen an, die die Folge sio enthalten: &prompt.root; /sbin/dmesg | grep 'sio' Auf einem System mit vier seriellen Schnittstellen sollte der Kernel die folgenden Meldungen ausgeben: sio0 at 0x3f8-0x3ff irq 4 on isa sio0: type 16550A sio1 at 0x2f8-0x2ff irq 3 on isa sio1: type 16550A sio2 at 0x3e8-0x3ef irq 5 on isa sio2: type 16550A sio3 at 0x2e8-0x2ef irq 9 on isa sio3: type 16550A Wenn Ihr Kernel nicht alle seriellen Schnittstellen erkennt, müssen Sie unter Umständen einen angepassten Kernel für Ihr System erstellen. Eine ausführliche Anleitung dazu finden Sie in . Die Kernelkonfiguration für FreeBSD 4.X sieht wie folgt aus: device sio0 at isa? port IO_COM1 tty irq 4 device sio1 at isa? port IO_COM2 tty irq 3 device sio2 at isa? port IO_COM3 tty irq 5 device sio3 at isa? port IO_COM4 tty irq 9 FreeBSD 5.X verwendet die folgende Zeile: device sio Mit FreeBSD 4.X können Sie nicht vorhandene Schnittstellen entfernen oder auskommentieren. Unter FreeBSD 5.X werden die Schnittstellen in /boot/device.hints konfiguriert. Die Hilfeseite &man.sio.4; enthält weitere Informationen über serielle Schnittstellen und Multiportkarten. Seien Sie vorsichtig, wenn Sie Konfigurationsdateien von älteren FreeBSD Versionen verwenden, da sich die Syntax und die Bedeutung der Optionen zwischen verschiedenen Versionen geändert hat. port IO_COM1 ist ein Ersatz für port 0x3f8, IO_COM2 bedeutet port 0x2f8, IO_COM3 bedeutet port 0x3e8 und IO_COM4 steht für port 0x2e8. Die angegebenen IO-Adressen sind genau wie die Interrupts 4, 3, 5 und 9 üblich für serielle Schnittstellen. Beachten Sie bitte, dass sich normale serielle Schnittstellen auf ISA-Bussen keine Interrupts teilen können. Multiportkarten besitzen zusätzliche Schaltkreise, die es allen 16550As auf der Karte erlauben, sich einen oder zwei Interrupts zu teilen. Gerätedateien Die meisten Geräte im Kernel werden durch Gerätedateien in /dev angesprochen. Die sio Geräte werden durch /dev/ttydN für eingehende Verbindungen und durch /dev/cuaaN für ausgehende Verbindungen angesprochen. Zum Initialisieren der Geräte stellt FreeBSD die Dateien /dev/ttyidN und /dev/cuai0N zur Verfügung. Diese Dateien werden benutzt, um Kommunikationsparameter beim Öffnen eines Ports vorzugeben. Für Modems, die zur Flusskontrolle RTS/CTS benutzen, kann damit crtscts gesetzt werden. Die Geräte /dev/ttyldN und /dev/cual0N (locking devices) werden genutzt, um bestimmte Parameter festzuschreiben und vor Veränderungen zu schützen. Weitere Informationen zu Terminals finden Sie in &man.termios.4;, &man.sio.4; erklärt die Dateien zum Initialisieren und Sperren der Geräte, &man.stty.1; beschreibt schließlich Terminal-Einstellungen. Erstellen von Gerätedateien In FreeBSD 5.0 werden Gerätedateien im Dateisystem &man.devfs.5; bei Bedarf automatisch angelegt. Wenn Sie eine FreeBSD Version mit devfs benutzen, können Sie diesen Abschnitt überspringen. MAKEDEV Zum Anlegen der Gerätedateien in /dev wird MAKEDEV benutzt. Um die Geräte der ersten seriellen Schnittstelle für eingehende Verbindungen zu erstellen, wechseln Sie nach /dev und setzen dort den Befehl MAKEDEV ttyd0 ab. Für die zweite serielle Schnittstelle (COM2 bzw. die Schnittstelle mit der Nummer 1 führen Sie analog MAKEDEV ttyd1 aus. Dabei erstellt MAKEDEV nicht nur die /dev/ttydN Gerätedateien, sondern auch die folgenden Dateien: /dev/cuaaN, /dev/cuaiaN, /dev/cualaN, /dev/ttyldN und /dev/ttyidN. Nachdem Sie die Gerätedateien erstellt haben, sollten Sie die Zugriffsrechte der neuen Dateien, besonders die der /dev/cua* Dateien überprüfen, um sicherzustellen, dass wirklich nur jene Benutzer, die auf diese Geräte zugreifen sollen, Schreib- und Leseberechtigungen haben. Die Vorgabe der Zugriffsrechte sollte ausreichend sein: crw-rw---- 1 uucp dialer 28, 129 Feb 15 14:38 /dev/cuaa1 crw-rw---- 1 uucp dialer 28, 161 Feb 15 14:38 /dev/cuaia1 crw-rw---- 1 uucp dialer 28, 193 Feb 15 14:38 /dev/cuala1 Auf die Geräte für ausgehende Verbindungen dürfen uucp und Mitglieder der Gruppe dialer zugreifen. Konfiguration der seriellen Schnittstelle ttyd cuaa Anwendungen benutzen normalerweise die Geräte ttydN oder cuaaN. Das Gerät besitzt einige Voreinstellungen für Terminal-I/O, wenn es von einem Prozess geöffnet wird. Mit dem folgenden Kommando können Sie sich diese Einstellungen ansehen: &prompt.root; stty -a -f /dev/ttyd1 Sie können diese Einstellungen verändern, sie bleiben allerdings nur solange wirksam, bis das Gerät geschlossen wird. Wenn das Gerät danach wieder geöffnet wird, sind die Voreinstellungen wieder wirksam. Um die Voreinstellungen zu ändern, öffnen Sie das Gerät, das zum Initialisieren dient und verändern dessen Einstellungen. Um beispielsweise für ttyd5 den Modus, 8-Bit Kommunikation und Flusssteuerung einzuschalten, setzen Sie das folgende Kommando ab: &prompt.root; stty -f /dev/ttyid5 clocal cs8 ixon ixoff rc Dateien rc.serial In /etc/rc.serial werden die Voreinstellungen für seriellen Geräte vorgenommen. Um zu verhindern, dass Einstellungen von Anwendungen verändert werden, können Sie die Geräte zum Festschreiben von Einstellungen (locking devices) benutzen. Wenn sie beispielsweise die Geschwindigkeit von ttyd5 auf 57600 bps festlegen wollen, benutzen Sie das folgende Kommando: &prompt.root; stty -f /dev/ttyld5 57600 Eine Anwendung, die ttyd5 öffnet, kann nun nicht mehr die Geschwindigkeit ändern und muss 57600 bps benutzen. Die Geräte zum Initialisieren und Festschreiben von Einstellungen sollten selbstverständlich nur von root beschreibbar sein. Sean Kelly Beigetragen von Terminals Terminals Wenn Sie sich nicht an der Konsole oder über ein Netzwerk an Ihrem FreeBSD System anmelden können, sind Terminals ein bequemer und billiger Weg auf Ihr System zuzugreifen. Dieser Abschnitt beschreibt wie Sie Terminals mit FreeBSD benutzen. Terminaltypen Das ursprüngliche &unix; System besaß keine Konsolen. Zum Anmelden und Starten von Programmen wurden stattdessen Terminals benutzt, die an den seriellen Schnittstellen des Rechners angeschlossen waren. Dies entspricht der Benutzung eines Modems zum Anmelden auf einem entfernten System, um dort mit einem Terminalemulator im Textmodus zu arbeiten. Die Konsolen heutiger PCs besitzen sehr gute Grafikfähigkeiten, trotzdem gibt es in fast jedem &unix; System die Möglichkeit, sich über die serielle Schnittstelle anzumelden; FreeBSD ist da keine Ausnahme. Sie können sich an einem Terminal anmelden und dort jedes Textprogramm, das Sie normalerweise an der Konsole oder in einem xterm Fenster im X Window System benutzen, laufen lassen. Im kommerziellen Umfeld können Sie viele Terminals an ein FreeBSD System anschließen und diese auf den Arbeitsplätzen Ihrer Angestellten aufstellen. Im privaten Umfeld kann ein älterer IBM PC oder Macintosh als Terminal dienen. Damit verwandeln Sie einen Einzelarbeitsplatz in ein leistungsfähiges Mehrbenutzersystem. FreeBSD kennt drei verschiedene Terminals: Dumb terminals, PCs, die als Terminals fungieren, X Terminals. Die folgenden Abschnitte beschreiben jeden dieser Terminals. Dumb-Terminals Dumb-Terminals (unintelligente Datenstationen) sind Geräte, die über die serielle Schnittstelle mit einem Rechner verbunden werden. Sie werden unintelligent genannt, weil sie nur Text senden und empfangen und keine Programme laufen lassen können. Alle Programme, wie Texteditoren, Compiler oder Spiele befinden sich auf dem Rechner, der mit dem Terminal verbunden ist. Es gibt viele Dumb-Terminals, die von verschiedenen Herstellern produziert werden, wie zum Beispiel der VT-100 von Digital Equipment Corporation oder der WY-75 von Wyse. So gut wie jeder der verschiedenen Terminals sollte mit FreeBSD zusammenarbeiten. Manche High-End Geräte verfügen sogar über Grafikfähigkeiten, die allerdings nur von spezieller Software genutzt werden kann. Dumb-Terminals sind in Umgebungen beliebt, in denen keine Grafikanwendungen, wie zum Beispiel X-Programme, laufen müssen. PCs, die als Terminal fungieren Jeder PC kann die Funktion eines Dumb-Terminals, der ja nur Text senden und empfangen kann, übernehmen. Dazu brauchen Sie nur das richtige Kabel und eine Terminalemulation, die auf dem PC läuft. Diese Konfiguration ist im privaten Umfeld sehr beliebt. Wenn Ihr Ehepartner zum Beispiel gerade an der FreeBSD Konsole arbeitet, können Sie einen weniger leistungsstarken PC, der als Terminal mit dem FreeBSD System verbunden ist, benutzen, um dort gleichzeitig im Textmodus zu arbeiten. X-Terminals X-Terminals sind die ausgereiftesten der verfügbaren Terminals. Sie werden nicht mit der seriellen Schnittstelle sondern mit einem Netzwerk, wie dem Ethernet, verbunden. Diese Terminals sind auch nicht auf den Textmodus beschränkt, sondern können jede X-Anwendung darstellen. X-Terminals sind hier nur der Vollständigkeit halber aufgezählt. Die Einrichtung von X-Terminals wird in diesem Abschnitt nicht beschrieben. Konfiguration Im Folgenden wird beschrieben, wie Sie Ihr FreeBSD System konfigurieren müssen, um sich an einem Terminal anzumelden. Dabei wird vorausgesetzt, dass der Kernel bereits die serielle Schnittstelle, die mit dem Terminal verbunden ist, unterstützt. Weiterhin sollte der Terminal schon angeschlossen sein. Aus wissen Sie, dass init für das Initialisieren des Systems und den Start von Prozessen zum Zeitpunkt des Systemstarts verantwortlich ist. Unter anderem liest init /etc/ttys ein und startet für jeden verfügbaren Terminal einen getty Prozess. getty wiederum fragt beim Anmelden den Benutzernamen ab und startet login. Um Terminals auf Ihrem FreeBSD System einzurichten, führen Sie folgenden Schritte als root durch: Wenn er noch nicht da ist, fügen Sie einen Eintrag in /etc/ttys für die serielle Schnittstelle aus /dev ein. Geben Sie /usr/libexec/getty als auszuführendes Programm an. Als Parameter für getty geben Sie den passenden Verbindungstyp aus /etc/gettytab an. Geben Sie den Terminaltyp an. Aktivieren Sie den Anschluss. Geben Sie die Sicherheit des Anschlusses an. Veranlassen Sie init /etc/ttys erneut zu lesen. Optional können Sie in /etc/gettytab auch einen auf Ihre Zwecke angepassten Terminaltyp erstellen. Die genaue Vorgehensweise wird in diesem Abschnitt nicht erklärt, aber die Manualpages von &man.gettytab.5; und &man.getty.8; enthalten dazu weitere Informationen. Hinzufügen eines Eintrags in <filename>/etc/ttys</filename> In /etc/ttys werden alle Terminals aufgeführt, an denen Sie sich auf dem FreeBSD System anmelden können. Hier findet sich zum Beispiel ein Eintrag für die erste virtuelle Konsole /dev/ttyv0, der es Ihnen ermöglicht, sich dort anzumelden. Die Datei enthält des Weiteren Einträge für andere virtuelle Konsolen, serielle Schnittstellen und Pseudoterminals. Wenn Sie einen Terminal konfigurieren wollen, fügen sie einen Eintrag für den Namen des Gerätes aus /dev ohne das Präfix /dev hinzu. Zum Beispiel wird /dev/ttyv0 als ttyv0 aufgeführt. In der Voreinstellung enthält /etc/ttys Einträge für die ersten vier seriellen Schnittstellen. Wenn Sie an eine von diesen einen Terminal anschließen, brauchen Sie keinen weiteren Eintrag hinzuzufügen. Einträge in <filename>/etc/ttys</filename> hinzufügen Angenommen, wir wollen an ein System zwei Terminals anschließen: Einen Wyse-50 und einen alten 286 IBM PC, der mit Procomm einen VT-100 Terminal emuliert. Den Wyse-Terminal verbinden wir mit der zweiten seriellen Schnittstelle und den 286 mit der sechsten seriellen Schnittstelle (einem Anschluss auf einer Multiportkarte). Die entsprechenden Einträge in /etc/ttys würden dann wie folgt aussehen: ttyd1 "/usr/libexec/getty std.38400" wy50 on insecure ttyd5 "/usr/libexec/getty std.19200" vt100 on insecure Das erste Feld gibt normalerweise den Namen der Gerätedatei aus /dev an. Im zweiten Feld wird das auszuführende Kommando, normal ist das &man.getty.8;, angegeben. getty initialisiert und öffnet die Verbindung, setzt die Geschwindigkeit und fragt den Benutzernamen ab. Danach führt es &man.login.1; aus. getty akzeptiert einen optionalen Parameter auf der Kommandozeile, den Verbindungstyp, der die Eigenschaften der Verbindung, wie die Geschwindigkeit und Parität, festlegt. Die Typen und die damit verbundenen Eigenschaften liest getty aus /etc/gettytab. /etc/gettytab enthält viele Einträge sowohl für neue wie auch alte Terminalverbindungen. Die meisten Einträge, die mit std beginnen, sollten mit einem festverdrahteten Terminal funktionieren. Für jede Geschwindigkeit zwischen 110 bps und 115200 bps gibt es einen std Eintrag. Natürlich können Sie auch eigene Einträge erstellen, Informationen dazu finden Sie in &man.gettytab.5;. Wenn Sie den Verbindungstyp in /etc/ttys eintragen, stellen Sie bitte sicher, dass die Kommunikationseinstellungen auch mit denen des Terminals übereinstimmen. In unserem Beispiel verwendet der Wyse-50 keine Parität und 38400 bps, der 286 PC benutzt ebenfalls keine Parität und arbeitet mit 19200 bps. Das dritte Feld gibt den Terminaltyp an, der normalerweise mit diesem Anschluss verbunden ist. Für Einwählverbindungen wird oft unknown oder dialup benutzt, da sich die Benutzer praktisch mit beliebigen Terminals oder Emulatoren anmelden können. Bei festverdrahteten Terminals ändert sich der Typ nicht, so dass Sie in diesem Feld einen richtigen Typ aus der &man.termcap.5; Datenbank angeben können. In unserem Beispiel benutzen wir für den Wyse-50 den entsprechenden Typ aus &man.termcap.5;, der 286 PC wird als VT-100, den er ja emuliert, angegeben. Das vierte Feld gibt an, ob der Anschluss aktiviert werden soll. Wenn Sie hier on angeben, startet init das Programm, das im zweiten Feld angegeben wurde (normal getty). Wenn Sie off angeben, wird das Kommando aus dem zweiten Feld nicht ausgeführt und folglich können Sie sich dann an dem betreffenden Terminal nicht anmelden. Im letzten Feld geben Sie die Sicherheit des Anschlusses an. Wenn Sie hier secure angeben, darf sich root (oder jeder Account mit der UID 0) über diese Verbindung anmelden. Wenn Sie insecure angeben, dürfen sich nur unprivilegierte Benutzer anmelden. Diese können später mit &man.su.1; oder einem ähnlichen Mechanismus zu root wechseln. Es wird dringend empfohlen, insecure nur für Terminals hinter verschlossenen Türen zu verwenden, da Sie mit su leicht zum Superuser werden können. <command>init</command> zwingen, <filename>/etc/ttys</filename> erneut zu lesen Nachdem Sie die nötigen Änderungen in /etc/ttys vorgenommen haben, schicken Sie init ein SIGHUP-Signal (hangup), um es zu veranlassen, seine Konfigurationsdatei neu zu lesen: &prompt.root; kill -HUP 1 Da init immer der erste Prozess auf einem System ist, besitzt es immer die PID 1. Wenn alles richtig eingerichtet ist, alle Kabel angeschlossen und die Terminals eingeschaltet sind, sollte für jeden Terminal ein getty Prozess laufen und auf jedem Terminal sollten Sie eine Anmeldeaufforderung sehen. Fehlersuche Selbst wenn Sie den Anweisungen akribisch gefolgt sind, kann es immer noch zu Fehlern beim Einrichten eines Terminals kommen. Die folgende Aufzählung von Symptomen beschreibt mögliche Lösungen: Es erscheint kein Anmeldeprompt. Stellen Sie sicher, dass der Terminal verbunden und eingeschaltet ist. Wenn ein PC als Terminal fungiert, überprüfen Sie, dass die Terminalemulation auf den richtigen Schnittstellen läuft. Stellen Sie sicher, dass Sie das richtige Kabel verwenden und dass das Kabel fest mit dem Terminal und dem FreeBSD Rechner verbunden ist. Stellen Sie sicher, dass die Einstellungen für die Geschwindigkeit (bps) und Parität auf dem FreeBSD System und dem Terminal gleich sind. Wenn Ihr Terminal einen Bildschirm besitzt, überprüfen Sie die richtige Einstellung von Helligkeit und Kontrast. Wenn Ihr Terminal druckt, stellen Sie die ausreichende Versorgung mit Papier und Tinte sicher. Überprüfen Sie mit ps, dass der getty Prozess für den Terminal läuft: &prompt.root; ps -axww|grep getty Für jeden Terminal sollten Sie einen Eintrag sehen. Aus dem folgenden Beispiel erkennen Sie, dass getty auf der zweiten seriellen Schnittstelle läuft und den Verbindungstyp std.38400 aus /etc/gettytab benutzt: 22189 d1 Is+ 0:00.03 /usr/libexec/getty std.38400 ttyd1 Wenn getty nicht läuft, überprüfen Sie, ob der Anschluss in /etc/ttys aktiviert ist. Haben Sie kill -HUP 1 abgesetzt, nachdem Sie /etc/ttys geändert hatten? Wenn getty läuft, aber der Terminal immer noch kein Anmeldeprompt ausgibt, oder Sie am Anmeldeprompt nichts eingeben können, kann es sein, dass Ihr Terminal oder Kabel keinen Hardware-Handshake unterstützt. Ändern Sie dann den Eintrag std.38400 in /etc/ttys zu 3wire.38400. Nachdem Sie /etc/ttys geändert haben, setzen Sie das Kommando kill -HUP 1 ab. Der Eintrag 3wire besitzt ähnliche Eigenschaften wie der Eintrag std, ignoriert aber den Hardware-Handshake. Wenn Sie den Eintrag 3wire verwenden, müssen Sie vielleicht die Geschwindigkeit verkleinern oder die Software-Flusssteuerung aktivieren, um Pufferüberläufe zu vermeiden. Anstelle eines Anmeldeprompts erscheinen nur unverständliche Zeichen: Stellen Sie sicher, dass die Einstellungen für die Geschwindigkeit (bps) und Parität auf dem FreeBSD System und dem Terminal gleich sind. Kontrollieren Sie den getty Prozess und stellen Sie sicher, dass der richtige Verbindungstyp aus /etc/gettytab benutzt wird. Wenn das nicht der Fall ist, editieren Sie /etc/ttys und setzen das Kommando kill-HUP 1 ab. Zeichen erscheinen doppelt und eingegebene Passwörter erscheinen im Klartext. Stellen Sie den Terminal oder die Terminalemulation von half duplex oder local echo auf full duplex. um. Guy Helmer Beigetragen von Sean Kelly Mit Anmerkungen von Einwählverbindungen Einwählverbindungen Das Einrichten von Einwählverbindungen ähnelt dem Anschließen von Terminals, nur dass Sie anstelle eines Terminals ein Modem verwenden. Externe und interne Modems Externe Modems sind für Einwählverbindungen besser geeignet, da sie die Konfiguration in nicht flüchtigem RAM speichern können. Zudem verfügen Sie über Leuchtanzeigen, die den Status wichtiger RS-232 Signale anzeigen und unter Umständen Besucher beeindrucken können. Interne Modems verfügen normalerweise nicht über nicht flüchtiges RAM und lassen sich meist nur über DIP-Schalter konfigurieren. Selbst wenn ein internes Modem Leuchtanzeigen besitzt, sind diese meist schwer einzusehen, wenn das Modem eingebaut ist. Modems und Kabel Modem Mit einem externen Modem müssen Sie das richtige Kabel benutzen: Ein Standard RS-232C Kabel, bei dem die folgenden Signale miteinander verbunden sind, sollte ausreichen: Transmitted Data (SD) Received Data (RD) Request to Send (RTS) Clear to Send (CTS) Data Set Ready (DSR) Data Terminal Ready (DTR) Carrier Detect (CD) Signal Ground (SG) Ab Geschwindigkeiten von 2400 bps benötigt FreeBSD die Signale RTS und CTS für die Flusssteuerung. Das Signal CD zeigt an, ob ein Träger vorliegt, das heißt ob die Verbindung aufgebaut ist oder beendet wurde. DTR zeigt an, dass das Gerät betriebsbereit ist. Es gibt einige Kabel, bei denen nicht alle nötigen Signale verbunden sind. Wenn Sie Probleme der Art haben, dass zum Beispiel die Sitzung nicht beendet wird, obwohl die Verbindung beendet wurde, kann das an einem solchen Kabel liegen. Wie andere &unix; Betriebssysteme auch, benutzt FreeBSD Hardwaresignale, um festzustellen, ob ein Anruf beantwortet wurde, eine Verbindung beendet wurde, oder um die Verbindung zu schließen und das Modem zurückzusetzen. FreeBSD vermeidet es, dem Modem Kommandos zu senden, oder den Statusreport des Modems abzufragen. Falls Sie ein Benutzer von PC-basierenden Bulletin Board Systemen sind, mag Sie das verwundern. Schnittstellenbausteine FreeBSD unterstützt EIA RS-232C (CCITT V.24) serielle Schnittstellen, die auf den NS8250, NS16450, NS16550 oder NS16550A Bausteinen basieren. Die Bausteine der Serie 16550 verfügen über einen 16 Byte großen Puffer, der als FIFO angelegt ist. Wegen Fehler in der FIFO-Logik kann der Puffer in einem 16550 Baustein allerdings nicht genutzt werden, das heißt der Baustein muss als 16450 betrieben werden. Bei allen Bausteinen ohne Puffer und dem 16550 Baustein muss jedes Byte einzeln von dem Betriebssystem verarbeitet werden, was Fehler bei hohen Geschwindigkeiten oder großer Systemlast erzeugt. Es sollten daher nach Möglichkeit serielle Schnittstellen, die auf 16550A Bausteinen basieren, eingesetzt werden. Überblick getty Wie bei Terminals auch, startet init für jede serielle Schnittstelle, die eine Einwählverbindung zur Verfügung stellt, einen getty Prozess. Wenn das Modem beispielsweise an /dev/ttyd0 angeschlossen ist, sollte in der Ausgabe von ps ax eine Zeile wie die folgende erscheinen: 4850 ?? I 0:00.09 /usr/libexec/getty V19200 ttyd0 Wenn sich ein Benutzer einwählt und die Verbindung aufgebaut ist, zeigt das Modem dies durch das CD Signal (Carrier Detect) an. Der Kernel merkt, dass ein Signal anliegt und vollendet das Öffnen der Schnittstelle durch getty. Dann sendet getty das Anmeldeprompt mit der ersten für die Verbindung vereinbarten Geschwindigkeit und wartet auf eine Antwort. Wenn die Antwort unverständlich ist, weil zum Beispiel die Geschwindigkeit des Modems von gettys Geschwindigkeit abweicht, versucht getty die Geschwindigkeit solange anzupassen, bis es eine verständliche Antwort erhält. /usr/bin/login getty führt, nachdem der Benutzer seinen Namen eingegeben hat, /usr/bin/login aus, welches das Passwort abfragt und danach die Shell des Benutzers startet. Konfigurationsdateien Drei Konfigurationsdateien in /etc steuern, ob eine Einwahl in Ihr FreeBSD System möglich ist. Die erste, /etc/gettytab, konfiguriert den /usr/libexec/getty Dæmon. In /etc/ttys wird festgelegt, auf welchen Schnittstellen /sbin/init einen getty Prozess startet. Schließlich haben Sie in /etc/rc.serial die Möglichkeit, Schnittstellen zu initialisieren. Es gibt zwei Ansichten darüber, wie Modems für Einwählverbindungen unter &unix; zu konfigurieren sind. Zum einen kann die Geschwindigkeit zwischen dem Modem und dem Computer fest eingestellt werden. Sie ist damit unabhängig von der Geschwindigkeit, mit der sich der entfernte Benutzer einwählt. Dies hat den Vorteil, dass der entfernte Benutzer das Anmeldeprompt sofort bekommt. Der Nachteil bei diesem Verfahren ist, dass das System die tatsächliche Geschwindigkeit der Verbindung nicht kennt. Damit können bildschirmorientierte Programme wie Emacs ihren Bildschirmaufbau nicht an langsame Verbindungen anpassen, um die Antwortzeiten zu verbessern. Die andere Möglichkeit besteht darin, die Geschwindigkeit der RS-232 Schnittstelle des lokalen Modems an die Geschwindigkeit des entfernten Modems anzupassen. Bei einer V.32bis (14400 bps) Verbindung kann das lokale Modem die RS-232 Schnittstelle mit 19200 bps betreiben, während bei einer Verbindung mit 2400 bps die RS-232 Schnittstelle mit 2400 bps betrieben wird. Da getty die Verbindungsgeschwindigkeit des Modems nicht kennt, startet es den Anmeldevorgang mit der Ausgabe von login: und wartet auf eine Antwort. Wenn der Benutzer der Gegenstelle nun nur unverständliche Zeichen erhält, muss er solange Enter drücken, bis das Anmeldeprompt erscheint. Solange die Geschwindigkeiten nicht übereinstimmen, sind die Antworten der Gegenstelle für getty ebenfalls unverständlich. In diesem Fall wechselt getty zur nächsten Geschwindigkeit und gibt wieder login: aus. In aller Regel erhält der Benutzer der Gegenstelle nach ein bis zwei Tastendrücken eine erkennbare Anmeldeaufforderung. Diese Anmeldeprozedur sieht nicht so sauber wie die Methode mit einer festen Geschwindigkeit aus, bietet dem Benutzer einer langsamen Verbindung allerdings den Vorteil, dass sich bildschirmorientierte Programme an die Geschwindigkeit anpassen können. Im Folgenden wird die Konfiguration für beide Methoden besprochen, doch die Methode der angepassten Geschwindigkeit wird bei der Diskussion bevorzugt. <filename>/etc/gettytab</filename> /etc/gettytab Mit /etc/gettytab wird &man.getty.8; im Stil von &man.termcap.5; konfiguriert. Das Format dieser Datei und die Bedeutung der Einträge wird in &man.gettytab.5; beschrieben. Konfiguration für feste Geschwindigkeit Wenn Sie die Modemgeschwindigkeit vorgeben, werden Sie in /etc/gettytab nichts ändern müssen. Konfiguration für angepasste Geschwindigkeit In /etc/gettytab müssen Einträge für die Geschwindigkeiten, die Sie benutzen wollen, sein. Wenn Sie ein 2400 bps Modem besitzen, können Sie wahrscheinlich den schon vorhandenen D2400 Eintrag benutzen. # # Fast dialup terminals, 2400/1200/300 rotary (can start either way) # D2400|d2400|Fast-Dial-2400:\ :nx=D1200:tc=2400-baud: 3|D1200|Fast-Dial-1200:\ :nx=D300:tc=1200-baud: 5|D300|Fast-Dial-300:\ :nx=D2400:tc=300-baud: Wenn Sie ein Modem mit einer höheren Geschwindigkeit besitzen, müssen Sie wahrscheinlich in /etc/gettytab weitere Einträge erstellen. Hier ist ein Beispiel, das Sie mit einem 14400 bps Modem benutzen können: # # Additions for a V.32bis Modem # um|V300|High Speed Modem at 300,8-bit:\ :nx=V19200:tc=std.300: un|V1200|High Speed Modem at 1200,8-bit:\ :nx=V300:tc=std.1200: uo|V2400|High Speed Modem at 2400,8-bit:\ :nx=V1200:tc=std.2400: up|V9600|High Speed Modem at 9600,8-bit:\ :nx=V2400:tc=std.9600: uq|V19200|High Speed Modem at 19200,8-bit:\ :nx=V9600:tc=std.19200: Die damit erzeugten Verbindungen verwenden 8 Bit und keine Parität. Im obigen Beispiel startet die Geschwindigkeit bei 19200 bps (eine V.32bis Verbindung) und geht dann über 9600 bps (V.32), 400 bps, 1200 bps und 300 bps wieder zurück zu 19200 bps. Das Schlüsselwort nx= (next table) sorgt für das zyklische Durchlaufen der Geschwindigkeiten. Jede Zeile zieht zudem noch mit tc= (table continuation) die Vorgabewerte für die jeweilige Geschwindigkeit an. Wenn Sie ein 28800 bps Modem besitzen und/oder Kompression mit einem 14400 bps Modem benutzen wollen, brauchen Sie höhere Geschwindigkeiten als 19200 bps. Das folgende Beispiel startet mit 57600 bps: # # Additions for a V.32bis or V.34 Modem # Starting at 57600 bps # vm|VH300|Very High Speed Modem at 300,8-bit:\ :nx=VH57600:tc=std.300: vn|VH1200|Very High Speed Modem at 1200,8-bit:\ :nx=VH300:tc=std.1200: vo|VH2400|Very High Speed Modem at 2400,8-bit:\ :nx=VH1200:tc=std.2400: vp|VH9600|Very High Speed Modem at 9600,8-bit:\ :nx=VH2400:tc=std.9600: vq|VH57600|Very High Speed Modem at 57600,8-bit:\ :nx=VH9600:tc=std.57600: Wenn Sie eine langsame CPU oder ein stark ausgelastetes System besitzen und sich kein 16550A in Ihrem System befindet, erhalten Sie bei 57600 bps vielleicht sio Fehlermeldungen der Form silo overflow. <filename>/etc/ttys</filename> /etc/ttys /etc/ttys wurde bereits in besprochen. Die Konfiguration für Modems ist ähnlich, allerdings braucht getty ein anderes Argument und es muss ein anderer Terminaltyp angegeben werden. Der Eintrag für beide Methoden (feste und angepasste Geschwindigkeit) hat die folgende Form: ttyd0 "/usr/libexec/getty xxx" dialup on Das erste Feld der obigen Zeile gibt die Gerätedatei - für diesen Eintrag an — ttyd0 + für diesen Eintrag an – ttyd0 bedeutet, dass getty mit /dev/ttyd0 arbeitet. Das zweite Feld "/usr/libexec/getty xxx" gibt das Kommando an, das init für dieses Gerät startet (xxx wird durch einen passenden Eintrag aus /etc/gettytab ersetzt). Die Vorgabe für den Terminaltyp, hier dialup, wird im dritten Feld angegeben. Das vierte Feld, on, zeigt init an, dass die Schnittstelle aktiviert ist. Im fünften Feld könnte noch secure angegeben werden, um Anmeldungen von root zu erlauben, doch sollte das wirklich nur für physikalisch sichere Terminals, wie die Systemkonsole, aktiviert werden. Die Vorgabe für den Terminaltyp, dialup im obigen Beispiel, hängt von lokalen Gegebenheiten ab. Traditionell wird dialup für Einwählverbindungen verwendet, so dass die Benutzer in ihren Anmeldeskripten den Terminaltyp auf ihren Terminal abstimmen können, wenn der Typ auf dialup gesetzt ist. Wenn Sie aber beispielsweise nur VT102 Terminals oder Emulatoren einsetzen, können Sie den Terminaltyp hier auch fest auf vt102 setzen. Nachdem Sie /etc/ttys geändert haben, müssen Sie init ein HUP Signal schicken, damit es die Datei wieder einliest. Sie können dazu das folgende Kommando verwenden: &prompt.root; kill -HUP 1 Wenn Sie das System zum ersten Mal konfigurieren, sollten Sie dieses Kommando erst ausführen, wenn Sie Ihr Modem richtig konfiguriert und angeschlossen haben. Konfiguration für feste Geschwindigkeit Das Argument von getty muss in diesem Fall eine feste Geschwindigkeit vorgeben. Der Eintrag für ein Modem, das fest auf 19200 bps eingestellt ist, könnte wie folgt aussehen: ttyd0 "/usr/libexec/getty std.19200" dialup on Wenn Ihr Modem auf eine andere Geschwindigkeit eingestellt ist, setzen Sie anstelle von std.19200 einen passenden Eintrag der Form std.speed ein. Stellen Sie sicher, dass dies auch ein gültiger Verbindungstyp aus /etc/gettytab ist. Konfiguration für angepasste Geschwindigkeit Das Argument von getty muss hier auf einen der Einträge aus /etc/gettytab zeigen, der zu einer Kette von Einträgen gehört, die die zu probierenden Geschwindigkeiten beschreiben. Wenn Sie dem obigen Beispiel gefolgt sind und zusätzliche Einträge in /etc/gettytab erzeugt haben, können Sie die folgende Zeile verwenden: ttyd0 "/usr/libexec/getty V19200" dialup on <filename>/etc/rc.serial</filename> rc Dateien rc.serial Modems, die höhere Geschwindigkeiten unterstützen, zum Beispiel V.32, V.32bis und V.34 Modems, benutzen Hardware-Flusssteuerung (RTS/CTS). Für die entsprechenden Schnittstellen können Sie die Flusssteuerung mit stty in /etc/rc.serial einstellen. Um beispielsweise die Hardware-Flusssteuerung für die Geräte zur Ein- und Auswahl der zweiten seriellen Schnittstelle (COM2) zu aktivieren, benutzen Sie die Dateien zur Initialisierung der entsprechenden Geräte und fügen die folgenden Zeilen in /etc/rc.serial hinzu: # Serial port initial configuration stty -f /dev/ttyid1 crtscts stty -f /dev/cuai01 crtscts Modemkonfiguration Wenn Sie ein Modem besitzen, das seine Konfiguration in nicht flüchtigem RAM speichert, werden Sie ein Terminalprogramm wie Telix unter MS-DOS oder tip unter FreeBSD benötigen, um die Parameter einzustellen. Verbinden Sie sich mit derselben Geschwindigkeit, die getty zuerst benutzen würde, mit dem Modem und treffen Sie folgende Einstellungen: DCD ist eingeschaltet, wenn das Trägersignal des entfernten Modems erkannt wird. Im Betrieb liegt DTR an. Bei einem Verlust von DTR legt das Modem auf und setzt sich zurück. CTS Flusssteuerung ist für ausgehende Daten aktiviert. XON/XOFF Flusssteuerung ist ausgeschaltet. RTS Flusssteuerung ist für eingehende Daten aktiviert. Keine Rückmeldungen ausgeben. Die Echo-Funktion ist deaktiviert. In der Dokumentation Ihres Modems finden Sie die nötigen Befehle, die Sie absetzen müssen, und/oder nötigen DIP-Schalterstellungen, um die obigen Einstellungen zu treffen. Für ein externes 14400 USRobotics Sportster gelten zum Beispiel die folgenden Befehle: ATZ AT&C1&D2&H1&I0&R2&W Bei dieser Gelegenheit können Sie auch gleich andere Einstellungen, zum Beispiel ob Sie V42.bis und/oder MNP5 Kompression benutzen wollen, an Ihrem Modem vornehmen. Bei einem externen 14400 USR Sportster müssen Sie auch noch einige DIP-Schalter einstellen. Die folgenden Einstellungen können Sie vielleicht als Beispiel für andere Modems verwenden: - Schalter 1: OBEN — DTR normal + Schalter 1: OBEN – DTR normal Schalter 2: N/A (Rückmeldungen als Text/numerische Rückmeldungen) - Schalter 3: OBEN — Keine Rückmeldungen + Schalter 3: OBEN – Keine Rückmeldungen ausgeben - Schalter 4: UNTEN — Echo-Funktion aus + Schalter 4: UNTEN – Echo-Funktion aus - Schalter 5: OBEN — Rufannahme aktiviert + Schalter 5: OBEN – Rufannahme aktiviert - Schalter 6: OBEN — Carrier Detect normal + Schalter 6: OBEN – Carrier Detect normal - Schalter 7: OBEN — Einstellungen aus dem NVRAM laden + Schalter 7: OBEN – Einstellungen aus dem NVRAM laden Schalter 8: N/A (Smart Mode/Dumb Mode) Für Einwählverbindungen sollten die Rückmeldungen deaktiviert sein, da sonst getty dem Modem das Anmeldeprompt login: schickt und das Modem im Kommandomodus das Prompt wieder ausgibt (Echo-Funktion) oder eine Rückmeldung gibt. Das führt dann zu einer länglichen und fruchtlosen Kommunikation zwischen dem Modem und getty. Konfiguration für feste Geschwindigkeit Die Geschwindigkeit zwischen Modem und Computer muss auf einen festen Wert eingestellt werden. Mit einem externen 14400 USR Sportster Modem setzen die folgenden Kommandos die Geschwindigkeit auf den Wert der Datenendeinrichtung fest: ATZ AT&B1&W Konfiguration für angepasste Geschwindigkeit In diesem Fall muss die Geschwindigkeit der seriellen Schnittstelle des Modems der eingehenden Geschwindigkeit angepasst werden. Für ein externes 14400 USR Sportster Modem erlauben die folgenden Befehle eine Anpassung der Geschwindigkeit der seriellen Schnittstelle für Verbindungen, die keine Fehlerkorrektur verwenden: ATZ AT&B2&W Verbindungen mit Fehlerkorrektur (V.42, MNP) verwenden die Geschwindigkeit der Datenendeinrichtung. Überprüfen der Modemkonfiguration Die meisten Modems verfügen über Kommandos, die die Konfiguration des Modems in lesbarer Form ausgeben. Auf einem externen 14400 USR Sportster zeigt ATI5 die Einstellungen im nicht flüchtigen RAM an. Um die wirklichen Einstellungen unter Berücksichtigung der DIP-Schalter zu sehen, benutzen Sie ATZ gefolgt von ATI4. Wenn Sie ein anderes Modem benutzen, schauen Sie bitte in der Dokumentation Ihres Modems nach, wie Sie die Konfiguration des Modems überprüfen können. Fehlersuche Bei Problemen können Sie die Einwählverbindung anhand der folgenden Punkte überprüfen: Überprüfen des FreeBSD Systems Schließen Sie das Modem an das FreeBSD System an und booten Sie das System. Wenn Ihr Modem über Statusindikatoren verfügt, überprüfen Sie, ob der DTR Indikator leuchtet, wenn das Anmeldeprompt erscheint. Dies zeigt an, dass das FreeBSD System einen getty Prozess auf der entsprechenden Schnittstelle gestartet hat und das Modem auf einkommende Verbindungen wartet. Wenn der DTR Indikator nicht leuchtet, melden Sie sich an dem FreeBSD System an und überprüfen mit ps ax, ob FreeBSD einen getty Prozess auf der entsprechenden Schnittstelle gestartet hat. Unter den angezeigten Prozessen sollten Sie ähnliche wie die folgenden finden: 114 ?? I 0:00.10 /usr/libexec/getty V19200 ttyd0 115 ?? I 0:00.10 /usr/libexec/getty V19200 ttyd1 Wenn das Modem noch keinen Anruf entgegengenommen hat und Sie stattdessen die folgende Zeile sehen 114 d0 I 0:00.10 /usr/libexec/getty V19200 ttyd0 bedeutet dies, dass getty die Schnittstelle schon geöffnet hat und zeigt Kabelprobleme oder eine falsche Modemkonfiguration an, da getty die Schnittstelle erst dann öffnen kann, wenn das CD Signal (Carrier Detect) vom Modem anliegt. Wenn Sie keine getty Prozesse auf den gewünschten ttydN Ports finden, untersuchen Sie bitte /etc/ttys auf Fehler. Suchen Sie auch in /var/log/messages nach Meldungen von init oder getty. Wenn Sie dort Meldungen finden, sollten Sie noch einmal die beiden Konfigurationsdateien /etc/ttys und /etc/gettytab nach Fehlern durchsehen. Überprüfen Sie auch, ob die Gerätedateien /dev/ttydN vorhanden sind. Einwählversuch Versuchen Sie, sich in Ihr System einzuwählen. Auf dem entfernten System stellen Sie bitte die folgenden Kommunikationsparameter ein: 8 Bit, keine Parität, ein Stop-Bit. Wenn Sie kein Anmeldeprompt erhalten oder nur unleserliche Zeichen sehen, drücken Sie mehrmals, in Abständen von ungefähr einer Sekunde, Enter. Wenn Sie immer noch nicht die login: Meldung sehen, schicken Sie ein BREAK Kommando. Wenn Sie zur Einwahl ein Highspeed-Modem benutzen, verwenden Sie eine feste Geschwindigkeit auf der seriellen Schnittstelle des Modems (AT&B1 für ein USR Sportster). Wenn Sie jetzt immer noch kein Anmeldeprompt erhalten, überprüfen Sie nochmals /etc/gettytab und stellen sicher, dass der Verbindungstyp in /etc/ttys zu einem gültigen Eintrag in /etc/gettytab gehört, jeder der nx= Einträge in gettytab gültig ist und jeder tc= Eintrag auf einen gültigen Eintrag in gettytab verweist. Wenn das Modem an Ihrem FreeBSD System auf einen eingehenden Anruf nicht antwortet, stellen Sie sicher, dass das Modem so konfiguriert ist, dass es einen Anruf beantwortet, wenn DTR anliegt. Wenn Ihr Modem Statusindikatoren besitzt, können Sie das Anliegen von DTR anhand der Leuchten überprüfen. Wenn Sie alles schon mehrfach überprüft haben und es immer noch noch nicht funktioniert, machen Sie erst einmal eine Pause, bevor Sie weitermachen. Wenn es immer noch nicht funktioniert, können Sie eine Mail an die Mailingliste &a.de.questions; schicken, in der Sie Ihr Modem und Ihr Problem beschreiben und Ihnen sollte geholfen werden. Verbindungen nach Außen Die folgenden Ratschläge beschreiben, wie Sie mit einem Modem eine Verbindung zu einem anderen Computer herstellen. Dies können Sie nutzen, um sich auf einem entfernten Computer anzumelden, oder um eine Verbindung zu einem BBS (Bulletin Board System) herzustellen. Weiterhin ist diese Art von Verbindungen nützlich, wenn mal Ihr PPP nicht funktioniert. Wenn Sie zum Beispiel eine Datei mit FTP übertragen wollen und das über PPP gerade nicht möglich ist, melden Sie sich auf dem entfernten Rechner an und führen dort die FTP Sitzung durch. Die Dateien können Sie danach mit zmodem auf den lokalen Rechner übertragen. - Mein Hayes Modem wird nicht unterstützt — was kann + <title>Mein Hayes Modem wird nicht unterstützt – was kann ich tun? Eigentlich ist die Onlinehilfe für tip nicht mehr aktuell. Es gibt einen eingebauten, allgemeinen Hayes Wähler. Verwenden Sie einfach at=hayes in /etc/remote. Der Hayes Treiber ist nicht schlau genug, um ein paar der - erweiterten Funktionen von neueren Modems zu erkennen — + erweiterten Funktionen von neueren Modems zu erkennen – Nachrichten wie BUSY, NO DIALTONE oder CONNECT 115200 verwirren ihn nur. Sie sollten diese Nachrichten mit Hilfe von ATX0&W abschalten, wenn Sie tip benutzen. Der Anwahl-Timeout von tip beträgt 60 Sekunden. Ihr Modem sollte weniger verwenden, oder tip denkt, dass ein Kommunikationsfehler vorliegt. Versuchen Sie es mit ATS7=45&W. Tatsächlich unterstützt die ausgelieferte Version von tip Hayes Modems noch nicht vollständig. Die Lösung ist, tipconf.h in /usr/src/usr.bin/tip/tip zu editieren. Dafür benötigen Sie natürlich die Quellcode Distribution. Ändern Sie die Zeile #define HAYES 0 zu #define HAYES 1. Dann führen Sie make und make install aus. Es sollte jetzt funktionieren. Wie soll ich die AT Befehle eingeben? /etc/remote Erstellen Sie einen so genannten direct Eintrag in /etc/remote. Wenn Ihr Modem zum Beispiel an der ersten seriellen Schnittstelle, /dev/cuaa0, angeschlossen ist, dann fügen Sie die folgende Zeile hinzu: cuaa0:dv=/dev/cuaa0:br#19200:pa=none Verwenden Sie die höchste bps Rate, die Ihr Modem in der br Fähigkeit unterstützt. Geben Sie dann tip cuaa0 ein und Sie sind mit Ihrem Modem verbunden. Wenn auf Ihrem System keine /dev/cuaa0 Datei existiert, geben Sie Folgendes ein: &prompt.root; cd /dev &prompt.root; sh MAKEDEV cuaa0 Oder benutzen Sie cu als root mit dem folgenden Befehl: &prompt.root; cu -lline -sspeed line steht für die serielle Schnittstelle (/dev/cuaa0) und speed für die Geschwindigkeit (57600). Wenn Sie mit dem Eingeben der AT Befehle fertig sind, beenden Sie mit ~.. Wieso funktioniert das <literal>@</literal> Zeichen für die pn Fähigkeit nicht? Das @ Zeichen in der Telefonnummerfähigkeit sagt tip, dass es in der Datei /etc/phones nach einer Nummer suchen soll. Aber @ ist auch ein spezielles Zeichen in den Dateien, in denen Fähigkeiten beschrieben werden, wie /etc/remote. Schreiben Sie es mit einem Backslash: pn=\@ Wie kann ich von der Kommandozeile eine Telefonnummer wählen? Stellen Sie einen allgemeinen Eintrag in /etc/remote. Zum Beispiel: tip115200|Dial any phone number at 115200 bps:\ :dv=/dev/cuaa0:br#115200:at=hayes:pa=none:du: tip57600|Dial any phone number at 57600 bps:\ :dv=/dev/cuaa0:br#57600:at=hayes:pa=none:du: Mit dem folgenden Befehl können Sie dann wählen: &prompt.root; tip -115200 5551234 Sollten Sie cu gegenüber tip bevorzugen, verwenden Sie einen allgemeinen cu-Eintrag: cu115200|Use cu to dial any number at 115200bps:\ :dv=/dev/cuaa1:br#57600:at=hayes:pa=none:du: und benutzen zum Wählen das Kommando: &prompt.root; cu 5551234 -s 115200 Muss ich dabei jedes Mal die bps Rate angeben? Schreiben Sie einen tip1200 oder einen cu1200 Eintrag, aber geben Sie auch die bps Rate an, die Ihr Modem wirklich unterstützt. Leider denkt &man.tip.1;, dass 1200 bps ein guter Standardwert ist und deswegen sucht es nach einem tip1200-Eintrag. Natürlich müssen Sie nicht wirklich 1200 bps benutzen. Wie kann ich möglichst komfortabel über einen Terminal-Server auf verschiedene Rechner zugreifen? Sie müssen nicht warten bis Sie verbunden sind, und jedes Mal CONNECT Rechner eingeben, benutzen Sie tip's cm Fähigkeit. Sie können diese Einträge in /etc/remote verwenden: pain|pain.deep13.com|Forrester's machine:\ :cm=CONNECT pain\n:tc=deep13: muffin|muffin.deep13.com|Frank's machine:\ :cm=CONNECT muffin\n:tc=deep13: deep13:Gizmonics Institute terminal server:\ :dv=/dev/cuaa2:br#38400:at=hayes:du:pa=none:pn=5551234: Mit den Befehlen tip pain oder tip muffin können Sie eine Verbindungen zu den Rechnern pain oder muffin herstellen; mit tip deep13 verbinden Sie sich mit dem Terminal Server. Kann tip mehr als eine Verbindung für jede Seite ausprobieren? Das ist oft ein Problem, wenn eine Universität mehrere Telefonleitungen hat und viele tausend Studenten diese benutzen wollen. Erstellen Sie einen Eintrag für Ihre Universität in /etc/remote und benutzen Sie @ für die pn Fähigkeit: big-university:\ :pn=\@:tc=dialout dialout:\ :dv=/dev/cuaa3:br#9600:at=courier:du:pa=none: Listen Sie die Telefonnummern der Universität in /etc/phones auf: big-university 5551111 big-university 5551112 big-university 5551113 big-university 5551114 tip probiert jede der Nummern in der aufgelisteten Reihenfolge und gibt dann auf. Möchten Sie, dass tip beim Versuchen eine Verbindung herzustellen nicht aufgibt, lassen Sie es in einer while-Schleife laufen. Warum muss ich zweimal <keycombo action="simul"> <keycap>Ctrl</keycap> <keycap>P</keycap> </keycombo> tippen, um ein <keycombo action="simul"> <keycap>Ctrl</keycap> <keycap>P</keycap> </keycombo> zu senden? Ctrl P ist das voreingestellte Zeichen, mit dem eine Übertragung erzwungen werden kann und wird benutzt, um tip zu sagen, dass das nächste Zeichen direkt gesendet werden soll und nicht als Fluchtzeichen interpretiert werden soll. Mit Hilfe der ~s Fluchtsequenz, mit der man Variablen setzen kann, können Sie jedes andere Zeichen als force-Zeichen definieren. Geben Sie ~sforce=Zeichen gefolgt von Enter ein. Für Zeichen können Sie ein beliebiges einzelnes Zeichen einsetzen. Wenn Sie Zeichen weglassen, ist das force-Zeichen nul, das Sie mit Ctrl2 oder CtrlLeertaste eingeben können. Ein guter Wert für Zeichen ist Shift Ctrl 6 , welches nur auf wenigen Terminal Servern benutzt wird. Sie können das force-Zeichen auch bestimmen, indem Sie in $HOME/.tiprc das Folgende einstellen: force=<single-char> Warum ist auf einmal alles was ich schreibe in GROSSBUCHSTABEN?? Sie müssen Ctrl A , eingegeben haben, das raise-Zeichen von tip, das speziell für Leute mit defekten caps-lock Tasten eingerichtet wurde. Benutzen Sie ~s wie oben und setzen Sie die Variable raisechar auf etwas, das Ihnen angemessen erscheint. Tatsächlich kann die Variable auf das gleiche Zeichen wie das force-Zeichen gesetzt werden, wenn Sie diese Fähigkeiten niemals benutzen wollen. Hier ist ein Muster der .tiprc Datei, perfekt für Emacs Benutzer, die oft Ctrl2 und CtrlA tippen müssen: force=^^ raisechar=^^ Geben Sie für ^^ ShiftCtrl6 ein. Wie kann ich Dateien mit <command>tip</command> übertragen? Wenn Sie mit einem anderen &unix; System kommunizieren, können Sie mit ~p (put) und ~t (take) Dateien senden und empfangen. Diese Befehle lassen cat und echo auf dem entfernten System laufen, um Dateien zu empfangen und zu senden. Die Syntax ist: ~p local-file remote-file ~t remote-file local-file Es gibt keine Fehlerkontrolle, deshalb sollten Sie besser ein anderes Protokoll, wie zmodem, benutzen. Wie kann ich zmodem mit <command>tip</command> laufen lassen? Um Dateien zu empfangen, starten Sie das Programm zum Senden auf dem entfernten Computer. Geben Sie dann ~C rz ein, um die Dateien lokal zu empfangen. Um Dateien zu senden, starten Sie das Programm zum Empfangen auf dem entfernten Computer. Geben Sie dann ~C sz Dateien ein, um Dateien auf das entfernte System zu senden. Kazutaka YOKOTA Beigesteuert von Bill Paul Auf Grundlage eines Dokuments von Einrichten der seriellen Konsole serial console Einführung FreeBSD kann ein System mit einem Dumb-Terminal (unintelligente Datenstation) an einer seriellen Schnittstelle als Konsole booten. Diese Konfiguration ist besonders nützlich für Systemadministratoren, die FreeBSD auf Systemen ohne Tastatur oder Monitor installieren wollen, und Entwickler, die den Kernel oder Gerätetreiber debuggen. Wie in beschrieben, besitzt FreeBSD drei Bootphasen. Der Code für die ersten beiden Bootphasen befindet sich im Bootsektor am Anfang der FreeBSD Slice der Bootplatte. Dieser Bootblock lädt den Bootloader (/boot/loader) in Phase drei. Um eine serielle Konsole einzurichten, müssen Sie den Bootblock, den Bootloader und den Kernel konfigurieren. Konfiguration der Konsole Bereiten Sie ein serielles Kabel vor. Nullmodemkabel Sie benötigen entweder ein Nullmodemkabel oder ein serielles Standard Kabel mit einem Nullmodemkabel-Adapter. In wurden serielle Kabel beschrieben. Trennen Sie die Tastatur vom Computer. Die meisten PC Systeme suchen beim Power On Self Test (POST) nach einer Tastatur und geben eine Fehlermeldung aus, wenn sie keine finden. Einige Maschinen werden sich sogar weigern, ohne Tastatur zu booten. Wenn Ihr Rechner trotz einer Fehlermeldung normal weiterbootet, brauchen Sie weiter nichts zu tun. Beispielsweise geben einige Maschinen mit einem Phoenix BIOS nur Keyboard failed aus und booten dann normal weiter. Wenn Ihr System ohne Tastatur nicht booten will, müssen Sie das BIOS so konfigurieren, das es diesen Fehler ignoriert (wenn das möglich ist). Das Handbuch zu Ihrem Motherboard sollte beschreiben, wie das zu bewerkstelligen ist. Wenn Sie im BIOS Not installed für die Tastatur einstellen, heißt das nicht, dass Sie die Tastatur nicht benutzen können, sondern dies weist das BIOS nur an, nicht nach einer Tastatur zu suchen. Trotz dieser Einstellung können Sie die Tastatur angeschlossen lassen und sie später verwenden. Wenn Ihr System über eine PS/2 Maus verfügt, müssen Sie diese wahrscheinlich auch abziehen. Da sich die PS/2 Maus und die Tastatur einige Hardwarekomponenten teilen, kann das dazu führen, dass die Hardwareerkennung fälschlicherweise eine Tastatur findet, wenn eine PS/2 Maus angeschlossen ist. Gateway 2000 Pentium 90 MHz Systemen wird dieses Verhalten nachgesagt. Normalerweise ist das kein Problem, da eine Maus ohne Tastatur sowieso nicht sinnvoll einsetzbar ist. Schließen Sie einen Dumb-Terminal an COM1 (sio0) an. Wenn Sie keinen Dumb-Terminal besitzen, können Sie einen alten PC/XT mit einem Terminalemulator oder die serielle Schnittstelle eines anderen &unix; Rechners benutzen. Sie benötigen auf jeden Fall eine freie erste serielle Schnittstelle (COM1). Zurzeit ist es nicht möglich, in den Bootblöcken eine andere Schnittstelle zu konfigurieren, ohne diese neu zu kompilieren. Wenn Sie COM1 bereits für ein anderes Gerät benutzen, müssen Sie dieses Gerät temporär entfernen und einen neuen Bootblock sowie Kernel installieren, wenn Ihr FreeBSD erst einmal installiert ist. Auf einem Server sollte COM1 ohnehin verfügbar sein. Wenn Sie die Schnittstelle für ein anderes Gerät benutzen und Sie dieses nicht auf COM2 (sio1) legen können, sollten Sie sich nicht an erster Stelle mit dem Aufsetzen einer seriellen Konsole beschäftigen. Stellen Sie sicher, dass Ihre Kernelkonfiguration die richtigen Optionen für COM1 (sio0) enthält. Relevante Optionen sind: 0x10 Aktiviert die Konsolenunterstützung für dieses Gerät. Zurzeit kann nur ein Gerät die Konsolenunterstützung aktiviert haben. Das erste, in der Konfigurationsdatei aufgeführte Gerät, mit dieser Option, verfügt über eine aktivierte Konsolenunterstützung. Beachten Sie, dass diese Option alleine nicht ausreicht, um die serielle Konsole zu aktivieren. Setzen Sie entweder noch die nachfolgend diskutierte Option oder verwenden Sie beim Booten, wie unten beschrieben, den Schalter . 0x20 Das erste Gerät in der Kernelkonfigurationsdatei mit dieser Option wird, unabhängig von dem unten diskutierten Schalter , zur Konsole. Dies ersetzt COMCONSOLE der FreeBSD Versionen 2.X. Die Option muss zusammen mit verwendet werden. 0x40 Reserviert dieses Gerät und sperrt es für normale Zugriffe. Sie sollten diese Option nicht auf dem Gerät setzen, das Sie als serielle Konsole verwenden wollen. Der Zweck dieser Option ist es, dieses Gerät für das Remote-Debuggen zu reservieren. Das FreeBSD Developers' Handbook enthält dazu weitere Informationen. In FreeBSD 4.0 und späteren Versionen hat sich die Bedeutung dieser Option leicht geändert und es existiert eine weitere Option, um ein Gerät zum Remote-Debuggen zu verwenden. Beispiel: device sio0 at isa? port IO_COM1 tty flags 0x10 irq 4 Weitere Einzelheiten entnehmen Sie bitte &man.sio.4;. Wenn diese Optionen nicht gesetzt sind, müssen Sie auf einer anderen Konsole beim Booten UserConfig starten oder den Kernel neu kompilieren. Erstellen Sie boot.config im Rootverzeichnis der a-Partition des Bootlaufwerks. Der Code des Bootblocks entnimmt dieser Datei, wie Sie Ihr System booten möchten. Um die serielle Konsole zu aktivieren, müssen Sie hier eine oder mehrere Optionen (alle in derselben Zeile) angeben. Die folgenden Optionen stehen zur Auswahl der Konsole zur Verfügung: Schaltet zwischen der internen und der seriellen Konsole um. Wenn Sie beispielsweise von der internen Konsole (Bildschirm) booten, weist den Bootloader und den Kernel an, die serielle Schnittstelle als Konsole zu nehmen. Wenn die Konsole normal auf der seriellen Schnittstelle liegt, wählen Sie mit den Bildschirm aus. Schaltet zwischen Einzelkonsole und Dual-Konsole um. Die Einzelkonsole ist entweder die interne Konsole (der Bildschirm) oder die serielle Schnittstelle, je nach dem Stand von . Im Dual-Konsolen Betrieb ist die Konsole, unabhängig von , gleichzeitig der Bildschirm und die serielle Schnittstelle. Dies trifft aber nur zu, wenn der Bootblock ausgeführt wird. Sobald der Bootloader ausgeführt wird, wird die durch gegebene Konsole die alleinige Konsole. Veranlasst den Bootblock nach einer Tastatur zu suchen. Wenn keine Tastatur gefunden wird, werden und automatisch gesetzt. Wegen Platzbeschränkungen in den Bootblöcken kann nur erweiterte Tastaturen erkennen. Tastaturen mit weniger als 101 Tasten (und ohne F11 und F12 Tasten) werden wahrscheinlich, wie vielleicht auch die Tastaturen einiger Laptops, nicht erkannt. Wenn dies bei Ihrem System der Fall ist, können Sie nicht verwenden, da es leider noch keine Umgehung für dieses Problem gibt. Benutzen Sie also entweder , um die Konsole automatisch zu setzen, oder , um die serielle Konsole zu verwenden. In boot.config können Sie auch andere, in &man.boot.8; beschriebene Optionen, aufnehmen. Mit Ausnahme von werden die Optionen an den Bootloader (/boot/loader) weitergegeben. Der Bootloader untersucht dann einzig um festzustellen, welches Gerät die Konsole wird. Wenn Sie also nur angegeben haben, können Sie die serielle Schnittstelle nur als Konsole verwenden während der Bootblock ausgeführt wird. Danach wird der Bootloader, da ja fehlt, den Bildschirm zur Konsole machen. Booten Sie die Maschine. Wenn Sie das FreeBSD System starten, werden die Bootblöcke den Inhalt von /boot.config auf der Konsole ausgeben: /boot.config: -P Keyboard: no Die zweite Zeile sehen Sie nur, wenn Sie in /boot.config angegeben haben. Sie zeigt an, ob eine Tastatur angeschlossen ist oder nicht. Die Meldungen gehen je nach den Einstellungen in /boot.config auf die interne Konsole, die serielle Konsole, oder beide Konsolen. Optionen Meldungen erscheinen auf keine der internen Konsole der seriellen Konsole der seriellen und der internen Konsole der seriellen und der internen Konsole , mit Tastatur der internen Konsole , ohne Tastatur der seriellen Konsole Nach den oben gezeigten Meldungen gibt es eine kleine Verzögerung bevor die Bootblöcke den Bootloader laden und weitere Meldungen auf der Konsole erscheinen. Sie können die Ausführung der Bootblöcke unterbrechen, um zu überprüfen, ob auch alles richtig aufgesetzt ist, brauchen das aber unter normalen Umständen nicht zu tun. Drücken Sie eine Taste außer Enter um den Bootvorgang zu unterbrechen. Sie erhalten dann ein Prompt, an dem Sie weitere Eingaben tätigen können: >> FreeBSD/i386 BOOT Default: 0:wd(0,a)/boot/loader boot: Je nach Inhalt von /boot.config erscheint das Prompt auf der seriellen Konsole, der internen Konsole oder beiden Konsolen. Wenn die Meldung auf der richtigen Konsole erscheint, drücken Sie Enter um fortzufahren. Wenn Sie das Prompt auf der seriellen Konsole erwartet haben, dort aber nichts sehen, liegt ein Fehler in Ihren Einstellungen vor. Als Umgehung geben Sie an der momentanen Konsole ein, um den Bootblock und den Bootloader auf die serielle Konsole umzustellen. Führen Sie dann den Bootvorgang mit Enter weiter und wenn das System gebootet hat, können Sie die fehlerhaften Einstellungen korrigieren. Nachdem der Bootloader geladen wurde und Sie sich in der dritten Bootphase befinden, können Sie immer noch zwischen der internen und der seriellen Konsole auswählen. Setzen Sie dazu, wie in beschrieben, die entsprechenden Variablen des Bootloaders. Zusammenfassung Die folgende Übersicht zeigt, welche Konsole, abhängig von den getroffenen Einstellungen, ausgewählt wird. Fall 1: Option 0x10 für <devicename>sio0</devicename> device sio0 at isa? port IO_COM1 tty flags 0x10 irq 4 Optionen in /boot.config Konsole in den Bootblöcken Konsole im Bootloader Konsole im Kernel keine interne interne interne serielle serielle serielle serielle und interne interne interne serielle und interne serielle serielle , mit Tastatur interne interne interne , ohne Tastatur serielle und interne serielle serielle Fall 2: Option 0x30 für <devicename>sio0</devicename> device sio0 at isa? port IO_COM1 tty flags 0x30 irq 4 Optionen in /boot.config Konsole in den Bootblöcken Konsole im Bootloader Konsole im Kernel keine interne interne serielle serielle serielle serielle serielle und interne interne serielle serielle und interne serielle serielle , mit Tastatur interne interne serielle , ohne Tastatur serielle und interne serielle serielle Hinweise zur seriellen Konsole Verwenden einer höheren Geschwindigkeit Die Vorgabewerte für die Kommunikationsparameter der seriellen Schnittstelle sind: 9600 baud, 8 Bit, keine Parität und ein Stopp-Bit. Wenn Sie die Geschwindigkeit ändern wollen, müssen Sie mindestens die Bootblöcke neu kompilieren. Fügen Sie die folgende Zeile in /etc/make.conf hinzu und kompilieren Sie Bootblöcke neu: BOOT_COMCONSOLE_SPEED=19200 Wenn die serielle Konsole auf einem anderen Weg als durch die Verwendung von konfiguriert wird, oder die serielle Konsole des Kernels eine andere als die der Bootblöcke ist, müssen der Kernelkonfiguration zudem noch die folgende Option hinzufügen und einen neuen Kernel kompilieren: options CONSPEED=19200 Eine andere Schnittstelle als <devicename>sio0</devicename> benutzen Wenn Sie, warum auch immer, ein anderes Gerät als sio0 für die serielle Konsole einsetzen wollen, kompilieren Sie bitte die Bootblöcke, den Bootloader und den Kernel nach dem folgenden Verfahren neu. Installieren Sie die Kernelquellen (siehe ). Setzen Sie in /etc/make.conf BOOT_COMCONSOLE_PORT auf die Adresse der Schnittstelle (0x3F8, 0x2F8, 0x3E8 oder 0x2E8), die Sie benutzen möchten. Sie können nur sio0 bis sio3 (COM1 bis COM4) benutzen, Multiportkarten können Sie nicht als Konsole benutzen. Interrupts müssen Sie hier nicht angeben. Erstellen Sie eine angepasste Kernelkonfiguration und geben Sie dort die richtigen Optionen für die Schnittstelle, die Sie benutzen möchten, an. Wenn Sie zum Beispiel sio1 (COM2) zur Konsole machen wollen, geben Sie dort entweder device sio1 at isa? port IO_COM2 tty flags 0x10 irq 3 oder device sio1 at isa? port IO_COM2 tty flags 0x30 irq 3 an. Keine andere serielle Schnittstelle sollte als Konsole definiert werden. Übersetzen und installieren Sie die Bootblöcke und den Bootloader: &prompt.root; cd /sys/boot &prompt.root; make &prompt.root; make install Bauen und installieren Sie einen neuen Kernel. Schreiben Sie die Bootblöcke mit &man.disklabel.8; auf die Bootplatte und booten Sie den neuen Kernel. DDB Debugger über die serielle Schnittstelle Wenn Sie den Kerneldebugger über eine serielle Verbindung bedienen möchten (nützlich, kann aber gefährlich sein, wenn auf der Leitung falsche BREAK Signale generiert werden), sollten Sie einen Kernel mit den folgenden Optionen erstellen: options BREAK_TO_DEBUGGER options DDB Benutzung der seriellen Konsole zum Anmelden Da Sie schon die Bootmeldungen auf der Konsole verfolgen können und den Kerneldebugger über die Konsole bedienen können, wollen Sie sich vielleicht auch an der Konsole anmelden. Öffnen Sie /etc/ttys in einem Editor und suchen Sie nach den folgenden Zeilen: ttyd0 "/usr/libexec/getty std.9600" unknown off secure ttyd1 "/usr/libexec/getty std.9600" unknown off secure ttyd2 "/usr/libexec/getty std.9600" unknown off secure ttyd3 "/usr/libexec/getty std.9600" unknown off secure ttyd0 bis ttyd3 entsprechen COM1 bis COM4. Ändern Sie für die entsprechende Schnittstelle off zu on. Wenn Sie auch die Geschwindigkeit der seriellen Schnittstelle geändert haben, müssen Sie std.9600 auf die momentane Geschwindigkeit, zum Beispiel std.19200, anpassen. Sie sollten auch den Terminaltyp von unknown auf den tatsächlich verwendeten Terminal setzen. Damit die Änderungen an der Datei wirksam werden, müssen Sie noch kill -HUP 1 absetzen. Die Konsole im Bootloader ändern In den vorigen Abschnitten wurde beschrieben, wie Sie die serielle Konsole durch Änderungen im Bootblock aktivieren. Dieser Abschnitt zeigt Ihnen, wie Sie mit Kommandos und Umgebungsvariablen die Konsole im Bootloader definieren. Da der Bootloader die dritte Phase im Bootvorgang ist und nach den Bootblöcken ausgeführt wird, überschreiben seine Einstellungen die des Bootblocks. Festlegen der Konsole Mit einer einzigen Zeile in /boot/loader.rc können Sie den Bootloader und den Kernel anweisen, die serielle Schnittstelle zur Konsole zu machen: set console=comconsole Unabhängig von den Einstellungen im Bootblock legt dies die Konsole fest. Die obige Zeile sollte die erste Zeile in /boot/loader.rc sein, so dass Sie die Bootmeldungen so früh wie möglich auf der Konsole sehen. Analog können Sie die interne Konsole verwenden: set console=vidconsole Wenn Sie console nicht setzen, bestimmt der Bootloader (und damit auch der Kernel) die Konsole über die Option des Bootblocks. Ab FreeBSD 3.2 können Sie die Bootkonsole in /boot/loader.conf.local oder /boot/loader.conf anstatt in /boot/loader.rc angeben. In /boot/loader.rc finden Sie bei dieser Methode den folgenden Inhalt: include /boot/loader.4th start Erstellen Sie /boot/loader.conf.local und fügen die Zeile console=comconsole oder console=vidconsole ein. Weitere Informationen erhalten Sie in &man.loader.conf.5;. Momentan gibt es im Bootloader nichts vergleichbares zu im Bootblock. Damit kann die Konsole nicht automatisch über das Vorhandensein einer Tastatur festgelegt werden. Eine andere Schnittstelle als <devicename>sio0</devicename> benutzen Sie müssen den Bootloader neu kompilieren, wenn Sie eine andere Schnittstelle als sio0 benutzen wollen. Folgen Sie der Anleitung aus . Vorbehalte Hinter dem ganzen steckt die Idee, Server ohne Hardware für Grafik und ohne Tastatur zu betreiben. Obwohl es die meisten Systeme erlauben, ohne Tastatur zu booten, gibt es leider nur wenige Systeme, die ohne eine Grafikkarte booten. Maschinen mit einem AMI BIOS können ohne Grafik booten, indem Sie den Grafikadapter im CMOS-Setup auf Not installed setzen. Viele Maschinen unterstützen diese Option allerdings nicht. Damit diese Maschinen booten, müssen sie über eine Grafikkarte, auch wenn es nur eine alte Monochromkarte ist, verfügen. Allerdings brauchen Sie keinen Monitor an die Karte anzuschließen. Sie können natürlich auch versuchen, auf diesen Maschinen ein AMI BIOS zu installieren. diff --git a/de_DE.ISO8859-1/books/handbook/users/chapter.sgml b/de_DE.ISO8859-1/books/handbook/users/chapter.sgml index e677c2026b..a235cb895f 100644 --- a/de_DE.ISO8859-1/books/handbook/users/chapter.sgml +++ b/de_DE.ISO8859-1/books/handbook/users/chapter.sgml @@ -1,1121 +1,1121 @@ Neil Blakey-Milner Beigetragen von Robert Drehmel Übersetzt von Benutzer und grundlegende Account-Verwaltung Übersicht Einen FreeBSD Computer können mehrere Benutzer zur selben Zeit benutzen, allerdings kann immer nur einer vor der Konsole sitzen Außer Sie verwenden, wie in besprochen, zusätzliche Terminals , über das Netzwerk können beliebig viele Benutzer angemeldet sein. Jeder Benutzer muss einen Account haben, um das System benutzen zu können. Nachdem Sie dieses Kapitel gelesen haben, werden Sie die verschiedenen Account-Typen von FreeBSD kennen, wissen, wie Accounts angelegt werden, wissen, wie Sie Accounts löschen, wie Sie Attribute eines Accounts, wie den Loginnamen oder die Login-Shell ändern, wissen, wie Sie Limits für einen Account setzen, um beispielsweise Ressourcen, wie Speicher oder CPU-Zeit, einzuschränken, wie Sie mit Gruppen die Verwaltung der Accounts vereinfachen. Vor dem Lesen dieses Kapitels sollten Sie die Grundlagen von &unix; und FreeBSD () verstanden haben. Einführung Jeder Zugriff auf das System geschieht über Accounts und alle Prozesse werden von Benutzern gestartet, also sind Benutzer- und Account-Verwaltung von wesentlicher Bedeutung in FreeBSD-Systemen. Mit jedem Account eines FreeBSD Systems sind bestimmte Informationen verknüpft, die diesen Account identifizieren. Loginnamen Den Loginnamen geben Sie bei der Anmeldung ein, wenn Sie dazu mit login: aufgefordert werden. Loginnamen müssen auf dem System eindeutig sein, das heißt auf einem System kann es nicht zwei Accounts mit demselben Loginnamen geben. In &man.passwd.5; wird beschrieben, wie ein gültiger Loginname gebildet wird. Normalerweise sollten Sie Namen verwenden, die aus Kleinbuchstaben bestehen und bis zu acht Zeichen lang sind. Passwort Mit jedem Account ist ein Passwort verknüpft. Wenn das Passwort leer ist, wird es bei der Anmeldung nicht abgefragt. Das ist allerdings nicht zu empfehlen, daher sollte jeder Account ein Passwort besitzen. User ID (UID) Die UID ist eine Zahl zwischen 0 und 65536, die einen Account eindeutig identifiziert. Intern verwendet FreeBSD nur die UID, Loginnamen werden zuerst in eine UID umgewandelt, mit der das System dann weiter arbeitet. Das bedeutet, dass Sie Accounts mit unterschiedlichen Loginnamen aber gleicher UID einrichten können. Vom Standpunkt des Systems handelt es sich dabei um denselben Account. In der Praxis werden Sie diese Eigenschaft des Systems wahrscheinlich nicht benutzen. Group ID (GID) Die GID ist eine Zahl zwischen 0 und 65536, die eine Gruppe eindeutig identifiziert. Mit Gruppen kann der Zugriff auf Ressourcen über die GID anstelle der UID geregelt werden. Einige Konfigurationsdateien werden durch diesen Mechanismus deutlich kleiner. Ein Account kann mehreren Gruppen zugehören. Login-Klasse Login-Klassen erweitern das Gruppenkonzept. Sie erhöhen die Flexibilität des Systems in der Handhabung der verschiedenen Accounts. Gültigkeit von Passwörtern Ein regelmäßiges Ändern des Passworts wird in der Voreinstellung von FreeBSD nicht erzwungen. Sie können allerdings einen Passwortwechsel nach einer gewissen Zeit auf Basis einzelner Accounts erzwingen. Verfallszeit eines Accounts In der Voreinstellung verfallen unter FreeBSD keine Accounts. Wenn Sie Accounts einrichten, die nur für eine bestimmte Zeit gültig sein sollen, beispielsweise Accounts für Teilnehmer eines Praktikums, können Sie angeben, wie lange der Account gültig sein soll. Nachdem die angegebene Zeitspanne verstrichen ist, kann dieser Account nicht mehr zum Anmelden verwendet werden, obwohl alle Verzeichnisse und Dateien, die diesem Account gehören, noch vorhanden sind. vollständiger Benutzername FreeBSD identifiziert einen Account eindeutig über den Loginnamen, der aber keine Ähnlichkeit mit dem richtigen Namen des Benutzers haben muss. Der vollständige Benutzername kann daher beim Einrichten eines Accounts angegeben werden. Heimatverzeichnis Das Heimatverzeichnis gibt den vollständigen Pfad zu dem Verzeichnis an, in dem sich der Benutzer nach erfolgreicher Anmeldung befindet. Es ist üblich, alle Heimatverzeichnisse unter /home/Loginname oder /usr/home/Loginname anzulegen. Im Heimatverzeichnis oder in dort angelegten Verzeichnissen werden die Dateien eines Benutzers gespeichert. Login-Shell Grundsätzlich ist die Schnittstelle zum System eine Shell, von denen es viele unterschiedliche gibt. Die bevorzugte Shell eines Benutzers kann seinem Account zugeordnet werden. Es gibt drei Haupttypen von Accounts: Der Superuser, Systembenutzer und Benutzer-Accounts. Der Superuser-Account, normalerweise root genannt, wird benutzt, um das System ohne Beschränkungen auf Privilegien zu verwalten. Systembenutzer starten Dienste. Abschließend werden Benutzer-Accounts von echten Menschen genutzt, die sich einloggen, Mails lesen und so weiter. Der Superuser-Account Accounts Superuser (root) Der Superuser-Account, normalerweise root genannt, ist vorkonfiguriert und erleichtert die Systemverwaltung, sollte aber nicht für alltägliche Aufgaben wie das Verschicken und Empfangen von Mails, Entdecken des Systems oder Programmierung benutzt werden. Das ist so, da der Superuser im Gegensatz zu normalen Benutzer-Accounts ohne Beschränkungen operiert und falsche Anwendung des Superuser-Accounts in spektakulären Katastrophen resultieren kann. Benutzer-Accounts sind nicht in der Lage, das System versehentlich zu zerstören, deswegen ist es generell am besten normale Benutzer-Accounts zu verwenden, solange man nicht hauptsächlich die extra Privilegien benötigt. Kommandos, die Sie als Superuser eingeben, sollten Sie immer doppelt und dreifach überprüfen, da ein zusätzliches Leerzeichen oder ein fehlender Buchstabe irreparablen Datenverlust bedeuten kann. Das erste, das Sie tun sollten, nachdem Sie dieses Kapitel gelesen haben, ist einen unprivilegierten Benutzer für Ihre eigene normale Benutzung zu erstellen, wenn Sie das nicht bereits getan haben. Das trifft immer zu, egal ob Sie ein Mehrbenutzersystem oder ein System laufen haben, welches Sie alleine benutzen. Später in diesem Kapitel besprechen wir, wie man zusätzliche Accounts erstellt und wie man zwischen dem normalen Benutzer und dem Superuser wechselt. System-Accounts Accounts System-Accounts Systembenutzer starten Dienste wie DNS, Mail-Server, Web-Server und so weiter. Der Grund dafür ist die Sicherheit; wenn die Programme von dem Superuser gestartet werden, können Sie ohne Einschränkungen handeln. Accounts daemon Accounts operator Beispiele von Systembenutzern sind daemon, operator, bind (für den Domain Name Service) und news. Oft erstellen Systemadministratoren den Benutzer httpd, um Web-Server laufen zu lassen, die sie installieren. Accounts nobody nobody ist der generische unprivilegierte Systembenutzer. Bedenken Sie aber, dass je mehr Dienste nobody benutzen, desto mehr Dateien und Prozesse diesem Benutzer gehören und dieser Benutzer damit umso privilegierter wird. Benutzer-Accounts Accounts Benutzer-Accounts Benutzer-Account sind das primäre Mittel des Zugriffs für echte Menschen auf das System und isolieren Benutzer und Umgebung, schützen die Benutzer davor, das System oder Daten anderer Benutzer zu beschädigen und erlauben Benutzern ihre Umgebung selbst einzurichten, ohne das sich dies auf andere auswirkt. Jede Person, die auf Ihr System zugreift, sollte ihren eigenen Account besitzen. Das erlaubt Ihnen herauszufinden, wer was macht und hält Leute davon ab, die Einstellungen der anderen zu verändern oder Mails zu lesen, die nicht für sie bestimmt waren. Jeder Benutzer kann sich eine eigene Umgebung mit alternativen Shells, Editoren, Tastaturbelegungen und Sprachen einrichten. Accounts verändern Accounts verändern Unter &unix; gibt es verschiedene Kommandos, um Accounts zu verändern. Die gebräuchlichsten Kommandos sind unten, gefolgt von einer detaillierten Beschreibung, zusammengefasst. Kommando Zusammenfassung &man.adduser.8; Das empfohlene Werkzeug, um neue Accounts zu erstellen. &man.rmuser.8; Das empfohlene Werkzeug, um Accounts zu löschen. &man.chpass.1; Ein flexibles Werkzeug, um Informationen in der Account-Datenbank zu verändern. &man.passwd.1; Ein einfaches Werkzeug, um Passwörter von Accounts zu ändern. &man.pw.8; Ein mächtiges und flexibles Werkzeug um alle Informationen über Accounts zu ändern. <command>adduser</command> Accounts erstellen adduser /usr/share/skel &man.adduser.8; ist ein einfaches Programm um neue Benutzer hinzuzufügen. Es erstellt passwd und group Einträge für den Benutzer, genauso wie ein home Verzeichnis, kopiert ein paar vorgegebene Dotfiles aus /usr/share/skel und kann optional dem Benutzer eine ,,Willkommen``-Nachricht zuschicken. Um die anfängliche Konfigurationsdatei zu erstellen, benutzen Sie: adduser -s -config_create. Das bringt &man.adduser.8; dazu, weniger Fragen und Fehlermeldungen auszugeben. Wir benutzen später, wenn wir die Voreinstellungen ändern wollen. Zunächst konfigurieren wir Voreinstellungen von &man.adduser.8; und erstellen unseren ersten Benutzer-Account, da es böse und unangenehm ist, root für normale Aufgaben zu verwenden. <command>adduser</command> konfigurieren &prompt.root; adduser -v Use option ``-silent'' if you don't want to see all warnings and questions. Check /etc/shells Check /etc/master.passwd Check /etc/group Enter your default shell: csh date no sh tcsh zsh [sh]: zsh Your default shell is: zsh -> /usr/local/bin/zsh Enter your default HOME partition: [/home]: Copy dotfiles from: /usr/share/skel no [/usr/share/skel]: Send message from file: /etc/adduser.message no [/etc/adduser.message]: no Do not send message Use passwords (y/n) [y]: y Write your changes to /etc/adduser.conf? (y/n) [n]: y Ok, let's go. Don't worry about mistakes. I will give you the chance later to correct any input. Enter username [a-z0-9_-]: jru Enter full name []: J. Random User Enter shell csh date no sh tcsh zsh [zsh]: Enter home directory (full path) [/home/jru]: Uid [1001]: Enter login class: default []: Login group jru [jru]: Login group is ``jru''. Invite jru into other groups: guest no [no]: wheel Enter password []: Enter password again []: Name: jru Password: **** Fullname: J. Random User Uid: 1001 Gid: 1001 (jru) Class: Groups: jru wheel HOME: /home/jru Shell: /usr/local/bin/zsh OK? (y/n) [y]: y Added user ``jru'' Copy files from /usr/share/skel to /home/jru Add another user? (y/n) [y]: n Goodbye! &prompt.root; Zusammengefasst haben wir die vorgegebene Shell in zsh (eine zusätzliche Shell aus der Ports-Sammlung) geändert und das Senden einer ,,Willkommen``-Nachricht an neue Benutzer abgeschaltet. Danach haben wir die Konfiguration abgespeichert und anschließend einen Account für jru eingerichtet und sichergestellt, dass jru in der Gruppe wheel ist, so dass Sie mit &man.su.1; zu root wechseln kann. Wenn Sie das Passwort eingeben, werden weder Passwort noch Sternchen angezeigt. Passen Sie auf, dass Sie das Passwort nicht zweimal falsch eingeben. Benutzen Sie ab jetzt &man.adduser.8; ohne Argumente, dann müssen Sie nicht jedes mal die Vorgaben neu einstellen. Wenn das Programm Sie fragt, ob Sie die Vorgaben ändern wollen, verlassen und starten Sie es erneut mit der Option. <command>rmuser</command> rmuser Accounts löschen Benutzen Sie &man.rmuser.8;, um einen Account vollständig aus dem System zu entfernen. &man.rmuser.8; führt die folgenden Schritte durch: Entfernt den &man.crontab.1; Eintrag des Benutzers (wenn dieser existiert). Entfernt alle &man.at.1; jobs, die dem Benutzer gehören. Schließt alle Prozesse des Benutzers. Entfernt den Benutzer aus der lokalen Passwort-Datei des Systems. Entfernt das Heimatverzeichnis des Benutzers (falls es dem Benutzer gehört). Entfernt eingegange E-Mails des Benutzers aus /var/mail. Entfernt alle Dateien des Benutzers aus temporären Dateispeicherbereichen wie /tmp. Entfernt den Loginnamen von allen Gruppen, zu denen er gehört, aus /etc/group. Wenn eine Gruppe leer wird und der Gruppenname mit dem Loginnamen identisch ist, wird die Gruppe entfernt; das ergänzt sich mit den einzelnen Benutzer-Gruppen, die von &man.adduser.8; für jeden neuen Benutzer erstellt werden. Der Superuser-Account kann nicht mit &man.rmuser.8; entfernt werden, da dies in den meisten Fällen das System unbrauchbar macht. Als Vorgabe wird ein interaktiver Modus benutzt, der sicherzustellen versucht, dass Sie wissen, was Sie tun. Interaktives Löschen von Account mit <command>rmuser</command> &prompt.root; rmuser jru Matching password entry: jru:*:1001:1001::0:0:J. Random User:/home/jru:/usr/local/bin/zsh Is this the entry you wish to remove? y Remove user's home directory (/home/jru)? y Updating password file, updating databases, done. Updating group file: trusted (removing group jru -- personal group is empty) done. Removing user's incoming mail file /var/mail/jru: done. Removing files belonging to jru from /tmp: done. Removing files belonging to jru from /var/tmp: done. Removing files belonging to jru from /var/tmp/vi.recover: done. &prompt.root; <command>chpass</command> chpass &man.chpass.1; ändert Informationen der Benutzerdatenbank wie Passwörter, Shells und persönliche Informationen. Nur Systemadministratoren, mit Superuser-Rechten, können die Informationen und Passwörter der anderen Benutzer mit &man.chpass.1; verändern. Werden keine Optionen neben dem optionalen Loginnamen angegeben, zeigt &man.chpass.1; einen Editor mit Account-Informationen an und aktualisiert die Account-Datenbank, wenn dieser Editor beendet wird. Interaktives <command>chpass</command> des Superusers #Changing user database information for jru. Login: jru Password: * Uid [#]: 1001 Gid [# or name]: 1001 Change [month day year]: Expire [month day year]: Class: Home directory: /home/jru Shell: /usr/local/bin/zsh Full Name: J. Random User Office Location: Office Phone: Home Phone: Other information: Der normale Benutzer kann nur einen kleinen Teil dieser Informationen verändern und natürlich nur die Daten des eigenen Accounts. Interaktives <command>chpass</command> eines normalen Benutzers #Changing user database information for jru. Shell: /usr/local/bin/tcsh Full Name: J. Random User Office Location: Office Phone: Home Phone: Other information: &man.chfn.1; und &man.chsh.1; sind nur Verweise auf &man.chpass.1; genauso wie &man.ypchpass.1;, &man.ypchfn.1; und &man.ypchsh.1;. NIS wird automatisch unterstützt, deswegen ist es nicht notwendig das yp vor dem Kommando einzugeben. NIS wird später in besprochen. <application>passwd</application> passwd Accounts Passwort wechseln &man.passwd.1; ist der übliche Weg, Ihr eigenes Passwort als Benutzer zu ändern oder das Passwort eines anderen Benutzers als Superuser. Benutzer müssen ihr ursprüngliches Passwort eingeben, bevor sie es wechseln, um eine nicht autorisierte Person davon abzuhalten ihr Passwort zu ändern, wenn der Benutzer gerade nicht an seinem Gerät ist. Wechseln des Passworts &prompt.user; passwd Changing local password for jru. Old password: New password: Retype new password: passwd: updating the database... passwd: done &prompt.root; passwd jru Changing local password for jru. New password: Retype new password: passwd: updating the database... passwd: done Als Superuser das Passwort eines anderen Accounts verändern &prompt.root; passwd jru Changing local password for jru. New password: Retype new password: passwd: updating the database... passwd: done Wie bei &man.chpass.1; ist &man.yppasswd.1; nur ein Verweis auf &man.passwd.1;. NIS wird von jedem dieser Kommandos unterstützt. <command>pw</command> pw &man.pw.8; ist ein Kommandozeilenprogramm, mit dem man Accounts und Gruppen erstellen, entfernen, verändern und anzeigen kann. Dieses Kommando dient als Schnittstelle zu den Benutzer- und Gruppendateien des Systems. &man.pw.8; besitzt eine Reihe mächtiger Kommandozeilenschalter, die es für die Benutzung in Shell-Skripten geeignet machen, doch finden neue Benutzer die Bedienung des Kommandos komplizierter, als die der anderen hier vorgestellten Kommandos. Benutzer einschränken Benutzer einschränken Accounts einschränken Wenn ein System von mehreren Benutzern verwendet wird, ist es vielleicht notwendig, den Gebrauch des Systems zu beschränken. FreeBSD bietet dem Systemadministrator mehrere Möglichkeiten die System-Ressourcen, die ein einzelner Benutzer verwenden kann, einzuschränken. Diese Limitierungen sind in zwei Kategorien eingeteilt: Festplattenkontingente und andere Ressourcenbeschränkungen. Quotas Benutzer einschränken Quotas Festplatten Quotas Festplatten-Kontingente schränken den Plattenplatz, der einem Benutzer zur Verfügung steht, ein. Sie bieten zudem, ohne aufwändige Berechnung, einen schnellen Überblick über den verbrauchten Plattenplatz. Kontingente werden in diskutiert. /etc/login.conf Die Login-Klassen werden in /etc/login.conf definiert. Auf die präzisen Semantiken gehen wir hier nicht weiter ein, sie können jedoch in &man.login.conf.5; nachgelesen werden. Es ist ausreichend zu sagen, dass jeder Benutzer einer Login-Klasse zugewiesen wird (standardmäßig default) und dass jede Login-Klasse mit einem Satz von Login-Fähigkeiten verbunden ist. Eine Login-Fähigkeit ist ein Name=Wert Paar, in dem Name die Fähigkeit bezeichnet und Wert ein willkürlicher Text ist, der je nach Name entsprechend verarbeitet wird. Login-Klassen und -Fähigkeiten zu definieren ist fast schon selbsterklärend und wird auch in &man.login.conf.5; beschrieben. Ressourcenbeschränkungen unterscheiden sich von normalen Login-Fähigkeiten zweifach. Erstens gibt es für jede Beschränkung ein aktuelles und ein maximales Limit. Das aktuelle Limit kann vom Benutzer oder einer Anwendung beliebig bis zum maximalen Limit verändert werden. Letzteres kann der Benutzer nur heruntersetzen. Zweitens gelten die meisten Ressourcenbeschränkungen für jeden vom Benutzer gestarteten Prozess, nicht für den Benutzer selbst. Beachten Sie jedoch, dass diese Unterschiede durch das spezifische Einlesen der Limits und nicht durch das System der Login-Fähigkeiten entstehen (das heißt, Ressourcenbeschränkungen sind keine Login-Fähigkeiten). Hier befinden sich die am häufigsten benutzten Ressourcenbeschränkungen (der Rest kann zusammen mit den anderen Login-Fähigkeiten in &man.login.conf.5; gefunden werden): coredumpsize coredumpsize Benutzer einschränken coredumpsize Das Limit der Größe einer core-Datei, die von einem Programm generiert wird, unterliegt aus offensichtlichen Gründen anderen Limits der Festplattenbenutzung (zum Beispiel filesize oder Festplattenkontingenten). Es wird aber trotzdem oft als weniger harte Methode zur Kontrolle des Festplattenplatz-Verbrauchs verwendet: Da Benutzer die core-Dateien nicht selbst erstellen, und sie oft nicht löschen, kann sie diese Option davor retten, dass ihnen kein Festplattenspeicher mehr zur Verfügung steht, sollte ein großes Programm, wie emacs, abstürzen. cputime cputime Benutzer einschränken cputime Die maximale Rechenzeit, die ein Prozess eines Benutzers verbrauchen darf. Überschreitet der Prozess diesen Wert, wird er vom Kernel beendet. Die Rechenzeit wird limitiert, nicht die prozentuale Prozessorenbenutzung, wie es in einigen Feldern in &man.top.1; und &man.ps.1; dargestellt wird. Letzteres war zu der Zeit, als dies hier geschrieben wurde nicht möglich und würde eher nutzlos sein: - Ein Compiler—ein wahrscheinlich legitimer - Vorgang— kann leicht fast 100% des Prozessors in + Ein Compiler – ein wahrscheinlich legitimer + Vorgang – kann leicht fast 100% des Prozessors in Anspruch nehmen. filesize filesize Benutzer einschränken filesize Hiermit lässt sich die maximale Größe einer Datei bestimmen, die der Benutzer besitzen darf. Im Gegensatz zu Festplattenkontingenten ist diese Beschränkung nur für jede einzelne Datei gültig und nicht für den Platz, den alle Dateien eines Benutzers verwenden. maxproc maxproc Benutzer einschränken maxproc Das ist die maximale Anzahl von Prozessen, die ein Benutzer starten darf, und beinhaltet sowohl Vordergrund- als auch Hintergrundprozesse. Natürlich darf dieser Wert nicht höher sein als das System-Limit, das in kern.maxproc angegeben ist. Vergessen Sie auch nicht, dass ein zu kleiner Wert den Benutzer in seiner Produktivität einschränken könnte; es ist oft nützlich, mehrfach eingeloggt zu sein, oder Pipelines Pipeline = Leitung. Mit Pipes sind Verbindungen zwischen zwei Sockets in meistens zwei verschiedenen Prozessen gemeint. zu verwenden. Ein paar Aufgaben, wie die Kompilierung eines großen Programms, starten mehrere Prozesse (zum Beispiel &man.make.1;, &man.cc.1; und andere). memorylocked memorylocked Benutzer einschränken memorylocked Dieses Limit gibt an, wie viel virtueller Speicher von einem Prozess maximal im Arbeitsspeicher festgesetzt werden kann. (siehe auch &man.mlock.2;). Ein paar systemkritische Programme, wie &man.amd.8;, verhindern damit einen Systemzusammenbruch, der auftreten könnte, wenn sie aus dem Speicher genommen werden. memoryuse memoryuse Benutzer einschränken memoryuse Bezeichnet den maximalen Speicher, den ein Prozess benutzen darf und beinhaltet sowohl Arbeitsspeicher-, als auch Swap- Benutzung. Es ist kein allübergreifendes Limit für den Speicherverbrauch, aber ein guter Anfang. openfiles openfiles Benutzer einschränken openfiles Mit diesem Limit lässt sich die maximale Anzahl der von einem Prozess des Benutzers geöffneten Dateien festlegen. In FreeBSD werden Dateien auch verwendet, um Sockets und IPC-Kanäle IPC steht für Interprocess Communication. darzustellen. Setzen Sie es deshalb nicht zu niedrig. Das System-Limit ist im kern.maxfiles &man.sysctl.8; definiert. sbsize sbsize Benutzer einschränken sbsize Dieses Limit beschränkt den Netzwerk-Speicher, und damit die mbufs, die ein Benutzer verbrauchen darf. Es stammt aus einer Antwort auf einen DoS-Angriff, bei dem viele Netzwerk-Sockets geöffnet wurden, kann aber generell dazu benutzt werden Netzwerk-Verbindungen zu beschränken. stacksize Das ist die maximale Größe, auf die der Stack eines Prozesses heranwachsen darf. Das allein ist natürlich nicht genug, um den Speicher zu beschränken, den ein Programm verwenden darf. Es sollte deshalb in Verbindung mit anderen Limits gesetzt werden. Beim Setzen von Ressourcenbeschränkungen sind noch andere Dinge zu beachten. Nachfolgend ein paar generelle Tipps, Empfehlungen und verschiedene Kommentare. Von /etc/rc beim Hochfahren des Systems gestartete Prozesse werden der daemon Login-Klasse zugewiesen. Obwohl das mitgelieferte /etc/login.conf eine Quelle von vernünftigen Limits darstellt, können nur Sie, der Administrator, wissen, was für Ihr System angebracht ist. Ein Limit zu hoch anzusetzen könnte Ihr System für Missbrauch öffnen, und ein zu niedriges Limit der Produktivität einen Riegel vorschieben. Benutzer des X-Window Systems (X11) sollten wahrscheinlich mehr Ressourcen zugeteilt bekommen als andere Benutzer. X11 beansprucht selbst schon eine Menge Ressourcen, verleitet die Benutzer aber auch, mehrere Programme gleichzeitig laufen zu lassen. Bedenken Sie, dass viele Limits für einzelne Prozesse gelten und nicht für den Benutzer selbst. Setzt man zum Beispiel openfiles auf 50, kann jeder Prozess des Benutzers bis zu 50 Dateien öffnen. Dadurch ist die maximale Anzahl von Dateien, die von einem Benutzer geöffnet werden können, openfiles mal maxproc. Das gilt auch für den Speicherverbrauch. Für weitere Informationen über Ressourcenbeschränkungen, Login-Klassen und -Fähigkeiten generell, sehen Sie sich die entsprechenden Manualpages an: &man.cap.mkdb.1;, &man.getrlimit.2; und &man.login.conf.5;. Benutzer personalisieren Die Lokalisierung ist eine Umgebung, die vom Systemadministrator oder Benutzer eingerichtet wird, um verschiedene Sprachen, Zeichensätze, Datum- und Zeitstandards und so weiter unterzubringen. Dies wird im Kapitel über die Lokalisierung besprochen. Gruppen Gruppen /etc/groups Accounts Gruppen Eine Gruppe ist einfach eine Zusammenfassung von Accounts. Gruppen werden durch den Gruppennamen und die GID (group ID) identifiziert. Der Kernel von FreeBSD (und den meisten anderen &unix; Systemen) entscheidet anhand der UID und der Gruppenmitgliedschaft eines Prozesses, ob er dem Prozess etwas erlaubt oder nicht. Im Unterschied zur UID kann ein Prozess zu einer Reihe von Gruppen gehören. Wenn jemand von der GID eines Benutzers oder Prozesses spricht, meint er damit meistens die erste Gruppe der Gruppenliste. Die Zuordnung von Gruppennamen zur GID steht in /etc/group, einer Textdatei mit vier durch Doppelpunkte getrennten Feldern. Im ersten Feld steht der Gruppenname, das zweite enthält ein verschlüsseltes Passwort, das dritte gibt die GID an und das vierte besteht aus einer Komma separierten Liste der Mitglieder der Gruppe. Diese Datei kann einfach editiert werden (natürlich nur, wenn Sie dabei keine Syntaxfehler machen). Eine ausführliche Beschreibung der Syntax dieser Datei finden Sie in &man.group.5;. Wenn Sie /etc/group nicht händisch editieren möchten, können Sie &man.pw.8; zum Editieren benutzen. Das folgende Beispiel zeigt das Hinzufügen einer Gruppe mit dem Namen teamtwo: Hinzufügen einer Gruppe mit <command>pw</command> &prompt.root; pw groupadd teamtwo &prompt.root; pw groupshow teamtwo teamtwo:*:1100: Die Zahl 1100 ist die GID der Gruppe teamtwo. Momentan hat teamtwo noch keine Mitglieder und ist daher ziemlich nutzlos. Um das zu ändern, nehmen wir nun jru in teamtwo auf. Ein Gruppenmitglied mit <command>pw</command> hinzufügen &prompt.root; pw groupmod teamtwo -M jru &prompt.root; pw groupshow teamtwo teamtwo:*:1100:jru Als Argument von geben Sie eine Komma separierte Liste von Mitgliedern an, die Sie in die Gruppe aufnehmen möchten. Aus den vorherigen Abschnitten ist bekannt, dass die Passwort-Datei ebenfalls eine Gruppe für jeden Benutzer enthält. Das System teilt dem Benutzer automatisch eine Gruppe zu, die aber vom Kommando von &man.pw.8; nicht angezeigt wird. Diese Information wird allerdings von &man.id.1; und ähnlichen Werkzeugen angezeigt. Das heißt, dass &man.pw.8; nur /etc/group manipuliert, es wird nicht versuchen, zusätzliche Informationen aus /etc/passwd zu lesen. Mit <command>id</command> die Gruppenzugehörigkeit bestimmen &prompt.user; id jru uid=1001(jru) gid=1001(jru) groups=1001(jru), 1100(teamtwo) Wie Sie sehen, ist jru Mitglied von jru und teamtwo. Weitere Informationen entnehmen Sie bitte &man.pw.8;.