User Tools

Site Tools


自作クラスタ計算機:openldapを使ったldapサーバの基本設定

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
自作クラスタ計算機:openldapを使ったldapサーバの基本設定 [2026/05/11 18:05] – [管理ノード] koudai自作クラスタ計算機:openldapを使ったldapサーバの基本設定 [2026/05/15 11:58] (current) – [ユーザーの削除] koudai
Line 1: Line 1:
 ====== 管理ノード ====== ====== 管理ノード ======
  
-OpenLDAPをインストール+ 
 +===== OpenLDAPのインストールと初期設定 ===== 
 + 
 +(UFW使用している場合)LDAPサーバ用のポートを開放 
 +<code> 
 +$ sudo ufw allow 389 
 +</code> 
 + 
 +ソフトウェアのインストール
  
 <code> <code>
Line 16: Line 24:
 </code> </code>
  
 +  * Omit OpenLDAP server Configuration?: No
   * DNS domain name: cluster.home.arpa   * DNS domain name: cluster.home.arpa
     * プライベートLAN内のドメイン名は hogehoge.home.arpa が推奨されている、らしい     * プライベートLAN内のドメイン名は hogehoge.home.arpa が推奨されている、らしい
-    * クラスタ計算機のドメインなので、ここでは cluster をつけておく+    * クラスタ計算機のドメインなので、ここでは cluster.home.arpha としておく
   * Organization name: Computer cluster   * Organization name: Computer cluster
-    * 好きな名前にしてよろしい +    * このドメインが何を表すかの覚書。好きな名前にしてよろしい 
-  * Administration password: 任意 +  * Administration password: インストール時に入力したもの 
- +  * Do you want the database to be removed when slapd is purged?: No 
-Yes/Noで聞かれるやつは適当答える。 +    * slapdをアンインストールしたときデータベースを残すかどうか。  
 +  * Move old database?: Yes 
 +    * 古いデータベースを別名にして残すかどうか。
  
-設定されたか確認+ちゃんと設定されたか確認
  
 <code> <code>
-ldapsearch -x -LLL -H ldap:/// -b dc=cluster,dc=home,dc=arpa+sudo slapcat
 dn: dc=cluster,dc=home,dc=arpa dn: dc=cluster,dc=home,dc=arpa
 objectClass: top objectClass: top
 objectClass: dcObject objectClass: dcObject
 objectClass: organization objectClass: organization
-o: Computer cluster+o: Computer Cluster
 dc: 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
 </code> </code>
  
  
-基本構造作成+===== 基本構造作成 ===== 
 + 
 +組織単位を作成し、LDAPに追加する。
  
 <code> <code>
-vim base.ldif+nano base.ldif
 </code> </code>
 +
 <file - base.ldif> <file - base.ldif>
-dn: ou=People,dc=cluster,dc=home,dc=arpa+dn: ou=people,dc=cluster,dc=home,dc=arpa
 objectClass: organizationalUnit objectClass: organizationalUnit
-ou: People+ou: people
  
-dn: ou=Groups,dc=cluster,dc=home,dc=arpa+dn: ou=groups,dc=cluster,dc=home,dc=arpa
 objectClass: organizationalUnit objectClass: organizationalUnit
-ou: Groups+ou: groups 
 + 
 +dn: ou=hosts,dc=cluster,dc=home,dc=arpa 
 +objectClass: organizationalUnit 
 +ou: hosts
 </file> </file>
 +
 <code> <code>
-ldapadd -x -D cn=admin,dc=cluster,dc=home,dc=arpa -W -f base.ldif+ldapadd -x -D cn=admin,dc=cluster,dc=home,dc=arpa -W -f base.ldif
 </code> </code>
  
 +ちゃんと設定されたか確認。
  
-ユーザーの作成+<code> 
 +$ 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 
 + 
 +</code> 
 + 
 + 
 + 
 +===== ユーザーの追加 ===== 
 + 
 +ユーザーの初期パスワードを設定する。 
 + 
 +<code> 
 +$ slappasswd 
 +New password:  
 +Re-enter new password:  
 +{SSHA}9VhiMfY0h9+SiAzqqCRIYGnKedgMUfH5 
 +</code> 
 + 
 +ユーザー情報の作成
  
 <code> <code>
Line 64: Line 143:
 </code> </code>
 <file - user.ldif> <file - user.ldif>
-dn: uid=taro,ou=People,dc=cluster,dc=home,dc=arpa+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: inetOrgPerson
 objectClass: posixAccount objectClass: posixAccount
Line 75: Line 159:
 homeDirectory: /home/taro homeDirectory: /home/taro
 loginShell: /bin/bash loginShell: /bin/bash
-userPassword: {SSHA}JzL3FwGnjzKz2dBzPd82zsH4eN3Nx+lT+userPassword: {SSHA}9VhiMfY0h9+SiAzqqCRIYGnKedgMUfH5
 </file> </file>
  
Line 81: Line 165:
 $ ldapadd -x -D cn=admin,dc=cluster,dc=home,dc=arpa -W -f user.ldif $ ldapadd -x -D cn=admin,dc=cluster,dc=home,dc=arpa -W -f user.ldif
 </code> </code>
- 
-パスワードのSSHAハッシュは以下で取得できます。 
- 
-<code> 
-$ slappasswd 
-New password:  
-Re-enter new password:  
-{SSHA}JzL3FwGnjzKz2dBzPd82zsH4eN3Nx+lT 
-</code> 
- 
- 
  
 ちゃんと登録されているか確認 ちゃんと登録されているか確認
 <code> <code>
-ldapsearch -x -LLL -b dc=cluster,dc=home,dc=arpa+sudo slapcat
 </code> </code>
  
 正しく登録されていれば、今まで入力した情報がすべて表示されます。 正しく登録されていれば、今まで入力した情報がすべて表示されます。
  
- +以下で述べるLDAPユーザの自動homeディレクトリ作成機能利用しないなら、手動で作成する。
- +
-LDAPユーザのhomeディレクトリを作成+
 <code> <code>
 $ sudo mkdir /home/taro $ sudo mkdir /home/taro
Line 109: Line 180:
  
  
 +===== ユーザーの削除 =====
  
- 
-LDAPサーバ用のポートを開放 
 <code> <code>
-sudo ufw allow 389+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'
 </code> </code>
  
  
-hostsファイルを編集+===== ユーザーの削除 =====
  
-<file - hosts+<code
-192.168.0.1   kanri.cluster.home.arpa kanri +$ ldapdelete -x -W -D "cn=admin,dc=cluster,dc=home,dc=arpa" 'cn=taro,ou=groups,dc=cluster,dc=home,dc=arpa' 
-192.168.0.10  keisan10.cluster.home.arpa keisan10 +$ ldapdelete -x -W -D "cn=admin,dc=cluster,dc=home,dc=arpa" 'uid=taro,ou=people,dc=cluster,dc=home,dc=arpa' 
-192.168.0.11  keisan11.cluster.home.arpa keisan11 +</code> 
-</file>+====== LDAPクライアント ======
  
 +  * 最近はLDAPクライアントとしてSSSDが推奨されているらしいが、設定が面倒なので昔ながらのNSLCDを使う。
 +  * 管理ノード、計算ノードで行う。
  
 +<code>
 +$ apt install libnss-ldapd libpam-ldapd
 +</code>
  
- +  * 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 (スペースでチェックを入れられます)
-必要なパッケジのイン+
  
 <code> <code>
-$ sudo apt install sssd libnss-sss libpam-sss ldap-utils+$ sudo pam-auth-update
 </code> </code>
- +  * 「LDAP Authentication」を有効化(通常は自動で有効化済み) 
-SSSDの設定+  * Create home directory on login を有効化
  
 <code> <code>
-$ sudo vim /etc/sssd/sssd.conf+$ sudo systemctl restart nslcd nscd
 </code> </code>
-<file - sssd.conf> 
-[sssd] 
-services = nss, pam 
-domains = cluster.home.arpa 
  
-[domain/cluster.home.arpa] +ユーザーが見えるか確認
-id_provider = ldap +
-auth_provider = ldap+
  
-ldap_uri = ldap://192.168.0.1 
-ldap_search_base = dc=cluster,dc=home,dc=arpa 
- 
-# ユーザーとグループの場所 
-ldap_user_search_base = ou=People,dc=cluster,dc=home,dc=arpa 
-ldap_group_search_base = ou=Groups,dc=cluster,dc=home,dc=arpa 
- 
-# 認証 
-ldap_default_bind_dn = cn=admin,dc=cluster,dc=home,dc=arpa 
-ldap_default_authtok = 【LDAPのパスワード】 
- 
-# ホームディレクトリ 
-ldap_user_home_directory = /home/%u 
-</file> 
- 
-権限変更 
 <code> <code>
-sudo chmod 600 /etc/sssd/sssd.conf+getent passwd taro 
 +taro:x:10000:10000:Taro Yamada:/home/taro:/bin/bash
 </code> </code>
  
-NSS設定 
 <code> <code>
-sudo vim /etc/nsswitch.conf+id taro
 </code> </code>
-<file> +  * uidgidが見えます。
-(略) +
-passwd:         files systemd sss +
-group:          files systemd sss +
-shadow:         files systemd sss +
-(略) +
-</file> +
-普通はくにいじる必要ないです。+
  
  
-ムディレクトリの生成+ザーに切り替えるには 
 <code> <code>
-sudo apt install oddjob-mkhomedir+su taro
 </code> </code>
  
  
-PAM設定 
-<code> 
-$ sudo pam-auth-update 
-</code> 
-  * 「SSS Authentication」を有効化(通常は自動で有効化済み) 
  
 +=== おまけ ===
 +
 +ラズパイ5で組んだクラスタマシンで実行すると、追加したtaroのログインに失敗します。
  
-SSSD起動 
 <code> <code>
-sudo systemctl restart sssd +su - taro 
-$ sudo systemctl enable sssd+Password:  
 +su: Authentication failure
 </code> </code>
  
- +/var/log/syslogを見ると 
-ユーザーがか確認+<file> 
 +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 
 +</file> 
 +となっていたので、AppAmorを修正しました。
  
 <code> <code>
-getent passwd taro+sudo nano /etc/apparmor.d/unix-chkpwd
 </code> </code>
-  * なにも表示されなかったら失敗しています。+<file> 
 +(略) 
 +  include if exists <local/unix-chkpwd>
  
 +  /att/unix-chkpwd/run/nslcd/socket rw,   #この行を追加
 +}
 +</file>
 <code> <code>
-id taro+sudo apparmor_parser -r /etc/apparmor.d/unix-chkpwd
 </code> </code>
-  * uidとgidが見えます。 
  
  
-ユーザーに切り替えるには 
  
-<code> +====== 参考資料 ====== 
-$ su - taro +
-</code>+
  
 +  * https://server-network-note.net/2022/11/openldap-client-ubuntu22-04lts-server/
 +  * https://zenn.dev/iasl/articles/1d35c87a66ee35
自作クラスタ計算機/openldapを使ったldapサーバの基本設定.1778490336.txt.gz · Last modified: 2026/05/11 18:05 by koudai