Существует способ создать скрытые точки монтирования, если пользователь root разделяет текущее пространство имен и монтирует каталоги без обновления mtab. Есть ли простой способ перечислить это без необходимости фильтровать файловую систему proc?
1 ответ
Существует способ создать скрытые точки монтирования, если пользователь 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.)