홈 디렉토리의 계층 구조를 여러 FreeBSD 감옥에 노출하려고합니다. 홈 디렉토리는 각각 고유 한 ZFS 데이터 세트가되도록 구성됩니다. 교도소는 개발 작업에 사용되므로 정기적으로 만들어지고 파괴됩니다.
내 첫 번째 생각은 단순히 nullfs 를 사용 /home
하여 감옥 에 마운트 하는 것이었지만 nullfs 는 하위 파일 시스템에 액세스하는 방법을 제공하지 않습니다.
두 번째 생각은 NFS를 통해 디렉토리를 내 보낸 다음 각 감옥에서 자동 마운터 데몬 (amd)을 실행하는 것입니다. 감옥에서 NFS 마운트를 수행 할 수 있다면 방금 작동했을 것입니다. 그러나 그렇지 않습니다.
세 번째 생각은 호스트에서 amd를 실행하고 nullfs 마운트를 감옥에 제공하는 것이지만 nullfs에 대한 amd 지원은 존재하지 않습니다.
네 번째 생각은 NFS를 사용하여 디렉토리를 내보내는 것으로 돌아가는 것이 었습니다. 물론 amd는 NFS와 함께 작동하기 때문입니다. 불행히도, amd는 대상 마운트 지점에 디렉토리를 마운트하는 대신 임시 위치 ( /.amd_mnt/...
)에 항목을 마운트 하고 심볼릭 링크를 만드는 것을 좋아합니다. 물론 감옥 환경에서는 쓸모가 없습니다.
그렇다면 nullfs 를 사용 하여 하위 디렉토리를 /.amd_mnt
감옥 에 노출시킬 수 있습니까? 아니! 이를 통해 우리는 첫 번째 시도로 돌아 가게되는데 여기서 nullfs를 사용하여 하위 파일 시스템에 액세스 할 수있는 방법이 없다는 것을 알게 되었습니다 .
그리고 내 머리가 폭발했다.
내가하려는 일에 대한 좋은 해결책이 있습니까? 나쁜 솔루션은 여러 만들 것 감옥 부팅 후 스크립트를 실행하는 것입니다 nullfs의 각 홈 디렉토리에 대한 마운트 포인트를하지만,이 꽤 투박 - 그것은 계정에 새로운 디렉토리 나 제거 디렉토리을 주기적으로 실행해야합니다. 따라서 기본적으로 잘못된 자동 마운터를 작성해야합니다.
더 좋은 방법이 있어야합니다. 도와주세요, Serverfault, 당신은 나의 유일한 희망입니다!
업데이트 1 :이 문제의 일부를 해결할 수는 pam_mount
있었지만 이것이 불완전 할 수도 있습니다. 또한 pam_mount
대상 마운트 지점을 자동으로 만들 수 있는지 여부는 설명서에서 명확하지 않습니다 . 마운트 포인트가 선험적으로 존재 해야하는 경우이 솔루션은 이미 제안한 나쁜 자동 마운트 장치보다 나을 것입니다.
업데이트 2 : 아래 답변에서 설명한 것처럼 VFCF_JAIL
NFS 파일 시스템의 설정 으로 감옥에서 NFS 마운트를 수행 할 수 있습니다. 불행히도, 자동 마운터는 도움이되지 않는 방식으로 계속 작동하며, 감옥에서 실행될 때 프로세스 항목을 제거하기 위해 시스템을 재부팅해야하는 방식으로 쐐기가 잘 잡히는 것처럼 보입니다.