![]() |
|
|
|||||||
| Registrieren | Hilfe | Benutzerliste | Interessengemeinschaften | Kalender | Suchen | Heutige Beiträge | Alle Foren als gelesen markieren |
|
|
Dateirechte (klassisch)Aus Linux-Forum WikiAuf UNIX und UNIX-artigen Systemen, somit auch auf Linux, werden Zugriffe auf Dateien (sofern man keine Zugriffskontroll-Listen benutzt) mit der Rechtevergabe an verschiedene Klassen (Arten) von Benutzern geregelt.
EinsatzgebieteDie Zugriffskontrolle alleine im Dateisystem erscheint relativ primitiv, gibt es in aller Regel doch eine Vielzahl von Peripheriegeräten und Netzwerkfreigaben. Man darf jedoch dabei nicht vergessen, dass unter UNIX so gut wie alles in einem Virtuellen Dateisystem (VFS) abgebildet wird - so auch der Gerätezugriff. Selbst einige Formen der Interprozesskommunikation laufen über das Dateisystem. Somit reicht die Rechtevergabe im Dateisystem für die Alltagsarbeit in aller Regel aus, die Lücken werden durch die speziellen Anwendungen und Serverprogramme die es betrifft gefüllt (eigene Rechteverwaltung). Manche Dateisysteme (z.B. Linux ext2) können noch eigene Attribute für die Dateien speichern - diese fliessen mit in die Rechtevergabe ein, sind aber nicht Teil der klassischen UNIX-Rechteverwaltung. Hier nicht behandelt werden Zugriffskontrollisten (ACL), die nahezu jedes moderne UNIX-System unterstützt. Die Rechtevergabe bei ACL ist weitaus granulierter und mächtiger. Benutzerklassen
Der Besitzer und die Gruppe einer Datei werden administrativ festgelegt. Hier ist auch noch der Begriff der "Effektivrechte" interessant. Die effektiven Rechte sind die Rechte die beim jeweiligen Zugriff entstehen und angewendet werden. Hier wird ausgewertet zu welcher Benutzerklasse der Zugreifende gehört und welche Rechte ihm dadurch gegeben werden. Die effektiven Rechte entstehen also aus dem Zusammenspiel zwischen Datei, Rechten und Zugreifenden. Beispiel: Der Benutzer peter ist Mitglied in der Gruppe alle. Es existiert nun eine Datei namens adressen.txt, die dem Benutzer peter und der Gruppe alle zugewiesen ist. Der Dateibesitzer darf lesen, die Gruppe darf lesen und schreiben. Wenn nun peter auf die Datei lesend zugreifen will, darf er das - es wird ihm sowohl als Dateibesitzer (nur lesen) als auch als Gruppenmitglied (lesen und schreiben) erlaubt. Wenn peter aber schreibend auf die Datei zugreifen will, wird ihm das verwehrt. Warum? Da er gleichzeitig Eigentümer der Datei ist, gelten für ihn effektiv nur die Eigentümerrechte - hier: nur lesen. RechtevergabeDie Rechtevergabe erfolgt durch schalten von Bits mit bestimmten Bedeutungen. So spricht man neben dem Leserecht auch gerne vom Readbit oder R-bit. Symbolische Links haben keinen Einfluss auf irgendwelche Berechtigungen - für die Rechteauswertung gelten die Rechte der Datei, auf die ein symbolischer Link zeigt. Im Gegensatz zur Verwendung von Zugriffskontrollisten werden bei der klassischen Rechtevergabe keinerlei Dateirechte vererbt. Die Konstellation der gesetzten Rechtebits einer Datei nennt man auch Dateimodus. BasisrechteDie Basisrechte die man vergeben kann sind recht einleuchtend:
Bei Dateien
Lese- und Schreibrecht sollte sich soweit von selbst erklären. Die Ausführbarkeit von Dateien wird nicht durch irgendeine Dateinamenserweiterungen (wie EXE, COM oder BAT) festgelegt, sondern nur durch diese Kennzeichnung. Ob es Sinn macht, eine Datei die eigentlich keinen ausführbaren Programmcode enthält als Ausführbar zu kennzeichnen ist natürlich Sache des Administrators und seiner Anforderungen. Bei Verzeichnissen
Bei einem Verzeichnis bestimmt das Leserecht das "Lesen des Verzeichnisses" - was gleichbedeutend ist mit dem Auflisten des Inhalts. Wenn das Leserecht ohne Ausführungs- bzw. Wechselrecht gegeben ist, darf man den Inhalt auflisten, allerdings ohne die Dateirechte der Dateien im Verzeichnis zu erfahren. Das Schreibrecht erlaubt, wie leicht zu erraten ist, Schreiboperationen im Verzeichnis. Schreiboperationen im Verzeichnis sind unter Anderem das Löschen und Anlegen von Dateien und Unterverzeichnissen, Umbenennen, etc... Vorsicht: Das bedeutet zum Beispiel dass, anders als viele glauben, eine Datei nicht durch ihre eigenen Rechte vor dem Löschen geschützt wird! Dieses Verhalten kann durch das Sticky-Bit beeinflusst werden. Durch das Ausführungsrecht wird einfach das Recht zum Wechseln in das Verzeichnis gegeben. Wie oben schon angesprochen, kontrolliert dieses Recht beim Auflisten des Verzeichnisses auch, ob die Dateirechte des Verzeichnisinhalts (Dateien, Unterverzeichnisse) gelesen werden dürfen oder nicht. Erweiterte RechteAufgrund besonderer Anforderungen kommen zu den Basisrechten noch einige weitere Rechte hinzu.
Bei DateienSUID/SGID: Prozesse, Programme, Scripte - alles läuft unter UNIX mit bestimmten Benutzerrechten ab, anders könnte man nicht kontrollieren, ob der Prozess X Zugriff auf die Datei Y nehmen darf. Wenn ein Benutzer ein Programm startet, wird dieses Programm mit den Rechten des Benutzers laufen, das heisst, dieses Programm hat alle Rechte des Benutzers und seiner Gruppe. Es gibt aber Fälle, in denen ein Benutzer ein Programm startet, das garnicht mit seinen Rechten laufen soll (z.B. ping oder sudo). Hier kommen die Rechte der SUID bzw. SGID-Bits zum Tragen. Wird eine Datei ausgeführt, bei der das SUID-Bit gesetzt ist, wird das Programm mit den Benutzerrechten des Besitzers der Datei laufen. Analog ist es mit dem SGID-Bit. Das Setzen des Sticky-Bits sorgt bei ausführbaren Dateien dafür, dass der Programmcode nach beendigung des Programms im Speicher bleibt. Dies hat meines Wissens nach keinerlei praktische Bedeutung mehr. Bei VerzeichnissenSUID/SGID: Das SUID-Bit hat bei Verzeichnissen meines Wissens nach keine Bedeutung. Das SGID-Bit allerding schon: Im Normalfall wird die Zugehörigkeit einer Datei die ein Benutzer erstellt automatisch auf Besitzer=Benutzer und Gruppe=Benutzergruppe gesetzt. Das heisst, diese Datei gehört dem jeweiligen Benutzer und seiner Gruppe. Ist nun in einem Verzeichnis das SGID-Bit gesetzt, so wird die Gruppe von neu erzeugten Dateien grundsätzlich auf die Gruppe gesetzt, die für das Verzeichnis festgelegt ist. Das Setzen des Sticky-Bits beeinflusst die Schreibrechte in Verzeichnissen. Der Normalfall ist dass ein Benutzer der Schreibrechte in einem Verzeichnis hat auch alle sich im Verzeichnis befindlichen Einträge (Dateien, Unterverzeichnisse) löschen darf. Das gesetzte Sticky-Bit schränkt nun dieses Recht ein - und zwar auf alle Einträge, die dem Benutzer selbst gehören. Genau aus diesem Grund sollte das allgemein zugängliche Verzeichnis /tmp das Sticky-Bit gesetzt haben: Jedermann darf dort Dateien anlegen, aber nur seine eigenen Dateien wieder löschen. NotationSymbolisch bei lsDer Befehl ls erzeugt, sofern mit dem Parameter -l aufgerufen, ein Dateilisting mit ausführlicher Beschreibung der Metadaten der einzelnen Dateien (Metadaten bedeutet hier "Daten über die Daten", also Dateigröße, Dateirechte, Dateityp, ...). Darstellung am Beispiel eines Phantasieverzeichnisses /home/test (Befehl: ls -l /home/test): d rwx rwx rwx 2 root users 4096 2006-01-03 08:15 /home/test | | | | | | | | | | | +----- Gruppe | | | | | | | | | +------------ Besitzer | | | | | | | +---------------------- Rechte für Sonstige | | | | | +--------------------------- Rechte für Gruppe | | | +-------------------------------- Rechte für Besitzer | +----------------------------------- Dateityp (hier: Directory, "Verzeichnis")
Symbolisch bei chmodchmod ist der Befehl zum Setzen der Zugriffsrechte (Dateimodus) einer Datei (CHange MODe). Die zu setzenden Rechtebits kann man symbolisch (als Zeichen) angeben. Die verwendeten Zeichen für die Rechte-Bits sind identisch mit den Zeichen, wie ls sie bei der Ausgabe verwendet (siehe oben). Um die Rechte den einzelnen Benutzerklassen zuzuordnen, benutzt chmod die Symbole u (user), g (group), o (other) und a (all). Um Rechte zu setzen wird das Pluszeichen verwendet, um Rechte zu nehmen, das Minuszeichen. Mehrere Angegebene Klassen werden durch Kommata getrennt. Das Resultat sieht dann zum Beispiel so aus: chmod u+rwx,g-w,o-rwx /home/test Diese Angabe bedeutet, dass für die Klasse user (Besitzer) Schreib-, Lese- sowie Ausführungsrechte gegeben werden. Der Klasse group (Gruppe) wird das Schreibrecht entzogen, und alle anderen (Sonstige) gehen komplett leer aus (alle Rechte entzogen). OktalDie oktale Darstellung erfordert etwas Übung, wenn man sie beherrscht, ist es allerdings auch die schnellste Möglichkeit, Rechte zu formulieren. Dazu muss man etwas Binärrechnen können, da die jeweiligen Rechte-Bits in einer Klasse durch die Bit-Wertigkeit von einer 3-Bit-Zahl dargestellt werden und oktal ausgedrückt werden. Das heisst, eine oktale Stelle pro Klasse. Die Sonderrechte werden zudem auch so dargstellt, was zum Schluss eine 4-stellige Oktakzahl ergibt. Wertigkeiten
BeispielEs sieht auf den ersten Blick komplizierter aus als es ist. Nehmen wir zum Beispiel die Rechte, wie sie ls als rwxr-x--- darstellen würde:
Aus diesen Angaben kann man sich nun die Bits zusammenstellen:
Der oktale Modus einer Datei mit dem symbolischen Modus rwxr-x--- wäre somit 0750, oder auch 750. BefehlelsDer Befehl ls (LiSt) wurde vorhin schon angesprochen. Er hat mit der Verwaltung der Dateirechte eigentlich nichts zu tun, nur mit deren Anzeige. Wichtig ist, dass ls das nur im sog. "langen Listenformat" mit der Option -l macht. Beispiel (die Option -d ist hier nur dazu da, um ls auf das Verzeichnis selbst zu beschränken): $ ls -d -l /home/bonsai/ drwxr-xr-x 85 bonsai bonsai 4096 2008-03-26 23:24 /home/bonsai/ chmodchmod (CHange MODe) wurde auch schon angesprochen. chmod versteht sowohl eine symbolische Angabe von Dateirechten (siehe oben), als auch eine oktale. Die Syntax ist chmod MODUS DATEI Aufgrund der Möglichkeit, symbolische oder oktale Notation für den Modus zu verwenden, wäre chmod u+rwx,g+rw-x,o+r-wx /home/bonsai/test.txt gleichbedeutend mit chmod 764 /home/bonsai/test.txt chownchown (CHange OWNer) ist eigentlich zum Ändern des Besitzereintrages einer Datei gedacht: chown BESITZER DATEI Auf GNU-Systemen (so auch GNU/Linux) kann der chown-Befehl trotzdem auch die Gruppe abändern. Sie wird von der Besitzerangabe durch einen Doppelpunkt getrennt: chown BESITZER:GRUPPE DATEI Man kann also damit sowohl nur den Besitzer chown bonsai /home/bonsai/test.txt als auch beides chown bonsai:users /home/bonsai/test.txt ändern. chgrpchgrp (Change GRouP) wird, wie der Name schon vermuten lässt, zum Abändern der Gruppenzugehörigkeit einer Datei verwendet. chgrp GRUPPE DATEI Beispiel: chgrp users /home/bonsai/test.txt ArtikelkritikKritik und Anregungen zu diesem Artikel bitte im Forum als PN an TheBonsai. Siehe auch |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||