特に真新しいわけでもないけど、SSSD(System Security Services Daemon) についてメモ。SSSDは主にリモートの認証システムの利用と、その認証データのキャッシュを目的とします。
キッカケはLDAP連携において 現在利用中の nslcd+nscd との優位性が気になったからで、その辺は分けて書いておきます。ここではSSSDとLDAPの連携、そしてSUDOが使えるようにするための構築手順になります。
関連記事
SSSD+LDAP+SUDOの構築
LDAPサーバーとユーザーデータは既にあるものとします。まず、SSSDをインストールします。
nscd は共存できない(するべきではない)ので、削除しておきます。
1 2 3 4 |
yum erase nscd yum install sssd sssd-client sssd-ldap openldap-clients systemctl enable sssd systemctl status sssd |
自動設定をします。が、設定内容の見た目が汚いのと、どうせsudo周りの設定が足りないので、飛ばして直接作成した方がいいかもです。
1 2 3 4 5 6 7 |
authconfig --test authconfig \ --enablesssd --enablesssdauth --enablelocauthorize \ --enableldap --enableldapauth --disableldaptls \ --ldapserver=ldap://ldap.example.com \ --ldapbasedn=dc=example,dc=com \ --update |
/etc/sssd/sssd.conf を編集します。設定の説明は、キャッシュ周りは別記事で触れますが、それ以外は man sssd.conf , man sssd-ldap で確認した方が確実です。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
[sssd] debug_level = 0 config_file_version = 2 services = nss, pam, ssh, sudo domains = default [domain/default] id_provider = ldap auth_provider = ldap chpass_provider = ldap sudo_provider = ldap ldap_uri = ldap://ldap.example.com ldap_search_base = dc=example,dc=com ldap_sudo_search_base = ou=SUDOers,dc=example,dc=com ldap_id_use_start_tls = False ldap_search_timeout = 3 ldap_network_timeout = 3 ldap_opt_timeout = 3 ldap_enumeration_search_timeout = 60 ldap_enumeration_refresh_timeout = 300 ldap_connection_expire_timeout = 600 ldap_sudo_smart_refresh_interval = 600 ldap_sudo_full_refresh_interval = 10800 entry_cache_timeout = 1200 cache_credentials = True [nss] homedir_substring = /home entry_negative_timeout = 20 entry_cache_nowait_percentage = 50 [pam] [sudo] [autofs] [ssh] [pac] [ifp] |
直接ファイルを作成した場合は、権限を設定します。
1 2 |
chmod 600 /etc/sssd/sssd.conf chown root:root /etc/sssd/sssd.conf |
/etc/nsswitch.conf を編集します。(authconfigでは sudoers を埋め込めません)
1 2 3 4 |
passwd: files sss shadow: files sss group: files sss sudoers: files sss |
再起動してデータの確認をします。
1 2 3 4 5 |
systemctl restart sssd id example_user su - example_user sudo ls /root |
ゴリッとキャッシュ周りの確認をしたいときなどは、キャッシュデータを削除しつつ再起動します。nscd -i passwd のようなクリーンアップツール sss_cache もあります。
1 2 |
rm /var/lib/sss/db/cache_default.ldb systemctl restart sssd |
nslcd と比べると、ldap.conf や sudo-ldap.conf など散らばった設定が不要になるので、だいぶ綺麗になって使いやすくなった印象です。
あとは、古めのバージョンには嫌らしいバグがあったりするみたいなので、新し目のディストリビューションからの採用がよいかもしれません、というくらいです。