Rechteverwaltung: Unterschied zwischen den Versionen
Dirk (Diskussion | Beiträge) |
Dirk (Diskussion | Beiträge) K →Notation: erklärung für = |
||
(6 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
Zeile 15: | Zeile 15: | ||
Schreibrechte ermöglichen dem Benutzer, Dateien zu bearbeiten. Hat ein Benutzer Schreibrechte für ein Verzeichnis, kann er Dateien und Verzeichnisse darin erstellen und löschen. | Schreibrechte ermöglichen dem Benutzer, Dateien zu bearbeiten. Hat ein Benutzer Schreibrechte für ein Verzeichnis, kann er Dateien und Verzeichnisse darin erstellen und löschen. | ||
Der Benutzer kann bei gesetzter Ausführberechtigung Dateien (Programme) ausführen. Besitzt der Benutzer Ausführrechte für ein Verzeichnis, kann er sich dessen Inhalt (z.B. mittels | Der Benutzer kann bei gesetzter Ausführberechtigung Dateien (Programme) ausführen. Besitzt der Benutzer Ausführrechte für ein Verzeichnis, kann er sich dessen Inhalt (z.B. mittels {{ic|ls}}) anzeigen lassen, und sieht dann auch die Rechte der einzelnen Dateien. | ||
'''Wichtig''': Dateirechte und Verzeichnisrechte dürfen nicht durcheinandergebracht werden. Wenn ein Benutzer in einem Verzeichnis lesen und schreiben darf, kann er in diesem Verzeichnis Dateien löschen, unabhängig davon, welche Dateirechte sie besitzen (Ausnahmen, siehe [[#Besondere%20Rechte|Besondere Rechte]]). | '''Wichtig''': Dateirechte und Verzeichnisrechte dürfen nicht durcheinandergebracht werden. Wenn ein Benutzer in einem Verzeichnis lesen und schreiben darf, kann er in diesem Verzeichnis Dateien löschen, unabhängig davon, welche Dateirechte sie besitzen (Ausnahmen, siehe [[#Besondere%20Rechte|Besondere Rechte]]). | ||
Zeile 29: | Zeile 29: | ||
Es gibt drei Arten der Notation von Dateirechten: Die oktale Notation, die symbolische Notation, und die Operandennotation, die in Anlehnung an die symbolische Notation funktioniert. Für konkrete [[#Beispiele|Beispiele]] siehe dort. | Es gibt drei Arten der Notation von Dateirechten: Die oktale Notation, die symbolische Notation, und die Operandennotation, die in Anlehnung an die symbolische Notation funktioniert. Für konkrete [[#Beispiele|Beispiele]] siehe dort. | ||
Bei der oktalen Notation wird jedem Rechte-Bit ein Zahlenwert zugewiesen: ''r'' = 4, ''w'' = 2, ''x'' = 1. Das Selbe gilt für ''Setuid'', ''Setgid'' und ''Sticky''. Daraus ergibt sich eine maximal vierstellige Zahlenkombination in der Reihenfolge | Bei der oktalen Notation wird jedem Rechte-Bit ein Zahlenwert zugewiesen: ''r'' = 4, ''w'' = 2, ''x'' = 1. Das Selbe gilt für ''Setuid'', ''Setgid'' und ''Sticky''. Daraus ergibt sich eine maximal vierstellige Zahlenkombination in der Reihenfolge {{ic|sugo}}, wobei die Spezialrechte (''s'') bei {{ic|0}} auch weg gelassen werden können. | ||
Bei der symbolischen Notation wird für jede „Berechtigungseinheit“ angezeigt, ob diese Berechtigung gesetzt ist, wenn ja, wird der entsprechende Buchstabe dargestellt, falls nein, erscheint ein Minus-Zeichen. Zusätzlich wird die Art der Datei angegeben (normale Dateien z.B. erhalten ein | Bei der symbolischen Notation wird für jede „Berechtigungseinheit“ angezeigt, ob diese Berechtigung gesetzt ist, wenn ja, wird der entsprechende Buchstabe dargestellt, falls nein, erscheint ein Minus-Zeichen. Zusätzlich wird die Art der Datei angegeben (normale Dateien z.B. erhalten ein {{ic|-}}, Verzeichnisse ein {{ic|d}} oder Links ein {{ic|l}}). Daraus ergibt sich eine zehnstellige Zeichenkette. | ||
Die Operandennotation wird – wie die oktale Notation – benutzt, um Dateirechte zuzuweisen, wohingegen die symbolische Notation lediglich zur Anzeige der Rechte z.B. bei einem | Die Operandennotation wird – wie die oktale Notation – benutzt, um Dateirechte zuzuweisen, wohingegen die symbolische Notation lediglich zur Anzeige der Rechte z.B. bei einem {{ic|ls}} verwendet wird. Sie setzt sich aus der zu berechtigenden Klasse, und einer Addition oder Subtraktion der Rechte zusammen. | ||
Dadurch entsteht eine mindestens dreistellige Zeichenkette | Dadurch entsteht eine mindestens dreistellige Zeichenkette {{ic|NOR}} wobei {{ic|N}} ''u'', ''g'' oder ''o'' ('''u'''ser, '''g'''roup oder '''o'''ther) ist, {{ic|O}} der Operator {{ic|+}}, {{ic|-}} oder {{ic|1==}} ist, und {{ic|R}} die hinzuzufügenden, oder abzuziehenden Rechte (''r'', ''w'', und/oder ''x'') sind. Bei Verwendung von {{ic|1==}} werden die Rechte für {{ic|N}} unabhängig davon, was vorher eingestellt war, auf {{ic|R}} gesetzt. | ||
=== umask === | === umask === | ||
Die | Die {{ic|umask}} bestimmt die Standardrechte einer Datei oder eines Verzeichnisses. Sie kann interaktiv gesetzt werden, oder aber auch in der Konfigurationsdatei der verwenden Shell bestimmt werden. Die umask wird von den Standardrechten ({{ic|0666}} bei Dateien und {{ic|0777}} bei Verzeichnissen) abgezogen. | ||
Wenn man die umask auf | Wenn man die umask auf {{ic|0022}} setzt, erhalten alle Dateien automatisch Lese- und Schreibrecht für den Besitzer der Datei, und Leserechte für die Gruppe und alle anderen. Bei Verzeichnissen darf der Besitzer alles, und die Gruppe und alle anderen das Verzeichnis öffnen und dessen Inhalt anzeigen. | ||
Eine maximal sichere umask ist | Eine maximal sichere umask ist {{ic|0077}}, damit darf nur der Besitzer Dateien lesen und schreiben, und in Verzeichnissen alles. Die Gruppe und alle anderen haben keinerlei Rechte an den Dateien/Verzeichnissen. | ||
== Beispiele == | == Beispiele == | ||
Zur Rechteverwaltung werden | Zur Rechteverwaltung werden {{ic|chown}}, {{ic|chgrp}} und {{ic|chmod}} verwendet. Mittels {{ic|chown}} kann der Eigentümer einer Datei oder eines Verzeichnisses verändert werden, mittels {{ic|chgrp}} geschieht dies mit der Gruppe. {{ic|chmod}} ermöglicht das Verändern der Dateirechte entweder mittels oktaler, oder Operandennotation. | ||
=== Programme und Dateien === | === Programme und Dateien === | ||
Ein Programm soll von allen Mitgliedern der Gruppe | Ein Programm soll von allen Mitgliedern der Gruppe {{ic|staff}} ausgeführt werden, und nur der Besitzer {{ic|coder}} darf das Programm bearbeiten, alle anderen sollen keinen Zugriff haben. | ||
chown coder programmdatei | chown coder programmdatei | ||
Zeile 54: | Zeile 54: | ||
chmod 750 programmdatei | chmod 750 programmdatei | ||
Das Setzen der Gruppe durch | Das Setzen der Gruppe durch {{ic|chgrp}} kann im Stil vom {{ic|user:group}} beim Aufruf von {{ic|chown}} direkt mit angegeben werden. Ein Programm soll mit Rootrechten ausgeführt werden. Das Programm darf nur von Mitgliedern der Gruppe {{ic|admins}} ausgeführt werden, andere sollen keinen Zugriff haben. | ||
chown root:admins programmdatei | chown root:admins programmdatei | ||
Zeile 63: | Zeile 63: | ||
chmod o+r,u+w dateiname | chmod o+r,u+w dateiname | ||
Der Besitzer einer Datei soll sie lesen und schreiben können, die Mitglieder der Gruppe | Der Besitzer einer Datei soll sie lesen und schreiben können, die Mitglieder der Gruppe {{ic|users}} dürfen die Datei ebenfalls lesen und Schreiben, alle anderen sollen nur Lesezugriff haben. | ||
chgrp users dateiname | chgrp users dateiname | ||
chmod 664 dateiname | chmod 664 dateiname | ||
Es empfiehlt sich immer dann die oktale Notation zu benutzen, wenn vorherige Rechte komplett überschrieben werden sollen, und immer dann die Operandennotation zu benutzen, wenn einzelne Rechte entfernt oder gesetzt werden sollen – Auch wenn Notationen wie zum Beispiel | Es empfiehlt sich immer dann die oktale Notation zu benutzen, wenn vorherige Rechte komplett überschrieben werden sollen, und immer dann die Operandennotation zu benutzen, wenn einzelne Rechte entfernt oder gesetzt werden sollen – Auch wenn Notationen wie zum Beispiel {{ic|u+rwx,g-wx+r,o-rwx}} möglich sind, ist {{ic|740}} deutlich weniger fehleranfällig und auch kürzer. | ||
=== Verzeichnisse === | === Verzeichnisse === | ||
Zeile 75: | Zeile 75: | ||
chmod 0700 verzeichnisname | chmod 0700 verzeichnisname | ||
Benutzer in der Gruppe | Benutzer in der Gruppe {{ic|users}} sollen Dateien in einem Verzeichnis lesen können, aber nicht den Verzeichnisinhalt anzeigen können, der Besitzer darf alles, alle anderen dürfen nichts. | ||
chgrp users verzeichnisname | chgrp users verzeichnisname | ||
Zeile 84: | Zeile 84: | ||
chmod o+rx verzeichnisname | chmod o+rx verzeichnisname | ||
Es soll ein gemeinsam genutztes Verzeichnis angelegt werden, in dem Benutzer in der Gruppe | Es soll ein gemeinsam genutztes Verzeichnis angelegt werden, in dem Benutzer in der Gruppe {{ic|staff}} Dateien anlegen und löschen können, die Gruppe der Dateien automatisch angepasst wird, und die Nutzer Dateien von anderen lesen, aber nicht ändern können. Alle anderen Nutzer sollen keinen Zugriff haben. | ||
chgrp staff verzeichnisname | chgrp staff verzeichnisname | ||
chmod 3770 | chmod 3770 verzeichnisname | ||
Es ist hier zu beachten, dass die Dateirechte entweder durch Verwendung einer entsprechenden | Es ist hier zu beachten, dass die Dateirechte entweder durch Verwendung einer entsprechenden {{ic|umask}} von vornherein die richtigen Rechte besitzen, oder aber im Nachhinein von den Usern manuell {{ic|g+r}} gesetzt wird. | ||
== Siehe auch == | == Siehe auch == |
Aktuelle Version vom 27. September 2013, 01:19 Uhr
Unix-Dateirechte (nachfolgend Dateirechte oder Rechte) stellen unter UNIX und UNIX-Derivaten wie Linux den Standard-Berechtigungsmechanismus dar. Aufgrund der wenigen Optionen ist das System schnell zu verstehen, bietet aber aufgrund der großen Kombinationsvielfalt ausreichend viele Möglichkeiten, um auch auf Mehrbenutzersystemen eine solide Berechtigungsstruktur zu ermöglichen.
Häufig kommen inzwischen Zugriffskontrolllisten (Access Control Lists) zum Einsatz, die eine noch feinere Möglichkeit bieten, Zugriffsrechte zu vergeben. Auf durchschnittlichen Systemen ist dies aber nicht nötig, hier können problemlos die seit Jahrzehnten bewährten Dateirechte zum Einsatz kommen.
Berechtigte
Die Dateirechte beziehen sich auf drei Berechtigungsklassen: Eigentümer (user, u), Gruppe (group, g), und Sonstige (others, o), und greifen auch in dieser Reihenfolge. Wenn für die Gruppe der Datei nur Leserechte vergeben wurden, darf der Eigentümer der Datei trotzdem in diese schreiben, wenn das Eigentümer-Schreibrecht gesetzt wurde.
Eigentümer der Datei sind zudem die einzigen, die die Rechte einer Datei ändern können, oder der Datei eine neue Gruppe oder einen neuen Eigentümer zuweisen können. Anders als bei der Verwendung von ACLs ist bei der Verwendung der Dateirechte root immer in der Lage, Dateirechte und -Zuweisungen zu ändern.
Berechtigungen
Die Dateirechte basieren auf drei Berechtigungsstufen: Lesen (read, r), Schreiben (write, w) und Ausführen (execute, x). Diese Rechte verhalten sich bei Dateien und Verzeichnissen leicht unterschiedlich.
Wenn ein Benutzer Leserechte an einer Datei hat, so kann er diese nur lesend öffnen und keine Änderungen an der Datei vornehmen. Leserechte in einem Verzeichnis ermöglichen, darin vorhandene Dateien aufzulisten, allerdings können deren Dateirechte nicht angesehen werden, und es können auch keine Dateien erstellt oder gelöscht werden.
Schreibrechte ermöglichen dem Benutzer, Dateien zu bearbeiten. Hat ein Benutzer Schreibrechte für ein Verzeichnis, kann er Dateien und Verzeichnisse darin erstellen und löschen.
Der Benutzer kann bei gesetzter Ausführberechtigung Dateien (Programme) ausführen. Besitzt der Benutzer Ausführrechte für ein Verzeichnis, kann er sich dessen Inhalt (z.B. mittels ls
) anzeigen lassen, und sieht dann auch die Rechte der einzelnen Dateien.
Wichtig: Dateirechte und Verzeichnisrechte dürfen nicht durcheinandergebracht werden. Wenn ein Benutzer in einem Verzeichnis lesen und schreiben darf, kann er in diesem Verzeichnis Dateien löschen, unabhängig davon, welche Dateirechte sie besitzen (Ausnahmen, siehe Besondere Rechte).
Besondere Rechte
Neben read, write und execute gibt es noch Setuid (set user ID, Benutzerkennung setzen), Setgid (set group ID, Gruppenkennung setzen) und Sticky („klebrig“). Auch diese Rechte haben wieder unterschiedliche Wirkungen.
Wenn eine Datei/ein Programm das Setuid-Bit besitzt, startet der Prozess nicht mit der User-ID des startenden Benutzers, sondern mit der User-ID, die die Datei besitzt. Verzeichnisse mit gesetztem Setuid-Bit vererben ihre Gruppe auf in diesem Verzeichnis angelegte Dateien/Verzeichnisse. Setgid funktioniert genau so mit der Gruppen-ID.
Das Sticky-Bit ist nur auf Verzeichnisse anwendbar, und definiert dort, dass nur der Eigentümer einer Datei in diesem Verzeichnis dessen Rechte ändern, und die Datei löschen kann, unabhängig davon, welche Rechte das Verzeichnis selbst sonst noch besitzt.
Notation
Es gibt drei Arten der Notation von Dateirechten: Die oktale Notation, die symbolische Notation, und die Operandennotation, die in Anlehnung an die symbolische Notation funktioniert. Für konkrete Beispiele siehe dort.
Bei der oktalen Notation wird jedem Rechte-Bit ein Zahlenwert zugewiesen: r = 4, w = 2, x = 1. Das Selbe gilt für Setuid, Setgid und Sticky. Daraus ergibt sich eine maximal vierstellige Zahlenkombination in der Reihenfolge sugo
, wobei die Spezialrechte (s) bei 0
auch weg gelassen werden können.
Bei der symbolischen Notation wird für jede „Berechtigungseinheit“ angezeigt, ob diese Berechtigung gesetzt ist, wenn ja, wird der entsprechende Buchstabe dargestellt, falls nein, erscheint ein Minus-Zeichen. Zusätzlich wird die Art der Datei angegeben (normale Dateien z.B. erhalten ein -
, Verzeichnisse ein d
oder Links ein l
). Daraus ergibt sich eine zehnstellige Zeichenkette.
Die Operandennotation wird – wie die oktale Notation – benutzt, um Dateirechte zuzuweisen, wohingegen die symbolische Notation lediglich zur Anzeige der Rechte z.B. bei einem ls
verwendet wird. Sie setzt sich aus der zu berechtigenden Klasse, und einer Addition oder Subtraktion der Rechte zusammen.
Dadurch entsteht eine mindestens dreistellige Zeichenkette NOR
wobei N
u, g oder o (user, group oder other) ist, O
der Operator +
, -
oder =
ist, und R
die hinzuzufügenden, oder abzuziehenden Rechte (r, w, und/oder x) sind. Bei Verwendung von =
werden die Rechte für N
unabhängig davon, was vorher eingestellt war, auf R
gesetzt.
umask
Die umask
bestimmt die Standardrechte einer Datei oder eines Verzeichnisses. Sie kann interaktiv gesetzt werden, oder aber auch in der Konfigurationsdatei der verwenden Shell bestimmt werden. Die umask wird von den Standardrechten (0666
bei Dateien und 0777
bei Verzeichnissen) abgezogen.
Wenn man die umask auf 0022
setzt, erhalten alle Dateien automatisch Lese- und Schreibrecht für den Besitzer der Datei, und Leserechte für die Gruppe und alle anderen. Bei Verzeichnissen darf der Besitzer alles, und die Gruppe und alle anderen das Verzeichnis öffnen und dessen Inhalt anzeigen.
Eine maximal sichere umask ist 0077
, damit darf nur der Besitzer Dateien lesen und schreiben, und in Verzeichnissen alles. Die Gruppe und alle anderen haben keinerlei Rechte an den Dateien/Verzeichnissen.
Beispiele
Zur Rechteverwaltung werden chown
, chgrp
und chmod
verwendet. Mittels chown
kann der Eigentümer einer Datei oder eines Verzeichnisses verändert werden, mittels chgrp
geschieht dies mit der Gruppe. chmod
ermöglicht das Verändern der Dateirechte entweder mittels oktaler, oder Operandennotation.
Programme und Dateien
Ein Programm soll von allen Mitgliedern der Gruppe staff
ausgeführt werden, und nur der Besitzer coder
darf das Programm bearbeiten, alle anderen sollen keinen Zugriff haben.
chown coder programmdatei chgrp staff programmdatei chmod 750 programmdatei
Das Setzen der Gruppe durch chgrp
kann im Stil vom user:group
beim Aufruf von chown
direkt mit angegeben werden. Ein Programm soll mit Rootrechten ausgeführt werden. Das Programm darf nur von Mitgliedern der Gruppe admins
ausgeführt werden, andere sollen keinen Zugriff haben.
chown root:admins programmdatei chmod 4650 programmdatei
Unabhängig der bisherigen Rechte sollen alle Leserechte auf eine Datei bekommen, und der Besitzer Schreibrechte.
chmod o+r,u+w dateiname
Der Besitzer einer Datei soll sie lesen und schreiben können, die Mitglieder der Gruppe users
dürfen die Datei ebenfalls lesen und Schreiben, alle anderen sollen nur Lesezugriff haben.
chgrp users dateiname chmod 664 dateiname
Es empfiehlt sich immer dann die oktale Notation zu benutzen, wenn vorherige Rechte komplett überschrieben werden sollen, und immer dann die Operandennotation zu benutzen, wenn einzelne Rechte entfernt oder gesetzt werden sollen – Auch wenn Notationen wie zum Beispiel u+rwx,g-wx+r,o-rwx
möglich sind, ist 740
deutlich weniger fehleranfällig und auch kürzer.
Verzeichnisse
Niemand außer dem Eigentümer soll irgendwelche Rechte an dem Verzeichnis haben, zudem sollen alle Sonderrechte an dem Verzeichnis entfernt werden (dies bietet sich zum Beispiel für das Homeverzeichnis eines Benutzers an)
chmod 0700 verzeichnisname
Benutzer in der Gruppe users
sollen Dateien in einem Verzeichnis lesen können, aber nicht den Verzeichnisinhalt anzeigen können, der Besitzer darf alles, alle anderen dürfen nichts.
chgrp users verzeichnisname chmod 710 verzeichnisname
Unabhängig der bisherigen Rechte an dem Verzeichnis soll es auch allen anderen möglich sein, den Verzeichnisinhalt aufzulisten.
chmod o+rx verzeichnisname
Es soll ein gemeinsam genutztes Verzeichnis angelegt werden, in dem Benutzer in der Gruppe staff
Dateien anlegen und löschen können, die Gruppe der Dateien automatisch angepasst wird, und die Nutzer Dateien von anderen lesen, aber nicht ändern können. Alle anderen Nutzer sollen keinen Zugriff haben.
chgrp staff verzeichnisname chmod 3770 verzeichnisname
Es ist hier zu beachten, dass die Dateirechte entweder durch Verwendung einer entsprechenden umask
von vornherein die richtigen Rechte besitzen, oder aber im Nachhinein von den Usern manuell g+r
gesetzt wird.
Siehe auch
- Benutzer und Gruppen – Die Grundlage der Rechteverwaltung
Weblinks
- Access Control Lists im englischen Arch-Wiki
- umask im englischen Arch-Wiki
- Tutorial „Understanding file permissions on Unix“