Ordner mit NUR Schreibberechtigung ist nutzlos… richtig?

10

Nachdem ich jahrelang mit Linux gearbeitet hatte und etwas Freizeit hatte, beschloss ich, einige Grundlagen zu überdenken. Also las ich das Zeug über Berechtigungen (ohne den Quellcode zu überprüfen) und seine Sonderfälle für Ordner erneut und fand eine neue (zumindest für mich ...) Denkweise über Ordnerberechtigungen (für einen bestimmten Benutzer /). Gruppe / andere): Ich stelle mir einen Ordner als Tabelle mit zwei Spalten vor:

filename | inode    
foo      | 111  
bar      | 222 

Die Leseberechtigung bedeutet, dass Sie die linke Spalte der Tabelle lesen (und auflisten) können, die Schreibberechtigung dem Hinzufügen und Entfernen von Einträgen zur Tabelle entspricht und die Ausführungsberechtigung dem Übersetzen vom Dateinamen zum Inode entspricht. dh Sie können auf den Inhalt des Ordners zugreifen .

Ich habe einige Experimente durchgeführt, und die Ergebnisse stimmen alle mit meiner "Weltanschauung" überein, aber eine Schlussfolgerung scheint unausweichlich: Ein Ordner mit Berechtigungen d-w-------ist völlig nutzlos. Ausarbeitung: Sie können den Inhalt nicht auflisten, Sie können keine Dateien lesen, von denen Sie wissen, dass sie darin vorhanden sind (weil Sie keine Namen in Inodes übersetzen können), Sie können keine Dateien entfernen oder umbenennen oder hinzufügen, da dies wiederum eine Übersetzung implizieren würde und Sie können nicht einmal Hardlinks hinzufügen (da dies vermutlich das Hinzufügen eines Namens sowie einer Inode-Nummer bedeuten würde, was bedeutet, dass Sie beide kennen würden, was wiederum den Zweck des Aufhebens der Ausführungsberechtigung verletzt). . Und wenn sich Dateien in einem solchen Ordner befinden, können Sie diesen Ordner natürlich auch nicht löschen, da Sie seinen Inhalt nicht löschen können.

Also ... ich möchte zwei Fragen stellen:

  1. Ist meine Analogie richtig oder ist es ein großer Fehler?
  2. Gibt es eine Situation, in der es unabhängig von der vorherigen Antwort angemessen ist, einen Ordner mit den beschriebenen Berechtigungen zu haben?
wmnorth
quelle
3
Es kann sein, dass nicht jede Kombination nützlich ist. Zum Beispiel haben wir im Englischen Wörter, diese Wörter bestehen aus Buchstaben, nicht alle Kombinationen bilden gültige Wörter. zB aoeuidhtns
ctrl-alt-delor
Könnten Sie auf diese Weise nicht zB eine Datei erstellen? Sie fordern Speicherplatz und Inode des Dateisystems an und nachdem Sie Name und Inode in Ihre Verzeichnistabelle geschrieben haben. Sie sollten nur das Problem haben, 2 Dateien mit dem gleichen Namen, aber unterschiedlichen Inode im gleichen Verzeichnis zu haben ...
Hastur
@ Hastur: Das habe ich auch gedacht, aber nachdem mkdir foo ; chmod 200 foo ; touch foo/barich es bekommen habe touch: cannot touch ‘foo/bar’: Permission denied. Dies geschieht auch dann, wenn foo / bar bereits vorhanden ist. Ich teste in Bash (Arch Linux).
Wmnorth
Mein Fehler Ich dachte, Sie schreiben das System aus dem Quellcode neu ... wir können nicht zwei Dateien mit demselben Namen im selben Verzeichnis haben, daher ist es logisch verboten, die Möglichkeit zum Erstellen zu geben.
Hastur
Ja, es ist nutzlos. Die Inode-Auflösung erfordert auch "x" und "r", daher ist in Verzeichnissen sogar ein einziges "rw" nutzlos.
Peter - Wiedereinsetzung Monica

Antworten:

3

Ihr Verständnis ist ziemlich richtig. Eine bessere Möglichkeit, sich die Ausführungsberechtigung vorzustellen, besteht darin, dass Sie Dinge mit einem Datei- oder Verzeichnisnamen im Verzeichnis tun können (außer nur den Namen selbst zu lesen). Die meisten dieser Dinge beinhalten das Übersetzen des Namens in einen Inode, aber auch das Erstellen neuer Namen und das Entfernen vorhandener Namen.

Eine Schreibberechtigung für das Verzeichnis ohne Ausführung ist daher ziemlich nutzlos, da Sie nichts schreiben können, wenn Sie nicht auf die darin enthaltenen Dateien zugreifen können.

Barmar
quelle
1
  1. Ist meine Analogie richtig oder ist es ein großer Fehler?

Ich denke, es ist richtig, Sie benötigen wx-Berechtigung, um in einen Ordner schreiben zu können.

  1. Gibt es eine Situation, in der es unabhängig von der vorherigen Antwort angemessen ist, einen Ordner mit den beschriebenen Berechtigungen zu haben?

Möglicherweise haben Sie einen Prozess, der Informationen in einen Ordner schreibt, und ein anderer verwendet sie, aber Sie müssen verhindern, dass der Writer andere an diesem Ort gespeicherte Informationen liest.

Die zuvor beschriebene Situation ist in Einheiten zur automatischen Geschwindigkeitsüberwachung nützlich. Diese Einheiten müssen einen Überprüfungsprozess durchlaufen, bei dem der Staatsbeamte die Verfälschungsmöglichkeiten minimieren muss. Einige automatische Geschwindigkeitsüberwachungseinheiten verfügen über eine externe SD-Speicherkarte, auf der das System Verstoßregister speichert. Es könnte aber auch eine "magische" Konfigurationsdatei gespeichert werden, die das Verhalten der verifizierten Einheit illegal ändert. Der Prozess, der das Verletzungsregister schreibt, darf also nichts von der SD-Speicherkarte lesen können.

Hier ist es ein Beispiel, zuerst nur mit Schreiben, dann, wie es mit wx funktioniert:

Montieren Sie ein Gerät

root@leon:/media# mount -o umask=527,uid=enforcer,gid=ftp /dev/sdb1 /media/pen/
root@leon:/media# ls /media/pen/ -la
total 44
d-w-r-x--- 10 enforcer ftp  4096 Dec 31  1969 .
drwxr-xr-x  8 root     root 4096 Oct 17 16:14 ..

Versuchen Sie dann mit User Enforcer, eine neue Datei zu schreiben

enforcer@leon:~$ touch /media/pen/hola
touch: cannot touch ‘/media/pen/hola’: Permission denied

mit wx aushängen und wieder einbauen

root@leon:/media# umount /dev/sdb1
root@leon:/media# mount -o umask=427,uid=enforcer,gid=ftp /dev/sdb1 /media/pen/
root@leon:/home/jjorge# ls /media/pen/ -la
total 44
d-wxr-x--- 10 enforcer wim  4096 Dec 31  1969 .
drwxr-xr-x  8 root     root 4096 Oct 17 16:14 ..

Versuch es noch einmal

enforcer@leon:~$ touch /media/pen/hola
enforcer@leon:~$ ls /media/pen/
ls: cannot open directory /media/pen/: Permission denied
enforcer@leon:~$ cat /media/pen/hola
cat: /media/pen/hola: Permission denied

ftp@leon:/home/jjorge$ ls /media/pen/ -la
total 44
d-wxr-x--- 10 enforcer ftp  4096 Oct 20 10:20 .
drwxr-xr-x  8 root     root 4096 Oct 17 16:14 ..
--wxr-x---  1 enforcer wim     0 Oct 20 10:20 hola

Mit dieser Konfiguration können Sie jetzt schreiben

Javier Jorge
quelle