mount.nfs: Ubuntu makinelerine monte edilirken sunucu tarafından erişim engellendi mi?


64

Üretimde üç makinem var -

machineA    10.66.136.129
machineB    10.66.138.181
machineC    10.66.138.183

ve tüm bu makinelerde yüklü Ubuntu 12.04 var ve bu üç makineye de kök erişimi var.

Şimdi yukarıdaki makinelerimdeki işlerin altında yapmam gerekiyor -

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

/opt/exhibitor/confYukarıda da belirtildiği gibi bu üç makinenin hepsinde bir dizin oluşturdum .

Şimdi bir Mount Point oluşturmaya çalışıyorum. Bu yüzden aşağıdaki süreci takip ettim -

NFS destek dosyalarını ve NFS çekirdek sunucusunu yukarıdaki üç makineye yükleyin

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

Yukarıdaki üç makinede paylaşılan dizini oluşturun

$ mkdir /opt/exhibitor/conf/

Düzenlenen /etc/exportsve her şeyden önce üç makinelerinde böyle girdi eklendi -

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

Makine A'ya aşağıdaki gibi makineB'den ve makineC'den monte etmeye çalıştım ve bana bu hatayı verdi-

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

Dosyam /etc/exportsiyi görünüyor mu? Oldukça eminim, dosyamı karıştırdım exports. İhracatta her üç makinede de aynı içerik bulunduğundan dosya.

Ne yanlış yapıyorum fikrin var mı? Ve /exportsburada doğru dosya ne olacak ?


1
FYI, ana bilgisayar / istemcideki izinleri iki kez kontrol eder. NFS ana bilgisayarının izinleri varsa 0750veya 0700bağlamaya çalışan istemcinin aynı hata iletisiyle başarısız olması çok muhtemeldir . Ben den ev sahibi değişti 0750etmek 0755ve daha sonra hata uzağa gitti ve tüm iyi oldu.
Trevor Boyd Smith,

Yanıtlar:


70

exportfs

/etc/exportsSunucuda bir dosya oluşturduğunuzda, dosyayı verdiğinizden emin olmanız gerekir. Genellikle bu komutu çalıştırmak istersiniz:

$ exportfs -a

Bu, dışa aktarma dosyasındaki tüm girdileri dışa aktarır.

showmount

Sık sık yapacağım diğer şey, showmountkomuttan yararlanarak ağa NFS paylaşımları veren herhangi bir makineyi kontrol edeceğim diğer makinelerden .

$ showmount -e <NFS server name>

Örnek

Mesela ben scully giriş yaptım.

$ 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

Bunları botlara monte etmek için bu satırı NFS montajlarını kullanmak isteyen istemci makinelerinize ekleyeceksiniz.

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

automounting

Bu sunucuları yeniden başlatacaksanız autofs, bu girişleri eklemek yerine automounting ( ) ayarını incelemenizi öneririz /etc/fstab. Biraz daha fazla iş ama çabaya değer.

Bunu yapmak, sunucuları birbirinden daha bağımsız olarak yeniden başlatmanıza izin verecek ve aynı zamanda yalnızca gerçekten ihtiyaç duyulduğunda ve / veya kullanıldığında NFS montajını yaratacaktır. Boşta gittiğinde sökülemez.

Referanslar


Öneriniz için teşekkürler. Sadece bunu yaptım ve şimdi iyi çalışıyor. Koşmak yerine exportfs -akoştum exportfs -rv. Bunlar arasında bir fark var mı? Ve benim durumumda, showmount -e 10.66.136.129machineB ve machineC'den yapacağım. sağ?
cephanelik

1
@TechGeeky - gerçekten değil. exportfs -rvSadece bir reexport mu + ayrıntılı. Her -aşeyi ihraç edecek. Gelince showmount -eevet bu makinelere veya hisselerini hizmet veren birinden çalıştırabilirsiniz.
slm

Tamam .. Teşekkürler, şimdi makese hissediyorum .. Son bir şey. Fstab dosyasındaki bu bağlama noktası olayında bir şey daha olduğuna inanıyorum. Şimdi hangi makine fstab dosyasını değiştirmem gerekiyor? Ve oraya hangi içeriği eklemeliyim? Herhangi bir fikir?
cephanelik

@TechGeeky güncellemeleri görün. NFS paylaşımlarını kullanmak isteyen istemcilere girişler eklersiniz.
slm

1
Ubuntu'da, öncelikle exportfs'ın kullanılabilmesi için nfs-kernel-server kurmalısınız. Kaynak: manpages.ubuntu.com/manpages/trusty/man8/exportfs.8.html
flickerfly

40

Aynı hatayı ( mount.nfs: access denied by server while mounting...) gördüm ve sorun -o v3aşağıdaki gibi bir seçenekle düzeltildi :

$ sudo mount -o v3 a-nfs-server:/path/to/export /path/to/mount
  • Sunucu Ubuntu 14.04 64bit LTS'dir.
  • Müşteri CentOS 6.5 64bit'tir.

2
Geri kalan hiçbiri yardım etmedi, bu benim çözümümdü.
Urhixidur

1
Bunu denedim ve anladım mount.nfs: Connection timed out. (Müşteri Ubuntu 14.04 LTS 64-bit'tir. Sunucu, QTS 4.0.2 2016/01/09 ile QNAP NFS'dir.)
Steve

Evet, sunucumu Ubuntu 16'ya yükselttiğimde sorun ve çözüm buydu.
Sridhar Sarnobat

2
Buna dikkat et. NFSv3 eski ve eskidir; artık kullanılmaması gerekiyor (ve bu yazı yazıldığı zaman bile doğruydu).
Michael Hampton,

7

Benim durumumda nfs4 kullanarak çalışıyor:

$ sudo mount -t nfs4 sunucusu adı: / / path / to / mount

Gelen /etc/exportsunucudaki dosya

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

fsid=0yapar /Path/to/exportsen payını taktığınızdaki kök dizini.

crossmnt, çünkü dışa aktarılan dosya sisteminde, erişmek istediğim başka sürücüler de var.

no_root_squash, çünkü istemci tarafından root kullanıcısı (su) olarak erişmek istiyorum. Yerel ağımda bunu yapabilen tek kişi olduğuma eminim.

Sunucu ve istemciler Ubuntu 14.04 64bit'tir.

Nfs3 kullanmak istiyorsanız, @ fumisky-wells 'un cevabı benim için de geçerli.


Kendine bir galibiyet kazandınız efendim; Bir NAS'ım var, bu yüzden / etc / export dosyasını modlamak bir seçenek değil, ama tam yolu belirterek hile yaptı. aferin.
MDMoore313

4

Aynı hata mesajını alıyordum ve sorunum aynı LAN'a bağlı iki ağ arayüzüne sahip istemci makineden kaynaklanıyordu. Sunucu, belirli bir IP adresi bekleyecek şekilde yapılandırılmıştı ve dhcp IP adresine sahip olan ikinci arayüzde trafik çıkıyordu. Bu yüzden ikinci arayüzü sadece statik bir IP adresine sahip olacak şekilde yapılandırdım ve ikinci statik IP adresini sunucu konfigürasyonuna ekledim.


Adamım, keşke bu daha zirveye doğru olsaydı, benim durumumda olan tam olarak buydu
Brian Leishman

3

/etc/exportsBir istemcinin bir paylaşıma erişim isteğinde bulunduğunda, NFS sunucusu tarafından denetlendiğinden, istemcileri değil, sizin belirttiğiniz gibi istemcileri değil , NFS sunucu makinesinde düzenlenmesi gerekir .

Aşağıdakileri /etc/exportsNFS sunucusuna koyduysanız, çalışması gerekir:

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

MachineA'daki ihracat dosyamda zaten bu var. Ve sonra onu makineB ve makineC'ye monte ediyorum ve bir şekilde çalışmıyor .. İhracat dosyasındaki her üç makineye aynı bilgileri ekledim mi, bu bir sorun olur mu? Sadece machineA içine eklemem mi gerekiyor?
cephanelik

1
@TechGeeky Bunu yaptıktan sonra NFS ihracatını yeniden yüklediniz mi exportfs -a?
Chris Down

Sadece bunu yaptım ve şimdi iyi çalışıyor. Her şeyi daha iyi anlamaya çalışıyorum, bu yüzden ilk sorum şu: machineA, NFS sunucusu ve machineB ve machineC istemcileridir. Doğru mu? İkinci soru, eğer makine A benim NFS sunucum ise, o zaman sadece makine A / etc / export dosyasında, çözümünüzde bahsettiğiniz şekilde yukarıdaki üç satırı ekleyeceğim ve machineB ve machineC ihracat dosyalarına dokunmayacağız? Doğru?
cephanelik

@TechGeeky A makinesinde bir pay kurduğunuz sürece, her iki durumda da doğru olur.
Chris Down,

Teşekkürler. Şimdi bunu daha iyi anlıyorum. Neden bu soruyu sordum çünkü sahneleme ortamında da benzer şeylerim var. Ve bu üç makinede evreleme ortamında yaptığım şeyi, üç makinenin tüm / etc / export dosyalarımda sadece üç makineye eklemek yerine aynı üç satırı ekledim ama yine de iyi çalışıyor. Ve şimdi bütün kavramı daha net bir şekilde anladım. Yardım için teşekkürler.
cephanelik

2

Eğer nfs-client dışa aktarılan payı linux kabın içine monte etmeye çalışıyorsa, kabın ayrıcalıklı modda çalışması gerekir.

Liman işçisi durumunda;

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


2

Benim için sorun, istemcinin/etc/exports/ yerine sunucunun ip adresini kullanıyor olmamdı .

Sorun şu ki, erişim izni verdiğiniz tüm ips'leri sunucunun üzerine koymalısınız. /etc/exports/


1

Bu aynı hata mesajıyla saatlerce mücadele ettikten sonra, sorunum NFS ana bilgisayarındaki eski moda Linux dosya izinlerinden daha karmaşık bir şey değildi.

Paylaşmaya çalıştığım klasörün ( /home/foo/app/share) doğru izinleri vardı, ancak kullanıcının giriş dizininin ( /home/foo) üzerinde 0750modu olduğundan, NFS paylaşılan dizine erişmek için içine giremedi.

Kullanıcının giriş dizinini moda ayarladıktan hemen sonra 0751, NFS hizmeti onu arayabildi ve paylaşımını istemci makinemden yükleyebildim.


0

Benim için sorun, yönlendiricimin istemcinin kullanılan IP adresini değiştirmesiydi, böylece /etc/exportssunucu makinesindeki giriş yalnızca artık kullanılmayan bir IP adresine erişime izin verdi.


0

Virtual Box örneğinde bir NFS paylaşımını, ağ bağdaştırıcısı olarak yapılandırılmış şekilde bağlamaya çalışırsanız aynı şey olabilir NAT.

Seçimi Bridged Adaptersanal makine ağ ayarlarında bu sorunu giderir.



0

Bu hata, şifrelenmiş bir yolu bağlamaya çalışmakla da kaynaklanabilir. (Örneğin şifrelemeyi seçtiyseniz, ana dizininizde)


0

Benim için çalışan tek çözüm, ile başlayan dosya sistemlerini dışa aktarmaktı /srv. Bu, NFSv4'ün bir sınırlaması (veya varsayılan seçenek, en azından) gibi görünüyor.

Otomatik sayılan bir USB sürücüsünü dışa aktarmaya çalıştığım için /media, altına monte edilmek için bir yola ihtiyacım vardı /srv. Bunu başarmak için:

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

Ve içinde /etc/exports:

/srv/videos 192.168.0.200(ro)

/media/jim/wdportable/videosDoğrudan dışa aktardığımda, istemciye bağlanmaya çalışmak her zaman sonuçlandı mount.nfs: access denied by server.

-o v3Çözelti çalıştı ama v3 zorlamak istemedim.


2
Bunun /media/jimklasördeki izinler nedeniyle olacağını neredeyse garanti edebilirim . Paylaşmaya çalıştığınız dizin yalnızca (veya içindeki) bir dizinse 700veya 750modundaysa, NFS bu öğenin içine giremez. Eğer değiştirdiyseniz /media/jimiçin 751, muhtemelen çalışacak.
Dale Anderson

@DaleAnderson haklı. Başarılı olduktan sonra sudo mount -o v3 192.168.0.200:"/media/pi/mydrive" /mnt/nfs-share(Raspi 3 B + 'da raspbian) de denedim sudo chmod 751 /media/pi. Daha sonra, -o v3artık ihtiyacım yoktu: sudo mount 192.168.0.200:"/media/pi/mydrive" /mnt/nfs-shareişi yaptım (bağlantının kesilmesinden sonra). @DaleAnderson'a çok teşekkürler.
Thomas Praxl

Muhtemelen sorun budur. Sanırım NFS sunucusunun sadece root olarak çalıştığı ve söylediklerini körü körüne ihraç ettiği antik günlere alışkınım. Bunu test edeceğim.
Jim Stewart

0

Beni buraya yönlendiren linkli bir sayfanın doğru cevabım olduğuna dikkat etmeliyim ki bu ihracatta IP adresinde * joker karakter kullanamayacağınızdı. * (Tüm IP'ler) ya da IE: * .domain.com alan adlarında joker olarak kullanılır.

Örneğin: bu doğru

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

Bu işe yaramaz (ya da en azından yanlış), ancak bir Fedora VM'den ihracatı yapmayı denemeden yıllarca benim için çalıştı.

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


Bunun başarısız olmasının sebebinin muhtemelen NFSv4 olduğunu düşünüyorum, çünkü Fedora'nın yeni şeyler kanadı olduğunu ve eski VM'imin iyi çalıştığını ama muhtemelen daha eski NFS sürümlerini kullandığını biliyorum. Sadece bir tahmin.
ÜcretsizYazılımServisleri
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.