web-dev-qa-db-ja.com

NFSユーザーマッピング

CentOS 6.4がインストールされた2台のマシンを同じプライベートネットワークに接続しています。

そのうちの1つはNFSサーバーであり、もう1つはクライアントです。

サーバーマシン(サーバー)で、/net/directoryファイルに次の行を追加して、ディレクトリ/etc/exportsをエクスポートしました

/net/directory *(rw,sync,no_root_squash)

サービスが開始されたら、クライアントに行き、/etc/fstabにマウントポイントを追加しました

server:/net/directory   /client/directory       nfs defaults    0 0

そしてマウント

# mount /client/directory

問題は、クライアントからマウントポイント内に新しいファイル/ディレクトリを作成すると、サーバー側の不明なユーザーとして作成されたときに、そのファイルがnobody:nobodyとしてマップされることです。

例を示します(説明のため)

クライアント側にのみ、testuserという同じ名前のユーザーとグループがあります

  • ユーザー名:testuser
  • UID:1001
  • GID:1001

クライアント側では、testuserとしてファイルを作成します

[testuser@client ~]# touch /client/directory/test

次に、ディレクトリの内容を一覧表示します

[testuser@client ~]# ls -l /client/directory
total 0
-rw-r--r--. 1 nobody nobody 0 Jul  2 16:46 test

しかし、サーバー側ではすべてが期待どおりです。

[root@earth ~]# ls -l /net/directory
total 0
-rw-r--r--. 1 1001 1001 0 Jul  2 16:46 test

クライアント側でも同じ結果が欲しい:

-ファイルはUID:GIDが1001:1001である必要があります

何が悪いのですか?これはサーバーまたはクライアントの問題ですか?

私はいくつかのNFSマニュアルを探しましたが、何も助けになりませんでした。

(サーバー側でユーザーを作成せずに)これを行う方法を誰かが知っていますか?

ありがとうございました。

6
Jorge

/etc/idmapd.confのドメインがクライアントとサーバーで同じであることを確認します。 rpc.idmapdがクライアントとサーバーで実行されていることを確認します。そしてもちろん、ユーザーはクライアントとサーバーに存在する必要があります。 NFSv4はネットワーク上のユーザープリンシパルを使用し、適切なマッピングを提供するのはクライアントとサーバーの責任です。 AUTH_SYSを使用すると、作成時にサーバーに伝播されるローカルuid/gidが使用されますが、「ls」を使用するにはマッピングが必要です。

5
kofemann