Datei Berechtigungen verstehen ?

Post Reply
Message
Author
Rossi

Datei Berechtigungen verstehen ?

#1 Post by Rossi »

Ich habe gerade mein Verständnis für die Berechtigungen verloren.

Ich habe einen Ordner, der hat 777 (rwxrwxrwx). Die Dateien darunter haben 755 (rwxr-xr-x).

Besitzer/Gruppe ist root.

Jetzt kann ein Benutzer den gesammten Inhalt des Ordners löschen, bis auf den Ordner selber. Und das, wo er Schreibberechtigung auf den Ordner hat, aber nicht auf die darunterliegenden Dateien ?

Das heißt, für die Dateien gilt die 777 vom Ornder, und für den Ordner selber die Berechtigungen des darüberliegenden Ordners. Kann mir mal bitte jemand den Sinn erklären ?

Um die Verwirrung zu komplettieren, darf der Benutzer aber eine Datei, die z.B. 644 (rw-r--r--) hat, nicht direkt ausführen (außer mit vorangestelltem "sh" bei Shell Skripten - aber er darf löschen). Also werden die Berechtigungen doch nicht zu 100% übernommen ?!

kann mir also bitte mal jemand das Prinzip Berechtigungen (und deren Vererbung) erklären ?

Jochen

Re: Datei Berechtigungen verstehen ?

#2 Post by Jochen »

Nix Vererbung, nur Konsequenz. <img src="http://www.pl-forum.de/UltraBoard/Images/Happy.gif" border="0" align="middle">

Allerdings muss man dazu wissen, dass unter UNIX Verzeichnisse nur eine besondere Art von Datei sind. Man kann sich so eine "Verzeichnis-Datei" als Tabelle vorstellen, in der Dateinamen zu Inode-Nummern zugeordnet werden. Der Name einer Datei gehört also nicht zu deren Eigenschaften wie Eigentümer, Zugriffsrechte, Zeitstempel usw. - die werden in der Inode gespeichert, aber nicht der Dateiname! Das ist auch der Grund dafür, dass man mittels Hard Links (man ln) über mehrere unterschiedliche Namen auf ein und dieselbe Datei zugreifen kann. In der Inode wird lediglich ein Link Counter mitgeführt, der angibt, wie viele male aus irgendwelchen Verzeichnissen auf diese Inode verwiesen wird.

So weit, so gut.

Eine Datei zu löschen ist nun also nix anderes, als aus dem Verzeichnis den entsprechenden "Tabelleneintrag" rauszuschmeissen. Was muss man haben, um den Inhalt einer Datei (und damit auch eines Verzeichnisses) ändern zu können? Richtig, Schreibrecht. Folgerung: Jeder User, der Schreibrecht auf ein Verzeichnis hat, darf dort sämtliche Dateien löschen. Er darf ggf. nicht deren Inhalt verändern (das ist ja von den Zugriffsrechten der Datei abhängig), aber löschen darf er sie. Weiterhin erlaubt Schreibrecht in einem Verzeichnis, dass der User dort auch neue Dateien anlegen darf - er setzt einfach einen weiteren Tabelleneintrag in das Verzeichnis.

Auch der umgekehrte Fall ist möglich: Ein User hat kein Schreibrecht auf das Verzeichnis, dann kann er dort keine Dateien anlegen oder löschen. Hat er aber Schreibrechte auf eine Datei in diesem Verzeichnis, darf er deren Inhalt ändern (auch auf Länge 0 setzen).

Mit den anderen Rechten hat das nix zu tun.

Noch mal kurz augelistet:

<li>Leserecht auf Verzeichnis: Lesen der enthalten Dateinamen ist erlaubt, d.h. "ls verzeichnis" funktioniert.
<li>Schreibrecht auf Verzeichnis: Dateien im Verzeichnis dürfen gelöscht oder neu angelegt werden.
<li>Ausführrecht auf Verzeichnis: Man darf es betreten, d.h. "cd verzeichnis" funktioniert.

OK?

Jochen

Post Reply