Solaris Handbuch für Fortgeschrittene Benutzer

Kapitel 3 Dateien und Verzeichnisse

3.1 SunOS-Befehle

SunOS bietet zahlreiche Befehle, mit denen Sie Dateien und Verzeichnisse bearbeiten können. Diese Befehle werden zusammen mit den Datei- oder Verzeichnisnamen in die Befehlszeile eingegeben. In der OpenWindows-Umgebung arbeiten Sie dagegen mit Symbolen, die angeklickt und verschoben werden, und wählen die Dateibefehle aus Menüs.

In diesem Kapitel erfahren Sie, wie Sie Dateien und Verzeichnisse über die SunOS-Befehlszeile manipulieren. Die hier vorgestellten Befehle und Prozeduren sind für eine effiziente Nutzung des Betriebssystems SunOS sehr wichtig. Sie gelten für alle SunOS Befehlszeilen, ob Sie nun unter OpenWindows in einer UNIX- oder Kommando-Shell arbeiten oder sich von einem entfernten Terminal aus beim System anmelden.

3.2 Grundlagen

Dateien sind die wichtigsten Datenelemente unter SunOS . Fast jede Datenmenge wird als Datei behandelt:

In den folgenden Abschnitten werden Befehle beschrieben, mit denen Sie Dateien erzeugen, anzeigen, kopieren, bewegen und löschen und den Typ einer Datei ermitteln können.

3.3 Dateibefehle

Zu jedem der nachfolgend beschriebenen Befehle gehört ein Beispiel, das Sie an Ihrer Workstation oder Ihrem Terminal nachvollziehen sollten. Die Funktion des Befehls wird dadurch deutlicher, und Sie können sich später besser an ihn erinnern.

3.3.1 Vorbereitungen

Bevor Sie Dateibefehle ausführen, sollten Sie sich vergewissern, daß Sie sich in Ihrem Home-Verzeichnis befinden. Dieses Verzeichnis wird bei der Einrichtung Ihrer Zugangsberechtigung vom Systemverwalter angelegt und ist ausschließlich für Ihre Arbeitsdateien vorgesehen. Wenn Sie die Beispiele in diesem Kapitel in Ihrem Home-Verzeichnis ausführen, besteht weniger Gefahr, daß Sie Dateien erzeugen, kopieren, bewegen oder gar löschen, auf die auch von anderen Benutzern zugegriffen wird.

Um in Ihr Home-Verzeichnis zu wechseln, geben Sie den Befehl cd ohne weitere Argumente ein. Mit dem Befehl pwd können Sie prüfen, in welchem Verzeichnis Sie sich gerade befinden:

$ cd

$ pwd

/export/home/benutzername

In diesem Beispiel lautet der Pfadname des Home-Verzeichnisses /export/home/benutzername, wobei benutzername für den Namen des Verzeichnis-Eigentümers steht.

3.3.2 Testdatei erzeugen

Mit dem Befehl touch erstellen Sie eine leere Datei. Existiert bereits eine Datei mit dem angegebenen Namen, werden lediglich das Zugriffsdatum und die Zugriffszeit dieser Datei aktualisiert.

$ touch testdatei

$ 

3.3.3 Dateien anzeigen (ls)

Mit dem Befehl ls können Sie prüfen, ob die Datei tatsächlich erzeugt wurde:

$ ls testdatei

testdatei 

Wenn Sie ls ohne Argumente eingeben, wird der gesamte Inhalt des aktuellen Verzeichnisses angezeigt. Um zu prüfen, ob eine bestimmte Datei existiert, geben Sie ls mit dem Namen dieser Datei ein.

Weitere Informationen zu ls(1) finden Sie in den man Pages(1): User Commands.

3.3.4 Dateien kopieren (cp)

Kopieren Sie testdatei mit dem Befehl cp in eine neue Datei namens testkopie:

$ cp testdatei testkopie

$ 

Da beide Dateinamen mit den Zeichen test" beginnen, können Sie die Originaldatei und die Kopie mit Hilfe eines Metazeichens zusammen auflisten. Das Metazeichen * steht für eine beliebige Zeichenfolge. Mit dem Befehl ls test* zeigen Sie also alle Dateien in Ihrem Home-Verzeichnis an, deren Name mit test" beginnt:

$ ls test*

testdatei    testkopie

Die Datei testdatei erscheint an erster Stelle, da das System alle passenden Dateinamen in alphabetischer Reihenfolge anzeigt.

Ausführliche Informationen zu dem Befehl cp(1) finden Sie in den man Pages(1): User Commands.

3.3.5 Dateien übertragen und umbenennen (mv)

Mit dem Befehl mv können Sie Dateien umbenennen oder in ein anderes Verzeichnis übertragen. Im folgenden Beispiel benennen Sie testdatei in testfile um:

$ mv testdatei testfile

$ 

Prüfen Sie, ob testdatei tatsächlich durch testfile ersetzt wurde:

$ ls test*

testfile    testkopie

Die Datei testdatei ist nicht mehr vorhanden.

Weitere Informationen zu dem Befehl mv(1) finden Sie in den man Pages(1): User Commands.

3.3.6 Dateien löschen (rm)

Im letzten Beispiel dieser Gruppe löschen Sie die Datei testkopie mit dem Befehl rm und überprüfen den Vorgang mit ls:

$ rm testkopie

$ ls test*

testfile


Achtung - Achtung -

GraphicEine gelöschte Datei ist unwiderruflich verloren. Wenn Sie keine Sicherungskopie erstellt haben, kann sie nicht mehr wiederhergestellt werden. Sie sollten den Befehl rm daher mit Vorsicht verwenden, vor allem dann, wenn Sie mit dem Metazeichen * gleich mehrere Dateien löschen.


Ausführliche Informationen zu rm(1) finden Sie in den man Pages(1): User Commands.

3.3.7 Inhalt einer Datei anzeigen (more, cat)

Mit dem Befehl more zeigen Sie den Inhalt einer Datei an, deren Namen Sie in der Befehlszeile angeben. Passen nicht alle Daten auf den Bildschirm, erscheint folgende Meldung:

--Weiter--(nn%)  [Press space

to continue, `q' to quit.]

nn steht für den Prozentsatz des Dateiinhalts, der bereits angezeigt wird.

Sie können den Inhalt einer Datei auch mit dem Befehl cat anzeigen. In diesem Fall besteht jedoch keine Möglichkeit, die Anzeige anzuhalten. Dieser Befehl wird daher vor allem für die Verknüpfung von zwei oder mehr Dateien zu einer größeren Datei verwendet. Zum Beispiel:

$ cat datei1 datei2 datei3 > gesamtdatei

$ ls *datei

gesamtdatei

datei1

datei2

datei3

$

Weitere Informationen zu den Befehlen more(1) und cat(1) finden Sie in den man Pages(1): User Commands.

3.3.8 Dateityp anzeigen (file)

Manche Dateien, z. B. Binärdateien und ausführbare Dateien, können weder gedruckt noch auf dem Bildschirm angezeigt werden. Wenn Sie sich über den Typ einer Datei nicht im klaren sind, können Sie ihn mit dem Befehl file abrufen:

$ file testfile

testfile:    ASCII-Text

3.4 Verzeichnisbefehle

Sie wissen jetzt, wie man Dateien auflistet, kopiert, umbenennt und löscht. Wichtig ist aber auch, daß Sie diese Dateien möglichst rasch finden. Deshalb muß das Dateisystem auf eine logische und sinnvolle Weise strukturiert sein. Diese Strukturierung, die über Verzeichnisse erreicht wird, bildet das Thema der folgenden Abschnitte.

3.4.1 Verzeichnishierarchie

Dateien werden in Verzeichnissen abgelegt, die wiederum Teil anderer, übergeordneter Verzeichnisse sind. Daraus ergibt sich eine Hierarchie, an deren Spitze das Root-Verzeichnis steht. Dieses Verzeichnis wird durch das Zeichen / repräsentiert.

Abbildung 3-1 zeigt, daß jedes Verzeichnis weitere Verzeichnisse enthalten kann. Die einzelnen Verzeichnisebenen werden ebenfalls durch das Zeichen / getrennt. Das Root-Verzeichnis / enthält unter anderem die Unterverzeichnisse /usr, /bin, /home und /lib. Das Unterverzeichnis /home enthält die Arbeitsverzeichnisse der Benutzer: /user1, /user2 und /user3.

Um auf ein Verzeichnis (und die darin enthaltenen Dateien) zu verweisen, geben Sie die Namen der direkt übergeordneten Verzeichnisse an. Ein solcher Verweis wird als Pfadname bezeichnet. Der Pfadname zu dem Verzeichnis /user3 lautet also /home/user3. Der erste Schrägstrich steht für das Root-Verzeichnis, danach folgt der Name des übergeordneten Verzeichnisses home, ein zweiter Schrägstrich trennt diese Verzeichnisebene von der nächsten, und zum Schluß kommt der Name des gesuchten Verzeichnisses, user3.

Abbildung 3-1 Struktur des Dateisystems

Graphic

Innerhalb eines Verzeichnisses darf jeder Dateiname (dazu zählen auch die Namen der Unterverzeichnisse) nur einmal vorkommen. In anderen Verzeichnissen kann er sich dagegen wiederholen. Die Verzeichnisse /usr/lib und /lib in unserem Beispiel können also nebeneinander existieren, weil sie unterschiedliche Pfadnamen haben.

Der Standort einer Datei innerhalb des Dateisystems wird ebenfalls über einen Pfadnamen angegeben. Nehmen wir an, das Verzeichnis /home/user2 enthält eine Datei namens bericht5. Der Pfadname dieser Datei lautet demnach /home/user2/bericht5, d. h. die Datei befindet sich im Verzeichnis user2, einem Unterverzeichnis von home, das wiederum ein Unterverzeichnis des Root-Verzeichnisses (/) ist.

Verzeichnisse können sowohl Unterverzeichnisse als auch Dateien enthalten.

3.4.2 Aktuelles Verzeichnis anzeigen (pwd)

Mit dem Befehl pwd können Sie feststellen, an welcher Stelle innerhalb der Verzeichnisstruktur Sie sich gerade befinden. Dieses Verzeichnis wird als aktuelles Verzeichnis oder Arbeitsverzeichnis bezeichnet. Zum Beispiel:

$ pwd

/home/user1

3.4.3 Home-Verzeichnis

Der Systemverwalter legt für jeden Benutzer ein Home-Verzeichnis an, in dem die Arbeitsdateien dieses Benutzers gespeichert werden. Wenn Sie OpenWindows starten und eine Kommando- oder UNIX-Shell öffnen, befinden Sie sich automatisch in Ihrem Home-Verzeichnis.

3.4.4 Aktuelles Verzeichnis wechseln (cd)

Mit dem Befehl cd wechseln Sie in ein anderes Verzeichnis. Zum Beispiel:

$ cd /usr/lib

$ pwd

/usr/lib

Wenn Sie cd ohne Verzeichnisnamen eingeben, kehren Sie in Ihr Home-Verzeichnis zurück. Im folgenden Beispiel heißt das Home-Verzeichnis - /home/user1:

$ cd

$ pwd

/home/user1

In der C-Shell können Sie das Zeichen ~ (Tilde) als Abkürzung für Ihr Home-Verzeichnis verwenden, statt den vollständigen Pfadnamen einzugeben. Mit folgendem Befehl würden Sie also in das Unterverzeichnis musik in Ihrem Home-Verzeichnis wechseln:

beispiel% cd ~/musik

Sie können mit der Tilde auch das Home-Verzeichnis eines anderen Benutzers angeben. Zum Beispiel:

beispiel% cd ~benutzername

Dabei ersetzen Sie benutzername durch den Login-Namen des Benutzers, zu dessen Home-Verzeichnis Sie wechseln wollen.


Hinweis -

In der Bourne-Shell ist die Verwendung von ~ als Abkürzung für das Home-Verzeichnis nicht möglich.


Wenn Sie mit einer Bourne-Shell arbeiten und Ihr Systemverwalter das System entsprechend konfiguriert hat, können Sie mit $home das Home-Verzeichnis angeben. Zum Beispiel:

$ $home/musik

Auch in diesem Fall können Sie sowohl das eigene Home-Verzeichnis wie auch die Home-Verzeichnisse anderer Benutzer angeben:

$ $home benutzername

benutzername wird durch den Login-Namen des Benutzers ersetzt, dem das Verzeichnis gehört.

Das einem Verzeichnis direkt übergeordnete Verzeichnis kann auch mit dem Symbol .. (Punkt-Punkt") angegeben werden. Im folgenden Beispiel wechseln Sie aus dem Verzeichnis /home/user1 in das darüberliegende Verzeichnis /home:

$ pwd

/home/user1

$ cd ..

$ pwd

/home

Nehmen wir an, Ihr Home-Verzeichnis heißt /home/user1, und Sie möchten auf Dateien im Verzeichnis /home/user2 zugreifen. Um in dieses Verzeichnis zu wechseln, geben Sie einfach folgendes ein (den Befehl pwd können Sie auch weglassen, er soll nur zeigen, wo Sie sich vor und nach der Eingabe von cd ../user2 befinden):

$ pwd

/home/user1

$ cd ../user2

$ pwd

/home/user2

Bei dieser Methode brauchen Sie also nicht den gesamten Pfadnamen (/home/user2) einzugebenVerzeichnisse:Arbeitsverzeichnis drucken.

3.4.5 Verzeichnisse anlegen (mkdir)

Um ein neues Verzeichnis anzulegen, geben Sie den Befehl mkdir und den gewünschten Verzeichnisnamen ein:

$ mkdir obst

$ cd obst

$ mkdir aprikose

$ cd aprikose

$ pwd

/home/user2/obst/aprikose

3.4.6 Relative Pfadnamen

Der vollständige Pfadname eines Verzeichnisses oder einer Datei beschreibt die gesamte Verzeichnisstruktur zwischen diesem Verzeichnis oder dieser Datei und dem Root-Verzeichnis (/). Häufig genügt es jedoch, den Pfadnamen mit dem aktuellen Verzeichnis beginnen zu lassen. Ein solcher Pfadname wird als relativer Pfadname bezeichnet, weil er den Standort des Verzeichnisses (oder der Datei) relativ zum Arbeitsverzeichnis angibt.

Wenn Sie in ein Unterverzeichnis wechseln wollen, brauchen Sie nicht den vollständigen Pfadnamen, sondern nur den Verzeichnisnamen anzugeben. Im vorigen Beispiel wurde in dem Befehl cd obst der relative Pfadname des Verzeichnisses obst verwendet. Der vollständige Pfadname würde dagegen /home/user2/obst lauten.

Legen Sie in Ihrem Home-Verzeichnis weitere Verzeichnisse und Unterverzeichnisse an, und bewegen Sie sich mit Hilfe relativer und vollständiger Pfadnamen durch die Verzeichnisstruktur. Überprüfen Sie dabei jedesmal Ihren aktuellen Standort mit dem Befehl pwd.

3.4.7 Verzeichnisse übertragen und umbenennen (mv)

Um ein Verzeichnis umzubenennen, übertragen" Sie es mit dem Befehl mv in einen anderen Namen:

$ pwd

/home/user2/obst

$ ls

aprikose

$ mv aprikose mango

$ ls

mango

Mit diesem Befehl können Sie ein Verzeichnis auch in ein anderes Verzeichnis übertragen:

$ pwd

/home/user2/obst

$ ls

mango

$ cd ..

$ mkdir obst2

$ cd obst

$ mv mango ../obst2

$ ls ../obst2

mango

In diesem Beispiel erstellen Sie ein neues Verzeichnis namens obst2 und übertragen das Unterverzeichnis mango mit mv aus dem Verzeichnis obst in das neue Verzeichnis.

3.4.8 Verzeichnisse kopieren (cp -r)

Mit dem Befehl cp -r kopieren Sie ein Verzeichnis und die darin enthaltenen Dateien:

$ cp -r obst obst3

$

In diesem Beispiel kopieren Sie alle Dateien und Unterverzeichnisse im Verzeichnis obst in ein neues Verzeichnis namens obst3. Die Option -r gibt an, daß es sich um eine rekursive Kopie handelt. Wenn Sie versuchen, ein Verzeichnis ohne diese Option zu kopieren, erhalten Sie eine Fehlermeldung.

3.4.9 Verzeichnisse löschen (rmdir)

Um ein leeres Verzeichnis zu löschen, geben Sie den Befehl rmdir und den Verzeichnisnamen ein:

$ rmdir obst3

$ 

Enthält das Verzeichnis noch Dateien oder Unterverzeichnisse, wird es nicht gelöscht.

Wenn Sie ein Verzeichnis mit seinem gesamten Inhalt löschen wollen, geben Sie den Befehl rm mit der Option -r (für rekursiv) ein. Zum Beispiel:

$ rm -r obst3

$


Achtung - Achtung -

GraphicVerzeichnisse, die Sie mit dem Befehl rmdir löschen, und mit rm -r gelöschte Verzeichnisinhalte können nicht wiederhergestellt werden.


3.5 Zwei Dateien vergleichen (diff)

Dateien werden häufig von mehreren Benutzern kopiert und dann individuell bearbeitet. Mit dem Befehl diff können Sie feststellen, ob und wie sich zwei Versionen einer ASCII-Textdatei unterscheiden:

$ diff linkedatei rechtedatei

Daraufhin werden nacheinander alle Zeilen in linkedatei und rechtedatei miteinander verglichen. Stellt das System fest, das sich ein oder mehrere Zeilenpaare unterscheiden, prüft es, ob Teile der Zeile hinzugefügt, gelöscht oder verändert wurden und welche Zeilen davon betroffen sind. Ausgegeben werden die Nummer(n) der entsprechenden Zeile(n) in beiden Dateien und der differierende Text.

Wurde Text hinzugefügt, zeigt diff eine Zeile in folgendem Format an:

l[,l] a r[,r]

l steht für eine Zeilennummer in linkedatei und r für eine Zeilennummer in rechtedatei.

Wurde Text gelöscht, zeigt diff statt dem a ein d an. Beruht der Unterschied auf einer Änderung, wird ein c angezeigt.

Der Text aus beiden Dateien folgt unmittelbar auf die Zeilennummer. Der Text aus linkedatei ist durch das Zeichen < und der Text aus rechtedatei durch das Zeichen > gekennzeichnet.

Im nächsten Beispiel wird der Inhalt zweier Dateien zunächst angezeigt und danach mit diff verglichen:

$ cat termine.7.15

Woche vom 7/15



Tag:  Zeit:        Termin:               Kommentar:



D     10:00        Hardware (Bspr.)      alle zwei Wochen

M     1:30         Software (Bspr.)

D     3:00         Doku-Meeting

F     1:00         Personalgespräch

$ cat termine.7.22

Woche von 7/22



Tag:  Zeit:        Terminliste:          Kommentar:



M     8:30         Mitarbeiter-Bespr.    ganztägig

D     10:00        Hardware (Bspr.)      alle zwei Wochen

M     1:30         Software (Bspr.)

D     3:00         Doku-Meeting

$ diff termine.7.15 termine.7.22

1c1

< Woche von 7/15

---

> Woche von 7/22

4a5

> M     8:30         Mitarbeiter-Bespr.   ganztägig

8d8

< F     1:00         Personalgespräch

Sind die beiden Dateien identisch, werden keine Daten ausgegeben.

Der Befehl diff(1) kann mit zahlreichen Optionen eingegeben werden. Näheres dazu finden Sie in den man Pages(1): User Commands.

3.5.1 Drei Dateien vergleichen (diff3)

Wenn Sie drei Versionen einer Datei gleichzeitig vergleichen möchten, verwenden Sie den Befehl diff3:

$ diff3 datei1 datei2 datei3

diff3 vergleicht die Versionen und zeigt differierenden Text mit folgenden Symbolen an:

==== Abweichungen in allen Dateien

====1 Abweichungen in datei1

====2 Abweichungen in datei 2

====3 Abweichungen in datei 3

3.5.2 Große Dateien vergleichen (bdiff)

Wenn die zu vergleichenden Dateien sehr umfangreich sind, verwenden Sie statt diff den Befehl bdiff. Die Eingabesyntax ist gleich:

$ bdiff linkedatei rechtedatei

bdiff sollte verwendet werden, wenn die Dateien mehr als etwa 3500 Zeilen Text enthalten.

3.6 Dateien suchen (find)

Mit dem Befehl find können Sie in einem Verzeichnis und allen darin enthaltenen Unterverzeichnissen nach Dateien suchen, die bestimmte Kriterien erfüllen. Das könnten beispielsweise Dateien sein, deren Namen eine bestimmte Zeichenfolge enthalten oder die innerhalb eines bestimmten Zeitraums bearbeitet wurden.

Im Gegensatz zu den meisten anderen Befehlen muß bei find der Verzeichnisname vor den Befehlsoptionen stehen:

$ find verzeichnis optionen

verzeichnis ist der Name des Verzeichnisses, in dem gesucht werden soll. optionen wird durch eine oder mehrere Befehlsoptionen ersetzt, die bei diesem Befehl ausnahmsweise mehrere Zeichen lang sind.

Jede Option beschreibt ein Auswahlkriterium. Damit eine Datei in die Liste der gefundenen Dateien aufgenommen wird, muß sie alle Kriterien erfüllen. Je mehr Kriterien Sie also angeben, desto enger wird das Feld der Dateien, auf die Ihre Beschreibung zutrifft. Mit der Option -print legen Sie fest, daß die Ergebnisse auf dem Bildschirm angezeigt werden sollen. (Dies muß explizit angegeben werden, weil Sie mit find auch andere Befehle ausführen lassen können und die Ausgabe in diesem Fall häufig überflüssig ist.)

Mit der Option -name dateiname suchen Sie nach allen Dateien mit der Zeichenfolge dateiname als letztem Element im Pfadnamen. Das letzte Element im Pfadnamen der Datei /usr/lib/calendar ist beispielsweise calendar. Dieser Teil des Pfadnamens wird auch als Basisname bezeichnet.

Im folgenden Beispiel zeigen Sie alle Dateien und Verzeichnisse im aktuellen Verzeichnis an, deren Namen mit dem Buchstaben s" enden:

$ find . -name '*s' -print

./programs

./programs/graphics

./programs/graphics/gks

./src/gks

$

Wenn Sie in dateiname ein Metazeichen verwenden, muß die Zeichenfolge in einfache Anführungszeichen gesetzt werden.

Weitere Optionen:

-user benutzer_id

Sucht nach allen Dateien, die einem bestimmten Benutzer gehören. Ersetzen Sie benutzer_id durch den Login-Namen oder die Benutzernummer.

-group gruppe

Sucht nach allen Dateien, die der angegebenen Benutzergruppe gehören.

-m time n

Sucht nach allen Dateien, die innerhalb der letzten n Tage geändert wurden.

-newer ref_datei

Sucht nach allen Dateien, die nach ref_datei geändert wurden.

Wenn Sie die Suchkriterien nach Priorität ordnen wollen, können Sie sie im Format \(optionen \) eingeben. Innerhalb der Klammern können Sie dann die Option -o verwenden. Steht diese Option zwischen zwei Kriterien, werden auch Dateien ausgewählt, die nur eine der beiden Kriterien erfüllen:

$ find . \( -name AAA -o -name BBB \) -print

./AAA

./BBB

Soll nach allen Dateien gesucht werden, die den angegebenen Kriterien nicht entsprechen, stellen Sie den Optionen die Zeichenfolge \! voran:

$ find . \!-name BBB -print

./AAA

Mit folgender Option können Sie außerdem festlegen, daß auf die gefundenen Dateien ein Befehl angewendet werden soll:

-exec befehl '{}' \;

Die in Anführungszeichen stehenden geschweiften Klammern stehen dabei für die von find ausgewählten Dateien.

Mit dieser Methode können Sie beispielsweise Arbeitsdateien, die nur vorübergehend benötigt werden, automatisch löschen lassen. Voraussetzung ist, daß Sie solchen Dateien immer die gleichen Namen zuweisen. Mit dem folgenden Befehl werden beispielsweise alle Dateien ausgewählt und gelöscht, die temp oder dummy heißen:

$ find . \( -name temp -o -name dummy \) -exec rm '{}' \;

Weitere Informationen zu find(1) finden Sie in den man Pages(1): User Commands

3.7 Zugriffsrechte


Hinweis -

Da Sie es bei der täglichen Arbeit häufig mit Zugriffsrechten zu tun haben werden, sollten Sie diesen Abschnitt besonders aufmerksam lesen.


Zugriffsrechte legen fest, wer auf eine Datei oder ein Verzeichnis zugreifen darf und welche Zugriffsarten gestattet sind.

Es gibt drei Arten von Zugriffsrechten:

Zugriffsrechte können an drei Arten von Benutzern vergeben werden:

3.7.1 Zugriffsrechte und Status anzeigen (ls -l)

Daß Sie mit dem Befehl ls Dateinamen auflisten können, wissen Sie bereits. Wenn Sie den Befehl mit der Option -l eingeben, werden außer den Dateinamen eine Reihe weiterer Dateiattribute angezeigt. Abbildung 3-2 zeigt ein Beispiel für die Ausgabe des Befehls ls -l:

Abbildung 3-2 Dateiattribute anzeigen

Graphic

Das erste Zeichen gibt den Dateityp an: Ein Bindestrich (-) steht für eine Textdatei und ein d für ein Verzeichnis. Darüber hinaus gibt es weitere Dateitypen, die hier jedoch nicht behandelt werden.

Die folgenden neun Zeichen geben an, welche Zugriffsrechte für die Datei oder das Verzeichnis gelten. Diese Zeichen sind in drei Blöcke zu je drei Zeichen gegliedert, wobei der erste Block für den Eigentümer, der zweite für die Gruppe und der dritte für alle anderen Benutzer gilt. Für die Datei leerdatei gelten beispielsweise die Berechtigungen rw-r--r--, d. h. der Eigentümer der Datei verfügt über Lese- und Schreibberechtigung, während alle anderen Benutzer sie nur lesen, aber nicht verändern dürfen. Der Inhalt des Verzeichnisses obst2 darf nur vom Eigentümer geändert werden, da alle anderen Benutzer lediglich über Lese- und Ausführberechtigung verfügen.

Außer den Zugriffsrechten werden folgende Informationen angezeigt:

Wechseln Sie mit cd in Ihr Home-Verzeichnis, und probieren Sie den Befehl ls -l aus. Auf Ihrem System werden natürlich andere Daten angezeigt als in unserem Beispiel.

Geben Sie den Befehl danach in folgendem Format ein:

$ ls -l verzeichnisname

Ersetzen Sie verzeichnisname dabei durch den Namen eines Verzeichnisses in Ihrem Dateisystem. Der Befehl ls -l zeigt daraufhin die Attribute aller Dateien und (falls vorhanden) Unterverzeichnisse in diesem Verzeichnis an.

3.7.2 Versteckte Dateien anzeigen (ls -a)

Versteckte Dateien können mit dem Befehl ls ohne Optionen nicht angezeigt werden. Diese Dateien heißen auch Punktdateien, weil der Dateiname mit einem Punkt beginnt. Beispiele für Punktdateien sind .cshrc, .login und .profile. Um neben den normalen Dateien auch eventuell vorhandene Punktdateien mit aufzulisten, geben Sie ls mit der Option -a ein:

$ ls -a

.

..

.cshrc

.login

.profile

leerdatei

Die Punktdateien stehen vor den normalen Dateien. Die Dateien . und .. repräsentieren das aktuelle Verzeichnis und das übergeordnete Verzeichnis.

Punktdateien werden im allgemeinen nur vom System verwendet und vom Benutzer nicht verändert. Es gibt jedoch Ausnahmen, von denen einige in späteren Kapiteln behandelt werden.

3.7.3 Zugriffsrechte ändern (chmod)

Mit dem Befehl chmod ändern Sie die Zugriffsrechte für eine Datei oder ein Verzeichnis. Dies ist allerdings nur möglich, wenn Sie Eigentümer der Datei sind oder sich als Superuser angemeldet haben. Der Befehl chmod wird in folgendem Format eingegeben:

chmod  berechtigungen name

Dabei steht berechtigungen für die geänderten Zugriffsrechte und name für den Namen der Datei oder des Verzeichnisses.

Zugriffsrechte können auf unterschiedliche Weise definiert werden. Am einfachsten geht es in folgender Form:

  1. Verwenden Sie einen oder mehrere der folgenden Buchstaben, um anzugeben, für welche Benutzer die Zugriffsrechte gelten sollen:

    • u (für den Eigentümer)

  2. g (für die Gruppe)

  3. o (für alle anderen Benutzer)

  4. a (für alle drei oben genannten Kategorien)

  5. Geben Sie an, ob Berechtigungen hinzugefügt (+) oder entfernt (-) werden.

  6. Verwenden Sie einen oder mehrere der folgenden Buchstaben, um die neuen Zugriffsrechte festzulegen:

    • r (für Leseberechtigung)

  7. w (für Schreibberechtigung)

  8. x (für Ausführberechtigung)

Im folgenden Beispiel erteilt der Eigentümer des Verzeichnisses mango allen Mitgliedern seiner Benutzergruppe Schreibberechtigung für das Verzeichnis (berechtigungen wird also durch g+w und name durch mango ersetzt):

$ ls -l mango

drwxr-xr-x  3 user2           1024 Feb 10 11:15 mango

$ chmod g+w mango

$ ls -l mango

drwxrwxr-x  3 user2           1024 Feb 10 11:15 mango

$

Statt des Bindestrichs, der für keine Schreibberechtigung" steht, erscheint in den Zugriffsrechten für die Gruppe nun ein w.

Um Lese- und Ausführzugriffe auf das Verzeichnis von Benutzern außerhalb der Gruppe auszuschließen, würden Sie folgendes eingeben:

$ ls -l mango

drwxrwxr-x  3 user2           1024 Feb 10 11:15 mango

$ chmod o-rx mango

$ ls -l mango

drwxrwx---  3 user2           1024 Feb 10 11:15 mango

$

In den Zugriffsrechten für andere Benutzer werden nun statt dem r (für Leseberechtigung) und dem x (für Ausführberechtigung) zwei Bindestriche angezeigt.

Wenn Sie eine neue Datei oder ein neues Verzeichnis anlegen, vergibt das System automatisch Zugriffsrechte.

Für neue Dateien gelten normalerweise folgende Zugriffsrechte:

-rw-r--r--

Bei neuen Verzeichnissen werden folgende Zugriffsrechte vergeben:

drwxr-xr-x

Damit eine neue Datei namens pfirsich von ihrem Eigentümer (user2) ausgeführt werden kann, müßte dieser (oder der Superuser) also zunächst folgendes eingeben:

$ ls -l pfirsich

-rw-r--r--  3 user2           1024 Feb 10 12:27 pfirsich

$ chmod u+x pfirsich

$ ls -l pfirsich

-rwxr--r--  3 user2           1024 Feb 10 12:27 pfirsich

$

Mit der Option a können Sie Zugriffsrechte gleichzeitig an alle drei Benutzerkategorien vergeben. Um allen Benutzern Ausführberechtigung für eine neue Datei namens orange zu erteilen, würden Sie also folgendes eingeben:

$ ls -l orange

-rw-r--r--  3 user2           1024 Feb 10 11:31 orange

$ chmod a+x orange

$ ls -l orange

-rwxr-xr-x  3 user2           1024 Feb 10 11:31 orange

$

Nach Ausführung des Befehls chmod erscheint in allen drei Blöcken das Zeichen x.

Zugriffsrechte können mit Hilfe des Metazeichens * auch für mehrere Dateien oder Verzeichnisse gleichzeitig vergeben werden. Im folgenden Beispiel werden die Zugriffsrechte für die Dateien im Verzeichnis obst so geändert, daß nur noch der Eigentümer des Verzeichnisses über Schreibberechtigung verfügt:

$ pwd

/home/user2/obst

$ ls -l

-rwxrwxrwx  3 user2          21032 Feb 12 10:31 kirsche

-rwxrwxrwx  2 user2             68 Feb 10 11:09 erdbeere

-rwxrwxrwx  3 user2          12675 Feb 08 09:31 orange

-rwxrwxrwx  1 user2           1024 Feb 14 16:38 zitrone

$ chmod go-w *

$ ls -l

-rwxr-xr-x  3 user2          21032 Feb 12 10:31 kirsche

-rwxr-xr-x  2 user2             68 Feb 10 11:09 erdbeere

-rwxr-xr-x  3 user2          12675 Feb 08 09:31 orange

-rwxr-xr-x  1 user2           1024 Feb 14 16:38 zitrone

$

Da der Befehl chmod in der oben gezeigten Form immer auf die Dateien im aktuellen Verzeichnis angewendet wird, sollten Sie vorher mit pwd prüfen, ob Sie sich im richtigen Verzeichnis befinden.

3.7.4 Absolute Zugriffsrechte vergeben

In den bisherigen Beispielen wurden Zugriffsrechte relativ zu den aktuell geltenden Einstellungen geändert. Sie können Zugriffsrechte mit chmod jedoch auch ändern, ohne die aktuellen Einstellungen zu kennen. Bei der Vergabe solcher absoluter Zugriffsrechte werden Benutzerkategorie und Zugriffsberechtigung nicht durch Buchstabenkürzel, sondern durch einen Zahlencode angegeben.

Die Befehlssyntax lautet in diesem Fall:

chmod numcode name

numcode steht für den Berechtigungscode und name für den Namen der Datei oder des Verzeichnisses, deren/dessen Zugriffsrechte geändert werden sollen.

Der Berechtigungscode besteht aus je einer Zahl für die drei Benutzerkategorien. Mit dem folgenden Befehl erhalten der Eigentümer des Verzeichnisses orange und seine Gruppe Lese-, Schreib- und Ausführberechtigung, alle anderen Benutzer dagegen nur Ausführberechtigung:

$ chmod 771 orange

Tabelle 3-1 zeigt, aus welchen Elementen sich der Berechtigungscode 771 zusammensetzt.

Tabelle 3-1 Zugriffsrechte für orange

Berechtigung 

Eigentümer 

Gruppe 

Andere 

Lesen 

Schreiben 

Ausführen 

Gesamt 

Jede Spalte in Tabelle 3-1repräsentiert eine Benutzerkategorie. Jeder Berechtigungsart ist ein bestimmter Wert zugeordnet: 4 für Leseberechtigung, 2 für Schreibberechtigung und 1 für Ausführberechtigung. Die Summe der ersten, zweiten und dritten Spalte entspricht der ersten, zweiten und dritten Ziffer des Berechtigungscodes.

Hier ein weiteres Beispiel für die Vergabe von absoluten Zugriffsrechten, bei dem die Ergebnisse mit dem Befehl ls -l geprüft werden:

$ ls -l zitrone

-rw-r--r--  3 user2           1024 Feb 10 11:46 zitrone

$ chmod 755 zitrone

$ ls -l zitrone

-rwxr-xr-x  3 user2           1024 Feb 10 11:48 zitrone

$

Für die Datei zitrone gelten also folgende Zugriffsrechte: der Eigentümer kann sie lesen, schreiben und ausführen, während die Gruppe und alle anderen Benutzer nur Lese- und Ausführberechtigung haben. Tabelle 3-2 zeigt, wie der Berechtigungscode ermittelt wird.

Tabelle 3-2 Zugriffsrechte für zitrone

Berechtigung 

Eigentümer 

Gruppe 

Andere 

Lesen 

Schreiben 

Ausführen 

Gesamt 

Um als Eigentümer der Datei kirsche sich selbst, der Gruppe und allen anderen Benutzern Lese-, Schreib- und Ausführberechtigung zu erteilen, würden Sie also folgendes eingeben:

$ ls -l kirsche

-rw-r--r--  3 user2           1024 Feb 10 11:51 kirsche

$ chmod 777 kirsche

$ ls -l kirsche

-rwxrwxrwx  3 user2           1024 Feb 10 11:53 kirsche

$

Tabelle 3-3 zeigt, wie dieser Code zustandekommt:

Tabelle 3-3 Zugriffsrechte für kirsche

Berechtigung 

Eigentümer 

Gruppe 

Andere 

Lesen 

Schreiben 

Ausführen 

Gesamt 

Der Code 777 entspricht also der maximalen Anzahl Berechtigungen, die Sie für eine Datei oder ein Verzeichnis vergeben können.

Auch bei dieser Methode können Sie mit dem Metazeichen * Zugriffsrechte für alle Dateien des aktuellen Verzeichnisses definieren. Im folgenden Beispiel vergibt der Eigentümer des Verzeichnisses obst an sich selbst Lese-, Schreib- und Ausführberechtigung für alle darin enthaltenen Dateien, seine Gruppe erhält Lese- und Ausführberechtigung und alle anderen Benutzer lediglich Ausführberechtigung:

$ pwd

/home/user2/obst

$ ls -l

-rwxrwxrwx  3 user2          21032 Feb 12 10:31 kirsche

-rwxrwxrwx  2 user2             68 Feb 10 11:09 erdbeere

-rwxrwxrwx  3 user2          12675 Feb 08 09:31 orange

-rwxrwxrwx  1 user2           1024 Feb 14 16:38 zitrone

$ chmod 751 *

$ ls -l

-rwxr-x--x  3 user2          21032 Feb 12 10:31 kirsche

-rwxr-x--x  2 user2             68 Feb 10 11:09 erdbeere

-rwxr-x--x  3 user2          12675 Feb 08 09:31 orange

-rwxr-x--x  1 user2           1024 Feb 14 16:38 zitrone

$

Mit dem Befehl pwd wird zu Beginn geprüft, ob obst tatsächlich aktuelles Verzeichnis ist. Der Befehl ls -l wird hier, wie auch in den vorhergehenden Beispielen, nur verwendet, um das Ergebnis der Änderung zu verdeutlichen.

Weitere Informationen zu chmod(1) siehe man Pages(1): User Commands.