2016-03-18 4 views
5

Ist es möglich, eine Datei zu öffnen, die ihren Inode kennt?Datei durch Inode öffnen

ls -i /tmp/test/test.txt 
529965 /tmp/test/test.txt 

Ich kann Pfad, Inode (über 529965) zur Verfügung stellen, und ich suche im Gegenzug einen Dateideskriptor.

+0

Mögliche Duplikate von [Warum können Dateien nicht von Inode manipuliert werden?] (Http://stackoverflow.com/questions/4606774/why-cant-files-be-manipulated-by-inode) – zwol

Antwort

8

Dies ist nicht möglich, da dies eine Lücke in den Zugriffskontrollregeln öffnen würde. Ob Sie eine Datei öffnen können, hängt nicht nur von eigenen Zugriffsberechtigungsbits ab, sondern auch von den Berechtigungsbits jedes enthaltenden Verzeichnisses. (Wenn in Ihrem Beispiel test.txt Modus 644 wäre, aber das enthaltende Verzeichnis test Modus 700 wäre, könnten nur root und der Besitzer testtest.txt öffnen.) Inode-Nummern identifizieren nur die Datei, nicht die enthaltenen Verzeichnisse (es ist möglich für Eine Datei, die sich in mehr als einem Verzeichnis befindet, lesen Sie unter "Hardlinks" nach, damit der Kernel keine vollständigen Zugriffskontrollprüfungen mit nur einer Inode-Nummer durchführen kann.

(Einige Unix-Implementierungen haben nicht-standardmäßige root-only-APIs angeboten, um eine Datei nach Inode-Nummer zu öffnen, wobei einige der Zugriffskontrollregeln umgangen werden, aber wenn das aktuelle Linux eine solche API hat, weiß ich nichts davon.)

+0

Kann verwandt sein: http://stackoverflow.com/a/31432662/544721 –