Copyright © 1995 by O'Reilly/International Thomson Verlag

Bitte denken Sie daran: Sie dürfen zwar die Online-Version ausdrucken, aber diesen Druck nicht fotokopieren oder verkaufen.

Wünschen Sie mehr Informationen zu der gedruckten Version des Buches "Linux - Wegweiser zur Installation & Konfiguration", dann klicken Sie hier.


Kapitel 3

Eigner, Gruppe und Berechtigungen ändern

Wir haben bereits darauf hingewiesen, daß Sie in der Regel mit den Sicherheitsvorkehrungen auskommen, die das System anbietet. Allerdings gibt es auch Ausnahmen, insbesondere für Systemverwalter. Ein einfaches Beispiel: Nehmen wir an, daß Sie für einen neuen Benutzer unterhalb von /home ein Verzeichnis anlegen. Sie müssen diese Aufgabe als root erledigen, aber später den Benutzer zum Eigner des Verzeichnisses machen. Wenn Sie das nicht tun, wird der Benutzer nicht in diesem Verzeichnis arbeiten können! (Glücklicherweise sorgt der Befehl adduser , den wir im Abschnitt » Die Accounts einrichten « in Kapitel 4 besprechen, automatisch für die richtige Eignerschaft.)

In ähnlicher Weise haben bestimmte Utilities wie UUCP und News ihre eigenen Benutzer. Niemand wird jemals als uucp oder news einloggen, aber diese Benutzer und Gruppen müssen auf dem System vorhanden sein, damit die Utilities sicher funktionieren. Im allgemeinen besteht der letzte Schritt bei der Installation darin, daß man Eigner, Gruppe und Berechtigungen so anpaßt, wie es die Dokumentation vorgibt.

Mit dem Befehl chown ändern Sie die Eignerschaft einer Datei und mit chgrp die Gruppe. Nachdem Sie also z.B. die Software sampsoft installiert haben, können Sie mit folgenden Befehlen sowohl den Eigner als auch die Gruppe auf bin ändern:

# chown bin sampsoft
# chgrp bin sampsoft

Diese Befehle funktionieren, weil Sie die Software als root installiert haben; als solcher können Sie chown und chgrp jederzeit auf jede Datei anwenden.

Wenn Sie allerdings nicht root sind, können Sie nichts ausrichten: Sie können weder den Eigner noch die Gruppe ändern. Sie könnten auch keine Berechtigungen vergeben, die Dateien in ein anderes Verzeichnis kopieren oder irgend etwas anderes tun.

Die Syntax bei der Änderung der Berechtigungen ist komplizierter. Man nennt die Berechtigungen auch den »Modus« einer Datei, und diesen ändern Sie mit dem Befehl chmod . Lassen Sie uns diesen Befehl anhand eines einfachen Beispiels erkunden -- nehmen wir an, daß Sie in Perl oder Tcl ein nettes kleines Programm namens header geschrieben haben, das Sie anschließend ausführen wollen.

$ chmod +x header

Das Pluszeichen bedeutet: »füge eine Berechtigung hinzu«, und das x zeigt an, welche Berechtigung gemeint ist.

Wenn Sie jemandem die Ausführberechtigung entziehen möchten, setzen Sie statt des Plus- ein Minuszeichen ein.

$ chmod -x header

Der eben gezeigte Befehl vergibt die Berechtigung auf allen Ebenen -- an den Eigner, die Gruppe und Sonstige. Lassen Sie uns annehmen, daß Sie insgeheim ein Sammler von Software sind, der seine Programme für sich behalten möchte. (Nein, das wäre zu hart; wir wollen statt dessen annehmen, daß Ihr Skript noch nicht einwandfrei funktioniert und daß Sie andere Leute vor Schaden bewahren möchten, bis das Skript fehlerfrei ist.) Mit folgendem Befehl können Sie die Ausführberechtigung nur für sich selbst vergeben:

$ chmod u+x header
Alle Angaben vor dem Pluszeichen bezeichnen die Benutzerebene, auf der Sie Berechtigungen vergeben, die Angaben hinter dem Pluszeichen geben die Art der Berechtigung an. Mit g vergeben Sie Rechte an die Gruppe und mit o an Sonstige. Wenn Sie die Ausführberechtigung an sich selbst und die Gruppe erteilen wollen, geben Sie ein:
$ chmod ug+x header

Sie können auch mehrere Berechtigungen gleichzeitig erteilen:

$ chmod ug+rwx header

Es gibt noch die eine oder andere Abkürzung, die Sie in der Man-Page zu chmod nachlesen können, falls Sie jemanden beeindrucken möchten, der Ihnen über die Schulter sieht. Allerdings bleibt die Funktionalität des Befehls auf das beschränkt, was wir hier vorgestellt haben.

Obwohl die Syntax zur Angabe des Dateimodus ziemlich obskur ist, gibt es noch eine andere, kompliziertere Syntax. Aus verschiedenen Gründen müssen wir sie hier trotzdem beschreiben. Erstens gibt es Situationen, in denen die gerade vorgestellte Syntax, genannt »symbolischer Modus«, nicht ausreicht. Zweitens benutzen die Leute oft die andere Syntax, genannt »absoluter Modus«, in ihrer Dokumentation. Außerdem könnte es ja passieren, daß Sie die absolute Schreibweise einfach bequemer finden.

Um den absoluten Modus zu verstehen, müssen Sie sich auf die Bitebene und die oktale Schreibweise einlassen. Aber keine Bange -- so schwierig wird das nicht. Der typische Modus wird durch drei Zeichen dargestellt, die den drei Benutzerebenen entsprechen (Eigner, Gruppe und Sonstige). Diese Ebenen sind in Abbildung 3--3. dargestellt. Innerhalb jeder Ebene bezeichnen drei Bits die Berechtigung zum Lesen, Schreiben und Ausführen.

Abbildung 3-3. Die Bits im absoluten Modus

Nehmen wir an, daß Sie sich selbst die Leseberechtigung und niemandem sonst irgendwelche Rechte erteilen wollen. Sie möchten also nur das Bit ansprechen, das mit der Nummer 400 bezeichnet ist. Der chmod -Befehl würde dann so aussehen:

$ chmod 400 header 

Um jedermann die Leseberechtigung zu geben, wählen Sie das entsprechende Bit für alle Benutzerebenen: 400 für den Eigner, 40 für die Gruppe und 4 für Sonstige. Der Befehl lautet dann:

$ chmod 444 header

Das entspricht dem Modus +r -- abgesehen davon, daß Sie mit diesem Befehl gleichzeitig alle Berechtigungen zum Schreiben und Ausführen aufheben. (Um es genau zu sagen: Es entspricht dem Modus =r, den wir weiter oben nicht erwähnt haben. Das Gleichheitszeichen bedeutet: »Vergib diese Berechtigung und hebe alle anderen Rechte auf«.)

Wenn Sie allen Benutzern die Lese- und Ausführberechtigung zuweisen wollen, müssen Sie die Lese- und Ausführbits addieren. Ein Beispiel: 400 plus 100 ist 500. Der komplette Befehl lautet also:

$ chmod 555 header

und das entspricht dem Modus =rx. Wenn jemand vollen Zugriff erhalten soll, steht an der entsprechenden Stelle eine 7 -- nämlich 4 + 2 + 1.

Einen Trick wollen wir Ihnen noch verraten, nämlich wie Sie den Modus voreinstellen können, der jeder Datei zugeordnet wird, die Sie erzeugen (mit einem Texteditor, der Umleitung > usw.). Führen Sie entweder den Befehl umask aus oder fügen Sie ihn in die Startdatei Ihrer Shell ein. Diese Datei heißt wahrscheinlich .bashrc , .cshrc oder so ähnlich -- je nachdem, mit welcher Shell Sie arbeiten. (Wir werden die Shells im nächsten Abschnitt besprechen.)

Der Befehl umask bekommt einen Parameter mit auf den Weg, so wie chmod den absoluten Modus mitbekommt. Allerdings ist die Bedeutung der Bits gerade umgekehrt. Sie müssen für Eigner, Gruppe und Sonstige festlegen, welche Berechtigungen Sie vergeben wollen und dann jede einzelne Ziffer von 7 subtrahieren. Das Ergebnis ist eine dreistellige Maske.

Nehmen wir an, daß Sie sich selbst alle Rechte zugestehen wollen (7), die Gruppe soll Lese- und Ausführberechtigung haben (5), und Sonstige erhalten gar keinen Zugriff (0). Ziehen Sie diese Werte von 7 ab, und Sie erhalten 0 für sich selbst, 2 für die Gruppe und 7 für Sonstige. Der Befehl in Ihrer Startdatei muß also lauten:

umask 027

Eine merkwürdige Vorgehensweise, aber sie funktioniert. Der Befehl chmod berücksichtigt die Maske, wenn er Ihren Modus interpretiert. Ein Beispiel: Wenn Sie für eine Datei den Modus +x vergeben, wird chmod Ihnen und der Gruppe die Ausführberechtigung zuteilen, aber Sonstige werden davon ausgeschlossen, weil die Maske für diese Benutzer keine Ausführberechtigung erlaubt.


Inhaltsverzeichnis Vorherige Abschnitt Nächste Abschnitt