J'ai trois questions relatives à l'information "ctime" d'un fichier. Elles sont en gras (si vous n'avez pas de temps, vous pouvez sauter directement à elles).
Un site web sur mon serveur dédié a été piraté. Beaucoup de fichiers ont été modifiés. J'ai remarqué que certains hackers étaient assez malins pour réinitialiser le mtime (certains non).
atime et mtime peuvent être modifiés avec des fonctions PHP. ctime peut également être modifié en utilisant la fonction chmod. Mais ctime est géré par le noyau, il n'est donc possible de le définir qu'à la date/heure système actuelle. Il est impossible de remonter dans le passé.
J'ai trouvé des backdoors dont le mtime avait été réinitialisé au ctime (date passée, comme il y a 1 ou 2 ans), de sorte que je ne peux pas les trouver en utilisant un outil de recherche récursive basé sur cette information.
La clé pour pouvoir rapidement trouver tous les fichiers infestés est bien sûr l'information ctime. Le problème est que je n'y ai pas pensé au départ, j'ai donc d'abord "chmodé" récursivement tous les fichiers pour que le site web lui-même n'ait plus de permissions en écriture. En faisant cela, j'ai perdu la précieuse information ctime.
J'ai beaucoup de sauvegardes, sous forme de fichiers .tar.gz. Je veux savoir s'il y a un moyen d'extraire du fichier tar.gz le ctime des fichiers au moment où ils ont été ajoutés à l'archive tar.
J'ai lu toute la documentation de GNU tar, et j'ai découvert que le format "GNU" de tar (qui est celui utilisé par défaut sur mon serveur Linux) stocke le ctime de ses fichiers archivés. J'ai essayé la méthode suivante pour l'extraire :
tar -zxf Friday.tar.gz --to-command=./script
./script est un script bash et ressemble à ceci :
#!/bin/bash
echo $TAR_CTIME
Le problème est que cela donne la date et l'heure actuelles, peut-être parce que tar donne les informations du fichier qu'il créerait lui-même si je n'avais pas utilisé --to-command
Si tar ne peut pas gérer cela, existe-t-il des outils de sauvegarde qui peuvent conserver les informations de ctime originales ?
Comment lister chaque fichier dont l'mtime et le ctime diffèrent ? J'ai lu le manuel de find mais n'ai trouvé que le -newerXY
, qui (si je comprends bien) ne peut comparer qu'un ctime avec un ctime, un mtime avec un mtime, etc. Existe-t-il un moyen de comparer un ctime et un mtime du même fichier ?