web-dev-qa-db-ja.com

NFSv4経由でマウントされたファイルは4294967294が所有し、UIDとGIDは一致します

2つの同一のLinuxマシン(Amazon EC2で起動された同一のイメージ)があり、NFSv4を介してエクスポートされたディレクトリをマウントしようとしています。マウントされたディレクトリは、クライアントマシンでは次のようになります。

root@server:~# ls -l /websites/
drwxr-xr-x  6 4294967294 4294967294   92 2010-01-01 20:21 logs
drwxr-xr-x  2 4294967294 4294967294   20 2009-12-23 01:14 monit.d
...

UIDが一致していることを確認するために再確認しました

これがクライアントから実行するマウントコマンドです

/sbin/mount.nfs4 $MASTER_DN:/ /websites -o rw,_netdev,async

そして、これが/etc/exportsサーバーマシンのエントリ:

/websites 10.0.0.0/8(fsid=0,no_subtree_check,rw,no_root_squash)
23
jberryman

ここを読んでください http://blather.michaelwlucas.com/archives/796

NFSv4クライアントとサーバーのドメイン名が一致しない場合、すべてのユーザー名は「nobody」と表示されます。

  1. /etc/idmapd.confを編集して、サーバーとクライアントのドメインを「localdomain」に設定します

    【全般】

    ドメイン= localdomain

    [翻訳]

    メソッド= nsswitch

  2. / etc/default/nfs-commonファイルを変更します(サーバーとクライアントの両方で):set NEED_IDMAPD = yes

  3. idmapdサービスを開始する

8
vadim

NFSおよびZFSのUID/GID で説明されているように、NFSv4はUIDを使用しません。同様の問題があり、NFSv3を使用して回避できました。これには、mountコマンドに-o vers=3を追加するだけです。もちろん、NFSv4を使用する必要がある場合、この応答はあまり役に立ちません。

8
intuited

これはユーザーIDマッピングの問題です。何らかの理由で、システムは真のアカウントIDではなく「nobody」アカウントを使用しています。スカッシングオプションとidmapd.confファイルを確認します。

問題を説明するスレッドがここにあり、これは興味のある投稿 http://www.mail-archive.com/[email protected]/msg03303.html にリンクしています。

FYI、4294967294は、32ビットの符号付き整数として扱われる場合、-2です。 -1または-2は、さまざまなLinuxディストリビューションでnobody UIDおよびnogroup GIDに使用されます(passwdファイルでは、最も高い16ビットの符号なし数値65535が一般的に使用されます)。

7
David

/ etc/default/nfs-commonファイル(bothサーバーとクライアント上)を変更する必要があります:set NEED_IDMAPDからyesへ。

少なくともこれは私に役立ちました。

3
Veger

NFSオプションanonuidanongidを使用して、サーバーが匿名で作成されたファイルに使用するユーザー/グループIDを設定しています。これらが設定されていない場合、「nobody」と「nogroup」が使用されます-OSのバージョンとディストリビューションによって異なる場合があります。だから

/websites 10.0.0.0/8 
    (fsid=0,no_subtree_check,rw,no_root_squash,anonuid=1001,anongid=1001)
                                              ^^^^^^^^^^^^^^^^^^^^^^^^^^

トリックにかもしれません(1001はサーバー上で有効で使用可能なUID/GIDです)。

2
Axel Knauf