Equivalente ao NFS all_squash

1

Eu tenho um requisito incomum em que preciso montar o mesmo sistema de arquivos em um cliente várias vezes, mas cada montagem oferece uma visão diferente dos dados subjacentes, com base nas permissões de grupo dos diretórios e arquivos subjacentes.

Eu consegui isso no passado com o NFS e a opção all_squash e anongid / etc / exports, fazendo uma montagem específica aparecer como se o usuário tivesse um ID de grupo específico. Ele filtrou efetivamente o acesso ao sistema de arquivos subjacente, forçando o grupo do usuário de acesso.

Infelizmente, não posso usar isso neste cenário, já que o sistema de arquivos será o Amazon EFS (efetivamente um servidor NFS, mas sem nenhuma opção de configuração).

Eu observei o bindfs, e isso fornece uma opção de grupo de força, mas isso é o oposto do que eu quero, pois força todos os arquivos a ter um grupo específico, em vez de forçar o cliente a ter um grupo específico, olhando para os arquivos inalterados.

Eu vi uma menção a algo chamado filterfs, mas parece estar morto há muito tempo.

Alguém sabe uma maneira de obter uma exibição filtrada de um sistema de arquivos para um único usuário, alterando efetivamente o grupo do usuário em uma base ad-hoc (sem usar o sudo, já que o usuário é um daemon de servidor da web).

    
por Phil 22.08.2018 / 20:43

1 resposta

0

Obrigado ao @sourcejedi por me apontar na direção certa.

Na configuração original do NFS, all_squash foi usado para fazer um usuário do daemon parecer ter um grupo específico (definido por anongid ). Para este exemplo, suponha que o ID do grupo seja 601. Essa exibição no sistema de arquivos original poderia, portanto, impor permissões em arquivos / diretórios baseados no anongid do sistema de arquivos montado 601. As permissões aparecem como eles avaliaram no nível da montagem NFS, independente das permissões de grupo reais do usuário daemon. Outra montagem do NFS no mesmo sistema de arquivos com diferentes configurações all_squash mostra efetivamente uma visão diferente dos arquivos, como se o usuário tivesse uma participação em grupo diferente.

Usando bindfs --map , o mesmo resultado pode ser obtido com uma configuração pouco diferente. Uma configuração de amostra liga um sistema de arquivos de tal forma que quaisquer arquivos / diretórios com o ID de grupo 601 no sistema de arquivos subjacente pareçam ter o ID de grupo 599 no sistema de arquivos montado:

bindfs --map=@601/@599 --create-for-group=601 --create-for-user=600 --create-with-perms='u=rwD:g=rwD:o=' $FS_ROOT $MOUNT_ROOT/view601

Agora, ao listar arquivos em $MOUNT_ROOT/view601 , o usuário daemon vê qualquer arquivo que tenha o grupo 601, em vez de ter o grupo 599. Ao conceder a associação ao daemon do grupo gid 599, as permissões são efetivamente aplicadas novamente com base na montagem. Se uma montagem diferente mapeasse gt 602 a 599, os arquivos no mesmo sistema de arquivos subjacente estariam disponíveis para o mesmo usuário se tivessem originalmente o grupo 602 (em vez de 601) agora mapeado para 599, tornando-os disponíveis para o daemon.

    
por 29.08.2018 / 13:06