web-dev-qa-db-ja.com

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

私は3台の機械を製造しています-

machineA    10.66.136.129
machineB    10.66.138.181
machineC    10.66.138.183

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

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

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

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

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

上記の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ファイルをめちゃくちゃにしました。エクスポートファイルの3つのマシンすべてに同じコンテンツがあるので。

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

70
arsenal

exportfs

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

$ exportfs -a

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

ショーマウント

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

$ showmount -e <NFS server name>

たとえば、私が悪質にログインしているとしましょう。

$ 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

自動マウント

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

そうすることで、サーバーを互いに独立してリブートできるようになり、NFSマウントが実際に必要な場合や使用された場合にのみ作成されます。アイドル状態になると、アンマウントされます。

参考文献

75
slm

同じエラー(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ビットです。
41
Fumisky Wells

私の場合、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の答えも私にとってはうまくいきます。

7
victe

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

4
majjinator

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

以下を/etc/exports NFSサーバー上で動作するはずです。

/opt/exhibitor/conf 10.66.136.129(rw)
/opt/exhibitor/conf 10.66.138.181(rw)
/opt/exhibitor/conf 10.66.138.183(rw)
3
Chris Down

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

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

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

2
Dale Anderson

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

問題は、アクセスを許可するすべてのIPをサーバーの/etc/exports/に置くことです。

2
Vanuan

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

ドッカーの場合;

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

2
efesaid

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

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

0
mkaptur

私にとってうまくいった唯一の解決策は、/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を強制したくありませんでした。

0
Jim Stewart

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

例:これは正しい

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

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

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

明らかに、このエラーは多くの原因によって引き起こされる可能性があります。私の場合、解決策はサーバーの/etc/exportsinsecureオプションを追加することでした:

/path/to/be/exported authorized_client(rw,root_squash,sync,no_subtree_check,insecure)

これは、一部のNFSクライアントが、高いTCPポート(0-1023の範囲を超えるポート番号))からマウント要求を発信しないという確立されたルールを尊重しないためです。

このルールの理由は、低TCPポートはUNIXシステムの特権ユーザー(つまりroot)のみが使用できることであり、システムにNFS共有をインポートすることはそのような例です。

0

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

0
user3737396

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

0
Alex

私はこれが古いスレッドであることを知っていますが、私の問題は[〜#〜] lxc [〜#〜]およびAppArmorに関係していました。

強制終了AppArmor、または例外プロファイルを追加して修正しました。

0
Josh