旧コンテンツ CentOS5

LDAPにデータ登録

LDAPサーバへのデータ登録は基本LDIFファイルを作って、それをldapaddコマンドで登録する形式を取ります。
各データには主キーのようなもの(dn)があり、これを目印にデータ更新(ldapmodify)とか削除(ldapdelete)とかが行われる。

*LDAP Adminを使えばGUI画面からデータ登録もできますが、まずは基本のコマンドラインで操作してみる。

[root@ldap ~]# yum -y install openldap-clients

トップドメイン登録

LDAPサーバを作ってからまず初めに行うのはトップドメインの登録です。
下記ファイル(domain.ldif)には、

  • トップドメインの定義(dn: dc=chaperone,dc=jp)
  • 管理者の定義(dn: cn=Manager,dc=chaperone,dc=jp)
  • ユーザの定義枠(dn: ou=People,dc=chaperone,dc=jp)
  • グループの定義枠(dn: ou=Group,dc=chaperone,dc=jp)

が含まれてます。

[root@ldap ~]# vi domain.ldif
#TOPドメインの定義
dn: dc=chaperone,dc=jp
objectClass: dcObject
objectClass: organization
dc: chaperone
o: chaperone
description: chaperone Ldap
 
#管理者の定義
dn: cn=Manager,dc=chaperone,dc=jp
objectClass: organizationalRole
cn:Manager
description: Direcotry Manager
 
#people(/etc/passwdなもの)の定義
dn: ou=People,dc=chaperone,dc=jp
ou: people
objectclass: organizationalUnit
 
#group(/etc/groupなもの)の定義
dn: ou=Group,dc=chaperone,dc=jp
ou: group
objectclass: organizationalUnit
[root@ldap ~]#

*コピーアンドペーストする際、空行に余計なデータが入っている可能性があるので要注意
このデータをldapaddコマンドを使ってLDAPサーバに追加します

[root@ldap ~]# ldapadd -x -D "cn=Manager,dc=chaperone,dc=jp" -W -f domain.ldif
Enter LDAP Password:
adding new entry "dc=chaperone,dc=jp"
 
adding new entry "cn=Manager,dc=chaperone,dc=jp"
 
adding new entry "ou=People,dc=chaperone,dc=jp"
 
adding new entry "ou=Group,dc=chaperone,dc=jp"
 
[root@ldap ~]#

*slapdが停止していれば、slapadd -l domain.ldifで認証を経ずに登録もできる
パスワードが正しいとデータが登録されます。
LDAP Browserからは下記のように見えます。
2012y08m04d_204043319.png
LDAP Adminだと
2014y01m23d_230325842.png
一端追加したデータを削除するにはldapdeleteコマンドを使います。

*Group部分を削除
[root@ldap ~]# ldapdelete -x -D "cn=Manager,dc=chaperone,dc=jp" -W    "ou=Group,dc=chaperone,dc=jp"
Enter LDAP Password:
[root@ldap ~]#
 
*"dc=chaperone,dc=jp"配下すべてを削除
[root@ldap ~]# ldapdelete -x -D "cn=Manager,dc=chaperone,dc=jp" -W -r "dc=chaperone,dc=jp"
Enter LDAP Password:
[root@ldap ~]#

グループ登録

グループの枠組みは作られたので、実際にグループの値を登録します。staffとかxrayとかadminとかのグループ。
同じようにまずLDIFファイル(group.ldif)を作ります。複数のデータを登録するには空行を挟みます。

[root@ldap ~]# vi group.ldif
dn: cn=staff,ou=group,dc=chaperone,dc=jp
objectClass: posixGroup
cn: staff
gidNumber: 2001
 
dn: cn=xray,ou=group,dc=chaperone,dc=jp
objectClass: posixGroup
cn: xray
gidNumber: 2002
 
dn: cn=admin,ou=group,dc=chaperone,dc=jp
objectClass: posixGroup
cn: admin
gidNumber: 2003
[root@ldap ~]#

そして同様にldapaddコマンドでデータを登録します

[root@ldap ~]# ldapadd -x -D "cn=Manager,dc=chaperone,dc=jp" -W -f group.ldif
Enter LDAP Password:
adding new entry "cn=staff,ou=group,dc=chaperone,dc=jp"
 
adding new entry "cn=xray,ou=group,dc=chaperone,dc=jp"
 
adding new entry "cn=admin,ou=group,dc=chaperone,dc=jp"
 
[root@ldap ~]#

LDAP Browserから参照すると。
2012y08m04d_211201991.png
LDAP Adminだと
2014y01m24d_235351585.png

ユーザ登録

グループが出来たので、次はユーザです。このユーザはLDAPの認証を経由してほかのLinuxでも利用されるとします。
例の如くLDIFファイル(foo.ldif)。今回は一人に一枚のLDIFファイルとします。
内容はPeopleに対してはユーザfooの追加であるが、Groupに対しては所属させるstaffへの修正となる事に注意
*userPasswordの値はslappasswdコマンドで作成

[root@ldap ~]# vi foo.ldif
dn: uid=foo,ou=people,dc=chaperone,dc=jp
changetype: add
objectClass: person
objectClass: posixAccount
objectClass: inetOrgPerson
objectClass: shadowAccount
uid: foo
cn: foo chaperone
sn: foo
givenName: chaperone
mail: foo@chaperone.jp
uidNumber: 3000
gidNumber: 2001
homeDirectory: /home/foo
userPassword: {SSHA}8hEnZaoWpSWfcTXYT8YMG2IVc23vwExN
loginShell: /bin/bash
shadowLastChange: 10000
shadowMin: 0
shadowMax: 99999
shadowWarning: 14
shadowInactive: 99999
shadowExpire: -1
 
dn: cn=staff,ou=Group,dc=chaperone,dc=jp
changetype: modify
add: memberUid
memberUid: foo
[root@ldap ~]#

そして同様にldapaddコマンドでデータを登録します

[root@ldap ~]# ldapadd -x -D "cn=Manager,dc=chaperone,dc=jp" -W -f foo.ldif
Enter LDAP Password:
adding new entry "uid=foo,ou=people,dc=chaperone,dc=jp"
 
modifying entry "cn=staff,ou=Group,dc=chaperone,dc=jp"
 
[root@ldap ~]#

確認してみる。
ou=people部分
2012y08m04d_230332087.png
2014y01m24d_235651497.png
ou=group部分
2012y08m04d_230523559.png
2014y01m24d_235914736.png

autofs登録

LDAPでautofsを扱う。
簡単にstatic nfsでnfsサーバをマウントするならこの設定は不要である。
っが、複数のnfsサーバにホームディレクトリを分散させているとautofsで動的にnfsマウントさせる必要がある。
ここではautofsを使うことを前提に、複数のnfsサーバを利用する/homeのほかに、staticなnfsマウントをする/Applも用意する。

まずはslapd.confにautofsのLDAPスキーマがないのでそれを追加

[root@ldap ~]# yum -y install autofs
[root@ldap ~]# chkconfig autofs off     *LDAPサーバでautofsを使わないので

このautofsパッケージの中にLDAP向けスキーマファイル(/usr/share/doc/autofs-5.0.5/autofs.schema)がある。
これを/etc/openldap/slapd.confinclude句に加えます。slapd.conf
その後、この新しいスキーマを反映させます。

[root@ldap ~]# /etc/init.d/slapd stop
slapd を停止中:                                            [  OK  ]
[root@ldap ~]#
[root@ldap ~]# slaptest -f /etc/openldap/slapd.conf -F /etc/openldap/slapd.d
config file testing succeeded
[root@ldap ~]#
[root@ldap ~]# chown -R ldap:ldap /etc/openldap/slapd.d/
[root@ldap ~]# chown -R ldap:ldap /var/lib/ldap
[root@ldap ~]# /etc/init.d/slapd start
slapd を起動中:                                            [  OK  ]
[root@ldap ~]#

auto.master、auto.home、auto.Applを用意する

次に、auto.master、auto.home、auto.Applの枠組み定義ファイル(autofs.ldif)を作ります。

[root@ldap ~]# vi cat autofs.ldif
dn:ou=auto.master,dc=chaperone,dc=jp
ou: auto.master
objectClass: top
objectClass: automountMap
 
dn: ou=auto.home,dc=chaperone,dc=jp
ou: auto.home
objectClass: top
objectClass: automountMap
 
dn: ou=auto.Appl,dc=chaperone,dc=jp
ou: auto.Appl
objectClass: top
objectClass: automountMap
[root@ldap ~]#

これを登録します

[root@ldap ~]# ldapadd -x -D "cn=Manager,dc=chaperone,dc=jp" -W -f autofs.ldif
Enter LDAP Password:
adding new entry "ou=auto.master,dc=chaperone,dc=jp"
 
adding new entry "ou=auto.home,dc=chaperone,dc=jp"
 
adding new entry "ou=auto.Appl,dc=chaperone,dc=jp"
 
[root@ldap ~]#

LDAP Adminで確認すると、
2014y01m25d_000100473.png
となる

auto.masterにauto.homeとauto.Applを登録

次に、auto.master枠にマウントポイント(auto.homeとauto.Appl)の情報を載せます。

[root@ldap ~]# vi auto.master.ldif
#auto.home
dn: cn=/home,ou=auto.master,dc=chaperone,dc=jp
objectClass: top
objectClass: automount
automountInformation: ldap:ou=auto.home,dc=chaperone,dc=jp  --timeout 60
cn: /home
 
#auto.Appl
dn: cn=/Appl,ou=auto.master,dc=chaperone,dc=jp
objectClass: top
objectClass: automount
automountInformation: ldap:ou=auto.Appl,dc=chaperone,dc=jp  --timeout 60
cn: /Appl
[root@ldap ~]#

そして登録。

[root@ldap ~]# ldapadd -x -D "cn=Manager,dc=chaperone,dc=jp" -W -f auto.master.ldif
Enter LDAP Password:
adding new entry "cn=/home,ou=auto.master,dc=chaperone,dc=jp"
 
adding new entry "cn=/Appl,ou=auto.master,dc=chaperone,dc=jp"
 
[root@ldap ~]#

これをLDAP Browserで確認すると
2012y08m06d_223147222.png
LDAP Adminだと
2014y01m25d_000404993.png
となります。

auto.home/auto.Applにエントリー追加

次にauto.home/auto.Applに値を入れます。

  • /home:複数のnfsサーバ(nfsサーバAnfsサーバB)にホームディレクトリが分散されている
    [root@ldap ~]# vi auto.home.ldif
    dn: cn=foo,ou=auto.home,dc=chaperone,dc=jp
    objectClass: top
    objectClass: automount
    automountInformation: -rw,fstype=nfs,soft,intr <NFSサーバA>:/home/foo
    cn: foo
     
    dn: cn=bar,ou=auto.home,dc=chaperone,dc=jp
    objectClass: top
    objectClass: automount
    automountInformation: -rw,fstype=nfs,soft,intr <NFSサーバB>:/home/bar
    cn: bar
    [root@ldap ~]#
  • /Appl:nfsサーバの一箇所をマウントする
    [root@ldap ~]# vi auto.Appl.ldif
    dn: cn=/,ou=auto.Appl,dc=chaperone,dc=jp
    objectClass: top
    objectClass: automount
    automountInformation: -rw,fstype=nfs,soft,intr <NFSサーバ>:/Appl/&
    cn: /
    [root@ldap ~]#

登録はいつもの通り

[root@ldap ~]# ldapadd -x -D "cn=Manager,dc=chaperone,dc=jp" -W -f auto.home.ldif
[root@ldap ~]# ldapadd -x -D "cn=Manager,dc=chaperone,dc=jp" -W -f auto.Appl.ldif

LDAP Adminで確認をすると
2014y01m25d_000641457.png
となる

NISマップからの移行

ユーザ登録に使ったfoo.ldifファイルには、ユーザパスワードを記述する部分がある。

(略)
homeDirectory: /home/foo
userPassword: {SSHA}8hEnZaoWpSWfcTXYT8YMG2IVc23vwExN    *この部分
loginShell: /bin/bash
(略)

この userPassword 項目の値は、(上記では)SHA-1アルゴリズムで暗号化されたパスワード文字列で書かれているが、これを

userPassword: {MD5}WA5cnfsFTtJIDDurfSTKzQ==

とか

userPassword: {CRYPT}nqRfsaOmdc/j.

に別のハッシュアルゴリズムで得られた暗号化パスワード文字列に変更できる。
NISが{MD5}を使っているのであれば、ypcat passwdのパスワード文字列の行頭に{MD5}を入れ、ldifファイルを作成すれば移行可能である。
autofsも同じで ypcat auto.home から auto.home.ldif をperlとかで作成できる。

パスワード変更LDIFファイル

LDAPに登録したパスワードを変更するには

[root@ldap ~]# vi foo.passwd.ldif
dn: uid=foo,ou=people,dc=chaperone,dc=jp
changetype: modify
replace: userPassword
userPassword: {SSHA}uYnVUyy1rYkd3FooYKdBIdBun5eGNA0T

として、このファイルを

[root@ldap ~]# ldapmodify -x -D "cn=Manager,dc=chaperone,dc=jp" -W -f foo.passwd.ldif

にて反映させる。


トップ   編集 添付 複製 名前変更     ヘルプ   最終更新のRSS
Last-modified: 2014-01-29 (水) 23:22:59 (1361d)