OpenLDAP構築2
13 1 月 2008各仮想サーバーのネットワークでユーザーのアカウント情報を共有できるようにLDAPサーバーを構築します。 マスターサーバー: CentOS5 スレーブサーバー: CentOS5 サーバー機が1台のときもこれでOKです。その場合はマスターサーバーの設定を参照してください なお、当サイトではレプリケーション方式では設定しておりません。 バックアップサーバーがないと不安とかスレーブサーバーのスペックに余裕のある方は 信頼性の高いLDAPシステムを構築する とか、CentOS 5+OpenLDAPでLDAPサーバの冗長化環境を構築 を参照してください。 まずは、マスターサーバーの設定からします。
これからいろいろとファイルを設定します。 赤字 はおのおの環境に合わせてください。 緑 は注意するところです 青 はコマンドです 黄 は説明等です まずOpenLDAP関係をインストールする↓ # yum -y install openldap* 管理者パスワード生成する↓ # slappasswd -s password -h {MD5} ← passwprd は任意の文字 {MD5}********************* ← ↓で使うので控えておく 設定ファイル①修正↓ # vi /etc/openldap/slapd.conf suffix "dc=lunq,dc=net" rootdn "cn=Manager,dc=lunq,dc=net" rootpw {MD5}************************ 近いものがあるのでその辺に上記で生成したパスワードを追加 ↓ 最終行に以下を追加 ------------------------------ここから------------------------------ access to attrs=userPassword by self write by dn="cn=Manager,dc=lunq,dc=net" write by anonymous auth by * none access to attrs=userPassword by anonymous auth by dn="cn=Admin,dc=lunq,dc=net" read by * none access to * by dn="cn=Manager,dc=lunq,dc=net" write by self write by * read access to * by self =rwcsx by dn="cn=Admin,dc=lunq,dc=net" =rwcsx by * read ------------------------------ここまで------------------------------ 設定ファイル②修正↓ # vi /etc/openldap/ldap.conf BASE dc=lunq, dc=net ← コメントアウトされていれば解除する # vi /etc/ldap.conf base dc=lunq,dc=net ← コメントアウトされていれば解除する LDAPを起動する↓ # /etc/rc.d/init.d/ldap start Checking configuration files for slapd: /etc/openldap/slapd.conf: line 99: rootdn is always granted unlimited privileges. /etc/openldap/slapd.conf: line 104: rootdn is always granted unlim ited privileges. config file testing succeeded[ OK ] Starting slapd:[ OK ] 自動起動設定↓ # chkconfig ldap on 設定ファイル③修正↓ # vi /usr/share/openldap/migration/migrate_common.ph $DEFAULT_MAIL_DOMAIN = "lunq.net"; ← 71行目付近 $DEFAULT_BASE = "dc=lunq,dc=net"; ← 74行目付近 設定ファイル④新規作成↓ # vi base.ldif ------------------------------ここから------------------------------ dn: dc=lunq,dc=net objectClass: dcObject objectClass: organization o: lunq Organization dc: lunq dn: cn=Manager, dc=lunq,dc=net objectClass: organizationalRole cn: Manager dn: ou=People,dc=lunq,dc=net objectClass: organizationalUnit ou: People dn: ou=Group,dc=lunq,dc=net objectClass: organizationalUnit ou: Group ------------------------------ここまで------------------------------ ↓初期設定ファイルを読み込ませる # ldapadd -h localhost -x -D "cn=Manager,dc=lunq,dc=net" -W -f base.ldif Enter LDAP Password: ← 管理者パスワード入力 adding new entry "dc=lunq,dc=net" adding new entry "cn=Manager, dc=lunq,dc=net" adding new entry "ou=People,dc=lunq,dc=net" adding new entry "ou=Group,dc=lunq,dc=net" ↑成功 ※ 設定ファイルがおかしいと↓の失敗例のようになってしまう。 失敗してしまったら設定ファイルを見直す、それでもわからなければ手動登録に進む。 ↓失敗例 # ldapadd -h localhost -x -D "cn=manager,dc=lunq,dc=net" -W -f base.ldif Enter LDAP Password: ldapadd: attributeDescription "dn": (possible missing newline after line 5 of entry "dc=lunq,dc=net"?) ldapadd: attributeDescription "dn": (possible missing newline after line 8 of entry "dc=lunq,dc=net"?) ldapadd: attributeDescription "dn": (possible missing newline after line 11 of entry "dc=lunq,dc=net"?) adding new entry "dc=lunq,dc=net" ldap_add: Type or value exists (20) additional info: objectClass: value #3 provided more than once ※ 手動で登録をする場合。↓ # ldapadd -h localhost -x -D "cn=Manager,dc=lunq,dc=net" -W Enter LDAP Password: ← 管理用パスワード応答 dn: dc=lunq,dc=net ← 入力後に Enter objectClass: dcObject ← 入力後に Enter objectclass: organization ← 入力後に Enter dc: lunq ← 入力後に Enter o: lunq Organization ← 入力後に Enter 「 Ctrl 」 + 「 D 」 押下 adding new entry "dc=lunq,dc=net" dn: cn=Manager,dc=lunq,dc=net ← 入力後に Enter objectClass: organizationalRole ← 入力後に Enter cn:Manager ← 入力後に Enter 「 Ctrl 」 + 「 D 」 押下 adding new entry "cn=Manager,dc=lunq,dc=net" dn: ou=People,dc=lunq,dc=net ← 入力後に Enter objectClass: organizationalUnit ← 入力後に Enter ou: People ← 入力後に Enter 「 Ctrl 」 + 「 D 」 押下 adding new entry "ou=People,dc=lunq,dc=net" dn: ou=Group,dc=lunq,dc=net ← 入力後に Enter objectClass: organizationalUnit ← 入力後に Enter ou: Group ← 入力後に Enter 「 Ctrl 」 + 「 D 」 押下 adding new entry "ou=Group,dc=lunq,dc=net" 「 Ctrl 」 + 「 D 」 押下でぬける ↓LDAPユーザー認証方式にLDAPを追加する。 # authconfig-tui
「 LDAP を使用 」 と 「 LDAP 認証を使用 」 に※印をつける 次を選択する
サーバー: 127.0.0.1 を入力 ベース DN: dc=lunq,dc=net を入力 OKを選択する 登録されているかの確認をする↓ # ldapsearch -x -b 'dc=lunq,dc=net' # extended LDIF # # LDAPv3 # base <dc=hoshu,dc=net> with scope subtree # filter: (objectclass=*) # requesting: ALL # # lunq.net dn: dc=lunq,dc=net objectClass: dcObject objectClass: organization dc: lunq o: lunq Corporation # Manager, lunq.net dn: cn=Manager,dc=lunq,dc=net objectClass: organizationalRole cn: Manager # People, lunq.net dn: ou=People,dc=lunq,dc=net objectClass: organizationalUnit ou: People # Group, lunq.net dn: ou=Group,dc=lunq,dc=net objectClass: organizationalUnit ou: Group # search result search: 2 result: 0 Success # numResponses: 5 # numEntries: 4 登録するのにパスが長くめんどくさいので/root/直下にリンクを作成する 手動登録のときに使用する。 # ln -s /usr/share/openldap/migration/migrate_passwd.pl /root/migrate_passwd # ln -s /usr/share/openldap/migration/migrate_group.pl /root/migrate_group のちのち、Postfixでメールサーバー(LDAP)を構築するときのために 下記の内容に変更するためのスクリプト作成する。 初期で passwd.ldif(パスワード登録ファイル)を作成すると、こういう状態になる↓ --------------------ここから-------------------- dn: uid=hogehoge,ou=People,dc=lunq,dc=net uid: hogehoge cn: hogehoge objectClass: account ← 削除 objectClass: posixAccount objectClass: top objectClass: shadowAccount userPassword: {crypt}xxxxxxxxxxxxxxxxxxxx shadowLastChange: 13782 shadowMax: 99999 shadowWarning: 7 loginShell: /bin/bash uidNumber: 500 gidNumber: 500 homeDirectory: /home/hogehoge --------------------ここまでを-------------------- ↑上記の内容で登録すると後々 Postfix でメールサーバーを構築するときに 全ユーザーを変更することになるので↓のように変更しなければならない ※LDAP & Postfix 仮想メールユーザー作成 でメールサーバーを設定する場合 --------------------ここから-------------------- dn: uid=hogehoge,ou=People,dc=lunq,dc=net uid: hogehoge cn: hogehoge objectClass: person ← 追加 objectClass: organizationalPerson ← 追加 objectClass: inetOrgPerson ← 追加 objectClass: posixAccount objectClass: top objectClass: shadowAccount userPassword: {crypt}xxxxxxxxxxxxxxxxxxxx postalAddress: cn=hogehoge,ou=Group,dc=lunq,dc=net ← 追加 shadowLastChange: 13782 shadowMax: 99999 shadowWarning: 7 loginShell: /bin/bash uidNumber: 500 gidNumber: 500 homeDirectory: /home/hogehoge givenName: hogehoge ← 追加 sn: hogehoge ← 追加 gecos: Lunq User ← 追加 mail: hogehoge@lunq.net ← 追加 --------------------ここまで-------------------- いちいちめんどいので、登録用ファイルを編集する。 ※ Postfix と連携させない方は下記は不要。 ファイル修正① # vi /usr/share/openldap/migration/migrate_common.ph sub getsuffix ← 201行目前後 { ・ ・ } ↓ 上記の下のほうに下記を追加 --------------------ここから-------------------- sub gatsuffix ← 214行目前後から { local($program) = shift(@_); local($nc); $program =~ s/^migrate_(.*)¥.pl$/$1/; $nc = $NAMINGCONTEXT{'group'}; if ($nc eq "") { return $DEFAULT_BASE; } else { return $nc . ',' . $DEFAULT_BASE; } } ← ここまで --------------------ここまで-------------------- ※ Postfix と連携させない方は下記は不要。 ファイル修正② # vi /usr/share/openldap/migration/migrate_passwd.pl --------------------ここから-------------------- $PROGRAM = "migrate_passwd.pl"; $NAMINGCONTEXT = &getsuffix($PROGRAM); $PNAMINGCONTEXT = &gatsuffix($PROGRAM); ← 44行目前後に追加 print $HANDLE "objectClass: account¥n"; ← 135行目前後 ↓ 上記の内容を下記のように変更 print $HANDLE "objectClass: person¥n"; print $HANDLE "objectClass: organizationalPerson¥n"; ← 138行目前後に追加 print $HANDLE "objectClass: inetOrgPerson¥n"; ← 139行目前後に追加 print $HANDLE "objectClass: posixAccount¥n"; print $HANDLE "objectClass: top¥n"; } else { print $HANDLE "userPassword: {crypt}$pwd¥n"; ← 150行目前後 print $HANDLE "postalAddress: cn=$user,$PNAMINGCONTEXT¥n"; ← 追加 } } else { print $HANDLE "homeDirectory:¥n"; ← 177行目前後 } print $HANDLE "givenName: $user¥n"; ← 上記の下に追加 179行目前後から print $HANDLE "sn: $user¥n"; ← 追加 print $HANDLE "gecos: Lunq User¥n"; ← 追加 print $HANDLE "mail: $user¥@$DEFAULT_MAIL_DOMAIN¥n"; ← 追加 if ($pwd) { print $HANDLE "userPassword: {crypt}$pwd¥n"; ← 210行目前後 print $HANDLE "postalAddress: cn=$user,$PNAMINGCONTEXT¥n"; ← 追加 } --------------------ここまで-------------------- |
次に、スレーブサーバーの設定をします。 サーバー機が1台のときは次に進んでください。 なお、当サイトではレプリケーション方式では設定しておりません。 バックアップサーバーがないと不安とかスレーブサーバーのスペックに余裕のある方は 信頼性の高いLDAPシステムを構築する とか、CentOS 5+OpenLDAPでLDAPサーバの冗長化環境を構築 を参照してください。
既存のユーザーとグループをLDAPサーバーに登録 ※マスターサーバー と スレーブサーバー のシステムユーザーが別々の場合どちらのサーバーでも行う。
新規ユーザーの登録手順 (マスターサーバーで行う)↓
手動登録の手順 ※ 一括登録したければ システム+LDAPユーザー一括登録用スクリプト作成 をご利用ください。 ↓ システムユーザーを登録する # useradd -s /sbin/nologin honyarara # passwd honyarara Changing password for user honyarara. New UNIX password: ← ユーザーのパスワードを入力 Retype new UNIX password: ← ユーザーのパスワード確認 passwd: all authentication tokens updated successfully. ↓ LDAP用グループ情報ファイル生成 # grep ^honyarara /etc/group > group # ./migrate_group group > group.ldif ↓ LDAP用パスワード情報ファイル生成 # grep ^honyarara /etc/passwd > passwd # ./migrate_passwd passwd > passwd.ldif ↓ LDAPサーバーにパスワード情報を登録 # ldapadd -h localhost -x -D "cn=Manager,dc=lunq,dc=net" -W -f passwd.ldif Enter LDAP Password: ← 管理用パスワード応答 adding new entry "uid=honyarara,ou=People,dc=lunq,dc=net" ↓ LDAPサーバーにグループ情報を登録 # ldapadd -h localhost -x -D "cn=Manager,dc=lunq,dc=net" -W -f group.ldif Enter LDAP Password: ← 管理用パスワード応答 adding new entry "cn=honyarara,ou=Group,dc=lunq,dc=net" ↓ グループ登録情報の確認 # ldapsearch -x -b 'cn=honyarara,ou=Group,dc=lunq,dc=net' # extended LDIF # # LDAPv3 # base <cn=honyarara,ou=Group,dc=lunq,dc=net> with scope subtree # filter: (objectclass=*) # requesting: ALL # # honyarara, Group, lunq.net dn: cn=honyarara,ou=Group,dc=lunq,dc=net objectClass: posixGroup objectClass: top cn: honyarara gidNumber: 5104 # search result search: 2 result: 0 Success # numResponses: 2 # numEntries: 1 ↓ ユーザー登録情報の確認 # ldapsearch -x -b 'uid=honyarara,ou=People,dc=lunq,dc=net' # extended LDIF # # LDAPv3 # base <uid=honyarara,ou=People,dc=lunq,dc=net> with scope subtree # filter: (objectclass=*) # requesting: ALL # # honyarara, People, lunq.net dn: uid=honyarara,ou=People,dc=lunq,dc=net uid: honyarara cn: honyarara objectClass: person objectClass: organizationalPerson objectClass: inetOrgPerson objectClass: posixAccount objectClass: top objectClass: shadowAccount postalAddress: cn=honyarara,ou=Group,dc=lunq,dc=net shadowLastChange: 13874 shadowMax: 99999 shadowWarning: 7 loginShell: /sbin/nologin uidNumber: 5104 gidNumber: 5104 homeDirectory: /home/honyarara givenName: honyarara sn: honyarara gecos: Lunq User mail: honyarara@lunq.net # search result search: 2 result: 0 Success # numResponses: 2 # numEntries: 1 |
LDAPサーバーに登録したユーザーとグループを削除する場合。 (マスターサーバーで行う)
手動削除の手順 ※ 一括削除したければ システム+LDAPユーザー一括登録用スクリプト作成 をご利用ください。 # ユーザー削除 # userdel honyarara # ユーザーディレクトリ削除 # rm -rf /home/honyarara # LDAPサーバー削除 # ldapdelete -h localhost -x -D 'cn=Manager,dc=lunq,dc=net' -W "cn=honyarara,ou=Group,dc=lunq,dc=net" # ldapdelete -h localhost -x -D 'cn=Manager,dc=lunq,dc=net' -W "uid=honyarara,ou=People,dc=lunq,dc=net" # グループ登録情報確認 # ldapsearch -x -b 'cn=honyarara,ou=Group,dc=lunq,dc=net' # extended LDIF # # LDAPv3 # base <cn=moekichi,ou=Group,dc=lunq,dc=net> with scope subtree # filter: (objectclass=*) # requesting: ALL # # search result search: 2 result: 32 No such object ← 削除したユーザーが検索できない matchedDN: ou=Group,dc=lunq,dc=net # numResponses: 1 # ユーザー登録情報確認 # ldapsearch -x -b 'uid=honyarara,ou=People,dc=lunq,dc=net' # extended LDIF # # LDAPv3 # base <uid=moekichi,ou=People,dc=lunq,dc=net> with scope subtree # filter: (objectclass=*) # requesting: ALL # # search result search: 2 result: 32 No such object ← 削除したユーザーが検索できない matchedDN: ou=People,dc=lunq,dc=net # numResponses: 1 |
No comments yet



