web-dev-qa-db-ja.com

IDマッピングを使用してSynologyNFSv4エクスポートをマウントします

NFSv4を介して共有ディレクトリをエクスポートするSynologyDiskStation(DSM 6.0.2)があります。 NFSv4ドメインITET-PHOを指定しました。

別のLinuxマシン(Debian Wheezy)で、idmappingを使用してこのエクスポートをマウントしたいと思います。 /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

そこで、ドメインITET-PHOにあるSynologyのユーザーerikheをローカルユーザーerikに静的にマッピングしようとしています。他のすべてのユーザーはnobodyにマップする必要があります。ただし、共有ディレクトリをマウントすると、SynologyからのUID番号が表示されます。

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

また、nobodyの代わりに他のすべてのUIDが表示されます。ログファイルで、idmapが何かをしていることがわかります。これは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

そして、mount.nfs4 cerberous:/volume1/homes /mnt/testを使用してエクスポートをマウントすると、次のようになります。

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

DebianでIDマッピング(少なくとも静的)を機能させるにはどうすればよいですか? IDマッピングは一般的にSynologyで機能するはずです。最終的には、SynologyユーザーをLinuxマシンのLDAPユーザーに自動的にマッピングしたいと思います。

4
erik

免責事項:Kerberosサーバーを使用しないIDマッピングは、NFSv4では途中でしか機能しないようです。ファイルを一覧表示するときにクライアントに表示される正しいユーザー名を取得できましたが、新しいファイルを作成すると、Synologyは何もマップしないため、常にユーザーnobodyとして作成されます。 。 このバグレポート および リンクされたスレッド は、何らかの理由でKerberosを使用していない場合のidmapdの正常な動作であることを示唆しています。 (編集: より詳細な説明。

しかし、私がしたこと:

まず、NFSサービスをロードした後、idmappingを有効にする必要があります。そのためには、Synologyでファイル/usr/syno/etc/rc.sysv/S83nfsd.shを編集する必要があります。行を見つける

SYNOLoadModules $KERNELMODULE

その後、次の行を追加します。

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

次に、Synologyで、/etc/idmap.confを編集し、まだ設定されていない場合はDomainITET-PHOに設定します。 NFSを無効にし、Synologyのコントロールセンターで適用および再有効化(+適用)して、nfdsをリロードします。

クライアントマシンで、次の内容のファイル/etc/modprobe.d/nfs-idmap.confを作成します。

options nfs nfs4_disable_idmapping=0
options nfsd nfs4_disable_idmapping=0

その後、nfsカーネルモジュールをリロードして、オプションを適用します。

また、idmapdがクライアントで実行されていることを確認してください。 (Ubuntuの巧妙な方法では、手動でSudo systemctl start nfs-idmapdを実行する必要があったと思います。)そしてもちろん、マウントオプションとしてnfsvers=4を使用します。

(Synologyでは、killall idmapdを使用してフォアグラウンドで実行し、idmapd -f -vvvを使用して何かを実行しているかどうかを確認できます。)

1
mbirth