マシンは 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
このフォルダーへの権限を必要とするユーザーです。
しかし、 にログインするとtestuser
、touch /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 が一致している必要があります。