あるマシンでrootが別のマシンからnfsマウントされたコンテンツを変更できないのはなぜですか?


14

NFSサーバーでは、次のエクスポートが定義されています。

#NFS exports Database
/shared -alldirs -network=192.168.1 -mask=255.255.255.0

NFSクライアントの場合:

192.168.1.7:/shared /shared nfs rw 0 0

明らかに、サーバーのルートとして、私は何でもできます。ただし、クライアントでは、通常のユーザー「gabe」はnfsマウントを変更できますが(アクセス権がある場合)、rootは変更できません。

私の通常のユーザーとして:

gabe@client$ cd /shared
gabe@client$ ls -l
total 8
drwxrwxrwx  4 gabe  wheel   512 Mar 20 19:20 tmp
gabe@client$ cd tmp
gabe@client$ touch test.txt
gabe@client$ rm test.txt

ルートとして:

# cd /shared/tmp
# touch test.txt
touch: test.txt: Permission denied

繰り返しになりますが、これはすべてNFS クライアント側のものであり、おそらく-maprootオプションと関係があると思われます。NFSをセットアップするのはこれが初めてで、この特殊性に気付いたばかりです。これを理解できるかどうかを確認するために、本を読んでいきますが、もし誰かが洞察を持っているなら、感謝します。

回答:


18

NFSは、ユーザーIDとグループIDはネットワーク上のすべてのマシンで同じになるという考えで設計されました。通常のユーザーの場合、それは大丈夫です。ただし、ルートのUIDは常に0であり、1つのボックスにルートがあるからといって、ネットワーク上のすべてのマシンにルートアクセスできる必要があるという意味ではありません。

したがって、NFSはルートを特別に扱います。デフォルトでは、ルートはnobodyユーザーにマップされますが、通常は書き込みアクセス権はありません。この-maprootオプションを使用すると、ルートの処理方法を変更できます。BSDは-maproot=rootLinuxのno_root_squashオプションに対応しています。


はい、確かに。これで問題が解決しました。私が読んでいたmanページは、maprootが正確に何をしたかという点で、少し不可解でした(または私の理解はそうでした)。ありがとう!
ガベ。

ここに別の初心者。NFSドライブが-maprootNFSサーバーにアクセスせずにオプションを使用するように構成されているかどうかを知る方法を知っているのではないかと思っていました。
ジョン

@John、それはあなたがコメントを追加する代わりに新しい質問をする必要があるほど十分に異なっています。
cjm

5

これは、従来のNFS実装の一般的な動作です。NFSユーザーマッピングはコンテキストに関係なく実行されるため、クライアントルートによるすべてのアクセスは特定のユーザーにマッピングする必要があります(通常nobodyはデフォルト)。したがって、クライアントのルートはファイルに直接アクセスできませんが、ファイルsu gabeにはアクセスできます。

(NFSの「最新」バージョン、つまりNFSv4と場合によってはNFSv3では、両側でサポートされていれば健全な動作が可能になりますが、詳細はわかりません。)

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