Linux の 302 (Mixed Environment) 試験対策: 概念

混在環境でのファイル共有およびプリンター共有の背後にある概念を学ぶ

システム管理者のための、LPIC (Linux Professional Institute Certification) の LPI-302 試験に備えるために、混在環境における SMB/CIFS、ファイル共有、プリント・サービス関連の基本概念を学んでください。

Sean A. Walberg, Network Engineer

Author photoSean Walberg はネットワーク・エンジニアであり、ネットワークについて 2 冊の本も書いています。これまで医療やメディアをはじめ、さまざまな業界に携わってきました。



2011年 2月 02日

この連載について

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

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

概要

この記事では、以下の概念について学びます。

  • SMB (Server Message Block)/CIFS (Common Internet File System)
  • ファイル共有
  • プリント・サービス

この記事は、LPIC-3 Speciality「302 Mixed Environment Exam」試験の主題 310 の目標 310.1 の試験対策に役立ちます。この目標の重要度は 1 です。

前提条件

この連載記事を最大限に活用するには、Linux の高度な知識と、記事に記載されたコマンドを演習できる実際の Linux システムが必要です。さらに、ファイルおよびプリント・アクセスのテストに使用できる Windows 環境を利用できることも条件となります。


ファイル共有とプリンター共有

選択的な 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 認定試験を受けることができます。

ファイルおよびプリンターを共有する目的は、あるコンピューターに接続されているディスクとプリンターを、他のコンピューターからあたかも直接接続されているディスクとプリンターであるかのように使用できるようにすることです。この共有機能を提供することにより、多くのユーザーが高価なリソースを共有して、これらの共有リソースをどこからでも使用できるようになります。ファイルおよびプリンターは中心的なリソースとして、必要な場合にはその制御および監査を厳重にすることが可能です。

ファイルおよびプリンター共有のソリューションには、以下の特性が求められます。

  • ネットワークにとらわれないソリューションであること。つまり、どのタイプのネットワーク (Ethernet、トークン・リング) で実行するかは問題にならないようにするということです。
  • アプリケーションは、アクセスしているファイルがローカル・ディスクとリモート・ディスクのどちらにあるのかも、直接接続されたプリンターに出力しているのか、またはリモート・プリンターに出力しているのかも知る必要がないようにすること。
  • 例えば 2 人のユーザーが同時に同じプリンターに出力しようとする場合など、1 つのリソースに対する同時要求を仲介する手段があること。
  • 誰がリソースを要求しているのかを理解するための何らかの認証システム、そしてアクセス権を与えるかどうかを決定するための承認システムを実装するソリューションであること。

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

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

ファイルおよびプリンターを共有するには、さまざまな方法があります。Berkeley の印刷システムをはじめ、多くの UNIX ユーティリティーは 1980年代の初期からすでにネットワークに対応しています。Sun Microsystems は 1984年に NFS (Network File System) を導入し、これにより、UNIX コンピューターがネットワーク上にファイルシステムをマウントできるようになりました。IBM と Microsoft が多数のネットワーク共有タスクを実行するために考案した SMB プロトコルは、ファイルとプリンターの共有にも対応します。ファイルおよびプリンターは、専用サーバー間で共有することも、個々のワークステーション間で共有することも、あるいはこの 2 つの組み合わせで共有することもできます。

ファイル共有

共有するファイルがワークステーションにあるとしても、共有するディスク・リソースを持つデバイスはサーバーと呼ばれ、そのディスクにアクセスするデバイスはクライアントと呼ばれます。サーバーは、(UNIX の言葉では) 「ファイルシステムをエクスポートする」か、(Windows の言葉では) 「ディスクまたはディレクトリーを共有する」と考えられています。クライアントは、エクスポートされたファイルシステムをローカル・ディスクとしてマウントするか、共有されたディスクまたはディレクトリーにアクセスします。

この共有の関係は、一時的なものにすることも、長期的なものにすることもできます。クライアントがサーバーに接続すると、いつくかのファイルを取得した後に接続を切断することもできれば、クライアントがリブートされるまで、その接続をオープンした状態にしておくこともできます。さらにクライアントは、リモート・ファイルシステムをローカル・ディスク、あるいはローカル・ファイルシステムの一部として扱うこともできれば、FTP (File Transfer Protocol) クライアントと同じように、アプリケーション層でリソースにアクセスするという選択肢を選ぶこともできます。

ファイル共有に関連するもう 1 つの特徴は、ブラウズの概念です。通常、クライアントは、動的に取得された情報を基に作成されたリストから、ブラウズ機能によってネットワーク上のサーバーを見つけることができます。

プリンターはサーバーに直接接続されていない場合もあるため、さまざまなレベルの共有が考えられますが、複数のクライアントが同じプリンターを構成する場合には、一般にスプーラーと呼ばれるサービスが使用されます。スプーラーの仕事は、印刷ジョブのリストを管理することです。このリストは別名、印刷キューとして知られています。複数のユーザーが印刷ジョブを送信すると、スプーラーは印刷ジョブをいったんディスクに保管します。そして、プリンターが未使用の状態になってから、スプーラーは他の印刷ジョブとの競合を恐れることなく、保管した印刷ジョブをプリンターに送信します。

プリンターをネットワークに接続することも可能ですが、通常はサーバーがスプーラーとして使用されて、そのサーバーがネットワーク上のプリンターに出力します。この形が取られる理由は 3 つあります。1 つ目は、サーバーはプリンターよりも堅牢で大きなスプール領域を持っている可能性が高いこと、2 つ目は、サーバーはアクセス制御に対応できること、そして 3 つ目は、サーバーは必要に応じてプリンター・ドライバーを分散できることです。


SMB と CIFS

SMB はプロトコルであり、実装ではありません。Windows から UNIX、さらにはメインフレーム環境に至るまで、このプロトコルは多種多様なオペレーティング・システムに実装されてきました。

歴史

IBM で誕生した SMB は、1990年代初頭に製品のネットワーク化を始めた Microsoft によって実装されました。当時、SMB には LAN Manager や Windows for Workgroups などの別の製品が必要でしたが、最終的に Microsoft Windows NT で、ファイル共有が標準オペレーティング・システムの一部として組み込まれるようになりました。

Microsoft はその後もオペレーティング・システムに導入する新しい機能に SMB を適応させていった結果、CIFS と呼ぶバージョンが登場するに至りました。CIFS は Microsoft によって、標準化案として Internet Engineering Task Force に提出されました

同じ頃、博士課程の学生であったオーストラリア人の Andrew Tridgell 氏は SMB のメインフレーム実装のリバース・エンジニアリングを開始し、後に SMB のオープンソース実装および Microsoft プロトコルの集合として Samba と命名されることになるプロジェクトに着手しました。ファイルを移動するための手段として始まったこのプロジェクトは、Windows ドメイン・コントローラーとしての機能と、それに続いて Active Directory サーバーとしての機能が組み込まれた完全なクライアントおよびサーバー方式の実装へと発展しました。

SMB と CIFS の違い

CIFS は技術的には SMB の方言です。SMB プロトコルは長年にわたって変更が重ねられたため、クライアントとサーバーは対話に使用するプロトコルの方言をネゴシエートする必要があります。CIFS は、NTLM (NT LAN Manager) シリーズを拡張したプロトコルです。奇妙なことに、このプロトコルを識別するには「CIFS」という文字列は使用せず、代わりに「NT LM 0.12」を使用します。

ここで使用するのは SMB の CIFS 方言なので、実際上は SMB と呼んでも CIFS と呼んでも構いません。ちなみに、CIFS は SMB のようにすべての文字を略さずに読むのではなく、「シフス」と発音されています。


SMB プロトコルの概要

クライアント・サーバー方式のプロトコルとして、SMB ではクライアントがサーバーにアクセスします。当初、SMB には NetBIOS (Network Basic Input/Output System) と呼ばれるアプリケーション・プログラミング・インターフェース (API) 層が必要でした。この API は SMB が使用するサービスの他、名前解決およびネットワークのブラウズに関連するいくつかのサービスを提供します。NetBIOS との連動により、SMB は以下のプロトコルをベースとした動作が可能でした。

  • Raw Ethernet: この場合、SMB は NetBEUI とも呼ばれる NetBIOS Frames を使用します。
  • Novell IPX (Internetwork Packet Exchange)/SPX (Sequenced Packet Exchange): この場合、SMB は NBX (NetBIOS over IPX/SPX) を使用します。
  • TCP/IP: この場合、SMB は NBT (NetBIOS over TCP/IP) を使用します。

NetBIOS が Microsoft ネットワークに提供する重要なサービスには、以下の 3 つがあります。

  • 名前サービス: ネットワーク上のホストを見つけるためのサービスです。
  • セッション・サービス: クライアントとサーバーとの間で信頼できる通信および転送を行うためのサービスです。
  • データグラム配信サービス: 小さなサイズのメッセージとネットワーク・ブロードキャスト用のサービスです。

したがって、SMB が大いに活用していたのはセッション・サービスでしたが、例えば名前サービスを使ってサーバーのアドレスを見つけるなど、他の 2 つのサービスを利用することもありました。

結局は、TCP/IP が優勢になったこと、そして Microsoft が DNS (Domain Name System) を利用して名前を解決するようになったことから、SMB はダイレクト・ホスティングと呼ばれる方式で TCP/IP 上で直接動作するようになりました。NBT は TCP および UDP (User Datagram Protocol) のポート 137 から 139 で動作する一方、ダイレクト・ホスティングは TCP および UDP のポート 445 を使用します。

OSI スタック内での SMB

図 1 に、ネットワーク・プロトコル間の相互作用を説明するための OSI (Open Systems Interconnection) モデルを示します。OSI モデルは、アプリケーションをネットワーク上で機能させるために必要な機能を表し、これらの機能を一連の層に分割します。各層は、その下位層によって提供されるサービスを使用し、その上位層にサービスを提供します。

図 1. OSI モデル
OSI モデルを示す図

層 1 と層 2 はそれぞれ、Ethernet ネットワークによって実現される物理層とデータ・リンク層です。この 2 つの層は、ネットワークのあるホップから次のホップに転送される情報の一部を取得します。その上にある TCP と IP はトランスポート層、ネットワーク層です。ネットワーク層はエンド・ツー・エンドの接続を行う一方、トランスポート層は小さな複数のメッセージから大きなメッセージを組み立て、複数のサービスが同じサーバーに存在できるようにします。各層はその下位層を利用することから、例えばネットワーク層は、ネットワークのそれぞれのホップが物理層やデータ・リンク層をどのように使用するかを気にする必要がありません。

NetBIOS を使用するネットワークでは、セッション層が使用されます。セッション層は、前述のセッション・サービスを提供する層です。SMB はアプリケーション層で動作します (この場合、プレゼンテーション層は使用されません)。つまり、SMB は下位層が提供するすべての機能を利用するということです。

NetBIOS を使用しないネットワークでは、セッション層が省略されるに過ぎません。セッション・サービスのほとんどは、TCP で処理することが可能であり、名前サービスは DNS によって処理されます。

統一命名規則

インターネットでは、例えば http://ibm.com/developerworks のような URI (Universal Resource Identifier) をよく目にします。特定の文書やその他のコンテンツがどこで見つけられるのかは、URI によって識別されます。上記の URI の例では、http はスキームを意味します (この例で言うと、文書は HTTP を使用して取得されるという意味になります。コンテンツを要求する対象のホスト名は ibm.com, で、/developerworks はそのホストにある要求対象のリソースです。

同じように、UNC (Uniform Naming Convention) パスは、Windows ネットワークのリソースを識別します。UNC パスは \\shorty\documents\public\photo.jpg という形になり、先頭の 2 つのバックスラッシュ (\\) の後にサーバーの名前、バックスラッシュ、そして共有フォルダーの名前が続きます。そして共有フォルダーに続くパスが、その共有フォルダーを基準としたリソースへの相対パスを指定します。

UNC パスは以下の点で URI と異なります。

  • スキーマは必要ありません。SMB が使用されます。
  • スラッシュ (/) の代わりにバックスラッシュ (\) が使用されます。ただし、スラッシュを使用できる場合もあります。
  • 共有フォルダーはリソース名の一部のように見えますが、これはサーバー上のファイル共有名を表すものであり、サーバーのファイルシステム上に存在する必要はありません。

Samba

Samba は自称、「Linux および UNIX のための標準 Windows 相互運用性プログラム・スイート」です。Linux やその他の UNIX 系システムには、Samba 以外にも SMB ファイル共有をマウントする手段が用意されていますが、そのいずれも、Samba のクライアント兼サーバーとしての機能、さらには Windows ネットワークへの統合ポイントとしての機能には及びません。

Samba は、バックグラウンドで実行するように意図された複数のデーモンからなり、Windows または Samba サービスと対話するために使用するサービスならびに複数のコマンドライン・ツールを提供します。これらのデーモンとツールについては、この連載を通して詳しく探っていきますが、なかでもとりわけ注目に値するバイナリーを以下に抜粋します。

  • smbd: SMB のファイル・サーバーおよびプリント・サーバーとして機能するデーモンです。
  • nmbd: NetBIOS 名前サービスを提供するデーモンです。
  • mount.cifs: ローカル・ディスクまたは NFS 共有と同じように、リモート SMB ファイルシステムをローカル UNIX ファイルシステムにマウントするユーティリティーです。
  • smblient: このユーティリティーは FTP クライアントと同様に、SMB リソースへのコマンドライン・アクセスを提供します。リモート・サーバー上の共有をリストアップしたり、ネットワークをブラウズしたりすることもできます。
  • smb.conf: これはユーティリティーではなく、むしろすべてのツールの構成ファイルです。したがって、他のバイナリーと同じコンテキストで言及する価値があります。

Samba は他のオープンソースのソフトウェアと同様に、ソース・コードからコンパイルすることも、ディストリビューションの一部としてダウンロードすることもできます。Samba の管理は、システム初期化スクリプトと構成ファイルによって行われます。


次回の予告

次の試験目標である 310.2 では、さまざまな Samba デーモンが果たす役割、そしてこれらのデーモンが動作する各種のセキュリティー・モードについて説明します。

参考文献

学ぶために

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

  • 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=659373
ArticleTitle=Linux の 302 (Mixed Environment) 試験対策: 概念
publish-date=02022011