[FAQ-Index] [Zum Kapitel 7 - Tastatur- und Bildschirmkontrollen] [Zum Kapitel 9 - Zu OpenBSD migrieren]
Genauere Details:
probing: pc0 com0 com1 apm mem[636k 190M a20=on]
disk: fd0 hd0+
>> OpenBSD/i386 BOOT 2.10
boot>
Gib an dieser Stelle »boot -s« ein, um das System im
Singleuser-Modus zu booten:
boot> boot -s
Die meisten anderen Plattformen übergeben dem Kernel per Boot-ROM
Parameter.
Vorher kann natürlich das Problem sein, das System überhaupt herunterzufahren. Vermutlich wirst du nicht drum herum kommen, auf den Resetknopf zu drücken. Obwohl andere Möglichkeiten deutlich besser wären, gibt es meist keine Alternative. Mach dir nicht all zu viele Gedanken, OpenBSDs Dateisystem ist sehr robust.
# fsck -p / && mount -uw /
# fsck -p /usr && mount /usr
»Moment mal, das war ja viel zu einfach! Sonderlich sicher ist das aber nicht!« Wenn ein Angreifer physikalischen Zugriff auf dein System hat, hat er bereits gewonnen; egal welches Betriebssystem installiert ist. Du kannst ein Passwort für den Singleuser-Modus erzwingen (siehe ttys(5)) oder die Wartezeit auf i386/amd64 (siehe boot.conf) deaktiveren - um zu sagen wie es ist: Diese Tricks können leicht umgangen werden (eine Möglichkeit: Mit Diskette oder CD-ROM booten und die Passwortdatei austauschen). Das wiederum kannst du auch verhindern, doch dann kann der Angreifer einfach die Festplatte aus dem Gehäuse nehmen. Es ist nicht sonderlich sicher, wenn du deinen Computer schwer administrierbar machst. Wenn dein System nicht physikalisch sicher ist, hast du keine echte Sicherheit.
Hinweis: Viele Systeme zur »Fernwartung« bieten die meisten Möglichkeiten an, die du bei physikalischem Zugriff hättest. Das muss unbedingt berücksichtigt werden. Rede dir nicht ein, dass dein System sicher sei, so lange es einem Angreifer möglich ist, eine Konsole zu öffnen, eine virtuelle Diskette einzulegen und einen Neustart des Systems zu erzwingen. Sie könnten dann auch genauso gut physischen Zugriff auf das System haben. Das Konsolenmanagementsystem ist vermutlich nicht so sicher wie OpenBSD ...
Eine häufige Ursache für Probleme mit X ist die sysctl(8)-Einstellung namens machdep.allowaperture. Da diese Einstellung unter OpenBSD standardmäßig ausgeschaltet ist, wird dies sehr wahrscheinlich der Grund für das Problem sein.
Du musst /etc/sysctl.conf editieren und machdep.allowaperture=2 (oder 1 - abhängig von deiner Plattform) setzen. Dies wird X ermöglichen, nach dem nächsten Neustart auf den Aperturetreiber xf86(4) zuzugreifen. Ohne Neustart kann dieser Zugriff nicht ermöglicht werden. Diese Einstellung kann auch schon während der Installation getätigt worden sein, falls du mit Y geantwortet hast, als du gefragt wurdest, ob du das X Window System einsetzen möchtest.
OpenBSD setzt den aktivierten Aperturetreiber auf den alpha-, amd64-, i386-, macppc- und sparc64-Plattformen voraus, um den Zugriff auf die Grafikkarten zu verwalten. Andere Plattformen verwenden eine sicherere Methode, um das Grafiksystem zu verwalten, sodass sie diese Einstellung nicht benötigen (und somit diesen Treiber auch nicht im Kernel haben müssen). Wenn du X nicht auf deinem System verwenden möchtest, so solltest du den Aperturetreiber nicht aktivieren.
Für weitere Informationen über das Konfigurieren und Verwenden von X auf deiner Plattform, lies die /usr/X11R6/README-Datei auf deinem installierten System.
Die folgende Tabelle liefert einen Überblick über die Compiler der unterschiedlichen Sprachen. In ihr kannst du sowohl die Compiler als auch mögliche Probleme oder Begrenzungen finden, die bei der Benutzung der Sprachen auftreten können. Einige Compiler stehen nur für bestimmte Plattformen bereit. Ob deine Plattform unterstützt wird kannst du herausfinden, indem du entweder das Suchergebnis durch den Ports-Tree überprüfst oder direkt einen Blick auf das Makefile des Ports wirfst. Im zweiten Fall musst du nach den Zeilen ONLY_FOR_ARCHS, NOT_FOR_ARCHS, BROKEN etc. suchen.
Hinweis: In diesem Artikel wird eine alphabetisch sortierte Liste bereitgestellt, um das Suchen nach einer bestimmten Sprache zu vereinfachen (zwischen den unterschiedlichen Kategorien der Programmiersprachen wurde nicht unterschieden). Es wurden nicht alle Sprachen aufgeführt, die es für OpenBSD gibt oder unter OpenBSD genutzt werden können. Wenn du Ungenauigkeiten oder Probleme entdeckst, die hier nicht behandelt wurden, sende bitte einen Bericht darüber.
Sprache | Wo? | Hinweise |
Awk | base42.tgz, awk(1) | |
lang/gawk | GNU awk | |
C, C++ | comp42.tgz, gcc(1) | Die C/C++-Compiler im Basissystem wurden überprüft und standardmäßig mit Sicherheitsverbesserungen (z. B. ProPolice) ausgestattet. Lies bitte gcc-local(1) für weitere Details. Diese Compiler werden ebenfalls Warnungen ausgeben, wenn unsichere Funktionen wie sprintf(), strcpy(), strcat(), tmpnam() etc. genutzt werden. Beachte, dass die meisten Plattformen gcc 3.3.5 nutzen - einige verwenden immer noch 2.95.3. |
C, C++ | lang/gcc | Diese Compiler wurden nicht auf Sicherheit überprüft und beinhalten keine Sicherheitsverbesserungen wie die Compiler, die sich im Basissystem befinden. Die Compiler wurden in egcc, eg++ etc. umbenannt, um die Verwechslung mit ihren Pendanten im Basissystem auszuschließen. |
Caml | lang/ocaml | Objective Caml |
COBOL | lang/open-cobol | |
Erlang | lang/erlang | |
Fortran | comp42.tgz, g77(1) | Nur Unterstützung für Fortran 77. |
lang/gcc | Fortran 95 wird auch von egfortran unterstützt, der sich im gcc 4.0 und neueren Versionen befindet. Dieser neue Compiler wird als Subpackage (g95) vom gcc bereitgestellt. | |
Haskell | lang/ghc | |
lang/nhc98 | ||
Java | devel/jdk | Sun JDK - keine Packages verfügbar; siehe die Übersetzungsanweisungen weiter unten. |
lang/classpath | Wichtige Kernklassenbibliotheken für Java | |
lang/kaffe | ||
lang/jikes | Schneller Compiler, der gut läuft. Er benötigt ein »Laufzeit-jar: die Bytecodeversion der gesamten Standard-API. | |
devel/eclipse | Große IDE; funktioniert mit dem Sun JDK | |
Lisp | lang/clisp | |
Lua | lang/lua | Zusätzliche Lua-Bibliotheken und Hilfswerkzeuge können über den Ports-Tree installiert werden. |
Perl | base42.tgz, perl(1) | Viele Perl-Module sind über den Ports-Tree verfügbar; suche also erst dort, bevor du Module von CPAN installierst. |
PHP | www/php4 | Viele Subpackages werden für unterschiedliche PHP-Module bereitgestellt. |
www/php5 | ||
Prolog | lang/gprolog | GNU Prolog-Compiler. |
lang/swi-prolog | SWI-Prolog-Umgebung. | |
Python | lang/python | Andere Ports verwenden standardmäßig Python 2.3. |
Ruby | lang/ruby | |
Scheme | lang/chicken | |
lang/scheme48 | ||
lang/scm | ||
shells/scsh | ||
Smalltalk | lang/squeak | |
Tcl | lang/tcl |
Die JDK-Ports befinden sich in dem Unterverzeichnis devel/jdk des Ports-Trees. Du kannst zwischen verschiedenen Versionen wählen - jede hat ihr eigenes Unterverzeichnis. Wenn du einfach nur make eingibst, dann wirst du eine Bildschirmmeldung sehen, die dir mitteilt, dass du die Quelltextdateien von Suns Website per Hand herunterladen musst. Vor dem Runterladen musst du dich auf der Website registieren - und die Lizenzbestimmungen akzeptieren. Das ist der Grund, warum das Ports-Framework den Download nicht automatisch starten kann.
Kopiere die benötigten Distributionsdateien und -patches in das Verzeichnis /usr/ports/distfiles sobald du sie heruntergeladen hast. Du musst ebenfalls X auf deinem System installiert haben. Beginne mit dem Build, indem du im Unterverzeichnis des Ports make aufrufst.
Das JDK benötigt einen funktionierenden Java-2-Compiler als Bootstrap, um erzeugt werden zu können. Für diesen Zweck verwendet der Port von JDK 1.5 seit OpenBSD 4.0 kaffe, wodurch JDK 1.5 sowohl auf der i386- als auch auf der amd64-Plattform eingesetzt werden kann. Des Weiteren wird die benötigte Zeit für die Übersetzung erheblich reduziert.
Ältere JDK-Versionen benötigen weiterhin eine Linux-Version des JDKs. Wenn du das ungerecht findest, dann kannst du dich bei Sun beschweren und nachfragen, warum sie keine native OpenBSD-Version bereitstellen. Die Linux-Emulation unter OpenBSD funktioniert nur auf i386-Systemen, sodass ältere JDKs nur auf i386 erzeugt werden können. Das Ports-Framework sollte sich selbst darum kümmern, die benötigten Dateien zu installieren und kern.emul.linux=1 zu setzen. Für weitere Informationen über die Linux-Emulation lies bitte die compat_linux(8)-Manualseite sowie FAQ 9 - Linux-Binarys unter OpenBSD ausführen. Beachte, dass diese Linux-Emulation nur während der Erzeugungsphase vom JDK benötigt wird; das Ergebnis wird nativ unter OpenBSD laufen. Du benötigst keine Linux-Emulation, um das Java-Plugin benutzen zu können.
Nach vielen Stunden wird der Build dann fertig sein. Mache dann mit make install weiter, um das JDK zu installieren.
Wenn Fehlermeldungen wie zum Beispiel "Could not reserve enough space for object heap" auftauchen, erhöhe die Speicherbegrenzung für die Prozesse, indem du das eingebaute Shellkommando ulimit mit der Option -d verwendest.
Du musst den Kernel so einstellen, dass er immer davon ausgeht, dass ein Diskettenlaufwerk angeschlossen ist, selbst wenn keines während der Hardwareüberprüfung gefunden wurde, indem du das 0x20-Optionsbit beim fdc(4) einrichtest. Unter Verwendung von der User Kernel Config oder von config(8) kannst du deinen Kernel anpassen,
# config -e -f /bsd
OpenBSD 4.2 (GENERIC) #375: Tue Aug 28 10:38:44 MDT 2007
deraadt@i386.openbsd.org:/usr/src/sys/arch/i386/compile/GENERIC
Enter 'help' for information
ukc> change fd*
254 fd* at fdc0 drive -1 flags 0x0
change [n] y
drive [-1] ? ENTER
flags [0] ? 0x20
254 fd* changed
254 fd* at fdc0 drive -1 flags 0x20
ukc> q
Saving modified kernel.
#
Wenn du dein OpenBSD-System bootest, ist dir vermutlich der Bootprompt bereits aufgefallen.
boot>
Für die meisten Leute gilt, dass sie hier nichts machen müssen. Er wird automatisch booten, wenn keine Kommandos angegeben werden. Aber manchmal tauchen Probleme auf oder spezielle Funktionen werden benötigt. Und hier können diese Optionen nützlich sein. Zu Beginn solltest du dich durch die boot(8)-Manualseite lesen. Hier werden wir die meist genutzten Kommandos des Bootloaders besprechen.
Zu Beginn sei gesagt, dass, wenn keine Kommandos angegeben wurden, der Bootloader automatisch versucht, /bsd zu booten. Wenn das fehlschlägt, wird er es nochmal mit /obsd versuchen und wenn auch das fehlschlägt, wird er /bsd.old versuchen. Du kannst einen Kernel per Hand angeben, indem du eingibst:
boot> boot hd0a:/bsd
oder
boot> b /bsd
Dies wird den Kernel mit dem Namen bsd von der Partition a der ersten vom BIOS erkannten Festplatte booten.
Hier ist eine kurze Liste an Optionen, die du mit dem OpenBSD-Kernel nutzen kannst.
Diese Optionen werden in folgendem Format eingegeben: boot [ image [-acds]]
Für weitere Informationen kannst du die Manualseite von boot(8) lesen.
S/Key ist ein ,Einweg-Passwort'-Authentifikationsschema. Das kann für Leute hilfreich sein, die nicht die Möglichkeit haben, einen verschlüsselten Kanal für ihre Übertragung der Authentifikationsnachweise zu verwenden. Ein solcher Kanal kann zum Beispiel mit ssh(1) aufgebaut werden.
WARNUNG: Systeme mit Einwegpasswörtern schützen nur die Authentifikationsinformationen. Sie können keine Eavesdropper im Netzwerk davon abhalten, Zugriffe auf private Informationen zu erlangen. Des Weiteren wird geraten, dass du auf ein sicheres System A über ein anderes sicheres System B zugreifst, um sicherzustellen, dass niemand auf System A zugreifen kann, indem er deine Tastatureingabe abfängt und/oder sowohl Ein- als auch Ausgabe deines Terminaldevices modifiziert.
Das S/Key-System generiert eine Reihe Einwegpasswörter (können nur ein einziges Mal verwendet werden) vom sicheren Passphrase eines Benutzers mit einer vom Server ausgehenden Anfrage - einer sicheren Hashfunktion. Das System ist nur dann sicher, wenn das sichere Passphrase niemals über das Netzwerk übertragen wurde. Daher muss dein sicheres Passphrase über einen sicheren Kanal erstellt oder geändert werden - zum Beispiel über ssh(1) oder direkt an der Konsole.
OpenBSDs S/Key-Implementation kann eine Reihe Algorithmen für die Einweg-Hashfunktion nutzen. Die folgenden Algorithmen stehen zur Verfügung:
Zu Beginn muss das Verzeichnis /etc/skey existieren. Wenn dieses Verzeichnis nicht vorliegt, lasse den Administrator es erstellen. Dies kann mit folgendem Befehl einfach durchgeführt werden:
# skeyinit -E
Sobald das Verzeichnis existiert, kannst du dein S/Key einrichten. Um dies zu tun, musst du skeyinit(1) verwenden. Da skeyinit(1) dich nach deinem sicheren S/Key-Passphrase fragen wird, musst du dieses Programm über einen sicheren Kanal ausführen - Anweisungen hierfür stehen weiter oben! Das Programm wird dich im Übrigen hieran erinnern. skeyinit(1) wird dich zuerst nach deinem Passwort für das System fragen. Dies kann das gleiche Passwort sein, das du zum Anmelden an das System verwendest. Sobald du dich mit deinem Systempasswort angemeldet hast, wirst du nach deinem sicheren S/Key-Passphrase gefragt. Hierbei handelt es sich NICHT um dein Systempasswort. Dein sicherer Passphrase sollte mindestens 10 Zeichen lang sein. Wir empfehlen, einen einprägsamen Satz als sicheren Passphrase zu verwenden, der aus mehreren Wörtern besteht. Hier wird ein Beispielnutzer hinzugefügt.
$ skeyinit
Reminder - Only use this method if you are directly connected
or have an encrypted channel. If you are using telnet,
exit with no password and use skeyinit -s.
Password:
[Adding ericj with md5]
Enter new secret passphrase:
Again secret passphrase:
ID ericj skey is otp-md5 100 oshi45820
Next login password: HAUL BUS JAKE DING HOT HOG
Eine Zeile mit besonderer Wichtigkeit hier ist ID ericj skey is otp-md5 100 oshi45820. Dies gibt eine Menge Informationen an den Benutzer. Hier wird nun unter Sektionen und ihrer Wichtigkeit aufgeteilt:
Aber von größerer Bedeutung ist dein Einweg-Passwort. Dein Einweg-Passwort besteht aus 6 kleinen Wörtern, zusammengesetzt ergibt sich daraus dein Einweg-Passwort, Leerstellen und alles andere zählen dazu. Das Einweg-Passwort, das von skeyinit ausgegeben wurde, kann nicht zum Einloggen genutzt werden (Es gibt eine Verwendung für dieses erste Einweg-Passwort, siehe skeyinit(1)). Um in der Lage sein, sich anmelden zu können, muss ein Einweg-Passwort korrespondierend zu dem Challenge, das vom Loginprozess ausgegeben wird, unter Verwendung von skey(1) ermittelt werden. Die nächste Sektion zeigt, wie man das macht.
Bisher wurde dein skey initialisiert. Du bist bereit, dich anzumelden. Hier ist eine Beispielsitzung, bei der S/Key zum Anmelden genutzt wird. Um ein S/Key-Login durchzuführen, hänge :skey an deinen Loginnamen an.
$ ftp localhost
Connected to localhost.
220 oshibana.shin.ms FTP server (Version 6.5/OpenBSD) ready.
Name (localhost:ericj): ericj:skey
331- otp-md5 96 oshi45820
331 S/Key Password:
230- OpenBSD 4.2 (GENERIC) #375: Tue Aug 28 10:38:44 MDT 2007
230-
230- Welcome to OpenBSD: The proactively secure Unix-like operating system.
230-
230- Please use the sendbug(1) utility to report bugs in the system.
230- Before reporting a bug, please try to reproduce it with the latest
230- version of the code. With bug reports, please try to ensure that
230- enough information to reproduce the problem is enclosed, and if a
230- known fix for it exists, include that as well.
230-
230 User ericj logged in.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> quit
221 Goodbye.
Beachte, dass ich »:skey« an meinen Benutzernamen angehängt habe. Dies teilt ftpd mit, dass ich mich unter Verwendung von S/Key anmelden möchte. Einigen wird vielleicht aufgefallen sein, dass sich meine Sequenznummer auf otp-md5 96 oshi45820 geändert hat. Dies passierte, da ich bisher mein S/Key einige Mal genutzt habe, um mich einzuloggen. Aber wie bekommst du nun dein Einweg-Passwort? Nun gut, um das Einweg-Passwort zu ermitteln, musst du wissen, welche Sequenznummer du verwendest und was dein Schlüssel ist. Du fragst dich wahrscheinlich gerade, wie du dir merken kannst, bei welcher Sequenznummer du gerade bist?
Wenn du dich anmeldest, gibt der Loginprozess eine Zeile aus, die die benötigten Informationen beinhaltet, nämlich die, die du verwenden kannst, um ein Einweg-Passwort sofort auf einem anderen vertrauenswürdigen Zugriff auf dein System über einen sicheren Kanal durch Copy & Paste dieser Zeile in eine Kommando-Shell ermitteln zu können:
otp-md5 96 oshi45820
Nach der Eingabe von deinem Passwort wird dein Einweg-Passwort ausgegeben, was du dann wiederum mit Copy & Paste beim S/Key-Passwortprompt eingeben kannst, um dich anzumelden. Nicht nur ist otp-md5 eine Beschreibung vom Hash, der genutzt wird, sondern ist ebenfalls ein alternativer Name für das skey(1)-Kommando.
Wenn du bereits angemeldet bist und ein Einweg-Passwort für den nächsten Login generieren lassen möchtest, verwende skeyinfo(1), es wird dir sagen, was du für das nächste Anmelden verwenden musst. Hier zum Beispiel muss ich ein weiteres Einweg-Passwort für einen Login generieren lassen, den ich später durchführen muss. (Denke daran, dass ich das von einem sicheren Kanal aus mache).
$ skeyinfo
95 oshi45820
Ein noch besserer Weg ist, skeyinfo -v zu nutzen, was ein Kommando ausgibt, das zum Ausführen in einer Shell geeignet ist. Zum Beispiel:
$ skeyinfo -v
otp-md5 95 oshi45820
Der einfachste Weg, das nächste S/Key-Passwort zu erzeugen, ist einfach:
$ `skeyinfo -v`
Reminder - Do not use this program while logged in via telnet.
Enter secret passphrase:
NOOK CHUB HOYT SAC DOLE FUME
Achte auf die Backticks im vorherigen Beispiel.
Ich bin mir sicher, dass viele von euch nicht immer einen sichere Verbindung oder einen vertrauenswürdigen lokalen Computer haben, um diese Passwörter zu erstellen, und sie über einen unsichere Verbindung zu erstellen ist nicht machbar, so wie kann man mehrere Passwörter zur gleichen Zeit erstellen? Nun, du kannst skey(1) die Anzahl der zu erstellenden Passwörter übergeben. Diese können dann ausgedruckt werden und du kannst sie so an jeden beliebigen Ort mithinnehmen.
$ otp-md5 -n 5 95 oshi45820
Reminder - Do not use this program while logged in via telnet.
Enter secret passphrase:
91: SHIM SET LEST HANS SMUG BOOT
92: SUE ARTY YAW SEED KURD BAND
93: JOEY SOOT PHI KYLE CURT REEK
94: WIRE BOGY MESS JUDE RUNT ADD
95: NOOK CHUB HOYT SAC DOLE FUME
Beachte hierbei aber, dass das unterste Passwort zuerst genutzt wird, weil wir von von 100 herunterzählen.
S/Key mit telnet(1) oder ssh(1) zu nutzen ist fast genauso wie mit ftp - du hängst einfach »:skey« an deinen Benutzernamen an. Beispiel:
$ telnet localhost
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
OpenBSD/i386 (oshibana) (ttyp2)
login: ericj:skey
otp-md5 98 oshi45821
S/Key Password: SCAN OLGA BING PUB REEL COCA
Last login: Thu Apr 7 12:21:48 on ttyp1 from 156.63.248.77
OpenBSD 4.2 (GENERIC) #375: Tue Aug 28 10:38:44 MDT 2007
Welcome to OpenBSD: The proactively secure Unix-like operating system.
Please use the sendbug(1) utility to report bugs in the system.
Before reporting a bug, please try to reproduce it with the latest
version of the code. With bug reports, please try to ensure that
enough information to reproduce the problem is enclosed, and if a
known fix for it exists, include that as well.
You have mail.
$
SMP wird auf den OpenBSD/i386- und OpenBSD/amd64-Plattformen unterstützt.
Ein separater SMP-Kernel (bsd.mp) wird mit den Installations-Dateisets mitgeliefert, welcher während der Installation ausgewählt werden kann. Es wird angenommen, dass du zuerst versuchst, diesen Kernel zu booten, bevor du ihn in bsd umbenennst und ihn somit zum standardmäßigen Kernel machst.
Wir hoffen, dass andere SMP-fähige Plattformen in Zukunft unterstützt werden. Auf den meisten anderen Plattformen wird OpenBSD zwar auf einem SMP-System laufen aber nur einen Prozessor nutzen. Die Ausnahme hierfür ist die SPARC-Plattform - OpenBSD/sparc benötigt manchmal, dass zusätzliche MBus-Module entfernt werden, damit das System bootet. Multi-Prozessor-SPARC64-System laufen, vorausgesetzt, dass die Basismaschine unterstützt wird.
Du musst /dev/cuaXX für Verbindungen nutzen, die vom OpenBSD-System aus erstellt werden, die /dev/ttyXX-Devices sind nur für Terminal- und Dialin-Verwendungen gedacht. Obwohl es möglich war, die tty-Devices in der Vergangenheit zu nutzen, unterstützt der OpenBSD-Kernel diese Gebrauchsweise nicht mehr.
Aus cua(4):
For hardware terminal ports, dial-out is supported through matching device nodes called calling units. For instance, the terminal called /dev/tty03 would have a matching calling unit called /dev/cua03. These two devices are normally differentiated by creating the calling unit device node with a minor number 128 greater than the dial-in device node. Whereas the dial-in device (the tty) normally requires a hardware signal to indicate to the system that it is active, the dial-out device (the cua) does not, and hence can communicate unimpeded with a device such as a modem. This means that a process like getty(8) will wait on a dial-in device until a connection is established. Meanwhile, a dial-out connection can be established on the dial-out device (for the very same hardware terminal port) without disturbing anything else on the system. The getty(8) process does not even notice that anything is happening on the terminal port. If a connecting call comes in after the dial-out connection has finished, the getty(8) process will deal with it properly, without having noticed the intervening dial-out action.
Lynx, ein textbasierter Browser, befindet sich im Basissystem und hat SSL-Unterstützung. Andere Browser im Ports-Tree sind unter anderem (in keiner bestimmten Reihenfolge):
Grafische (X-)Browser
Konsolenbrowser (Textmodus)
Du kannst sie alle in der Packagekollektion finden. Alle zuvor erwähnten Browser befinden sich unter /usr/ports/www nach der Installation des Ports-Trees. Die meisten sind als vorkompilierte Packages auf den FTP-Servern und auf der CD-ROM vorfindbar. Die meisten der grafischen Browser sind sehr groß und benötigen recht viel Zeit, um heruntergeladen und kompiliert zu werden, man selte ernsthaft die Verwendung von Packages in Betracht ziehen, wann immer es geht.
Mg ist ein Mikro-, Emacs-artiger Texteditor, der in OpenBSD integriert ist. Mikro bedeutet, dass er klein (Emacs ist sehr groß!). Lies die mg(1)-Manualseite und das Tutorial für den Einstieg, beide werden mit dem Quelltext mitgeliefert. Für weitere interessante Fragen (wie zum Beispiel »Ich habe keine Meta-Taste!«), lies auch die Emacs-FAQ.
Denke daran, dass viele der anderen Funktionalitäten von Emacs nicht mit abgebildet werden, da mg eine kleine Emacs-Implementation ist, welche den Editorfunktionen von Emacs 17 sehr ähnlich ist. (Das betrifft die Mail- und News-Funktionalität, sowie die Modi für Lisp, C++, Lex, Awk, Java etc.)
Es gibt zwei sehr wahrscheinliche Gründe dafür, dass ksh(1) scheinbar die .profile-Datei eines Benutzers ignoriert.
# chown Benutzername ~Benutzername/.profile
Unter xterm(1) hat argv[0] für die ksh(1) keinen voranstehenden Strich (-). Das Voranstellen eines Striches in argv[0] sorgt dafür, dass csh(1) und ksh(1) wissen, dass sie die Anmeldedateien auslesen sollen. (Für csh(1) ist das .login zusätzlich zu einer separaten .cshrc, die jedes Mal aufgerufen wird, wenn csh(1) gestartet wird. Mit ksh(1) ist das auffälliger, da es nur ein Startskript gibt, nämlich .profile. Diese Datei wird ignoriert, außer die Shell ist eine Anmeldeshell.
Um dies zu beheben, füge die Zeile »XTerm*loginShell: true« in der Datei .Xdefaults in deinem Heimatverzeichnis an. Bedenke, dass diese Datei standardmäßig nicht existiert, du musst sie also gegebenenfalls erstellen.
$ echo "XTerm*loginShell: true" >> ~/.Xdefaults
Auf anderen Systemen musst du das vielleicht nicht machen, da einige Installationen vom X Window System mit dieser Einstellung als Standard ausgeliefert werden. OpenBSD hat sich für das X.org-Verhalten entschieden.
Die /etc/motd-Datei wird bei jedem Hochfahren des Systems editiert, um alles bis zur ersten leeren Zeile - diese ist dann aber ausgeschlossen - mit den Versionsinformationen des Systemkernels zu überschreiben. Wenn du diese Datei bearbeitest, stelle sicher, dass du nach dieser Leerzeile anfängst, sodass /etc/rc davon abgehalten wird, diese Zeilen zu löschen, wenn /etc/motd beim Hochfahren editiert wird.
Obwohl keiner der Entwickler denkt, dass das von besonderer Bedeutung wäre, wurde diese Frage in den Mailinglisten oft genug gestellt, so dass sie hier beantwort wird. www.openbsd.org und die Haupt-OpenBSD-FTP-Site werden von SunSITE in der University of Alberta, Kanada bereitgestellt. Diese Sites werden auf einem großen Sun-System bereitgestellt, welches Zugriff auf jede Menge Speicherplatz und Internetbandbreite hat. Die Anwesenheit von SunSITE gibt der OpenBSD-Gruppe Zugriff auf diese Bandbreite. Das ist der Grund, warum unsere Hauptsite hier läuft. Viele der OpenBSD-Mirror laufen mit OpenBSD, aber da sie keinen garantierten Zugriff auf diese große Bandbreite haben, hat die Gruppe sich dazu entschlossen, die Hauptsite bei der University of Alberta SunSITE aufzubewahren.
Siehe dieses Dokument.
Nein, tut es nicht. Wir verwenden einen anderen Mechanismus, um ähnliche Resultate zu erzielen, der Softupdates genannt wird. Lies bitte FAQ 14 - Softupdates für weitere Informationen.
Viele neue Anwender von OpenBSD erleben einen zwei Minuten langen Verzug während dem Login, wenn Dienste wie ssh, ftp oder telnet verwendet werden. Dies kann auch passieren, wenn ein Proxy eingesetzt wird, wie zum Beispiel ftp-proxy, oder wenn Mails von einer Workstation über sendmail gesendet werden.
Dies liegt fast immer an Reverse-DNS-Problemen. DNS ist »Domain Name Servies«, das System, das das Internet verwendet, um Namen wie zum Beispiel www.openbsd.org in eine nummerische IP-Adresse umzuwandeln. Eine andere Aufgabe von DNS ist die Möglichkeit, eine nummerische Adresse zu nehmen und sie zurück zu einem Namen umzuwandeln, das wird dann Reverse DNS genannt.
Um besseres Logging zur Verfügung zu stellen, führt OpenBSD ein »Reverse DNS Lookup« auf die Maschinen aus, die sich auf einen der vielen Wege mit dem System verbindet, dazu gehören auch ssh, ftp, telnet, sendmail und ftp-proxy. Unglücklicherweise passiert es in einigen Fällen, dass die Maschine, die die Verbindung aufbaut, keinen gültigen Reverse-DNS-Eintrag besitzt.
Das kann recht nervig sein. Zum Glück ist es einfach, den Fehler zu beheben.
Deine /etc/hosts-Datei wird in etwa so aussehen:
::1 localhost.in.example.org localhost
127.0.0.1 localhost.in.example.org localhost
192.168.1.1 gw.in.example.org gw
192.168.1.20 scrappy.in.example.org scrappy
192.168.1.35 shadow.in.example.org shadow
|
Deine resolv.conf-Datei wird ungefähr so aussehen:
search in.example.org
nameserver 24.2.68.33
nameserver 24.2.68.34
lookup file bind
|
Eine typische Anmerkung hierzu ist »Aber ich verwende DHCP für mein internes Netzwerk! Wie kann ich da meine /etc/hosts konfigurieren?« Eigentlich recht einfach. Trage einfach für alle Adressen, die der DHCP-Server vergeben wird, zusätzlich zu denen der statischen Geräte, eine Zeile ein:
::1 localhost.in.example.org localhost
127.0.0.1 localhost.in.example.org localhost
192.168.1.1 gw.in.example.org gw
192.168.1.20 scrappy.in.example.org scrappy
192.168.1.35 shadow.in.example.org shadow
192.168.1.100 d100.in.example.org d100
192.168.1.101 d101.in.example.org d101
192.168.1.102 d102.in.example.org d102
[... Schnipp ...]
192.168.1.198 d198.in.example.org d198
192.168.1.199 d199.in.example.org d199
|
In diesem Fall nehme ich an, dass der DHCP-Bereich so eingerichtet wurde, dass er von 192.168.1.100 bis 192.168.1.199 reicht, zusätzlich zu den drei statischen Definitionen, die am Anfang der Datei eingetragen wurden.
Wenn dein Gateway DHCP für die Konfiguration nutzen muss, dann wirst du wohl in der Tat ein Problem haben - dhclient wird deine /etc/resolv.conf jedes Mal überschreiben, wenn die Lease erneuert wird, was die »lookup file bind«-Zeile überschreibt. Dies kann gelöst werden, indem die Zeile »lookup file bind« in die Datei /etc/resolv.conf.tail eingetragen wird.
Die vorliegenden Webseiten wurden sorgfältig erstellt, damit sie mit einer breiten Palette an Browsern zusammenarbeiten können, von aktuellen Browsern bis hin zu Version 4.0 und noch älter. Wir möchten diese alten Seiten konform zu HTML4 oder XHTML machen, außer wir sind uns sicher, dass sie ebenfalls auf alten Browsern richtig angezeigt werden; es ist halt einfach keine Priorität für uns. Wir begrüßen neue Beitragende, aber weisen darauf hin, dass du Code schreiben solltest oder neue Aspekte des Systems dokumentieren solltest, statt die existierenden Webseiten so zu optimieren, dass sie zu neuen Standards konform sind.
Wenn rdate(8) genutzt wird, um deine Uhr mit einem NTP-Server abzugleichen, dann kann es sein, dass deine Uhr gut zwanzig Sekunden mit der lokalen Zeitvorgabe abweicht.
Das wird durch einen Unterschied zwischen der UTC- (Coordinated Universal Time, die auf astronomischen Beobachtungen beruht) -Zeit und der TAI- (Internation Atomic time, basiert auf Atomuhren) -Zeit. Um die Variationen in der Erddrehung zu kompensieren, werden ,Sprungsekunden' in die UTC eingeführt, die TAI jedoch wird nicht angepasst. Diese Sprungsekunden sind der Grund dieses Umstandes. Für eine detailliertere Beschreibung hierfür, suche im Web nach »leap seconds UTC TAI«.
Das Problem anzugehen ist recht einfach. In den meisten Ländern wirst
du die korrekte Zeit erhalten, wenn du den Parameter -c mit
rdate(8)
verwendest und eine Zeitzone aus dem Verzeichnis
/usr/share/zoneinfo/right/ nutzt. Wenn du zum Beispiel in
Deutschland wohnst, könntest du diese Befehle nutzen:
# cd /etc && ln -sf /usr/share/zoneinfo/right/CET localtime
# rdate -ncv ptbtime1.ptb.de
In anderen Ländern müssen eventuell andere Regeln genutzt werden.
Die meisten anderen Betriebssysteme (einschließlich Windows) können so eingestellt werden, dass sie das gleiche machen. Damit kann das Problem einfach umgangen werden. Unter Windows NT/2000/XP z. B. kann man folgenden DWORD-Wert in der Registry erstellen und auf 1 setzen, sodass angenommen wird, dass die Hardwareuhr auf UTC eingestellt ist.
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TimeZoneInformation\RealTimeIsUniversal
Falls du ein Problem damit haben solltest dass die Hardwareuhr auf UTC gestellt ist, kannst du auch das standardmäßige Verhalten von OpenBSD mittels config(8) ändern. Um zum Beispiel OpenBSD so zu konfigurieren, dass die Hardwareuhr auf US/Eastern gestellt wurde (5 Stunden hinter UTC, also 300 Minuten):
# config -ef /bsd
OpenBSD 4.2 (GENERIC) #375: Tue Aug 28 10:38:44 MDT 2007
deraadt@i386.openbsd.org:/usr/src/sys/arch/i386/compile/GENERIC
Enter 'help' for information
ukc> timezone 300
timezone = 300, dst = 0
ukc> quit
Saving modified kernel.
Siehe
options(4)
und suche nach der Option TIMEZONE=value für weitere Informationen.
Normalerweise wird die Zeitzone während der Installation eingestellt. Wenn du die Zeitzone ändern musst, dann kannst du einen neuen symbolischen Verweis auf die passende Zeitzonen-Datei unter /usr/share/zoneinfo anlegen. Um zum Beispiel die Maschine so einzurichten, dass sie EST5EDT als neue lokale Zeitzone nutzt:
# ln -fs /usr/share/zoneinfo/EST5EDT /etc/localtime
Siehe auch:
[FAQ-Index] [Zum Kapitel 7 - Tastatur- und Bildschirmkontrollen] [Zum Kapitel 9 - Zu OpenBSD migrieren]