Il existe un moyen de créer des points de montage cachés si l'utilisateur root dé-partage l'espace de nom actuel et monte les répertoires sans mettre à jour mtab. Existe-t-il un moyen simple de répertorier ceci sans avoir à filtrer le système de fichiers proc ?
Réponse
Trop de publicités?Il existe un moyen de créer des points de montage cachés si l'utilisateur root dé-partage l'espace de nom actuel et monte les répertoires sans mettre à jour mtab. Existe-t-il un moyen simple de répertorier ceci sans avoir à filtrer le système de fichiers proc ?
Tout d'abord, /proc
est le principal moyen d'accéder aux informations actuelles sur le montage de Linux.
De nombreuses distributions Linux modernes jamais mettre à jour mtab ; c'est simplement un lien symbolique vers /proc/self/mounts
. (La possibilité de dé-partager les espaces de noms des montages, ainsi que le fait de cacher les montages en "oubliant" de mettre à jour mtab, sont les raisons principales de ce changement. Et bien sûr, quel est l'intérêt de répéter le travail que le noyau fait déjà).
De même, les identificateurs d'espace de noms eux-mêmes sont seulement exposé via /proc/$PID/ns/mnt
. Il n'existe aucun autre moyen de vérifier quels processus se trouvent dans des espaces de noms distincts du principal.
Ceci étant dit, le moyen le plus rapide d'énumérer todo Les monts sont cat /proc/*/mounts
. Mais si vous ne voulez pas faire ça, util-linux v2.28 présente le lsns qui permet de lister rapidement tous les espaces de noms uniques ainsi que leur "premier" processus :
$ sudo lsns --type=mnt
NS TYPE NPROCS PID USER COMMAND
4026531840 mnt 300 1 root /sbin/init
4026531860 mnt 1 38 root kdevtmpfs
4026532247 mnt 1 271 root /usr/lib/systemd/systemd-udevd
4026532359 mnt 2 524 root /usr/bin/NetworkManager --no-daemon
4026532369 mnt 2 267304 root nginx: master process /usr/bin/nginx -g pid /run/nginx.pid
4026532557 mnt 1 892 colord /usr/lib/colord
Et une fois que vous avez l'ID du processus, vous pouvez voir sa table de montage en utilisant :
$ sudo findmnt --tab=/proc/267304/mountinfo
(Vous devriez toujours utiliser le /proc/$PID/mountinfo
car il contient un peu plus d'informations que le fichier mounts
ou /etc/mtab. Par exemple, il décrit la hiérarchie réelle lorsque les montages se chevauchent de manière inattendue, et il rapporte plus précisément la "source" d'un montage lié lorsqu'il s'agit d'un fichier ou d'un sous-répertoire).
Quant à un outil unique qui montrerait simplement quels montages sont "manquants" dans l'espace de noms principal - je n'en connais aucun. (Un tel outil n'est pas fourni avec coreutils ou util-linux pour le moment, bien qu'il ne devrait pas être difficile d'en écrire un si vous lui permettez de fouiller dans /proc).