Unix GrundlagenÜbersichtNeugeschrieben von Chris Shumway
cshumway@cdrom.com, 10 Mar 2000.Übersetzt von &a.de.pierau,
Juni 2000Das folgende Kapitel umfaßt die grundlegenden Kommandos
und Funktionsweisen des Betriebssystems FreeBSD. Wenn FreeBSD neu
für Sie ist, dann sollten Sie dieses Kapitel auf jeden Fall
lesen, bevor Sie um Hilfe fragen.ZugriffsrechteDie Grundlagen von FreeBSD, dessen Geschichte in BSD UNIX
begründet ist, stützen sich auf verschiedene UNIX
Grundkonzepte. Das erste und ausgeprägteste: FreeBSD ist
ein Multi-User Betriebssystem. Das System ermöglicht,
daß mehrere User 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 Usern.Da das System mehere 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 einer Achtergruppe, die in
drei Teile unterteilt ist: 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:WertZugriffsrechteAuflistung im Verzeichnis0Kein Lesen, Kein Schreiben, Kein Ausführen---1Kein Lesen, Kein Schreiben, Ausführen--x2Kein Lesen, Schreiben, Kein Ausführen-w-3Kein Lesen, Schreiben, Ausführen-wx4Lesen, Kein Schreiben, Kein Ausführenr--5Lesen, Kein Schreiben, Ausführenr-x6Lesen, Schreiben, Kein Ausführenrw-7Lesen, Schreiben, AusführenrwxBei einer ausführlichen Verzeichnisauflistung mittels
ls -l zeigt eine Spalte die Zugriffsrechte
für den Besitzer, die Gruppe und alle anderen an. Hier
sieht man, wie das aussehen könnte:-rw-r--r--Das erste Zeichen von links ist ein Sysmbol, welches angibt,
ob es sich um eine normale Datei, ein Verzeichnis, ein special-
oder block-device, ein Socket oder irgend eine andere
Pseudo-Datei handelt. 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, daß 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
Zugriffrechte 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, daß man darin Suchen kann.
Zum Beispiel kann man sich in diesem Verzeichnis eine Auflistung
erstellen.Es gibt noch mehr Rechte, aber die werden vor allem in
speziellen Umständen benutzt, wie zum Beispiel bei
setuid binaries und sticky directories. Wollen Sie mehr
über Zugriffsrechte von Dateien erfahren, lesen Sie in die
&man.chmod.1; Man-Page.Verzeichnis-StrukturenDa FreeBSD seine Dateisysteme nutzt, um viele grundlegende
Systemtätigkeiten festzulegen, ist die Hierarchie des
Dateisystems äußerst wichtig. Durch den Umstand,
daß die Man-Page &man.hier.7; eine komplette Beschreibung
der Verzeichnisstruktur bietet, wird sie hier nicht dupliziert.
Bitte lesen Sie &man.hier.7; für ausführlichere
Informationen.Von bedeutender Wichtigkeit ist die Wurzel aller
Verzeichnisse, das / Verzeichnis. Dieses wird beim booten als
erstes gemountet und es enthält das Basissystem,
welches zum boot-Zeitpunkt notwendig ist. Das / Verzeichnis
enthält außerdem mount Punkte (Montierungspunkte)
für jedes weitere Dateisystem, das Sie mounten
wollen.Ein mount Punkt ist ein Verzeichnis, in das zusätzliche
Dateisysteme ins / Verzeichnis eingepflanzt werden können.
Standard mount Punkte 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 mount Punkten
als Referenz des Systems. Die meisten der Dateisysteme in
/etc/fstab werden zur boot Zeit 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; Man-Page
für mehr Informationen über das Format der Datei
/etc/fstab und den Optionen darin.ShellsVon 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, um die tägliche
Arbeit zu erleichtern, wie Dateiverwaltung, Editieren von
Kommandozeilen, Makros und Umgebungsvariablen. FreeBSD
enthält die Shells sh (die Bourne Shell) und csh
(die C-Shell) im Basissystem. Viele andere sind in der Ports
Sammlung zu finden, von denen einige auch leistungsfähiger
sind, zum Beispiel tcsh und bash.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 Ihnen ist eine UNIX Kommandozeile neu, so
könnten Sie die bash probieren. Der Punkt ist, daß
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 Dateinames eingeben und
die Shell vervollständigt den Rest automatisch durch
drücken der TAB-Taste. Hier ist ein Beispiel. Ich habe
zwei Dateien foobar und
foo.bar. Die Datei
foo.bar möchte ich löschen. Nun
würde ich an der Tastatur eingeben:
rm fo[TAB].[TAB].Die Shell gäbe dann ausgeben rm
foo[BEEP].bar.[BEEP] meint den Rechner-Piepser. Diesen gibt die Shell
aus, um anzuzeigen, daß 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 ich . eingab und dann die TAB-Taste
drückte, konnte die Shell den Rest für mich
ausfüllen.Eine andere Funktion der Shell sind die Umgebungsvariablen.
Das sind veränderbare Schlüsselpaare im Umgebungsraum
der Shell. Diesen Umgebungsraum kann jedes von der Shell
aufgerufene Programm lesen. So kommt es, daß viel
Programmkonfiguration darin enthalten ist. Hier eine Liste
verbreiteter Umgebungsvariablen und was sie bedeuten:VariableBeschreibungUSERName des zur Zeit angemeldeten Benutzers.PATHListe mit Verzeichnissen (getrennt durch Doppelpunkt)
zum Suchen nach Programmen.DISPLAYWenn gesetzt der Netzwerkname des X11 Bildschirms
für die Anzeige.SHELLDie aktuelle Shell.TERMName des Terminals des Benutzers. Benutzt, um die
Fähigkeiten des Terminals bestimmen.TERMCAPDatenbankeintrag der Terminal Escape Kodes,
benötigt um verschieden Terminalfunktionen
auszuführen.OSTYPETyp des Betriebsystems. Z.B., FreeBSD.MACHTYPEDie CPU Architektur auf dem das System
läuft.EDITORVom Benutzer bervorzugter Text-Editor.PAGERVom Benutzer bevorzugter Text-Betrachter.MANPATHListe mit Verzeichnissen (getrennt durch Doppelpunkt)
zum Suchen nach Man-Pages.Das Anzeigen oder 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 würde man
set und export benutzen
zum ansehen oder setzen von aktuellen Umgebungsvariablen. Um
beispielsweise die Variable EDITOR zu setzen oder
zu modifizieren, würde folgendes Kommando die Variable
EDITOR auf
/usr/local/bin/emacs setzen:setenv EDITOR /usr/local/bin/emacsUnter Bourne-Shells: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 eine Menge an Spezialzeichen, sogenannte
meta-characters, als besondere Darstellungen für Daten.
Das allgemeinste ist das Zeichen *, das eine
beliebige Anzahl Zeichen in einem Dateinamen repräsentiert.
Das Kommando echo * liefert nahezu das gleiche
wie die Eingabe von ls, da die Shell alle
Dateinamen die mit * übereinstimmen an
echo weitergibt.Um zu verhindern, daß 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 ShellDer 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 dasß 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/bashEinfach chsh ohne Optionen und mit
Editieren der entsprechenden Zeile würde auch
funktionieren.Die von Ihnen gewünschte Shell
muß 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/shellsDanach chsh aufrufen.Text EditorenEine 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.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
^ meint die Control (oft Steuerung) Taste,
also ^e heißt, daß die Controltaste und dann der
Buchstabe e gedrückt werden. Um
ee zu verlassen, einfach die
Escapetaste drücken und leave editor wählen. Der
Editor fragt Sie nach, ob Sie speichern möchten, wenn die
Datei verändert wurde.FreeBSD verfügt über leistungfähigere
Editoren wie vi als Teil des
Basissystems und emacs oder
vim als Teil der Ports Sammlung.
Diese Editoren bieten höhere Funktionalität und
Leistungsfähigkeit jedoch auf Kosten einer etwas
schwierigeren Erlernbarkeit. Dennoch, wenn Sie viel
Textdateien editieren werden, sparen Sie auf lange Sicht mehr
Zeit ein durch das Erlernen solcher Editoren wie
vim oder
emacs.Weitere Informationen...Man pagesDie umfassendste Dokumentation rund um FreeBSD gibt es in
Form von Man-Pages. Annährernd 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 KommandoKommando 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 lsDie Online-Dokumentation ist in numerierte Sektionen
unterteilt:Benutzerkommandos.Systemaufrufe und Fehlernummern.Funktionen der C Bibliothkene.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 ein 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 chmodDies wird Ihnen die Man-Page für das Benutzerkommando
chmod zeigen. Verweise auf eine Sektion
der Man-Pages werden traditionsgemäß in Klammern
gesetzt. So nezieht 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 man benutzen, um 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
geben Sie doch einfach &prompt.user; cd /usr/bin;
man -f * oder &prompt.user; cd /usr/bin;
whatis * ein, beides tut dasselbe.GNU Info DateienFreeBSD enthält viele Applikationen und Utilities
der Free Software Foundation (FSF). Zusätzlich zu den
Man-Pages 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; infoEine kurze Einfürung gibt es mit
h; eine Befehlsreferenz erhalten Sie durch
Eingabe von: ?.