NFSを介していくつかのファイルシステムをエクスポートするUbuntu 12.04サーバーがあります。
server$ cat /etc/exports
/home 192.168.42.0/255.255.255.0(rw,anonuid=65534,anongid=65534,async,no_subtree_check)
/stuff 192.168.42.0/255.255.255.0(rw,anonuid=65534,anongid=65534,async,no_subtree_check)
/stuff 192.168.99.0/255.255.255.0(ro,anonuid=65534,anongid=65534,async,no_subtree_check)
私はそれらをマウントするクライアントも持っています:
client$ cat /etc/fstab
...
server:/home /home nfs hard,intr,rsize=8192,wsize=8192,_netdev 0 0
server:/stuff /server/stuff nfs hard,intr,rsize=8192,wsize=8192,_netdev 0 0
クライアントのIPは192.168.42.xの範囲にあります。昨日までUbuntu 10.04を実行していました。 NFSは多かれ少なかれ正常に機能しました(ブート時に自動マウントされない場合がありますが、それを検出して修正するためのcronスクリプトがありました)。
昨日、クライアントをUbuntu 12.04にアップグレードして再起動しました。 NFSは引き続き正常に機能しました。
今日、クライアントをUbuntu 14.04にアップグレードして再起動しました。 NFSはマウントされましたが、すべてのファイル所有権情報はnobody:4294967294にマップされます。
client$ ls -ld /home/weblate
drwxr-xr-x 5 nobody 4294967294 4096 Jan 29 2014 weblate
それはなぜですか、またファイルの所有権を再び機能させるために何をする必要がありますか?
重要な手がかりは/var/log/syslog
に現れました:
Sep 16 13:11:07 client nfsidmap[7340]: nss_getpwnam: name 'www-data@lan' does not map into domain 'localdomain'
NFSv4Howto からのこの抜粋と組み合わせて
すべてのディレクトリリストに実際のユーザー名とグループ名ではなく「nobody」と「nogroup」のみが表示される場合は、/ etc/idmapd.confに設定されているDomainパラメーターを確認することをお勧めします。 NFSv4クライアントとサーバーは同じドメインにある必要があります。
/etc/idmap.conf
のこのコメント:
# set your own domain here, if id differs from FQDN minus hostname
# Domain = localdomain
したがって、私のサーバーはそのドメインがlan
であると考えていたことがわかりました。
server$ hostname -f
server.lan
server$ grep server /etc/hosts
127.0.1.1 server.lan server
私のクライアントにはドメインがありませんでしたが:
client$ hostname -f
client
client$ grep client /etc/hosts
127.0.1.1 client
修正:クライアント上の/etc/hosts
を編集して読み取ります
127.0.1.1 client.lan client
そして再起動します。
この方法で問題を解決しました。ファイル/etc/nfsmount.conf
を開き、Nfsvers=
を見つけます。
その行のコメントを外し、サーバーでサポートされているNFSバージョンを記述します。私は3だったので書きました:
Nfsvers=3
NFSサーバーを再起動しました。