LDAPの利用(3/7)

3.LDAPによるLinuxの認証

一般的なLinuxのユーザー認証は,/etc/passwd,/etc/shadowの二つのファイルを使っています。 このLinuxサーバーでWindowsのファイル共有サービスやテレビ会議用サーバーを運用する場合は,それぞれ別に認証ファイルを用意する必要があります。これでは,一人の変更があったら,数箇所変更することになって,大変な手間となることが考えられます。LDAPを利用することで,これを避けることができるでしょう。以下に認証をLDAPに移行する方法を説明します。

(1)/usr/share/openldap/migration/migrate_common.ph ファイルの書き換えます。

ここでは,ドメイン名をikkzz.ed.jpとして説明していきます。

# Default DNS domain
#$DEFAULT_MAIL_DOMAIN = "padl.com";
$DEFAULT_MAIL_DOMAIN = "ikkzz.ed.jp";

# Default base
#$DEFAULT_BASE = "dc=padl,dc=com";
$DEFAULT_BASE = "dc=ikkzz,dc=ed,dc=jp";

(2)/etc/passwd ファイルから /tmp/passwd.ldif を作成します。

[root@ysava openldap]# cd /usr/share/openldap/migration/
[root@ysava migration]# ls

README                          migrate_fstab.pl
migrate_aliases.pl              migrate_group.pl
migrate_all_netinfo_offline.sh  migrate_hosts.pl
migrate_all_netinfo_online.sh   migrate_netgroup.pl
          :
          :
          :
migrate_automount.pl            migrate_rpc.pl
migrate_base.pl                 migrate_services.pl
migrate_common.ph               migrate_slapd_conf.pl
migrate_common.ph~              migration-tools.txt

[root@ysava migration]# ./migrate_passwd.pl  /etc/passwd  /tmp/passwd.ldif

Enterを押すと,passwd.ldifが出来上がります。このファイルを使ってLDAPにユーザーを登録します。
次に示すのは,passwd.ldifに書かれた一人分(ユーザ名:h162125)のデータです。

dn: uid=h162125,ou=People,dc=ikkzz,dc=ed,dc=jp
uid: h162125
cn: h162125
objectClass: account
objectClass: posixAccount
objectClass: top
objectClass: shadowAccount
userPassword: {crypt}$1$81590011$wnIuKlZxTn4DWQrTGHMY3/
shadowLastChange: 12518
loginShell: /bin/sh
uidNumber: 530
gidNumber: 503
homeDirectory: /home/h162125

(3)LDAPに登録します。

上で作ったldifファイルを使ってLDAPのデータベースに実際に登録します。次の例では,151(16進)件=337件を約1分で登録しました。

[root@ysava migration]# slapadd -v -l /tmp/passwd.ldif
        :
        :
        :
added: "uid=h162644,ou=People,dc=ikkzz,dc=ed,dc=jp" (0000014c)
added: "uid=h162645,ou=People,dc=ikkzz,dc=ed,dc=jp" (0000014d)
added: "uid=S54$,ou=People,dc=ikkzz,dc=ed,dc=jp" (0000014e)
added: "uid=s52$,ou=People,dc=ikkzz,dc=ed,dc=jp" (0000014f)
added: "uid=S51$,ou=People,dc=ikkzz,dc=ed,dc=jp" (00000150)
added: "uid=ikou,ou=People,dc=ikkzz,dc=ed,dc=jp" (00000151)

(4)slapdを再起動します。

slapdを認識させるためには,再起動が必要です。

[root@ysava migration]# /etc/init.d/slapd restart

(5)GQでの確認の様子

再起動前の図

再起動後の図
再起動前には3行しかなかったのに一気にデータが増えました。

LDAP側での準備ができたので次は,Linux側の準備をします。
まず,PAM(Pluggable Authentification Modules)という機構をインストールします。この機構をインストールすることで,各サービスは,ユーザー認証にLDAPのデータが使用可能になります。つまり,LDAPにユーザーのデータを入れておいて,各プログラムはLDAPからユーザーデータを引き出すようPAMに命じることで必要な認証を行うことになります。

(1)pam_ldap モジュールのインストール

通常はインストールされていますが,そうでない場合は次のようにしてください。

http://www/padl.com/oss/pam_ldap.html からダウンロードして解凍
#cd /ダウンロードしたディレクトリ/
#./configure
#make
#make install

(2)/etc/ldap.confの編集

base dc=の行を次のように編集します。

host 127.0.0.1
uri ldap://127.0.0.1
ldap_version 3
base dc=ikkzz,dc=ed,dc=jp
scope sub
timelimit 30
pam_filter objectclass=posixAccount
pam_login_attribute uid

(3)nss_ldap モジュールのインストール

通常はインストールされていますが,そうでない場合は次のようにしてください。

http://www/padl.com/oss/nss_ldap.html からダウンロードして解凍
ダウンロードしたディレクトリに移動
../configure
make
make install

(4)/etc/ldap.confの再編集

既存の次の行を,次のように変更してください。

nss_base_passwd ou=People,dc=ikkzz,dc=ed,dc=jp?one
nss_base_shadow ou=People,dc=ikkzz,dc=ed,dc=jp?one
nss_base_group ou=Group,dc=ikkzz,dc=ed,dc=jp?one

(5)/etc/nsswitch.confの編集

既存の3行を次のように変更します。

passwd: files ldap
shadow: files ldap
group: files ldap

前ページへ次ページへ