Comment iOS supprime-t-il un fichier techniquement et peut-il être éventuellement supprimé?

11

Nous avons ici une discussion intéressante sur la suppression de fichiers sur les appareils iOS. La question était: si je supprime un fichier à l'aide de NSFileManager, que se passe-t-il sous le capot?

Ma compréhension est que la suppression est effectuée en supprimant l'entrée de fichier correspondante de la table du système de fichiers.

L'argument du compteur est qu'un descripteur de fichier reste en quelque sorte et seul un indicateur est défini qui marque le fichier comme supprimé. Si l'utilisateur avait un accès root sur l'appareil iOS, il pourrait potentiellement réinitialiser cet indicateur et récupérer le contenu du fichier.

Dans les deux cas, nous convenons que le contenu réel du fichier ne sera pas écrasé et que les octets simples existent toujours sur la mémoire flash / le disque jusqu'à ce que le bloc soit occupé par un autre fichier.

L'idée est maintenant: si la deuxième version est vraie, nous pourrions écraser le fichier avec un contenu d'un octet avant la suppression (même si cet octet est écrit à un nouvel emplacement sur le lecteur flash sans écraser réellement l'ancien contenu). Si le fichier est récupéré, seul le contenu écrasé d'un octet est disponible.

Notez que nous ne parlons pas d'une analyse médico-légale du lecteur flash qui pourrait peut-être récupérer le contenu du fichier d'origine.

Donc, pour récapituler:

  • Comment la suppression d'un fichier sur iOS fonctionne-t-elle en interne?
  • L'approche par écrasement empêche-t-elle la suppression?
Krumelur
la source

Réponses:

3

Je crois que sous Unix, le système de fichiers est modifié comme vous le suggérez (l'entrée est supprimée de la table du système de fichiers). Sous Windows, la table du système de fichiers est modifiée et le fichier est simplement marqué comme supprimé - les outils de récupération de données peuvent restaurer le fichier. Après avoir examiné les applications de suppression de Windows, je pense que le nom du fichier est également modifié, donc lors de la suppression, vous devez fournir le nom de fichier correct. Modifier le nom du fichier signifierait que si vous créiez un fichier avec le même nom que celui que vous venez de supprimer, le système d'exploitation n'aurait pas à réconcilier deux fichiers avec le même nom.

MacOSX et Windows ont une poubelle (corbeille) qui, je pense, est implémentée dans un dossier spécial dans lequel les fichiers supprimés sont copiés. Lorsque vous videz la corbeille, ce dossier est purgé - en modifiant la table des fichiers système. Si vous utilisez NSFileManager, il contourne la poubelle (qui n'existe de toute façon pas sur iOS), c'est donc une véritable suppression. de même si vous "rm" à partir d'une fenêtre de terminal.

Si vous créez un nouveau fichier avec le même nom que l'ancien, sous Unix, c'est juste une nouvelle entrée dans la table des fichiers système, mais comme l'ancienne entrée a été supprimée de la table, il n'y aurait aucun avantage à créer la nouvelle entrée.

C'est ma conviction, et je suis prêt pour l'assaut des votes négatifs ;-)

Derek Knight
la source
Vous avez certainement raison sur la poubelle sur OS X. C'est juste un dossier spécial, rien d'autre. Et vous pouvez réellement le voir comme un dossier sous votre répertoire personnel lorsque vous rendez vos fichiers invisibles visibles.
Can Sürmeli