mount.nfs:Ubuntuマシンにマウント中にサーバーによって拒否されたアクセス?


64

私は生産中に3台のマシンを持っています-

machineA    10.66.136.129
machineB    10.66.138.181
machineC    10.66.138.183

そして、それらのすべてのマシンにはUbuntu 12.04がインストールされており、これら3つのマシンすべてにルートアクセスできます。

今、私は上記のマシンで以下のことをすることになっています-

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

/opt/exhibitor/conf上記のように、これら3つのマシンすべてにディレクトリをすでに作成しました。

現在、マウントポイントを作成しようとしています。だから私は以下のプロセスに従った-

上記の3つのマシンすべてにNFSサポートファイルとNFSカーネルサーバーをインストールします。

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

上記の3つのマシンすべてに共有ディレクトリを作成します

$ mkdir /opt/exhibitor/conf/

/etc/exports上記の3つのマシンすべてで、このようなエントリを編集して追加しました-

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

私はmachineBとmachineCから以下のようなmachineAにマウントしようとしましたが、このエラーが発生しました-

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

私の/etc/exportsファイルは良さそうでしたか?私はexportsファイルを台無しにしてしまったと確信しています。exportsファイルの3台のマシンすべてに同じコンテンツがあるため。

ここで何が間違っているのでしょうか?そして、/exportsここで正しいファイルは何でしょうか?


1
参考までに、ホスト/クライアントの権限を再確認してください。NFSホストにアクセス許可がある場合、0750または0700マウントしようとしているクライアントが同じエラーメッセージで失敗する可能性が非常に高いです。ホストをからに変更0750する0755と、エラーはなくなり、すべて順調に進みました。
トレバーボイドスミス

回答:


71

exportfs

/etc/exportsサーバーでファイルを作成するときは、必ずエクスポートする必要があります。通常、次のコマンドを実行します。

$ exportfs -a

これにより、エクスポートファイル内のすべてのエントリがエクスポートされます。

ショーマウント

私がよくやる他のことは、showmountコマンドを使用してNFS共有をネットワークにエクスポートしているマシンをチェックする他のマシンからです。

$ showmount -e <NFS server name>

たとえば、私は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

起動時にこれらをマウントするには、NFSマウントを使用するクライアントマシンにこの行を追加します。

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

自動マウント

これらのサーバーを再起動する場合autofsは、これらのエントリをに追加する代わりに、自動マウント()の設定を検討することを強くお勧めします/etc/fstab。それはもう少し作業ですが、努力の価値があります。

そうすることで、サーバーを互いに独立して再起動できるようになり、NFSマウントは実際に必要な場合や使用中の場合にのみ作成されます。アイドルになると、マウント解除されます。

参照資料


提案をありがとう。私はちょうどそれをやったし、今ではうまく動作します。走る代わりにexportfs -a私は走りましたexportfs -rv。それらの間に違いはありますか?私の場合、showmount -e 10.66.136.129machineBとmachineCから実行します。右?
アーセナル

1
@TechGeeky-そうでもない。exportfs -rvただ再エクスポートするのは冗長です。-aすべてをエクスポートします。とおりshowmount -eはい、あなたはそれらのマシンや株式を提供するものから、それを実行することができます。
slm

わかりました。ありがとう、今理にかなっています。このマウントポイントにはfstabファイルがもう1つあると思います。今、どのマシンのfstabファイル、私は修正することになっていますか?そして、そこに追加するコンテンツは何ですか?何か案が?
アーセナル

@TechGeekyのアップデートをご覧ください。NFS共有を使用するクライアントにエントリを追加します。
slm

1
Ubuntuでは、exportfsを使用可能にするには、まずnfs-kernel-serverをインストールする必要があります。ソース:manpages.ubuntu.com/manpages/trusty/man8/exportfs.8.html
flickerfly

40

同じエラー(mount.nfs: access denied by server while mounting...)が表示され、問題は-o v3次のようにオプションで修正されました。

$ sudo mount -o v3 a-nfs-server:/path/to/export /path/to/mount
  • サーバーはUbuntu 14.04 64ビットLTSです。
  • クライアントはCentOS 6.5 64ビットです。

2
私の場合、これは解決策でした。
-Urhixidur

1
私はこれを試してみましたmount.nfs: Connection timed out。(クライアントはUbuntu 14.04 LTS 64ビットです。サーバーはQTS 4.0.2を備えたQNAP NFSです2016/01/09。)
スティーブ

はい、サーバーをUbuntu 16にアップグレードしたとき、これが問題と解決策でした。
シュリダールSarnobat

2
これに注意してください。NFSv3は古く、古くなっています。それは本当にもう使われるべきではありません(そして、この投稿が書かれたとき、これは真実でさえありました)。
マイケルハンプトン

7

私の場合、nfs4を使用して動作します:

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

/etc/exportサーバー上のファイル内

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

fsid=0作る/Path/to/exportあなたが共有をマウントするとき、ルートディレクトリを。

crossmnt、エクスポートしたファイルシステムには他にもアクセスしたいドライブがいくつかあるためです。

no_root_squash、クライアント側からrootユーザー(su)としてアクセスしたいので。私は自分のローカルネットワークでそれを行うことができる唯一の人であると確信しています。

サーバーとクライアントはUbuntu 14.04 64ビットです。

nfs3を使用したい場合は、@ fumisky-wellsの答えも同様に機能します。


自分に賛成票を獲得しました。私はNASを持っているので、/ etc / exportファイルを改造することはオプションではありませんが、完全なパスを指定することはうまくいきました。よくやった。
MDMoore313 14

4

同じエラーメッセージが表示されていましたが、同じLANに接続された2つのネットワークインターフェイスを持つクライアントマシンが原因であることが判明しました。サーバーは特定のIPアドレスを予期するように構成されており、dhcp IPアドレスを持つ2番目のインターフェースでトラフィックが送信されていました。したがって、静的IPアドレスを持つように2番目のインターフェイスを構成し、2番目の静的IPアドレスもサーバー構成に追加しました。


私はこれがもっと上に向かって欲しいと願っています、それはまさに私の場合に起こっていたことです
ブライアン・リーシュマン

3

/etc/exportsクライアントが共有へのアクセスを要求したときにNFSサーバーによってチェックされるため、指定したとおりに、クライアントではなくNFS サーバーマシンで編集する必要があります。

/etc/exportsNFSサーバーに次のものを入れると、動作するはずです。

/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のエクスポートファイルにはすでにこれがあります。それから、machineBとmachineCからマウントしますが、どういうわけか動作しません。exportsファイルの3台のマシンすべてに同じ情報を追加した可能性はありますか?machineAにのみ追加する必要がありますか?
アーセナル

1
@TechGeekyを使用して、NFSエクスポートをリロードしましたexportfs -aか?
クリスダウン

私はちょうどそれをやったし、今ではうまく動作します。私はこのすべてをより良い方法で理解しようとしているので、最初の質問は、machineAはNFSサーバーで、machineBとmachineCはクライアントです。2番目の質問は、machineAがNFSサーバーの場合、machineAの/ etc / exportsファイルにのみ、ソリューションで言及したように上記の3行を追加し、machineBとmachineCのエクスポートファイルには触れないということです。正しい?
アーセナル

@TechGeekyマシンAに共有をマウントしている限り、それはどちらの場合でも正しいです。
クリスダウン

ありがとう。今、私はこれをはるかによく理解しています。ステージング環境にも同じようなものがあるので、なぜこの質問をしたのですか。そして、ステージング環境のこれら3台のマシンで行ったことは、machineAにのみ追加するのではなく、3台のマシンのすべての/ etc / exportsファイルに同じ3行を追加しましたが、それでも正常に動作します。そして今、私は概念全体をより明確に理解しました。助けてくれてありがとう。
アーセナル

2

nfs-clientがエクスポートされた共有をLinuxコンテナー内にマウントしようとしている場合、コンテナーは特権モードで実行する必要があります。

ドッカーの場合;

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


2

私にとって問題は/etc/exports/クライアントの代わりにサーバーのIPアドレスを使用していたことでした。

問題は、アクセスを許可するすべてのIPをサーバーの /etc/exports/


1

この同じエラーメッセージと何時間も戦った後、私の問題はNFSホスト上の古き良き時代のLinuxファイルアクセス許可ほど複雑ではないことが判明しました。

共有しようとし/home/foo/app/shareていたフォルダー()には正しいアクセス許可がありましたが、ユーザーのホームディレクトリ(/home/foo)に0750モードが設定されていたため、NFSはそのフォルダーに移動して共有ディレクトリにアクセスできませんでした。

ユーザーのホームディレクトリをmodeに設定するとすぐ0751に、NFSサービスがそこに移動でき、クライアントマシンから共有をマウントできました。


0

私にとって問題は、ルーターがクライアントの使用されたIPアドレスを変更/etc/exportsし、サーバーマシンのエントリが使用されなくなったIPアドレスへのアクセスのみを許可することでした。


0

ネットワークアダプタがとして構成されているVirtual BoxインスタンスにNFS共有をマウントしようとすると、同じことが起こりますNAT

Bridged Adapter仮想マシンのネットワーク設定で選択すると、この問題が修正されます。


0

私はこれが古いスレッドであることを知っていますが、私の問題はLXCAppArmorに関係していました。

キリングAppArmorのを、それを固定、または例外プロファイルを追加します。


proxmoxを使用している場合は、unix.stackexchange.com
q / 396678/231113

0

このエラーは、暗号化されたパスをマウントしようとした場合にも発生する可能性があります。(たとえば、ホームディレクトリで、暗号化を選択した場合)


0

私のために働いた唯一の解決策は、で始まるファイルシステムをエクスポートすること/srvでした。これは、NFSv4の制限(少なくともデフォルトオプション)のようです。

自動マウントするUSB​​ドライブをエクスポートしようとし/mediaていたので、その下に「マウント」する方法が必要でした/srv。それを達成するには:

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

そして/etc/exports

/srv/videos 192.168.0.200(ro)

/media/jim/wdportable/videos直接エクスポートした場合、クライアントにマウントしようとすると常にが発生しましたmount.nfs: access denied by server

-o v3解決策は働いていたが、私はV3を強制したくありませんでした。


2
これは、/media/jimフォルダのアクセス許可によるものであることをほぼ保証できます。共有しようとしているディレクトリが、700または750モードのみのdirである(またはその中にある)場合、NFSはそのディレクトリに移動できません。に変更/media/jimした場合751、おそらく動作します。
デールアンダーソン

@DaleAndersonは正しい。成功した後sudo mount -o v3 192.168.0.200:"/media/pi/mydrive" /mnt/nfs-share(Raspi 3 B +でのraspbian)、私も試してみましたsudo chmod 751 /media/pi。その後、私は-o v3もう必要ありませんsudo mount 192.168.0.200:"/media/pi/mydrive" /mnt/nfs-shareでした:(アンマウント後)仕事をしました。@DaleAndersonに感謝します。
トーマスプラクスル

これがおそらく問題です。NFSサーバーがrootとして実行され、指示された内容をやみくもにエクスポートした古代に慣れていると思います。これをテストします。
ジムスチュワート

0

ここに私を導くリンクされたページには、エクスポートのIPアドレスに*ワイルドカードを使用できないという正しい答えがあったことに注意してください。*(すべてのIP)またはドメイン名IEのワイルドカードとして使用されます:* .domain.com。

例:これは正しい

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

これは機能しません(少なくとも正しくありません)が、Fedora VMからエクスポートをマウントしようとするまで何年もの間機能しました。

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


失敗した理由は、おそらくNFSv4であると思います。Fedoraが新しいものを最前線に置いており、古いVMは問題なく動作しているが、おそらく古いNFSバージョンを使用しているためです。ただの推測。
FreeSoftwareServers
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.