1 votes

Espaces de noms et points de montage

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 ?

2voto

James Mertz Points 390

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).

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X