私はこれについて1つまたは2つの他の投稿しか見つけず、解決策もなかったので、私のケースに対して、より具体的な新しい質問を作成しています。
システム設定:NFSv4を実行しているNFSサーバー。 RedHat 6を実行するNFSクライアント、/ etc/idmapd.confで次のように実行するidmapd:
[General]
Verbosity = 7
Domain = localdomain
[Mapping]
Nobody-User = nobody
Nobody-Group = nobody
Method = nsswitch
問題は、特定のユーザーがローカルホストに存在していても、次のように「無効な引数」エラーで失敗する場合のchown/chgrpです。
# chown Oracle m
chown: changing ownership of `m': Invalid argument
# grep Oracle /etc/passwd
Oracle:x:54321:54321::/home/Oracle:/bin/bash
# chown mysql m
# grep mysql /etc/passwd
mysql:x:496:496:MySQL server:/var/lib/mysql:/bin/bash
Idmapdが特定のユーザーを認識しないのに、他のユーザーと連携するのはなぜですか(root、nobody、さらには非標準のmysqlでも問題ありません)。
上記で欠落している特定の設定はありますか? Domainがlocaldomainに設定されている場合、すべてがローカルのpasswd/groupファイルなどを使用して機能するはずだと思いました(そして、はい、nsswitch.confはpasswdとgroupをファイルとしてリストします)?
前もって感謝します!
これでループを閉じたかっただけです。私は答えを見つけました。ここでの問題は、rpcidmapdがオンの場合、NFSv4はそれを使用してマッピングを行いますが、これはNFSがユーザー名@ドメイン名とUID/GIDをサーバーに送信することを意味します。
サーバーがこのusername @ domainnameを理解しない場合(サーバーが同じディレクトリでセットアップされていないか、その他の理由で)、chown/chmodを許可しません。
どうやら、このデフォルトの動作は正しくありません。最近のLinuxカーネルでは、これはカーネルのNFSメンテナーによって修正されたため、NFSv4のデフォルトではidmappingを使用しません。ここでコミットを参照してください: http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=074b1d12fe2500d7d453902f9266e6674b30d84c
これを自分で修正するには、次のようにします(RHEL固有)。
echo "options nfs nfs4_disable_idmapping=1" >> /etc/modprobe.d/nfs.conf
お役に立てれば。