NFS クライアントが NFS マップ上の UID を無視しない

NFS クライアントが NFS マップ上の UID を無視しない

マシンは 6 台、NFS サーバーは 1 台、クライアントは 5 台あります。3 台のクライアント (Ubuntu 14.04 を実行) は問題なく動作します。12.04 を実行中の他の 2 台では、権限エラーが発生します。

マップされたクライアント マシンでは、ls -l /home/次が返されます。

drwxr-xr-x 22 testuser     testuser     12288 Oct  9 18:03 testuser

これは予想される権限設定です。testuserこのフォルダーへの権限を必要とするユーザーです。

しかし、 にログインするとtestusertouch /home/testuser/test.txt次のエラーが表示されます:

touch: cannot touch `/home/testuser/test.txt': Permission denied

数値IDはID文字列と一致しませんが、そうする必要はないと言われました。

クライアント設定:

cat /sys/module/nfs/parameters/nfs4_disable_idmapping
N 

上記の設定により、NFS は数値の UID や GID ではなく文字列を使用してユーザー権限をマップできるようになります。

cat /etc/idmapd.conf
[General]

Verbosity = 0
Pipefs-Directory = /run/rpc_pipefs
# set your own domain here, if id differs from FQDN minus hostname
Domain = localdomain

[Mapping]

Nobody-User = nobody
Nobody-Group = nogroup

サーバー設定:

cat /etc/exports

/raid/nfs/home        server1(rw,sync,no_root_squash,no_subtree_check)
/raid/nfs/home        server2(rw,sync,no_root_squash,no_subtree_check)

12.04 マシンを正常に動作させるには、バグや追加の手順が必要ですか? それとも、思い切ってアッ​​プグレードするべきでしょうか、それともすべての UID をサーバーに合わせて変更するべきでしょうか?

答え1

問題は、idmapd が関係するのは、GETATTR/SETATTR (stat、chown、setacl) を実行する場合、または kerberos が使用される場合 (プリンシパルから ID へのマッピング用) のみであることです。ただし、nfs クライアントが auth=sys で CREATE 要求を送信すると、RPC メッセージから uid と gid が取得されます。したがって、権限の問題を解決するには、サーバーとクライアントで uid と gid が一致している必要があります。

関連情報