Sambaを使ったサーバの構築(Sambaの基礎からPDC機能まで)

Author:たかはしもとのぶ <monyo@home.monyo.com>
 本誌の読者(注01)であれば、Sambaに触れたことのない人のほうが少ないのでしょう。ただ、共有フォルダの設定をする程度で、ほとんどデフォルト設定のまま使っている方も多いのではないでしょうか。
 ここでは企業内で使うことも視野に入れ、基本部分からちょっと踏み込んだ設定までを紹介するほか、後半ではSamba-2.xになってから強化されたNTドメインとの連携機能などについても紹介します。
注01:
技術評論社の月刊誌Software Designの読者達。

目 次

1.Sambaセットアップ詳説 
1.1.Sambaとは 
1.1.1.Samba 対 NFS
1.1.2.Sambaの構成
1.1.3.Sambaの情報源
1.2.Sambaの入手とインストール 
1.2.1.何はともあれ起動
1.2.2.暗号化パスワードファイルの作成
1.3.smb.conf:全体の設定 
1.3.1.smb.confの構成
1.3.2.smb.confの変数
1.3.3.認証方式の設定
1.3.4.認証されないユーザの扱い
1.3.5.日本語の扱い
1.3.6.ネットワークに関する設定
1.3.7.ホスト単位でのアクセス制限
1.4.smb.conf:共有の設定 
1.4.1.アクセス権の設定
1.4.2.ホスト単位のアクセス制限
1.4.3.共有単位のアクセス制限
1.4.4.ユーザ単位でのアクセス制限
1.4.5.ユーザ単位の読み書きのアクセス制限
1.4.6.UNIX上のアクセス権との関係
1.4.7.アクセス権の設定例
1.4.8.その他の設定
1.5.Macintosh(Netatalk、CAP)との連携機能 
1.5.1.日本語ファイルの扱い 共有の設定
1.6.GUI設定ツール:swat 
2.NTドメインとの連係機能 
2.1.SambaをNTドメインのクライアントにする 
2.1.1.ドメインへの参加
2.2.SambaをWindows 95/98のログオンサーバにする 
2.2.1.Sambaの設定
2.3.SambaをWindows NTのPDCにする 
2.3.1.最新版ソースの入手とインストール
2.3.2.まずは準備
2.3.3.Sambaのドメインにログオンする
2.3.4.サーバツールを使ってみる
2.3.5.アクセス権の設定
2.3.6.ドメイン機能を使ってみて
2.4.終わりに 
3.参考情報 
4.注記・補足 

Sambaセットアップ詳説 

Sambaとは 

 Sambaとは、UNIX上でWindows NT Serverに相当する機能(SMBサーバ機能)を提供するフリーソフトウェアです。
 UNIX上にSambaを導入することで、あたかもWindows NTに対するかのように、WindowsクライアントからUNIXマシン上のファイルやプリンタ資源を使うことが可能になります。また一部機能に制限がありますが、後に述べるようにWINSサーバやドメインコントローラとしての機能も備えています。
 なおSambaと同様の機能を実現している商用のソフトウェアも存在します。代表的なものを以下に紹介します。

●Vision FS
 http://www.tomen-g.co.jp/sco/product/vfs/vfs.htm

●TAS(TotalNet Advanced Server)
 http://www.netfrontier.nissho-ele.co.jp/SYNTAX/main.htm

 企業などでシステムを構築する際には、サポート面などの理由から商用ソフトを選択する場合が多いでしょう。しかし、SambaもSGIのIRIXでは正式サポートになりましたし、Linuxの各商用ディストリビューション上でも当然サポートされています。
 今後はSambaの商用利用も広がっていくのではないでしょうか。

Samba 対 NFS

表1:Samba(SMBサーバ)とNFSの比較
方 式Samba商用SMBサーバNFS
価 格無 償クライアント台数分の
SMBサーバのライセンス
クライアント台数分の
NFSクライアントのライセンス
必要な設定UNIXサーバへのインストールや設定個別のWindowsクライアントへの
NFSクライアントのインストール
メリットWindowsマシンにソフトを導入する必要がないのでコストや管理工数の削減につながる実績がある
UNIXのスキルがあまり要求されない

 ところで、読者の皆さんの中にはすでにWindowsマシンにNFSクライアントパッケージを導入して、UNIXマシンとファイル共有を行なっている方も多いと思います。
 WindowsマシンにNFSクライアントを導入するのと比べ、SambaなどのSMBサーバを導入するメリットは何でしょうか。表1に簡単にまとめてみました。
 最大のメリットを一言で表現すると、やはり『Windows側に何も追加でインストールする必要がない』ことにつきるでしょう。

Sambaの構成

 Sambaはsmbdnmbdという2つのプロセスから構成されています(図1)。
 smbdはWindows NTのServerサービスに相当し、ファイル/プリンタ共有機能を実現します。
 一方nmbdはComputer Browserサービスに相当し、マスタブラウザへの名前の登録を行なったり、自分がマスタブラウザになって、NetBIOS名の名前解決を行なったりする機能を実現します。
 その他、Sambaにはクライアント機能を提供するsmbclientやNetBIOS名の名前の問い合わせを行なうnmblookupなどのユーティリティも付属しています。
 今回は誌面の関係で紹介できませんが、これらはMicrosoftネットワークのトラブルシューティングにも有用ですので、試しに使ってみることをお勧めします。

図1:Windowsネットワーク内でのSambaサーバの役割
winnet_samba.png

Sambaの情報源

 Sambaの総本山といえば、http://www.samba.org/からたどれる各国のミラーサイトですが、当然すべて英語です。
 日本語のサイトでは、

●日本Sambaユーザ会(Samba Users Group Japan)
 http://www.samba.gr.jp/

にて、Sambaのドキュメントの翻訳を中心にした活動を行なっています(図2)。
 各種リソースへのリンクも充実しており、日本語のメーリングリストの案内もありますので、Sambaに興味を持った方は、ぜひご覧になってください。

図2:Samba日本語ホームページ(昔と今)(注02)
samba_hp_old.png samba_hp_new.png
注02:
執筆時点(1999年)のサイトが消えてしまっているので、現在(2004年)のサイトと一緒に並べてみました(^o^;;

Sambaの入手とインストール 

 以下では、自分で最初からインストールする方のために、簡単にインストール手順を説明します。
 前述したhttp://www.samba.gr.jp/より、国内ミラーサイトへのリンクがありますので、そこからSambaのソースを入手してください。執筆時点での最新版は、「samba-2.0.3.tar.gz」です。この記事はsamba-2.x以上を対象にしていますので、FreeBSDなどのports(注03)などを使う場合は「Sambaのバージョンが2.0.0以上」であることを必ず確認してください。
 Samba-2.0.0からはGNU autoconfに対応しましたので、インストールは図3のようにするだけで完了します。ただしRed Hat Linuxなどのように認証にPAMを使用している場合は、/etc/pam.d/samba図4のような記述を行なってください。

図3:Sambaのコンパイル
% gunzip -c samba-2.0.3.tar.gz | tar xvf -
% cd samba-2.0.3/source
% ./configure
% make
% su
Password:
# make install
図4:/etc/pam.d/sambaへの設定
auth  required  /lib/security/pam_pwdb.so nullok shadow
account required  /lib/security/pam_pwdb.so

 Sambaを構成するファイルはとくに指定しない限り、/usr/local/sambaにインストールされます。
 したがって、以下の説明では/usr/local/sambaにインストールを行なっているものとして説明を行ないます。別のパスにインストールした場合は、適宜読み替えてください。また/usr/local/samba/binにはパスを通しておいてください。
 なお、configure時に指定できるオプションはいろいろ用意されていますが、通常の使用目的ならあえて設定する必要はないでしょう。

注03:
Ports Collectionと言い、色んなソフトウェアを「make install」で手軽にインストールしてくれるソフトウェア管理システムです。
他のBSD系(OpenBSDやNetBSDなど)に採用されているシステムなので詳細は各サイトにて参照してください。

何はともあれ起動

 とりあえず、インストールしたSambaを動作させてみましょう。
 ただし、Sambaはsmb.confという設定ファイルがないと動作しません。以前のSambaに上書きインストールした場合以外は、自分でsmb.confを新規作成する必要があります。
 よくわからなければ、図5のようなsmb.confを作成して、/usr/local/samba/lib/smb.confとして保存してください。

図5:最低限のsmb.conf(作成例)
[global]
  workgroup      = <現在使っているドメイン/ワークグループ名>
  server string    = Samba %v      ← サーバの説明
  security       = USER        ← UNIX 上のパスワードファイルで認証をする
  encrypt passwords  = yes         ← 暗号化パスワードを使用する
  coding system    = EUC         ← 日本語を扱うための設定
  client coding system = 932         ← 日本語を扱うための設定
  wins server     = <WINSサーバのIP> ← WINSサーバを使用している場合
[homes]
  comment       = %U's Home Directory
  browseable      = no
  read only      = no

 保存したら、以下のようにしてSambaを起動できます。もちろん、現在すでにSambaが動作している場合は、まずそれらを終了させておいてください。

# /usr/local/samba/bin/smbd -D
# /usr/local/samba/bin/nmbd -D
※OS起動時に自動起動する方法は、各OSの解説書などを参照してください。

 なおsmb.confで行なった設定の結果は、testparmコマンドで確認することができます。スペルミスも図6のようにちゃんと指摘してくれますので、設定を変更したら、まずはチェックを行なうようにするとよいでしょう。

図6:testparmコマンドの出力
# /usr/local/samba/bin/testparm
Load smb config files from /usr/local/samba/lib/smb.conf
Unknown parameter encountered: "workgroupo"
Ignoring unknown parameter "workgroupo" ← workgroupoというスペルミスを指摘されている
Processing section "[homes]"
Loaded services file OK.
Press enter to see a dump of your service definitions
 ここで [ENTER] キーを押すと, 現在の設定を出力する 

暗号化パスワードファイルの作成

 続いてSambaがユーザ認証に使うパスワードファイル/usr/local/samba/private/smbpasswdの作成です。
 これには、UNIXのパスワードファイルから変換して作成する方法と、新規に作成する方法がありますが、ここでは新規に作成する方法を紹介します。
 まずは準備として図7のようにディレクトリを作成して下さい。

図7:新規ユーザの追加準備
# mkdir /usr/local/samba/private
# chmod 600 /usr/local/samba/private

その後rootで

# smbpasswd -a <追加するユーザ名>

を実行すればOKです。
 ただし、UNIX上に存在しないユーザを作成することはできません。また、すでにファイルに存在するユーザのパスワード変更もsmbpasswdを使って行なえます。
 この状態で“ネットワークコンピュータ”アイコンをクリックすると、smb.confで設定したワークグループ/ドメインの中にSambaサーバのアイコンが表示されているはずです。
 あとは、先ほどsmbpasswdコマンドで設定したユーザ名とパスワードで接続できます。

smb.conf:全体の設定 

 smb.confはSambaの動作を制御するファイルで、Sambaの設定の中核を担っています。
 smb.confでは、非常に多岐にわたる設定を行なうことができますが、大半の設定はデフォルト値でも充分機能しますし、通常まず変更する必要がない設定もありますので、ここでは図5smb.confを元に設定が必要な部分についてのみ説明したいと思います。説明がない箇所は、“おまじない”だと思ってそのまま記入してください。
 [global]セクションと[homes]セクションは、このsmb.confの設定だけでも十分使えると思います。

smb.confの構成

 smb.confはセクションとパラメータで構成されています。セクションは“[ ]”で囲まれたセクション名で始まり、次のセクションの直前までが範囲になります。
 一般のセクションには、ファイルまたはプリンタの共有リソースの設定を記述します。ただし、以下の3つのセクションだけは特殊セクションと呼ばれ、通常のセクションとは異なる機能を持っています。

●[global]セクション
 Samba全体に関わる設定、および個々のセクションで、定義されていないパラメータの規定値を設定します。

●[homes]セクション
 接続するユーザのホームディレクトリをファイル共有として設定する機能を定義します。

●[printers]セクション
 printcapファイルに記述されたプリンタをプリンタ共有として設定する機能を定義します。

 印刷に関する設定は3章(注04)で詳しく行ないますので、ここでは説明を省きます。また[homes]セクションは、通常“おまじない”通りの設定でOKですので、ここでは通常のセクションと[global]セクションに関する説明を行ないます。

注04:
Software Design 1999年7月号の『SambaとNetatalkで快適ネットワーキング Part 3』の事です。

smb.confの変数

 図5smb.conf中には、“%v”や“%U”といった記述があります。これらはSambaが定義している変数です。
 どういった変数があり、どのように定義されているかは、smb.conf(5)(注05)を参照してください。

注05:
詳しい情報は下記のリンクを参照してください。
http://www.samba.gr.jp/project/translation/2.0.6/man/smb.conf.5.html#VARIABLESUBSTITUTIONS

認証方式の設定

 Sambaがユーザを認証する方式は、いくつか用意されています。図5では「security = USER」という行で設定しています。これはUNIX上のパスワードファイルを使って認証を行なうということを意味しています。
 securityパラメータに指定可能なオプションは「USER」以外に、「SHARE」「SERVER」「DOMAIN」があります。
 「SHARE」はWindowsでいう“共有レベルのセキュリティ”に相当する機能を提供します。この設定はユーザ認証ができないという欠点があり、加えてSambaでの設定にもコツがいります。最近ではあまり使われないと思いますので、設定の詳細は割愛します。
 「DOMAIN」という設定はSamba-2.xの新機能であり、後で詳しく述べますので、ここでは省略します。
 「security = SERVER」にした場合は、外部のサーバに認証を依頼することになります。設定例は図8を参照してください。認証を依頼するサーバは、他のSambaマシンやWindows NTマシン(Workstation版でも可)を指定することができます。
 この設定にした場合、smbpasswdファイルは不要になりますが、それでも認証されるユーザは、必ずUNIX上に対応するアカウントを持っている必要があります。つまり通常は『UNIXに存在しないユーザでSambaサーバにアクセスすることはできない』ということです。この点は注意してください。

図8:「security = SERVER」の場合に必要な設定
[global]
  security = SERVER
  password server = NTSRV ← 認証を依頼するマシンのコンピュータ名(ホスト名ではないので注意)

認証されないユーザの扱い

 Samba-2.xからは「map to guest」というパラメータを使うことで、認証されなかった場合でも指定したユーザとしての権限を与えることができるようになりました。
 この機能は、Windows NTで“Guestアカウント”を有効にするようなものですので、使用するときは注意して扱ってください。

日本語の扱い

 smb.conf中では日本語はサポートされていません。
 たとえばセクション名に日本語を用いたり、「server string」パラメータに日本語でサーバの説明を書いても通常は文字化けしてしまいます(設定とクライアントの機種によっては正しく表示される場合もありますが)。
 しかし、日本語ファイル名のサポートはSambaに含まれており、smb.confを適切に設定すれば日本語ファイル名をきちんと扱うことができます。したがって、共有名に日本語を使えない点さえ我慢してもらえば、英語表示に抵抗のある一般のユーザにも使ってもらえるでしょう。
 通常の日本語対応UNIXは漢字コードとして“EUC”をサポートしていますので、図5のように「coding system」として“EUC”を指定します。なお、日本語をサポートしていないUNIXを使っていても、「coding system」として“HEX”か“CAP”を指定することでSambaで日本語ファイル名を扱うことが可能になります。
 一例として、“表示.txt”という日本語ファイル名のファイルを保存したときにどのようなファイル名で保存されるかを図9に示しました。UNIX側でサポートしていない漢字コードを指定するとファイルを作成/削除できなかったり、UNIX側でコマンドを実行したときに問題が発生したりしますので、注意してください。
 ただし、“HEX”と“CAP”は、ASCII文字だけを使ってファイル名を生成しますので、どんなUNIXでも使用できます。

図9:“表示.txt”をEUC環境で表示した結果
% ls -1
XXXX:95╲:8e:a6.txt ← ASCII文字から構成されているCAP形式のファイル名
表示.txt      ← EUCのファイル名。OSが対応しているので表示される
╲ヲ.txt*       ← SJISのファイル名。文字化けしている

ネットワークに関する設定

 図5smb.confで構成されたSambaは、Microsoftネットワーク中ではクライアント的な役割を果たします。
 この“クライアント的な役割”をきちんと説明するためには、“ブラウジング”に代表されるMicrosoftネットワークの機能と実装から説明しないといけないのですが、複雑怪奇なこと、とてもこの場で説明できるような単純なものではありません。
 興味のある方は、Windows NTリソースキットなどで勉強してください(^_^;;

 とりあえず実際に、会社の場合と自宅(SOHO)の場合という2つの状況を想定して、関連するパラメータの設定例を示します。

@会社の場合
 会社ではすでにWindows NTマシンが導入されていると思います。
 この場合、Sambaマシンはなるべく出しゃばらないほうが得策ですので、図5の設定のままで良いでしょう。

A自宅(SOHO)の場合
 自宅(SOHO)でSambaを導入する場合、それまではワークグループ構成で使っているという場合がほとんどだと思います。
 この場合は、Sambaに積極的に“サーバ的な役割”を演じてもらいましょう。図10のように設定してみてください。
 ただし、複数のSambaサーバが存在する場合、“サーバ的な役割”を演じるマシンは“セグメントごとに1台だけ”に制限してください。

図10:“サーバ的な役割”を果たす設定
[global]
  os level     = 33
  domain master  = Yes
  preferred master = Yes
  local master   = Yes
  wins support   = Yes ← WINSサーバとして機能させる時に指定する
※個々の設定の意味は、smb.conf(5)(注06)およびWindows NTリソースキットのネットワーキングガイドなどを参照してください。
注06:
smb.conf(5)の“グローバル・パラメータの全リスト”を参照してください。
http://www.samba.gr.jp/project/translation/2.0.6/man/smb.conf.5.html#COMPLETELISTOFGLOBALPARAMETERS

ホスト単位でのアクセス制限

 Windowsにはない機能として、ホスト単位でのアクセス制御の機能があります。
 図11192.168.10.xのホストからはアクセスを許可するが、192.168.10.1からのアクセスは禁止するという設定の例です。
 このように、「hosts allow」と「hosts deny」パラメータを使うことでホスト単位でのアクセスを設定できます。ただし当然ですが、ここで接続を許可されても最終的にアクセスするにはユーザ認証が必要です。

図11:ホスト単位のアクセス制御の例
[global]
  hosts allow = 192.168.10.0/255.255.255.0
  hosts deny = 192.168.10.1

smb.conf:共有の設定 

 ここまでは、[global]セクションの設定を見てきました。次は、共有ごとの設定を見ていきましょう。
 共有については一般的な設定を例示するのはなかなか難しいのですが、ここでは図12のようなsmb.confの設定を例に説明します。

図12:共有セクションの記述例
[global]
  map to guest = Bad User
[homes]
  comment   = %U's Home Directory
  read only  = No
  browseable = No
  valid users = %S

[project1]
  comment    = Project1 space
  path      = /project1
  writeable   = Yes
  create mask  = 664
  directory mask = 775
  force group  = project1
  valid users  = +project1

[pub]
  comment    = Archive directory
  path     = /mnt/pub
  guest ok   = Yes
  guest only  = Yes
  guest account = ftp
  writeable   = Yes

アクセス権の設定

 企業内でSambaを使っていく場合、アクセス権の設定は避けて通れません。
 Windows NTとUNIXではアクセス権の実装がかなり異なっていることもあって、NT Serverと同じようにはなかなか設定できません。一方で、Sambaにしか設定できない機能もあります。
 これまであまりきちんと紹介されてこなかったと思いますので、すこし詳しく見ていきましょう。

ホスト単位のアクセス制限

 Sambaの場合は、共有ごとに設定することもできます。設定方法は図11を参照してください。

共有単位のアクセス制限

 図13[share1]は読み込み専用。[share2]は書き込み可能に設定した例です。このように共有単位で読み込み専用にするか否かを制御できます。なおデフォルトは「writeable = no」です。

図13:共有単位の読み書きの制御
[share1]
  writeable = no  ← 読み込み専用(規定値)。他にも多数の同義語がある
[share2]
  writeable = yes  ← 読み書き可能。他にも多数の同義語がある

ユーザ単位でのアクセス制限

 図14[share3]は、「user1user2およびusersグループ」からのアクセスは許可するが、「rootadmおよびbinグループ」からのアクセスは許可しないという設定です。
 [share4]のように「invalid user」だけを指定した場合、それ以外のユーザはすべてアクセスできるようになります。

図14:ユーザ単位のアクセス制御
[share3]
  valid user  = user1 user2, +users
  invalid users = root adm +bin
[share4]
  invalid user = ftp

ユーザ単位の読み書きのアクセス制限

 図15[share5]は、「ユーザguestftp」は読み込み専用、「ftpadmin」には書き込みを許可する例です。ここでの設定は、前述した共有単位でのアクセス制限に優先します。
 たとえば、「writeable = no」であっても、「write list」に記述されたユーザは書き込むことができます。

図15:ユーザ単位の読み書きの制御
[share5]
  read list = guest, ftp
  write list = ftpadmin

UNIX上のアクセス権との関係

 最終的なアクセス権は、Sambaで設定したものにUNIX上でのアクセス権が加味されて決定されます。
 たとえば「write list」に入っているユーザでも、UNIX上でそのユーザに書き込み権がないファイル/ディレクトリについては、書き込むことはできません。

アクセス権の設定例

 一通りアクセス権について説明しましたが、以下では実際の適用例として図12の設定を説明します。

●homes共有
 ユーザのホームディレクトリです。図12のようにすることで、他のユーザのホームディレクトリへの接続を制限します。

●project1共有
 プロジェクト内の共有フォルダということで、「特定グループに属するユーザ」以外からのアクセスを禁止しました。
 また、作成するファイルのデフォルトのアクセス権を変更して、「同じUNIXのグループに属するユーザ」であれば互いに他人の作成したファイルを編集できる設定になっています。

●pub共有
 インストールイメージなどを格納するアーカイブフォルダということで、書き込みを禁止します。
 また、UNIX上にアカウントがないユーザでも接続できるようにした上で、すべてのユーザが「ftpユーザ」の権限でアクセスするようにしました。
 これで、一部のディレクトリのみを書き込み可能にするような設定も比較的簡単に行なうことができます。

その他の設定

 ここまではアクセス権を中心に解説してきましたが、Sambaには以下のような機能のパラメータも用意されています。
 前述した日本語Webページから、smb.confの日本語版も入手できますので、上記で解説したパラメータも含め、ぜひ一度smb.conf(5)(注07)を参照してください。

●シンボリックリンクの追跡の可否
 wide links

●Visual Studioのサポート
 dos filetime resolution、
 fake directory create times

●DOSのファイル属性のサポート
 map archive、map hidden、map system

●Quotaのサポート
 まだ正式リリースではありませんが、configureで“--with-quotas”フラグをつけてSambaをコンパイルすることで、OSのQuota機能が利用できます。
注07:
smb.conf(5)の参照リンクページ
http://www.samba.gr.jp/project/translation/2.0.6/man/smb.conf.5.html

Macintosh(Netatalk、CAP)との連携機能 

 同じUNIX上のファイルを、SambaとNetatalkやCAPで共用したいこともあると思います。
 Sambaにはちゃんとこのための仕組みも備わっています。

日本語ファイルの扱い

 NetatalkやCAPでは、日本語のファイルを図9の“CAP形式”というエンコードで保存します。
 Sambaでこの形式のエンコードを扱うためには、[global]セクションで

coding system = CAP

と指定してください。
 これでSambaでも“CAP形式”で日本語ファイル名を扱うようになりますので、WindowsとMacintoshの間で日本語のファイル名を共有することができます。
 しかし、これではUNIX上で“CAP形式”のまま表示されてしまうため、こうしたファイル名をつけたファイルがUNIXで扱いにくくなります。しかも「coding system」パラメータは[global]セクションのパラメータですので、設定するとSamba全体に影響が及んでしまいます。
 UNIX上での利便性をとるか、WindowsとMacintosh間の利便性をとるかをよく考えた上で設定してください。

共有の設定

 NetatalkやCAPは「Macintoshファイル」をUNIX上に保存するときに、「リソースフォーク」と「データフォーク」という形にファイルを分けて別々に保存しています。
 この「リソースフォーク」ファイルはユーザによって勝手に削除されると困りますので、通常は図16のように設定します。
 なお、「delete veto files」にはバグがあり一部のOSではうまく動作しません。
 必要な方は、http://samba.bento.ad.jp/pub/unoff-patch/2.0.3(注08)にあるパッチを適用してください。

図16:Netatalkと連携する例
[macshare]
  delete veto files = yes
  veto files    = /.AppleDouble/.bin/.AppleDesktop/Network Trash Folder/
注08:
現在このリンクは存在しません。下記のリンクを参照してください。
http://ftp.samba.gr.jp/pub/samba-jp/patch/2.0.3/

GUI設定ツール:swat 

 swatは「Samba-2.0.0」から導入されたツールで、Web経由でのsmb.confの編集を実現します(図17)。
 Web経由での編集は非常に快適ですので、一度使ってしまうと手放せなくなるでしょう。

図17:swatの起動画面
swat.png

 もちろん、ここまで述べてきた設定もすべてswat経由で行なうことができます。
 ただし、Sambaの設定をリスト表示したり、必要な部分だけをとりあげて解説したりするには、smb.confファイルへの記述形式で説明したほうがわかりやすいため、本記事中ではswatからの設定方法は解説しません。
 もっとも、smb.confの修正ができる方であれば、swatからの設定に迷うことはないでしょう。
 swatは“inetd”から起動するので、図18図19のように/etc/inetd.conf/etc/servicesに1行ずつ追加してください。

図18:/etc/inetd.confへの追加内容
swat stream tcp nowait.400 root /usr/local/samba/bin/swat swat
図19:/etc/servicesへの追加内容例
swat     901/tcp

 なお、ポート番号は901でなくても構いません。設定ができたら

http://sambaserver:901/

のようなURLでアクセスしてみましょう。パスワードダイアログが出てきますので、rootのアカウントとパスワードを入れてください。
 正しく動作していれば、図17の画面が出てくるはずです。
 swatsmb.confを編集するとコメントなどはきれいに消されてしまいますので、必ずバックアップしておいてください。

NTドメインとの連係機能 

SambaをNTドメインのクライアントにする 

 ここまで、一通りSambaの設定を解説してきました。
 Sambaの機能の多さに驚かれた方もいらっしゃると思いますが、これらのほとんどは以前からSambaがサポートしていた機能で、細かい機能強化はあるものの、とくに目新しいものではありません。
 「Samba-2.0」から、新たにNT Workstationと同様にドメインに参加する機能が追加されました。ここではこの新機能について説明しましょう。

ドメインへの参加

 ここでは、「HOMESRV」というコンピュータ名のプライマリドメインコントローラ(以降、PDC)がある「HOME」というドメインに、「LENA」というSambaサーバを参加させる場合を例にとって説明します。
 まず下準備として、Windows NTの“サーバマネージャ”を使って、Sambaマシンをドメインに追加しておいてください。そして、Sambaマシン上でSambaプロセスを停止してから以下のように入力します。

lena# smbpasswd -j HOME -r HOMESRV

smbpasswd: Joined domain HOME.”と表示されれば成功です。ここで/usr/local/samba/privateに“HOME.LENA.mac”というファイルと“MACHINE.SID”というファイルができていることを確認してください。
 次に、smb.conf図20のように修正します。

図20:ドメイン参加するのに必要なsmb.confの設定例
[global]
  security     = DOMAIN
  workgroup     = HOME   ← 参加するドメイン名を指定
  encrypt passwords = yes
  password server  = HOMESRV ← ドメインのドメインコントローラを指定

 ここでSambaプロセスを起動してください。起動に成功すれば、晴れてSambaもドメインのメンバです。
 現時点ではメンバになっても直接的なメリットはあまりないのですが、将来的にはドメインの情報を活用できるような機能が続々と登場してくると思います。
 現在、ドメインに参加していないと機能しない設定には、ユーザの自動作成/削除を行なう「add user script」、「del user script」というパラメータがあります。誌面の具合で詳しく紹介できませんが、非常に面白い機能ですので、みなさんも試していただければと思います。

SambaをWindows 95/98のログオンサーバにする 

 現在のSambaでも、Windows 95/98のログオンサーバとしてなら十分に機能します。
 端末がWindows 95のみで、PDCとしてNT Serverを導入しようか迷っている環境はまだまだ多いと思います。NT Serverを導入する前にSambaを試してみてはいかがでしょうか。

Sambaの設定

 ここでは、Sambaサーバを「HOME」というドメイン/ワークグループのログオンサーバとして構成します。
 図21のように、smb.confを設定してください。また、動作確認のために図22のようなログオンスクリプトを記述し、Sambaサーバの[netlogon]共有に配置します。

図21:ログオンサーバとして構成するためのsmb.confの設定例
[global]
  workgroup     = HOME    ← ドメイン/ワークグループ名を記述する
  security     = USER    ← SERVERも可能
  encrypt passwords = yes    ← ドメインコントローラの場合は必須
  domain logons   = yes
  logon script   = logon.bat ← ログオンスクリプトを指定する
  logon drive    = H:     ← ドメインコントローラの場合、
                   ホームディレクトリをマウントするドライブ名を指定
  os level     = 33   
  domain master  = Yes  
  preferred master = Yes  
  local master   = Yes    これらは図10を参照


[netlogon]             ← ログオンスクリプトや固定プロファイルを配置するディレクトリ
  comment = Net Logon Share
  path   = /usr/local/samba/lib/netlogon
  writable = no
図22:動作確認用のログオンスクリプト(logon.bat)
@echo logon script is executing...
@pause
※Windowsのエディタなどで作成すること

 Windowsマシンの側では、[コントロールパネル]‐[ネットワーク]‐[Microsoftネットワーククライアント]のプロパティを図23のように設定するとともに、[コントロールパネル]‐[パスワード]の“ユーザ別の設定”タブで、図24のように“ユーザ別の設定”をチェックします。これが終ったらマシンをリブートして下さい。

図23:ドメインにログオンする設定にする
win_ctrl.png
図24:ユーザ個別のプロファイルを保持する設定
password.png

 リブート後起動したら、設定したドメイン/ワークグループにログオンしてください。ログオンスクリプトが動作して、UNIX上のホームディレクトリに移動プロファイルが保存されれば、設定は正しく動作しています。

SambaをWindows NTのPDCにする 

 最後に、どうしても待ち切れないという方のために、SambaをPDCとして機能させる方法について紹介します。
 ただし、このためにはSambaの開発中のソースコードを使用する必要があります。最悪の場合、クライアントのSAMファイルが破壊されて、再インストールを余儀なくされる可能性もありますので、あくまで自己責任のもとで行なってください。
 なお、Windows NT側の設定はかなり駆け足で説明しています。Windows NT自体についての設定の詳細は、市販の参考書籍などをご覧ください。また、Sambaの本家のサイトにあるドメイン機能のFAQも併せてお読みください。
 http://mirror.nucba.ac.jp/samba/docs/ntdom_faq/samba_ntdom_faq.html(注09)
などのミラーサイトから入手できます。

注09:
現在このリンクは存在しません。日本Sambaユーザ会のドキュメントを参照するか、
同サイト内の「Sambaの認証をWindowsに統合する」を参照してください。
http://www.monyo.com/technical/unix/samba0304/

最新版ソースの入手とインストール

 PDC機能を使うためには、正式にリリースされたソースではなく、開発者用のソースを入手する必要があります。
 Sambaの公式ミラーサイトでは、Sambaがミラーされているディレクトリの中に、「cvs_current」というディレクトリがありますので、この下をダウンロードします。wgetなどを用いるとよいでしょう。
 インストール自体は、通常のSambaと同様に行なって下さい。

まずは準備

 インストールが完了したら、引続きsmb.confを修正します。以下では、「HOME」というドメインに「MISAKO」というマシンを参加させる場合を例にとって説明します。
 まずはsmb.confの修正です。Windows 95/98の例と同様に図21図22の設定を行なってください。
 設定を行なったら、smbdプロセスを再起動してください。正しく設定が行なわれていれば、/usr/local/samba/privateに“DOMAIN.SID”というファイルができている筈です。
 続いてドメインへコンピュータを追加します。ここでは「MISAKO」というマシンを登録する場合を例に説明します。
 Sambaでは通常のユーザと同様に、まずUNIXにアカウントを追加してからそのアカウントをsmbpasswdファイルに登録する作業が必要です。詳細は図25を参照してください。

図25:ドメインにコンピュータを追加する
# useradd -s /bin/false misako$
# smbpasswd -m -a misako

 /etc/passwdに登録するユーザ名は登録したいコンピュータ名の後ろに“$”をつけたものを登録しますが、smbpasswdに登録する時は“$”は不要なので注意してください。
 またアカウント名以外のパラメータは一切使いませんので、悪用されないように適切に設定してください。
 これでSamba側の準備は完了です。
 Windows NT側で、いつもと同じ操作でドメインに参加してみましょう。設定がうまくいっていれば、『DOMAINドメインへようこそ』というダイアログボックスが出て、めでたくSambaがPDCのドメインに参加できるはずです。
 さっそくリブート後ログオンしてみましょう。

Sambaのドメインにログオンする

 無事にログオンできましたか?
 うまくいくとログオン時にログオンスクリプトが実行されるので、ドメインに入っているという実感が湧くと思います。また、コマンドプロンプトを開くと、図21の「logon drive」で指定したドライブをカレントドライブとなっているはずです。
 また、Windows NTでドメインにログオンすると、自分のマシンに対するAdministrataor権限がなくなってしまいます。
 これは不便なので、とりあえず1回抜けて、“ドメインユーザーマネージャ”でログオンしたアカウントにAdministrator権限を与えてみましょう。
 “ユーザの権利”で“ローカルログオン”にアカウントを追加しようとすると、図26のようにUNIX側のグループやアカウントが参照できるようになっていることに気づくと思います。

図26:Sambaマシンのユーザやグループが取得できる
usergroup.png

 また、ドメインのアカウントで1回ログオフしているので、移動プロファイルが作成されています。ドメインのアカウントのUNIX上のホームディレクトリを見ると、図27のように、ちゃんと書き込まれていることがわかります。

図27:UNIX上に書き込まれたプロファイル群
% ls -l /home/user/profile/
total 740
drwxr-xr-x  2 user  other    512 May 6 05:43 Cookies/
drwxr-xr-x  5 user  other    512 May 6 05:43 Favorites/
drwxr-xr-x  3 user  other    512 May 6 06:42 History/
-rwxr--r--  1 user  other    100 May 6 05:37 IELnkbak.ini*
-rwxr--r--  1 user  other    506 May 6 05:37 Internet Explorer Lnk.bak*
drwxr-xr-x  2 user  other    512 May 6 05:43 NetHood/
-rw-r--r--  1 user  other   352256 May 6 05:44 NTUSER.DAT
-rwxr--r--  1 user  other    1024 May 6 05:44 ntuser.dat.LOG*
drwxr-xr-x  2 user  other    512 May 6 05:43 Personal/
drwxr-xr-x  2 user  other    512 May 6 05:43 PrintHood/
drwxr-xr-x  2 user  other    512 May 6 05:43 Recent/
drwxr-xr-x  2 user  other    512 May 6 05:43 SendTo/
drwxr-xr-x  2 user  other    512 May 6 05:43 Templates/
drwxr-xr-x  6 user  other    512 May 6 05:43 Temporary Internet Files/
drwxr-xr-x  5 user  other    512 May 6 05:43 デスクトップ/
drwxr-xr-x  3 user  other    512 May 6 05:43 スタート メニュー/
%

サーバツールを使ってみる

 NT Serverには、ドメインを管理するツールがいくつか付属しています。
 これらがSambaに対してどのように機能するかは、みなさんも興味があるところだと思います。そこでNT ServerをSambaのドメインに参加させ、ツールを起動してみます。
 まず、“サーバーマネージャ”を起動した結果を図28に示します。「LOIRE」というSambaマシンが、ちゃんとPDCとして認識されているのがわかります。
 ただし、[ファイル]メニューのドメインへのコンピュータの追加などは動作しません。つまり、表示は可能だが変更などはまだサポートされていないということのようです。

図28:SambaマシンがPDCとして認識されている
samba_srvmgr.png

 次に、“ドメインユーザーマネージャ”を起動してみます。図29のように、smbpasswdに登録されているユーザや/etc/groupに登録されているグループの一覧が見えるのがわかります。

図29:ドメインユーザーマネージャを起動したところ
usrmgr1.png

 また、ユーザのプロパティを見ると、図30のように、プロファイルのパスなどがきちんと設定されているのこともわかります。しかし、これらも表示のみで、変更はできませんでした。

図30:Sambaの設定が反映されているが書き込みは不可
usrmgr2.png

アクセス権の設定

 今度はNT側の共有にアクセス権を付与してみましょう。図31のように一部表示の不具合はあるものの、Sambaドメインのユーザ/グループ情報が表示され、設定も可能でした。

図31:共有にアクセス権を付与するアカウントの選択画面
usrmgr5.png

ドメイン機能を使ってみて

 以上、SambaのPDC機能について見てきました。まだα版のため一部機能に不具合がありますが、実装予定の機能は一通り見えてきたと思います。
 現在のバージョンではまだまだ定常運用はお勧めできませんが、自宅でWindows NTを使っているなら、試しにSambaでドメインを組んでみてはいかがでしょうか。

終わりに 

 以上、駆け足でしたが、Samba-2.xの新機能やちょっとこった使い方を紹介してみました。
 今後のSambaの大きな機能強化としては、PDC機能のリリースとWindows 2000に実装される「Active Directory」への対応が挙げられます。
 PDC機能は、今年末にリリース予定のSamba 2.1でリリースされるとアナウンスされています。これからSambaがどこまで進化していくか、楽しみです。

参考情報 

●日本Sambaユーザ会(Samba Users Group Japan):
http://www.samba.gr.jp/

●SAMBA Web Pages: [英文]
http://www.samba.org/

注記・補足 

  1. 2004.07.06 HTMLレベルの整形、図の作成を行いました。
  2. このHTML文書作成に際し、元の草稿と雑誌の方と照らし合わせながら校正し、私(にゃお)が部分的に加筆・修正を行なっています。至らない部分がある場合はご了承ください。
  3. 本文書は、Software Design 1999 年 07 月号の『第2特集』に掲載された『SambaとNetatalkで快適ネットワーキング Part 1』の草稿をにゃお様の方で HTML 化して掲載しているものです。

Copyright (C) 1998-2009 TAKAHASHI, Motonobu
Last update: 2006-07-12 00:00:19 JST
webmaster@monyo.com