2008/4/3 木曜日

webalizer-2.01-10をインストール

このエントリをはてなブックマークに追加webalizer-2.01-10ゃ潟鴻若のはてなブックマーク被リンク数
Filed under: linux — akky @ 17:32:49

Fedra6にwebalizer-2.01-10をインストールした顛末です。

You must have a V1.85 compatable DB libraryっていわれる

ホスト名を逆引きしたいので

./configure  --with-language=japanese --enable-dns

とすると

[root@vesalius webalizer-2.01-10]# ./configure  --with-language=japanese --e
nable-dns
loading cache ./config.cache
checking for gcc... (cached) gcc
checking whether the C compiler (gcc  ) works... yes
checking whether the C compiler (gcc  ) is a cross-compiler... no
checking whether we are using GNU C... (cached) yes
checking whether gcc accepts -g... (cached) yes
checking whether ln -s works... (cached) yes
checking for a BSD compatible install... (cached) /usr/bin/install -c
checking how to run the C preprocessor... (cached) gcc -E
checking whether char is unsigned... (cached) no
checking for dbopen... (cached) no
checking for library containing dbopen... (cached) no
configure: warning: You must have a V1.85 compatable DB library!
configure: warning: DNS lookup code will be disabled...
checking for socket... (cached) yes
checking for sys/socket.h... (cached) yes
checking for main in -lnsl... (cached) yes
checking for main in -l44bsd... (cached) no
checking for main in -lm... (cached) yes
checking for main in -lz... (cached) yes
checking for gzrewind in -lz... (cached) yes
checking for main in -lpng... (cached) yes
checking for gdImagePng in -lgd... (cached) yes
checking for gd.h... (cached) /usr/include
checking for getopt.h... (cached) yes
checking for math.h... (cached) yes
checking default config dir... (cached) /etc
checking for language file... yes - japanese
creating ./config.status
creating Makefile
linking ./lang/webalizer_lang.japanese to webalizer_lang.h
[root@vesalius webalizer-2.01-10]#

ってなる。コンパイルもでき、実行もできるのだけど、DNSCacheDNSChildrenの設定をしてあると

Warning: Invalid keyword 'DNSCache' (/etc/webalizer.conf)
Warning: Invalid keyword 'DNSChildren' (/etc/webalizer.conf)

っていわれてしまい、逆引きもできていない。configure時の

configure: warning: You must have a V1.85 compatable DB library!
configure: warning: DNS lookup code will be disabled...

の警告に起因しているみたいだ。Berkeley DBの1.85を用意せよとおっしゃる。なので、rpmから

  • db4-devel-4.3.29-9.fc6
  • db4-4.3.29-9.fc6

を入れておく

Berkeley DBを使ってコンパイル

rpmから入れたBerkeleyDBを使うように

./configure  --with-language=japanese --enable-dns --with-dblib=/usr/lib -with-db=/usr/include

とすると、configure時の警告は消えるが、今後は、コンパイルが通らない

dns_resolv.c: In function `resolve_dns':
dns_resolv.c:149: warning: passing arg 2 of pointer to function from incompatible pointer type
dns_resolv.c:149: error: too few arguments to function
dns_resolv.c: In function `dns_resolver':
dns_resolv.c:218: warning: implicit declaration of function `dbopen'
dns_resolv.c:218: warning: assignment makes pointer from integer without a cast
dns_resolv.c:228: error: too few arguments to function
dns_resolv.c:235: error: too few arguments to function
dns_resolv.c:275: warning: passing arg 2 of pointer to function from incompatible pointer type
dns_resolv.c:275: error: too few arguments to function
dns_resolv.c:329: error: too few arguments to function
dns_resolv.c:359: error: too few arguments to function
dns_resolv.c: In function `db_put':
dns_resolv.c:745: warning: passing arg 2 of pointer to function from incompatible pointer type
dns_resolv.c:745: error: too few arguments to function
dns_resolv.c: In function `open_cache':
dns_resolv.c:793: warning: assignment makes pointer from integer without a cast
dns_resolv.c:801: error: too few arguments to function
dns_resolv.c:807: error: too few arguments to function
dns_resolv.c: In function `close_cache':
dns_resolv.c:829: error: too few arguments to function
make: *** [dns_resolv.o] Error 1

引数の数が違うとな。/usr/include/db.hdns_resolv.cを見比べるとやっぱり、引数数が合わない。むむむと、dns_resolv.cと睨めっこしていると

ifdef HAVE_DB_185_H
#include <db_185.h>                            /* on my RH6.0 system ?!?   */
#else
#include <db.h>                                /* DB header ****************/
#endif /* HAVE_DB_185_H */

という記述を発見。db_185.hがあるとな。最初の警告にあるV1.85と符合する。db_185.hを探すと/usr/include/db4/にヘッダファイルを発見。これを読ませればいいんだな。ということで、

CFLAGS='-DHAVE_DB_185_H' ./configure  --with-language=japanese --enable-dns --with-dblib=/usr/lib --with-db=/usr/include

としてコンパイル。これでコンパイル時の問題と実行時の問題が無事解決です。

2008/3/8 土曜日

Services_HyperEstraierを使ってPHPでノードから検索

このエントリをはてなブックマークに追加Services_HyperEstraier篏帥cPHPс若罎膣△里呂討淵屮奪マーク被リンク数
Filed under: linux — akky @ 20:50:24

HyperestraylerのPHPバインディングは標準では配布されてないので、移植されたものを http://page2.xrea.jp/ からダウンロード。今回使うのは、PHP5 専用のServices_HyperEstraier の方。

ファイルの構成は下の通り。ServiesはServices_HyperEstraierから取得したものです。

common.php
index.php
Services/HyperEstraier.php
Services/HyperEstraier/Error.php
Services/HyperEstraier/Condition.php
Services/HyperEstraier/ResultDocument.php
Services/HyperEstraier/Node.php
Services/HyperEstraier/Document.php
Services/HyperEstraier/Utility.php
Services/HyperEstraier/HttpResponse.php
Services/HyperEstraier/.ResultDocument.php.swp
Services/HyperEstraier/NodeResult.php
Services/HyperEstraier.php

common.php

<?php
define('SERVICES_HYPERESTRAIER_DEBUG', 1);
error_reporting(E_ALL & ~E_STRICT);

require_once 'Services/HyperEstraier/Node.php';

$uri = 'http://localhost:1978/node/main';
$user = 'admin';
$pass = 'admin';

index.php

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head>
<meta http-equiv="Cache-Control" content="no-cache, must-revalidate, no-transform" />
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta http-equiv="Content-Style-Type" content="text/css" />
<meta http-equiv="Content-Script-Type" content="text/javascript" />
</head>
<body>
<?php
$phrase = isset($_GET["phrase"]) ? $_GET["phrase"] : null;
?>
<form action="<?php echo $_SERVER["PHP_SELF"] ?>" method="get">
検索:
<input type="text" name="phrase" value="<?php echo $phrase ?>" size="32" id="phrase" class="text" tabindex="1" accesskey="0" />
<!--
並び替え
<select name="sort">
  <option value="score">候補</option>
  <option value="updateDate">更新日付</option>
  <option value="url">URL(ディレクトリ)</option>
  <option value="size">サイズ</option>
</select>
-->
<input type="submit" value="検索"/>
</form>

<?php
require_once dirname(__FILE__) . DIRECTORY_SEPARATOR . 'common.php';
// create and configure the node connecton object

if  ($phrase != null ) {

  $node = new Services_HyperEstraier_Node;
  $node->setUrl($uri);

  // create a search condition object
  $cond = new Services_HyperEstraier_Condition;
  $cond->setPhrase($phrase);
  $cond->setMax(10);
  $cond->setSkip(0);

  // get the result of search
  $nres = $node->search($cond, 1);
  if ($nres) {
      if ($nres->docNum() == 0) {
          printf( "%s: not found.n", $cond->getPhrase());
      } else {
          foreach ($nres as $rdoc) {
              printf("<h2><a href='%s'>%s<a/></h2>n"
                ,$rdoc->getAttribute('@uri')
                ,$rdoc->getAttribute('@title')) ;
              printf("%s<br/>n",$rdoc->getAttribute('@uri'));
              print("<BLOCKQUOTE>");
              foreach( split("n",$rdoc->getSnippet()) as $line ){
                if ( mbereg('   ',$line) ){
                  printf("<strong>%s</strong>",mbereg_replace(' .*$','',$line));
                }else{
                  printf("%s",$line);
                }
              }
              print("</BLOCKQUOTE>n");
          }
      }
  } else {
      printf("error: %dn", $node->status);
      if (Services_HyperEstraier_Error::hasErrors()) {
          printf( print_r(Services_HyperEstraier_Error::getErrors(), true));
      }
  }
}
?>

</body>
</html>

2008/2/28 木曜日

Centos4.6でapache1.3がコンパイルエラー

このエントリをはてなブックマークに追加Centos4.6apache1.3潟潟ゃ爾里呂討淵屮奪マーク被リンク数
Filed under: linux — akky @ 23:01:35

コンパイルしようとすると、

 ndbm.h No suche file or directory

とおっしゃられる。ぐぐってみるとgdbmのヘッダらしいけど、それ自体も見つからず。そもそも、gdbm-develのパッケージから入れないといけないらしい。というわけで、さくっとyumでインストール。

最近はgccすら明示的に入れないといけないんだよな・・・

ヘッダファイルは/usr/include/gdbmにあるので、

 CLFAG=/usr/include/gdbm ./configure 〜

とやって解決。シンボリックリンクを張っている記事もあるけど、コンパイルの王道はこうだよな。

2008/2/17 日曜日

Hyper Estraierでノードを使ったWebサイトとファイルを検索対象にする

このエントリをはてなブックマークに追加Hyper Estraierс若篏帥cWeb泣ゃ<ゃ罎膣√乗院のはてなブックマーク被リンク数
Filed under: linux — akky @ 14:26:03

estseek.cgiでは一つのインデックスだけしか扱えないので、大量の文書やWebサイトとファイルサーバにある文章を同時に扱うことができない。そこで、P2Pを使って問題を解決したい。

ノードの構成は下の状態

+- ノードマスタ ---------------------+
|  mainノード -+- project_a ノード   |
|              +- project_b ノード   |
|              +- イントラ ノード    |
+------------------------------------+

ノードマスタは一つだけ用意。mainノードにはインデックスは持たずに、project_aノード、project_bノード、イントラノードへのリンクを張るだけ。project_aノードとproject_bノードはそれぞれのプロジェクトで作成した文章へのインデックスを持ち、イントラノードはイントラをクロールしたインデックスを持つ。project_cや新たなイントラを検索の対象に含めたい場合には、個別にノードを用意(インデックスを作成)して、mainノードからのリンクを追加する。
クライアントはmainノードだけを検索の対象にして、mainノードがそれぞれのノードに対してリクエストを投げて、帰ってきた応答をマージしてクライアントへ返す方法をとる。
これが適切な設計なのかはわからないが、試験的なものとして試してみる。

操作で使うディレクトリの状態は下の通り。

 + master マスタノードのサーバルートディレクトリ
 |  +- _node ノードディレクトリ
 |       +- main      mainノード
 |       +- project_a project_aノードのインデックス
 |       +- project_b  project_bノードのインデックス
 |       +- intra      イントラノードのインデックス
 |
 +- crawl クローラーのディレクトリ

ノードマスタとノードを作成

[参考]P2Pガイドのチュートリアル 「起動と終了」及び「管理用インターフェイス」

 $ estmaster init master
 $ estmaster start -bg master
 webブラウザで http://localhost:1978/master_ui へアクセス。認証はadmin/admin。
 Manage Nodesからmain、project_a、project_b、intraのそれぞれのノードを追加

mainノードからのリンクを設定

[参考]P2Pガイドのチュートリアル 「文書の検索」

メインノードからそれぞれのノードへのリンクを設定する。信頼度は全て1000。

 $ estcall setlink -auth admin admin http://localhost:1978/node/main \
  http://localhost:1978/node/project_a プロジェクトA 1000
 $ estcall setlink -auth admin admin http://localhost:1978/node/main \
  http://localhost:1978/node/project_b プロジェクトB 1000
 $ estcall setlink -auth admin admin http://localhost:1978/node/main \
  http://localhost:1978/node/intra 社内イントラ 1000

estcmdでproject_aとproject_bのインデックスを作成

[参考]P2Pガイドのチュートリアル 「初期導入の効率化」
ノードマスタを起動している最中はインデックスがロックされているため、estcmd gatherがロック待ちで止まりますので、ノードマスタを停止してから行います。

 $ estmaster stop master
 $ estcmd gather -cl -fx ".doc,.xls,.ppt" "H@estfxmsotohtml"  -ic UTF-8 \
     -sd -cm -pc UTF-8 master/_node/project_a /home/Projects/project_a
 $ estcmd gather -cl -fx ".doc,.xls,.ppt" "H@estfxmsotohtml" -ic UTF-8  \
     -sd -cm -pc UTF-8 master/_node/project_b /home/Projects/project_b
 $ estmaster start -bg master

クロールしてイントラノードのインデックスを作成

 $ estwaver init -xs crawl
 $ im crawl/_conf

seed: 1.0|http://intra.example.co.jp/
として他のseedを削除。seedは種文書(ここからクロールを開始する)

allowrx: ^http://http://intra.example.co.jp/
クロールをイントラサーバだけに限定します。

language: 1
日本語の文書なら1にします。

nodeserv: 1|http://admin:admin@localhost:1978/node/intra
事前に作成したノードへインデックスを保存します。

 $estwaver crawl -revcont crawl

検索をしてみる

http://localhost:1978/node/main/search_ui へアクセスすると、検索フォームが表示されます。右側にはmainノードがリンクしているノードが表示されているはずです。depthが「0」のまま検索すると、リンク先を検索しないので、ヒットしないはずです。「1」以上にすると、リンクしているノードも含めて検索結果が表示されます。右側にあるノードのチェックを外すと検索の対象から除かれます。

2008/2/12 火曜日

sambaのPDCにログインしたらプロファイルが無いって言われる。

このエントリをはてなブックマークに追加sambaPDC違ゃ潟<ゃ<c荐のはてなブックマーク被リンク数
Filed under: windows, linux — akky @ 20:09:28

この手順で作成したドメインへログインすると

移動プロファイルのサーバー用コピーが見つからないため、ローカルプロファイルを使ってログオンしようとしています。プロファイルへの変更は、ログオフ時にサーバーにはコピーされません。ネットワークの問題が発生しているか、セキュリティの権限が不足していることが原因と考えられます。問題が解決しない場合は、管理者に問い合わせてください。

とか

ローカルのプロファイルが見つかりません。一時的なプロファイルでログインしています。ログオフ時にこのプロファイルへの変更は失われます。

って言われる。samba userのサイトを見ながらわかったことは、ldapのsambaProfilePathのディレクトリが無いのが原因。/etc/samba/smb.conflogon pathをどれだけ編集していても解決できないわけだった。smbldap-usershowlogon pathが指すディレクトリを作成することでエラーの原因は解決。

smbldap-usermod -Fでldapのlogon path/etc/samba/smb.conflogon pathが同じディレクトリを指すように変更しておく。あと、ldapのlogon path/etc/smbldap-tools/smbldap.confuserProfileをテンプレートとしているので、これも修正しておく。

2008/2/7 木曜日

hyperestraier を使って、ファイルサーバを全文検索

このエントリをはてなブックマークに追加hyperestraier 篏帥c<ゃ泣若罎膣△里呂討淵屮奪マーク被リンク数
Filed under: linux — akky @ 17:11:19

hyerestraier を使って、ファイルサーバのみんなで共有しているファイル群を全文検索します。インデックスを作成するときにはジャンルを使って、案件を指定できるようにします。

イントロダクションに書いてあることは省略してあります。

Excel,MS-Word,PowerPoint,PDFを検索できるようにテキストを抽出するプログラムをインストール

■MS-Wordからテキストを抽出するvwWare

  # yum install glib2-devel
  # yum install libgsf-devel
	  依存パッケージいっぱい
  $wget http://downloads.sourceforge.net/wvware/wv-1.2.4.tar.gz?modtime=1161798556&big_mirror=0
  $ tar xvfz wv-1.2.4.tar.gz
  $ ./configure
  $ make
  $ make install

■ExcelとWordからテキストを抽出するxlhtml

  $ wget http://nchc.dl.sourceforge.net/sourceforge/chicago/xlhtml-0.5.tgz
  $ tar xvfz xlhtml-0.5.tgz
  $ cd xlhtml-0.5
  $ ./configure
  $ make
  $ make install

インデックスを初期化

 $ estcmd create -attr _lpath str -attr @mdate seq -attr @size seq -attr @genre str job

インデックス化

インデックス化する際には -aa @genreを使ってフォルダ単位にジャンルを指定します。

 $ export PATH=$PATH:/usr/local/share/hyperestraier/filter/
 $ estcmd gather -cl -fx ".doc,.xls,.ppt" "H@estfxmsotohtml" -ic UTF-8 -sd -cm -pc UTF-8 -aa  @genre project_a job /home/Projects/project_a
 $ estcmd gather -cl -fx ".doc,.xls,.ppt" "H@estfxmsotohtml" -ic UTF-8 -sd -cm -pc UTF-8 -aa @genre project_b job /home/Projects/project_b

estseek.confにジャンルを指定

genrecheck: project_a{{!}}プロジェクトA
genrecheck: project_b{{!}}プロジェクトB

2008/2/5 火曜日

PostgreSQLのバッファへのヒット率を求める

このエントリをはてなブックマークに追加PostgreSQL<吾羆のはてなブックマーク被リンク数
Filed under: linux, PostgreSQL — akky @ 12:47:03


最近は、記事のネタに一貫性が無いな〜。

えっと、バッチの性能改善するための方法その1です。データファイルから読み込んだ内容を、PostgreSQL自身でキャッシュして再利用することでクエリーの性能を向上させます。バッファの大きさはshared_buffersっていうパラメータにブロック(1ブロック8KB)単位で大きさを指定します。その妥当性を判断する方法として、統計情報を使います。

PostgeSQLのバージョン

8.1.4です。

統計情報を取得するための設定

 vi $PGDATA/postgresql.conf
 stats_start_collector = true
 stats_command_string = true
 stats_block_level = true
 stats_row_level = true
 stats_reset_on_server_start = true

変更後はPostgreSQLを再起動

実行後に統計情報からヒット率を得る

SELECT relname,
        heap_blks_read  as "ディスクから読み込んだブロック数",
        heap_blks_hit as "キャッシュにヒットしたブロック数",
        case when heap_blks_hit = 0 then 0 else
          heap_blks_hit::real / (heap_blks_read::real + heap_blks_hit::real) end as "ヒット率",
        idx_blks_read as "ディスクから読み込んだブロック数(インデックス)",
        idx_blks_hit as "キャッシュにヒットしたブロック数(インデックス)",
        case when idx_blks_read = 0 then 0 else
          idx_blks_hit::real / (idx_blks_read::real + idx_blks_hit::real) end::real as "インデックスヒット率",
        toast_blks_read as "ディスクから読み込んだブロック数(TOAST)",
        toast_blks_hit as "キャッシュにヒットしたブロック数(TOAST)",
        case when toast_blks_read = 0 then 0 else
          toast_blks_hit::real / ( toast_blks_read::real + toast_blks_hit::real) end::real as "TOASTのヒット率",
        tidx_blks_read as "ディスクから読み込んだブロック数(TOASTのインデックス)",
        tidx_blks_hit as "キャッシュにヒットしたブロック数(TOASTのインデックス)",
        case when tidx_blks_read = 0 then 0 else
          tidx_blks_hit::real / (tidx_blks_read::real + tidx_blks_hit::real) end::real as "TOASTのインデックスヒット率"
   FROM pg_statio_user_tables
   where  heap_blks_read != 0

ヒット率は0.97以上を目指したい。TOASTってのは、1行が1ブロックに収まっていない部分のこと(略し過ぎ)。あと、統計情報はPostgreSQLを停止するリセットされる。適宜、PostgreSQLを再起動。

2008/1/31 木曜日

Hyper Estraierを入れてみる

このエントリをはてなブックマークに追加Hyper Estraierャ帥のはてなブックマーク被リンク数
Filed under: linux — akky @ 1:26:42

sambaで提供しているファイルサーバに蓄積している文書を検索するためにHyper Estraierを入れてみました。
環境はCentOS5です。
今回は、お試しとして自分のホームディレクトリへインストールしました。/home/akky/hyperestraier の配下に必要なものを収めます。
インストール手順はイントロダクションに書いてあるとおりです。前提となるライブラリ事情を下に書いておきます。

  • libiconvは入れていない。ldd `which iconv` を実行すると、libiconvを使っていないけど、iconv自体は実現されている。ぐぐってみると、libcにiconvの関数が含まれているみたいだ。結果は後のお楽しみ
  • zlibはzlib-develが入っている。
  • QDBMはこの後入れる

QDBMをインストール

 # ./configure --prefix=/home/akky/hyperestraier --enable-zlib
 # make
 # make check
 # make install

zlibを使うことで、インデックスファイルの大きさ圧縮

Hyper Estraierをインストール

 # LDFLAGS="-L/home/akky/hyperestraier/lib " ./configure --prefix=/home/akky/hyperestraier
 # make
 # make check
 # make intall

configure時にLDFLAGSを指定しているのは、QDBMを /home/akky/hyperestraier へインストールしているのだが、configureではlibqdbm が無いと言われ、configureは通ってしまうのでmakeを実行するとqdbmの関数をリンクできずに失敗した。なので、半ば無理やりの対応

2008/1/27 日曜日

CentOS5 に sambaを使ってドメインコントローラー

このエントリをはてなブックマークに追加CentOS5  samba篏帥c<ゃ潟潟潟若爾里呂討淵屮奪マーク被リンク数
Filed under: windows, linux — akky @ 21:44:45

足掛け2週間かけて、CentOSにOpenLDAP+Smbaを使ってドメインコントローラーを構築。なかなか、ドメインコントローラーへログインできずに手間取った。終ってみると、samba.confの記述が適切ではなかったのかな・・・
今後のためにも、手順を記載しておく。

環境はこちら。

OS
CentOS5.1。カーネルのバージョンは2.6.18-53.el5
OpenLDAP
yumでインストールした2.3.27-8
Samba
yumでインストールした3.0.25b-1.el5_1.4

手順はCentOS 5 で Samba を PDC にするを参考に、実践! Samba移行術 第2回:NT4.0→ Samba3.0への移行(1)以降の連載を見ながら。

以降は手順

LDAP インストール

# yum install openldap-servers

ldapのsamba用スキーマをコピー

# cp /usr/share/doc/samba-3.0.25b/LDAP/samba.schema /etc/openldap/schema/

LDAPサーバの設定ファイル /etc/openldap/slapd.conf を編集

# vi /etc/openldap/slapd.conf

追加
 include         /etc/openldap/schema/samba.schema
変更
 suffix          "dc=my-domain,dc=com"
 rootdn          "cn=Manager,dc=my-domain,dc=com"
↓
 suffix          "dc=example,dc=co,dc=jp"
 rootdn          "cn=Manager,dc=example,dc=co,dc=jp"
追加
 rootpw          ramius
追加
 access to * by * read

 access to attrs=userPassword,sambaLMPassword,sambaNTPassword
        by self write
        by users read
        by anonymous auth

LDAPのサービス開始

 # service ldap start
 # cp /etc/openldap/DB_CONFIG.example /var/lib/ldap/DB_CONFIG
 # service ldap restart
 # chkconfig ldap on

認証の変更

# authconfig-tui

authconfig-tui - (c) 1999-2005 Red Hat, Inc.

            ┌───────┤ 認証の設定 ├───────────│
            │  ユーザー情報         認証                          │
            │  [ ] キャッシュ情報   [*] MD5 パスワードを使用      │
            │  [ ] Hesiod を使用    [*] シャドウパスワードを使用  │
            │  [*] LDAP を使用      [*] LDAP 認証を使用           │
            │  [ ] NIS を使用       [ ] Kerberos 5 を使用         │
            │  [ ] Winbind を使用   [ ] SMB 認証を使用            │
            │                       [ ] Winbind 認証を使用        │
            │                       [*] ローカル認証は十分です    │
            │                                                     │
            │         ┌─────┐                ┌──┐      │
            │         │ 取り消し │                │ 次 │      │
            │         └─────┘                └──┘      │
            │                                                     │
            └──────────────────────────┘

次の画面

authconfig-tui - (c) 1999-2005 Red Hat, Inc.

            ┌─────────┤ LDAP 設定 ├───────────│
            │           [ ] TLS を使用                            │
            │  サーバー: ldap://127.0.0.1/_______________________ │
            │ ベース DN: dc=example,dc=co,dc=jp________________ │
            │                                                     │
            │          ┌───┐                  ┌──┐       │
            │          │ 戻る │                  │ OK │       │
            │          └───┘                  └──┘       │
            │                                                     │
            └───────────────────────────┘

/etc/samba/smb.conf を編集

smbldap-xxはこの後インストールします。

[global]
        dos charset = CP932
        display charset = UTF-8
        workgroup = TECHBEAT
        passdb backend = ldapsam
        guest account = Guest
        add user script = /usr/sbin/smbldap-useradd -m '%u'
        delete user script = /usr/sbin/smbldap-userdel -r '%u'
        add group script = /usr/sbin/smbldap-groupadd -p '%g'
        delete group script = /usr/sbin/smbldap-groupdel '%g'
        add user to group script = /usr/sbin/smbldap-groupmod -m '%u' '%g'
        delete user from group script = /usr/sbin/smbldap-groupmod -x '%u' '%g'
        set primary group script = /usr/sbin/smbldap-usermod -g '%g' '%u'
        add machine script = /usr/sbin/smbldap-useradd -w '%u'
        domain logons = Yes
        os level = 64
        preferred master = Yes
        domain master = Yes
        wins support = Yes
        ldap admin dn = cn=Manager,dc=my-domain,dc=com
        ldap group suffix = ou=Groups
        ldap machine suffix = ou=Computers
        ldap passwd sync = Yes
        ldap suffix = dc=techbeat,dc=co,dc=jp
        ldap user suffix = ou=Users
        add share command = /usr/lib/samba/bin/addshare
        change share command = /usr/lib/samba/bin/chgshare
        delete share command = /usr/lib/samba/bin/delshare
        admin users = Administrator
        force unknown acl user = Yes
        dos filetime resolution = Yes

        load printers = no
        disable spoolss = yes

;       logon home =
;       logon script = %u.bat
;       logon path = \%LProfiles%u
;       logon path =
        logon drive = H:s

[C$]
        path = /
        valid users = administrator
        write list = administrator

[homes]
        comment = Home Directories
        read only = No
        browseable = No

[printers]
        comment = All Printers
        path = /var/spool/samba
        printable = Yes
        browseable = No

[netlogon]
        comment = Network Logon Service
        path = /var/lib/samba/netlogon
        write list = administrator
        guest ok = Yes

[Profiles]
        path = /var/lib/samba/profiles
        create mask = 0600
        directory mask = 0700
        guest ok = Yes
        profile acls = Yes
        browseable = No

netlogonとprofilesのディレクトリ作成

 # mkdir -p /var/lib/samba
 # mkdir -p /var/lib/samba/{netlogon,profiles}
 # chown root:root -R /var/lib/samba/
 # chmod 0755 /var/lib/samba/netlogon
 # chmod 1755 /var/lib/samba/profiles

LDAPの管理者(rootdn)のパスワード登録

# smbpasswd -w パスワード

smbldap-tool を設定

 # cd /usr/share/doc/samba-3.0.25b/LDAP/smbldap-tools-0.9.2
 # vi Makefile
prefix=/usr
sbindir=$(prefix)/sbin
sysconfdir=/etc
 # make install
 # chmod 755 configure.pl
 # ./configure.pl

configure.plを使うと、対話形式で/etc/smbldap-tool のsmbldap.confとsmblda_bind.confを設定できます。
これらのファイルは/usr/sbin/smbldap-xxが参照する設定ファイルです。途中エラーもでますが、無視(^ ^;)して進めちゃいます。

LDAPサーバへの初期データ投入

 # wget http://dag.wieers.com/rpm/packages/perl-Crypt-SmbHash/perl-Crypt-SmbHash-0.12-1.2.el5.rf.noarch.rpm
 # rpm -ivh perl-Crypt-SmbHash-0.12-1.2.el5.rf.noarch.rpm
 # cpan install Unicode::MapUTF8
 # /usr/local/sbin/smbldap-populate -a Administrator -b Guest

sambaへ登録したドメイン管理者のパスワード設定

# smbldap-passwd Administrator

sambaサービスを再起動

# service smb start
/var/log/samba/smbd.log に下のエラーが手続けるのは、 ldapに管理者で接続できていない。のが原因

[2008/01/25 11:45:31, 1] lib/smbldap.c:another_ldap_try(1153)
Connection to LDAP server failed for the x try!

対応は
・「smbpasswd -w パスワード」を再実行
・/etc/samba/smb.conf の 「ldap admin dn」を確認

sambaへグループを登録

# smbldap-groupadd -a regularStaff

sambaへユーザを登録

# smbldap-useradd -a -m -P -g regularStaff ldapuser
Domain Usersにも含めたいときは -G “Domain Users”

samba(といかLDAP)に登録したユーザとシステム認証との関係を確認

authconfig-tuiとldapへの登録が行なえていると、
# getent passwd
でユーザの、
# getent group
でグループの一覧が見れます。/etc/passwd及び、/etc/groupとLDAPへ登録した内容が合わされて表示されます。LDAPに登録した分が表示されないのであれば、authconfig-tuiを見直してください。

次のページ »