UNIX Zugriffsrechte aus Benutzersicht

Geändert:14-Sep-2000 00:18:18

download zugriffsrechte.zip (10 Kb)

Inhalt

Wer bin ich?

matthias@oekoalpha /home/matthias> id
uid=1010(matthias) gid=100(tv0_0) groups=251(arcinfo),211(osterau)

Ich bin der Benutzer mit der User ID (UID) 1010. Der Name dieses Benutzers ist matthias.

Ich bin Mitglied in den Benutzergruppen mit den Gruppen IDs (GID) 100 (tv0_0), 251 (arcinfo) und 211 (osterau).

 

[ top ]

 

Wem gehoert eine Datei?

matthias@oekoalpha /home/matthias> ls -l zusa1.aml
-rw-r--r--   1 matthias tv0_0       2037 Mar 21 15:49 zusa1.aml

Diese Datei gehoert dem Benutzer mit dem Namen matthias und sie gehoert zu der Gruppe tv0_0. Das kann man auch numerisch anzeigen lassen:

matthias@oekoalpha /home/matthias> ls -ln zusa1.aml
-rw-r--r--   1 1010     100         2037 Mar 21 15:49 zusa1.aml
Mode           UID      GID         Laenge Datum      Name
               Owner    Group              Aenderung

 

[ top ]

 

Was bedeuten die Zugriffsrechte?

-       Normale Datei, Mode hat Dateibedeutung
d       Verzeichnis, Mode hat Verzeichnisbedeutung
l       Querverweis (link) auf eine andere Datei, Mode ist bedeutungslos

UNIX kennt 3 Zugriffsrechte mit den Buchstaben

        Dateibedeutung                          Verzeichnisbedeutung
==========================================================================
r       Rechte, den Inhalt der Datei zu lesen   Recht, die Namen im Verz.
                                                zu sehen.

w       Recht, den Inhalt der Datei zu aendern  Recht, Eintraege im Verz.
        oder die Laenge der Datei zu aendern    zu aendern, also zu erzeugen
                                                oder zu loeschen

x       Recht, die Datei auszufuehren           Recht, Dateien im
                                                Verzeichnis zu verwenden
                                                Recht, das Verzeichnis zu
                                                betreten.

 

[ top ]

 

Welche Rechtegruppe trifft auf mich zu?

Jede Datei hat drei Rechtegruppen rwx, also rwxrwxrwx.
Die erste Rechtegruppe beschreibt die Rechte des Dateieigentuemers (owner).
Die zweite Rechtegruppe beschreibt die Rechte der Dateigruppe (group).
Die dritte Rechtegruppe beschreibt die Rechte fuer den Rest der Welt.

Beispiel: Der User

michaelh@oekoalpha /home/matthias> id
uid=2523(michaelh) gid=250(tv1_5) groups=251(arcinfo),211(osterau)

michaelh, Mitglied der Gruppen tv1_5, arcinfo und osterau, greift auf das Verzeichnis /home/matthias zu:

michaelh@oekoalpha /home/michaelh> cd /home/matthias
michaelh@oekoalpha /home/matthias> ls -l
.: Permission denied

Zwei Beobachtungen:

  1. michaelh durfte das Verzeichnis betreten.
  2. Er durfte den Inhalt des Verzeichnisses nicht ansehen.

 

 

[ top ]

 

Warum?

michaelh@oekoalpha /home/matthias> id
uid=2523(michaelh) gid=250(tv1_5) groups=251(arcinfo),211(osterau)
michaelh@oekoalpha /home/matthias> ls -ld .
drwx--x--x  32 matthias tv0_0       2048 Apr 12 15:32 .

UNIX vergleicht: Stimmen UID des Anwenders und UID der Datei ueberein? Wenn ja, gilt die erste Rechtegruppe rwx.

Wenn nicht, vergleicht UNIX die GIDs aller Gruppen, in denen der Anwender Mitglied ist mit der GID der Datei. Stimmt eine GID mit der GID der Datei ueberein, gelten die Rechte der zweiten Rechtegruppe rwx.

Ansonsten gelten die Rechte der dritten Rechtegruppe rwx.

Erklaerung des Beispiels oben:

Der Zugreifer ist michaelh hat eine ungleiche UID wie das Verzeichnis, auf das zugegriffen wird. Daher gelten nicht die Rechte der ersten Gruppe (michaelh <> matthias am Verzeichnis)

Ausserdem ist michaelh in den Gruppen tv1_5, arcinfo und osterau. Das Verzeichnis ist in der Gruppe tv0_0. Daher gelten auch nicht die Rechte der zweiten Rechtegruppe (tv1_5, arcinfo und osterau alle ungleich tv0_0).

Damit gelten fuer michaelh die Rechte der dritten Rechtegruppe. Also haelt michaelh am Verzeichnis /home/matthias genau die Rechte --x (nur das x-Recht).

Wir beobachten:

Das x-Recht erlaubt es michaelh, das Verzeichnis /home/matthias zu betreten.

michaelh@oekoalpha /home/michaelh> cd /home/matthias
michaelh@oekoalpha /home/matthias>

Wir beobachten auch: Ein ls -l scheitert, denn zum Ansehen der Namen im Verzeichnis braeuchte michaelh das r-Recht am Verzeichnis.

michaelh@oekoalpha /home/matthias> ls -l
.: Permission denied

Wenn matthias michaelh das Lesen und Ansehen des Verzeichnisses genau den Mitgliedern der Gruppe osterau erlauben wollte, dann muesste er zwei Dinge tun:

  1. Das Verzeichnis /home/matthias muesste der Gruppe osterau angehoeren. -> siehe Aendern von Dateiattributen weiter unten.
  2. Das Verzeichnis muesste den Mitgliedern der Gruppe das r und das x-Recht geben. -> siehe Aendern von Dateiattributen weiter unten.

 

[ top ]

 

Wem gehoert eine Datei nach dem Anlegen?

Demjenigen, der sie anlegt und der Gruppe des Verzeichnisses, in dem sie angelegt wird.

Beispiel: Ich bin matthias und bin im Verzeichnis osterinfo, das der Gruppe osterau gehoert. Mit dem Kommando

        joe neue_datei

lege ich eine Textdatei an. Wem gehoert die Datei und welcher Gruppe gehoert die Datei?

matthias@oekoalpha /home/matthias/osterinfo> id
uid=1010(matthias) gid=100(tv0_0) groups=251(arcinfo),211(osterau)
matthias@oekoalpha /home/matthias/osterinfo> l
total 1
-rw-r--r--   1 matthias osterau       25 Apr 12 15:32 neue_datei

Die Datei gehoert matthias, weil matthias den joe aufgerufen hat, der die Datei angelegt hat. Die Datei gehoert zu der Gruppe osterau, weil das Verzeichnis osterinfo der Gruppe osterau gehoert.

Mit anderen Worten: Neue Daten gehoeren demjenigen, der sie erzeugt und gehoeren zu dem Projekt/der Arbeitsgruppe, in deren Verzeichnis sie abgelegt werden.

Neue Dateien haben nach dem Anlegen die Rechte rw-r--r--.
Neue Verzeichnisse haben nach dem Anlegen die Rechte rwx-r-xr-x.

Beispiel: michaelh kopiert die Datei /home/matthias/kopiermich nach /tmp/kopiermich.

Zeile  1  michaelh@oekoalpha /home/matthias> ls -ld .
Zeile  2  drwx--x--x  32 matthias tv0_0       2048 Apr 12 15:48 .
Zeile  3  michaelh@oekoalpha /home/matthias> ls -l 
Zeile  4  .: Permission denied
Zeile  5  michaelh@oekoalpha /home/matthias> ls -l kopiermich
Zeile  6  -rw-r--r--   1 matthias tv0_0          0 Apr 12 15:49 kopiermich
Zeile  7  michaelh@oekoalpha /home/matthias> cp kopiermich /tmp
Zeile  8  michaelh@oekoalpha /home/matthias> cd /tmp
Zeile  9  michaelh@oekoalpha /tmp> ls -l kopiermich
Zeile 10  -rw-r--r--   1 michaelh system         0 Apr 12 15:51 kopiermich

michaelh haelt an /home/matthias das x-Recht der 3. Rechtegruppe (Zeile 1 und 2).

Weil man zum Ansehen einer Namensliste eines Verzeichnisses r-Recht benoetigt, michaelh an /home/matthias aber nur x-Recht hat, kann er diese Namensliste nicht bekommen (Zeile 3 und 4).

x-Recht an einem Verzeichnis erlaubt es aber, auf Dateien in einem Verzeichnis zuzugreifen. Wenn man den Namen einer Datei in einem Verzeichnis also ueber dritte Wege bekommen hat, kann man sich die Rechte der Datei ansehen (Zeile 5 und 6) oder auf die Datei zugreifen (Zeile 7).

Die Datei kopiermich gehoert matthias, tv0_0. michaelh haelt an dieser Datei nur das r-Recht der dritten Rechtegruppe (Zeile 6).

Um eine Datei kopieren zu koennen, muss man an der Quelldatei das r-Recht halten und im Zielverzeichnis eine Datei anlegen koennen, d.h. am Zielverzeichnis selbst die Rechte w und x halten.

Der Kopierbefehl gelingt, weil michalh an der Quelldatei kopiermich das r-Recht haelt und im Zielverzeichnis /tmp automatisch w und x-Recht hat (/tmp hat rwxrwxrwx).

Die Zieldatei gehoert nach den Regeln ueber neu angelegte Dateien demjenigen, der sie angelegt hat. Das ist derjenige, der den Kopierbefehl ausgefuehrt hat. Da michaelh die Datei kopiert hat, gehoert sie michaelh. Haette matthias die Datei von sich aus nach /tmp kopiert, wuerde die Kopie matthias gehoeren.

Die Zieldatei /tmp/kopiermich gehoert zu der Gruppe des /tmp-Verzeichnisses.

Sie hat die Rechte rw-r--r--.

michaelh@oekoalpha /tmp> ls -ld .                              
drwxrwxrwt   4 root     system      1024 Apr 12 16:02 .
michaelh@oekoalpha /tmp> ls -l kopiermich
-rw-r--r--   1 michaelh system         0 Apr 12 15:51 kopiermich

 

 

[ top ]

 

Aendern von Dateiattributen

Man kann den Mode und die Gruppe einer Datei nachtraeglich aendern. Man kann den Eigentuemer eine Datei nachtraeglich nicht einfach aendern, sondern nur mit einem Trick.

Die Gruppenzugehoerigkeit einer Datei kann mit dem Kommando

        chgrp gruppenname datei1 datei2 datei3 ...

geaendert werden. Man kann eine Datei nur Gruppen zuordnen, in denen man Mitglied ist.

michaelh@oekoalpha /tmp> ls -l kopiermich
-rw-r--r--   1 michaelh system         0 Apr 12 15:51 kopiermich
michaelh@oekoalpha /tmp> id
uid=2523(michaelh) gid=250(tv1_5) groups=251(arcinfo),211(osterau)
michaelh@oekoalpha /tmp> chgrp arcinfo kopiermich
michaelh@oekoalpha /tmp> ls -l kopiermich
-rw-r--r--   1 michaelh arcinfo        0 Apr 12 15:51 kopiermich
michaelh@oekoalpha /tmp> chgrp system kopiermich
chgrp: kopiermich: Not owner

Das Beispiel zeigt, dass man Dateien in Verzeichnisse anderer Projekte kopieren kann, wenn die Rechte dies erlauben (hier: /tmp gehoert zur Gruppe system, /tmp/kopiermich gehoert also urspruenglich zur Gruppe system). Ich kann aber eine Datei nicht nachtraeglich fremden Projekten zuordnen (hier: Die Datei /tmp/kopiermich kann nachtraeglich nicht mehr der mir fremden Gruppe system zugeordnet werden). Die Gruppenzugehoerigkeit kann nur durch den Eigentuemer einer Datei (oder den Systemverwalter) geaendert werden. Die Rechte einer Datei koennen mit dem Kommando chmod angepasst werden. Die Anpassung kann nur durch den Eigentuemer (oder den Systemverwalter) vorgenommen werden. Die Zuweisung von Rechten kann numerisch erfolgen:

r == 4     644 entspricht also rw-r--r--
w == 2     755 entspricht also rwxr-xr-x
x == 1     700 entspricht also rwx------

Die Zuweisung von Rechten kann symbolisch erfolgen

u       Userrechte beeinflussen
g       Gruppenrechte beeinflussen
o       Other (Rest der Welt) Rechte beeinflussen

+       Rechte hinzufuegen
-       Rechte nehmen
=       Rechte wie angegeben setzen

r       R-Recht
w       W-Recht
x       X-Recht

Also: chmod g+w datei gibt der Datei datei das w-Recht fuer die Gruppe.
      chmod o-x datei nimmt der Datei datei das x-Recht fuer den Rest der Welt.
      chmod ug+rwx datei gibt der Datei datei Rechte rwx fuer den User und die Gruppe.

michaelh@oekoalpha /tmp> ls -l kopiermich
-rw-r--r--   1 michaelh arcinfo        0 Apr 12 15:51 kopiermich
michaelh@oekoalpha /tmp> chmod 000 kopiermich
michaelh@oekoalpha /tmp> l kopiermich
----------   1 michaelh arcinfo        0 Apr 12 15:51 kopiermich
michaelh@oekoalpha /tmp> chmod ug+rwx kopiermich 
michaelh@oekoalpha /tmp> l kopiermich 
-rwxrwx---   1 michaelh arcinfo        0 Apr 12 15:51 kopiermich
michaelh@oekoalpha /tmp> chmod u=rx,g=r kopiermich 
michaelh@oekoalpha /tmp> l kopiermich 
-r-xr-----   1 michaelh arcinfo        0 Apr 12 15:51 kopiermich
michaelh@oekoalpha /tmp> chmod u+r kopiermich 
michaelh@oekoalpha /tmp> l kopiermich 
-r-xr-----   1 michaelh arcinfo        0 Apr 12 15:51 kopiermich
michaelh@oekoalpha /tmp> chmod u=r kopiermich 
michaelh@oekoalpha /tmp> l kopiermich 
-r--r-----   1 michaelh arcinfo        0 Apr 12 15:51 kopiermich

Der Eigentuemer eine Datei kann den Eigentuemer eine Datei aendern, aber nur auf sich selbst (also gar nicht).

michaelh@oekoalpha /tmp> chown michaelh kopiermich
michaelh@oekoalpha /tmp> chown matthias kopiermich
chown: kopiermich: Not owner
michaelh@oekoalpha /tmp> ls -l kopiermich
-r--r-----   1 michaelh arcinfo        0 Apr 12 15:51 kopiermich

Man kann also nicht Eigentuemer einer fremden Datei werden und man kann Dateien selbst nicht verschenken. Man kann jedoch Eigentuemer einer Kopie einer fremden Datei werden. Dies haben wir an der Datei kopiermich gesehen:

matthias war Eigentuemer von /home/matthias/kopiermich. michaelh hat das Recht gehabt, diese Datei zu kopieren und hat sie nach /tmp/kopiermich kopiert. michaelh ist Eigentuemer der Kopie /tmp/kopiermich.

Dies ist der einzige Weg, den Eigentuemer einer Datei zu aendern.

Wie organisieren michaelh und matthias den Datentausch zwischen ihren Verzeichnissen zweckmaessig, wenn sie beide an einem gemeinsamen Projekt arbeiten?

Ausgangslage:

  1. matthias moechte michaelh nicht Zugriff auf alle seine Dateien gestatten, sondern nur auf Dateien, die mit dem gemeinsamen Projekt osterau zu tun haben. Umgekehrt gilt dasselbe.
  2. matthias und michaelh moechten, dass nur sie beide auf Daten des Projektes Zugriff haben und keine Dritten mit diesen Dateien operieren koennen.

Matthias und Michael haben sich bei der Systemverwaltung eine gemeinsame Benutzergruppe besorgt, in der nur sie beide Mitglied sind:

[ Das Kommando ypcat group listet alle Gruppen auf, grep osterau sucht alle Zeilen, die den Text osterau enthalten aus diesem Listing heraus. ]

michaelh@oekoalpha /home/michaelh> ypcat group | grep osterau
osterau:*:211:matthias,michaelh

Wie man sieht, existiert eine Gruppe mit dem Namen osterau, der GID 211 und in der Gruppe sind genau matthias und michaelh Mitglieder. Die Systemverwaltung kann nachtraeglich weitere Mitglieder zu dieser Gruppe hinzufuegen und auch wieder Mitglieder aus der Gruppe entfernen.

Matthias legt bei sich ein Verzeichnis osterau-projekt an. Das Verzeichnis wird matthias gehoeren (er hat es angelegt) und zunaechst zu der Gruppe des enthaltenden Verzeichnisses gehoeren. Es wird Standardrechte fuer Verzeichnisse (rwxr-xr-x) haben.

matthias@oekoalpha /home/matthias> mkdir osterau-projekt
matthias@oekoalpha /home/matthias> ls -ld .
drwx--x--x  33 matthias tv0_0       2048 Apr 12 16:25 .
matthias@oekoalpha /home/matthias> ls -ld osterau-projekt/
drwxr-xr-x   2 matthias tv0_0        512 Apr 12 16:25 osterau-projekt/

Matthias ist Mitglied in der Gruppe osterau und Eigentuemer des Verzeichnisses osterau-projekt. Also hat er das Recht, die Gruppe des Verzeichnisses osterau-projekt zu aendern und zwar zu osterau.

matthias@oekoalpha /home/matthias> id
uid=1010(matthias) gid=100(tv0_0) groups=251(arcinfo),211(osterau)
matthias@oekoalpha /home/matthias> chgrp osterau osterau-projekt
matthias@oekoalpha /home/matthias> ls -ld osterau-projekt/
drwxr-xr-x   2 matthias osterau      512 Apr 12 16:25 osterau-projekt/

Matthias ist Eigentuemer des Verzeichnisses osterau-projekt und hat das Recht, den Mode einer Datei, die ihm gehoert, beliebig zu aendern. Er setzt die Rechte an osterau-projekt so, dass er selbst beliebig mit dem Verzeichnis arbeiten kann und Mitglieder der Gruppe osterau r- und x-Recht an Dateien in osterau-projekt halten.

matthias@oekoalpha /home/matthias> chmod 750 osterau-projekt
matthias@oekoalpha /home/matthias> ls -ld osterau-projekt
drwxr-x---   2 matthias osterau      512 Apr 12 16:25 osterau-projekt

Damit kann matthias die Daten in osterau-projekt erzeugen, lesen und sonstwie zermatschen. Andere Mitglieder der Gruppe osterau koennen den Inhalt des Verzeichnisses sehen und auf Dateien im Verzeichnis zugreifen (im Rahmen der Rechte der einzelnen Dateien).

Der Rest der Welt hat keine Rechte am Verzeichnis osterau-projekt und kann damit - unabhaengig von den Rechten der individuellen Dateien im Verzeichnis! - nicht auf Dateien und Verzeichnisse unterhalb von /home/matthias/osterau-projekt zugreifen.

Damit andere Mitglieder der Gruppe osterau auch auf /home/matthias/osterau-projekt zugreifen koennen, muessen sie ja mindestens das Recht haben, /home/matthias zu betreten. Sie muessen ja /home/matthias durchqueren, um nach /home/matthias/osterau-projekt zu gelangen.

Eine solche Durchquerung sieht so aus:

michaelh@oekoalpha /home/michaelh> cd /home/
michaelh@oekoalpha /home> cd matthias/
michaelh@oekoalpha /home/matthias> ls -ld .      
drwx--x--x  33 matthias tv0_0       2048 Apr 12 16:25 .
michaelh@oekoalpha /home/matthias> cd osterau-projekt/
michaelh@oekoalpha /home/matthias/osterau-projekt>

Da michaelh x-Recht an /home/matthias haelt, kann er /home/matthias durchqueren. Er muss den Namen osterau-projekt aber bereits kennen, denn um ihn nachzuschlagen, muesste er auch das r-Recht an /home/matthias halten. Das findet matthias sehr unkomfortabel. Daher gibt er jedermensch auf der Welt jetzt das Recht, das Inhaltsverzeichnis seines $HOME-Verzeichnisses zu sehen:

matthias@oekoalpha /home/matthias> ls -ld .
drwx--x--x  33 matthias tv0_0       2048 Apr 12 16:33 .
matthias@oekoalpha /home/matthias> chmod ugo+rx .
matthias@oekoalpha /home/matthias> ls -ld .
drwxr-xr-x  33 matthias tv0_0       2048 Apr 12 16:33 .

Nun braucht michaelh nicht mehr blind zu navigieren:

michaelh@oekoalpha /home/michaelh> cd /home
michaelh@oekoalpha /home> cd matthias
michaelh@oekoalpha /home/matthias> ls -l
total 323
-rw-r--r--   1 matthias tv0_0       1864 Mar 21 15:44 ALL.AML
drwxr-xr-x   2 matthias tv0_0        512 Jan 20 14:03 Atext
[ loesch loesch loesch ]
drwxr-x---   2 matthias osterau      512 Apr 12 16:25 osterau-projekt
[ loesch loesch loesch ]
michaelh@oekoalpha /home/matthias> cd osterau-projekt
michaelh@oekoalpha /home/matthias/osterau-projekt>

michaelh ist begeistert, denn nun kann er mittels Midnight Commander per Mausklick nach /home/matthias/osterau-projekt kommen. Er gibt "mc" ein und ist gleich wie zu Hause auf seiner DOSe.

Inzwischen legt matthias mit ARC/INFO die ersten Dateien in /home/matthias/osterau-projekt an.

matthias@oekoalpha /home/matthias> arc
Copyright (C) 1989,1990,1991,1992 Environmental Systems Research Institute,
Inc.
              All Rights Reserved Worldwide.
ARC Version 6.1.1  (December 23, 1992)
 
Hinweise zur lokalen Installation von ARC/INFO erhaltet ihr mit HGF
Arc: &workspace osterau-projekt
Arc: copy /home/matthias/atol/gr1 probe
Copied /home/matthias/atol/gr1 to probe
Arc: quit
Exiting ARC ...
matthias@oekoalpha /home/matthias>

Da osterau-projekt ja zur Gruppe osterau gehoert, kann matthias sicher sein, dass alle neu angelegten Dateien in osterau-projekt zur Gruppe osterau gehoeren (Regeln fuer neuangelegte Dateien). Damit hat michaelh dann Standardrechte an diesen Dateien (rw-r--r-- fuer Dateien, rwxr-xr-x fuer Verzeichnisse). Da osterau-projekt selbst aber die Rechte rwxr-x--- hat, stellen die ueberzaehligen r-Rechte in der dritten Rechtegruppe nicht weiter. Das fehlende x-Recht in der dritten Rechtegruppe in /home/matthias/osterau-projekt verhindert, dass irgendjemand ueberhaupt unterhalb von /home/matthias/osterau-projekt arbeiten kann, der nicht in der Gruppe osterau ist.

matthias@oekoalpha /home/matthias> cd osterau-projekt
matthias@oekoalpha /home/matthias/osterau-projekt> ls -ld .
drwxr-x---   4 matthias osterau      512 Apr 12 16:37 .
matthias@oekoalpha /home/matthias/osterau-projekt> l
total 3
drwxr-xr-x   2 matthias osterau      512 Apr 12 16:37 info/
-rw-r--r--   1 matthias osterau       63 Apr 12 16:37 log
drwxr-xr-x   2 matthias osterau      512 Apr 12 16:37 probe/

Das ist genau, was matthias und michaelh haben wollten.

 

[ top ]

 

Wie bekomme ich eine eigene Arbeitsgruppe?

Um eine eigene Arbeitsgruppe zu bekommen, genuegt es, eine Mitteilung an die Systemverwaltung zu schreiben. In der Mitteilung muessen der Name der Gruppe (Kleinbuchstaben, mindestens 3 Zeichen, maximal 8 Zeichen, der Name darf noch nicht vergeben sein) und die Mitglieder der Gruppe (Usernamen, Loginnamen) angegeben sein. Ausserdem muss die Gruppe einem TV zugeordnet werden (nur fuer die interne Verwaltung notwendig).

Die Gruppe osterau ist also so bestellt worden:

Hallo, Kristian!

Bitte richte eine neue Gruppe osterau ein, in der matthias und michaelh
Mitglied sind. Die Gruppe ist fuer ein Projekt von TV1.5 notwendig, michaelh
und ich muessen Dateien austauschen koennen, obwohl wir in verschiedenen TVs
sind.

Matthias

 

[ top ]

 

Wo bekomme ich weitere Informationen?

In xterm auf der Kommandozeile

        netscape

aufrufen und im Menue "File" den Punkt "Open Location" aufrufen. Dort dann eine der folgenden Bezeichnungen eingeben:

Die genannten Referenzen sind technische Dokumentationen und vor allen Dingen als Hintergrundmaterial gedacht. Ich verwende sie normalerweise zur Ausbildung von UNIX-Systemverwaltern.