In diesem Kapitel geht darum, mit dem System vertraut zu werden. Die Arbeitsumgebung von "root" wird bedienerfreundlich eingestellt und wir schauen uns im neu eingerichteten System etwas um. Die meisten der hier angeführten Themen lassen sich in einer qemu-Umgebung testen.

Erste Schritte

Bearbeiten

Nach dem ersten Booten

Bearbeiten

Loggen sie sich nach dem ersten Booten als Benutzer root ein. Sie erhalten einen Hinweis auf neue Post und ihnen wird erneut die Frage nach dem Terminal-Typ gestellt, die sie per Return-Taste beantworten können. Rufen Sie das Programm mail(1) auf. Ihnen wird eine Liste mit Mails angezeigt. Geben sie hier eine 1 ein[1]. Sie sehen einen langen Text über den Bildschirm scrollen. Mit more können sie sich diesen Text seitenweise anschauen. Geben Sie q ein, wenn sie das Mailprogramm verlassen wollen.

Sie können das Passwort ändern, in dem sie das Programm passwd(1) verwenden. Die Eingabe wird nicht angezeigt:

# passwd
Changing local password for root
New Password:
Retype new password:
#

Anschließend können sie die Shell (Public Domain Korn Shell, ksh(1)) so einstellen, dass das aktuelle Verzeichnis und der Benutzername als Prompt angezeigt wird:

# PS1="\u@\h:\w #"
root@puffy:~ #

Ebenfalls wird empfohlen, die Ausgabe, die sie beim Booten sehen (dmesg(8)), an das OpenBSD-Team zu schicken. Das stellen wir zurück, bis wir uns um unser Netzwerk gekümmert und unser Mail-System eingerichtet haben.

Wenn sie den Befahl halt(8) eingeben, fahren sie das System herunter. Geben sie exit oder STRG+D ein, dann werden sie ausgeloggt.

Nützliche Programme

Bearbeiten

Als Vorgriff auf das Kapitel OpenBSD/ Systemprogramme stellen wir hier schon einige Programme vor, die wir bei unseren ersten Schritten benötigen.

Texte anzeigen

Bearbeiten

In ihrem Verzeichnis befinden sich zu diesem Zeitpunkt einige Dateien, die sie mit dem Befehl ls(1) anzeigen können. Mit cat(1) können sie den Inhalt dieser Datei auf dem Bildschirm ausgeben, mit more(1) und less(1) geht das auch komfortabel seitenweise.

Der Editor vi

Bearbeiten

vi(1) ist der Standard-Editor unter allen Unix-Systemen. Es gibt eine Reihe von unterschiedlichen vi-Ausprägungen, so zum Beispiel nvi (den wir unter OpenBSD benutzen) und vim. Wikibooks hat einige Bücher zum Thema, nämlich Vi-Befehlsreferenz[2] und Learning the vi editor.

Rufen sie ihn von ihrem Verzeichnis einmal auf:

root@puffy:~ # vi .profile

Mit der Cursor-Taste können sie ganz nach unten wandern. Geben sie dann in der letzten Zeile ein i ein, sie gelangen so in den Insert-Mode. Gehen sie dann in die letzte Spalte und fügen ein Return ein. Falls der Cursor am Zeilenende zurückspringt, versuchen sie es erneut.

Wenn sie nun in einer leeren Zeile hinter dem letzten Befehl sind, geben sie PS1=... aus obigem Beispiel ein. Schließen sie mit einem Return ab. Speichern können sie, in dem sie die ESC-Taste drücken, dann : drücken (jetzt sehen sie unten links den Doppelpunkt) und anschließend wq (write und quit) eingeben, gefolgt von einem Return.

Wollen sie vi zwischenzeitlich verlassen, ohne etwas zu speichern, dann können sie ESC+:+q! eingeben.

Wenn sie sich nun ausloggen, dann wieder einloggen, erhalten sie immer ihren angepassten Prompt.

Geben sie den Befehl mount(8) ein, sehen sie eine Liste aller aktuell eingehängten Laufwerke und ihrer Zielverzeichnisse. Ihren swap-Speicher sehen sie dort nicht.

Anleitungen

Bearbeiten

Das Hilfesystem (man-pages) sind das Herzstück der Dokumentation von OpenBSD. Ausführlicher als unter anderen unixähnlichen Systemen beschreiben sie jedes Detail und bieten mehr als nur eine Auflistung von Programmparametern. Die meisten Dateien haben eigene Hilfeseiten. Aufgerufen werden die Hilfeseiten mit dem Befehl man(1).

Hilfeseiten sind gruppiert, jede Sektion hat eine Nummer. Das ist der Grund dafür, dass wir hinter einige Programme, die wir ihnen vorstellen, Nummern schreiben.

root@puffy:~ # man 1 man
... es wird der Inhalt der Hilfeseite zu "man" angezeigt ...

Wissen sie die Nummer einer Sektion nicht, können sie nach Hilfeseiten suchen:

root@puffy:~ # man -k dmesg
dmesg (8) - display the system message buffer

In manchen Fällen (z. B. mount) gibt es mehrere Hilfeseiten gleichen Namens in verschiedenen Sektionen.

Eine Shell ist dasjenige Programm, mit welchem Systeminteraktionen (Befehlseingaben, Ausgaben, Starten und Stoppen von Prozessen) erfolgen.

Als Shell kommt unter OpenBSD häufig die Public Domain Korn Shell ksh(1) zum Einsatz. Neben ihr findet man weitere Shells im System vor, wie zum Beispiel die Public Domain Bourne Shell sh(1) oder die csh(1) mit einer Syntax, die an die Programmiersprache C angelehnt ist. In der Datei /etc/shells(5) sind diejenigen Shells aufgeführt, mit denen man sich am System anmelden kann, die also als Login-Shell dienen. Verwendet ein Nutzer eine andere Shell als dort angegeben, so wird ein Login-Versuch abgewiesen.


Hinweise zur ksh

Bearbeiten

Im Benutzerverzeichnis befinden sich Dateien wie .profile und .kshrc. Die Datei .profile wird gelesen, wenn sich ein Nutzer neu einloggt. Steht in der Datei .profile die Zeile export ENV=$HOME/.kshrc, dann wird bei jedem neuen Aufruf der ksh diese Datei abgearbeitet, nicht jedoch .profile. Man sprich bei einer solchen Shell auch von einer interaktiven Shell.

Programmieren

Bearbeiten

Mit Shells kann man programmieren. Es stehen Bedingungen, Schleifen und Möglichkeiten zur Ein- und Ausgabe zur Verfügung. Haben sie beispielsweise ein Programm, welches ein einzelnes Bild verkleinern[3] kann, so können sie leicht ein Shell-Skript schreiben, welches alle Bilder eines Verzeichnis verkleinert und daraus eine Webseite bastelt.

Ein einfaches Beispiel, wie solche Shell-Skripte aussehen können:

root@puffy:~ # for i in .* ; do echo "Datei" $i " gefunden" ; done
Datei .kshrc gefunden
Datei .profile gefunden
... vielleicht noch mehr Ausgabe ...
root@puffy:~ # 

Shell-Skripte werden üblicherweise in Dateien geschrieben und dann abgelegt. Wir kommen später im Kapitel Benutzerverwaltung darauf zurück.

Eine Reise durch das Dateisystem

Bearbeiten

/altroot

Bearbeiten

Hinter /altroot kann sich eine eigene Partition verbergen, auf die der Inhalt von root mit dump(8) und restore(8) kopiert wird. /altroot dient dazu, eine bootfähige Kopie ihrer root-Partition zu haben, falls mal etwas passiert.

/bin und /sbin

Bearbeiten

In diesen beiden Verzeichnissen, die nicht auf anderen Partitionen liegen dürfen, befinden sich die Programme für normale User (/bin) beziehungsweise den Superuser (/sbin). Der Befehl mount(8) befindet sich im /sbin-Verzeichnis. Würde er auf einer anderen Partition liegen, könnten andere Dateisysteme, insbesondere /sbin nicht gemounted werden.

Das Programm boot(8) lädt den Kernel beim Booten des Systems. Es ist der zweite Teil eines Programmes, welches sich im Bootblock befindet.

Bei bsd handelt es sich um den eigentlichen OpenBSD-Kernel. Haben sie darüber hinaus noch bsd.rd oder bsd.mp, so sind Ramdisk-Kernel und Multiprozessorkernel verfügbar.

Hier liegen die eigentlichen Gerätedateien. So ist zum Beispiel /dev/wd0c und /dev/rwd0c (r steht für Raw) die erste Festplatte. /dev/wsmouse* sind Dateien rund um angeschlossenen Mäuse. Hier finden sich Audiogeräte, Festplatten und alle anderen Gerätedateien.

In diesem Verzeichnis liegen die Konfigurationsdateien aller Programme. Einige Konfigurationen lassen sich durch solche im eigenen Benutzerverzeichnis ändern. Einige Dateien sind

/etc/ftpusers Liste der Benutzer, die nicht FTP benutzen dürfen
/etc/group Benutzergruppen auf dem System
/etc/hosts Datenbank aller Hosts, die dem System ohne DNS bekannt sind
/etc/inetd.conf Datenbank der Server und Dienste
/etc/ksh.kshrc Globale Konfigurationsdatei für ksh.
/etc/login.conf Definiert die Besonderheiten bei Logins von der Shell oder einem externen Dienst
/etc/master.passwd Passwort-Datei. In dieser Datei stehen Benutzer und ihre Gruppenzugehörigkeit, das Passwort, die Shell des Benutzers und einige weitere Details. Die Datei /etc/passwd enthält ähnliche Informationen, insbesondere aber keine Passwörter.
/etc/sudoers Liste der Benutzer und Gruppen, die sudo(8) benutzen dürfen, sich also administrativ im System bewegen dürfen.

Benutzerverzeichnisse finden sich in diesem Verzeichnis. Das /home-Verzeichnis kann auf einer anderen Partition, oder auch auf einem entfernten Server liegen.

In dieses Verzeichnis lassen sich zusätzliche Speichermedien mounten. Einige Medien werden in eigenen Verzeichnisse wie etwa /mnt/cdrom bereitgestellt.

Das Benutzerverzeichnis von root.

Aber es ist selbstverständlich, dass die Person, die den Computer betreut hier nur für seine Arbeit wichtige Dateien zwischenspeichert. Alle anderen Dateien gehören in sein /home-Verzeichnis.

Standalone - code der auch ohne libc oder den Kernel ausgeführt werden kann.

Verzeichnis für temporäre Dateien, die von machen Programmen zwischendurch angelegt werden. Für gewöhnlich werden sie dann bei Programmende automatisch gelöscht.

Auf vielen Servern werden Dateien in diesem Verzeichnis, die ein gewisses Alter überschreiten und nicht mehr geöffnet sind, automatisch gelöscht!

Das Verzeichnis muss lokal verfügbar sein.

Der Name dieses Verzeichnisses steht für Unix system resources, enthält also die wichtigen Programme, mit denen die Benutzer arbeiten wollen.

Im Gegensatz zu /bin und /sbin darf dieses Verzeichnis auf einem entfernten Server liegen und wird dann erst nach dem Start eingehängt (ge-mount-et). Das Verzeichnis ist dann nur lesbar.

Bei einem lokalen Verzeichnis /usr ist es nicht unüblich in einem Unterverzeichnis neue Versionen von Programmen oder dem Kernel zu kompilieren. daher sollte der Platzbedarf dafür nicht unterschätzt werden.

In diesem Verzeichnis (bzw. in eigenen Unterverzeichnissen) liegen die Dateien, die z.B. Web- oder Ftp-Server anbieten, noch nicht zugestellte Email und Druckaufträge, und natürlich die Log-Dateien des Computers. Dies ist bei der Ermittlung des Platzbedarfes zu berücksichtigen!

Die aktuell laufenden Dienste sieht man, wenn man das Programm top(1) eingibt. Hier wird die durchschnittliche Prozessorlast, die aktuelle Speichernutzung und eine Liste von Prozessen angezeigt. Wenn sie top von Linux her kennen, werden sie sich sicher über die wenigen Prozesse wundern (hier gekürzt)

load averages: 0.09, 0.09, 0.08                                                           10:23:00
18 processes:  17 idle, 1 on processor
CPU states:  0.0% user,  0.0% nice,  0.0% system,  0.0% interrupt,  100% idle
Memory: Real: 7448K/128M act/tot  Free: 872M  Swap: 0K/1004M used/tot

  PID USERNAME PRI NICE  SIZE   RES STATE    WAIT      TIME    CPU COMMAND
14560 root       2    0 1004K 1716K sleep    select    0:18  0.00% sendmail
28022 _ntp       2    0  344K  712K idle     poll      0:03  0.00% ntpd
13301 root       2    0  672K  788K idle     select    0:01  0.00% cron
 5457 _syslogd   2    0  472K  692K sleep    poll      0:01  0.00% syslogd
18007 root       2    0  548K  740K idle     poll      0:00  0.00% ntpd
18167 root       2    0 3448K 2412K idle     netio     0:00  0.00% sshd
    1 root      10    0  292K  284K idle     wait      0:00  0.00% init
21898 root       2    0  492K  720K idle     select    0:00  0.00% inetd
24942 root       2    0  436K  624K idle     netio     0:00  0.00% syslogd
13859 root       3    0  364K  768K idle     ttyin     0:00  0.00% getty

Typische Dienste auf einem neu eingerichteten System sind

Dienst Beschreibung Konfigurationsdatei
sendmail(8) E-Mail Transportprogramm /etc/mail/sendmail.cf
ntpd(8) aktualisiert die Uhrzeit /etc/ntpd.conf
syslogd(8) Nachrichtendienst im System /etc/syslog.conf
sshd(8) Dienst, um sich auf einem System sicher einzuloggen /etc/ssh/*
cron(8) Führt Programme zu einer gegebenen Zeit regelmäßig aus /etc/crontab

  1. Wir ersparen uns ab sofort den Hinweis auf die Return-Taste...:-)
  2. Behandelt eher vim
  3. Ein solches Programm ist "convert". Sie haben es noch nicht installiert, können es sich später aus den Ports aber selbst erstellen.