네임 스페이스 및 마운트 포인트 사용자가 mtab을

루트 사용자가 mtab을 업데이트하지 않고 현재 네임 스페이스를 공유 해제하고 디렉토리를 마운트하는 경우 숨겨진 마운트 포인트를 작성하는 방법이 있습니다. proc 파일 시스템을 필터링하지 않고도 이것을 나열하는 쉬운 방법이 있습니까?



답변

루트 사용자가 mtab을 업데이트하지 않고 현재 네임 스페이스를 공유 해제하고 디렉토리를 마운트하는 경우 숨겨진 마운트 포인트를 작성하는 방법이 있습니다. proc 파일 시스템을 필터링하지 않고도 이것을 나열하는 쉬운 방법이 있습니까?

우선 /proc 이며 현재 리눅스에 대한 정보를 마운트에 액세스 할 수있는 기본 방법.

많은 최신 Linux 배포판 mtab을 업데이트 하지 않습니다 . 단순히에 대한 심볼릭 링크 /proc/self/mounts입니다. (마운트 네임 스페이스를 공유 해제하는 기능과 mtab을 업데이트하기 위해 “잊어 버림”으로 마운트를 숨기는 기능이이 변경의 주요 원인입니다. 물론 커널이 이미 수행 한 작업을 반복하는 요점은 무엇입니까?)

마찬가지로 네임 스페이스 식별자 자체는을 통해서만 노출됩니다 /proc/$PID/ns/mnt. 기본 프로세스와 별도의 네임 스페이스에있는 프로세스를 확인하는 다른 방법은 없습니다.

따라서 모든 마운트 를 나열하는 가장 빠른 방법 은 cat /proc/*/mounts입니다. 그러나 그렇게하고 싶지 않다면, util-linux v2.28 은 모든 고유 네임 스페이스와 “첫 번째”프로세스를 빠르게 나열 할 수 있는 lsns 도구를 도입했습니다 .

$ sudo lsns --type = mnt
        NS 유형 NPROCS PID 사용자 명령
4026531840 mnt 300 1 루트 / sbin / init
4026531860 mnt 1 38 루트 kdevtmpfs
4026532247 MNT 1 271 루트 / usr / lib / systemd / systemd-udevd
4026532359 mnt 2 524 루트 / usr / bin / NetworkManager --no-daemon
4026532369 mnt 2 267304 루트 nginx : 마스터 프로세스 / usr / bin / nginx -g pid /run/nginx.pid
4026532557 MNT 1 892 컬러 / usr / lib / colord

프로세스 ID가 있으면 다음을 사용하여 마운트 테이블을 볼 수 있습니다.

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

( 또는 / etc / mtab /proc/$PID/mountinfo보다 약간 더 많은 정보가 포함되어 있으므로 항상 파일을 사용해야합니다 mounts. 예를 들어, 마운트가 예기치 않은 방식으로 겹치는 경우 실제 계층 구조를 설명하고 바인드 마운트의 ‘소스’를보다 정확하게보고합니다. 파일 또는 하위 디렉토리 인 경우)

메인 네임 스페이스에서 어떤 마운트가 “누락 된”것인지를 보여주는 단일 툴에 대해서는 전혀 모른다. (지금은 coreutils 또는 util-linux가 제공되지 않지만 / proc을 통해 발굴하도록 허용해도 작성하기는 어렵지 않습니다.)