•  Back 
  •  Das Konzept multipler Dateisysteme verstehen 
  •  Index 
  •  Tree View 
  •  Cross references 
  •  Help page 
  •  Show info about hypertext 
  •  View a new file 
Topic       : FreeMiNT für absolute Anfänger
Author      : Draco (draco@atari.org)
Version     : mint.stg (9/1/2001)
Subject     : MiNT
Nodes       : 73
Index Size  : 2258
HCP-Version : 3
Compiled on : Atari
@charset    : atarist
@lang       : 
@default    : 
@help       : 
@options    : -i -s +zz -t4 -d10
@width      : 75
View Ref-FileBesitz und Zugriffsrechte

FreeMiNT ist ein Betriebssystem mit Unterstützung für mehrere
Benutzer. Das bedeutet, daß es möglich ist, ein System so einzurichten,
daß es - auf kontrollierte Weise - mehreren Benutzern Zugang zu den
Systemressourcen garantieren kann.
In einem Netzwerk tritt der besondere Fall auf, daß mehrere Benutzer
den Computer zur selben Zeit nutzen möchten. Das Betriebssystem muß
in der Lage sein, alle (oder zumindest die meisten) möglichen
Konflikte, die zu diesem Zeitpunkt auftreten könnten, zu eliminieren,
insbesonders muß es die 'privaten' Dateien eines Benutzers vor dem
unbefugten Zugriff eines anderen Benutzers schützen.

Ein Beispiel: Falls Sie e-mails erhalten, existiert Ihr Postfach
physikalisch irgendwo auf einer Festplatte - als Datendatei. Sie
wollen natürlich nicht, daß Ihr Postfach von anderen Leuten
durchgesehen wird, oder? Die 'Privatheit' Ihrer e-mails wird durch die
Software geschützt, die auf dem Computer installiert ist, auf dem Sie
Ihr Postfach liegen haben (oder, genau gesagt, wird sie geschützt,
solange auf dem Rechner nicht MS Windows läuft, aber wir sprechen ja
hier im allgemeinen über Unices, also geht diese Frage am Thema
vorbei).

Es geht hier nicht nur (aber auch) darum, geeignete Netzwerk-Software
zu benutzen, also sichere (lies: 'als sicher betrachtete') Server und
Clients; das Problem muß auf Betriebssystemebene gelöst werden, so daß
unbefugter Zugriff verweigert werden kann, sogar, wenn die
Anwendungssoftware schlecht oder in böser Absicht geschrieben ist.

Um das zu erreichen, implementieren alle Unices (und eben auch das
FreeMiNT) ein Konzept von Eigentum an Daten. Allen Benutzern werden
'Konten' zugeteilt, von menschlicher Seite durch Benutzernamen und
Passwörter identifizierbar, von der Software durch sogenannte UID
(Abk. für 'user identifier').
Außerdem werden Benutzer (oder genau gesagt user identifiers, UIDs)
an Gruppen verteilt. Eine Gruppe von UIDs hat eigene gemeinsame
Identifier, sogenannte GID ('group identifier'). Wenn eine Datei
erzeugt wird, werden die UID und GID des Erzeugers auf der Festplatte
gespeichert, um den Besitzer der Datei anzuzeigen. Sie erscheinen in
der Verzeichnisliste so wie im folgenden Beispiel:

-rw-r--r--   1 draco    wheel       96470 Feb 22  1998 lice.irc
---------- --- -------- -------- -------- ------------ --------
    |       |      |        |        |         |          |
  access    |     UID      GID    length    creation   filename
permission  |                                 time
            |
     number of links

In Wirklichkeit sind UID und GID nur Zahlen. Sie werden jedoch mit
von Menschen lesbaren Namen verknüpft, wobei die Datenbanken in den
Dateien /etc/passwd bzw. /etc/groups verwendet werden. Diese
Datenbanken werden wie oben gezeigt benutzt, um numerische UID/GID in
Namen zu konvertieren, wenn es erforderlich ist, sie in menschlich
lesbarer Form darzustellen.

Obwohl es im System viele Gruppen von vielen Benutzern geben kann,
gibt es tatsächlich nur drei Klassen von Zugriffsrechten:

Benutzer (u)
Der eigentliche Erzeuger der Datei, dessen UID auch mit dem
Verzeichniseintrg verknüpft ist.

Gruppe (g)
Alle Benutzer, die zur gleichen Gruppe wie der Inhaber der Datei
gehören.

andere (o)
Alle Benutzer, die zu anderen Gruppen als der Erzeuger der Datei
gehören.

 HINWEIS:
 Der Systemadministrator (Superuser), d.h. der Benutzer mit UID 0 und
 GID 0, kann alle Attribute aller anderen Benutzer ändern.

Der Zugriff selbst wird durch das Feld 'access permission'
(Zugriffserlaubnis) geregelt, wie oben zu sehen ist. Hier wird ein
zehn Zeichen breites Feld zur Kodierung verwendet, wobei das erste
(von links) ein Verzeichnis (d), einen Link (l), ein Ein/Ausgabegerät
(c), eine Pipe (p) oder eine reguläre Datei (-) anzeigt, während die
anderen drei Unterfelder von je drei Zeichen bilden, die die
Zugriffsrechte für die drei vorher erwähnten Klassen anzeigen, d.h.
Benutzer, Gruppe und andere:

                          - r w x r w x r w x
                          - - - - - - - - - -
                            | | | | | | | | |
Benutzer darf lesen     ----+ | | | | | | | |
              schreiben ------+ | | | | | | |
              ausführen --------+ | | | | | |
Gruppe darf   lesen     ----------+ | | | | |
              schreiben ------------+ | | | |
              ausführen --------------+ | | |
andere dürfen lesen     ----------------+ | |
              schreiben ------------------+ |
              ausführen --------------------+

Wird der Zugriff erlaubt, so erscheint im Verzeichnis an der
entsprechenden Stelle der passende Buchstabe, wie oben zu sehen
(r, w, oder x). Falls der Zugriff verweigert wird, erscheint statt
dessen ein Minuszeichen (-). Sie können die Berechtigungen und
Besitzverhältnisse mit dem Shellbefehl chmod oder mit jedem
modernen GEM desktop ändern - bitte experimentieren Sie damit ein
wenig (aber nicht an wertvollen Dateien oder Systembinären!), um
herauszufinden, wie es in der Realität funktioniert.

 Es gibt mehr Rechte-Codes als die zuvor besprochenen 'r', 'w'
 und 'x'. Der Einfachheit halber werden diese hier nicht diskutiert,
 aber sie existieren und haben offensichtlich spezielle Bedeutungen.
 Falls Ihnen mal eine Datei mit 'eigenartigen' Rechtecodes unterkommt,
 verändern Sie diese nicht, solange Sie nicht absolut genau wissen,
 was Sie tun!

Diese Funktionalität kann manchmal ihre Tücken haben. zum Beispiel
regeln die Lese- und Schreibrechte (r/w) die expliziten und impliziten
Lese- und Schreiboperationen, und verweisen dabei auf den Inhalt der
Datei.

Jedenfalls, und das ist wichtig zu wissen, hängen Operationen mit einem
Verzeichniseintrag eher von Besitzerschaft und Zugriffsrechten des
Verzeichnisses ab, zu dem der Eintrag gehört, als von denen
der Datei, für die der Eintrag steht.
Also können Sie eine Datei, zu der Sie kein Schreibrecht haben, die
aber in einem Verzeichnis liegt, dessen Schreibrecht Sie haben, zwar
löschen, aber ihren Inhalt nicht überschreiben.

Symbolische Links scheinen immer alle Rechte zuzulassen (lrwxrwxrwx),
aber tatsächlich hat der Rechtecode von Symlinks nicht die geringste
Bedeutung - wenn es zu einer Operation kommt, die Rechtekontrolle
verlangt, wird der Link dereferenziert und es werden die Rechte der
verknüpften Datei benutzt.

Das 'x' Bit einer Binärdatei oder eines Shellskripts bezeichnet eine
'Ausführungsfähigkeit', während das gleiche Bit an einem Ordner
(Verzeichnis) die Erlaubnis, das Verzeichnis zu betreten, bedeutet.
Eine Binärdatei mit den Rechten ---x--x--x kann von niemandem gelesen
oder geschrieben, aber von jedem ausgeführt werden. Einen Ordner mit
den selben Rechten kann jeder betreten und darin lesen, schreiben oder
Dateien ausführen, aber niemand kann seinen Inhalt auflisten!

 HINWEIS:
 Auf einem Un*x Dateisystem markiert ausschließlich das 'x'-Flag (oder
 'x-bit'), daß eine Datei ausführbar ist, OHNE RÜCKSICHT auf die
 Erweiterung im Dateinamen, so vorhanden. Anders gesagt wird das
 System eine *.app Datei nicht ausführen, falls alle 'x-bits' des
 entsprechenden Verzeichniseintrag gelöscht sind!

Alles das funktioniert natürlich nur wie erwartet, wenn das
Dateisystem den Besitz von Daten sowie Zugriffsrechte unterstützt,
d.h. mit den ext2- und minix-Dateisystemen. Wenn Sie in einer Textshell
ein 'ls -l' auf einem FAT Medium ausführen, werden die Verzeichnisse
ähnlich aussehen, aber lassen Sie sich nicht täuschen! Das FAT-
Dateisystem unterstützt all diese Dinge nicht wirklich, diese
Darstellung wird vom FreeMiNT-Kernel emuliert, um bessere
Kompatibilität mit Un*x-Software zu erzielen. Da die meisten dieser
Zugriffscodes Attrappen sind, gibt es af einem FAT-Medium natürlich
keine wirkliche Datensicherheit und auch keine wirkliche Kontrolle
über Zugriffe.