Montar exportação do Synology NFSv4 com mapeamento de id

4

Eu tenho um Synology DiskStation (DSM 6.0.2) que exporta diretórios compartilhados via NFSv4. Eu especifiquei um domínio NFSv4 ITET-PHO .

Em outra máquina Linux (Debian Wheezy), quero montar esta exportação usando o idmapping. Lá eu tenho a seguinte configuração de /etc/idmapd.conf :

[General]
Verbosity = 2
Pipefs-Directory = /run/rpc_pipefs
# set your own domain here, if id differs from FQDN minus hostname
Domain = ITET-PHO

[Mapping]
Nobody-User = nobody
Nobody-Group = nogroup

[Translation]
Method = static

[Static]
erikhe@ITET-PHO = erik

Portanto, tento mapear estaticamente o usuário erikhe na Synology, que está no domínio ITET-PHO para o usuário local erik . Todos os outros usuários devem ser mapeados para nobody . No entanto, quando eu montei o diretório compartilhado, acabei de ver os números UID da Synology:

drwxr-xr-x 4 1566874442 1566573057 4096 Okt  5 10:21 erikhe-301898

Além disso, todos os outros UIDs são exibidos em vez de nobody . No arquivo de log, vejo que o idmap está fazendo alguma coisa. Isto é quando fazendo service nfs-common restart :

Oct  5 15:11:07 sisyphous systemd[1]: Stopping LSB: NFS support files common to client and server...
Oct  5 15:11:07 sisyphous nfs-common[6520]: Stopping NFS common utilities: idmapd statd.
Oct  5 15:11:07 sisyphous systemd[1]: Stopped LSB: NFS support files common to client and server.
Oct  5 15:11:07 sisyphous systemd[1]: Starting LSB: NFS support files common to client and server...
Oct  5 15:11:07 sisyphous rpc.statd[6539]: Version 1.2.8 starting
Oct  5 15:11:07 sisyphous sm-notify[6540]: Version 1.2.8 starting
Oct  5 15:11:07 sisyphous sm-notify[6540]: Already notifying clients; Exiting!
Oct  5 15:11:07 sisyphous rpc.idmapd[6551]: libnfsidmap: using domain: ITET-PHO
Oct  5 15:11:07 sisyphous nfs-common[6530]: Starting NFS common utilities: statd idmapdrpc.idmapd: libnfsidmap: using domain: ITET-PHO
Oct  5 15:11:07 sisyphous nfs-common[6530]: rpc.idmapd: libnfsidmap: Realms list: 'ITET-PHO'
Oct  5 15:11:07 sisyphous nfs-common[6530]: rpc.idmapd: libnfsidmap: processing 'Method' list
Oct  5 15:11:07 sisyphous nfs-common[6530]: rpc.idmapd: libnfsidmap: loaded plugin /lib/x86_64-linux-gnu/libnfsidmap/static.so for method static
Oct  5 15:11:07 sisyphous rpc.idmapd[6551]: libnfsidmap: Realms list: 'ITET-PHO'
Oct  5 15:11:07 sisyphous rpc.idmapd[6551]: libnfsidmap: processing 'Method' list
Oct  5 15:11:07 sisyphous rpc.idmapd[6551]: libnfsidmap: loaded plugin /lib/x86_64-linux-gnu/libnfsidmap/static.so for method static
Oct  5 15:11:07 sisyphous rpc.idmapd[6552]: Expiration time is 600 seconds.
Oct  5 15:11:07 sisyphous rpc.idmapd[6552]: Opened /proc/net/rpc/nfs4.nametoid/channel
Oct  5 15:11:07 sisyphous nfs-common[6530]: .
Oct  5 15:11:07 sisyphous rpc.idmapd[6552]: Opened /proc/net/rpc/nfs4.idtoname/channel
Oct  5 15:11:07 sisyphous systemd[1]: Started LSB: NFS support files common to client and server.
Oct  5 15:11:07 sisyphous rpc.idmapd[6552]: New client: fa
Oct  5 15:11:07 sisyphous rpc.idmapd[6552]: New client: fb
Oct  5 15:11:07 sisyphous rpc.idmapd[6552]: Opened /run/rpc_pipefs/nfs/clntfb/idmap

E quando montei a exportação com mount.nfs4 cerberous:/volume1/homes /mnt/test , obtenho:

Oct  5 15:11:19 sisyphous rpc.idmapd[6552]: New client: fc
Oct  5 15:11:19 sisyphous rpc.idmapd[6552]: New client: fd
Oct  5 15:11:19 sisyphous rpc.idmapd[6552]: New client: fe
Oct  5 15:11:19 sisyphous rpc.idmapd[6552]: Stale client: fe
Oct  5 15:11:19 sisyphous rpc.idmapd[6552]: #011-> closed /run/rpc_pipefs/nfs/clntfe/idmap
Oct  5 15:11:19 sisyphous rpc.idmapd[6552]: Stale client: fd
Oct  5 15:11:19 sisyphous rpc.idmapd[6552]: #011-> closed /run/rpc_pipefs/nfs/clntfd/idmap
Oct  5 15:11:19 sisyphous rpc.idmapd[6552]: Stale client: fc
Oct  5 15:11:19 sisyphous rpc.idmapd[6552]: #011-> closed /run/rpc_pipefs/nfs/clntfc/idmap

Como posso fazer o mapeamento id (pelo menos estático) funcionar no Debian? O mapeamento de ID deve funcionar com o Synology em geral. Eventualmente, gostaria de mapear automaticamente os usuários do Synology para usuários LDAP na máquina Linux.

    
por erik 05.10.2016 / 15:48

1 resposta

1

Aviso: O mapeamento de ID sem um servidor Kerberos funciona apenas na metade do caminho com o NFSv4, parece. Eu consegui obter os nomes de usuário corretos para aparecer no meu cliente ao listar arquivos, mas criar novos arquivos sempre os cria como usuário ninguém porque a Synology não mapeia nada nesse caso. Este relatório de erros e o thread vinculado sugere que este seja um comportamento normal de idmapd quando não estiver usando o Kerberos por algum motivo. (EDIT: Explicação mais detalhada. )

No entanto, o que eu fiz:

Primeiro, você precisa habilitar o idmapping depois de carregar o serviço NFS. Para isso, você precisa editar o arquivo /usr/syno/etc/rc.sysv/S83nfsd.sh no Synology. Encontre a linha

SYNOLoadModules $KERNELMODULE

e adicione a seguinte linha depois disso:

echo "N" > /sys/module/nfsd/parameters/nfs4_disable_idmapping

Em seguida, ainda na Synology, edite o /etc/idmap.conf e defina o Domain para o seu ITET-PHO , se ainda não estiver definido. Desabilite o NFS, aplique e reabilite (+ aplique) posteriormente no centro de controle da Synology para recarregar nfds .

Na sua máquina cliente, crie um arquivo /etc/modprobe.d/nfs-idmap.conf com o seguinte conteúdo:

options nfs nfs4_disable_idmapping=0
options nfsd nfs4_disable_idmapping=0

Recarregue o módulo do kernel nfs para aplicar as opções.

Verifique também se idmapd está sendo executado em seu cliente. (No Ubuntu Artful, eu tive que executar sudo systemctl start nfs-idmapd manualmente, eu acho.) E, claro, use nfsvers=4 como uma opção de montagem.

(Na Synology, você pode killall idmapd e executá-lo em primeiro plano usando idmapd -f -vvv para ver se está fazendo alguma coisa.)

    
por 05.01.2018 / 12:23