====== 管理ノード ====== ===== OpenLDAPのインストールと初期設定 ===== (UFWを使用している場合)LDAPサーバ用のポートを開放 $ sudo ufw allow 389 ソフトウェアのインストール $ sudo apt install slapd ldap-utils 以下を聞かれるので設定 * Administrator password: 任意 初期設定 $ sudo dpkg-reconfigure slapd * Omit OpenLDAP server Configuration?: No * DNS domain name: cluster.home.arpa * プライベートLAN内のドメイン名は hogehoge.home.arpa が推奨されている、らしい * クラスタ計算機のドメインなので、ここでは cluster.home.arpha としておく * Organization name: Computer cluster * このドメインが何を表すかの覚書。好きな名前にしてよろしい * Administration password: インストール時に入力したもの * Do you want the database to be removed when slapd is purged?: No * slapdをアンインストールしたときにデータベースを残すかどうか。 * Move old database?: Yes * 古いデータベースを別名にして残すかどうか。 ちゃんと設定されたか確認 $ sudo slapcat dn: dc=cluster,dc=home,dc=arpa objectClass: top objectClass: dcObject objectClass: organization o: Computer Cluster dc: cluster structuralObjectClass: organization entryUUID: d1780672-e166-1040-9b15-8729bd3fc447 creatorsName: cn=admin,dc=cluster,dc=home,dc=arpa createTimestamp: 20260511092330Z entryCSN: 20260511092330.169937Z#000000#000#000000 modifiersName: cn=admin,dc=cluster,dc=home,dc=arpa modifyTimestamp: 20260511092330Z ===== 基本構造作成 ===== 組織単位を作成し、LDAPに追加する。 $ nano base.ldif dn: ou=people,dc=cluster,dc=home,dc=arpa objectClass: organizationalUnit ou: people dn: ou=groups,dc=cluster,dc=home,dc=arpa objectClass: organizationalUnit ou: groups dn: ou=hosts,dc=cluster,dc=home,dc=arpa objectClass: organizationalUnit ou: hosts $ ldapadd -x -D cn=admin,dc=cluster,dc=home,dc=arpa -W -f base.ldif ちゃんと設定されたか確認。 $ sudo slapcat dn: dc=cluster,dc=home,dc=arpa objectClass: top objectClass: dcObject objectClass: organization o: Computer Cluster dc: cluster structuralObjectClass: organization entryUUID: d1780672-e166-1040-9b15-8729bd3fc447 creatorsName: cn=admin,dc=cluster,dc=home,dc=arpa createTimestamp: 20260511092330Z entryCSN: 20260511092330.169937Z#000000#000#000000 modifiersName: cn=admin,dc=cluster,dc=home,dc=arpa modifyTimestamp: 20260511092330Z dn: ou=people,dc=cluster,dc=home,dc=arpa objectClass: organizationalUnit ou: people structuralObjectClass: organizationalUnit entryUUID: e7553b08-e167-1040-867b-8d36242c18d8 creatorsName: cn=admin,dc=cluster,dc=home,dc=arpa createTimestamp: 20260511093116Z entryCSN: 20260511093116.348516Z#000000#000#000000 modifiersName: cn=admin,dc=cluster,dc=home,dc=arpa modifyTimestamp: 20260511093116Z dn: ou=groups,dc=cluster,dc=home,dc=arpa objectClass: organizationalUnit ou: groups structuralObjectClass: organizationalUnit entryUUID: e755e2c4-e167-1040-867c-8d36242c18d8 creatorsName: cn=admin,dc=cluster,dc=home,dc=arpa createTimestamp: 20260511093116Z entryCSN: 20260511093116.352854Z#000000#000#000000 modifiersName: cn=admin,dc=cluster,dc=home,dc=arpa modifyTimestamp: 20260511093116Z ===== ユーザーの追加 ===== ユーザーの初期パスワードを設定する。 $ slappasswd New password: Re-enter new password: {SSHA}9VhiMfY0h9+SiAzqqCRIYGnKedgMUfH5 ユーザー情報の作成。 $ vim user.ldif dn: cn=taro,ou=groups,dc=cluster,dc=home,dc=arpa objectClass: posixGroup cn: taro gidNumber: 10000 dn: uid=taro,ou=people,dc=cluster,dc=home,dc=arpa objectClass: inetOrgPerson objectClass: posixAccount objectClass: shadowAccount cn: Taro Yamada sn: Yamada uid: taro uidNumber: 10000 gidNumber: 10000 homeDirectory: /home/taro loginShell: /bin/bash userPassword: {SSHA}9VhiMfY0h9+SiAzqqCRIYGnKedgMUfH5 $ ldapadd -x -D cn=admin,dc=cluster,dc=home,dc=arpa -W -f user.ldif ちゃんと登録されているか確認 $ sudo slapcat 正しく登録されていれば、今まで入力した情報がすべて表示されます。 以下で述べるLDAPユーザの自動homeディレクトリ作成機能を利用しないなら、手動で作成する。 $ sudo mkdir /home/taro $ sudo chown 10000:10000 /home/taro ===== ユーザーの削除 ===== $ ldapdelete -x -W -D "cn=admin,dc=cluster,dc=home,dc=arpa" 'cn=taro,ou=groups,dc=cluster,dc=home,dc=arpa' $ ldapdelete -x -W -D "cn=admin,dc=cluster,dc=home,dc=arpa" 'uid=taro,ou=people,dc=cluster,dc=home,dc=arpa' ===== ホストの追加 ===== LDIFファイルは必要な分だけ書いてください。 dn: cn=kanri,ou=hosts,dc=cluster,dc=home,dc=arpa objectClass: top objectClass: ipHost objectClass: device cn: kanri ipHostNumber: 192.168.0.1 dn: cn=keisan10,ou=hosts,dc=cluster,dc=home,dc=arpa objectClass: top objectClass: ipHost objectClass: device cn: keisan10 ipHostNumber: 192.168.0.10 dn: cn=keisan11,ou=hosts,dc=cluster,dc=home,dc=arpa objectClass: top objectClass: ipHost objectClass: device cn: keisan11 ipHostNumber: 192.168.0.11 登録 $ ldapadd -x -D "cn=admin,dc=cluster,dc=home,dc=arpa" -W -f hosts.ldif 確認 $ getent hosts ====== LDAPクライアント ====== * 最近はLDAPクライアントとしてSSSDが推奨されているらしいが、設定が面倒なので昔ながらのNSLCDを使う。 * 管理ノード、計算ノードで行う。 $ apt install libnss-ldapd libpam-ldapd * LDAP server URI: ldap://192.168.0.1/ * LDAP server search base: dc=cluster,dc=home,dc=arpa * Name services to configure: passwd, group, shadow, hosts (スペースキーでチェックを入れられます) $ sudo pam-auth-update * 「LDAP Authentication」を有効化(通常は自動で有効化済み) * Create home directory on login を有効化 $ sudo systemctl restart nslcd nscd ユーザーが見えるか確認 $ getent passwd taro taro:x:10000:10000:Taro Yamada:/home/taro:/bin/bash $ id taro * uidとgidが見えます。 ユーザーに切り替えるには $ su - taro === おまけ === ラズパイ5で組んだクラスタマシンで実行すると、追加したtaroのログインに失敗します。 $ su - taro Password: su: Authentication failure /var/log/syslogを見ると 2026-05-14T16:16:19.302517+09:00 kanri kernel: audit: type=1400 audit(1778742979.300:545): apparmor="DENIED" operation="connect" class="file" profile="unix-chkpwd" name="/att/unix-chkpwd/run/nslcd/socket" pid=16833 comm="unix_chkpwd" requested_mask="wr" denied_mask="wr" fsuid=0 ouid=0 となっていたので、AppAmorを修正しました。 $ sudo nano /etc/apparmor.d/unix-chkpwd (略) include if exists /att/unix-chkpwd/run/nslcd/socket rw, #この行を追加 } $ sudo apparmor_parser -r /etc/apparmor.d/unix-chkpwd ====== 参考資料 ====== * https://server-network-note.net/2022/11/openldap-client-ubuntu22-04lts-server/ * https://zenn.dev/iasl/articles/1d35c87a66ee35