2012年3月8日木曜日

LDAPの初期化(再設定)

  1. ldap(slapd)を停止する。
  2. [root@hoge ~]# service ldap stop
    slapd を停止中:                        [ OK ]
    [root@hoge ~]#
    (レプリケーションの場合は、スレーブを先に停止させる。)

  3. slapd.conf等の必要編集を行う。slaptestも実施しておく

  4. ldapデータベースを物理的に削除する。
  5. /var/lib/ldap フォルダの中の DB_CONFIG 以外を削除する。
    ※こちらの設定では、/var/lib/ldap にldapデータベースが登録される設定のため。
      /etc/openldap/slapd.conf で指定

    [root@hoge ldap]# ls -il
    合計 1208
    131133 -rw-r----- 1 root root      921  1月 24 08:14 DB_CONFIG
    131116 -rw------- 1 ldap ldap    24576  3月  7 10:21 __db.001
    131117 -rw------- 1 ldap ldap   278528  3月  7 10:21 __db.002
    131118 -rw------- 1 ldap ldap   270336  3月  7 10:21 __db.003
    131119 -rw------- 1 ldap ldap    98304  3月  7 10:21 __db.004
    131120 -rw------- 1 ldap ldap   352256  3月  7 10:21 __db.005
    131121 -rw------- 1 ldap ldap    24576  3月  7 10:21 __db.006
    131082 -rw-r--r-- 1 ldap ldap     4096  3月  7 10:21 alock
    131126 -rw------- 1 ldap ldap     8192  1月 28 20:48 cn.bdb
    131124 -rw------- 1 ldap ldap     8192  1月 28 20:48 dn2id.bdb
    131132 -rw------- 1 ldap ldap     8192  1月 28 20:48 gidNumber.bdb
    131123 -rw------- 1 ldap ldap    32768  1月 31 20:54 id2entry.bdb
    131122 -rw------- 1 ldap ldap 10485760  3月  7 10:21 log.0000000001
    131130 -rw------- 1 ldap ldap     8192  1月 22 20:00 loginShell.bdb
    131129 -rw------- 1 ldap ldap     8192  1月 28 20:48 memberUid.bdb
    131125 -rw------- 1 ldap ldap     8192  1月 28 20:48 objectClass.bdb
    131127 -rw------- 1 ldap ldap     8192  1月 24 21:44 ou.bdb
    131128 -rw------- 1 ldap ldap     8192  1月 22 20:00 uid.bdb
    131131 -rw------- 1 ldap ldap     8192  1月 22 20:00 uidNumber.bdb
    
    削除後の内容
    [root@hoge ldap]# ls -il
    合計 8
    131133 -rw-r----- 1 root root 921  1月 24 08:14 DB_CONFIG
    [root@hoge ldap]# 
    

  6. ldap(slapd)を起動する。
  7. [root@hoge ~]# service ldap start
    slapd の設定ファイルをチェック中:  config file testing succeeded
                                                           [  OK  ]
    slapd を起動中:                                            [  OK  ]
    [root@hoge ~]# 
    
  8. 初期情報を登録
  9. 基本データ(base.ldif)
    dn: dc=example,dc=com
    objectClass: dcObject
    objectClass: organization
    dc: example
    o: example
    
    dn: ou=People,dc=example,dc=com
    objectClass: organizationalUnit
    ou: People
    
    dn: ou=Group,dc=example,dc=com
    objectClass: organizationalUnit
    ou: Group
    
    dn: ou=Hosts,dc=example,dc=com
    objectClass: organizationalUnit
    ou: Hosts
    ldapaddコマンドでLDIFファイルの内容を登録します。
    
    # ldapadd -x -D "cn=Manager,dc=example,dc=com" -W -f base.ldif 
    Enter LDAP Password:
    adding new entry "dc=horisawa,dc=info"
    
    adding new entry "cn=Manager,dc=horisawa,dc=info"
    
    adding new entry "ou=People,dc=horisawa,dc=info"
    
    adding new entry "ou=Group,dc=horisawa,dc=info"
    
    adding new entry "ou=Hosts,dc=horisawa,dc=info"
    
    
    ユーザ/グループの登録(既存unixアカウントをそのまま移行する)
    • /etc/passwdのアカウントをLDAPへ登録する。
    • /etc/passwdから一般ユーザのみを抽出するようuidが500番台を抽出。
      [root@hoge openldap]# grep :5[0-9][0-9] /etc/passwd > users-list.txt
      
      /migrate_passwd.pl を利用してLDIFファイルを作成。
      [root@hoge openldap]# /usr/share/openldap/migration/migrate_passwd.pl users-list.txt > users.ldif
      
      ldapaddコマンドでLDIFファイルの内容を登録します。
      
      # ldapadd -x -D "cn=Manager,dc=example,dc=com" -W -f user.ldif 
      Enter LDAP Password:
      adding new entry "uid=hoge01,ou=People,dc=example,dc=com"
      
      adding new entry "uid=hoge02,ou=People,dc=example,dc=com"
      
      
    • /etc/groupのグループをLDAPへ登録する
    • /etc/groupから一般グループのみを抽出するようgidが500番台を抽出。
      [root@hoge openldap]# grep :5[0-9][0-9] /etc/group > groups-list.txt
      
      /migrate_passwd.pl を利用してLDIFファイルを作成。
      [root@hoge openldap]# /usr/share/openldap/migration/migrate_group.pl groups-list.txt > groups.ldif
      
      ldapaddコマンドでLDIFファイルの内容を登録します。
      
      # ldapadd -x -D "cn=Manager,dc=example,dc=com" -W -f user.ldif 
      Enter LDAP Password:
      adding new entry "cn=hoge01,ou=Group,dc=example,dc=com"
      
      adding new entry "cn=hoge02,ou=Group,dc=example,dc=com"
      
      adding new entry "cn=hoge03,ou=Group,dc=example,dc=com"
      
      adding new entry "cn=hoge04,ou=Group,dc=example,dc=com"
      
      

smbldap-toolsを利用して登録を行う。

基本データ(base.ldif)を登録した後に、smbldap-toolsを利用してユーザ・グループおよび管理者情報の登録を行う。
事前にsambaが正しく設定されているものとして下記にコマンドを実行する。

基本データ(base.ldif)の登録
[root@hoge ldif]# ldapadd -x -D "cn=Manager,dc=horisawa,dc=info" -W -f base.ldif
Enter LDAP Password: 
adding new entry "dc=horisawa,dc=info"

adding new entry "cn=Manager,dc=example,dc=com"

adding new entry "ou=Users,dc=example,dc=com"

adding new entry "ou=Groups,dc=example,dc=com"

adding new entry "ou=Computers,dc=example,dc=com"

[root@hoge ldif]# 

グループ(groups.ldif)の登録
[root@hoge ldif]# ldapadd -x -D "cn=Manager,dc=horisawa,dc=info" -W -f groups.ldif

ユーザー(users.ldif)の登録
[root@hoge ldif]# ldapadd -x -D "cn=Manager,dc=horisawa,dc=info" -W -f users.ldif
smbldap-toolsでデータを登録する。
[root@hoge ~]# smbldap-populate -a Administrator -b Guest
Populating LDAP directory for domain EXAMPLE (S-1-5-21-2725434548-1602857623-2035637331)
(using builtin directory structure)

entry dc=example,dc=com already exist. 
entry ou=Users,dc=example,dc=com already exist. 
entry ou=Groups,dc=example,dc=com already exist. 
entry ou=Computers,dc=example,dc=com already exist. 
adding new entry: ou=Idmap,dc=example,dc=com
adding new entry: uid=Administrator,ou=Users,dc=example,dc=com
adding new entry: uid=Guest,ou=Users,dc=example,dc=com
adding new entry: cn=Domain Admins,ou=Groups,dc=example,dc=com
adding new entry: cn=Domain Users,ou=Groups,dc=example,dc=com
adding new entry: cn=Domain Guests,ou=Groups,dc=example,dc=com
adding new entry: cn=Domain Computers,ou=Groups,dc=example,dc=com
adding new entry: cn=Administrators,ou=Groups,dc=example,dc=com
adding new entry: cn=Account Operators,ou=Groups,dc=example,dc=com
adding new entry: cn=Print Operators,ou=Groups,dc=example,dc=com
adding new entry: cn=Backup Operators,ou=Groups,dc=example,dc=com
adding new entry: cn=Replicators,ou=Groups,dc=example,dc=com
adding new entry: sambaDomainName=example,dc=example,dc=com

Please provide a password for the domain Administrator: 
Changing UNIX and samba passwords for Administrator
New password: 
Retype new password: 
[root@hoge ~]# 

初期データ投入がうまくいったら、ドメイン管理者アカウント(Administrator)のパスワードを設定する。PDCマシン上でrootになり、以下を1度だけ実行すればよい。

[root@hoge ~]# smbldap-passwd Administrator
Changing UNIX and samba passwords for Administrator
New password: 
Retype new password: 
[root@hoge ~]# 

一般ユーザーを追加する。

[root@hoge samba]# smbldap-passwd testuser
Changing UNIX password for testuser
New password: 
Retype new password: 
[root@hoge samba]# 

SASL認証設定ファイル編集

smbldap-useraddで追加したユーザがSMTP-Authが行えるようにする

# vi /etc/sysconfig/saslauthd
MECH=shadow
↓
MECH=pam
確認事項およびエラー等の注意事項

ログを確認したら下記のようにエラーが発生していた。(/var/log/samba/log.smbd)

[2012/04/26 18:41:59.611756,  2] lib/smbldap.c:1018(smbldap_open_connection)
  smbldap_open_connection: connection opened
[2012/04/26 18:41:59.611978,  0] passdb/secrets.c:350(fetch_ldap_pw)
  fetch_ldap_pw: neither ldap secret retrieved!
[2012/04/26 18:41:59.612175,  0] lib/smbldap.c:1180(smbldap_connect_system)
  ldap_connect_system: Failed to retrieve password from secrets.tdb
[2012/04/26 18:41:59.612359,  1] lib/smbldap.c:1409(another_ldap_try)
  Connection to LDAP server failed for the 5 try!
[root@ora02 samba]# 

というエラーが出されていました.secrets.tdb はそれぞれのローカルマシンで作成されるもので,そこに,LDAP のパスワードを登録しないと LDAP サーバにて認証が通りません.そこで,secrets.tdb に LDAP の管理者パスワードを登録する必要があります.次のコマンドを実行します.

[root@hoge ~]# smbpasswd -W
Setting stored password for "cn=Administrator,ou=Users,dc=example,dc=com" in secrets.tdb
New SMB password:        (LDAPの管理用パスワードを入力)
Retype new SMB password: (LDAPの管理用パスワードをもう一度入力)
[root@hoge ~]# 
今回の設定で関連するファイルは下記の通りです。
・/etc/openldap/slapd.conf (ldapの基本設定)
・/etc/openldap/ldif/base.ldif (作成した基本情報)
・/etc/samba/smb.conf (sambaの基本設定)
・/etc/smbldap-tools/smbldap.conf (変換を行うための基本情報が設定)
・/etc/smbldap-tools/smbldap_bind.conf (masterDNとmasterPwを設定)

0 件のコメント:

コメントを投稿