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.
Dateien sind die wichtigsten Datenelemente unter SunOS . Fast jede Datenmenge wird als Datei behandelt:
Dokumente - Dazu gehören Textdateien wie z. B. Briefe oder Berichte, Quellcodes von Programmen und alles, was sonst noch geschrieben und gespeichert wird.
Befehle - Die meisten Befehle sind ausführbare Dateien, d. h. sie lösen eine bestimmte Aktion aus. Der Befehl date, den Sie im vorigen Kapitel kennengelernt haben, führt beispielsweise ein Programm aus, das die aktuelle Uhrzeit und das aktuelle Datum anzeigt.
Geräte - Auch Peripheriegeräte wie Terminals, Drucker und Laufwerke werden vom Betriebssystem wie Dateien behandelt.
Verzeichnisse - Ein Verzeichnis ist eine Datei, die weitere Dateien enthält.
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.
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.
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.
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 $ |
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.
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.
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.
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 |
Eine 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.
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.
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 |
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.
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.
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.
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 |
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.
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.
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.
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 |
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.
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.
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.
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 $ |
Verzeichnisse, die Sie mit dem Befehl rmdir löschen, und mit rm -r gelöschte Verzeichnisinhalte können nicht wiederhergestellt werden.
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:
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.
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
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.
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:
Sucht nach allen Dateien, die einem bestimmten Benutzer gehören. Ersetzen Sie benutzer_id durch den Login-Namen oder die Benutzernummer.
Sucht nach allen Dateien, die der angegebenen Benutzergruppe gehören.
Sucht nach allen Dateien, die innerhalb der letzten n Tage geändert wurden.
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
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:
r - Leseberechtigung. Damit Sie eine Datei öffnen oder kopieren bzw. den Inhalt eines Verzeichnisses anzeigen können, müssen Sie für die Datei oder das Verzeichnis leseberechtigt sein.
w - Schreibberechtigung. Damit Sie eine Datei ändern, löschen oder umbenennen bzw. den Inhalt eines Verzeichnisses durch Hinzufügen oder Löschen von Dateien ändern können, müssen Sie für die Datei oder das Verzeichnis schreibberechtigt sein.
x - Ausführberechtigung. Damit Sie auf eine ausführbare Datei bzw. die Unterverzeichnisse eines Verzeichnisses zugreifen können, müssen Sie für die Datei oder das Verzeichnis ausführberechtigt sein.
Zugriffsrechte können an drei Arten von Benutzern vergeben werden:
Gruppe - Alle Benutzer, die der gleichen Benutzergruppe angehören wie der Eigentümer. Benutzergruppen werden vom Systemverwalter eingerichtet und verwaltet.
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:
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:
Anzahl der Verweise (Links) auf die Datei oder das Verzeichnis
Name des Eigentümers (in diesem Fall user2)
Datum und Zeitpunkt der letzten Änderung
Datei- oder Verzeichnisname
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.
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.
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:
Verwenden Sie einen oder mehrere der folgenden Buchstaben, um anzugeben, für welche Benutzer die Zugriffsrechte gelten sollen:
u (für den Eigentümer)
g (für die Gruppe)
o (für alle anderen Benutzer)
a (für alle drei oben genannten Kategorien)
Geben Sie an, ob Berechtigungen hinzugefügt (+) oder entfernt (-) werden.
Verwenden Sie einen oder mehrere der folgenden Buchstaben, um die neuen Zugriffsrechte festzulegen:
r (für Leseberechtigung)
w (für Schreibberechtigung)
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:
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.
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 |
4 |
4 |
0 |
Schreiben |
2 |
2 |
0 |
Ausführen |
1 |
1 |
1 |
Gesamt |
7 |
7 |
1 |
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 |
4 |
4 |
4 |
Schreiben |
2 |
0 |
0 |
Ausführen |
1 |
1 |
1 |
Gesamt |
7 |
5 |
5 |
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 |
4 |
4 |
4 |
Schreiben |
2 |
2 |
2 |
Ausführen |
1 |
1 |
1 |
Gesamt |
7 |
7 |
7 |
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:
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.