Dr. Luthardt's Chemieseiten 

weiter


Valid HTML 4.01!Achtung Ein direkter Aufruf des Validators ist von https-Seiten aus nicht möglich. Hier muss die zu prüfende Seite händisch auf der Validator-Seite eingeben werden.
Valid CSS!Achtung Ein direkter Aufruf des Validators ist von https-Seiten aus nicht möglich. Hier muss die zu prüfende Seite händisch auf der Validator-Seite eingeben werden.

last modified
18.04.2024

Ihr Browser unterstützt kein CSS. Das für die Darstellung dieser Webseiten intendierte Seitenlayout wird deshalb nicht angewandt / angezeigt. Ist dies nicht Ihre Absicht, so haben Sie wahrscheinlich in Ihrem Browser den Autorenmodus deaktiviert. Dennoch sind diese Seiten les- und navigierbar.
Texte der Infoboxen werden inline ausgegeben.
Bitte erlauben Sie den Autorenmodus oder verwenden Sie einen CSS-fähigen Browser, wenn Sie diese Seiten so anschauen möchten, wie sie vom Autor gestaltet wurden.

Tipps und Tricks

von Michael Luthardtauthor: Michael Luthardt

Zugriffsrechte für Dateien und Verzeichnise

Wer sein Ubuntu etwas ambitionierter nutzen möchte, kommt um das Arbeiten auf der Kommandozeile nicht herum; und hierzu ist die Kenntnis der Unix-Zugriffsrechte (permissions, file mode) unerläßlich.

Natürlich gibt es die man-pages für chmod, chown und chgrp und schon viele Beiträge im Internet. Selten trifft man aber eine wirklich vollständige Übersicht. In einer solchen muss es Erklärungen zu u, g, o, a, r, w, x, X, s, S, t und T und der vierstelligen oktalen Darstellung geben.

Es erleichtert das Verständnis der Wirkung der Zugriffsrechte auf Verzeichnisse, sich zu erinnern: Verzeichnisse sind Dateien und müssen, um zu funktionieren, ausführbar sein.

Zugriffsrechte sind r, w: Leserecht, Schreibrecht. x kennzeichnet eine Datei als ausführbar1. Angezeigt werden die Zugriffsrechte mit ls -l; weiteres siehe hierzu in der ls man-page.

UNIX Standard-Zugriffsrechte
Zugriffs-
recht
Wirkung auf
DateiVerzeichnis
r Inhalt lesbar nur Dateinamen lesbar
w Inhalt änderbar Dateien anlegen, löschen
x ausführbar traversierbar2
r-x Dateien und deren Eigenschaften lesbar

Im Prinzip sind die Wirkungen der Rechte additiv; rw bedeutet z. B., dass eine Datei les- und beschreibbar ist. Für Verzeichnisse gibt es jedoch eine Ausnahme. r-x ist mehr als Dateinamen auflisten und traversieren, diese Rechtekombination erlaubt das Auflisten der Dateieigenschaften und damit das Verhalten eines Verzeichnisses, wie man es üblich gewohnt ist.

Die Zugriffsrechte werden im inodeinformation node (dt. etwa Informationsbereich): Datenstruktur, in der alle für die Beschreibung und Verwaltung einer Datei notwendigen Informationen – außer der Dateiname – gespeichert sind (Metadaten). Jeder inode erhält eine innerhalb des Dateisystems eindeutige Nummer. Die Directory-Datei enthält die Zuordnung der Dateinamen zu den inodes.
Damit wird auch klar, warum das Recht r auf Directories zwar die Dateinamen auflistet, nicht aber weitere Dateieigenschaften – hierzu wäre die Ausführung von Operationen auf den inode notwendig.
im mode-Feld gespeichert.


Diese Rechte können mit dem Eigentümer u einer Datei3, der Gruppe g, anderen o oder gleichzeitig allen a 4 mit dem Befehl chmodchange mode gegeben oder entzogen werden. Näheres findet sich in der man-page für chmod.

Zum Wechsel von Besitzer und Gruppe für eine Datei genügt es übrigens, sich chownchange owner zu merken; chown .groupname datei wechselt die Gruppe, chown username.groupname datei beides.

X ist nur von Bedeutung für das rekursive Zuweisen der Ausführungsberechtigung mit dem Befehl chmod -R. Im Unterschied zur Benutzung von x wird die Ausführungsberechtigung nur Verzeichnissen zugewiesen oder Dateien, die für u oder g oder o bereits ausführbar sind.
Ein großes X kann nie in der Anzeige von Berechtigungen mit ls -l auftauchen.

Sonderrechte
Über die grundlegenden Unix-Rechte r, w und x für jeweils u, g und o hinaus gibt es die Möglichkeit, im mode-Feld drei weitere Eigenschaften festzulegen: SUID, SGID und das sticky bit.

SUID, Set User ID, bedeutet, dass eine binäre ausführbare Datei auch bei Aufruf durch einen Nicht-Eigentümer mit den Rechten des Eigentümers ausgeführt wird. Dies nutzt man z. B. für die Datei /usr/bin/passwd. So kann mit diesem Programm jeder sein eigenes Passwort in der nur für root schreibbaren Datei /etc/shadow ändern. Ein weiteres Beispiel finden Sie in der Auswahlliste unter Creation Time.
Für reguläre (nicht ausführbare) Dateien, ausführbare Shellskripte5 und Verzeichnisse ist SUID wirkungslos.
Eingeschaltet wird das SUID-Bit mit chmod u+s Datei.

SGID, Set Group ID, bewirkt für Verzeichnisse eine rekursive Vererbung der Gruppenzugehörigkeit auf alle neu angelegten untergeordneten Verzeichnisse und Dateien. Eine binäre ausführbare Datei wird mit den Rechten ihrer Gruppe ausgeführt wird.
Für reguläre (nicht ausführbare) Dateien und ausführbare Shellskripte ist SGID wirkungslos.
Eingeschaltet wird das SGID-Bit mit chmod g+s {Verzeichnis | Datei}.

Das sticky bit, klebrige Bit, wird nur für Verzeichnisse gesetzt. Es bewirkt, dass in Verzeichnissen, für die andere/alle Benutzer Schreibrechte haben6, Dateien nur von ihren Besitzern, dem Besitzer des Verzeichnisses und dem Superuser (root) gelöscht werden können. Ist der Verzeichnisbesitzer, der eine fremde Datei löschen will, nicht root, erfolgt für rm ohne Option -f eine Sicherheitsabfrage.
Genutzt wird dies z. B. für das /tmp-Verzeichnis.
Für Dateien ist das sticky bit wirkungslos.
Eingeschaltet wird das sticky bit mit chmod o+t Verzeichnis.

In der Auflistung der Dateirechte durch ls -l gibt es nur je drei Plätze rwx für u, g und o. Um nun die Sonderrechte ebenfalls mit ls anzeigen zu können, wird für gesetztes SUID und SGID das x für u und g durch s ersetzt, beim sticky bit das zu o gehörende x durch t.
Sollten die Dateien nicht ausführbar sein, erfolgt die Ersetzung der - durch S bzw. T, um die Standardrechte erkennen zu können. Rechtekombinationen, die zu S führen, kommen standardmäßig nicht vor und T gibt es nur für wenige Systemverzeichnisse.

In Kürze zusamengefasst:

Sonderrechte
Sonder-
recht
Wirkung auf
reguläre
Dateien
ausführbare
Dateien
Verzeichnisse
SUIDkeineausführen mit den
Rechten des Eigentümers
keine
SGIDkeineausführen mit den
Rechten der Gruppe
Vererbung der Gruppen-
eigentümerschaft
sticky
keinekeinelöschen von Dateien nur durch
ihren Eigentümer

Für welche Dateien Sonderrechte gesetzt sind, findet man mit den Befehlen

sudo find / -perm -u=s -exec ls -ld --color=always {} \;
sudo find / -perm -g=s -exec ls -ld --color=always {} \;
sudo find / -perm -o=t -exec ls -ld --color=always {} \;

Es ist durchaus interessant, sich für sein System dies einmal anzuschauen.

In Skripten lassen sich einzelne Rechte einer Datei mit [ -y file ] ermitteln. y ist durch r, w oder x für die Standardrechte und mit u, g oder k für die Sonderrechte (SUID, SGID, sticky bit) zu ersetzen.

Neben der mnemotechnischen Schreibweise rwx für die Dateirechte gibt es die oktale Darstellung der vier Rechtegruppen in der Form 0000. Die erste Ziffer steht für die Sonderrechte und wird nur angezeigt, wenn wenigstens eines dieser Rechte gesetzt ist. Die weiteren Ziffern stehen für die Rechte rwx von u, g und o.

Oktalwerte
SUIDr4
SGIDw2
stickyx1

Der Zahlenwert ergibt sich aus der Addition der Werte entsprechend der Tabelle.
Natürlich kann die oktale Schreibweise auch in Befehlen wie chmod 1777 Verzeichnis genutzt werden. In dem Fall würde Verzeichnis öffentlich Les- und Schreibbar und hätte das sticky bit gesetzt.

Möchte man die Zugriffsrechte oktal anzeigen, kann man die weiter Funktion lo in seine .bashrc einbauen. Testen auf den kompletten Rechtesatz läßt sich z. B. mit [ $(stat --format=%a filespec) == 1777 ].

Im weiteren Sinne gehören zu den Zugriffsrechten unter Linux die in ext3/ext4, xfs und anderen Dateisystemen vorhandenen ACL und die weniger bekannten Dateiattribute.
Mit beiden lassen sich Zugriffsrechte weiter differenzieren. ACL sind besonders nützlich für Samba-Server.
Die Attribute sind nicht in allen Systemen vollständig implementiert. Zwei besonders interessante sind jedoch immer benutzbar: immutable und append7 (only). i macht eine Datei unveränderbar und a beschränkt das Ändern einer Datei auf das Hinzufügen neuer Daten. So kann man mit a ohne SUID oder SGID z. B. eine Logdatei gemeinsam nutzen oder für ein Verzeichnis erreichen, dass dort nur Dateien neu angelegt und mittels append erweitert, nicht aber geändert oder gelöscht werden dürfen.
Hat root ein immutable Attribut gesetzt, kann auch root die Datei nicht mehr löschen, bevor es wieder aufgehoben wird. Achtung Das komplette Directory, in dem sich eine immutable Datei befindet, kann allerdings von jedem, der die dafür notwendigen Rechte hat, innerhalb des DateisystemsEin Verschieben des Ordners ändert weder die inodes der in ihm enthaltenen Dateien noch deren Inhalt.
Dies führt zu dem zunächst verblüffend erscheinenden Effekt, das sich ein Ordner verschieben läßt, auf dessen sämtliche Dateien man keinerlei Zugriffrechte hat.
verschoben werden!8

Weitere Informationen hierzu findet man in den man-pages zu setfacl, getfacl, chattr und lsattr.

Da getfacl nicht zwischen Dateien und Verzeichnissen unterscheidet, kann man sich zur besseren Übersicht Funktionen analog lld oder llf schreiben.
Für lsattr ist es zweckmäßig, mit | grep -vE '-{18}' die Ausgabe auf die wenigen Dateien zu beschränken, für die tatsächlich Attribute gesetzt sind.


           
1 read, write, execute
2 Traversieren bedeutet das Recht, in untergeordnete Verzeichnisse hineinwechseln zu können, ohne für das übergeordnete Verzeichnis Leserecht zu besitzen. Lesen von und Schreiben in Dateien ist im untergeordneten Verzeichnis möglich – Dateirechte vorausgesetzt –, nicht jedoch eine Pfadnamenvervollständigung durch das nur traversierbare Verzeichnis.
3 Im Folgenden schließt Datei Verzeichnis mit ein, falls nicht extra eingeschränkt wird.
4 user, group, other, all
5 Die bash reicht die Sonderrechte nicht an innerhalb des Skripts befindliche binäre Befehle weiter; es müsste für die bash selbst SUID oder SGID gesetzt werden, was sich selbstverständlich verbietet. Für einen Befehl in einem Skript ist das SUID wirksam.
6 Zur Erinnerung: Schreibrecht im Verzeichnis bedeutet anlegen und löschen von Dateien daselbst.
7 Wirkliches append wie command >> file oder cat >> file << eof. Ein weiterschreiben von Dateien mit Editoren gelingt nicht, weil Editoren die Datei zum Schreiben öffnen, was für gesetztes a(ppend) ja verboten ist.
8 Somit läßt sich ein Ordner, der eine immutable Datei enthält, im virtuellen Desktop-Filesystem löschen, denn das ist nur ein Verschieben in den Trash-Ordner. Danach ist ist es nicht mehr möglich, den Mülleimer zu leeren! Abhilfe: Das Attribut der Datei auf der Konsole im Trash-Ordner zurücksetzen.

03.12.2007/28.10.2013

 nach oben

Änderungen dieser Seite verfolgen:

it's private by ChangeDetection