Linux の 302 (Mixed Environment) 試験対策: Samba の役割

概念、アーキテクチャー、および設計

Samba は単一のプログラムというよりも、それぞれに特定の目的を持つ、相互に関係するサーバーとユーティリティーの集合です。Samba を構成するそれぞれのサーバーとユーティリティーの違いを理解することが、Samba システムを管理する上で役立ちます。さらに、Samba は多種多様なセキュリティー・モデルも実装しています。Samba を既存のネットワークに適切に組み込むにも、Samba を中心とした新しいネットワークをセットアップするにも、これらのセキュリティー・モデルを理解していることが必須となります。

Roderick W. Smith, Consultant and author

Roderick Smith author photoRoderick W. Smith はコンサルタントであり、『The Definitive Guide to Samba 3』、『Linux in a Windows World』、『Linux Professional Institute Certification Study Guide』など、UNIX や Linux に関する数々の著作もあります。彼は現在、ロードアイランドのウーンソケットに住んでいます。



2011年 2月 23日

この連載について

この連載は Linux システム管理タスクの学習に役立つだけでなく、LPIC-3 (Linux Professional Institute Certification レベル 3) 試験に備えるための教材にもなります。

連載の各記事についての説明とリンクについては、developerWorks の LPIC-3 ロードマップを参照してください。現在進行中のこのロードマップは、LPIC-3 試験の最新の目標 (2010年 11月) を反映しています。完成した記事はその都度ロードマップに追加されていきます。

概要

この記事では、以下の概念について説明します。

  • Samba のセキュリティー・モデル
  • コアとなる Samba デーモンの役割
  • Samba デーモンの管理

この記事は、LPIC-3 Specialty「302 Mixed Environment Exam」試験の主題 310 の目標 310.2 の試験対策となります。この目標の重要度は 1 です。

前提条件

この連載記事を最大限に活用するには、Linux の高度な知識と、記事に記載されたコマンドを演習できる実際の Linux システムが必要です。具体的には、この記事では読者が Linux コマンドライン関数の実用的な知識を持っていること、そして「Learn Linux, 302 (Mixed environments): Concepts」で説明している Samba の目的について、少なくとも全般的に理解していることを前提とします。記事で説明するアクションを実行するには、Samba ソフトウェアがインストールされている必要があります。また、一部のアクションでは、実際の SMB (Server Message Block)/CIFS (Common Internet File System) ネットワークを自由に使用できることも条件となります。


Samba デーモンの特定

選択的な LPI-302 試験について

LPIC (Linux Professional Institute Certification) には、さまざまなレベルがあり、レベルが上がるにつれ、より深い知識と経験が必要になってくるという点で、他の多くの認定と似ています。LPI-302 試験は、LPIC レベル階層のレベル 3 に位置する選択的な Specialty 認定試験であり、Linux システム管理に関する高度な知識が求められます。

LPIC レベル 3 (LPIC-3) 認定を取得するには、2 つのレベル 1 試験 (101 と 102)、2 つのレベル 2 試験 (201 と 202)、そして LPIC-3 Core Exam (301) に合格しなければなりません。これらの試験に合格した後、LPI-302 などの選択的な Specialty 認定試験を受けることができます。

Linux サーバーは多くの場合、デーモンとして実装されます。デーモン (daemon) とは、ギリシャ神話に由来する言葉で、神話のなかで、デーモンは頼りになる超自然的な存在でした。Linux デーモンも、バックグラウンドで動作して有用なタスクを行います。Samba サーバー・スイートは、smbdnmbdwinbindd などの複数のデーモンからなります。swat プログラムも Samba サーバーの 1 つですが、通常はスーパー・サーバーとして動作するため、厳密に言うとデーモンではありません。

smbd の概要

smbd プログラムは、Samba のコア機能の大部分を提供します。その役割には、以下の内容が含まれます。

  • ファイル共有およびプリンター共有サービスの提供。この機能はほぼ間違いなく、最も重要な Samba の役割であり、smbd がその役割を担っています。
  • ユーザーの認証。smbd はローカル・データベースに照らし合わせてユーザーを認証するか、または認証リクエストを他のコンピューターに引き渡します。Samba サーバーがドメイン・コントローラーとして構成されている場合には、smbd は他のコンピューターからの認証リクエストにも応答します (ワークグループとドメイン構成については、「セキュリティー・モードの設定」セクションで説明します)。
  • 時刻サービスの提供。Samba は他のコンピューターに現在の時刻を通知することができます。その詳細は、smbd が処理します。

皆さん独自のフィードを作成してください

新しい記事を追加した際、あるいは内容を更新した際に通知を受けられるように、カスタム RSS、Atom、または HTML フィードを作成することができます。それには、developerWorks RSS フィードにアクセスしてください。対象のゾーンとしては「Linux」を選択し、情報のタイプとしては「Articles」を選択して、キーワードには「Linux Professional Institute」と入力します。そして最後にフィードのタイプを選択します。

デフォルトでは、smbd デーモンは TCP ポート 139 および 445 にバインドします。SMB プロトコルは、NetBIOS over TCP を介してポート 139 を使用します。多くの古いクライアントは、この方法で SMB/CIFS を利用しています。比較的新しい多くのクライアントは、Samba サーバーにアクセスする手段として、シンプルな SMB over TCP サービスを提供するポート 445 を使用しています。

以上の役割 (特に、ファイルおよびプリンターの共有サービス、認証サービスの提供) の重要性から、smbd は Samba のコアであると見なせます。実際、smbd を単独で実行するコンピューターに Samba 独自の smbclient などのプログラムを使用して接続し、ファイル転送を行うことができます。けれどもクライアントのなかには、他の Samba デーモンが提供するサービスに依存するクライアントもあります。

nmbd の概要

2 つ目の重要な Samba デーモンは、nmbd です。このサーバーの主な役割は、名前関連のタスクを処理することで、いわば DNS (Domain Name System) の Samba バージョンといったところです。ただし、DNS よりは簡単に構成できて、その分、DNS に比べると精巧さに劣ります。nmbd が行う具体的なタスクには、以下のものがあります。

  • 名前のブロードキャストへの応答。共通の操作モードの 1 つでは、クライアントがネットワーク・セグメント全体に名前クエリーをブロードキャストします。nmbd サーバーはこのようなブロードキャストをリッスンし、Samba がクエリー対象の名前を使用するように構成されている場合には、ブロードキャストに応答します。また、Samba が別のコンピューターまたはネットワークのプロキシーとして機能するように構成されている場合にも応答します。
  • NetBIOS 名の登録。NetBIOS 名が解決されるようにするためには、コンピューターがその名前を中央 NetBIOS ネーム・サーバー (NBNS: 別名、WINS (Windows Internet Name Service) サーバー) に登録するか、名前をブロードキャストして、ネットワーク全体でその名前の権利をネゴシエートすることによって、その名前を登録する必要があります。nmbd は、ネーム・サーバーへの名前登録を行うだけでなく、名前を登録する他のコンピューターともネゴシエートします。
  • NBNS サーバーとしての役割。Samba は、NBNS システムとして構成することができます。この場合、nmbd が NBNS サーバーの役割を引き受けます。
  • マスター・ブラウザーとしての役割。SMB/CIFS ネットワークのユーザー・エクスペリエンスには、ブラウズも含まれます。つまり、ハード・ディスク上のディレクトリーをブラウズするのと同じように、ネットワーク上のサーバーをブラウズすることができます。この機能を可能にするのは、ブラウズ・リストを収集して広めるマスター・ブラウザーの存在です。Samba がマスター・ブラウザーとして機能する場合には、nmbd がその役割を引き受けます。

上記のリストから明らかなように、nmbd は多くの仕事をこなします。これらのタスクはファイルやプリンターの提供には関係しませんが、その多くは、あらゆる SMB/CIFS サーバーに極めて重要な部分であるため、nmbd は Samba に欠かせない部分と言えます。nmbd は通常、ディストリビューションの起動スクリプトによって smbd と一緒に実行されます。

nmbd の機能のほとんどでは、TCP ポート 137 にバインドされていることが要件となりますが、マスター・ブラウザーとしてのタスクには、UDP のポート 138 が使用されます。

winbindd の概要

3 つ目の Samba デーモンは、winbindd という名前の Winbind デーモンです。smbdnmbd とは異なり、winbindd はリモート・コンピューターを対象としたサービスを提供するのではなく、Windows® (または Samba) ドメイン・コントローラーとローカル・コンピューター独自の PAM (Pluggable Authentication Modules: プラガブル認証モジュール) ツールとの間のインターフェースとして機能し、ドメイン・コントローラーが Linux アカウント情報をホストできるようにします。

多くのディストリビューションでは、winbindd は他の Samba とは別のパッケージにインストールされています。通常、そのパッケージの名前は、winbind または winbindd となっています。また、起動についても、他のデーモンとは独立して行われます。winbindd が SMB/CIFS クライアントである場合を除き、原則として winbindd は、Samba サーバーを実行していないコンピューター上でも、さらには SMB/CIFS クライアントとして機能していないコンピューター上でも実行することができます。けれども実際には、winbindd を実行するとすれば、Samba サーバーを実行するか、あるいは Linux コンピューターを SMB/CIFS クライアントとして使用することになるはずです。


Samba の制御

Samba を制御するには、少なくとも 2 つのタスクが伴います。1 つは Samba の構成ファイルを使用して構成オプションを調整するというタスク、もう 1 つは、一時的にオンザフライで構成オプションを変更するというタスクです。前者のタスクには Samba の構成ファイルを使用する一方、後者のタスクには smbcontrol 構成ツールを利用することができます。

構成ファイルのオプションを調整する

主要な Samba 構成ファイルは、smb.conf という名前のファイルです。このファイルは通常、/etc/samba に格納されますが、他の場所に置かれる可能性もあります (Samba をソースからビルドした場合には、通常、/usr/local/samba/lib に置かれます)。

smb.conf ファイルは、角括弧 ([]) で囲まれた名前 ([global][documents] など) で始まる複数のセクションで構成されています。その大半は、ファイル共有またはプリンター共有を定義するセクションですが、[global] は特殊なセクションです。このセクションには、サーバー全体に影響するオプションや、後続の共有定義で使用されるデフォルト値を設定するオプションがあります ([global] セクションは通常、ファイルの先頭にあります)。

smb.conf 内の行はコメント行となっている場合もあります。その場合の行は、ハッシュ・マーク (#) またはセミコロン (;) で始まります。これらのコメント行は、セクション名であることも、Samba のパラメーターを設定する行であることもあります。Samba のパラメーターを設定する行は、以下の形式をとります。

parameter = Value

parameter はキーワードです (例えば、securitycreate mask など)。パラメーター名は大/小文字を認識しません。よく使われるパラメーターのなかには、同義語があるものもあります。さらに反義語を持つパラメーターもいくつかあります。例えば、writablewriteable は同義語であり、この 2 つに対する反義語は read only です。つまり、read only = Yes は、writable = No と同じ意味になります。

パラメーターで指定する Value は、フリー・フォームの文字列、数値 (IP アドレスなどの特殊な数値を含む)、ブール値、変数、またはリストにすることができます。ブール値に使用できる真の値は、Yes または True のいずれかで、その同義語は 1 です。偽の値は No または False のいずれかで、その同義語は0 です。

変数はパーセント記号 (%) で始まり、構成ファイルが作成された時点では既知ではない情報の代用となります。例えば、%D はサーバーのワークグループまたはドメイン名の代わりに、%h はサーバーの DNS 名の代わりに、%H はユーザーのホーム・ディレクトリーの代わりに、%L はサーバーの NetBIOS 名の代わりに、そして %u はユーザーのユーザー名の代わりになるなどです。

パラメーターによっては、複数の値のリスト (ユーザー名のリストなど) を取る場合もあります。その場合、リストの要素は例えば george, mary のようにカンマで区切られて、georgemary の両方を指します。大方のところ、smb.conf ファイルはホワイト・スペースを認識しません。値にホワイト・スペースを含める必要がある場合には、ホワイト・スペースを引用符で囲む必要があります。

smb.conf ファイルには、smbdnmbdwinbindd、そして他の Samba サーバーおよびプログラムのオプションが含まれています。これらのオプションはプログラムごとに分かれているわけではなく、明確に区別されてもいません。けれども、その名前から、パラメーターがどのデーモンに適用されるかが明らかにわかる場合もあります。

smbcontrol を使用して Samba を制御する

smbcontrol プログラムを使用して、実行中の Samba を制御することができます。例えば、Samba に特定の共有をシャットダウンするように指示したり、マスター・ブラウザーの選択を強制したり、構成ファイルをリロードさせたりするなどの操作を行うことができます。このコマンドの基本的な構文は以下のとおりです。

smbcontrol [-i] [-s configfile]
smbcontrol [destination] [message-type] [parameter]

-i オプションを併せて使用すると、smbcontrol は対話モードに入ります。対話モードでは、一連のコマンドを順番に渡せるので、各コマンドの前に smbcontrol と入力する手間を省けます。destination には、サーバー名 (smbdnmbd、または winbindd)、all (メッセージをすべてのデーモンに渡す場合)、またはプロセス ID 番号を指定します。message-type はコマンドです (表 1 に要約)。parameter はオプションのパラメーターで、コマンドによっては必要になる場合があります。

表 1. ファイルシステムのボリュームおよびサイズの制限
コマンド (message-type)意味
close-shareパラメーターが指定する共有を閉じます。
debugデバッグ・レベルをパラメーターが指定する値に設定します。
force-election新規マスター・ブラウザーの選択を強制します。
debuglevelデーモンの現行のデバッグ・レベルを表示します。
printnotifyプリンター共有に接続されたクライアントにメッセージを送信し、そのクライアントのキュー状況の変更を強制します。
samsyncユーザー・データベースをデーモン・コントローラーに同期させます (正式なドキュメントには、この機能は現在機能していないと記述されています。この機能を使用する場合は、その前にテストしてください)。
shutdown指定されたデーモンをシャットダウンします。
pool-usage指定されたデーモンに関するメモリー使用量の情報を表示します。
drvupgradeクライアントに新規プリンター・ドライバーが使用可能であることを通知します。このコマンドは、プリンター共有名をパラメーターとして取ります。
reload-configサーバーに smb.conf ファイルのリロードを強制します。

セキュリティー・モードの設定

Samba では、ユーザーの認証方法に関する多数のオプションを用意しています。そのうち最も重要なのは、security オプションです。このオプションには、以下の 5 つの値を指定することができます。

  • share: このセキュリティー・モードは、Microsoft® Windows 9x/Windows Me オペレーティング・システムが使用する認証方式をエミュレートすることを目的としています。この認証方式では、ユーザー名は無視され、パスワードは共有と関連付けられていました。これをエミュレートするために、Samba はクライアントが提供したパスワードを、さまざまなユーザー名で試します。
  • user: これはデフォルトのセキュリティー・モードです。このモードでは、Linux の通常の認証方法と同様に、ユーザー名とパスワードを使用して認証します。ただし、最近のシステムではほとんどの場合、パスワードは暗号化された Samba 専用のパスワード・データベースに保管されます。
  • server: Samba が認証を他のサーバーに任せるようにするには、この認証方式を使用します。クライアントにとって、この方式はユーザー・レベルの認証と同じように見えますが、Samba は実際の認証には、password server パラメーターで指定されたサーバーを利用します。
  • domain: クライアントにとってはユーザー・レベルの認証のように見えますが、この認証方式を使用することで、Windows ドメインに完全に参加することができます。サーバー・レベルの認証とは異なり、ドメイン認証ではよりセキュアなドメイン・レベルのパスワードが交換されます。ドメインに完全に参加するためには、Samba システムと、おそらくドメイン・コントローラーでも追加のコマンドを実行する必要があります。
  • ADS: この認証方式は、ドメイン認証とほとんど同じように機能しますが、これには Active Directory® Domain Services ドメイン・コントローラーが必要であるという点が異なります。

原則として、Samba サーバーが Windows ワークグループのメンバーとなっている場合には、ユーザー・レベルの認証が最善の選択となります。SMB/CIFS ネットワークの基本形態では、Samba サーバーは Windows ワークグループのメンバーになります。ワークグループとドメインとの主な違いは、ドメインは、ドメイン・コントローラー (ドメインに認証サービスを提供するサーバー) を提供するところにあります。ドメイン・コントローラーを使用するには、server レベル、domain レベル、または ADS レベルの security オプションを適用する必要があります。このうち、最も簡単に構成できるのは server レベルの security オプションですが、安全性に関しては最下位です。その一方、ADS レベルのセキュリティーは構成するのが最も困難ですが、最も安全性に優れています。

ドメイン・レベルまたは ADS レベルのセキュリティーの場合、ドメインに完全に参加するには、smb.conf ファイルの [global] セクションに以下のオプションを設定する必要があります。

password server = DOMCONT
domain logons = No
encrypt passwords = Yes

DOMCONT システムは、ドメイン・コントローラーです。また、ドメインに参加させる Samba サーバー上で、以下のコマンドを実行する必要もあります。

# net join member -U adminuser

さらに、Samba サーバーをドメインに受け入れるようにドメイン・コントローラーを構成しなければならない場合もあります (Samba サーバーについてのこの話題は、目標 312.4 で扱っています)。

共有レベルのセキュリティーは、今ではほとんど使用されていません。これは主に、ユーザー名を認識しない、かなり古いクライアントとの互換性のために用意されているオプションですが、例えばプリンター共有など、最小限のセキュリティーで使用できるようにしたい共有タイプに役立つこともあります。Linux ではすべてのアクセスにアカウントを使用することが要件となっているため、Samba は一致するアカウントが見つかるまで、あるいはすべてのアカウントが失敗するまで、提供されたパスワードを一連のアカウントに対して試します。これらのアカウントには、以下のものが含まれます。

  • guest only = Yes が設定されている場合には、(guest account パラメーターによって設定された) ゲスト・アカウント
  • クライアントが提供するユーザー名 (すべてのクライアントがユーザー名を提供するわけではありませんが、一部のクライアントはユーザー名を提供します)
  • クライアント・コンピューターからの最後のアクセスに使用されたユーザー名
  • アクセス対象の共有の名前
  • クライアントの NetBIOS 名
  • username パラメーターで指定されたあらゆるユーザー名

現在使用されているクライアントのほとんどはユーザー名を認識するため、共有レベルのセキュリティーをサポートしなければならないことはめったにありません。このセキュリティー・オプションの使用は、混乱を招き、セキュリティーのリスクを増やすだけです。これほど多くのアカウントに対してパスワードがチェックされるなか、そのうち 1 つのパスワードでも悪意のある人の手に渡れば、サーバーにとって重大なリスクとなります。


次回の予告

LPIC-3 の主題 310 の目標 310.3 (そして連載の次回の記事) で取り上げるのは、Samba の TDB (Trivial Database) ファイル・フォーマットです。Samba はこのファイル・フォーマットを使用してアカウント情報を保管します。

参考文献

学ぶために

製品や技術を入手するために

  • Samba Web サイトから、Samba のダウンロードおよび情報を入手できます。
  • ご自分に最適な方法で IBM 製品を評価してください。評価の方法としては、製品の試用版をダウンロードすることも、オンラインで製品を試してみることも、クラウド環境で製品を使用することもできます。また、SOA Sandbox では、数時間でサービス指向アーキテクチャーの実装方法を効率的に学ぶことができます。

議論するために

  • My developerWorks コミュニティーに加わってください。ここでは他の developerWorks ユーザーとのつながりを持てる他、開発者が主導するブログ、フォーラム、グループ、ウィキを調べることができます。

コメント

developerWorks: サイン・イン

必須フィールドは(*)で示されます。


IBM ID が必要ですか?
IBM IDをお忘れですか?


パスワードをお忘れですか?
パスワードの変更

「送信する」をクリックすることにより、お客様は developerWorks のご使用条件に同意したことになります。 ご使用条件を読む

 


お客様が developerWorks に初めてサインインすると、お客様のプロフィールが作成されます。会社名を非表示とする選択を行わない限り、プロフィール内の情報(名前、国/地域や会社名)は公開され、投稿するコンテンツと一緒に表示されますが、いつでもこれらの情報を更新できます。

送信されたすべての情報は安全です。

ディスプレイ・ネームを選択してください



developerWorks に初めてサインインするとプロフィールが作成されますので、その際にディスプレイ・ネームを選択する必要があります。ディスプレイ・ネームは、お客様が developerWorks に投稿するコンテンツと一緒に表示されます。

ディスプレイ・ネームは、3文字から31文字の範囲で指定し、かつ developerWorks コミュニティーでユニークである必要があります。また、プライバシー上の理由でお客様の電子メール・アドレスは使用しないでください。

必須フィールドは(*)で示されます。

3文字から31文字の範囲で指定し

「送信する」をクリックすることにより、お客様は developerWorks のご使用条件に同意したことになります。 ご使用条件を読む

 


送信されたすべての情報は安全です。


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=60
Zone=Linux
ArticleID=642246
ArticleTitle=Linux の 302 (Mixed Environment) 試験対策: Samba の役割
publish-date=02232011