Существует способ создать скрытые точки монтирования, если пользователь root разделяет текущее пространство имен и монтирует каталоги без обновления mtab. Есть ли простой способ перечислить это без необходимости фильтровать файловую систему proc?

1 ответ1

0

Существует способ создать скрытые точки монтирования, если пользователь root разделяет текущее пространство имен и монтирует каталоги без обновления mtab. Есть ли простой способ перечислить это без необходимости фильтровать файловую систему proc?

Прежде всего, /proc - это основной способ доступа к текущей информации о монтировании в Linux.

Многие современные дистрибутивы Linux никогда не обновляют mtab; это просто символическая ссылка на /proc/self/mounts . (Как возможность отменить совместное использование пространств имен монтирования, так и скрытие монтирования, "забыв" обновить mtab, являются основными причинами этого изменения. И, конечно же, какой смысл повторять работу, которую уже выполняет ядро?)

Аналогично, сами идентификаторы пространства имен доступны только через /proc/$PID/ns/mnt . Нет другого способа проверить, какие процессы находятся в отдельных пространствах имен от основного.

С учетом вышесказанного, самый быстрый способ перечислить все монтирования - это cat /proc/*/mounts . Но если вы не хотите этого делать, util-linux v2.28 представляет инструмент lsns , который может быстро перечислить все уникальные пространства имен, а также их "первый" процесс:

$ 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

И когда у вас есть идентификатор процесса, вы можете увидеть его таблицу монтирования, используя:

$ sudo findmnt --tab=/proc/267304/mountinfo

(Вы должны всегда использовать /proc/$PID/mountinfo файл / Proc / $, так как она содержит немного больше информации , чем mounts или / и т.д. / mtab. Например, он описывает фактическую иерархию, когда монтирование перекрывается неожиданным образом, и более точно сообщает об «источнике» монтирования связывания, когда это файл или подкаталог.)

Что касается одного инструмента, который бы просто показывал, что монтировок "отсутствует" в основном пространстве имен - я не знаю ни одного. (В настоящее время не поставляется с coreutils или util-linux, хотя написать его не должно быть сложно, если вы позволите ему копаться в /proc.)

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .