Ubuntu 26.04 を LDAP 認証へ参加させる場合、現在は nslcd よりも SSSD を使う構成が扱いやすいです。SSSD は NSS と PAM の間に入り、LDAP のユーザー情報取得、認証、キャッシュをまとめて扱えます。
この記事では、Ubuntu 26.04 を LDAP クライアントとして構成する手順を整理します。実環境では構成管理で /etc/sssd/sssd.conf を配布していますが、ここでは手動で行う場合の流れとして、パッケージ導入、設定ファイル作成、構文確認、ユーザー解決確認までをまとめます。
- SSSD を使って Ubuntu 26.04 を LDAP 認証へ参加させる
sssd,sssd-tools,libnss-sss,libpam-sssを導入する/etc/sssd/sssd.confをroot:sssd、0640で配置するsssctl config-checkで設定を確認してから起動するgetent passwdとidで LDAP ユーザー解決を確認する
| 対象 OS | Ubuntu 26.04 |
|---|---|
| 主要パッケージ | sssd, sssd-tools, libnss-sss, libpam-sss |
| 設定ファイル | /etc/sssd/sssd.conf |
| ファイル権限 | root:sssd, 0640 |
| LDAP 接続 | ldaps://ldap.example.com |
| 設定確認 | sudo sssctl config-check |
-
1
前提を確認するLDAPS 接続、CA 証明書、LDAP の base DN と bind DN を確認します。
-
2
SSSD 関連パッケージを入れるNSS/PAM 連携に必要なパッケージを導入します。
-
3
sssd.conf を配置するLDAP ドメインと bind 情報を設定します。
-
4
設定を検証してサービスを起動する
sssctl config-check後にsssd.serviceを起動します。 -
5
ユーザー解決と認証を確認する
getent,id,sssctlで状態を確認します。
書籍
Advanced Ubuntu Administration and Management Best Practices
Ubuntu Server の認証、ユーザー管理、SSSD、TLS 周辺を体系的に確認したい場合の参考書籍です。価格や在庫はリンク先で確認してください。
Amazon で見るこのリンクは Amazon アソシエイトリンクです。
SSSD と LDAP 連携の位置づけ
SSSD は LDAP サーバーそのものではなく、Linux ホストが外部ディレクトリを参照するためのクライアント側コンポーネントです。ユーザーやグループを LDAP から引き、PAM 認証と NSS 名前解決に接続します。
getent passwdで LDAP ユーザーが見えるidで LDAP グループが解決できる- PAM 経由でログイン認証できる
- 認証情報や名前解決を一定範囲でキャッシュできる
前提を確認する
SSSD を設定する前に、LDAP サーバーへ LDAPS で到達できること、CA 証明書を信頼していること、bind DN と検索 base DN が決まっていることを確認します。
getent hosts ldap.example.com
openssl s_client \
-connect ldap.example.com:636 \
-servername ldap.example.com \
-brief
ldapsearch \
-H ldaps://ldap.example.com \
-D 'cn=bind-readonly,ou=system,dc=example,dc=com' \
-W \
-b 'ou=users,dc=example,dc=com' \
'(uid=testuser)' dnSSSD 関連パッケージをインストールする
Ubuntu 26.04 では、SSSD 本体、管理用コマンド、NSS/PAM 連携パッケージを入れます。
sudo apt update
sudo apt install -y sssd sssd-tools libnss-sss libpam-sss ldap-utilsldap-utils は SSSD の必須パッケージではありませんが、ldapsearch で接続確認を行うために入れておくと便利です。
sssd.conf を作成する
/etc/sssd/sssd.conf を作成します。次の例では、main と services の 2 つの検索領域をドメインとして分けています。単一の LDAP 領域だけを見る場合は、ドメインを 1 つにして構いません。
sudo tee /etc/sssd/sssd.conf >/dev/null <<'EOF'
[sssd]
services = nss, pam
domains = main, services
[domain/main]
id_provider = ldap
auth_provider = ldap
chpass_provider = ldap
access_provider = permit
ldap_uri = ldaps://ldap.example.com
ldap_search_base = ou=users,dc=example,dc=com
ldap_default_bind_dn = cn=bind-readonly,ou=system,dc=example,dc=com
ldap_default_authtok = CHANGE_ME_BIND_PASSWORD
cache_credentials = true
[domain/services]
id_provider = ldap
auth_provider = ldap
chpass_provider = ldap
access_provider = permit
ldap_uri = ldaps://ldap.example.com
ldap_search_base = ou=services,dc=example,dc=com
ldap_default_bind_dn = cn=bind-readonly,ou=system,dc=example,dc=com
ldap_default_authtok = CHANGE_ME_BIND_PASSWORD
cache_credentials = true
EOF
sudo chown root:sssd /etc/sssd/sssd.conf
sudo chmod 0640 /etc/sssd/sssd.conf設定を検証する
SSSD は設定ファイルの権限に厳しいため、内容だけでなく所有者と権限も確認します。そのうえで sssctl config-check を実行します。
sudo ls -l /etc/sssd/sssd.conf
sudo sssctl config-checkSSSD を起動する
設定確認が通ったら、SSSD を有効化して起動します。
sudo systemctl enable --now sssd.service
systemctl status sssd.service --no-pager設定を変更した場合は、サービスを再起動します。キャッシュが原因で古い状態が見える場合は、確認目的でキャッシュ削除を検討します。
sudo systemctl restart sssd.service
sudo sss_cache -ELDAP ユーザー解決を確認する
SSSD が動作したら、LDAP ユーザーやグループが OS から見えるか確認します。
getent passwd testuser
id testuser
sssctl user-checks testusergetent passwd でユーザーが見えない場合、LDAP 検索 base DN、bind DN、CA 証明書、ネットワーク到達性、SSSD のログを順に確認します。
ログを確認する
切り分けでは、まず systemd のログと SSSD のドメイン別ログを見ます。
journalctl -u sssd.service --no-pager -n 100
sudo ls -l /var/log/sssd/
sudo tail -n 100 /var/log/sssd/sssd_main.logドメイン別ログがある場合は、/var/log/sssd/sssd_<domain>.log も確認します。認証失敗、証明書検証失敗、bind 失敗、検索 base の誤りはログに出ることが多いです。
よくある確認ポイント
- LDAPS の証明書検証が通っているか
ldap_search_baseが実際のユーザー DN を含んでいるか- bind DN とパスワードが正しいか
/etc/sssd/sssd.confが0640になっているか- PAM/NSS 連携パッケージが入っているか
- キャッシュに古い結果が残っていないか
nsswitch.conf について
通常、libnss-sss の導入により NSS 側の連携が入ります。もしユーザー解決ができない場合は、/etc/nsswitch.conf の passwd, group, shadow に sss が含まれているか確認します。
grep -E '^(passwd|group|shadow):' /etc/nsswitch.confまとめ
Ubuntu 26.04 の LDAP クライアント設定では、SSSD を使って NSS と PAM を LDAP へ接続します。重要なのは、LDAPS の証明書検証、/etc/sssd/sssd.conf の権限、sssctl config-check による検証、getent と id によるユーザー解決確認です。
LDAP 連携は、単に認証方式を増やす話ではなく、Linux ホスト上で POSIX ユーザーをどう表現し、どの範囲でキャッシュし、どの経路でログインさせるかを設計する話です。SSSD を使うと、その境界を比較的整理しやすくなります。


