日経Linux2003年9月号,70ページより

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


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

Part3
Windows Server 2003との接続性検証

 Windows Server 2003とSamba 3.0の接続性を検証した。日本語ファイル名で若干の不具合があったほかは問題なくWindows Server 2003と接続できた。SambaサーバーをActive Directoryのメンバー・サーバーとして登録したり,Sambaで構築したNTドメインにWindows Server 2003をメンバー・サーバーとして登録できた。

(小田切)

図1●検証に利用したsmb.confファイル
Sambaサーバーをワークグループ・サーバーとして稼働させるための設定ファイル例である。
写真1●「コマンドプロンプト」で生じる日本語ファイル名問題
SFN(短いファイル名)が正しく表示されていないことが分かる。

 Part3ではWindowsサーバーの最新版「Windows Server 2003」とSamba 3.0の接続性を検証する。Windows Server 2003は,Windowsネットワーク・プロトコル的には,Windows 2000やXPとほぼ同じである。そのため,Windows側で問題が発生することはないと思われるが,Sambaの内部コード刷新と通信時の文字コード変更の影響がどう出るか気になるところだ。

 結論を先に述べると,日本語ファイル名を利用しなければ問題なくSamba 3.0を利用できた。しかし,日本語ファイル名に関してはいくつかの問題があり,p.69の別掲記事「文字コード変換の不具合を避けるための準備」で紹介したEUCJP-msをサポートしたglibcを導入したMIRACLE LINUX Standard Edition V2.1を利用して問題を低減させた。 それでもまだ問題が残るので,日本国内で実務に使用するには徹底的な品質向上が必須といえるだろう。

検証1:
Samba共有への接続
日本語ファイル名に問題

 最初にSamba 3.0サーバーで作成した共有をWindows Server 2003で正しく利用できるかどうかを検証した。検証には,ワークグループ・サーバーとしてSambaを稼働させる図1[拡大表示]のようなsmb.confを用意した。

 実際にSambaサーバーにアクセスする前に,ユーザーを作成する必要がある。Samba2.2までは,ユーザー管理機構(passdb backend)に合わせて,ユーザー作成方法を使い分ける必要があった。例えば,smbpasswdファイルによる認証をする場合はsmbpasswdコマンドを使用するし,LDAPを使用するときはsmbldap-tools(現在まだSamba3.0に未対応)を利用する必要があった。

 一方,Samba3.0ではpdbeditコマンドとnetコマンドが提供されており,ユーザー管理機構に関係なくユーザーを作成できるようになった。例えば,odagiriというユーザーを作成する場合は,Linuxのコンソールで以下のコマンドを管理者(root)権限で実行すれば良い。

# useradd odagiri
# pdbedit -a -u odagiri

 また,netコマンドを利用する場合は,Linuxのコンソールで次のコマンドを実行する。コマンド実行はrootユーザーでなくても構わないが,実行時に,Sambaサーバーの管理者のユーザー名とパスワードの入力が求められる。また,サーバー名を指定すればリモートからも実行できるし,ドメインに参加しているWindowsサーバーのユーザーも作成できる。

# net rpc user add odagiri

 しかも,netコマンドの場合,smb.confの「add group script」や「add user script」のパラメータで適切なユーザー管理コマンドを指定しておけば,Linuxのユーザーやグループ追加作業も自動化できるメリットがある。

 ただし,netコマンドを利用するにはSambaにすでに管理者ユーザー(rootやAdministrator)とパスワードが登録済みでなければならない。そのため一般には,pdbeditコマンドを使うのが標準だと思った方がいいだろう。

 なお,Sambaのユーザー・アカウント名は,英大文字は使用せずに「英小文字,数字のみ」で作成しなければならない点に注意が必要である。マイナスやピリオドも使用してはならない。Windows 95/98/Meでは,ユーザー名は12バイト以下にしなければ問題が発生することがあるが,Windows 2000/XPでは15バイトまで設定可能だ*1。パスワードには英大文字も使用でき,長さは8バイト以上14バイト以下にしよう。例えば,Windows 2000/XPの管理者ユーザー「Administrator」をSambaサーバーに登録するときは,必ず「administrator」とする。

 ユーザーが作成できたら,早速Windows Server 2003からアクセスしてみる。共有リソースには,Windowsの「スタート」ボタンの「マイ ネットワーク」からアクセスできる。

 共有ディレクトリに日本語ファイル名を持つファイルなどを書き込んだが,概ね問題なくファイル共有が実現できた。ただし,これは「EUCJP-ms」対応のCライブラリ(glibc)を利用したからである。Linux標準のglibcのiconv()関数を利用すると,日本語ファイル名で問題が生じる。例えば,ファイル名に「~」の文字が含まれているとLinux側で文字化けするし,丸数字やローマ数字をファイル名に含んだファイルは取り扱えない。また,Windowsの「コマンドプロンプト」中でDIR /XコマンドでSFN(短いファイル名)を表示させると正しく表示されない問題もある(写真1[拡大表示])。

 また,修正を施したiconv()関数を利用しても,若干の不具合が生じることが分かっている。不具合が生じる原因としては,「文字列の処理がバイト単位になっており,マルチバイト文字が分断される」,「文字数を求めるときに,マルチバイト文字が考慮されていない」,「固定長のエンコーディングと可変長のエンコーディングの間の変換で,1文字を表現するバイト数の増減が考慮されていない」,「シフトJISの2バイト目に0x5C(ASCIIのバックスラッシュ)が表れることが考慮されていない」といったプログラム上の欠陥にあることが,日本Sambaユーザ会により確認されている。

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


(次回に続く)