/proc le coffre aux trésors

coffre_tresorAutour du kernel, nous utilisons tous une foule de programmes pour récupérer les informations et utiliser notre système du mieux possible. Sous linux, toutes ces informations sont accessibles via /proc. Un peu de curiosité vous montrera les bijoux techniques qu’il est possible de récupérer.

Processus

/proc permet de connaitre tous les processus qui tournent sur la machine. Chaque chiffre correspond au PID de processus, à l’intérieur se trouvent toutes les informations concernant le programme.

  • exe: le nom de l’executable
  • cmdline: les paramètres de lancement
  • root: le chroot du programme
  • environ: les variables d’environnement valables pour le programme.
  • fd/ la liste des fichiers ouverts.
  • maps: les liens avec les bibliothèques
  • status: informations Ram, User,…

Si vous supprimez des fichiers en cours d’utilisation, il est possible de copier le fichier qui est dans /proc/$PID/fd/[numero].

cp /proc/1/exe /tmp/init.recup

/!\ certains root-kit modifient la libproc et peuvent se masquer. Pour faire cela avec /proc il faut recompiler et rebooter le kernel: Ce qui est moins évident à faire.

Informations Kernel

Il n’y a pas que les processus mais tout ce qui se passe en « live » sur votre machine.

La documentation se trouve dans les sources du kernel et si le coeur vous en dit vous pouvez aller faire un tour dans les fichiers.c pour créer ou adapter à vos besoins.

Ecriture

En écrivant dans certains fichiers, il est possible de régler les paramètres du kernel plus ou moins complexes… Pour ma part j’utilise davantage ceux qui concernent le réseau (nf_conntrack_max, ip_forward …). Mais il y a shmall (pour la mémoire partagée), les sémaphores, swappiness … group process …

Dominique DERRIER

Ref

file:///usr/src/linux/Documentation/filesystems/proc.txt
file:///usr/src/linux/Documentation/cgroups/cgroups.txt

http://blog.nasa.fr/wp/linux/2011-02-18/se-la-jouer-avec-la-vm-linux/