mount.nfs: accesso negato dal server durante il montaggio su macchine Ubuntu?


65

Ho tre macchine in produzione -

machineA    10.66.136.129
machineB    10.66.138.181
machineC    10.66.138.183

e tutte quelle macchine hanno Ubuntu 12.04 installato e ho accesso root a tutte e tre queste macchine.

Ora dovrei fare cose sotto nelle mie macchine sopra -

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

Ho già creato la /opt/exhibitor/confdirectory in tutte e tre le macchine come menzionato sopra.

Ora sto cercando di creare un Mount Point. Quindi ho seguito la seguente procedura:

Installa i file di supporto NFS e il server del kernel NFS in tutte e tre le macchine precedenti

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

Creare la directory condivisa in tutte e tre le macchine sopra

$ mkdir /opt/exhibitor/conf/

Modificato il /etc/exportse aggiunto la voce in questo modo in tutte e tre le macchine sopra -

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

Ho provato a montare sulla macchina A come sotto da macchina B e macchinaC e mi dà questo errore-

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

Il mio /etc/exportsfile ha un bell'aspetto? Sono abbastanza sicuro, ho incasinato il mio exportsfile. Dato che ho lo stesso contenuto in tutte e tre le macchine nel file delle esportazioni.

Qualche idea di cosa sto facendo di sbagliato qui? E quale sarà il /exportsfile corretto qui?


1
FYI ricontrolla le autorizzazioni sull'host / client. Se l'host NFS dispone delle autorizzazioni 0750o 0700è molto probabile che il client che tenta di montare non riesca con lo stesso messaggio di errore. Ho cambiato l'host da 0750a, 0755quindi l'errore è scomparso e tutto è andato bene.
Trevor Boyd Smith,

Risposte:


72

exportfs

Quando si crea un /etc/exportsfile su un server, è necessario assicurarsi di esportarlo. In genere ti consigliamo di eseguire questo comando:

$ exportfs -a

Ciò esporterà tutte le voci nel file delle esportazioni.

showmount

L'altra cosa che farò spesso è da altre macchine che controllerò qualsiasi macchina che esporta condivisioni NFS sulla rete usando il showmountcomando.

$ showmount -e <NFS server name>

Esempio

Supponiamo ad esempio che io abbia effettuato l'accesso a 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

Per montarli sugli stivali, aggiungi questa linea ai computer client che desiderano utilizzare i montaggi NFS.

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

automounting

Se riavvierai questi server, ti consiglio vivamente di cercare di installare automounting ( autofs) invece di aggiungere queste voci a /etc/fstab. È un po 'più di lavoro ma ne vale la pena.

Ciò ti consentirà di riavviare i server in modo più indipendente l'uno dall'altro e creerà il montaggio NFS solo quando è effettivamente necessario e / o utilizzato. Quando diventa inattivo viene smontato.

Riferimenti


Grazie per il suggerimento L'ho appena fatto e ora funziona bene. Invece di correre exportfs -a, ho corso exportfs -rv. C'è qualche differenza tra quelli? E nel mio caso, showmount -e 10.66.136.129lo farò da machineB e machineC. giusto?
arsenale,

1
@TechGeeky - non proprio. exportfs -rvfa solo un reexport + è dettagliato. Il -aesporterà tutto. Quanto a showmount -esì, puoi eseguirlo da quelle macchine o da quello che serve le condivisioni.
slm

ok .. Grazie, makese senso ora .. Un'ultima cosa. Credo che ci sia un'altra cosa in questa cosa del mount point, file fstab .. giusto? Ora quale file fstab della macchina dovrei modificare? E quale contenuto dovrei aggiungere lì? Qualche idea?
arsenale il

@TechGeeky vedi aggiornamenti. È possibile aggiungere voci ai client che desiderano utilizzare le condivisioni NFS.
slm

1
Su Ubuntu, devi prima installare nfs-kernel-server affinché exportfs sia disponibile. Fonte: manpages.ubuntu.com/manpages/trusty/man8/exportfs.8.html
flickerfly

40

Ho visto lo stesso errore ( mount.nfs: access denied by server while mounting...) e il problema è stato risolto -o v3dall'opzione come segue:

$ sudo mount -o v3 a-nfs-server:/path/to/export /path/to/mount
  • Il server è Ubuntu 14.04 64 bit LTS.
  • Il client è CentOS 6.5 a 64 bit.

2
Nessuno degli altri ha aiutato, questa è stata la soluzione, nel mio caso.
Urhixidur,

1
Ho provato questo e ho ottenuto mount.nfs: Connection timed out. (Il client è Ubuntu 14.04 LTS a 64 bit. Il server è un QNAP NFS con QTS 4.0.2 2016/01/09.)
Steve

Sì, quando ho aggiornato il mio server a Ubuntu 16 questo era il problema e la soluzione.
Sridhar Sarnobat,

2
Stai attento con questo. NFSv3 è antico e lungo obsoleto; non dovrebbe più essere usato (e questo era vero anche quando questo post è stato scritto).
Michael Hampton,

7

Nel mio caso funziona usando nfs4 facendo:

$ sudo mount -t nfs4 nome-server: / / path / to / mount

Nel /etc/exportfile sul server

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

fsid=0rende la /Path/to/exportdirectory principale quando si monta la condivisione.

crossmnt, perché ho alcune altre unità nel file system esportato a cui voglio accedere anche.

no_root_squash, perché desidero accedere come utente root (su) dal lato client. Sono abbastanza sicuro di essere l'unico che può farlo nella mia rete locale.

Server e client sono Ubuntu 14.04 64 bit.

Se vuoi usare nfs3, la risposta di @ fumisky-wells funziona anche per me.


Ti sei guadagnato un voto positivo, signore; Ho un NAS, quindi modificare il file / etc / export non è un'opzione, ma specificare il percorso completo ha funzionato. molto bene.
MDMoore313

4

Stavo ricevendo lo stesso messaggio di errore e il mio problema si è rivelato dovuto alla macchina client con due interfacce di rete collegate alla stessa LAN. Il server era stato configurato per prevedere un indirizzo IP specifico e il traffico stava uscendo sulla seconda interfaccia che ha un indirizzo IP DHCP. Quindi ho appena configurato la seconda interfaccia per avere un indirizzo IP statico e ho anche aggiunto il secondo indirizzo IP statico alla configurazione del server.


Amico, vorrei che fosse più verso l'alto, è esattamente quello che stava succedendo nel mio caso
Brian Leishman,

3

/etc/exportsdeve essere modificato sulla macchina del server NFS , non sui client, come indicato, poiché viene controllato dal server NFS quando un client richiede l'accesso a una condivisione.

Se si inserisce quanto segue /etc/exportssul server NFS, dovrebbe funzionare:

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

Ho già questo nel mio file di esportazione su machineA. E poi lo sto montando da machineB e machineC e non funziona in qualche modo. È possibile che abbia aggiunto le stesse informazioni in tutte e tre le macchine nel file delle esportazioni, sarà un problema? Dovrei aggiungere solo in machineA?
arsenale il

1
@TechGeeky Hai ricaricato le esportazioni NFS dopo averlo fatto, usando exportfs -a?
Chris Down,

L'ho appena fatto e ora funziona bene. Sto cercando di capire meglio tutto questo, quindi la mia prima domanda è: machineA è il server NFS e machineB e machineC sono i client ... Corretto? La seconda domanda è, se machineA è il mio server NFS, quindi solo nel file / etc / exports di machineA, aggiungerò le tre righe precedenti come menzionato nella soluzione e non toccheremo il file di esportazione di machineB e machineC? Corretta?
arsenale,

@TechGeeky Finché stai montando una condivisione sulla macchina A, allora è corretto in entrambi i casi.
Chris Down,

Grazie. Ora lo capisco molto meglio. Perché ho posto questa domanda perché ho anche cose simili nell'ambiente di stadiazione. E quello che ho fatto in quelle tre macchine in ambiente di gestione temporanea, ho aggiunto le stesse tre linee in tutti i miei file / etc / export di tre macchine invece di aggiungerlo solo in machineA ma funziona ancora bene. E ora ho capito l'intero concetto più chiaramente. Grazie per l'aiuto.
arsenale,

2

Se nfs-client sta provando a montare la condivisione esportata all'interno del contenitore linux, il contenitore dovrebbe essere eseguito in modalità privilegiata.

In caso di docker;

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


2

Per me il problema era che stavo usando l'indirizzo IP del server /etc/exports/invece di quello client .

Il fatto è che dovresti mettere tutti gli IP a cui concedi l'accesso sui server /etc/exports/


1

Dopo aver combattuto con questo stesso messaggio di errore per ore, il mio problema si è rivelato essere niente di più complicato delle buone autorizzazioni di file Linux vecchio stile sull'host NFS.

La cartella che stavo cercando di condividere ( /home/foo/app/share) aveva le autorizzazioni corrette, ma poiché la home directory dell'utente ( /home/foo) aveva la 0750modalità su di essa, NFS non era in grado di attraversarla per accedere alla directory condivisa.

Non appena ho impostato la home directory dell'utente in modalità 0751, il servizio NFS è stato in grado di attraversarlo e sono stato in grado di montare la condivisione dal mio computer client.


0

Per me il problema era che il mio router ha cambiato l'indirizzo IP utilizzato del client, in modo che l'ingresso /etc/exportssul computer server consentisse l'accesso solo per un indirizzo IP che non era più utilizzato.


0

La stessa cosa potrebbe accadere se si tenta di montare una condivisione NFS sull'istanza di Virtual Box con la scheda di rete configurata come NAT.

La scelta Bridged Adapterdelle impostazioni di rete della macchina virtuale risolve questo problema.



0

Questo errore può anche essere causato dal tentativo di montare un percorso crittografato. (Ad esempio nella tua home directory, se hai scelto di crittografarlo)


0

L'unica soluzione che ha funzionato per me era esportare i filesystem a partire da /srv. Sembra che questa sia una limitazione (o un'opzione predefinita, almeno) di NFSv4.

Dal momento che stavo cercando di esportare un'unità USB che si monta automaticamente /media, avevo bisogno di un modo per farlo "montare" sotto /srv. Per fare ciò:

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

E in /etc/exports:

/srv/videos 192.168.0.200(ro)

Quando ho esportato /media/jim/wdportable/videosdirettamente, il tentativo di montare sul client è sempre risultato mount.nfs: access denied by server.

La -o v3soluzione ha funzionato, ma non volevo forzare la v3.


2
Posso quasi garantire che ciò sarebbe dovuto alle autorizzazioni per la /media/jimcartella. Se la directory che stai tentando di condividere è (o è all'interno di) una directory con only 700o 750mode, NFS non sarà in grado di attraversarla. Se è stata modificata /media/jimper 751, sarebbe probabilmente funzionerà.
Dale Anderson,

@DaleAnderson ha ragione. Dopo un successo sudo mount -o v3 192.168.0.200:"/media/pi/mydrive" /mnt/nfs-share(raspbian su Raspi 3 B +), ho anche provato a farlo sudo chmod 751 /media/pi. Successivamente, non mi serviva -o v3più: ha sudo mount 192.168.0.200:"/media/pi/mydrive" /mnt/nfs-sharefatto il lavoro (dopo aver smontato). Mille grazie a @DaleAnderson.
Thomas Praxl,

Questo è probabilmente il problema. Immagino di essere abituato ai tempi antichi in cui il server NFS funzionava come root ed esportava alla cieca ciò che gli veniva detto. Lo proverò.
Jim Stewart,

0

Va notato che una pagina collegata che mi conduce qui ha avuto la mia risposta corretta, ovvero che NON è possibile utilizzare il carattere jolly * nell'indirizzo IP nell'esportazione. È * (tutti gli IP) o utilizzato come carattere jolly nei nomi di dominio IE: * .domain.com.

Ad esempio: questo è corretto

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

Questo non funzionerà (o almeno non è corretto), ma ha funzionato per me per anni fino a quando ho provato a montare l'esportazione da una VM Fedora.

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


Penso che il motivo per cui abbia fallito sia probabilmente NFSv4 perché so che Fedora sta perdendo nuova roba e le mie vecchie macchine virtuali hanno funzionato bene ma probabilmente hanno usato una versione NFS precedente. Solo una supposizione.
FreeSoftwareServers
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.