mount.nfs: Zugriff vom Server beim Mounten auf Ubuntu-Rechnern verweigert?


64

Ich habe drei Maschinen in Produktion -

machineA    10.66.136.129
machineB    10.66.138.181
machineC    10.66.138.183

Auf all diesen Maschinen ist Ubuntu 12.04 installiert, und ich habe root-Zugriff auf all diese drei Maschinen.

Jetzt soll ich unter Dinge in meinen oben genannten Maschinen tun -

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

Ich habe /opt/exhibitor/confin all diesen drei Rechnern bereits ein Verzeichnis angelegt, wie oben erwähnt.

Jetzt versuche ich einen Mount Point zu erstellen. Also folgte ich dem folgenden Prozess -

Installieren Sie die NFS-Unterstützungsdateien und den NFS-Kernel-Server auf allen drei oben genannten Computern

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

Erstellen Sie das freigegebene Verzeichnis auf allen drei oben genannten Computern

$ mkdir /opt/exhibitor/conf/

Bearbeitet die /etc/exportsund fügte den Eintrag wie folgt in allen drei oben genannten Maschinen -

# /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)

Ich habe versucht, auf Maschine A wie unten von Maschine B und Maschine C zu montieren, und es gibt mir diese Fehler-

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

Hat meine /etc/exportsDatei gut ausgesehen? Ich bin mir ziemlich sicher, dass ich meine exportsAkte durcheinander gebracht habe . Da ich in allen drei Maschinen den gleichen Inhalt in Exportdatei habe.

Irgendeine Idee, was ich hier falsch mache? Und was wird hier die richtige /exportsDatei sein?


1
Zu Ihrer Information: Überprüfen Sie die Berechtigungen auf dem Host / Client. Wenn der NFS-Host über Berechtigungen verfügt 0750oder wenn der 0700Client, der versucht, das Mounten durchzuführen, mit hoher Wahrscheinlichkeit mit derselben Fehlermeldung fehlschlägt . Ich habe den Host von 0750nach gewechselt 0755und dann ist der Fehler verschwunden und alles war in Ordnung.
Trevor Boyd Smith

Antworten:


70

exportfs

Wenn Sie eine /etc/exportsDatei auf einem Server erstellen , müssen Sie sicherstellen, dass Sie sie exportieren. Normalerweise möchten Sie diesen Befehl ausführen:

$ exportfs -a

Dadurch werden alle Einträge in der Exportdatei exportiert.

showmount

Das andere, was ich oft mache, ist, dass ich von anderen Computern aus jeden Computer überprüfe, der NFS-Freigaben mit dem showmountBefehl in das Netzwerk exportiert .

$ showmount -e <NFS server name>

Beispiel

Sagen Sie zum Beispiel, ich bin in scully eingeloggt.

$ 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

Um diese beim Booten bereitzustellen, fügen Sie diese Zeile Ihren Client-Computern hinzu, die die NFS-Bereitstellungen verwenden möchten.

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

automounting

Wenn Sie diese Server neu starten möchten, empfehlen wir Ihnen dringend, automounting ( autofs) einzurichten, anstatt diese Einträge hinzuzufügen /etc/fstab. Es ist ein bisschen mehr Arbeit, aber die Mühe lohnt sich.

Auf diese Weise können Sie die Server unabhängiger voneinander neu starten und den NFS-Mount nur dann erstellen, wenn er tatsächlich benötigt und / oder verwendet wird. Wenn es im Leerlauf läuft, wird es ausgehängt.

Verweise


Danke für den Vorschlag. Ich habe das gerade gemacht und jetzt funktioniert es gut. Anstatt zu rennen exportfs -a, rannte ich exportfs -rv. Gibt es einen Unterschied zwischen diesen? Und in meinem Fall showmount -e 10.66.136.129mache ich das von Maschine B und Maschine C. richtig?
Arsenal

1
@ TechGeeky - nicht wirklich. exportfs -rvnur macht ein reexport + ist wortreich. Der -aexportiert alles. Was showmount -eja man kann es von diesen Maschinen laufen oder man die Aktien dienen.
slm

ok .. Danke, mache jetzt Sinn .. Eine letzte Sache. Ich glaube, es gibt noch eine Sache zu diesem Mount-Point-Ding, fstab-Datei .. Richtig? Nun, welche Maschine fstab-Datei soll ich ändern? Und welchen Inhalt soll ich da hinzufügen? Irgendeine Idee?
Arsenal

@ TechGeeky siehe Updates. Sie fügen den Clients Einträge hinzu, die die NFS-Freigaben verwenden möchten.
slm

1
Unter Ubuntu müssen Sie zuerst den nfs-Kernel-Server installieren, damit exportfs verfügbar ist. Quelle: manpages.ubuntu.com/manpages/trusty/man8/exportfs.8.html
flickerfly

40

Ich habe den gleichen Fehler gesehen ( mount.nfs: access denied by server while mounting...) und das Problem wurde -o v3wie folgt per Option behoben :

$ sudo mount -o v3 a-nfs-server:/path/to/export /path/to/mount
  • Server ist Ubuntu 14.04 64bit LTS.
  • Client ist CentOS 6.5 64bit.

2
Keiner der anderen half, das war in meinem Fall die Lösung.
Urhixidur

1
Ich habe es versucht und bekam mount.nfs: Connection timed out. (Client ist Ubuntu 14.04 LTS 64-Bit. Server ist ein QNAP NFS mit QTS 4.0.2 2016/01/09.)
Steve

Ja, als ich meinen Server auf Ubuntu 16 aufrüstete, war dies das Problem und die Lösung.
Sridhar Sarnobat

2
Sei vorsichtig damit. NFSv3 ist uralt und längst überholt. Es sollte wirklich nicht mehr verwendet werden (und dies war sogar wahr, als dieser Beitrag geschrieben wurde).
Michael Hampton

7

In meinem Fall funktioniert mit NFS4:

$ sudo mount -t nfs4 Servername: / / Pfad / nach / mount

In der /etc/exportDatei auf dem Server

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

fsid=0macht das /Path/to/exportzum Stammverzeichnis, wenn Sie die Freigabe mounten.

crossmnt, weil ich einige andere Laufwerke im exportierten Dateisystem habe, auf die ich auch zugreifen möchte.

no_root_squash, weil ich als root-Benutzer (su) von der Client-Seite zugreifen möchte. Ich bin mir ziemlich sicher, dass ich der einzige bin, der das in meinem lokalen Netzwerk kann.

Server und Clients sind Ubuntu 14.04 64bit.

Wenn Sie nfs3 verwenden möchten, funktioniert die Antwort von @ fumisky-wells auch für mich.


Sie haben sich eine positive Stimme verdient, Sir. Ich habe ein NAS, daher ist das Modifizieren der Datei / etc / export keine Option, aber die Angabe des vollständigen Pfads hat den Trick bewirkt. gut gemacht.
MDMoore313

4

Es wurde dieselbe Fehlermeldung angezeigt, und mein Problem wurde dadurch verursacht, dass auf dem Clientcomputer zwei Netzwerkschnittstellen mit demselben LAN verbunden waren. Der Server wurde so konfiguriert, dass er eine bestimmte IP-Adresse erwartet und der Datenverkehr auf der zweiten Schnittstelle mit einer DHCP-IP-Adresse ausgeht. Deshalb habe ich die zweite Schnittstelle so konfiguriert, dass sie eine statische IP-Adresse hat, und der Serverkonfiguration die zweite statische IP-Adresse hinzugefügt.


Mann, ich wünschte, das wäre eher nach oben gerichtet, genau das passierte in meinem Fall
Brian Leishman,

3

/etc/exportsmuss auf dem NFS- Server bearbeitet werden, nicht auf den Clients, wie Sie es angegeben haben, da dies vom NFS-Server überprüft wird, wenn ein Client den Zugriff auf eine Freigabe anfordert.

Wenn Sie Folgendes in /etc/exportsden NFS-Server einfügen, sollte es funktionieren:

/opt/exhibitor/conf 10.66.136.129(rw)
/opt/exhibitor/conf 10.66.138.181(rw)
/opt/exhibitor/conf 10.66.138.183(rw)

Ich habe dies bereits in meiner Exportdatei auf machineA. Und dann mounte ich es von MaschineB und MaschineC und es funktioniert irgendwie nicht. Ist es möglich, dass ich in allen drei Maschinen in der Exportdatei die gleichen Informationen hinzugefügt habe, wird das ein Problem sein? Ich sollte nur in machineA hinzufügen?
Arsenal

1
@TechGeeky Haben Sie danach die NFS-Exporte mit neu geladen exportfs -a?
Chris Down

Ich habe das gerade gemacht und jetzt funktioniert es gut. Ich versuche, das Ganze besser zu verstehen. Meine erste Frage lautet also: Maschine A ist ein NFS-Server und Maschine B und Maschine C sind Clients. Richtig? Die zweite Frage lautet: Wenn MaschineA mein NFS-Server ist, füge ich nur in der Datei / etc / exports von MaschineA die obigen drei Zeilen hinzu, wie Sie in Ihrer Lösung erwähnt haben, und wir werden die Exportdatei von MaschineB und MaschineC nicht berühren. Richtig?
Arsenal

@TechGeeky Solange Sie eine Freigabe auf Maschine A bereitstellen, ist dies in beiden Fällen korrekt.
Chris Down

Vielen Dank. Jetzt verstehe ich das viel besser. Warum habe ich diese Frage gestellt, weil ich ähnliche Dinge auch in der Staging-Umgebung habe? Und was ich in diesen drei Maschinen in der Staging-Umgebung getan habe, habe ich dieselben drei Zeilen in alle meine / etc / exports-Dateien von drei Maschinen eingefügt, anstatt sie nur in Maschine A hinzuzufügen, aber es funktioniert immer noch gut. Und jetzt habe ich das ganze Konzept klarer verstanden. Danke für die Hilfe.
Arsenal

2

Wenn der nfs-client versucht, die exportierte Freigabe in den Linux-Container einzubinden, sollte der Container im privilegierten Modus ausgeführt werden.

Im Falle eines Hafenarbeiters;

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


2

Für mich war das Problem, dass ich die IP-Adresse /etc/exports/des Servers anstelle der des Clients verwendete .

Die Sache ist, Sie sollten alle IPS, auf die Sie Zugriff gewähren, auf Servern ablegen /etc/exports/


1

Nachdem ich stundenlang mit derselben Fehlermeldung gekämpft hatte, stellte sich heraus, dass mein Problem nicht komplizierter war als die altmodischen Linux-Dateiberechtigungen auf dem NFS-Host.

Der Ordner, den ich freigeben wollte ( /home/foo/app/share), hatte die richtigen Berechtigungen, aber da das Basisverzeichnis ( /home/foo) des Benutzers über einen 0750Modus verfügt, konnte NFS nicht darauf zugreifen, um auf das freigegebene Verzeichnis zuzugreifen.

Sobald ich das Home-Verzeichnis des Benutzers in den Modus versetzte 0751, konnte der NFS-Dienst darauf zugreifen und ich konnte die Freigabe von meinem Clientcomputer aus bereitstellen.


0

Für mich bestand das Problem darin, dass mein Router die verwendete IP-Adresse des Clients so geändert hat, dass der Eintrag /etc/exportsauf dem Servercomputer nur den Zugriff auf eine IP-Adresse ermöglichte, die nicht mehr verwendet wurde.


0

Dasselbe kann passieren, wenn Sie versuchen, eine NFS-Freigabe auf einer Virtual Box-Instanz mit dem Netzwerkadapter bereitzustellen, der als konfiguriert ist NAT.

Durch Auswahl der Bridged AdapterNetzwerkeinstellungen der virtuellen Maschine wird dieses Problem behoben.



0

Dieser Fehler kann auch durch den Versuch verursacht werden, einen verschlüsselten Pfad bereitzustellen. (Zum Beispiel in Ihrem Home-Verzeichnis, wenn Sie es verschlüsseln möchten)


0

Die einzige Lösung, die für mich funktionierte, war das Exportieren von Dateisystemen beginnend mit /srv. Dies scheint eine Einschränkung (oder zumindest eine Standardoption) von NFSv4 zu sein.

Da ich versucht habe, ein USB-Laufwerk zu exportieren, auf das das automatische Laden erfolgt /media, brauchte ich eine Möglichkeit, um dieses Laufwerk zu "mounten" /srv. Um das zu erreichen:

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

Und in /etc/exports:

/srv/videos 192.168.0.200(ro)

Wenn ich /media/jim/wdportable/videosdirekt exportierte , führte der Versuch, auf dem Client zu mounten, immer zu mount.nfs: access denied by server.

Die -o v3Lösung funktionierte, aber ich wollte v3 nicht erzwingen.


2
Ich kann fast garantieren, dass dies an den Berechtigungen für den /media/jimOrdner gelegen hätte. Wenn sich das Verzeichnis, das Sie freigeben möchten, in einem Verzeichnis mit dem Modus " only" 700oder " 750mode" befindet (oder sich darin befindet) , kann NFS nicht darauf zugreifen. Wenn Sie geändert /media/jimzu 751, wäre es wahrscheinlich funktionieren.
Dale Anderson

@ DaleAnderson ist richtig. Nach einem erfolgreichen sudo mount -o v3 192.168.0.200:"/media/pi/mydrive" /mnt/nfs-share(Raspbian auf Raspi 3 B +) habe ich es auch versucht sudo chmod 751 /media/pi. Danach brauchte ich nicht -o v3mehr: sudo mount 192.168.0.200:"/media/pi/mydrive" /mnt/nfs-shareerledigte den Job (nach dem Absteigen). Vielen Dank an @DaleAnderson.
Thomas Praxl

Das ist wahrscheinlich das Problem. Ich bin an die alten Zeiten gewöhnt, in denen der NFS-Server nur als Root ausgeführt wurde und blind exportierte, was ihm gesagt wurde. Ich werde das testen.
Jim Stewart

0

Es sollte beachtet werden, dass eine verlinkte Seite, die mich hierher führte, meine richtige Antwort hatte, nämlich dass Sie beim Export NICHT den Platzhalter * in der IP-Adresse verwenden können. Es ist entweder * (alle IP-Adressen) oder wird als Platzhalter in Domänennamen IE: * .domain.com verwendet.

ZB: das ist richtig

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

Dies wird nicht funktionieren (oder ist zumindest falsch), hat aber jahrelang bei mir funktioniert, bis ich versuchte, den Export von einer Fedora-VM zu mounten.

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


Ich denke, der Grund, warum es fehlgeschlagen ist, ist möglicherweise NFSv4, weil ich weiß, dass Fedora auf dem neuesten Stand ist und meine alte VM funktioniert hat, aber wahrscheinlich eine ältere NFS-Version verwendet hat. Nur eine Vermutung.
FreeSoftwareServers
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.