ubuntuusers.de

Hinweis: Dies ist ein statischer Snapshot unseres Wikis vom 25. März 2013 und kann daher nicht bearbeitet werden. Der aktuelle Artikel ist unter wiki.ubuntuusers.de zu finden.

Rechte

Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:

Dieser Artikel ist größtenteils für alle Ubuntu-Versionen gültig.

Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:

Dieser Artikel beschreibt die Dateirechte von Linux - und somit auch Ubuntu.

Grundlagen

Dateieigenschaften im VFS

UNIX-Systeme wie Linux verwalten ihre Dateien in einem virtuellen Dateisystem (VFS, Virtual File System). Dieses ordnet jeder Datei folgende Eigenschaften zu, unabhängig davon, ob diese vom zugrunde liegenden realen Dateisystem tatsächlich unterstützt werden oder nicht:

  • Dateityp

  • Besitzer

  • Gruppe

  • Zugriffsrechte

Quasi jedes unter Linux gängige Dateisystem (z.B. ext2/3/4, ReiserFS, xfs usw.) unterstützt diese Rechte. Gar nicht oder nicht vollständig umgesetzt werden die Rechte jedoch auf Nicht-Linux Dateisystemen, also z.B. VFAT oder NTFS aus der Windows-Welt (nähere Informationen).

Information mittels Befehlszeile

Eine Information über die Dateieigenschaften erhält man, wenn man in einem Terminal[1] folgende Befehlszeile eingibt:

ls -l DATEINAME_ODER_VERZEICHNIS 

Näheres siehe Artikel ls.

Zur Änderung von Dateieigenschaften dienen die Befehle chown (Besitzer ändern), chgrp (Gruppenzugehörigkeit ändern) und chmod (Zugriffsrechte ändern).

./Eigenschaften-GNOME.png

Information mittels graphischer Oberfläche

Auch die graphischen Oberflächen GNOME, KDE und Xfce bieten Möglichkeiten, sich über Dateieigenschaften zu informieren und diese auch zu verändern, soweit das zugrunde liegende reale Dateisystem dies gestattet. Informationen findet man im Artikel Rechte/Dateimanager.

Individuelle Dateirechte mit ACL

Für komplexere Anwendungen bietet Linux seit einiger Zeit auch die Möglichkeit, den Zugriff über ACL (Access Control List) genauer festzulegen. Die ACL müssen explizit aktiviert werden. Ihre Erklärung würde hier zu weit führen; sie ist Gegenstand des Artikels ACL.

Rechte in symbolischer Darstellung

Jede Datei und jeder Ordner hat grundsätzlich genau einen Besitzer (Eigentümer) und genau eine Gruppe[2].

Wie auch in anderen Betriebssystemen kann man verschiedene Rechte für Besitzer und Gruppen vergeben. Doch es gibt noch zusätzlich Rechte für alle, die nicht Besitzer oder Mitglieder der Gruppe sind, dies nennt sich andere (engl. "others").

Im Folgenden sind als Beispiel die Dateirechte von /home/benutzername dargestellt (Befehl: ls -l -h -d /home/benutzername):

drwxr-x--- 120 eigentümer gruppe 20K 2009-04-13 13:28 /home/benutzername

Dateitypen

Hier sieht man ganz gut die Dateieigenschaften. Das d steht für „Directory“ (= Verzeichnis) und zeigt an, dass man es mit einem Ordner zu tun hat. Neben dem d gibt es noch andere Zeichen, die verschiedene Dateitypen kennzeichnen:

Mögliche Dateitypen
TypBezeichnungBeschreibung
d Directory Verzeichnis/Ordner
- File Datei (unabhängig davon ob es ein Programm oder z. B. ein Office-Dokument ist)
l Link Verknüpfung (siehe ln)
c Character Device Dies ist eine Gerätedatei, welche unter /dev zu finden ist. Es handelt sich dabei um ein zeichenorientiertes Gerät (z.B. ein Modem)
b Block Device Dies ist eine Gerätedatei welche unter /dev zu finden ist. Es handelt sich dabei um ein blockorientiertes Gerät (z.B. Festplatte oder USB-Stick)
s Socket Dies ist ein sog. Unix Domain Socket, welches von vielen Programmen für die Interprozess-Kommunikation verwendet wird.
p Pipe Dies ist eine Pipe, und alles was ein Programm in diese schreibt, kann von einem anderen Programm ausgelesen werden. Auch die Pipe wird für Interprozesskommunikation verwendet.

Die nachfolgenden Erklärungen beziehen sich vor allem auf Dateien vom Typ File (ohne Kennbuchstaben) und "Ordner" (Directory, Kennbuchstabe d).

Zugriffsrecht

Nach dem Dateityp kommen drei Zeichengruppen zu je drei Zeichen. Diese kennzeichnen die Zugriffsrechte für die Datei bzw. das Verzeichnis.

In obigen Beispiel erscheint nach dem Dateityp dann die Zeichenfolge rwxr-x---. Wenn man diese in drei Dreiergruppen aufteilt, erhält man diese Gruppen:

  • rwx steht für Besitzer

  • r-x steht für Gruppe

  • --- steht für Andere

Die folgende Tabelle erklärt die Bedeutung der einzelnen Buchstaben, Diese stehen immer in der gleichen Reihenfolge:

Symbole für Zugriffsrechte
ZeichenBedeutungBeschreibung
r Lesen (read) erlaubt einem eine Datei zu lesen. Bei einem Ordner bewirkt dieses gesetzte Recht, dass man die Namen der enthaltenen Dateien und Ordner abrufen darf (nicht jedoch deren weitere Attribute wie z.B. Berechtigungen, Besitzer, Änderungszeitpunkt etc.).
w Schreiben (write) erlaubt es, eine Datei zu verändern. Für ein Verzeichnis gesetzt, erlaubt es, Dateien oder Unterverzeichnisse anzulegen oder zu löschen sowie die Eigenschaften der enthaltenen Dateien/Verzeichnisse zu verändern.
x Ausführen (execute) erlaubt es, eine Datei als Programm zu starten (was nur bei einem Programm oder einen Shellscript mit Shebang sinnvoll ist). Bei einem Ordner ermöglicht dieses Recht, in diesen Ordner zu wechseln und weitere Attribute zu den enthaltenen Dateien abzurufen (sofern man die Dateinamen kennt ist dies unabhängig vom Leserecht auf diesen Ordner).

Hat der Benutzer/Gruppe/Andere ein Recht, so wird der Buchstabe dafür angezeigt; ansonsten wird ein - dafür angezeigt. In dem Beispiel oben darf der Besitzer alles mit einer Datei machen (lesen, schreiben, ausführen); ist man in der jeweiligen Gruppe, darf man nur lesen und ausführen. Jeder andere hat keinen Zugriff auf die Datei.

Achtung!

Außerhalb seines Heimverzeichnisses und des Verzeichnisses /tmp für temporäre Dateien sollte man mit dem Ändern von Dateirechten sehr vorsichtig sein. Dass viele Dateien und Verzeichnisse root gehören und sich deshalb mit Benutzerrechten nicht verändern lassen, hat seinen Grund. Gerade unerfahrene Benutzer ruinieren sich ihr System, wenn sie unvorsichtig die Rechte von solchen Dateien ändern.

Sonderrechte

Die oben gezeigten Dateirechte kann man als Basisrechte bezeichnen. Für besondere Anwendungen gibt es zusätzlich noch besondere Dateirechte. Der Einsatz dieser ist nur dann ratsam, wenn man genau weiß, was man tut, da dies unter Umständen zu Sicherheitsproblemen führen kann.

Sonderrechte
Zeichen Bedeutung Beschreibung
s Set-UID-Recht (SUID-Bit) Das Set-UID-Recht („Set User ID“ bzw. „Setze Benutzerkennung“) sorgt bei einer Datei mit Ausführungsrechten dafür, dass dieses Programm immer mit den Rechten des Dateibesitzers läuft. Bei Ordnern ist dieses Bit ohne Bedeutung.
s (S) Set-GID-Recht (SGID-Bit) Das Set-GID-Recht („Set Group ID“ bzw. „Setze Gruppenkennung“) sorgt bei einer Datei mit Ausführungsrechten dafür, dass dieses Programm immer mit den Rechten der Dateigruppe läuft. Bei einem Ordner sorgt es dafür, dass die Gruppe an Unterordner und Dateien vererbt wird, die in diesem Ordner neu erstellt werden.
t (T) Sticky-Bit Das Sticky-Bit („Klebrig“) hat auf modernen Systemen nur noch eine einzige Funktion: Wird es auf einen Ordner angewandt, so können darin erstellte Dateien oder Verzeichnisse nur vom Dateibesitzer gelöscht oder umbenannt werden. Verwendet wird dies z.b. für /tmp.

Die Symbole für die Sonderrechte erscheinen an der dritten Stelle der Zugriffsrechte, die normalerweise dem Zeichen x (für executable) vorbehalten ist, und ersetzen ggf. dieses. Die Set-UID/GID-Rechte werden anstelle des x für den Besitzer bzw. die Gruppe angezeigt, das Sticky-Bit anstelle des x für Andere. Wenn das entsprechende Ausführ-Recht gesetzt ist, wird ein Kleinbuchstabe verwendet, ansonsten ein Großbuchstabe.

Weitere Einzelheiten zu den Sonderrechten siehe auch Setuid, Setgid und Sticky Bit.

Achtung!

Vor allem das "Set-UID-Recht" sollte nur mit äußerster Vorsicht angewandt werden!

Besonders gefährlich ist es, das SUID-Bit bei Dateien zu setzen, die Besitz von Root sind, denn dann kann jeder diese mit Administrator-Rechten starten. Dies ist aber sehr unsicher und kann tiefe Lücken in das System reißen, unter denen die Sicherheit des gesamten Systems leidet! Nur bei einigen Programmen, die darauf ausgelegt sind, ist dieses Bit gesetzt.

Hinweis:

Bei Skripten und Verzeichnissen funktioniert das Set-UID-Recht aus technischen Gründen nicht und hat somit keinerlei Wirkung.

Oktale Darstellung

Neben der symbolischen Darstellung (z.B. rwxrwxr-x) gibt es auch noch eine oktale Darstellung (oktal = basierend auf dem Achter-System) der Dateirechte. Dabei wird jedes der drei Grundrechte (Lesen, Schreiben, Ausführen) durch ein Zahl aus dem oktalen System dargestellt:

  • 4 = Lesen

  • 2 = Schreiben

  • 1 = Ausführen

Ein Kombination der Rechte wird durch Addition der Zahlen erreicht, also bedeutet 6: Lesen + Schreiben (4+2).

Den erweiterten Rechten sind ebenfalls Zahlen zugeordnet:

  • 4 = Set-UID

  • 2 = Set-GID

  • 1 = Sticky-Bit

Hier ein paar Beispiele:

  • rwxrwxrwx entspricht 0777: Jeder darf lesen, schreiben und ausführen

  • rwxr-xr-x entspricht 0755: Jeder darf lesen und ausführen, aber nur der Dateibesitzer darf diese Datei (oder das Verzeichnis) auch verändern

  • rwsr-xr-x entspricht 4755: Jeder darf lesen und ausführen, der Eigentümer darf diese Datei oder das Verzeichnis verändern. Zusätzlich ist noch das Set-UID-Recht gesetzt.

  • rw-r--r-T entspricht 1644: Jeder darf lesen, der Eigentümer darf schreiben. Zusätzlich ist das Sticky-Bit gesetzt (aber nicht das Ausführrecht, daher ein großes T).

„Oktale Rechte“ sind also nicht anderes als die oktalen Werte eines bestimmten Rechtes, ziffernweise zusammengesetzt. Die erste Ziffer bei den oktalen Rechten steht für die Sonderrechte und kann weggelassen werden, wenn man davon keines benötigt. Die nächsten drei Stellen stehen für Besitzer, Gruppe und Andere.

Standard-Einstellung und Maskierung

In jedem Ubuntu-System gibt es Standardwerte für die Zugriffsrechte bei neu erstellten Ordnern und Dateien. Diese können in einem Terminal mit dem Befehl umask (ohne Parameter) abgefragt werden. Üblich ist der Wert 0022:

Benutzer@Rechner:~$ umask 

Ausgabe:

0022

Bei umask handelt es sich um eine „inverse Maskierung“, d.h. es wird angegeben, welche Rechte ausgeschlossen werden. Dabei geht man als "Basis" bei Ordnern von 0777 (alle Rechte einschließlich "ausführen" (durchsuchen), jedoch keine Sonderrechte) und bei Dateien von 0666 (kein Ausführen-Recht) aus. Die Angabe umask 0022 bedeutet also „kein Schreibrecht für Gruppe und andere“ und bewirkt somit für Ordner die Zugriffsrechte 0755 und für Dateien die Zugriffsrechte 0644. Der (fiktive) Wert umask 0133 würde z.B. bedeuten „kein Schreibrecht für Gruppe und andere und überhaupt kein Ausführen-Recht“ und damit sowohl für Ordner als auch für Dateien die Zugriffsrechte 0644 bewirken.

Zur Eingabe eines neuen Wertes verwendet man den gleichen Befehl mit dem neuen Wert als Parameter:

umask 0077 

Der so eingegebene Wert von umask (hier: der Besitzer darf alles, alle Anderen gar nichts) gilt dann nur für die betreffende Sitzung.

Der Standardwert von umask ist dauerhaft systemweit durch einen entsprechenden Eintrag in der Datei /etc/profile festgelegt. Man kann ihn verändern, indem man diese Datei in einem Terminal mit Root-Rechten editiert. Für einzelne Benutzer lässt sich ein dauerhafter persönlicher Standardwert in der Datei ~/.profile festlegen, der für alle Ordner und Dateien, die von diesem Benutzer neu angelegt werden, den allgemeinen Standardwert überschreibt. Änderungen werden jeweils erst nach einem Neustart bzw. einer Neuanmeldung wirksam. Wichtig: Über umask kann man grundsätzlich keine zusätzlichen Rechte (z.B. Sonderrechte) erteilen, sondern nur Rechte ausschließen.

Datei ausführbar machen

Mitunter ist es erforderlich, eine (heruntergeladene) Datei ausführbar zu machen. Am Einfachsten geht das mit einem Dateimanager mittels Rechtsklick rechte Maustaste -> "Eigenschaften -> Zugriffsrechte" (oder "Eigenschaften -> Berechtigungen"). Die Details sind in den Artikeln Rechte/Dateimanager und chmod zu finden.

  • Benutzer und Gruppen {Übersicht} Grundlagenartikel

  • chmod - dient zum Setzen der Dateirechte

  • chown - dient zum Ändern des Dateibesitzers

  • chgrp - dient zum Ändern der Gruppe einer Datei.

  • ACL - Gezielte Festlegung ergänzender Rechte mittels ACL (für fortgeschrittene Benutzer)

  • Unix-Dateirechte

ubuntuusers.local › WikiRechte