私は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
ファイルは何でしょうか?
サーバーで/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
ブート時にこれらをマウントするには、NFSマウントを消費するクライアントマシンにこの行を追加します。
server:/shared/dir /opt/mounted/dir nfs rsize=8192,wsize=8192,timeo=14,intr
これらのサーバーを再起動する場合は、これらのエントリを/etc/fstab
に追加する代わりに、自動マウント(autofs
)の設定を検討することを強くお勧めします。もう少し手間がかかりますが、努力する価値は十分にあります。
そうすることで、サーバーを互いに独立してリブートできるようになり、NFSマウントが実際に必要な場合や使用された場合にのみ作成されます。アイドル状態になると、アンマウントされます。
同じエラー(mount.nfs: access denied by server while mounting...
)が発生し、-o v3
オプションによって次のように問題が修正されました。
$ Sudo mount -o v3 a-nfs-server:/path/to/export /path/to/mount
私の場合、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の答えも私にとってはうまくいきます。
同じエラーメッセージが表示されましたが、クライアントマシンに同じLANに接続された2つのネットワークインターフェイスが原因であることがわかりました。サーバーは特定のIPアドレスを予期するように構成されており、トラフィックはdhcp IPアドレスを持つ2番目のインターフェースで送信されていました。したがって、静的IPアドレスを持つように2番目のインターフェースを構成し、サーバー構成に2番目の静的IPアドレスを追加しました。
/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)
何時間もこの同じエラーメッセージと戦った後、私の問題は、NFSホスト上の古き良きLinuxファイルのアクセス許可ほど複雑ではないことがわかりました。
共有しようとしたフォルダ(/home/foo/app/share
)には適切な権限がありましたが、ユーザーのホームディレクトリ(/home/foo
)に0750
モードが設定されていたため、NFSがトラバースできませんでした共有ディレクトリにアクセスします。
ユーザーのホームディレクトリをモード0751
に設定するとすぐに、NFSサービスがそれに移動し、クライアントマシンから共有をマウントできるようになりました。
私にとっての問題は、clientの代わりに/etc/exports/
でサーバーのIPアドレスを使用していたことでした。
問題は、アクセスを許可するすべてのIPをサーバーの/etc/exports/
に置くことです。
Nfs-clientがエクスポートされた共有をLinuxコンテナー内にマウントしようとしている場合、コンテナーは特権モードで実行する必要があります。
ドッカーの場合;
$ docker run -it --rm --privileged ubuntu:14.04
ネットワークアダプターがNAT
として構成されているVirtual BoxインスタンスにNFS共有をマウントしようとすると、同じことが起こります。
仮想マシンのネットワーク設定でBridged Adapter
を選択すると、この問題が修正されます。
私にとってうまくいった唯一の解決策は、/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を強制したくありませんでした。
ここに私を導くリンクされたページが私の正しい答えを持っていたことに注意すべきです、それはあなたがエクスポートでIPアドレスに*ワイルドカードを使うことができないということでした。 *(すべてのIP)またはドメイン名IEでワイルドカードとして使用:* .domain.com。
例:これは正しい
/Path/to/export 192.168.1.0/24(flags)
これは機能しません(または少なくとも正しくありません)が、Fedora VMからエクスポートをマウントするまで、何年もの間機能していました。
/Path/to/export 192.168.1.*(flags)
明らかに、このエラーは多くの原因によって引き起こされる可能性があります。私の場合、解決策はサーバーの/etc/exports
にinsecure
オプションを追加することでした:
/path/to/be/exported authorized_client(rw,root_squash,sync,no_subtree_check,insecure)
これは、一部のNFSクライアントが、高いTCPポート(0-1023の範囲を超えるポート番号))からマウント要求を発信しないという確立されたルールを尊重しないためです。
このルールの理由は、低TCPポートはUNIXシステムの特権ユーザー(つまりroot)のみが使用できることであり、システムにNFS共有をインポートすることはそのような例です。
このエラーは、暗号化されたパスをマウントしようとした場合にも発生する可能性があります。 (たとえば、暗号化することを選択した場合、ホームディレクトリ内)
私にとっての問題は、ルーターがクライアントの使用済みIPアドレスを変更したため、サーバーマシンの/etc/exports
のエントリが、使用されなくなったIPアドレスへのアクセスのみを許可することでした。
私はこれが古いスレッドであることを知っていますが、私の問題は[〜#〜] lxc [〜#〜]およびAppArmorに関係していました。
強制終了AppArmor、または例外プロファイルを追加して修正しました。