특정 Linux 프로세스가 컨테이너가 있는(예: KVM 또는 Xen과 같은 가상화 없이) 다른 블록 장치 세트를 볼 수 있도록 할 수 있습니까? 예를 들어, 시작 시 시스템은 sda
, sdb
및 을 인식 sdc
한 다음 loop0
및 을 생성하고 위의 나머지 부분은 볼 수 없고 및 만 loop1
볼 수 있는 프로세스(루트로 실행)를 시작하려고 합니다 . 프로세스가 호출되더라도 다른 장치는 숨겨진 상태로 유지되어야 합니다.sdb
loop0
맥놀드(2)블록 장치 노드를 생성하고(성공해야 함) 열려고 시도합니다(메시지와 함께 실패해야 함 No such device
).
nodev
루트로 실행 중인 프로세스는 이 플래그 없이 파일 시스템을 다시 마운트할 수 있으므로 이 플래그를 사용하여 파일 시스템을 마운트하면 아무런 효과가 없습니다.
일부 복잡한 사용자 공간 구성 요소가 루트 액세스를 가정하는 시스템에서 실행되고 있고 이러한 구성 요소를 변경하는 데 비용이 너무 많이 들기 때문에 루트가 아닌 사용자로 프로세스를 실행하는 것은 옵션이 아닙니다. 이러한 프로세스의 기능을 줄이는 것도 선택 사항이 아닙니다.
이는 불가능할 가능성이 높습니다. 왜냐하면http://lxr.free-electrons.com/source/include/uapi/linux/sched.hCLONE_NEW...
블록 장치에 대한 플래그를 포함하지 않습니다 . 하지만 아마도 내가 뭔가를 놓치고 있는 것 같습니다.