Estou tentando expor uma hierarquia de diretórios pessoais a várias cadeias do FreeBSD. Os diretórios pessoais são configurados de modo que cada um seja um conjunto de dados ZFS exclusivo. As cadeias são usadas para o trabalho de desenvolvimento e, portanto, são criadas e destruídas regularmente.
Meu primeiro pensamento foi simplesmente usar o nullfs para montar /home
dentro da prisão, mas o nullfs não fornece nenhuma maneira de acessar sistemas de arquivos subordinados.
Meu segundo pensamento foi exportar os diretórios via NFS e depois executar o daemon do montador automático (amd) dentro de cada prisão. Isso teria acabado de funcionar ... se fosse possível executar montagens NFS dentro de uma prisão. Mas isso não.
Meu terceiro pensamento foi rodar o amd no host e provisionar montagens do nullfs nas cadeias ... mas o suporte ao ndf para o nullfs não existe.
Meu quarto pensamento foi voltar a exportar os diretórios usando o NFS, porque é claro que o amd trabalha com o NFS, certo? Infelizmente, em vez de montar um diretório no ponto de montagem de destino, o amd gosta de montar coisas em um local temporário ( /.amd_mnt/...
) e criar um link simbólico ... que, é claro, é inútil dentro do ambiente da prisão.
Então, talvez você possa usar o nullfs para expor um subdiretório da /.amd_mnt
prisão? Não! Isso nos leva de volta à minha primeira tentativa, na qual descobrimos que não há como acessar sistemas de arquivos subordinados usando nullfs .
E então minha cabeça explodiu.
Existe uma boa solução para o que estou tentando fazer? Uma solução ruim seria executar um script após a inicialização da cadeia que criaria vários pontos de montagem nullfs para cada diretório inicial, mas isso é bastante complicado - seria necessário ser executado periodicamente para levar em conta novos diretórios ou diretórios removidos. Então, basicamente, eu teria que escrever um montador ruim.
Deve haver uma maneira melhor. Me ajude, Serverfault, você é minha única esperança!
ATUALIZAÇÃO 1 : Ocorreu-me que talvez eu consiga resolver parte do problema pam_mount
, embora isso seja, na melhor das hipóteses, incompleto. Além disso, não está claro na documentação se é pam_mount
possível ou não criar automaticamente o ponto de montagem de destino. Se exigir que o ponto de montagem exista a priori, essa solução não seria melhor do que o montador ruim que eu já propus.
ATUALIZAÇÃO 2 : Conforme discutido nas respostas abaixo, a configuração VFCF_JAIL
no sistema de arquivos NFS permite que as cadeias executem montagens NFS. Infelizmente, o montador automático continua se comportando de maneira inútil e, quando executado em uma prisão, parece ser muito bom em ser entalhado de tal maneira que uma reinicialização do sistema é necessária para remover a entrada do processo.
Respostas:
Olá, Lars! Essa é uma pergunta fascinante que você fez e, depois de algumas pesquisas, posso ter encontrado uma resposta para você.
De acordo com este e outros posts, pode ser possível definir o
VFCF_JAIL
atributo no provedor de sistema de arquivos NFS, o que, em teoria, permitiria que as cadeias executassem montagens NFS. Isso pode, por sua vez, permitir que alguém rode o amd dentro da prisão ... o que resolveria perfeitamente esse problema.Vou tentar reconstruir o kernel hoje à noite para ver como as coisas funcionam. Não é necessariamente a melhor solução (já que significa que você precisa garantir que essa alteração persista nas futuras atualizações do kernel), mas seria interessante se funcionar.
E lembre-se...
fonte
VFCF_JAIL
fez com que as montagens NFS funcionassem, mas o montador automático continua me atormentando.