Comme nous le savons, "Everything in Linux" est un fichier, et de plus, le répertoire est juste un fichier contenant d'autres fichiers.
Donc, je ne sais pas si cette "idée folle" est possible, mais elle devrait l'être en quelque sorte selon le principe ci-dessus.
En termes simples, comment pourrais-je changer un fichier vide existant dans un répertoire. C'est possible?
Comme une tempête de cerveau, j'ai pensé à une modification des métadonnées de fichier et à ce que les métadonnées de répertoire le fassent !!
Toute information est appréciée.
MISE À JOUR: Pour sûr, je ne veux pas supprimer un fichier et créer le répertoire à la place! J'essaie juste de savoir dans quelle mesure la philosophie ci-dessus est applicable si vous pouvez jouer avec des métadonnées de fichier.
Réponses:
Réaliser la conversion
Création d'un système de fichiers de test
Afin de préserver notre système de fichiers principal de tout dommage possible après avoir exécuté cette expérience, nous allons créer un petit système de fichiers à l'intérieur d'un fichier normal à des fins de test.
Créez un fichier rempli de zéro appelé
test
avec une taille de 10 mégaoctets:Créez un système de fichiers Ext4 à l'intérieur du fichier, comme s'il s'agissait d'une partition:
Création de fichiers et de répertoires
Maintenant, nous avons un système de fichiers entièrement fonctionnel à l'intérieur du
test
fichier, nous allons donc créer des fichiers et des répertoires à l'intérieur.Montez le système de fichiers nouvellement créé à l'intérieur
/mnt
:Créez un fichier et un répertoire:
Vérifiez le contenu du système de fichiers:
La sortie devrait ressembler à ceci:
Démontez le système de fichiers de test:
Échange du fichier et du dossier
Exécuter
debugfs
sur letest
fichier avec une autorisation d'écriture (-w
indicateur):Convertir
file
en dossier:À l'
debugfs
invite, tapez ceci:Une invite apparaîtra vous demandant un mode; tapez ceci:
Continuez à appuyer returnpour laisser les données restantes telles quelles jusqu'à ce que l'invite réapparaisse.
Convertir
folder
en fichier:À l'
debugfs
invite, tapez ceci:Une invite apparaîtra vous demandant un mode; tapez ceci:
Continuez à appuyer returnpour laisser les données restantes telles quelles jusqu'à ce que l'invite réapparaisse.
Pour quitter l'
debugfs
invite, appuyez simplement sur qpuisreturnVérifier le succès de l'opération
Montez à nouveau le système de fichiers de test:
Vérifiez le contenu du système de fichiers:
Maintenant, il devrait afficher le fichier comme s'il s'agissait d'un répertoire et vice versa :
Script pour calculer les modes d'inode
Voir le script sur GitHub
Handicaps
Lectures complémentaires
https://ext4.wiki.kernel.org/index.php/Ext4_Disk_Layout#Inode_Table
Merci à @tallus . Il m'a donné un excellent indice:
la source
0100755
doivent être0100644
pour ne pas changer les permissions d'un fichier depuis 755 donnera l' exécution pour le fichier converti ...