Wie wir wissen, ist "Everything in Linux" eine Datei, und außerdem ist das Verzeichnis nur eine Datei, die andere Dateien enthält.
Also, ich weiß nicht, ob diese "verrückte Idee" möglich ist, aber es sollte irgendwie nach dem oben genannten Prinzip sein.
In einfachen Worten, wie könnte ich eine vorhandene leere Datei in ein Verzeichnis ändern. Ist es möglich?
Als ein Brainstorming dachte ich, eine Modifikation in den Dateimetadaten und die Verzeichnismetadaten sollten es schaffen !!
Alle Informationen werden geschätzt.
UPDATE: Natürlich möchte ich keine Datei löschen und stattdessen das Verzeichnis erstellen! Ich versuche nur zu wissen, inwieweit die oben genannte Philosophie anwendbar ist, wenn Sie mit einigen Dateimetadaten spielen können.
Antworten:
Die Umstellung erreichen
Erstellen eines Testdateisystems
Um unser Hauptdateisystem nach dem Ausführen dieses Experiments vor möglichen Schäden zu schützen, erstellen wir zu Testzwecken ein kleines Dateisystem in einer normalen Datei.
Erstellen Sie eine mit Nullen gefüllte Datei
test
mit einer Größe von 10 Megabyte:Erstellen Sie ein Ext4-Dateisystem in der Datei, als wäre es eine Partition:
Erstellen einiger Dateien und Verzeichnisse
Jetzt haben wir ein voll funktionsfähiges Dateisystem in der
test
Datei, also werden wir einige Dateien und Verzeichnisse darin erstellen.Hängen Sie das neu erstellte Dateisystem ein
/mnt
:Erstellen Sie eine Datei und ein Verzeichnis:
Überprüfen Sie den Inhalt des Dateisystems:
Die Ausgabe sollte ungefähr so aussehen:
Hängen Sie das Test-Dateisystem aus:
Tauschen Sie die Datei und den Ordner aus
Führen Sie
debugfs
gegen dietest
Datei mit Schreibrechten (-w
flag):file
In einen Ordner konvertieren :debugfs
Geben Sie an der Eingabeaufforderung Folgendes ein:Es erscheint eine Eingabeaufforderung, in der Sie nach einem Modus gefragt werden. tippe dies:
Halten Sie gedrückt return, um die restlichen Daten unverändert zu lassen, bis die Eingabeaufforderung erneut angezeigt wird.
folder
In eine Datei konvertieren :debugfs
Geben Sie an der Eingabeaufforderung Folgendes ein:Es erscheint eine Eingabeaufforderung, in der Sie nach einem Modus gefragt werden. tippe dies:
Halten Sie gedrückt return, um die restlichen Daten unverändert zu lassen, bis die Eingabeaufforderung erneut angezeigt wird.
Um die
debugfs
Eingabeaufforderung zu verlassen, drücken Sie einfach qund dannreturnÜberprüfen Sie den Erfolg der Operation
Hängen Sie das Test-Dateisystem erneut ein:
Überprüfen Sie den Inhalt des Dateisystems:
Jetzt sollte die Datei so angezeigt werden, als wäre sie ein Verzeichnis und umgekehrt :
Skript zur Berechnung der Inode-Modi
Skript auf GitHub anzeigen
Handicaps
Weitere Lektüre
https://ext4.wiki.kernel.org/index.php/Ext4_Disk_Layout#Inode_Table
Vielen Dank an @tallus . Er gab mir einen tollen Hinweis:
quelle
0100755
müssen sein,0100644
um Berechtigungen einer Datei nicht zu ändern, da 755 Ausführung für die konvertierte Datei geben wird ...