18 octobre 2013

Récupérer un fichier supprimé sous Unix

Le sous répertoire "fd"(pour "file descriptor") dans le répertoire au /proc/<PID> permet de faire le bilan des "fichiers" (au sens large) accédés par un processus Unix actif. Ci dessous pour le processus OpenHR dont le PID est 16964 :

ps -fp 16964 
UID        PID  PPID  C STIME TTY          TIME CMD
hradev   
16964  1  1 10:41 pts/4    00:00:16 /usr/java1.6/bin/java -Xms64M -Xmx128M -classpath /hradev/openhr/bin/bootstrap.jar 

ls /proc/16964/fd
0  10  12  14  16  18  2   21  23  25  27  29  30  32  34  36  38  4   41  43  45  47  49  50  52  54  57  
1  11  13  15  17  19  20  22  24  26  28  3   31  33  35  37  39  40  42  44  46  48  5   51  53  55  59

Un "ls -l" affichera (sous Linux) le lien entre le numéro du "descripteur de fichier" et sa cible :

ls -l /proc/16964/fd
lr-x------ 1 hradev hradev 64 18 oct.  10:58 0 -> /dev/null
l-wx------ 1 hradev hradev 64 18 oct.  10:58 1 -> /dev/null
lr-x------ 1 hradev hradev 64 18 oct.  10:58 10 -> /hradev/openhr/lib/commons-codec-1.6.jar
lr-x------ 1 hradev hradev 64 18 oct.  10:58 11 -> /hradev/openhr/lib/commons-net-3.0.1.jar
lr-x------ 1 hradev hradev 64 18 oct.  10:58 12 -> /hradev/openhr/lib/hr-kernel-7.30.03007.1234.jar
lr-x------ 1 hradev hradev 64 18 oct.  10:58 13 -> /hradev/openhr/lib/commons-httpclient-3.1.jar

...
l-wx------ 1 hradev hradev 64 18 oct.  10:58 52 -> /hradev/openhr/logs/ophrs.log (deleted)

On notera que le descripteur de fichier 52 pointe  sur un fichier qui a été supprimé : le log de OpenHR.

Toutefois, le processus OpenHR étant encore actif et n'ayant pas libéré le fichier, ce dernier est encore "présent"... Même s'il n'est plus affiché à l'utilisateur qui liste le contenu du répertoire :

ls -l /hradev/openhr/logs/ophrs.log
ls: impossible d'accéder à /hradev/openhr/logs/ophrs.log: Aucun fichier ou dossier de ce type

Il peut donc être consulté, voir recopié (dans un cas comme celui du ophrs.log, n'essayez pas de restaurer le fichier : vous créeriez un "nouveau" fichier log dont le descripteur de fichier sera différent de celui d'origine).

tail /proc/16964/fd/52
2013-10-18 10:41:42,619 INFO  [        ][               ][main] - OPHRS1999 OpenHR server is ready for business (Release <7.000>)
2013-10-18 10:42:41,294 INFO  [000000B7][188.8.244.10   ][MessageProcessor-2] - OPHRS1077 Queued a new message for service <Default>
2013-10-18 10:44:05,419 INFO  [00000305][188.8.244.10   ][MessageProcessor-2] - OPHRS1200 Using strategy <com.hraccess.dispatcher.service.login.uid.SimpleVirtualSessionIdGenerator> to create virtual session IDs


Plus de détails sur : http://www.hackinglinuxexposed.com/articles/20020507.html

Aucun commentaire:

Enregistrer un commentaire