GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Warum können Dateien nicht von Inode manipuliert werden?

Sicherheitsgründe -- um auf eine Datei zuzugreifen, benötigen Sie die Berechtigung für die Datei sowie die Berechtigung, alle Verzeichnisse vom Stammverzeichnis aus zu durchsuchen, die erforderlich sind, um an die Datei zu gelangen. Wenn Sie per Inode auf eine Datei zugreifen könnten, könnten Sie die Prüfungen der enthaltenen Verzeichnisse umgehen.

Auf diese Weise können Sie eine Datei erstellen, auf die eine Reihe von Benutzern (oder eine Gruppe von Gruppen) und niemand sonst zugreifen kann. Erstellen Sie Verzeichnisse, auf die nur die Benutzer zugreifen können (ein Verzeichnis pro Benutzer), und dann fest die Datei in all diese Verzeichnisse verlinken -- auf die Datei selbst kann jeder zugreifen, aber nur jemand, der Suchberechtigungen für eines der Verzeichnisse hat, auf die sie verlinkt ist.


Einige Betriebssysteme tun diese Einrichtung haben. Beispielsweise benötigt OS X es, um den Carbon File Manager zu unterstützen, und unter Linux können Sie debugfs verwenden . Natürlich können Sie dies auf jedem UNIX von der Befehlszeile aus über find -inum tun , aber der wahre Grund, warum Sie nicht per Inode auf Dateien zugreifen können, ist, dass es nicht besonders nützlich ist. Das tut es Umgehen Sie Dateiberechtigungen, denn wenn es eine Datei gibt, die Sie lesen können, in einem Ordner, den Sie nicht lesen oder ausführen können, können Sie sie durch Öffnen des Inodes entdecken.

Der Grund, warum es nicht sehr nützlich ist, ist, dass Sie eine Inode-Nummer über einen *stat() finden müssen anrufen, an welchem ​​Punkt Sie bereits haben der Dateiname (oder ein offenes fd) ... oder Sie müssen die Nummer erraten.


Als Antwort auf Ihren Kommentar:Um "eine Datei zu übergeben", können Sie fd verwenden, indem Sie AF_LOCAL-Sockets mit SCM_RIGHTS übergeben (siehe man 7 unix ).


Linux
  1. Finden Sie Dateien und Verzeichnisse unter Linux mit dem Befehl find

  2. Warum kann Rm schreibgeschützte Dateien entfernen?

  3. Können überschriebene Dateien wiederhergestellt werden?

  4. Warum kann ich unter Linux keine Dateien erstellen, die größer als 2 GB sind?

  5. Wie kann ich mehrere Dateien in VIM bearbeiten?

Ls-Befehl in Linux (Dateien und Verzeichnisse auflisten)

So kopieren Sie Dateien und Verzeichnisse unter Linux

So verschieben Sie Dateien und Verzeichnisse in Linux (mv-Befehl)

So kopieren Sie Dateien und Verzeichnisse im Linux-Terminal

Stat-Befehl:Attribute von Dateien und Verzeichnissen anzeigen

Warum kann ich diese Datei nicht als root löschen?