Start LaTeX Projekte Datenschutz   Impressum  
Projekte  /  Unixeinführung /   UNIX Kapitel 2 UNIX

Unix

UNIX ist ein mächtiges multitaskingfähiges Mehrbenutzer-System. Das bedeutet, dass UNIX darauf ausgelegt ist, dass mehrerer ,,User'' (Benutzer/innen) gleichzeitig damit Arbeiten können, ohne sich gegenseitig zu stören, wobei jedem ermöglicht wird, sich seine Arbeitsumgebung nach den eigenen Bedürfnissen einzurichten. Nicht jeder Benutzer muss die gleiche Arbeitsumgebung haben.
Vorteile von UNIX sind eben unter anderem die Fähigkeit zu mehreren Benutzern und der ,,gleichzeitigen'' Verarbeitung mehrerer Prozesse. Auch die Vernetzbarkeit ist gut gelöst. Nachteile sind, dass u.a. der Lernaufwand am Anfang recht hoch ist, da man häufig mit der Shell (=auf der Kommandozeile) arbeitet und dort erst einmal wissen muss, mit welchen Befehlen man wie was machen kann.
UNIX existiert in vielen verschiedenen ,,Varianten'', es gibt nicht das UNIX. Hier im Rechnerpool zum Beispiel läuft Solaris von SUN Microsystems auf den Rechnern von SUN.

1 - Geschichte von Unix

Die Idee, ein Betriebssystem wie UNIX zu entwickeln, entstand schon 1957. AT&T benötigte ein Betriebssystem, das es ihnen ermöglichte, in ihrem eigenen Rechenzentrum mehrere kleine ,,batch-jobs'' ablaufen zu lassen.
Um einen kleinen Vergleich zu ermöglichen und auch ein bißchen über DOS zu informieren:

2 - Dateien und Verzeichnisse

Wenn man mit einem Computer arbeitet, produziert man meistens irgendwelche Daten wie Texte, Bilder, Musik, Programme usw. Die will man natürlich irgendwo speichern. Die ,,Dinger'', die man dafür benutzt, nennt man Dateien. Eine Datei ist also irgendein ,,Ding'', das irgendwo im Computer18 rumliegt und Daten enthält. Wie diese ,,Dinger'' genau aussehen, ist für die meisten Leute unwichtig, solange man nur damit arbeiten kann.

2.1 - Namen

Um mit Dateien arbeiten zu können, muss man ihnen irgendwelche Namen geben. Am besten so, dass man aus dem Namen schließen kann, was eine Datei enthält. Unter UNIX können Dateinamen bis zu 255 Zeichen lang sein und fast alle Zeichen enthalten. Um unnötige Probleme zu vermeiden, sollte man sich aber auf die Zeichen a... z, A... Z, 0...9, ., _, +, und - beschränken, da die anderen Zeichen in vielen Fällen eine spezielle Bedeutung haben. Dabei werden Klein- und Großbuchstaben als verschiedene Zeichen interpretiert, d.h. hallo.java bezeichnet eine andere Datei als Hallo.java.
Damit man bei den vielen Dateien nicht den Überblick verliert, gibt es sogenannte ,,Verzeichnisse'' (engl. directory). Ein Verzeichnis ist eine Art spezielle Datei, die Dateien oder andere Verzeichnisse19 enthalten kann. Wenn man so Verzeichnisse ineinander schachtelt, bekommt man eine hübsche, baumartige20 Struktur, in der man seine Dateien recht übersichtlich unterbringen kann.

2.2 - Pfade

Den Weg, den man zurücklegen muss, um von der Wurzel des Dateibaumes zu einer Datei oder einem Verzeichnis zu gelangen, nennt man den Pfad dieser Datei. Ein / dient als Trennzeichen zwischen den Dateien und Verzeichnissen eines Pfades. Ein kompletter Pfad könnte also z.B. so aussehen:
/home/doe/uni/Info1/HelloWorld.java
Jedes Verzeichnis enthält zwei ,,Pseudoverzeichnisse'': ,,.'' bezeichnet das Verzeichnis selbst und ,,..'' das übergeordnete Verzeichnis, d.h. das Verzeichnis, in dem das betrachtete Verzeichnis enthalten ist.
Um sich nicht dauernd mit irgendwelchen langen Pfaden rumärgern zu müssen, gibt es immer genau ein aktuelles Verzeichnis, und alle Pfade, die nicht mit einem / beginnen, werden relativ zu diesem Verzeichnis interpretiert. Wenn man sich also z.B. in dem Verzeichnis /home/doe/uni/java befindet, d.h. /home/doe/uni/java das aktuelle Verzeichnis ist, so bezeichnet

2.3 - Das Homeverzeichnis

Damit man sich in den ewigen Weiten des Systems nicht verloren vorkommt, hat jeder User ein Plätzchen, wo er sich zuhause fühlen kann: das Homeverzeichnis. Jeder User hat sein eigenes Homeverzeichnis /home/loginname, in dem er Dateien und Verzeichnisse anlegen kann22. Oft wird das Homeverzeichnis mit einer Tilde (~) abgekürzt bzw. man kann die Tilde selbst abkürzend verwenden. ~/uni steht beispielsweise abkürzend für das Verzeichnis /home/loginname/uni.
Nach dem Einloggen befindet man sich immer im Homeverzeichnis, und meistens bleibt man auch dort (oder in Unterverzeichnissen davon), bis man sich wieder ausloggt. In den meisten anderen Verzeichnissen darf man nämlich keine Dateien anlegen, damit sich die verschiedenen User auf einem System nicht gegenseitig in die Quere kommen.
Um zu verhindern, dass irgendwelche bösen Menschen23 böse Dinge tun24, sollte man darauf achten, dass das Homeverzeichnis nur für einen selbst und sonst niemand schreibbar ist (vgl. Abschnitt 2.3.10). Zum Thema ,,böse Menschen'' bitte auch Kapitel 5 anschauen!

3 - Die UNIX-Shell

Die Shell ist ein ,,Kommandointerpreter'', also ein Programm, das die Befehle, die der Benutzer interaktiv eingibt, abarbeitet. Sie dient als Vermittler zwischen dem Benutzer und dem Betriebssystem.
Eine Shell läuft z.B. in dem xterm-Fenster, das Ihr auf den SUN-Rechnern dadurch erhaltet, indem Ihr mit der Maus auf das Bild mit der Beschriftung ,,xterm'' in der ,,Buttonleiste'' klickt.
Standardmäßig läuft hier die tcsh25. Aber das - welche Shell hier läuft und was welche besser als eine andere kann - ist für's erste recht egal. Die Shell ist für den Anfang ,,nur'' dazu da, damit Ihr Befehle eingeben könnt. Und wenn Ihr nicht wollt, dann kommt Ihr mit der Shell auch zurecht, ohne mehr darüber zu lernen. Es sei nur kurz erwähnt, dass man mit der Shell sehr viel machen kann, aber sie nimmt es einem auch nicht übel, wenn man sie nur zum Starten von Programmen benutzt. Wer mehr über die tcsh lernen will, der kann sich z.B. die Manpage (siehe 8.1) mittels man tcsh anschauen...

3.1 - Arbeiten mit der Shell

Die Shell ermöglicht die Befehlseingabe an der ,,Eingabeaufforderung'', die auch als ,,Prompt'' bezeichnet wird. Diese Eingabeaufforderung sieht z.B. so aus:
doe@toliman /tmp >
Hier steht im ersten Teil (vor dem @) euer login, danach folgt der Rechner auf dem Ihr euch gerade befindet, dann folgt das aktuelle Verzeichnis, in dem Ihr euch befindet. In diesem Beispiel seit Ihr auf dem Rechner toliman und in dem Verzeichnis /tmp.
Steht dort nur
doe@toliman~ >
so befindet Ihr Euch direkt in Eurem Homeverzeichnis (vgl. 2.2.3).
Hinter dem ,,Prompt'' könnt Ihr nun Befehle eingeben, wobei das erste ,,Wort'' von der Shell als Befehl interpretiert wird.
Zum Beispiel liefert der Befehl date das aktuelle Datum26 und die Uhrzeit:
doe@toliman~ > date
Thu Aug 20 17:02:24 MET DST 1998

3.2 - Dateinamen-,,Komplettierung''

Unter UNIX sind (wie seit Win95 ja auch unter Windows) lange Dateinamen möglich - und werden auch gerne verwendet. Nun ist es etwas mühselig, einen Dateinamen wie Blatt1-MusterLoesung.ps.gz einzugeben - abgesehen davon, dass man sich wohl bei der Eingabe mindestens einmal vertippt und die Datei so nicht findet. Hier hilft die Shell gewaltig: Mit Hilfe der < Tabulator > -Taste (ist mit ,,Tab'' beschriftet und links unter der < Esc > -Taste zu finden) kann man sich den Dateinamen vervollständigen lassen.
Bei mir liefert die Eingabe von gv kl < Tab > z.B. sofort gv klausur.ps.gz, da ich in dem betreffendem Verzeichnis nur eine Datei habe, die mit ,,kl'' beginnt.27
Kommen mehrere Dateien in Frage, so wird der Dateiname so weit wie möglich ergänzt und es wird eine Liste mit den möglichen Dateinamen angezeigt, die für die ,,Anfrage'' in Frage kommen. Nun kann man die Befehlszeile solange ergänzen bis man den gewünschten Dateinamen hat.

3.3 - Befehls-,,Komplettierung''

Was für Dateien gilt, gilt angenehmerweise auch für Befehle. Wie oben (2.3.1) erwähnt, wird das erste Wort am Prompt als Befehl interpretiert. Wenn Ihr also am Prompt zum Beispiel xem [TAB] eingebt, wird der Befehl automatisch zu xemacs ergänzt und Ihr bekommt eine Liste der möglichen Befehle, hier im Moment
doe@toliman~ > xem [TAB]
xemacs xemacs-21.1.14
Ist der Fall eindeutig, so wird - wie bei Dateinamen - (nur) der richtige Befehl ergänzt. dat < Tab > führt beispielsweise sofort zu date.
Im Gegensatz zur Dateinamen-,,Komplettierung'' durchsucht die Befehls-,,Komplettierung'' den gesamten Pfad - nicht nur das aktuelle Verzeichnis - nach ausführbaren Programmen. D.h. von ihr werden alle Befehle gefunden, die ausführbar sind und auch ohne weitere Pfadangabe ausgeführt werden können.

3.4 - ,,Geschichte''

Die Shell merkt sich in einer sogenannten ,,command-line-history'' die zuletzt eingegebenen Befehle. Das ist sehr praktisch, wenn man einen eingegebenen Befehl, der evtl. sehr lang und kompliziert ist, öfters wiederholen will. An die zuletzt eingegebenen Kommandos kommt man mit der Taste < > > , einer sogenannten ,,Cursor-Taste''. Man kann sich so durch die letzten Befehle ,,durchblättern''. Mit < > >  bekommt man wieder die ,,neueren'' Befehle, falls man am gewünschten Befehl ,,vorbeigeblättert'' hat.
Anwendungsbeispiel ist z.B. folgendes: Ihr gebt javac HelloWorld.java und anschließend java HelloWorld ein, um ein Java-Programm erst zu ,,übersetzen'' und dann zu starten. Verändert Ihr nun euer Programm, so müßt Ihr beide Befehle wieder eingeben. < > > , < > > , < Return > , < > > , < > >   < Return > erledigt die gleiche Arbeit. Sieht hier in Textform etwas blöd aus, ist aber ganz praktisch :-).
Leider kommt Ihr mit < > >  nicht in die Zukunft, werdet also nicht erfahren, welche Befehle Ihr in der nächsten Zeit noch eingeben werdet.

3.5 - Umleitung

Viele Programme nehmen vom Benutzer irgendwelche Eingaben entgegen und/ oder produzieren irgendwelche Ausgaben. Auf der Kommandozeile kann man diese Eingaben auch aus einer Datei lesen, die Ausgaben in eine Datei schreiben oder die Ausgabe des einen Programmes als Eingabe für ein anderes benutzen28.
Ausgabe in eine Datei umleiten:
Mit ,,>'' kann man die Ausgabe eines Programmes in eine Datei umleiten. So erzeugt
ls . > dateinamen
eine Datei dateinamen, in der die Namen der Dateien im aktuellen Verzeichnis stehen. Existierte die Datei vorher, so wied diese überschrieben!
Ausgabe an eine Datei anhängen:
Mit ,,>>'' kann die Ausgabe eines Programmes an eine Datei angehängt werden:
ls programme/ >> dateinamen
schreibt zusätzlich die Namen der Dateien im Verzeichnis programme in die Datei dateinamen
Eingabe aus einer Datei lesen:
Mit ,,<'' kann die Eingabe eines Programmes aus einer Datei gelesen werden:
java MeineDemo < demoeingaben
Hier liest das Java-Programm ,,MeineDemo'' seine Eingaben aus der Datei demoeingaben. Das ist z.B. praktisch, wenn man einen Fehler sucht und nicht ständig wieder die gleichen Eingaben tippen will.
Ausgabe als Eingabe weiterverwenden:
Mit ,, - '' (oft als ,,Pipe'' bezeichnet) kann man die Ausgabe des ersten Programmes als Eingabe des zweiten verwenden.
du -h - less
zeigt den Platzverbrauch der Unterverzeichnisse des aktuellen Verzeichnisses an. Die Ausgabe erfolgt dabei - etwas komfortabler - durch das Programm less, das sich über die Cursortasten bedienen läßt. Eine Hilfe innerhalb von less erhält man mit < h > oder < H > . Beenden kann man less29 mit < q > , < :q > , < Q > , < :Q > oder < ZZ > .

3.6 - Verknüpfungen

Manchmal muss man ständig die gleichen Befehle in der gleichen Reihenfolge eingeben. Da ist es bequem, wenn man sie alle in eine Zeile schreiben und dann die ,,History'' oder ,,Geschichte'' der Shell (vgl. 2.3.4) nutzen kann.
Befehle hintereinander ausführen:
Zwei Befehle, die hintereinander ausgeführt werden sollen, kann man mit ,,;'' trennen:
latex test.tex ; dvips test.dvi
Befehle bei Erfolg hintereinander ausführen:
Falls der zweite Befehl nur ausgeführt werden soll, wenn der erste Befehl erfolgreich war, trennt man die beiden Befehle mit ''&&'':
javac MeineDemo.java && java MeineDemo
Hier wird der Java-Interpreter (,,java'') nur gestartet, falls der Compiler (,,javac'') den Quelltext ohne Fehler kompilieren konnte.

3.7 - Jokerzeichen

,,Jokerzeichen'' (englisch ,,Wildcards'') helfen einem im Umgang mit Dateien, die ähnliche Dateinamen haben. So kann man mit diesen Jokerzeichen z.B. mehrere Dateien auf einmal kopieren, verschieben, löschen oder sich anzeigen lassen.
Der Stern   Will man z.B. alle Dateien aus dem aktuellen Verzeichnis in ein anderes kopieren, so erledigt
cp * InfoI/
diese Aufgabe. Der ,,*'' steht hierbei für beliebig viele beliebige Zeichen, die an dieser Stelle stehen können.
cp h* InfoI/
kopiert also alle Dateien, die mit einem ,,h'' beginnen - egal, was dem ,,h'' nachfolgt. Dies kann man weiter einschränken:
cp h*.ps InfoI/
kopiert alle Dateien, die mit einem ,,h'' beginnen, jedoch auch mit ,,.ps'' enden. So würde im zweiten Beispiel (cp h* InfoI/) die Datei haskell.txt kopiert, im letzten Beispiel jedoch nicht.
Im Gegensatz zu DOS ist es unter UNIX möglich, auch mehr als einen ,,*'' zu verwenden. So kopiert
cp l*aufg*.ps InfoI/
alle Dateien, die mit ,,l'' beginnen, in der ,,Mitte'' ,,aufg'' enthalten und mit ,,.ps'' enden. Also z.B. loesung.aufg01.ps, l.aufgabe02.ps, laufg.ps, ...
Das Fragezeichen   Das zweite Jokerzeichen ist das ,,?'': Es steht für ein beliebiges Zeichen. Will man z.B. die Datei haskell.txt kopieren, weiß aber nicht mehr, ob diese mit einem großen oder kleinen ,,h'' beginnt, so kann man dies ohne nachzuschauen mit
cp ?askell.txt InfoI/
erledigen. In diesem Beispiel werden alle Dateien kopiert, deren Name aus einem beliebigen Zeichen (außer einem Punkt) und ,,askell.txt'' bestehen. Also haskell.txt, Haskell.txt, aber auch Xaskell.txt - nicht aber .askell.txt, Ahaskell.txt...
Versteckte Dateien   Noch schnell ein Wort zu ,,versteckten Dateien'': Der ,,*'' und ,,?'' stehen nicht als ,,Platzhalter'' für einen Punkt als erstes Zeichen eines Dateinamens zur Verfügung. Dateien, die mit einem ,,.'' beginnen, sind ,,versteckten Dateien'', die etwas besser z.B. vor versehentlichem Löschen geschützt sind.
cp *txt InfoI/
kopieren also z.B. die Datei haskell.txt, nicht aber .haskell.txt.
cp ?hask* InfoI/
kopiert die Datei .haskell.txt ebenfalls nicht. Dateien, die mit einem ,,.'' beginnen, müssen also extra z.B. mit Hilfe von
cp .?askel* InfoI/
kopiert werden.
Beim Löschen dieser Dateien ist äußerste Vorsicht geboten. Diese ,,versteckten'' Dateien sind meist Konfigdateien, die von den Programmen benötigt werden - man sollte sie nicht ohne Grund oder Wissen, was man da gerade tut, löschen oder überschreiben.30

3.8 - Arbeiten mit Dateien und Verzeichnissen

Da Dateien und Verzeichnisse eine ziemlich wichtige Sache sind, gibt es natürliche eine Menge Befehle, die irgendwas damit machen. Hier sind die wichtigsten:
Verzeichnisse wechseln   Verzeichnisse wechseln kann man mit cd . Das steht für ,,change directory''.
doe@toliman~ > cd programme
wechselt in das Verzeichnis programme. Wird cd ohne ein Argument aufgerufen, wird in das Homeverzeichnis gewechselt.
Den Namen des jeweils aktuellen Verzeichnisses kann man sich mit dem Befehl pwd anzeigen lassen:
doe@toliman~ > pwd
/home/doe
Dateien und Verzeichnisse anlegen und löschen  
Angelegt werden Verzeichnisse mit dem Befehl mkdir, gelöscht werden können leere Verzeichnisse mit rmdir. Das Anlegen von mehreren Verzeichnissen ist deshalb sinnvoll, weil man so besser die Übersicht über aktuelle, alte oder wichtige Daten behält. Die Eingabe von
doe@toliman~/studium/InfoI > mkdir java
erstellt demnach das Verzeichnis java als Unterverzeichnis im aktuellen Verzeichnis (hier ~/studium/InfoI),
doe@toliman~/studium/InfoI > rmdir java
entfernt das Verzeichnis wieder, wenn es leer ist.
Warnung: Einmal gelöschte Dateien und Verzeichnisse sind weg und können nicht selbst 31 wiederhergestellt werden! Darum sollte man genau überlegen, bevor man seine Dateien und Verzeichnisse löscht.
Dateien werden mit dem Befehl rm gelöscht. rm ist die Abkürzung für ,,remove''. Zum Beispiel kann man mit
doe@toliman~/uni > rm *.class
alle Dateien mit der Endung .class im aktuellen Verzeichnis löschen.
Um nun ganze Verzeichnisse, mitsamt Inhalt und eventuellen Unterverzeichnissen zu löschen, hat rm die Option -r (engl. für ,,recursive'').
doe@toliman~ > rm -r /home/doe/studium
würde dann das komplette Studiums-Verzeichnis von hansi mit allen darin enthaltenen Dateien und Verzeichnissen löschen. Falls John Doe nicht vor hat, sein Studium zu beenden, könnte das eine ziemlich schlechte Idee sein...
Mit der Option -r sollte sehr vorsichtig umgegangen werden, denn - wie schon gesagt: es gibt für euch keine Möglichkeit einmal gelöschte Daten wieder herzustellen.
Kopieren und Umbenennen von Dateien   Dateien werden mit dem Befehl cp kopiert, er hat die Form
doe@toliman~ > cp Quelle Ziel
Will man z.B. die Datei HelloWorld.java nach HelloDu.java kopieren, lautet der Befehl
doe@toliman~ > cp HelloWorld.java HelloDu.java
Achtung: Falls die Ziel-Datei schon existiert, so wird diese ohne Rückfrage überschrieben! Das kann man vermeiden, wenn man den Parameter -i (engl. interactive) benutzt. cp fragt dann nach, bevor eine Datei überschrieben wird32:
cp -i HelloWorld.java HelloDu.java
cp: overwrite 'HelloDu.java'?

Antwortet man mit ,,y'', wird die Datei überschrieben, andernfalls nicht.
Mit dem Befehl mv (engl. ,,move'') werden Dateien und Verzeichnisse verschoben. Die Syntax ist mit der von cp identisch. Mit mv werden Dateien auch umbenannt, z.B. benennt
doe@toliman~ > mv emil test
die Datei emil in test um (falls emil existiert).
Achtung: Auch hier gilt, dass eine Datei die bereits existiert ohne Rückfrage überschrieben wird! Und auch hier hilft der Parameter -i weiter.
Informationen über Dateien   Um sich den Inhalt eines Verzeichnisses anzeigen zu lassen wird der Befehl ls benutzt.
doe@toliman~> ls /bin
zeigt den Inhalt des Verzeichnisses /bin an. Dabei werden ausführbare Dateien mit einem ,,*'' am Ende gekennzeichnet und Verzeichnisse haben ein ,,/'' am Ende. Mit der Option -l wird die Ausgabe von ls um einiges informativer. Zum Beispiel liefert ls -l bei unserem Beispielstudenten hansi unter anderem:
doe@toliman ~ > ls -l
total 436
drwxr-xr-x  22 doe      student      512 Aug 31 18:06 info1//
drwxr-xr-x   2 doe      student      512 Oct  2 02:58 tkirc/
-rwxr-xr-x   1 doe      student   206174 Oct  2 02:59 xearth*

Die einzelnen Spalten informieren über
Rechte Das erste Zeichen gibt den Typ an, d bedeutet Verzeichnis (engl. Directory), l steht für Link und - für normale Dateien. Eine genaue Beschreibung der Zugriffsrechte gibt es in Abschnitt 2.3.10.
Anzahl Die Anzahl der enthaltenen Dateien (Unterverzeichnisse zählen wie eine Datei).
BesitzerDer Eigentümer der Datei (siehe auch 2.3.10).
Gruppe Die Gruppenzugehörigkeit der Datei (normalerweise auch die des Eigentümers).
Größe Die Größe der Datei in Bytes.
Datum Das Datum und die Uhrzeit der letzten Änderung. Fehlt die Jahresangabe, so sind die Datan aus dem aktuellen Jahr.
Name Der Name der Datei, bzw. des Verzeichnisses.
Im obigen Beispiel haben wir also 2 Verzeichnisse, erstellt am 31. Aug. und am 2. Okt. , und eine ausführbare Datei, die am 2. Okt.  erstellt wurde und 206 KByte groß ist. Besitzer der Daten ist doe aus der Gruppe student.
Versteckte Dateien   Eine besondere Sorte von Dateien und Verzeichnissen sind solche, die mit einem ,,.'' beginnen. Versteckte Dateien werden nur angezeigt, wenn ls mit der Option -a aufgerufen wird. Meistens sind das Konfigurationsdateien für Programme. Sie sind vor einem versehentlichen Löschen durch rm * geschützt und müssen explizit gelöscht werden.
Vom Löschen mit ,,rm -r .*'' ist aus verschiedenen Gründen dringend abzuraten. Wenn man wirklich seine Konfigurationsdateien löschen will, so sollte man diese einzeln löschen.

3.9 - Symbolische Links

Symbolische Links sind eine nützliche Sachen, mit ihnen kann man z.B. ein Programm unter mehren Namen zur Verfügung stellen oder ganze Verzeichnisse in das Homeverzeichnis einbinden, ohne zusätzlichen Festplattenplatz zu verbrauchen. Wenn man z.B. das Verzeichnis
/home/doe/public/
auch als /home/doe/pub/ ansprechen will33, kann man sich den Festplattenplatz sparen, indem man einen symbolischen Link benutzt:
doe@toliman~> ln -s /home/doe/public ~/pub
Symbolische Links sind nur Referenzen auf die richtigen Dateien und Verzeichnisse. Sie lassen sich behandeln wie normale Dateien, also auch mit rm löschen (dabei wird nur der Link und nicht die referenzierte Datei gelöscht). Mehr dazu steht in der Manpage (siehe Anhang 8.1) zu ln.

3.10 - Besitzer und Zugriffsrechte

Da UNIX ein Multi-User System ist, können viele Benutzer gleichzeitig auf einem System arbeiten. Damit nicht jeder uneingeschränkten Zugriff auf alle Daten hat, sind für Dateien und Verzeichnisse immer Besitzer, Gruppe und Zugriffsrechte definiert.
Die Eingabe von ls -l erzeugt eine Ausgabe der Art:
doe@toliman ~/test > ls -l 
%scorpio@ ~/test > ls -l
total 6
-r--------   1 doe    student       789 Feb  6  1997 DaemonThread.class
-rw-r--r--   1 doe    student      1244 Sep  2 11:14 Fib.class
-rw-rw-r--   1 doe    fib           992 Sep  2 11:14 Fib.java
-rw-------   1 doe    student      1347 Feb  6  1997 RunPrimes.java
-rwxr-xr-x   1 doe    student    206174 Oct  2 02:59 xearth*

Die einzelnen Teile so einer Ausgabe wurden schon in Kap. 2.3.8 erklärt. Hier geht es jetzt um die Einzelheiten der ersten, dritten und vierten Spalte:
-rwxr-xr-xRechte 1 doeBesitzer studentGruppe 206174 Oct 2 02:59 xearth*
Das erste Zeichen bei den Rechten gibt den Typ an (siehe 2.3.8). Die restlichen neun Zeichen definieren die Zugriffsrechte für den Besitzer, die Gruppe und alle anderen Benutzer (jeweils drei Zeichen). Dabei steht ,,r'' für lesbar, ,,w'' für beschreibbar (das schließt auch Löschen ein!) und ,,x'' für ausführbar. Ein ,,-'' bedeutet, dass das entsprechende Recht nicht erteilt wurde.
Für das obige Beispiel gilt demnach, dass die Datei RunPrimes.java nur von hansi - er ist der Besitzer - gelesen und bearbeitet werden kann. Fib.java kann hingegen von doe und den Mitgliedern der (erfundenen) Gruppe fib gelesen und bearbeitet werden, alle anderen können die Datei nur lesen. Zur Gruppe student gehören - wie unschwer zu erraten - alle Studenten. Daher ist es nie eine gute Idee, eine Datei für die Gruppe student schreibbar zu machen. Das Programm xearth ist für alle lesbar und ausführbar34, aber nur für doe beschreibbar.
Die Dateirechte können mit dem Befehl chmod geändert werden. Die Syntax sieht so aus:
chmod {u - g - o}{+ - - - =}{r - w - x} Name
dabei steht u für user, g für group users und o für other users. Mit + (bzw. -) werden die nachfolgenden Rechte erteilt (bzw. weg genommen). Um die Zugriffsrechte für ganze Verzeichnisse zu ändern kann chmod optional mit der Option -R (engl. Recursive) aufgerufen werden. Will nun doe die Rechte für das Verzeichnis
drwxrwxr-x 22 doe student 512 Aug 31 18:06 info1/
und die darin enthaltenen Unterverzeichnisse so ändern, dass nur noch er lesend und schreibend darauf zugreifen kann, dann sieht das so aus:
doe@toliman:~ > chmod -R go-rw info1
doe@toliman:~ > ls -l 
...
drwx--x--x 22 doe student 512 Aug 31 18:06 info1/

Weitere Informationen zu chmod gibt es in der Manpage zum Programm.
Die Befehle zum Ändern des Besitzers und der Gruppenzugehörigkeit von Dateien heißen chown und chgrp. Informationen dazu gib es mit man chown, bzw. man chgrp. Der Befehl chown ist hier an der Fakultät aber eigentlich uninteressant, da er von Euch nicht verwendet werden kann. Ihr dürft eure Dateien nicht ,,verschenken''. Auch, wenn sie wirklich euch gehören...
Der Befehl chgrp wird wohl auch erst später interessant werden, wenn Du in eine weitere Gruppe außer student aufgenommen wirst - zum Beispiel, wenn Du das Datenbankpraktikum machst.

3.11 - Arbeiten mit DVD-,CD-ROM, USB und Disketten

Es soll vorkommen, dass Studenten Dateien mit nach Hause nehmen wollen oder Dateien von zu Hause hier auf den Rechnern verwenden wollen. Dazu dienen logischerweise die Disketten- CD- oder DVD-Laufwerke der SUN-Rechner.
Inzwischen verfügen fast alle Rechner im Pool über USB Schnittstellen. Für die Nutzung sind aber nur die USB Schnittstellen auf der Vorderseite der SunBlade 1500, z.Zt. auf Anfrage freigegeben. Das zur Zeit unterstützte Dateiformat ist FAT 16, welches eine maximale Partionsgröße von 2 GB zuläßt.
Auf die Daten auf Disketten kann über die sogenannten mtools zugegriffen werden. Zusätzlich muss man natürlich noch auf einem Rechner eingeloggt sein, der ein entsprechendes Laufwerk hat35. Die CD-Rom wird automatisch unterhalb des Verzeichnisses /cdrom eingebunden.
Hier eine kurze Zusammenstellung der mtools-Befehle mit Erläuterungen, die für den täglichen Gebrauch ausreichen dürften:
mcopy [-/] Quelle Ziel
 
Kopiert die Dateien aus der Quelle auf das Ziel.
Beispielsweise kopiert mcopy * z: alle Dateien im aktuellen Verzeichnis auf das Laufwerk z: (das ZIP-Drive; für Disketten a: statt z:).
Die Option -/ bewirkt, dass ,,rekursiv'' kopiert wird, d.h. alle Dateien in allen Unterverzeichnissen werden mitkopiert.
mdel Laufwerk:Datei(en)
 
Löscht eine oder mehrere Dateien auf dem angegebenen Laufwerk.
mmd Laufwerk:Verzeichnis
 
Erstellt ein Verzeichnis auf der Diskette.
mcd Laufwerk:Verzeichnis
 
Wechselt in das angegebene Verzeichnis.
eject
 
Wirft die CD oder die DVD aus dem Laufwerk aus 36.

Fussnoten

18genauer: Auf der Festplatte, Diskette o.ä.
19die wiederum Dateien und Verzeichnisse (die wiederum Dateien und Verzeichnisse (die wiederum ... )) enthalten können
20Botaniker würden das wohl nicht unbedingt als ,,baumartig'' bezeichnen. Möglicherweise nicht einmal als ,,hübsch''
21oder ././././test.java, falls man gerne etwas mehr tippen will...
22natürlich nicht beliebig viele bzw. beliebig große, vgl. 1.2
23sowas gibt's auch an der Uni...
24böse Menschen tun sowas
25,,tcsh'' steht für ,,TENEX C Shell''. Die tcsh ist eine Weiterentwicklung der Berkeley UNIX C-Shell (csh), die wiederum so heißt, weil sich ihre Bedienung in einigen Punkten an die Programmiersprache C anlehnt.
26bzw. ein Datum, das einmal aktuell war
27gv dient dem Betrachten von PostScript-Dateien - siehe Abschnitt 6.3.2.
28Damit kann man z.B. viele Aufgaben automatisieren. Darin liegt einer der großen Vorteile der Kommandozeile.
29in Anlehnung an den Editor vi (siehe 6.2.2)
30Einige dieser Dateien werden auf unserer Homepage unter der Adresse http://poolmgr.informatik.uni-freiburg.de/doc/config/ näher erklärt
31für absolute Notfälle gibt es ein Backup.
32in Deiner von uns vorbereiteten Konfiguration ist dies vermutlich bereits so eingerichtet
33das spart satte 3 Buchstaben tipparbeit
34 prinzipiell sollte man keine Programme anderer User starten, da diese Programme sonst Zugriff auf Deine Dateien haben - sie können also Dateien lesen, die Du nur für Dich zum lesen freigegeben hast...
35 siehe auch Abschnitt 4.2 - Stichwort ssh.
36dies ist die einzige Möglichkeit, eine CD bzw. DVD aus einem CD- bzw. DVD-Laufwerk wiederzubekommen
Sascha Frank
Last modified: Tue Nov 8 15:03:39 CET 2016
Wir verwenden Cookies. Wenn Sie weiter auf unseren Seiten surfen, stimmen Sie der Nutzung von Cookies zu. mehr Informationen hier