web-dev-qa-db-fra.com

Les autorisations de fichier sur le montage NFS s'affichent comme "personne" après la mise à niveau vers 14.04

J'ai un serveur Ubuntu 12.04 qui exporte quelques systèmes de fichiers sur NFS.

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)

J'ai aussi un client qui les monte:

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

L'adresse IP du client est comprise dans la plage 192.168.42.x. Il fonctionnait Ubuntu 10.04 jusqu'à hier. NFS a bien fonctionné, plus ou moins (parfois, il ne fonctionnait pas automatiquement au démarrage, mais j'avais un script cron pour détecter et résoudre ce problème).

J'ai mis à jour le client vers Ubuntu 12.04 hier et je l'ai redémarré. NFS a continué à bien fonctionner.

J'ai mis à jour le client vers Ubuntu 14.04 aujourd'hui et je l'ai redémarré. Maintenant, NFS est monté mais toutes les informations de propriété de fichier ne sont mappées à personne: 4294967294:

client$ ls -ld /home/weblate
drwxr-xr-x   5 nobody 4294967294     4096 Jan 29  2014 weblate

Pourquoi est-ce cela et que dois-je faire pour que la propriété de fichier fonctionne à nouveau?

5
Marius Gedminas

L'indice essentiel est apparu dans /var/log/syslog:

Sep 16 13:11:07 client nfsidmap[7340]: nss_getpwnam: name 'www-data@lan' does not map into domain 'localdomain'

combiné avec cet extrait de NFSv4Howto

Si toutes les listes de répertoires affichent uniquement "personne" et "nogroupe" au lieu de vrais noms d'utilisateurs et de groupes, vous pouvez vérifier le paramètre de domaine défini dans /etc/idmapd.conf. Le client et le serveur NFSv4 doivent appartenir au même domaine.

et ce commentaire dans /etc/idmap.conf:

# set your own domain here, if id differs from FQDN minus hostname
# Domain = localdomain

Donc, mon serveur pense que son domaine est lan:

server$ hostname -f
server.lan

server$ grep server /etc/hosts
127.0.1.1   server.lan server

alors que mon client n'avait pas de domaine:

client$ hostname -f
client

client$ grep client /etc/hosts
127.0.1.1   client

Le correctif: éditez /etc/hosts sur le client à lire

127.0.1.1   client.lan client

et redémarrez.

9
Marius Gedminas

J'ai résolu mon problème par cette méthode. Ouvrez le fichier /etc/nfsmount.conf et recherchez Nfsvers=.

Décommentez cette ligne et écrivez la version NFS prise en charge par votre serveur. La mienne avait 3 ans alors j'ai écrit:

Nfsvers=3

J'ai redémarré le serveur NFS.

1
Muhammad Naeem