Fedora에서 네임스페이스 마운트 관련 문제

Fedora에서 네임스페이스 마운트 관련 문제

Linux에서 네임스페이스를 마운트하는 데 이상한 문제가 발생했습니다. Fedora 16에서 커널 3.2.3-2를 실행하는 X86_64라는 두 개의 시스템이 있습니다. tmpfs다음을 사용하여 생성된 하위 네임스페이스에 파일 시스템을 마운트 하려고 합니다 unshare.

unshare -m /bin/bash

매뉴얼 페이지에서:

   mount namespace
          mounting and unmounting filesystems will not affect rest of  the
          system (CLONE_NEWNS flag),

한 시스템에서는 예상대로 작동합니다. 즉, 이것으로 시작한다면:

# ls /mnt
file1 file2 file3

그런 다음 하위 네임스페이스에 파일 시스템을 마운트합니다 tmpfs./mnt

# PS1="child# ' unshare -m /bin/bash
child# mount -t tmpfs tmpfs /mnt

의 내용은 /mnt하위 네임스페이스에서 마스크됩니다.

child# ls /mnt
child#

그러나 상위 항목에는 계속 표시됩니다.

# ls /mnt
file1 file2 file3

두 번째 시스템에서는 정확히 동일한 명령 순서로 인해 상위 및 하위 네임스페이스 모두에서 마운트가 표시됩니다. 즉, 이 unshare명령은 실제로 별도의 마운트 네임스페이스를 생성하지 않는 것 같습니다.

두 시스템 간의 실질적인 차이점은 모르겠습니다. 하나는 데스크탑 환경을 실행하고 있고 다른 하나는 그렇지 않습니다. SELinux는 두 시스템 모두에서 비활성화됩니다.

이러한 동작 차이의 원인이 무엇인지에 대한 제안 사항을 찾고 있습니다.

답변1

샌드박스 서비스가 실행 중인지 확인하세요.

systemctl status sandbox.service

그렇다면 종료하고 다시 시작한 후 다시 시도하십시오. 이것은 나에게 효과적입니다.

답변2

@John 답변을 얻었지만 두 시스템이 다르게 작동하는 이유를 반영하기 위해 여기에 몇 가지 추가 문서를 제공하고 싶었습니다.

스크립트 sandbox()는 다음 명령을 실행하여 시스템의 모든 설치에 플래그를 반복적으로 설정합니다 /etc/rc.d/init.d/sandbox.shared

mount --make-rshared /

스크립트의 주석은 sandbox다음과 같습니다.

설명: pam_namespace를 사용하려는 샌드박스, xguest 및 기타 응용 프로그램은 시작 시 이 스크립트를 실행해야 합니다. 서비스 스크립트는 실제로 서비스를 실행하지 않고 별도의 네임스페이스를 시작하는 모든 애플리케이션에서 /를 공유하도록 설정합니다. sandbox, xguest 또는 pam_namespace를 사용하지 않는 경우 이 서비스를 끌 수 있습니다.

여기에 참조된 도구는 GUI 애플리케이션이므로 이 sandbox스크립트는 실행 수준 5에서만 활성화됩니다. 제가 작업 중인 두 시스템 중 하나는 데스크탑입니다. 따라서 런레벨 5에서 ​​부팅하고 sandbox기본적으로 스크립트를 가져옵니다. 반면 다른 하나는 런레벨 3으로 부팅되는 헤드리스 서버입니다.

답변3

같은 문제가 계속 발생합니다. 하나 먹어봐

mount --make-private /mnt 

전에

mount -t tmpfs tmpfs /mnt

또한 seunshare 명령의 소스 코드를 보고 명령이 어떻게 실행되는지 확인하세요.

관련 정보