web-dev-qa-db-ja.com

NFSv4 + SSSD + Active Directory:ldap_id_mappingが無効な場合の「nobody」権限

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構成、これらはクライアントでの私の構成手順です:

  • /etc/idmapd.confにDomain = testdomain.localを追加します
  • realm join testdomain.local -U nfsadminでADドメインに参加
  • すべてのドメインユーザーからのSSHアクセスを許可する(レルム許可)
  • /etc/sssd/sssd.confにldap_id_mapping = Falseを設定します
  • Sssd.service rpcgssdrpcidmapdおよびnfs-secureを有効/開始/再起動します
  • sec=sysを使用してエクスポートをマウントし、所有権をドメインユーザーに変更します
  • Sec = krb5で再マウントします

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を返すように強制することはできません。

2
JimNim

この場合、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がジョブを完了できなかった理由はまだわかりませんが、上記の変更は機能するようです。

1
JimNim