web-dev-qa-db-fra.com

mount.nfs: accès refusé par le serveur lors du montage sur des machines Ubuntu?

J'ai trois machines en production -

machineA    10.66.136.129
machineB    10.66.138.181
machineC    10.66.138.183

et toutes ces machines ont Ubuntu 12.04 installé et j'ai un accès root à ces trois machines.

Maintenant, je suis censé faire des choses ci-dessous dans mes machines ci-dessus -

Create mount point /opt/exhibitor/conf
Mount the directory in all servers.
 Sudo mount <NFS-SERVER>:/opt/exhibitor/conf /opt/exhibitor/conf/

J'ai déjà créé /opt/exhibitor/conf répertoire dans ces trois machines comme mentionné ci-dessus.

Maintenant, j'essaie de créer un point de montage. J'ai donc suivi le processus ci-dessous -

Installer les fichiers de support NFS et le serveur du noyau NFS sur les trois machines ci-dessus

$ Sudo apt-get install nfs-common nfs-kernel-server

Créez le répertoire partagé dans les trois machines ci-dessus

$ mkdir /opt/exhibitor/conf/

Modifié le /etc/exports et a ajouté l'entrée comme celle-ci dans les trois machines ci-dessus -

# /etc/exports: the access control list for filesystems which may be exported
#               to NFS clients.  See exports(5).
#
# Example for NFSv2 and NFSv3:
# /srv/homes       hostname1(rw,sync,no_subtree_check) hostname2(ro,sync,no_subtree_check)
#
# Example for NFSv4:
# /srv/nfs4        gss/krb5i(rw,sync,fsid=0,crossmnt,no_subtree_check)
# /srv/nfs4/homes  gss/krb5i(rw,sync,no_subtree_check)
#
/opt/exhibitor/conf/     10.66.136.129(rw)
/opt/exhibitor/conf/     10.66.138.181(rw)
/opt/exhibitor/conf/     10.66.138.183(rw)

J'ai essayé de monter sur machineA comme ci-dessous à partir de machineB et machineC et cela me donne cette erreur-

root@machineB:/# Sudo mount -t nfs 10.66.136.129:/opt/exhibitor/conf /opt/exhibitor/conf/
mount.nfs: access denied by server while mounting 10.66.136.129:/opt/exhibitor/conf

root@machineC:/# Sudo mount -t nfs 10.66.136.129:/opt/exhibitor/conf /opt/exhibitor/conf/
mount.nfs: access denied by server while mounting 10.66.136.129:/opt/exhibitor/conf

Est-ce que mon /etc/exports le fichier a l'air bien? Je suis presque sûr, j'ai foiré mon fichier exports. Comme j'ai le même contenu dans les trois machines dans le fichier d'exportation.

Une idée du mal que je fais ici? Et quelle sera la bonne /exports déposer ici?

70
arsenal

exportfs

Lorsque vous créez un /etc/exports fichier sur un serveur, vous devez vous assurer que vous l'exportez. En règle générale, vous souhaiterez exécuter cette commande:

$ exportfs -a

Cela exportera toutes les entrées du fichier d'exportation.

showmount

L'autre chose que je fais souvent, c'est à partir d'autres machines que je vérifierai toute machine qui exporte des partages NFS vers le réseau à l'aide de la commande showmount.

$ showmount -e <NFS server name>

Exemple

Disons par exemple que je suis connecté à scully.

$ showmount -e mulder
Export list for mulder:
/export/raid1/isos     192.168.1.0/24
/export/raid1/proj     192.168.1.0/24
/export/raid1/data     192.168.1.0/24
/export/raid1/home     192.168.1.0/24
/export/raid1/packages 192.168.1.0/24

fstab

Pour les monter au démarrage, vous devez ajouter cette ligne à vos machines clientes qui souhaitent utiliser les montages NFS.

server:/shared/dir /opt/mounted/dir nfs rsize=8192,wsize=8192,timeo=14,intr

montage automatique

Si vous comptez redémarrer ces serveurs, je vous suggère fortement de rechercher la configuration du montage automatique (autofs) au lieu d'ajouter ces entrées à /etc/fstab. C'est un peu plus de travail mais ça vaut bien l'effort.

Cela vous permettra de redémarrer les serveurs plus indépendamment les uns des autres et ne créera également le montage NFS que lorsqu'il est réellement nécessaire et/ou utilisé. Quand il devient inactif, il sera démonté.

Références

75
slm

J'ai vu la même erreur (mount.nfs: access denied by server while mounting...) et le problème a été résolu par -o v3 option comme suit:

$ Sudo mount -o v3 a-nfs-server:/path/to/export /path/to/mount
  • Le serveur est Ubuntu 14.04 64bit LTS.
  • Le client est CentOS 6.5 64 bits.
41
Fumisky Wells

Dans mon cas, fonctionne en utilisant nfs4 en faisant:

$ Sudo mount -t nfs4 nom-serveur:// chemin/vers/montage

Dans le /etc/export fichier sur le serveur

/Path/to/export 192.168.1.0/24(rw,sync,fsid=0,no_root_squash,crossmnt,no_subtree_check,no_acl)

fsid=0 fait le /Path/to/export le répertoire racine lorsque vous montez le partage.

crossmnt, car j'ai d'autres lecteurs dans le système de fichiers exportés auxquels je veux également accéder.

no_root_squash, car je veux accéder en tant qu'utilisateur root (su) du côté client. Je suis à peu près sûr que je suis le seul à pouvoir le faire dans mon réseau local.

Le serveur et les clients sont Ubuntu 14.04 64bit.

Si vous souhaitez utiliser nfs3, la réponse de @ fumisky-wells fonctionne également pour moi.

7
victe

J'obtenais le même message d'erreur et mon problème s'est avéré être dû au fait que la machine cliente avait deux interfaces réseau connectées au même LAN. Le serveur avait été configuré pour attendre une adresse IP spécifique et le trafic sortait sur la deuxième interface qui a une adresse IP DHCP. J'ai donc simplement configuré la deuxième interface pour avoir une adresse IP statique et j'ai également ajouté la deuxième adresse IP statique à la configuration du serveur.

4
majjinator

/etc/exports doit être modifié sur la machine NFS serveur, pas sur les clients, comme vous le dites, car elle est vérifiée par le serveur NFS lorsqu'un client demande l'accès à un partage.

Si vous mettez ce qui suit dans /etc/exports sur le serveur NFS, cela devrait fonctionner:

/opt/exhibitor/conf 10.66.136.129(rw)
/opt/exhibitor/conf 10.66.138.181(rw)
/opt/exhibitor/conf 10.66.138.183(rw)
3
Chris Down

Après avoir lutté avec ce même message d'erreur pendant des heures, mon problème s'est avéré être rien de plus compliqué que de bonnes autorisations de fichiers Linux à l'ancienne sur l'hôte NFS.

Le dossier que j'essayais de partager (/home/foo/app/share) avait les autorisations appropriées, mais parce que le répertoire personnel de l'utilisateur (/home/foo) eu 0750 mode dessus, NFS n'a pas pu traverser pour accéder au répertoire partagé.

Dès que j'ai mis le répertoire personnel de l'utilisateur en mode 0751, le service NFS a pu y accéder et j'ai pu monter le partage depuis ma machine cliente.

2
Dale Anderson

Pour moi, le problème était que j'utilisais l'adresse IP du serveur dans /etc/exports/ au lieu de client un.

Le truc, c'est que vous devez mettre toutes les ips auxquelles vous accordez l'accès sur le serveur /etc/exports/

2
Vanuan

Si nfs-client essaie de monter le partage exporté à l'intérieur du conteneur Linux, le conteneur doit s'exécuter en mode privilégié.

En cas de docker;

$ docker run -it --rm --privileged ubuntu:14.04

2
efesaid

La même chose pourrait se produire si vous essayez de monter un partage NFS sur une instance de Virtual Box avec une carte réseau configurée comme NAT.

Choisir Bridged Adapter dans les paramètres réseau de la machine virtuelle résout ce problème.

0
mkaptur

La seule solution qui a fonctionné pour moi était d'exporter des systèmes de fichiers commençant par /srv. Il semble que ce soit une limitation (ou une option par défaut, au moins) de NFSv4.

Puisque j'essayais d'exporter une clé USB qui se monte automatiquement sur /media, J'avais besoin d'un moyen pour obtenir ce "monté" sous /srv. Pour y parvenir:

Sudo mkdir /srv/videos
Sudo mount --bind /media/jim/wdportable/videos /srv/videos

Et en /etc/exports:

/srv/videos 192.168.0.200(ro)

Quand j'ai exporté /media/jim/wdportable/videos directement, la tentative de montage sur le client entraînait toujours mount.nfs: access denied by server.

Le -o v3 la solution a fonctionné, mais je ne voulais pas forcer la v3.

0
Jim Stewart

Il convient de noter qu'une page liée qui m'a conduit ici avait ma bonne réponse, à savoir que vous ne pouvez PAS utiliser * le caractère générique dans l'adresse IP lors de l'exportation. Il est soit * (toutes les IP), soit utilisé comme caractère générique dans les noms de domaine IE: * .domain.com.

Par exemple: c'est correct

/Path/to/export 192.168.1.0/24(flags)

Cela ne fonctionnera pas (ou est incorrect du moins), mais a fonctionné pour moi pendant des années jusqu'à ce que j'essaie de monter l'exportation depuis une machine virtuelle Fedora.

/Path/to/export 192.168.1.*(flags)
0
FreeSoftwareServers

Évidemment, cette erreur peut être déclenchée par de nombreuses causes. Dans mon cas, la solution a consisté à ajouter l'option insecure dans /etc/exports sur le serveur:

/path/to/be/exported authorized_client(rw,root_squash,sync,no_subtree_check,insecure)

Cela est dû au fait que certains clients NFS ne respectent pas la règle établie selon laquelle les demandes de montage ne doivent pas provenir de ports TCP (numéro de port supérieur à la plage 0-1023)).

La raison de la règle est que les ports bas TCP ne peuvent être utilisés que par des utilisateurs privilégiés (c'est-à-dire root) sur les systèmes UNIX. Et l'importation de partages NFS sur un système en est un exemple.

0
Gianluca Frustagli

Cette erreur peut également être provoquée en essayant de monter un chemin chiffré. (Par exemple dans votre répertoire personnel, si vous avez choisi de le crypter)

0
user3737396

Pour moi, le problème était que mon routeur a changé l'adresse IP utilisée du client, de sorte que l'entrée dans /etc/exports sur la machine serveur n'autorisait l'accès qu'à une adresse IP qui n'était plus utilisée.

0
Alex

Je sais que c'est un vieux fil, mais mon problème était lié à LXC et AppArmor.

Tuer AppArmor, ou ajouter un profil d'exception, l'a corrigé.

0
Josh