Mapeando UIDs para NFS

1

Eu tenho um servidor de arquivos do Mac OS X que atende via SMB / CIFS e AFP. O servidor é um cliente de domínio através da abordagem triângulo dourado, mas isso resulta em um UID muito grande para os usuários. Isso é bom para minha configuração atual, mas gostaria de ter o NFS funcionando também. Obviamente, preciso fazer algum mapeamento UID, mas não tenho certeza de como fazer isso. Algum conselho?

    
por churnd 04.06.2009 / 21:41

4 respostas

5

Na maioria das implementações do NFSv3, particularmente em servidores no nível do kernel, isso não é possível, exceto por alguns mapeamentos limitados, como o de raiz para ninguém. No NFS v4 você tem o rpc.idmapd que executa o ID do NFSv4 < - > Mapeamento UID no servidor e permite que você fique mais flexível.

Se você não puder usar o NFSv4, a maneira recomendada de lidar com ele para o NFSv3 é fazer com que seus usuários venham de um serviço de diretório, como o LDAP, ou outro banco de dados comum. Normalmente, todos os usuários do sistema para daemons etc. virão de /etc/passwd , enquanto todos os usuários humanos vêm de uma fonte externa. Isso garantirá UIDs consistentes e eliminará a necessidade de qualquer tipo de mapeamento.

    
por 06.07.2009 / 00:42
2

Bem, depois de mais pesquisas, descobri que o nfs-user-server permitirá que você faça esse tipo de mapeamento. É uma chatice, porque a principal razão que eu queria usar o NFS sobre CIFS era a velocidade. O nfs-user-server é executado no userspace, portanto, não é tão rápido quanto o nfs-kernel-server. Não parece ser uma solução ideal.

    
por 07.06.2009 / 20:48
2

Eu quero acrescentar que há uma grande pegadinha na abordagem de mapeamento UID do NFSv4 (veja o comentário de Kamil): Não funciona para AUTH_SYS / AUTH_UNIX authentication, que é o que você tem se os diferentes computadores não forem usando LDAP ou Kerberos ou algum outro sistema de controle de acesso compartilhado.

Aqui está o problema: o NFSv4 usará IDs textuais (ou seja, não numéricos) ao descrever a propriedade do arquivo, que é o que você deseja, mas a camada RPC ainda usa valores numéricos de UID e GID. A autenticação AUTH_SYS simples retorna ao RPC e você fica preso novamente. Aqui está um exemplo de como isso se parece (captura tshark de pacote de servidor cliente > capturado no lado do servidor):

Frame 26 (306 bytes on wire, 306 bytes captured)
...
Remote Procedure Call, Type:Call XID:0x2790a46d
...
    Credentials
        Flavor: AUTH_UNIX (1)
        Length: 48
        Stamp: 0x00419c55
        Machine Name: localhost.localdomain
            length: 21
            contents: localhost.localdomain
            fill bytes: opaque data
        UID: 500
        GID: 500
        Auxiliary GIDs
        GID: 500
    Verifier
        Flavor: AUTH_NULL (0)
        Length: 0
Network File System
...
    
por 09.06.2011 / 20:38
1

Eu não o configurei no OSX, mas o que você está procurando é chamado idmapd. Em uma caixa OSX, o daemon é chamado de rpc.idmapd. (Nota: NÃO imapd.)

    
por 05.06.2009 / 03:12