Das Rechtesystem von Linux
Notationen
Die Rechte unter Linux können für jede Datei oder Ordner einzeln festgelegt werden. Dabei gibt es 3 Benutzergruppen: User(u), Gruppe(g), Others(o). Die Rechte können nun für jede der 3 Benutzergruppen einzeln eingestellt werden. Es stehen 3 Rechte zur Verfügung: Lesen, Schreiben , Ausführen.
Darüber hinaus gibt es noch 3 Sonderrechte, die erwähnt werden müssen.
Sticky Bit:
Wenn gesetzt, kann die Datei nur noch vom Besitzer oder von root gelöscht werden. Es findet z.B beim Verzeichnis /tmp Anwendung, da hier kein Benutzer die Dateien eines anderen Benutzers im gemeinsamen Verzeichnis löschen soll. http://de.wikipedia.org/wiki/Sticky_bit
SUID Bit
Wenn gesetzt, läuft eine ausführbare Datei dann immer unter den Rechten Ihres Besitzers. http://de.wikipedia.org/wiki/Setuid
SGID Bit
Wie SUID, nur dass hier die Datei mit den Rechten der Gruppe ausgeführt wird. Bei Verzeichnissen entsteht eine Vererbung an die Unterverzeichnisse. http://de.wikipedia.org/wiki/Setgid
Numerische Notation
Jedes Recht bekommt einen Zahlenwert zugewiesen. Read(4), Write(2), Execute(1). Dann werden für jede Benutzergruppe die Rechte addiert, und die 3 Benutzergruppen hintereinander geschrieben.
Beispiele einfache numerische Notation:
| User | Group | Others | Rechte | ||||||
| r(4) | w(2) | e(1) | r(4) | w(2) | e(1) | r(4) | w(2) | e(1) | |
| x | x | x | x | 644 | |||||
| x | x | 011 | |||||||
| x | x | x | x | 611 | |||||
| x | x | 600 | |||||||
| x | x | x | x | x | x | x | 755 | ||
Die 3 Sonderrechte Suid, Sgid und Sticki-Bit werden meist nicht mit angegeben, besonders nicht, wenn sie ohnehin nicht gesetzt sind. Sind sie doch gesetzt, werden sie in der numerischen Notation als weitere Gruppe links angefügt. Das ist ohne weiteres möglich, da alle 3 Rechte immer nur für die ganze Datei/Ordner gesetzt werden können und nicht für jede Benutzergruppe einzeln. Die Werte werden dabei wie folgt festgelegt.
Sticki Bit(1), SGID(2), SUID(4)
Beispiele erweiterte numerische Notation
| Sonder | User | Group | Others | Rechte | ||||||||
| suid(4) | sgid(2) | sb(1) | r(4) | w(2) | e(1) | r(4) | w(2) | e(1) | r(4) | w(2) | e(1) | |
| x | x | x | x | x | x | x | 7644 | |||||
| x | x | x | x | 5011 | ||||||||
| x | x | x | x | x | x | 3611 | ||||||
| x | x | x | x | 6600 | ||||||||
| x | x | x | x | x | x | x | x | 2755 | ||||
Symbolische Notation
Bei der symbolischen Notation werden die Rechte rwx für alle 3 Benutzergruppen hintereinander geschrieben. Ist das entsprechende Recht nicht gesetzt, wird anstelle des Buchstaben ein Bindestrich geschrieben.
Es entsteht ein String mit neun Zeichen. Die erweiterten Dateirechte werden in diesen eingebaut, indem das x an Position drei oder sechs durch ein s ersetzt wird, wenn das Setuid-Bit bzw. das Setgid-Bit gesetzt ist. Ist das Sticky-Bit gesetzt, dann wird es durch ein t anstelle des letzten x an Position neun ersetzt. Sind die Ausführ-Rechte für die entsprechenden Benutzerklassen nicht gesetzt, werden die jeweiligen s bzw. t großgeschrieben.
Man kann sich das leicht mit einer Eselsbrücke merken. Das s oder t muss klein geschrieben werden, wenn dahinter noch ein x sitzt. Für einen Großbuchstaben reicht der Platz nicht aus, da sich 2 Buchstaben das Feld teilen.
Abschließend muss noch erwähnt werden, dass vor dem ganzen Block immer noch der Dateityp angegeben ist. Folgende Datentypen sind möglich:
| - | Datei ist eine normale Datei |
| d | Datei ist ein Directory |
| l | Softlink |
| Sonder | User | Group | Others | Rechte | ||||||||
| suid(4) | sgid(2) | sb(1) | r(4) | w(2) | e(1) | r(4) | w(2) | e(1) | r(4) | w(2) | e(1) | |
| x | x | x | x | x | x | x | --rwSr-Sr-T | |||||
| x | x | x | x | ---S--x--t | ||||||||
| x | x | x | x | x | x | drw---s--t | ||||||
| x | x | x | x | -rwS--S--- | ||||||||
| x | x | x | x | x | x | x | x | -rwxr-sr-x | ||||
Befehle
chmod
chmod ändert die Rechte an einer Datei oder einem Verzeichnis. Dabei kann man sich entweder der numerischen Notation bedienen:
chmod 755 Dateiname
chmod 1775 Dateiname
Oder man bedient sich der Zeichen der symbolischen Notation. Dabei gibt es noch einige Sonderfunktionen gegenüber der normalen Notation, die jetzt erläutert werden.
Die Benutzergruppen werden wieder durch User(u), Group(g), und Others(o) repräsentiert. Zusätzlich gibt es noch all(a), welches alle drei Benutzergruppen umschließt.
| User (u) | All (a) |
| Group (g) | |
| Others (o) |
Danach kommt ein Steuerzeichern(+-=), das aussagt ob die nachstehenden Rechte für diese Gruppe hinzukommen(+), entfallen(-) oder ohne Berücksichtigung der bisherigen Einstellungen(=) gesetzt werden sollen.
| + | Die nachstehenden Rechte werden für die Benutzergruppe gesetzt. |
| - | Die nachstehenden Rechte werden für die Benutzergruppe entfernt. |
| = | Rechte werden ohne Berücksichtigung der bisherigen Einstellungen für diese Benutzergruppe geändert. |
Natürlich gibt es auch wieder die entsprechenden Rechte read(r), write(w), execute(x), Sticky Bit(t) und SUID/SGID(s)
Beispiele:
| chmod a+x Dateiname | User, Group und Others bekommen ein Ausführungsrecht. |
| chmod a-rw Dateiname | User, Group und Others wird das Leserecht und das Schreibrecht entzogen, wenn vorhanden. Sonst keine Änderung |
| chmod u-xg-xo=rw Dateiname | Der User bekommt das Ausführungsrecht entzogen. Die Gruppe bekommt das Ausführungsrecht entzogen. Bei den Others wird lesen und schreiben gesetzt, ausführen wird entfernt |
| chmod u=rwxg+rxo-rwx Dateiname | Der User bekommt alle Rechte. Die Gruppe bekommt lesen und ausführen. Den Others werden alle Rechte entzogen. |
| chmod g+s Dateiname | Das SGID wird gesetzt. SGID, weil es in der Group gesetzt wird. |
| chmod u-s Dateiname | Das SUID wird gesetzt. SUID, weil es beim User gesetzt wird. |
| chmod o+t Dateiname | Das Sticky Bit wird gesetzt. Gemäß der Notation muss das in der Gruppe Others erfolgen. |
chown
Mit chown können User und Gruppe nachträglich geändert werden. Dabei kann der Name oder die jeweilige ID angegeben werden.
chown [OPTIONEN] [Besitzer][:[Gruppe]] Datei
Der Schalter -R ändert auch entsprechend die Dateien in den Unterverzeichnissen.
| besitzer_name:gruppen_name | Benutzer und Gruppe werden auf einen Schlag gesetzt |
| :gruppen_name | Die Gruppe wird gesetzt, wohingegen der Besitzer unverändert bleibt |
| besitzer_name: | Der Besitzer wird auf besitzer_name - und die Gruppe auf die Standardgruppe des eingeloggten Benutzers gesetzt |
| besitzer_name | Ausschließlich der Besitzer wird gesetzt |
chgrp
Wie chown, nur dass ausschließlich die Gruppe geändert wird.
chgrp [Option] Gruppe Datei
Rechte in der Praxis
Rechte eines Verzeichnisses
| Verzeichnis- recht | Inhalt listen erlaubt? | Betreten erlaubt? | Datei anlegen erlaubt? | Datei löschen erlaubt? | Datei holen mit cp | Datei überschreiben mit cp | |
| Recht des Verzeichnisses | Recht der Datei | ||||||
| 000 | d--- --- --- | ||||||
| 100 | d--x --- --- | Ja | Ja | Ja | |||
| 200 | d-w- --- --- | ||||||
| 300 | d-wx --- --- | Ja | Ja | Ja | Ja | Ja | |
| drwx -wx --- (Group User) | Ja | Ja | Ja | Ja | |||
| drwx rwx --t (Group User) | Ja | Ja | Ja | Ja* | Ja | Ja | |
| drwx rwx --t (Owner) | Ja | Ja | Ja | Ja | Ja | Ja | |
| 400 | dr-- --- --- | Ja(eingeschr) | |||||
| 500 | dr-x --- --- | Ja | Ja | Ja | Ja | ||
| 600 | drw- --- --- | Ja(eingeschr) | |||||
| 700 | drwx --- --- | Ja | Ja | Ja | Ja | Ja | Ja |
| Fazit benötigtes Recht: | r eingeschr rx voll | x des Verz. | wx des Verz. | wx des Verz. | x der x von | x der x von | |
Datei holen und schreiben oder überschreiben sind Rechte der Datei. Befindet sich die Datei in einem Verzeichnis, muss dieses mindestens ein x gesetzt haben.
Rechte einer Datei
| Datei- recht | Datei lesen anzeigen kopieren | Ändern und verlassen des Editors mit :wq | Ändern und verlassen des Editors mit :w! | Datei ausführen Übersetztes C-Prog | Datei ausführen Shell Script | ||
| User | Group | ||||||
| 000 | ---- --- --- | Ja | |||||
| 110 | ---x --x --- | Ja | Ja | ||||
| 220 | --w- -w- --- | Ja | |||||
| 330 | --wx -wx --- | Ja | Ja | ||||
| 440 | -r-- r-- r-- | Ja | Ja | ||||
| 550 | -r-x r-x --- | Ja | Ja | Ja | Ja | ||
| 660 | -rw- rw- --- | Ja | Ja | Ja | Ja | ||
| 770 | -rwx rwx --- | Ja | Ja | Ja | Ja | Ja | Ja |
| Fazit benötigtes Recht: | r | rw | Geht immer | rw | x | rx | |
Der Besitzer einer Datei darf diese immer mit w! überschreiben.
Aktualisiert (Sonntag, den 11. April 2010 um 20:05 Uhr)