Comment définir correctement les autorisations pour le dossier NFS? Autorisation refusée sur le montage.

46

J'essaie de me connecter à un dossier NFS sur mon serveur de développement. Le propriétaire du dossier sur le serveur de développement est darren et le groupe darren.

Lorsque je l'exporte et le monte sur mon Mac à l'aide de l'utilitaire de disque, il se monte, mais lorsque j'essaie d'ouvrir le dossier, il indique que je ne dispose pas d'autorisations. J'ai défini rw, sync et no_subtree_check. L'utilisateur sur le Mac est Darren avec un groupe de groupes.

Dois-je avoir le même groupe et le même utilisateur configuré pour accéder au dossier?

Darren
la source
2
Merci pour votre question, ce fil a résolu le problème pour moi! Mais s'il vous plaît accepter la réponse avec les votes les plus élevés.
Mamiu

Réponses:

61

NFS est construit sur l'authentification RPC. Avec NFS version 3, le mécanisme d'authentification le plus courant est AUTH_UNIX. L'ID utilisateur et l'ID groupe du système client sont envoyés dans chaque appel RPC et les autorisations de ces ID sur le fichier en cours d'accès sont vérifiées sur le serveur. Pour que cela fonctionne, les UID et GID doivent être identiques sur le serveur et les clients. Cependant, vous pouvez forcer tous les accès à se produire en tant qu'utilisateur et groupe uniques en combinant les options d'exportation all_squash, anonuid et anongid. all_squash mappera tous les UID et les GID sur l'utilisateur anonyme, et anonuid et anongid définiront l'UID et le GID de l'utilisateur anonyme. Par exemple, si votre UID et votre GID sur votre serveur dev sont tous deux 1001, vous pouvez exporter votre répertoire personnel avec une ligne comme

/home/darren 192.168.1.1/24(rw,all_squash,anonuid=1001,anongid=1001)

Je connais moins bien la version 4 de NFS, mais je pense que vous pouvez configurer rpc.idmapd sur les clients pour modifier l'uid et le gid qu'ils envoient au serveur.

sciurus
la source
7
J'ai rencontré cette réponse en essayant de résoudre un problème Apple OS X Yosemite NFS. Cette réponse est beaucoup plus pertinente et précise que la réponse acceptée. Il n'est ni conseillé ni faisable de faire correspondre les identifiants UID / GID d'un système à l'autre. Un utilisateur root sur le système A n'est probablement pas un utilisateur root sur le système B.
Allan
28

Lorsque vous montez NFS, vos autorisations avec lesquelles vous montez doivent correspondre à ce que vous avez sur le serveur. Par exemple, si votre utilisateur ne dispose que d’un accès en lecture seule, le montage en lecture-écriture vous fera voir les mêmes erreurs que celles mentionnées dans votre message lorsque vous essayez de charger le montage. Malheureusement, cela ne sera visible que lorsque vous accédez au dossier, pas lorsque vous le montez réellement.

Vous voulez également vous assurer que l'utilisateur NFS est exécuté comme sur le serveur et que l'utilisateur du client utilise les mêmes UID et GID. Vous pouvez vérifier ces valeurs en exécutant id darrenà la fois le serveur et le client. Si les valeurs UID et GID ne correspondent pas, vous pouvez les modifier /etc/passwdpour le rendre ainsi - mais assurez-vous de bien comprendre ce que vous faites avant de modifier arbitrairement les valeurs!

Quelques bonnes sources:

J'espère que ça aide!

Andrew M.
la source
Oui, je n'aurais pas dû essayer de changer l'UID. Je dois refaire mon serveur maintenant. Comment imiter l'UID et le GID? Est-ce vraiment si compliqué?
Darren
Malheureusement, d'après mon expérience d'utilisation sur le lieu de travail, NFS est extrêmement fragile et, oui, cela peut être aussi compliqué. Généralement, vous souhaiterez un utilisateur NFS dédié avec un UID / GID spécifique sur chaque serveur / client afin de ne pas rencontrer ce problème. Si vous avez le choix dans votre environnement de développement (c’est-à-dire qu’il n’a PAS à utiliser NFS), envisagez d’utiliser quelque chose comme SSHFS pour que vos devs disparaissent, mais ne répliquera pas les mêmes fonctionnalités qu’un serveur de production utilisant NFS.
Andrew M.
Pensez-vous que Samba est une autre solution? Je l'ai utilisé avec Windows sans problème et je pense que c'est la voie à suivre même si j'utilise un Mac pour développer mon application.
Darren
C'est certainement une autre possibilité, si vous êtes prêt à l'installer.
Andrew M.
2
J'hésiterais à dire que NFS est fragile. C'est un protocole de service de fichiers établi depuis longtemps. Il n'y a en réalité que deux exigences pour NFS: l'UID / GID synchronisé entre les clients et l'heure synchronisée entre les clients et le serveur. NIS était traditionnellement utilisé pour synchroniser les informations utilisateur, mais LDAP est un choix plus sécurisé pour les nouveaux déploiements de la dernière décennie.
Jeff Strunk
2

Est-ce que vos UID et GID correspondent sur les deux serveurs? C’est ce qu’il utilise pour contrôler l’accès et non le nom de connexion et le nom du groupe.

JOTN
la source
-2

Pour moi, le problème a été résolu en fournissant _netdevune option de montage sur le client.

C'est-à-dire ajouter ceci à /etc/fstab:

nfs-server:/   /mnt   nfs4    _netdev,auto  0  0
Vanuan
la source