web-dev-qa-db-ja.com

idmapdエラーのあるchownまたはchgrp NFSv4:無効な引数

私はこれについて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をファイルとしてリストします)?

前もって感謝します!

3
Maelstrom

これでループを閉じたかっただけです。私は答えを見つけました。ここでの問題は、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

お役に立てれば。

1
Maelstrom