mount.nfs: akses ditolak oleh server saat memasang pada mesin Ubuntu?

65

Saya memiliki tiga mesin dalam produksi -

machineA    10.66.136.129
machineB    10.66.138.181
machineC    10.66.138.183

dan semua mesin itu sudah menginstal Ubuntu 12.04 di dalamnya dan saya punya akses root ke ketiga mesin itu.

Sekarang saya harus melakukan hal-hal di bawah ini di mesin saya di atas -

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

Saya sudah membuat /opt/exhibitor/confdirektori di ketiga mesin seperti yang disebutkan di atas.

Sekarang saya mencoba membuat Mount Point. Jadi saya mengikuti proses di bawah ini -

Instal file dukungan NFS dan server kernel NFS di ketiga mesin di atas

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

Buat direktori bersama di ketiga mesin di atas

$ mkdir /opt/exhibitor/conf/

Mengedit /etc/exportsdan menambahkan entri seperti ini di ketiga mesin di atas -

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

Saya telah mencoba memasang pada machineA seperti di bawah ini dari machineB dan machineC dan itu memberi saya kesalahan ini-

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

Apakah /etc/exportsfile saya terlihat bagus? Saya cukup yakin, saya telah mengacaukan exportsfile saya . Karena saya memiliki konten yang sama di ketiga mesin dalam file ekspor.

Ada yang tahu apa yang salah saya lakukan di sini? Dan apa /exportsfile yang benar di sini?

gudang senjata
sumber
1
FYI mengecek izin pada host / klien. Jika host NFS memiliki izin 0750atau 0700klien mencoba me-mount sangat mungkin gagal dengan pesan kesalahan yang sama ini . Saya mengubah host dari 0750menjadi 0755dan kemudian kesalahan hilang dan semuanya baik-baik saja.
Trevor Boyd Smith

Jawaban:

72

exportfs

Ketika Anda membuat /etc/exportsfile di server Anda harus memastikan bahwa Anda mengekspornya. Biasanya Anda ingin menjalankan perintah ini:

$ exportfs -a

Ini akan mengekspor semua entri dalam file ekspor.

showmount

Hal lain yang sering saya lakukan adalah dari komputer lain saya akan memeriksa mesin apa pun yang mengekspor saham NFS ke jaringan menggunakan showmountperintah.

$ showmount -e <NFS server name>

Contoh

Katakan misalnya saya masuk ke 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

Untuk memasang ini setelah boot Anda akan menambahkan baris ini ke mesin klien Anda yang ingin mengkonsumsi mount NFS.

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

penghitungan otomatis

Jika Anda akan me-reboot server ini maka saya sangat menyarankan Anda melihat ke pengaturan automounting ( autofs) daripada menambahkan entri ini ke /etc/fstab. Ini sedikit lebih banyak pekerjaan tetapi sepadan dengan usaha

Melakukan hal itu akan memungkinkan Anda untuk me-reboot server lebih independen satu sama lain dan juga hanya akan membuat NFS mount ketika itu benar-benar diperlukan dan / atau sedang digunakan. Saat tidak digunakan, ia akan dilepas.

Referensi

slm
sumber
Terima kasih atas sarannya. Saya hanya melakukan itu dan sekarang berfungsi dengan baik. Alih-alih berlari exportfs -a, saya malah berlari exportfs -rv. Apakah ada perbedaan di antara keduanya? Dan dalam kasus saya, showmount -e 10.66.136.129saya akan melakukan dari machineB dan machineC. Baik?
arsenal
1
@ TechGeeky - tidak juga. exportfs -rvhanya melakukan ekspor ulang + verbose. The -aakan mengekspor segalanya. Seperti untuk showmount -eya, Anda bisa menjalankannya dari mesin-mesin itu atau yang melayani saham.
slm
ok .. Makasih, makese masuk akal sekarang .. Satu hal lagi. Saya percaya ada satu hal lagi untuk hal mount point ini, file fstab .. benar? Sekarang file fstab mesin mana, yang harus saya modifikasi? Dan konten apa yang harus saya tambahkan di sana? Ada ide?
arsenal
@ Techecheeky melihat pembaruan. Anda menambahkan entri ke klien yang ingin mengkonsumsi saham NFS.
slm
1
Di Ubuntu, Anda harus menginstal nfs-kernel-server terlebih dahulu agar exportfs tersedia. Sumber: manpages.ubuntu.com/manpages/trusty/man8/exportfs.8.html
flickerfly
40

Saya melihat kesalahan yang sama ( mount.nfs: access denied by server while mounting...) dan masalah ini diperbaiki oleh -o v3opsi sebagai berikut:

$ sudo mount -o v3 a-nfs-server:/path/to/export /path/to/mount
  • Server adalah Ubuntu 14.04 64bit LTS.
  • Klien adalah CentOS 6.5 64bit.
Fumisky Wells
sumber
2
Tidak ada yang membantu, ini solusinya, dalam kasus saya.
Urhixidur
1
Saya mencoba yang ini dan mendapatkannya mount.nfs: Connection timed out. (Klien adalah Ubuntu 14.04 LTS 64-bit. Server adalah QNAP NFS dengan QTS 4.0.2 2016/01/09.)
Steve
Yap, ketika saya memutakhirkan server saya ke Ubuntu 16, inilah masalahnya dan solusinya.
Sridhar Sarnobat
2
Hati-hati dengan ini. NFSv3 kuno dan sudah usang; itu benar-benar tidak boleh digunakan lagi (dan ini bahkan benar ketika posting ini ditulis).
Michael Hampton
7

Dalam kasus saya berfungsi menggunakan nfs4 melakukan:

$ sudo mount -t nfs4 server-name: // path / ke / mount

Dalam /etc/exportfile di server

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

fsid=0membuat /Path/to/exportdirektori root ketika Anda me-mount share.

crossmnt, karena saya mempunyai beberapa drive lain dalam sistem file yang diekspor yang ingin saya akses juga.

no_root_squash, karena saya ingin mengakses sebagai pengguna root (su) dari sisi klien. Saya cukup yakin bahwa saya satu-satunya yang dapat melakukannya di jaringan lokal saya.

Server dan klien adalah Ubuntu 14.04 64bit.

Jika Anda ingin menggunakan nfs3, jawaban dari @ fumisky-wells juga berfungsi untuk saya.

menang
sumber
Anda mendapatkan diri Anda sendiri sebagai seorang pemberi suara; Saya punya NAS, jadi modding file / etc / export bukan pilihan, tetapi menentukan path lengkap melakukan trik. sudah selesai dilakukan dengan baik.
MDMoore313
4

Saya mendapatkan pesan kesalahan yang sama dan masalah saya ternyata disebabkan oleh mesin klien yang memiliki dua antarmuka jaringan yang terhubung ke LAN yang sama. Server telah dikonfigurasi untuk mengharapkan alamat IP tertentu dan lalu lintas keluar pada antarmuka kedua yang memiliki alamat IP dhcp. Jadi saya hanya mengkonfigurasi antarmuka kedua untuk memiliki alamat IP statis dan juga menambahkan alamat IP statis kedua ke konfigurasi server.

Majjinator
sumber
Saya berharap ini lebih mengarah ke atas, itulah yang terjadi dalam kasus saya
Brian Leishman
3

/etc/exportsperlu diedit pada mesin server NFS , bukan klien, seperti yang Anda nyatakan Anda lakukan, seperti yang diperiksa oleh server NFS ketika klien meminta akses ke share.

Jika Anda memasukkan yang berikut ini di /etc/exportsserver NFS, itu akan berfungsi:

/opt/exhibitor/conf 10.66.136.129(rw)
/opt/exhibitor/conf 10.66.138.181(rw)
/opt/exhibitor/conf 10.66.138.183(rw)
Chris Down
sumber
Saya sudah memiliki ini di file ekspor saya di machineA. Dan kemudian saya memasangnya dari machineB dan machineC dan itu tidak berfungsi entah bagaimana .. Apakah mungkin saya telah menambahkan informasi yang sama di ketiga mesin dalam file ekspor, apakah itu akan menjadi masalah? Saya harus menambahkan hanya di machineA?
arsenal
1
@ TechGeeky Apakah Anda memuat ulang ekspor NFS setelah melakukan itu, menggunakan exportfs -a?
Chris Down
Saya hanya melakukan itu dan sekarang berfungsi dengan baik. Saya mencoba memahami semua ini dengan cara yang lebih baik, jadi pertanyaan pertama saya adalah, machineA adalah server NFS dan machineB dan machineC adalah klien .. Benar? Pertanyaan kedua adalah, jika machineA adalah server NFS saya, maka hanya di file / etc / ekspor machineA, saya akan menambahkan tiga baris di atas seperti yang Anda sebutkan dalam solusi Anda dan kami tidak akan menyentuh file ekspor machineB dan machineC? Benar?
arsenal
@ TechGeeky Selama Anda memasang share di mesin A, maka itu benar dalam kedua kasus.
Chris Down
Terima kasih. Sekarang saya mengerti ini jauh lebih baik. Mengapa saya mengajukan pertanyaan ini karena saya juga memiliki hal serupa di lingkungan pementasan. Dan apa yang saya lakukan di ketiga mesin dalam lingkungan pementasan, saya menambahkan tiga baris yang sama di semua file / etc / ekspor saya dari tiga mesin alih-alih menambahkannya hanya di machineA tetapi tetap berfungsi dengan baik. Dan sekarang saya telah memahami keseluruhan konsep dengan lebih jelas. Terima kasih untuk bantuannya.
arsenal
2

Jika nfs-client mencoba untuk me-mount share yang diekspor di dalam container linux maka container harus dijalankan dalam mode privilege.

Dalam hal buruh pelabuhan;

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

efesaid
sumber
2

Bagi saya masalahnya adalah bahwa saya menggunakan alamat ip server /etc/exports/bukan klien .

Masalahnya, Anda harus meletakkan semua ips yang Anda berikan akses di server /etc/exports/

Vanuan
sumber
1

Setelah berjuang dengan pesan kesalahan yang sama ini selama berjam-jam, masalah saya ternyata tidak lebih rumit dari izin file Linux kuno yang bagus pada host NFS.

Folder yang saya coba bagi ( /home/foo/app/share) memiliki izin yang benar, tetapi karena direktori home pengguna ( /home/foo) memiliki 0750mode di atasnya, NFS tidak dapat melintasi ke dalamnya untuk mengakses direktori bersama.

Segera setelah saya mengatur direktori home pengguna ke mode 0751, layanan NFS dapat melintasinya dan saya dapat me-mount share dari mesin klien saya.

Dale Anderson
sumber
0

Bagi saya masalahnya adalah, bahwa router saya mengubah alamat IP yang digunakan klien, sehingga entri /etc/exportspada mesin server hanya memungkinkan akses untuk alamat IP yang tidak digunakan lagi.

Alex
sumber
0

Hal yang sama dapat terjadi jika Anda mencoba untuk me-mount berbagi NFS pada contoh Virtual Box dengan adapter jaringan yang dikonfigurasi sebagai NAT.

Memilih Bridged Adapterdalam pengaturan jaringan mesin virtual memperbaiki masalah ini.

mkaptur
sumber
0

Saya tahu ini adalah utas lama, tetapi masalah saya ada hubungannya dengan LXC dan AppArmor .

Membunuh AppArmor , atau menambahkan profil pengecualian, memperbaikinya.

Josh
sumber
lihat juga unix.stackexchange.com/q/396678/231113 jika Anda menggunakan proxmox
myrdd
0

Kesalahan ini juga dapat disebabkan oleh mencoba me-mount jalur terenkripsi. (Misalnya di direktori home Anda, jika Anda memilih untuk mengenkripsi itu)

pengguna3737396
sumber
0

Satu-satunya solusi yang bekerja untuk saya adalah mengekspor filesystem yang dimulai dengan /srv. Sepertinya ini adalah batasan (atau opsi default, setidaknya) dari NFSv4.

Karena saya mencoba mengekspor drive USB yang akan di-automount /media, saya memerlukan cara untuk membuatnya 'terpasang' /srv. Untuk mencapai itu:

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

Dan di /etc/exports:

/srv/videos 192.168.0.200(ro)

Ketika saya mengekspor /media/jim/wdportable/videossecara langsung, upaya untuk memasang klien selalu menghasilkan mount.nfs: access denied by server.

The -o v3solusi bekerja, tapi aku tidak ingin memaksa v3.

Jim Stewart
sumber
2
Saya hampir dapat menjamin ini akan terjadi karena izin pada /media/jimfolder. Jika direktori Anda mencoba untuk berbagi adalah (atau dalam) dir dengan hanya 700atau 750modus, NFS tidak akan dapat melintasi ke dalamnya. Jika Anda berubah /media/jimmenjadi 751, itu mungkin akan berhasil.
Dale Anderson
@AleAnderson benar. Setelah sukses sudo mount -o v3 192.168.0.200:"/media/pi/mydrive" /mnt/nfs-share(raspbian pada Raspi 3 B +), saya juga mencoba sudo chmod 751 /media/pi. Setelah itu, saya tidak perlu -o v3lagi: sudo mount 192.168.0.200:"/media/pi/mydrive" /mnt/nfs-sharemelakukan pekerjaan (setelah unmount). Banyak terima kasih kepada @DaleAnderson.
Thomas Praxl
Ini mungkin masalahnya. Saya kira saya sudah terbiasa dengan zaman kuno ketika server NFS hanya berjalan sebagai root dan secara membuta mengekspor apa yang diperintahkan. Saya akan menguji ini.
Jim Stewart
0

Perlu dicatat bahwa halaman tertaut yang membawa saya ke sini memiliki jawaban yang benar yaitu Anda TIDAK dapat menggunakan * wildcard di alamat IP dalam ekspor. Ini bisa * (semua IP) atau digunakan sebagai wildcard dalam nama domain IE: * .domain.com.

Misalnya: ini benar

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

Ini tidak akan berhasil (atau setidaknya salah), tetapi bekerja untuk saya selama bertahun-tahun sampai saya mencoba memasang ekspor dari VM Fedora.

/Path/to/export 192.168.1.*(flags)
FreeSoftwareServers
sumber
Saya pikir alasan kegagalan itu mungkin NFSv4 karena saya tahu Fedora berdarah hal-hal baru dan VM lama saya bekerja dengan baik tetapi mungkin menggunakan versi NFS yang lebih lama. Tebakan saja.
FreeSoftwareServers