gihyo.jp » ADMINISTRATOR STAGE » 連載 » そろそろLDAPにしてみないか? » 第3回 もう一歩進んだUNIXアカウント

そろそろLDAPにしてみないか?

第3回 もう一歩進んだUNIXアカウント

第1回から紹介してきたLDAPによるUNIXアカウント管理ですが,実際に運用する上ではまだまだ問題が残っています。

MigrationToolsによる既存ユーザのインポート

前回までは手動でLDIFファイルを作成し,そのデータをLDAPサーバへインポートしたわけですが,/etc/passwdや/etc/groupをLDAPに移行させるための便利なツールがあります。それがMigrationToolsです.

これらは/etc以下にあるパスワード,グループ,ホスト,サービス情報などをLDAPに移行させるためのLDIFを作成してくれるツールで,Perlスクリプトの集合体となっています。試しに既存の/etc/passwd,/etc/group,/etc/hostsの情報をLDIF形式にしてみましょう(図1)。事前に設定ファイルとなるmigrate_common.phを編集したり,適切な環境変数を定義することで作成されるLDIFのBASE_DNなどの値を変更することができます。

図1 MigrationToolsを使用したLDIFの作成

% tar zxfv MigrationTools.tgz
% cd MigrationTools-47
# export LDAP_BASEDN="dc=example,dc=com"
# ./migrate_passwd.pl /etc/passwd passwd.ldif
# ./migrate_group.pl /etc/group group.ldif
# ./migrate_hosts.pl /etc/hosts hosts.ldif

カレントディレクトリにpasswd.ldif,group.ldif,hosts.ldifが作成されましたので,それぞれのエントリを追加してみましょう。現在はグループ,ホスト情報用の親エントリがない状態ですので,リスト1のような親エントリを登録した後それぞれを登録します(図2)。

リスト1 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

図2 LDIFファイルのインポート

% ldapadd -x -c -D "cn=manager,dc=example,dc=com" -w secret -f base.ldif
% ldapadd -x -c -D "cn=manager,dc=example,dc=com" -w secret -f passwd.ldif
% ldapadd -x -c -D "cn=manager,dc=example,dc=com" -w secret -f group.ldif
% ldapadd -x -c -D "cn=manager,dc=example,dc=com" -w secret -f hosts.ldif

注意点として,migrate_passwd.plは/etc/shadow中の暗号化されたパスワードエントリの頭に{crypt}という文字をつけてuserPassword属性の値とします。したがって,/etc/shadow中にMD5形式のパスワードが定義されていた場合でも,

userPassword: {crypt}$1$YBwRQlei$Lm.vrBe8AUFoxjcka35wT/

のように,cryptと定義してあるのに実際の値はMD5,と,つじつまの合わない形で出力されてしまうため,必要に応じてuserPassword属性の値を平文,または暗号化された形式に修正すべきです。参考までに,エンコード後の文字列を作成するにはslappasswdコマンドを使用します(表1参照)。

表1 暗号方式によるコマンドの違い

形式コマンド例
CRYPT形式slappasswd -h '{CRYPT}' -s パスワード文字
MD5形式slappasswd -h '{MD5}' -s パスワード文字
SMD5形式slappasswd -h '{SMD5}' -s パスワード文字
SSHA形式slappasswd -h '{SSHA}' -s パスワード文字
SHA形式slappasswd -h '{SHA}' -s パスワード文字
平文特になし

詳細はslappasswdコマンドのマニュアルを参照してみてください。

nscdによるキャッシング

少し話は変わりますが,idコマンドを使うと/etc/nsswitch.confに定義されたネームサービス情報を元にユーザ情報を表示させることができます。たとえばリスト2のようなシェルスクリプトを実行すると,LDAP上に登録されたldapuserの情報を100回表示します。

リスト2 ユーザ情報を100回表示させるスクリプト(count.sh)

#!/bin/sh
i=1
while [ $i -le 100 ]; do
  id ldapuser
  i=`expr $i + 1`
done

実際にこのスクリプトを実行してみるとわかりますが,LDAP上のユーザ情報を取得するためには,思いの外時間がかかってしまうことに気がつくはずです(図3,4参照)。

図3 /etc/nsswitch.confにてLDAP検索が有効な場合

# time ./count.sh 

real    0m8.450s
user    0m0.911s
sys     0m6.531s

図4 /etc/nsswitch.confにてLDAP検索が無効な場合

# time ./count.sh 

real    0m3.586s
user    0m0.382s
sys     0m3.199s

この問題は,ユーザ情報をある程度メモリ上にキャッシュしておけば防止することができます。そのためのデーモンがnscd(Name Service Cache Daemon)です.nscdを使用すると,最初の情報取得時にはLDAPサーバから検索を行い,以降はキャッシュされた値を使用することができます(図5)。

図5 nscdを有効化した状態でcount.sh(リスト2)を実行

# /etc/init.d/nscd start
# chkconfig nscd on
# time ./count.sh 

real    0m3.191s
user    0m0.361s
sys     0m2.578s

このように,キャッシュによって速度的な問題がほぼ解消されたことがわかります.nscdの設定ファイルは/etc/nscd.confです。一般的な運用であればデフォルトの状態から編集する必要はないかもしれませんが,設定も可能であるということを頭の片隅に置いておきましょう。

著者プロフィール

中満英生(なかみつひでお)

大学時代に出会ったSolarisがきっかけでUNIXの世界へ。その後ホスティングプロバイダ,データセンターで実務経験を積む傍ら,雑誌記事の執筆や技術セミナーの講師を務める。サーバ設定の他,セキュリティに関する著作や技術者エッセイも執筆経験あり。

コメント

コメントの記入

パスサポ

多数の情報処理技術者試験対策書籍の発行実績を誇る技術評論社がお届けする,資格試験合格サイト「めざせ! 情報処理試験 パスサポ」が開設されました。

ピックアップ

サクセスストーリーに続く,快適サーバー運用管理のヒント!

データの増大,煩雑な管理,システムダウン,セキュリティなど,迫りくる課題からシステム管理者の負担を軽くするポイントを解説します。

gihyo.jp インフラエンジニア情報局

ネットワークやITにかかわるあらゆる業種で必要とされるインフラエンジニアに向けた技術情報や心構え,その魅力について多角的に紹介。

テストエンジニア ステーション

いま,ITに関わるあらゆる開発業務で注目されつつあるテスト系エンジニアをターゲットにしたコンテンツサイトを展開します。

一行クイックアンケート

gihyo.jpで取り上げてほしいネタは?

※検索はページ右上の検索ボックスをご利用ください。

その他の連載

もっと便利に!jQueryでラクラクサイト制作(実践サンプル付き)

本連載では,実践サンプルとともに,jQueryを上手に活用してサイト制作の品質向上・効率化を実現するための実践テクニックを解説します。

サクセスストーリーに続く,快適サーバー運用管理のヒント!

サーバーを自社で運用管理するのはもう限界…。データの増大,煩雑な管理,システムダウン,セキュリティなど,迫りくる課題からシステム管理者の負担を軽くするポイントを解説します。

続・先取り! Google Chrome Extensions

2010年1月のリリースが予定されているGoogle Chrome 4に搭載されるExtensionsについて,その詳細を先取りで解説します。最新情報から,ユーザースクリプトやテーマの作り方など関連情報もお届けします。

モダンPerlの世界へようこそ

この連載では,Perlの世代間ギャップに悩んでいる方に,いくらかの背景知識と,これだけは知っておいたほうがよいという最低限の慣用句をお届けします。

Hosting Department:ホスティングを活用するための基礎知識

本連載では,ホスティングサービスを活用する上で知っておきたい基礎知識を解説します。

Blogopolisから学ぶ計算幾何

計算幾何学は,図形に関するアルゴリズムを研究するコンピュータサイエンスの一分野です。本連載では,ビジュアルブログ検索エンジン「Blogopolis」で採用されている計算幾何のアプローチを例に取り上げながら,計算幾何の初歩を実践的に学習します。

Windows phoneアプリケーション開発入門

Windows Marcketplace for Mobileがサービス開始され,作成したアプリケーションを個人でも世界をターゲットに公開できる環境が整ってきました。これを機にWindows phoneアプリケーションの開発をしてみませんか?

いま,見ておきたいウェブサイト

この連載では,国内外の最新のウェブサイトを隔週更新で取り上げ,これら最新サイトの特徴や素晴らしい部分を,さまざまな角度から解説していきます。

連載一覧

gihyo.jp

  • DEVELOPER STAGE
  • ADMINISTRATOR STAGE
  • WEB+DESIGN STAGE
  • LIFESTYLE STAGE
  • SCIENCE STAGE
  • NEWS & REPORT

書籍案内

  • 新刊書籍
  • 書籍ジャンル一覧
  • 書籍シリーズ一覧
  • 新刊ピックアップ
  • ロングセラー
  • 電脳会議

定期刊行物一覧

  • Software Design
  • WEB+DB PRESS
  • Web Site Expert
  • 組込みプレス

最近のコメント