GNU/Linux >> Linux の 問題 >  >> Cent OS

Windows Active Directory アカウントが異なる Linux SSSD クライアント (CentOS/RHEL) で一貫性のない UID/GID を示す

問題

ID コマンドは、同じ Windows Active Directory ユーザーに対して、異なる sssd サーバーで異なる UID と GID を表示します。 sss_cache によって sssd キャッシュをパージした後も、UID と GID はまだ異なります。

1. 1 つのサーバーからの出力:

# id ad_test_user
uid=[UID](ad_test_user) gid=[GID](ad_test_group) groups=[GID](ad_test_group2),[GID](ad_test_group)
# sss_cache -u ad_test_user
# id ad_test_user
uid=[UID](ad_test_user) gid=[GID](ad_test_group) groups=[GID](ad_test_group2),[GID](ad_test_group)

2. 別のサーバーからの出力:

# id ad_test_user
uid=[UID](ad_test_user) gid=[GID](ad_test_group) groups=[GID](ad_test_groups),[GID](ad_test_group3),[GID](ad_test_group4),[GID](ad_test_group5), [GID](ad_test_group2),[GID](ad_test_group)
# sss_cache -u ad_test_user
# id ad_test_user
uid=[UID](ad_test_user) gid=[GID](ad_test_group) groups=[GID](ad_test_groups),[GID](ad_test_group3),[GID](ad_test_group4),[GID](ad_test_group5), [GID](ad_test_group2),[GID](ad_test_group)

Linux サーバーへの影響の可能性:AD ユーザーが Linux にログインできない

# su - ad_test_user
Last login: Fri Sep 11 11:11:11 COT 2015 from 10.10.xx.xx on pts/1
Last failed login: Tue Mar 13 13:13:13 COT 2015 from 10.10.10.2 on ssh:hostname
There were 1 failed login attempts since the last successful login.
su: warning: cannot change directory to /home/ad_test_user: Permission denied
id: cannot find name for group ID [GID]
-bash: /home/ad_test_user/.bash_profile: Permission denied
-bash-4.2$

解決策

Linux ユーザーの UID と GID は、Windows AD SID から取得されます。 sssd はそれを変更しません。 ID マッピング機能により、sssd は、管理者がユーザー属性を拡張してユーザーおよびグループ識別子の POSIX 属性をサポートする必要なく、Active Directory のクライアントとして機能できます。

Active Directory は、ディレクトリ内のすべてのユーザーおよびグループ オブジェクトに objectSID を提供します。この objectSID は、Active Directory ドメイン ID とユーザーまたはグループ オブジェクトの相対識別子 (RID) を表すコンポーネントに分割できます。 sssd ID マッピング アルゴリズムは、利用可能な UID の範囲を取り、「スライス」と呼ばれる同じサイズのコンポーネント セクションに分割します。 「――。各スライスは、Active Directory ドメインで使用できるスペースを表します。

特定のドメインのユーザーまたはグループのエントリが初めて検出されると、sssd(8) はそのドメインに利用可能なスライスの 1 つを割り当てます。このスライス割り当てを異なるクライアント マシンで繰り返し実行できるようにするために、次のアルゴリズムが使用されます。SID 文字列は、murmurhash3 アルゴリズムを介して渡され、32 ビットのハッシュ値に変換されます。次に、スライスを選択するために、使用可能なスライスの総数でこの値のモジュラスを取得します。

注意 :ハッシュおよび後続のモジュラスで衝突が発生する可能性があります。このような状況では、次に利用可能なスライスが使用されますが、検出された順序によってスライスが決定されるため、他のマシンでまったく同じスライスのセットを再現することはできない場合があります。この状況では、Active Directory で明示的な POSIX 属性を使用するように切り替える (ID マッピングを無効にする) か、既定のドメインを構成して、少なくとも 1 つが常に一貫していることを保証することをお勧めします。詳細については、「構成」を参照してください。

ID マッピングが sssd(8) で有効になっている場合、uidNumber および gidNumber 属性は無視されます。これは、自動的に割り当てられた値と手動で割り当てられた値の間で競合が発生する可能性を回避するためです。手動で割り当てた値を使用する必要がある場合は、すべての値を手動で割り当てる必要があります。

注意 注:ID マッピング関連の構成オプションを変更すると、ユーザー ID とグループ ID が変更されます。現時点では、sssd(8) は ID の変更をサポートしていないため、sssd データベースを削除する必要があります。キャッシュされたパスワードはデータベースにも保存されるため、データベースの削除は、認証サーバーにアクセスできるときにのみ実行する必要があります。そうしないと、ユーザーがロックアウトされる可能性があります。パスワードをキャッシュするには、認証を実行する必要があります。

sssd.conf Linux クライアント上のファイルは一貫している必要があります。特に次の 2 つのパラメータは、sssd ID マッピング アルゴリズムに影響するため、すべての sssd.conf で一貫している必要があります:

1. ldap_idmap_default_domain_sid (文字列)
デフォルト ドメインのドメイン SID を指定します。これにより、上記のマーマーハッシュ アルゴリズムをバイパスして、このドメインが ID マップのスライス 0 に常に割り当てられることが保証されます。
デフォルト:未設定

2. ldap_idmap_default_domain (文字列)
デフォルト ドメインの名前を指定します。
デフォルト:未設定


Cent OS
  1. CentOS 5 /RHEL5にVirtualBox4.1をインストールする方法

  2. Realmd を使用して Active Directory ドメインに接続する方法 (CentOS/RHEL 7 を Active Directory クライアントとして構成する)

  3. RPM パッケージを CentOS/RHEL/Fedora の別のディレクトリにインストールする方法

  1. CentOS 6 /RHEL6にVirtualBox4.2をインストールします

  2. CentOS/RHEL での Active Directory 統合のための SSSD または Winbind &Samba の選択

  3. 異なるフォレスト (CentOS/RHEL) で複数の Active Directory ドメインと連携するように sssd を構成する方法

  1. Linux Samba サーバーを Windows Active Directory ドメインに参加できない

  2. CentOS/RHEL 7 クライアントにログインする Active Directory ユーザーとグループを制限する方法

  3. NFSv4 クライアントがマウント ポイントの所有者およびグループとして「nobody」を表示する (CentOS/RHEL)