"모바일 공유 마운트 아래 마운트"를 비활성화하는 이유

"모바일 공유 마운트 아래 마운트"를 비활성화하는 이유

mount --move시스템에서 실행하는 경우systemd 사용 시작, 이 비활성화되고 위의 메시지가 표시됩니다.

이는 mount --make-private상위 마운트에서 실행한 다음 이동을 허용할 수 있음을 의미합니다.

그런데 마운트를 움직일 수 있다는 걸 알아차렸어요존재하다공유 하위 트리에. 예를 들어

mount --make-private /boot/
mount --move /boot/efi /mnt

이러한 구별은 사용을 취소하려는 시도 mount --move /mnt /boot/efi도 실패함을 의미합니다.

모바일 공유 마운트에서 마운트를 비활성화하는 이유는 무엇입니까? 이동 마운트가 허용되는 이유존재하다공유 설치에서?

$ mount --version
mount from util-linux 2.30.2 (libmount 2.30.2: selinux, btrfs, assert, debug)
$ rpm -q util-linux
util-linux-2.30.2-1.fc26.x86_64

답변1

실제로 공유의 상위 항목 아래에 있는 설치를 이동할 수 없는 이유는 어디에도 문서화되어 있지 않습니다. 나는 커널에서 이 코드에 대해 많은 연구를 해왔고, 내 추론은 이 코드가 마운트 전파 의미론을 쉽게 위반하기 때문에 금지된다는 것입니다.

예를 들어 다음 코드를 고려해보세요.

mount --bind /opt /opt
mount --make-shared /opt
mkdir /opt/A
mount --bind /tmp /opt/A

mount --move /opt/A /mnt

의 상위가 /opt/A공유 마운트 이므로 /opt이에 속한 전체 소스 전파 트리를 에서 로 이동해야 함 /opt을 의미합니다 /mnt. 그러나 해당 마운트 지점이 없을 수 있으므로 /opt원래 전파 트리에 속한 모든 마운트를 이동할 수 없는 상황을 상상하기 쉽습니다 . /mnt이는 마운트 네임스페이스를 사용하면 쉽게 발생할 수 있습니다. 따라서 이 경우 대상 전파 트리에 마운트 지점이 없는 마운트는 삭제되어야 합니다. 그러나 이는 umount 이벤트가 트리거되어야 함을 의미합니다. 그러나 다른 문제도 있습니다. 예를 들어 umount 이벤트를 전파해야 한다고 주장할 수도 있습니다. 그러나 이는 이동하려는 전체 설치 트리가 제거된다는 의미입니다. 어떤 식으로든 산나무가 겹쳐지면 더욱 심하다. 거기에는 숨겨진 복잡성이 많기 때문에 단순히 차단되었습니다.

관련 정보