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)
ここを読んでください http://blather.michaelwlucas.com/archives/796
NFSv4クライアントとサーバーのドメイン名が一致しない場合、すべてのユーザー名は「nobody」と表示されます。
/etc/idmapd.confを編集して、サーバーとクライアントのドメインを「localdomain」に設定します
【全般】
ドメイン= localdomain
[翻訳]
メソッド= nsswitch
/ etc/default/nfs-commonファイルを変更します(サーバーとクライアントの両方で):set NEED_IDMAPD = yes
idmapdサービスを開始する
NFSおよびZFSのUID/GID で説明されているように、NFSv4はUIDを使用しません。同様の問題があり、NFSv3を使用して回避できました。これには、mount
コマンドに-o vers=3
を追加するだけです。もちろん、NFSv4を使用する必要がある場合、この応答はあまり役に立ちません。
これはユーザー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が一般的に使用されます)。
/ etc/default/nfs-commonファイル(bothサーバーとクライアント上)を変更する必要があります:set NEED_IDMAPD
からyes
へ。
少なくともこれは私に役立ちました。
NFSオプションanonuid
とanongid
を使用して、サーバーが匿名で作成されたファイルに使用するユーザー/グループ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です)。