7.4. SSSD でのローカルシステムユーザーの管理

7.4.1. SSSD ユーティリティーのインストール

SSSD キャッシュやユーザーエントリー、グループエントリーを扱う追加ツールは、sssd-tools パッケージに含まれています。このパッケージは必須ではありませんが、ユーザーアカウントの管理に役立ちます。
[root@server ~]# yum install sssd-tools

7.4.2. SSSD と UID および GID 番号

useradd などのシステムツールや Red Hat Identity Management などのアプリケーション、または他のクライアントツールなどを使ってユーザーが作成されると、このユーザーには自動的にユーザー ID 番号とグループ ID が割り当てられます。
ユーザーがシステムやサービスにログインすると、SSSD はそのユーザー名と関連する UID/GID 番号をキャッシュします。UID 番号はその後、ユーザーを特定する鍵として使用されます。同一のユーザー名で別の UID を持つユーザーがシステムにログインしようとすると、SSSD は名前の競合により別の 2 人のユーザーとみなします。
つまり、SSSD は UID 番号の変更を認識しません。別の UID 番号を持つ既存ユーザーではなく、異なる新規ユーザーと解釈します。既存ユーザーが UID 番号を変更すると、そのユーザーは SSSD と関連サービスおよびドメインへのログインができなくなります。これは ID 情報に関して SSSD を使用するクライアントアプリケーションにも影響します。競合のあるユーザーは発見されないか、アプリケーションへアクセスできません。

重要

UID/GID の変更は、SSSD ではサポートされていません。
何らかの理由で UID/GID 番号が変更されているユーザーが再度ログイン可能となるには、そのユーザーの SSSD キャッシュをクリアにする必要があります。例を示します。
[root@server ~]# sss_cache -u jsmith
SSSD キャッシュの削除については、「SSSD キャッシュの削除」 で説明しています。

7.4.3. ローカルシステムユーザーの作成

ユーザーがログインするのを待ってから追加するよりも、ユーザーを SSSD データベースにシードする方が便利な場合があります。

注記

ユーザーアカウントを手動で追加するには、sssd-tools パッケージをインストールする必要があります。
新規システムユーザーを作成する場合、SSSD ローカル ID プロバイダードメイン内にユーザーを作成することができます。これは、新規システムユーザーの作成や SSSD 設定のトラブルシューティング、特定もしくはネスト化されたグループの作成に便利です。
新規ユーザーは、sss_useradd コマンドで追加できます。
最も基本的なのは sss_useradd コマンドで、これは新規ユーザー名のみを必要とします。
[root@server ~]# sss_useradd jsmith
他のオプション (sss_useradd(8) man ページに記載) は、UID や GID、ホームディレクトリー、ユーザーが所属するグループなどのアカウントの属性の設定に使用できます。
[root@server ~]# sss_useradd --UID 501 --home /home/jsmith --groups admin,dev-group jsmith

7.4.4. キックスタート中にユーザーを SSSD キャッシュにシードする方法

注記

ユーザーアカウントを手動で追加するには、sssd-tools パッケージをインストールする必要があります。
SSSD では、リモートドメインのユーザーは、そのユーザーの ID が ID プロバイダーから取得されるまで、ローカルシステムの利用ができません。しかし、ユーザーがログインするまで利用できないネットワークインターフェースもいくつかあり、ユーザー ID がネットワーク上のどこかにある場合は、ユーザーはログインできません。この場合、適切なドメインに関連したそのユーザーの ID で SSSD キャッシュをシードすることが可能で、これによりユーザーはローカルでログインし、適切なインターフェースを有効にできます。
これは以下のように sss_seed ユーティリティーで実行します。
sss_seed --domain EXAMPLE.COM --username testuser --password-file /tmp/sssd-pwd.txt
このユーティリティーは、少なくともユーザー名とドメイン名、パスワードを特定するオプションを必要とします。
  • --domain は SSSD 設定からのドメイン名を提供します。このドメイン名は、SSSD 設定に既存のものである必要があります。
  • --username は、ユーザーアカウントの短い名前です。
  • --password-file は、シードエントリーの一時的なパスワードを含むファイルのパスおよびファイル名です。ユーザーアカウントが SSSD キャッシュに既にある場合は、このファイルの一時的なパスワードが SSSD キャッシュにある保存済みパスワードを上書きします。
追加のアカウント設定オプションは、sss_seed(8) man ページに記載されています。
これはほとんどの場合、キックスタートもしくは自動セットアップの一部として実行されるので、SSSD を有効にし、SSSD ドメインをセットアップし、パスワードファイルを作成する大規模なスクリプトの一部となります。例を示します。
function make_sssd {
cat <<- _EOF_
[sssd]
domains = LOCAL
services = nss,pam

[nss]

[pam]

[domain/LOCAL]
id_provider = local
auth_provider = local
access_provider = permit
				
_EOF_
}

make_sssd >> /etc/sssd/sssd.conf

authconfig --enablesssd --enablesssdauth --update

function make_pwdfile {
cat <<1 _EOF_
password
_EOF_
}

make_pwdfile >> /tmp/sssd-pwd.txt

sss_seed --domain EXAMPLE.COM --username testuser --password-file /tmp/sssd-pwd.txt

7.4.5. SSSD キャッシュの管理

SSSD は、同じタイプのドメインと異なるタイプのドメインを複数定義することができます。SSSD は各ドメイン用に別個のデータベースファイルを維持するので、各ドメインが個別のキャッシュを持つことになります。これらのキャッシュファイルは /var/lib/sss/db/ ディレクトリーに格納されています。

7.4.5.1. SSSD キャッシュの削除

LDAP 更新はドメイン用の ID プロバイダーになされるため、キャッシュを削除して新しい情報を迅速にリロードする必要があります。
キャッシュ削除ユーティリティーの sss_cache は、SSSD キャッシュにあるユーザーやドメイン、グループのレコードを無効にします。最新のレコードを無効にすることで、キャッシュは ID プロバイダーから更新されたレコードを取得することが強制されるので、変更が迅速に実現されます。

注記

このユーティリティーは、sssd パッケージに SSSD と含まれています。
このユーティリティーは通常、ドメイン全体のキャッシュを削除し、レコードを更新するために使用されます。

例7.13 ドメインレコードの削除

[root@server ~]# sss_cache -d LDAP1
特定のレコード (ユーザー、グループ、ネットグループ) が更新されたことを管理者が認識している場合、sss_cache はその特定のアカウントのレコードを削除し、残りのキャッシュはそのまま残しておくことができます。

例7.14 ユーザーレコードの削除

[root@server ~]# sss_cache -u jsmith

表7.13 sss_cache オプション

短い引数長い引数説明
-d name--domain name特定ドメイン内のユーザーやグループ、他のエントリーのキャッシュエントリーのみを無効にします。
-G--groupsグループレコードすべてを無効にします。-g も使われた場合は、-G が優先され、 -g は無視されます。
-g name--group name特定グループのキャッシュエントリーを無効にします。
-N--netgroupsネットグループのキャッシュレコードすべてのキャッシュエントリーを無効にします。-n も使われた場合、-N が優先され -n は無視されます。
-n name--netgroup name特定ネットグループのキャッシュエントリーを無効にします。
-U--usersユーザーレコードすべてのキャッシュエントリーを無効にします。-u も使われた場合、-U が優先され -u は無視されます。
-u name--user name特定ユーザーのキャッシュエントリーを無効にします。

7.4.5.2. ドメインキャッシュファイルの削除

すべてのキャッシュファイルにはドメイン向けに名前がつけられています。たとえば、exampleldap ドメインの場合、キャッシュファイルは cache_exampleldap.ldb と命名されます。
キャッシュファイルを削除する場合は、注意してください。 この操作は重大な影響を及ぼします。
  • キャッシュファイルを削除すると、ID 情報とキャッシュされている認証情報の両方のユーザー情報すべてが削除されます。このため、システムがオンラインでドメインのサーバーに対してユーザー名で認証できる状態でない場合は、キャッシュファイルを削除しないでください。認証情報のキャッシュがないと、オフライン認証は失敗します。
  • 異なる ID プロバイダーを参照するように設定が変更された場合、SSSD は 変更前のプロバイダーからのキャッシュされたエントリーがタイムアウトになるまで、両方のプロバイダーからのユーザーを認識します。
    キャッシュを削除するとこれは避けられますが、新規のプロバイダーで異なるドメイン名を使用する方法がより優れたオプションになります。SSSD が再起動すると、新しい名前で新規キャッシュファイルが作成され、古いファイルは無視されます。