NFSフォルダーのアクセス許可を適切に設定する方法 取り付け終了時の許可が拒否されました。


46

開発サーバーのNFSフォルダーに接続しようとしています。devサーバー上のフォルダーの所有者はdarrenおよびグループdarrenです。

ディスクユーティリティを使用してMacにエクスポートしてマウントすると、マウントされますが、フォルダを開こうとすると、権限がありませんというメッセージが表示されます。rw、sync、およびno_subtree_checkを設定しました。Macのユーザーは、たくさんのグループを持っている人です。

フォルダーにアクセスするには、同じグループとユーザーを設定する必要がありますか?


2
あなたの質問をありがとう、このスレッドは私のために問題を解決しました!しかし、最も賛成票で答えを受け入れてください。
マミウ

回答:


61

NFSはRPC認証の上に構築されています。NFSバージョン3では、最も一般的な認証メカニズムはAUTH_UNIXです。クライアントシステムのユーザーIDとグループIDは各RPC呼び出しで送信され、これらのIDがアクセスされるファイルに対して持っているアクセス許可はサーバーでチェックされます。これが機能するには、サーバーとクライアントでUIDとGIDが同じである必要があります。ただし、all_squash、anonuid、およびanongidエクスポートオプションを組み合わせることにより、すべてのアクセスを強制的に単一のユーザーおよびグループとして発生させることができます。all_squashはすべてのUIDとGIDを匿名ユーザーにマップし、anonuidanongid は匿名ユーザーのUIDとGIDを設定します。たとえば、開発サーバーのUIDとGIDが両方とも1001である場合、次のような行でホームディレクトリをエクスポートできます。

/home/darren 192.168.1.1/24(rw,all_squash,anonuid=1001,anongid=1001)

NFSバージョン4にはあまり慣れていませんが、クライアントにrpc.idmapdをセットアップして、サーバーに送信するuidとgidを変更できると思います。


7
Apple OS X Yosemite nfsの問題を解決しようとして、この答えに出くわしました。この回答は、受け入れられた回答よりも関連性が高く、正確です。システム間でUID / GIDを一致させることはお勧めできませんし、実行することもできません。システムA上のrootユーザーは、おそらくシステムBのrootユーザーではありません
アラン・

28

NFSをマウントするとき、マウントするアクセス許可は、サーバー上にあるものと一致する必要があります。たとえば、ユーザーに読み取り専用アクセスのみがある場合、読み取り/書き込みでマウントすると、実際にマウントをロードしようとしたときに投稿で言及したのと同じエラーが表示されます。残念ながら、これは実際にマウントしたときではなく、フォルダにアクセスしたときにのみ表示されます。

また、ユーザーNFSがサーバー上で実行されており、クライアント上のユーザーが同じUIDとGIDを使用していることを確認する必要があります。id darrenサーバーとクライアントの両方で実行することにより、これらの値を確認できます。UIDとGIDの値が一致しない場合は、編集/etc/passwdして一致させることができますが、値を任意に変更する前に、何をしているのかを理解してください!

いくつかの良いソース:

これがお役に立てば幸いです!


ええ、今すぐサーバーをやり直す必要があるUIDを変更しようとしてはいけません。UIDとGIDをどのように模倣しますか?これは本当に複雑ですか?
ダレン

残念ながら、職場でこれを使用した私の経験では、NFSは非常に脆弱であり、はい、これは複雑になる可能性があります。通常、この問題に遭遇しないように、各サーバー/クライアントに特定のUID / GIDを持つ専用のNFSユーザーが必要です。開発環境に選択肢がある場合(つまり、NFSを使用する必要がない場合)、SSHFSなどの使用を検討すると、開発者の頭痛の種がなくなりますが、実稼働サーバーと同じ機能を複製しませんNFS。
アンドリューM.

Sambaは別のソリューションだと思いますか?私は問題なくWindowsでそれを使用しており、アプリケーションの開発にMacを使用している場合でも、これが私が行かなければならない方法だと考えています。
ダレン

あなたがそれを設定したいなら、それは確かに別の可能性です。
アンドリューM.

2
NFSは壊れやすいと言うのをためらうでしょう。これは、長い間確立されているファイルサービスプロトコルです。NFSには、クライアント間の同期UID / GIDとクライアントとサーバー間の同期時間の2つの要件のみがあります。従来、NISはユーザー情報を同期するために使用されていましたが、過去10年間の新しい展開ではLDAPがより安全な選択肢です。
ジェフストランク

2

UIDとGIDは両方のサーバーで一致していますか?これは、ログインとグループ名ではなく、アクセスを制御するために使用しているものです。


-2

私にとっては、_netdevクライアントにマウントオプションを提供することで問題が修正されました。

すなわち、これを追加し/etc/fstabます:

nfs-server:/   /mnt   nfs4    _netdev,auto  0  0
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.