アンケートご協力のお願いgihyo.jpでは,2010年度に向けて豪華プレゼントが当たる読者属性アンケートを実施しております。ご協力ください。

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で取り上げてほしいネタは?

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

その他の連載

読むウェブ ~本とインタラクション

ディスプレイで読む活字とそのインタラクション(interaction:相互作用)について,最新Webを紹介しながら読み解いていく。

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

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

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

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

ここは知っておくべき!Windows Server 2008技術TIPS

5年ぶりのサーバOSとなったWindows Server 2008が出荷されて早2年。2009年にはR2が出荷され,再び注目を集めています。発売前から実施したトレーニングによって感じた,インフラエンジニアの方々に知っておいていただきたい機能を中心にご紹介します。

キーパーソンが見るWeb業界

本連載はWeb Site Expert/gihyo.jpとの連動企画です。阿部淳也, 長谷川敦士, 森田雄のお三方による,Web業界をテーマにした座談会です。

きたみりゅうじの聞かせて珍プレー

ソフトウェア開発の現場で体験したトホホな失敗,思わずうなる珍プレーをきたみりゅうじ氏が四コママンガで紹介。みなさんからの投稿もお待ちしてます!

ActionScript 3.0で始めるオブジェクト指向スクリプティング

野中文雄氏が,簡単なスクリプトは書いたことがあるという初級者を対象に,ActionScript 3.0の基本からクラス定義までを解説します。

まだ間に合う「ITパスポート」受験対策 原山先生の短期合格塾

この連載では,4月18日のITパスポート試験の受験に向けて,短い期間で効率良く受験対策を行う方法や,確実に得点するための裏ワザなどを伝授していきます。

連載一覧

gihyo.jp

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

書籍案内

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

定期刊行物一覧

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