RedHatの 現在の推奨事項 に従ってKRB5認証を使用してNFSv4を構成し、SSSDを使用してActive Directoryにアクセスしようとしています。この場合のNFSサーバーはNASアプライアンスであり、user @domainアカウントとAD/LDSから取得したUID/GID間のユーザーマッピングを処理します。SSSDでIDマッピングを無効にしました。 NASには、「自家製」IDの計算に使用できる同じハッシュ+モジュラスメソッドがありません。
現在の状態では、NASはファイル権限のユーザーとグループの所有権を認識し、期待どおりにそれらを強制します。ただし、クライアントからのls
出力にはnobody nobody
が表示されますドメインユーザーが所有するファイル/フォルダー。
[root@nfsclient ~]# ls -al /mnt/nfs4test/
total 0
drwxr-xr-x. 1 nobody nobody 0 Jul 17 10:46 .
drwxr-xr-x. 3 root root 22 Jul 17 10:47 ..
Idmapdとsssdのログの詳細度を最大にした場合、問題を示す唯一のイベントはJul 17 11:48:23 nfsclient nfsidmap[10601]: nss_getpwnam: name 'nfsadmin' not found in domain 'testdomain.local'
です。
また、パケットキャプチャを介して、ルックアップ応答で所有者とグループ(IDではなく)に対して予期されるユーザー/グループ名の文字列が返されることを確認しました。
fattr4_owner: [email protected]
fattr4_owner_group: Domain [email protected]
環境は、2012R2 DC、CentOS 7.3クライアント、およびベンダー独自の(CentOSベースの)NASアプライアンスがサーバーとして機能します。必要なパッケージとIPのインストールは別として/ NTP構成、これらはクライアントでの私の構成手順です:
Domain = testdomain.local
を追加しますrealm join testdomain.local -U nfsadmin
でADドメインに参加ldap_id_mapping = False
を設定しますsec=sys
を使用してエクスポートをマウントし、所有権をドメインユーザーに変更しますSec = sysまたはsec = krb5、rootまたはドメインアカウントのどちらを使用しても、ls出力は同じです。
私が検索で見つけた唯一の適用可能な解決策は、ユーザーのローカルアカウントを作成する必要性を指摘していますが、これはAD統合の目的を損なうようです。新しいADユーザーを作成し、それらをアクセス許可用の適切なグループに追加し、UID/GIDを設定すると、そのユーザーはSSHでSSH接続すると、エクスポートでファイルにアクセスできるようになるはずです。クライアントマシン。
クライアント構成は、純粋にActive Directoryからデータをプルしています(サーバー/ NASのみがAD/LDSを利用します)。 Active DirectoryのUID/GIDは、PowerShellを介して手動で入力されました(例:Get-ADUser "nfsadmin" | Set-AdUser -replace @{uidNumber=10001}
-現在2016R2でテストしている場合でも、この2016に互換性を持たせ、adminui/nisまたはUNIXの[属性]タブの使用を避けます)
サーバーから返されたドメインユーザー/グループ名を正しく変換するためにNSS/nfsidmapを取得するにはどうすればよいですか?
個々のユーザーごとに手動でローカルアカウントを作成する必要がないものを強くお勧めします。何千人ものユーザーにスケーリングすることで大きな問題が発生することはありません。また、サーバー(この場合はNASアプライアンス)に名前ではなくIDを返すように強制することはできません。
この場合、idmapdはデフォルトでnsswitchを使用していましたが、上記のドキュメントで詳述されているAD統合方法は、idmapd.confの変更を参照していません。
Idmapd.confのコメントには、「分散メソッドにはnsswitch、umich_ldap、およびstaticが含まれます」と記載されています。ただし、これはプラグインの包括的なリストではありません。この場合、システムセキュリティサービス(sss)を使用する必要があります。
/etc/idmapd.conf:
[General]
Domain = testdomain.local
[Translation]
Method = sss
これは、ldap_id_mappingがまだ有効になっているときにsssがマッピングを完全に処理している(ただし、NASアプライアンス)でサーバー側のマッピングの問題が発生する)ことに気付き、「ドメイン内」エラーがnss_getpwnamによって報告されていました。
sss
がnsswitch.confのpasswdおよびgroupにリストされているデータベースの1つであるときにNSSがジョブを完了できなかった理由はまだわかりませんが、上記の変更は機能するようです。