OpenBSD/ Erste Schritte
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.
mount
[Bearbeiten]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.
Shell
[Bearbeiten]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.
/boot
[Bearbeiten]Das Programm boot(8) lädt den Kernel beim Booten des Systems. Es ist der zweite Teil eines Programmes, welches sich im Bootblock befindet.
/bsd
[Bearbeiten]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.
/dev
[Bearbeiten]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.
/etc
[Bearbeiten]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. |
/home
[Bearbeiten]Benutzerverzeichnisse finden sich in diesem Verzeichnis. Das /home-Verzeichnis kann auf einer anderen Partition, oder auch auf einem entfernten Server liegen.
/mnt
[Bearbeiten]In dieses Verzeichnis lassen sich zusätzliche Speichermedien mounten. Einige Medien werden in eigenen Verzeichnisse wie etwa /mnt/cdrom bereitgestellt.
/root
[Bearbeiten]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.
/stand
[Bearbeiten]Standalone - code der auch ohne libc oder den Kernel ausgeführt werden kann.
/tmp
[Bearbeiten]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.
/usr
[Bearbeiten]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.
/var
[Bearbeiten]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!
Dienste
[Bearbeiten]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 |
Geräte
[Bearbeiten]- ↑ Wir ersparen uns ab sofort den Hinweis auf die Return-Taste...:-)
- ↑ Behandelt eher vim
- ↑ Ein solches Programm ist "convert". Sie haben es noch nicht installiert, können es sich später aus den Ports aber selbst erstellen.