この連載のほかの回を読む


(注:記事は執筆時の情報に基づいており,現在では異なる場合があります)

図6●SambaサーバーをPDCとして稼働させるためのsmb.conf設定例
WINSサーバーとしても動作させる場合は「wins support = Yes」という設定も追加する。ここではドメイン名を「NIKKEILINUX」と設定している。
写真8●Windows 9xでのドメインへのログオン設定
「Microsoftネットワーク クライアント」のプロパティで,「Windows NTドメインにログオンする」にチェックを入れる。
写真9●Windows 2000/XPでのドメインへのログオン設定
「ネットワーク設定ウィザード」を起動して,そこでドメイン設定を行う。

Windows NT相当のPDCをSambaで構築する

 Windows NT4.0相当のPDCをSambaで構築するには,smb.confファイルのglobalセクションに「domain logons = Yes」などの設定を加える。基本的には図6[拡大表示]のようにglobalセクションを設定すれば,PDCとして動作するようになる。この例では,ドメイン名を「NIKKEILINUX」(大文字小文字の区別はない)としている。WINSによる名前解決をしていてWINSサーバーが必要であれば,「wins support = Yes」という設定も追加する。

 なおPDCでは,ユーザー認証はPDC自身で行うため,セキュリティ・レベルは「user」にしなければならない。

 ユーザー認証を行うには,アカウント情報を管理するデータベースを用意しなければならない。従来は,smbpasswdというテキスト・ファイルでアカウント情報を管理していたが,テキスト・ファイルではユーザー数が増えると処理時間が増加し認証速度の低下を招いていた。Samba 3.0では独自形式のデータベース・ファイルに格納したアカウント情報を使う「tdbsam」という認証方式が標準で利用できるようになった。ここでは,「passdb backend=tdbsam」として,それを利用している。

 ユーザー情報の追加にはpdbeditコマンドを利用する。最低でも,ドメインの管理者となる「root」ユーザーは追加しておかねばならない。rootユーザーの追加は次のように行う。

# cd /usr/local/samba/bin
# ./pdbedit -a -u root
new password: パスワード
retype new password: パスワード

 また,ここでWindowsクライアントで使用する他のユーザー・アカウントも追加しておこう。

 なお,Samba 3.0からはLinuxアカウントに登録されていないユーザーでもSambaユーザーとして登録できるようになった。Samba独自のユーザーを追加した際には,LinuxシステムでのユーザーIDとグループIDを自動的に割り当てるが,そのためにsmb.confファイルでは「idmap uid」と「idmap gid」の2つのパラメータで割り当て可能なIDの範囲を指定しておく必要がある。

 構築したWindowsドメインにWindows NT/2000(マルチ・ユーザーのマシン)を参加させるには,マシン・アカウントを作成する必要がある。これにもpdbeditコマンドが利用できる。マシン名が「nikkeibp」とすると,次のように入力する。

# cd /usr/local/samba/bin
# ./pdbedit -a -m nikkeibp

 以上で,PDC構築のための基本設定は完了した。Windowsクライアントからの参加設定の方法はバージョンによって異なるが,Windows95/98/Meでは「コントロールパネル」の「ネットワーク」から「Microsoft ネットワーク クライアント」のプロパティを起動し,ログオン確認の設定項目で「Windows NTドメインにログオンする」にチェックを入れ,Windowsドメインに先ほどsmb.confで設定したドメイン名を設定する(写真8[拡大表示])。これで次回ログオン時からNTドメインへのログオン・ダイアログが表示され,PDCでの認証が行われるようになる。

 Windows 2000では,「システムのプロパティ」の「ネットワーク」タブにある「ネットワークID」ボタンをクリックすると,「ネットワーク設定ウィザード」が起動するので,ここで設定を行う(写真9[拡大表示])。

 なお,PDCには,ログオン時にクライアントで実行するスクリプトを登録したり,ユーザー・プロファイルを格納したりできる。

 これらの進んだ活用法については,Sambaのソース・アーカイブに付属する「samba-pdc.html」という文書に詳細な説明がある。

(ライター 新村 拓也)

図A-1●修正プログラムを適用したlibiconvのビルド手順
glibcのiconv()と競合しないように,システム非標準の/opt/libiconv-1.8ディレクトリにインストールしている。
図A-2●libiconvを利用するためのconfigureスクリプト指定
インストールしたlibiconvを使うように,Sambaのconfigureスクリプト実行時に,環境変数やオプションを指定する。

文字コード変換の不具合を避けるための準備

 Samba 3.0ではファイル名の文字コード変換などに,システム標準のiconv()関数を利用する。しかし,LinuxのCライブラリ(glibc)が備えるiconv()関数は日本語の文字コード変換に問題があり,標準ではSambaで正しく文字コード変換ができない。文字コード変換に問題が生じるのは,類似の文字がUnicodeに複数登録されていて,文字コード変換時にどの文字を選択するかが,iconv()とWindowsで異なることなどが原因である。

 この問題を解決するために,森山 将之氏がglibc-2.2.5の修正プログラム(glibc-2.2.5-cp932.diff.gz)を開発し,Webページ(http://www2d.biglobe.ne.jp/~msyk/software/glibc/)で配布している。この修正プログラムをソース・コードに適用してglibcを再ビルドすれば不具合は解消される。しかし,glibcのインストールにはシステム破壊の危険が伴うため一般にはお勧めできない。

 危険を避けるため,文字コード変換機能だけを切り出した「libiconv」というライブラリを利用すると良いだろう。同ライブラリについても,森山氏が修正プログラムを配布している(http://www2d.biglobe.ne.jp/~msyk/software/libiconv-patch.html)。この修正プログラムは,バージョン1.8用のものであるため,RingServer(ftp://ftp.ring.gr.jp/pub/GNU/libiconv/)などからこのバージョンのソース・アーカイブを入手する。入手したlibiconvは,図A-1[拡大表示]の手順でビルド,インストールする。なお,libiconvライブラリはglibcとの競合を避けるため,システム非標準の/opt/libiconv-1.8ディレクトリにインストールしている。

 インストールしたlibiconvライブラリに含まれるiconv()関数では,Windowsと同じ変換ルールを日本語EUCに適用した「EUCJP-ms」という文字コード指定が利用できるようになる。EUCJP-msを指定しておけば,Windows環境との文字コード変換では問題が生じなくなる。

 ただし,非標準ディレクトリにlibiconvライブラリをインストールしているので,Sambaのconfigureスクリプト実行時に環境変数やオプションを指定しなければならない。具体的には,図A-2[拡大表示]のように指定する。また,筆者がこのlibiconvを利用するRed Hat Linux 9向けのSRPMパッケージを作成し,日本Sambaユーザ会のFTPサイト(ftp://ftp.samba.gr.jp/pub/samba-jp/samba-3.0-ja/beta/)で公開している。MIRACLE LINUX Standard Edition V2.1ではlibconvではなくglibcに修正を施したため,Sambaの更新は不要である。修正を施したglibcのSRPMパッケージだけを導入すれば良い。このパッケージも上記サイトで公開している。

(ミラクル・リナックス 小田切 耕司)

(次回に続く)