Chapter 1. SAMBAのインストールとテスト方法

Andrew Tridgell

Samba Team

Jelmer R. Vernooij

The Samba Team

John H. Terpstra

Samba Team

Karl Auer

Dan Shearer

Samba Team

Table of Contents

Sambaの入手とインストール
Sambaの設定 (smb.conf)
設定ファイルの文法
TDBデータベースファイルの情報
Sambaを起動する
設定の例
SWAT
サーバー上で有効な共有の一覧表示
UNIXクライアントによる接続
リモートのSMBクライアントからの接続
うまく動かない時には
まだ解決しない?
共通のエラー
大量のsmbdプロセス
エラーメッセージ: open_oplock_ipc
ネットワーク名が見つからない

Sambaの入手とインストール

Sambaのバイナリパッケージは、ほとんどのLinuxかUNIXディストリビューション に含まれている。また、 the Samba home page(本家)にも いくつかのパッケージが置いてある。使用するOSに合わせたパッケージのイン ストールの詳細については、OSのマニュアルを参照してほしい。

もしもソースからSambaをコンパイルすることが必要ならば、 Sambaのコンパイル方法を参照してほしい。

Sambaの設定 (smb.conf)

Sambaの設定はsmb.confファイルに格納され、それは、通常 /etc/samba/smb.conf/usr/local/samba/lib/smb.confにある。このファイル を自分自身で編集するか、あるいは、たとえば、Sambaに含まれているWebベー スのインタフェースSWATのような、種々のGUIツールのどれかを使って編集する ことができる。

設定ファイルの文法

smb.conf ファイルは、昔のWindows 3.1で使われていたいろいろな .iniファイルと同じ文法を使う。おのおののファイル はいくつかのセクションからなり、それらは行の先頭が大括弧 ([])で囲まれた、セクション名から開始される。それぞれ は0またはそれ以上の、等号(=)で分離されたキー/値ペア を含む。ファイルは単なるテキストファイルなので、好みの編集ツールで開い て編集できる。

smb.confファイル中にあるおのおののセクションは、共有か、Sambaサーバー上 のメタサービスを記述している。[global]セクションは特 別であり、Sambaサーバー全体にたいして適用する設定を含む。Sambaは複数の メタサービスをサポートし、おのおのは固有の機能を提供する。例えば、 [homes]共有は、メタサービスであり、おのおののユーザー のための、個別のホーム共有を提供させる。[printers]は メタサービスであり、プリントキューサポートを確立し、それは、Windows クライアントから、UNIX/Linuxプリントスプーラに対してプリントジョブが 送られることに先立ち、中間スプールディレクトリの位置を指定する。

printers メタサービスは、printcap ファイル中で指定されたものか、lpstatコマンドか CUPS API経由かでのすべてのプリンターを共有プリントキューとして公開する ようにする。smb.confファイル中のprinters節は browseable でないように設定できる。もしもbrowseableに設定すると、 共有として見えるようになる。これは、WindowsプリントキューとしてUNIX システムプリンターを有効にするのみ反応するこのメタサービスをTmakes no sense。もしも、commentパラメーターが指定されるならば、 その値がWindowsエクスプローラーのブラウズリスト中にプリンター名の一部と して表示される。

共有またはメタサービスを指定するsmb.confファイル中のおのおののセクション は節(stanza)と呼ばれる(訳注:日本ではセクションという呼び名が通用している ため、以下はすべてセクションとする)。globalセクション はsmb.confファイル中のすべての他のセクションに影響する設定を指定する。 設定パラメーターはsmb.confマニュアルページに説明がある。いくつかのパラメーター はglobalセクションのみで使われ、その他いくつかは通常の 共有またはメタサービスセクションでのみ使われ、いくつかは、グローバルまたは 共有、メタサービスセクションで使える。

最小のsmb.conf はとても小さいsmb.confを含む。

Example 1.1. 最小のsmb.conf

[global]
workgroup = WKG
netbios name = MYNAME
[share1]
path = /tmp
[share2]
path = /my_shared_folder
comment = Some random files

TDBデータベースファイルの情報

この節では、Samba-3で使われるデータベースの簡単な説明を含む。

Sambaが格納するtdbファイルのディレクトリの位置は、コンパイル時オプ ションによって変わる。Samba-3は2つの場所にtdbファイルを格納する。 その位置を決める最も良い方法は、以下のコマンドを実行する:

root#  smbd -b | grep PRIVATE_DIR
   PRIVATE_DIR: /etc/samba/private

これは、秘密のtdbファイルが/etc/samba/private ディレクトリに格納されることを意味している。Samba-3はまた、より ありふれたデータを含むいくつかのtdbファイルを使う。それらのファイルの 位置は以下を実行することで見つけられる:

root#  smbd -b | grep LOCKDIR
   LOCKDIR: /var/lib/samba

それゆえ、例の中で表示されている残りの制御ファイルは /var/lib/samba ディレクトリに格納される。

継続的に使われるtdbファイルは 継続的なTDBファイルの説明一覧 にある。すべての継続的なtdbファイルは通常バックアップすべきである。 tdbファイルバックアップのためにtdbbackupユー ティリティを使うこと。すべての継続的なtdbファイルはマシンの マイグレーション、アップデートとアップグレードの間保存すべきである。

一時的なtdbファイルはバックアップの必要性はなく、マイグレーション、 アップデートとアップグレードの間保存する必要もない。一時的なtdb ファイルは 一時的なTDBファイルの説明 に説明がある。

Table 1.1. 継続的なTDBファイルの説明

名前説明
account_policy

Samba/NTアカウントポリシーの設定、パスワード満了の設定を含む。

group_mapping

Windows グループ/SID から UNIXグループへのマッピングテーブル。

ntdrivers

プリンター単位の、インストール済みドライバー情報を格納。

ntforms

プリンター単位の、インストール済みフォーム情報を格納。

ntprinters

プリンター単位の、devmode構成設定情報を格納。

passdb

tdbsamパスワードバックエンドが使われる時のみ存 在。このファイルはSambaSAMAccount情報を格納する。 注意:このファイルは/etc/passwdファイルからか他 の代替システムソースからのユーザーのPOSIXアカウント を必要とする。

registry

winreg RPC経由で種々のデータベーステーブルをエ クスポートすることをサポートするための、読み出 し専用Windowsレジストリスケルトンデータベース。

secrets

このファイルはWorkgroup/Domain/Machine SID、 LDAPディレクトリ更新パスワードとSambaが正常に 動作するために必要な重要な環境データのさらなる 集合。このファイルには、秘匿しなければならない とても機密性のある情報が含まれている。このファ イルはPRIVATE_DIRディレクトリに格納される。

share_info

共有単位のACL情報を格納。

winbindd_idmap

Winbinddのローカル IDMAPデータベース。


Table 1.2. 一時的なTDBファイルの説明

名前説明バックアップ
brlock

バイトレンジロック情報。

No
connections

最大接続数を拡張するために使われる一時的な接続上のキャッシュ。

no
eventlog/*tdb

イベントログエントリのレコードほとんどの環境ではこれはシステムログのキャッシュである。

no
gencache

WINSサーバーと信頼されるドメインデータのための汎用キャッシュデータベース。

no
login_cache

ログイン情報のための一時的なキャッシュで、特に不正なパスワード試行用。

no
messages

smbdによって処理されるメッセージの一時的な格納用。

no
netsamlogon_cache

net_samloginリクエストからのユーザーnet_info_3 構造データのキャッシュ(ドメインメンバーとして)。

no
perfmon/*.tdb

パフォーマンスカウンター情報。

no
printing/*.tdb

プリントサービス単位で作成されるlpqコマンドのキャッシュされた出力。

no
schannel_store

機密ファイルで、PRIVATE_DIRに格納され、接続セッ トアッププロセスの再ネゴシエーションの必要なし で再接続可能な一時的な切断が可能になるための暗 号化した接続情報を含む。

no
sessionid

種々のセッション情報とutmp処理のための一時的なキャッシュ。

no
unexpected

どのプロセスもリッスンしていない時に受け取ったパケットを格納する。

no
winbindd_cache

NT4ドメインかADSから受け取ったアイデンテティ 情報のキャッシュ。ユーザーリストなどを含む。

yes

Sambaを起動する

Sambaは2つまたは3つのdaemonから構成される。daemonはバックグラウンドで動 作し、サービスを提供するUNIXのアプリケーションである。サービスの例としては、 httpd と呼ばれるdaemonが Apache Webサーバーである。 Sambaの場合は、3つのdaemonがあり、そのうち2つが最低必要である。

Sambaサーバーは以下のdaemonから成り立っている:

nmbd

このdaemonはすべての名前登録と名前解決要求を処理する。 これはネットワークブラウジング中で必要とされる主要な 伝達手段である。これは、すべてのUDPベースのプロトコル を処理する。nmbddaemonはSamba開始 プロセスの一部分として最初にコマンドを起動すべきである。

smbd

このdaemonはファイルと印刷関係の操作のための、TCP/IP ベースのすべてのコネクションサービスを処理する。また、 ローカルでの認証も管理する。これは nmbdの開始に引き続いて起動すべきで ある。

winbindd

このdaemonはWindows NT4またはADSドメインのメンバーの時に 起動すべきである。また、他のドメインとの信頼関係を結ぶ 時にも必要である。winbindddaemonは idmap uididmap gidパラメーターがsmb.conf ファイル中に存在するかどうかをチェックする。もしもそれ らが見つかった場合、winbinddはUIDと GIDの割り当てのために指定された値を使う。もしも、パラメー タが指定されていなければ、winbindd は起動するが、UIDとGIDの割り当てが出来ない。

SambaがOSベンダによってパッケージ化されている時、開始プロセスは通常プラッ トフォーム全体に渡って統合された固有の機能となっている。Sambaの起動の正 しい管理に関する特定の情報のためにOSプラットフォームの管理マニュアルを 参照してほしい。

設定の例

ディストリビューションtarファイル中にのソースコードのexamplesサブディレ クトリ中にサンプルの設定ファイルがある。実際問題としてオプションがどの ように組み合わさるかを見る事が出来るので、注意深く読むことを推奨する。 すべてのオプションはマニュアルページを見よ。必要があることに適用するた めと、smb.conf.defaultファイルを設定し始めること は価値があるかもしれない。そこには多くのコメントが書いてある。

最も簡単に使える設定ファイルは もう1つ別の簡単なsmb.confファイル 中で見る事ができるようなものを含んでいる。

Example 1.2. もう一つ別の簡単なsmb.confファイル

[global]
workgroup = MIDEARTH
[homes]
guest ok = no
read only = no

これは、サーバー上にアカウントを持つ誰でも、ログイン名かサービス名 として、homesへの接続を許す。 (注意:Sambaが使うワークグループ名も設定する必要がある。既定値の ワークグループ名はWORKGROUPである。)

正しい場所にsmb.confファイルをきちんと置くこと。正しい場所は、 バイナリファイルの構築方法に依存することに注意。正しい場所を知る ためには、以下のsmbdコマンド行を実行することで わかる:

root#  smbd -b | grep smb.conf

[homes]共有に対するセキュリティ設定の詳しい情報は Sambaのセキュア化を参照してほしい。

testparmによる設定ファイルの検査

testparmプログラムを使ってsmb.confファイルの内容を検査することは 重要である。もしもtestparmが正しく動けば、設定されたサービスの一覧を 表示する。もしもそうでなければ、エラーメッセージを表示する。それが 正しく動くようにして、動かす前にサービスが合理的であるようにすること。 以下のコマンドを入力する:

	root#  testparm /etc/samba/smb.conf
	

testparmは設定ファイルを解析し、不正な文法や不明なパラメーターを報告する。 また、共通の設定ミスをチェックし、それが見つかれば警告を発する。

smb.confファイルを変更した後には必ずtestparmを実行すること!

smb.confファイルはsmbddaemonによって定期的にチェッ クされ、 nmbdwinbinddによりそれがspawnさ れる毎インスタンスごとにチェックされる。可能な限りこのファイルを小さく しておくことはよいことである。多くの管理者はSamba設定を文書化すること を好み、そのため、このファイルを小さくしておくことは、賢明な文書化手法 である。これを適用する1つの解決方法は、 smb.conf.masterというような名前で別のファイルに、 すべての文書と設定を1つにまとめておくことである。 testparmユーティリティは、以下のように、マスターの 設定および文書ファイルから完全に最適化されたsmb.confファイルを作成 するのに使える:

root#  testparm -s smb.conf.master > smb.conf

この管理手法は最小限の必要性のためにsmb.confファイルサイズを同じ時に 保つ間詳細な設定変更レコードをメンテナンスすることを可能にする。

SWAT

SWATはWebベースの、Sambaの設定を行うために使うことが出来るインタフェー スである。SWATはあなたのプラットフォームでSambaパッケージで有効になって いないかもしれないが、分離したパッケージになっているかもしれない。もし もSWATを構築することが必要ならば、編集に注意してSWATのマニュアルページ を読んでソースコードからSWATを構成してインストールしてほしい。

SWATを起動するために、好みのブラウザーを起動し、 http://localhost:901/ を指定する。 Sambaを動かしているコンピューターがブラウザーが動いているコンピューターと異な るならば、localhostの部分を置き換えること。

SWATは任意のIP接続されたマシンからブラウザー経由で使えるが、平文でパスワー ドがネットワーク上を流れ、盗聴の危険性があることに注意してほしい。

SWATについての詳細な情報は、 The Samba Web Administration Tool にある。

サーバー上で有効な共有の一覧表示

設定済みのSambaサーバーから有効な共有の一覧を表示するには、以下の コマンドを実行する:

$ smbclient -L yourhostname

サーバー上で有効の共有の一覧が表示される。もしもそうでなければ、設定が どこか間違っている。この方法はたとえばWindows 2000のような、他のSMB サーバーの共有が有効かと言うことにも使える。

もしも、ユーザーレベルのセキュリティを選択しているならば、共有の一覧を表 示する前にパスワードを要求してくる。詳細はsmbclient のマニュアルページを参照のこと。コマンドラインに-N オプションを追加することで、パスワード要求なしに共有の一覧を表示出来る。

UNIXクライアントによる接続

以下のコマンドを入力する:

$ smbclient  //yourhostname/aservice

通常yourhostnamesmbdが インストールされたホストの名前である。 aservicesmb.confファイル中にある任意の サービスである。smb.confファイル中の [homes]セクションがあるならばusernameを試みる こと。

例:もしもUNIXホストがbambiで有効な ログイン名がfredならば、以下のように入力:

$ smbclient //bambi/fred

リモートのSMBクライアントからの接続

Sambaがローカルで正しく動いている時には、他のクライアントからアクセスを 試みることが出来る。数分以内に、Sambaホストは同一のサブネット上のすべて のWindowsクライアント上のマイネットワーク上(Network Neighborhood)に表示 される。他のクライアントからサーバーをブラウズするかそれをマウントするこ とを試みる。

DOS、Windows、あるいはOS/2クライアントからのマウントは以下のコマンドを 動かすことで行える:

C:\> net use m: \\servername\service

ここで、ドライブ名 m: は任意の有効なドライブ名である。使用するサービス(共有)名を ダブルクリックする時にそれが実際に存在していることは重要である。

印刷システムを試すための例は以下の通り。

C:\> net use lpt1:	\\servername\spoolservice

spoolserviceは対象のサーバー上のプリンターの名前(実際 にはプリントキュー)である。これは、指定されたspoolserviceが所有する プリンターに送られるWinbowsクライアント上のlpt1:ポートでキャプチャされ たすべてのプリントジョブを許可する。

C:\> print filename

うまく動かない時には

Sambaチェックリストを読んでみてもよい。 もしもまだ行き詰まっているならば、 Sambaの問題の解析と解決を参照しよう。 Sambaは世界中でとてもたくさん正常にインストールされている。あなたの 特定の問題が固有であれば、あなたの問題に誰かが遭遇し、それを克服する 方法を見つけていることを発見するために、インターネット上での検索を実 行することは生産的かもしれない。

もしも、Sambaを使うのが初めてで、特にWindowsかUNIX/Linuxののネット ワーキング初心者ならば、Samba-3 by Exampleという本 (訳注:Sambaのドキュメントの一部にもなっている)は評価済みのネットワーク 環境を作るのに手助けとなるだろう。最もサイトのニーズに適合するネット ワークデザインがある最初の五章から単に選び、それを展開するための 単純な段階的手順を取りなさい。その後、ネットワークが動き、更に改良の ための機会のための知識の取得のためには、この本を再度参照しよう。

まだ解決しない?

惨めなフラストレーションのストレスに対する最高のアドバイスは、クールダウ ンすることである!それはそれ自身挑戦かもしれないが、怒っているか、 悩んでいる間、解決策を探すことは難しくなる。頭を冷やせば、探している 答えを見つかることにつながる。繰り返すが、すべての問題は解決策がある 今そうすることが出来なくとも、誰かがそれを見つけるよい機会が ある。それは時間、忍耐と学習で変わる。

少しクールダウンしたなら、 the Samba Checklistを、問題の原因を 確認するために行う事が出来る手順を確認するために参照してほしい。

共通のエラー

以下の質問と問題はSambaメーリングリスト上で繰り返し発生するものである。

大量のsmbdプロセス

Sambaの3つの中心的なプログラムは:nmbd, smbd, と winbinddである。 nmbdはネームサーバーメッセージdaemonで、smbdはサーバーメッセージ daemonで、winbinddはドメインコントローラーとの間での通信を処理する daemonである。

もしもSambaがWINSサーバーとして動作していないならば、 システム上には1つのnmbdインスタンスが動作する。もしもWINSサーバーとして 動作するならば、2つのインスタンスがある。1つはWINS要求を処理 する。

smbd はすべての接続要求を処理する。おのおののクライアントに対する 接続が終わると新しいプロセスがspawnする。それゆえ、クライアント接続毎 にたくさんのdaemonが存在する。

winbinddは1つまたは2つのdaemonで動作し、 split mode(2つのインスタンスの場合)かどうかによる。

エラーメッセージ: open_oplock_ipc

smbdが起動した時にログファイル中に以下のエラーメッセージが出ることがある: open_oplock_ipc: Failed to get local UDP socket for address 100007f. Error was Cannot assign requested.

これは、loopbackデバイスが正しく動作していない。正しく設定し直すこと。 ループバックデバイスは内部(仮想の)ネットワークデバイスで、IPアドレスが 127.0.0.1である。システム上でどのようにloopback デバイスを設定するかはOSのドキュメントを読むこと。

ネットワーク名が見つからない

このエラーは以下の設定ミスのどれかによって起きる:

  • smb.conf内で共有に対する存在しない パスを指定した。

  • 共有にアクセスしようとするユーザーが 共有のパスに対する適切なアクセス権を持っていない。 読み出し(r)とアクセス(x)を有効にすべき。

  • アクセスしようとする共有が存在しない。