proc – informations de processus, informations du
système et pseudo-système de fichiers sysctl
Le système de fichiers proc est un
pseudosystème de fichiers qui fournit une interface pour les
structures de données du noyau. Il est généralement
monté sur /proc. Ordinairement, il est monté
automatiquement par le système, mais il peut aussi
l’être manuellement en utilisant une commande telle
que :
mount -t proc proc /proc
La plupart des fichiers dans le système de fichiers
proc sont en lecture seule, mais certains sont éditables,
permettant aux variables du noyau d’être modifiées.
Le système de fichiers proc gère les options
de montage suivantes :
- hidepid=n
(depuis Linux 3.3)
- Cette option contrôle qui a accès aux informations dans les
répertoires /proc/pid. L’argument n
possède une des valeurs suivantes :
- 0
- Tout le monde peut accéder à tous les répertoires
/proc/pid. C’est le comportement traditionnel et celui par
défaut si cette option de montage n’est pas
précisée.
- 1
- Les utilisateurs ne peuvent accéder aux fichiers et
sous-répertoires dans n’importe quel répertoire
/proc/pid sauf dans les leurs (les répertoires
/proc/pid demeurent visibles). Les fichiers sensibles tels que
/proc/pid/cmdline et /proc/pid/status sont
maintenant protégés des autres utilisateurs. Cela rend
impossible de savoir si n’importe quel utilisateur exécute
un programme particulier (aussi longtemps que le programme ne se
révèle de lui-même par son comportement).
- 2
- Comme pour le mode 1, mais en plus les répertoires
/proc/pid appartenant aux autres utilisateurs deviennent
invisibles. Cela signifie que les enregistrements /proc/pid ne
peuvent plus être utilisés pour découvrir les PID du
système. Cela ne dissimule pas le fait qu’une valeur de PID
particulière existe (elle peut être connue d’une
autre manière, par exemple, avec
« kill -0 $PID »), mais les UID
et GID d’un processus sont cachés, qui peuvent être
connus d'une autre manière en utilisant stat(2) sur un
répertoire /proc/pid. Cela complique grandement la
récolte par un attaquant d’informations sur les processus en
cours (par exemple, découvrir si un démon est en cours
d’exécution avec des privilèges élevés,
si un autre utilisateur utilise un programme sensible, si d’autres
utilisateurs exécutent un programme quelconque, etc.).
- gid=gid (depuis
Linux 3.3)
- Indication de l’ID d’un groupe dont les membres sont
autorisés à connaitre les informations sur un processus
autrement interdites par hidepid (c’est-à-dire que
les utilisateurs dans ce groupe se comportent comme si /proc
était monté avec hidepid=0). Ce groupe doit
être utilisé à la place d’approches telles que
mettre les utilisateurs normaux dans le fichier sudoers(5).
- subset=pid
(depuis Linux 5.8)
- Montrer uniquement le sous-ensemble de procfs spécicié, sans
montrer tous les fichiers et répertoires de plus haut niveau dans
les procfs qui ne sont pas liés aux tâches.
Sous /proc, on trouve les groupes et
sous-répertoires suivants :
- Sous-répertoires
/proc/pid
- Chacun de ces sous-répertoires contient des fichiers et des
sous-répertoires exposant les informations sur le processus ayant
l’ID correspondant.
- Sous chacun des répertoires /proc/pid, un
sous-répertoire task contient des sous-répertoires de
la forme task/tid qui contiennent des informations sur chacun des
threads dans le processus, où tid est l’ID de thread
du noyau du thread.
- Les sous-répertoires /proc/pid sont visibles lors de
l’itération à travers /proc avec
getdents(2) (et donc visibles lors de l’utilisation de
ls(1) pour voir le contenu de /proc).
- Sous-répertoires
/proc/tid
- Chacun de ces sous-répertoires contient des fichiers et des
sous-répertoires exposant des informations sur le thread avec
l’ID du thread correspondant. Le contenu de ces répertoires
est le même que celui des répertoires
/proc/pid/task/tid correspondants.
- Les sous-répertoires /proc/tid ne sont pas visibles
lors d’itérations à travers /proc avec
getdents(2) (et donc ne sont pas visibles si on utilise
ls(1) pour voir le contenu de /proc).
- /proc/self
- Quand un processus accède à ce lien symbolique magique, il
l’interprète comme son propre répertoire
/proc/pid.
- /proc/thread-self
- Quand un thread accède à ce lien symbolique magique, il
l’interprète comme son propre répertoire
/proc/self/task/tid.
- /proc/[a-z]*
- D’autres fichiers et répertoires divers sous /proc
exposent des informations concernant le système en entier.
Tout ce qui précède est décrit plus en
détails dans les pages de manuel séparées dont le nom
débute par proc_.
De nombreux fichiers contiennent des chaînes (par exemple,
l'environnement et la ligne de commande) dans un format interne avec des
sous-champs terminés par un octet NULL
« \0 ». Pour inspecter de tels fichiers, les
résultats peuvent être plus lisibles en utilisant la commande
suivante :
$ cat file | tr '\000' '\n'
cat(1), dmesg(1), find(1), free(1),
htop(1), init(1), ps(1), pstree(1),
tr(1), uptime(1), chroot(2), mmap(2),
readlink(2), syslog(2), slabinfo(5), sysfs(5),
hier(7), namespaces(7), time(7), arp(8),
hdparm(8), ifconfig(8), lsmod(8), lspci(8),
mount(8), netstat(8), procinfo(8), route(8),
sysctl(8)
Les fichiers des sources du noyau Linux :
Documentation/filesystems/proc.rst,
Documentation/admin-guide/sysctl/fs.rst,
Documentation/admin-guide/sysctl/kernel.rst,
Documentation/admin-guide/sysctl/net.rst et
Documentation/admin-guide/sysctl/vm.rst.
La traduction française de cette page de manuel a
été créée par Christophe Blaess
<https://www.blaess.fr/christophe/>, Stéphan Rafin
<stephan.rafin@laposte.net>, Thierry Vignaud
<tvignaud@mandriva.com>, François Micaux, Alain Portal
<aportal@univ-montp2.fr>, Jean-Philippe Guérard
<fevrier@tigreraye.org>, Jean-Luc Coulon (f5ibh)
<jean-luc.coulon@wanadoo.fr>, Julien Cristau
<jcristau@debian.org>, Thomas Huriaux
<thomas.huriaux@gmail.com>, Nicolas François
<nicolas.francois@centraliens.net>, Florentin Duneau
<fduneau@gmail.com>, Simon Paillard
<simon.paillard@resel.enst-bretagne.fr>, Denis Barbier
<barbier@debian.org>, David Prévot <david@tilapin.org>,
Jean-Paul Guillonneau <guillonneau.jeanpaul@free.fr> et Lucien Gentis
<lucien.gentis@waika9.com>
Cette traduction est une documentation libre ; veuillez
vous reporter à la
GNU General
Public License version 3 concernant les conditions de copie et de
distribution. Il n'y a aucune RESPONSABILITÉ LÉGALE.
Si vous découvrez un bogue dans la traduction de cette page
de manuel, veuillez envoyer un message à
debian-l10n-french@lists.debian.org.