Google

Samba 2.2 機能詳細
 WindowsNTとの機能比較

2001/12/03 改定

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

<Sambaで何ができるか?>

Samba(「サンバ」と読む)は、UNIXやLinuxマシンをWindows NT互換のファイルサーバ/プリント・サーバにするオープン・ソース・ソフトウェアだ。
GPL (GNU General Public License) の元に無償で利用することができる。

製品分類としては、その使用するプロトコルからSMBサーバ製品と言われていたが、最近はSMBの上位プロトコルを指すCIFS(Common Internet File System)サーバとして広く認識されている。

SambaやマイクロソフトのWindows製品以外のCIFSサーバとしては、サン・マイクロシステムのSun PC NetLinkやSyntaxのTAS(TotalNET Advanced Server),IBM社のFastConnect, SCO VisionFSなどがある。

参考: ftp://ftp.microsoft.com/developr/drg/CIFS/ 

SambaはオーストラリアのAndrew Tridgell氏らによって1992年に開発された。
現在Sambaは、VA Linux社のAndrew Tridgell氏やJeremy Allison氏らによってボランティアではなく、専任の担当者によって、開発・サポートが行われている。
もちろん、日本人を含めた世界中のボランティアの方も多数参加しており、Sambaの日本語化は日本Sambaユーザ会を中心に行われている。

参考: http://www.samba.gr.jp/  http://samba.org/samba/samba.html 

ここでは、Sambaが備える機能を以下の3つに分類し、簡単に紹介してみよう。

(a) WindowsNT/2000と同等のSambaの機能
b) WindowsNT/2000にはないSambaの機能
(c) Sambaの制限事項およびWindowsNT/2000との相違点

ここでの紹介はSamba 2.2.2をもとに解説する。


(a) Windows NT/2000と同等のSambaの機能

●ファイル・サーバ機能

UNIX/Linux上にあるディレクトリを「共有」としてWindowsクライアントおよびSambaクライアントに公開できる。


図1.Sambaのファイル/プリンタ共有機能

Windows NT/2000サーバと同様に共有ごとに使用できるユーザを制限できる。

*注)
Sambaはその名前の由来通りSMB(Server Message Block)プロトコルを使用する。
しかし、正確にはSambaの使用する通信プロトコルはNBT(NetBios over TCP/IP)であり、下位プロトコルはTCP/IPのみになる。
Windows NT/2000のようにNetBEUIやIPX/SPXを使ってWindowsマシンと通信することはしない。 

図2.Sambaが使用するプロトコル

アプリケーション層 CIFS
(SAMBA,VisonFS,マイクロソフトDfsなど)
プレゼンテーション層 SMB
セッション層 NetBIOS IPX/SPX
トランスポート層 TCP/IP NetBEUI
ネットーワーク層
データリンク層 Ethernet
物理層

*注)CIFSではNetBEUI,IPX/SPXは使用せずに、TCP/IPのみを使用する。

●プリント・サーバ機能

UNIX/Linuxに接続されているプリンタ「共有プリンタ」としてWindowsクライアントおよびSambaクライアントに公開できる。(図1参照)
プリンタドライバはUNIX/Linux用のものではなく、Windows用のものをクライアントにインストールして使用する。

最近のプリンタはネットワークプリンタとしてSambaやWindowsサーバを介さずにWindowsクライアント間で共有することが可能だが、Sambaを使ってプリンタを共有するメリットはWindows 95/98/NT/2000クライアントに対し、プリンタ・ドライバの自動インストールができることだ。

●SMBクライアント機能

UNIX/LinuxマシンからWindowsの共有ファイルにアクセスしたり、共有プリンタに印刷したりすることができる。

通常これはsmbclientコマンドを使用するが、Linuxの場合のみmount(内部はsmbmount)コマンドを使用して、Windows共有をLinuxのファイルシステムとしてマウントすることも可能である。

UNIXからWindowsのプリンタに印刷する場合、プリンタドライバ(フィルタ)はUNIX側に必要だ。
UNIXからWindowsのプリンタ・ドライバを使って印刷することはできない。

Windowsに接続されているプリンタがポストスクリプトをサポートしているなら、UNIX/Linux側で作成したPSデータをそのまま印刷できる

Windowsに接続されているプリンタがESCPage(EPSON)やLIPS(CANON)などのポストスクリプト以外の場合は、印刷可能なデータはUNIX/Linux側で作成する必要がある。 

UNIX/Linux側に適切なプリンタドライバ(フィルタ)がなく、Windowsのプリンタ・ドライバしかない場合、UNIX側でPSデータをPDFファイルに変換し、Windows側のAcrobatで印刷するという手もあるだろう。 

●PDC(プライマリ・ドメイン・コントローラ)機能

Windowsクライアントに対し、ドメイン・ログオンを提供し、ログオン時にスクリプトを実行させることができる。

サポートするクライアントは、Windows 95/98/Me/NT 3.51/NT 4.0/XP Professionalである。

●認証サーバの統合

複数のSambaサーバで1つの認証サーバが利用できる。

●ドメイン・メンバ機能

WindowsドメインにSambaサーバをメンバ・サーバとして追加することができる。
ユーザ認証がすべてWindows NT/2000のドメインコントローラで行えるのでパスワードの2重管理が必要なくなる。
Windowsドメインにユーザを追加した場合、自動的にSambaユーザを追加する機能もある。

●WINSサーバ機能

WINS(Windows Internet Name Service)サーバになることができる。

●マスタ・ブラウザ機能

ブラウズ・リストを保持し、Windowsマシンにネットワーク・コンピュータ一覧を提供する。LMB(ローカル・マスタ・ブラウザ)はWindowsマシンもSambaもなることが可能だが、DMB(ドメイン・マスタ・ブラウザ)はWindows 9x,Windows NT/2000 Workstation はなることができず、Windows NT/2000サーバとSambaだけが可能だ。


図3.マスタ・ブラウズ機能
ネットワーク・コンピュータ一覧を提供する

●サーバの別名登録

通常はUNIX/Linuxのホスト名がネットワーク・コンピュータ一覧に表示される名前になるが、一つのマシンに複数の名前をつけてネットワーク・コンピュータ一覧に表示させることができる。
Windows NT/2000も同様のことができるが、特殊なレジストリを変更しないといけない。


(b) Windows NT/2000にはないSambaの機能

●隠し共有の扱い

Windows NT/2000では共有名に$をつけると隠し共有になるが、Sambaでは任意の共有名を隠し共有にできる。

●ユーザ・ホーム機能

共有の一覧表示時に、クライアントのユーザ名を共有名としてマッピングして表示する機能。 

たとえば、yamadaというアカウントでSambaマシンをアクセス(ネットワーク・コンピュータをクリック)した場合、UNIX/Linux上の/home/yamadaが共有名yamadaとして表示され、また、suzukiというアカウントでSambaマシンをアクセス(ネットワーク・コンピュータをクリック)した場合はUNIX/Linux上の/home/suzukiが共有名suzukiとして表示される。(図4参照)


図4.ユーザホーム機能

これによってユーザごとの専用のディレクトリを提供し、他人のディレクトリをアクセスするのが防げる。

●リモートアナウンス機能

Windowsではセグメントをまたがったワークグループを構成できない。
(ネットワーク・コンピュータ一覧に表示できない)
また、別セグメントにある別ドメインをネットワーク・コンピュータ一覧に表示するには以下が必要となる。

  • ドメイン間で信頼関係を結ぶ 
  • 別ドメインに所属するブラウズマスタになれるマシンを、同一セグメントに用意する 

Sambaは上記を行うことなく、リモートアナウンス機能を使って別セグメントにワークグループやドメインをネットワーク・コンピュータ一覧に表示することができる。

●ユーザ名マッピング

Windows 95/98/MeはWindows NT/2000サーバにアクセスするときのユーザ名を変更することができない。
Sambaはサーバ側でクライアントのユーザ名をマッピングして変更することができる。(図5参照)


図5.ユーザ名マッピング

●コマンド実行

クライアントが共有に接続した時、または共有との接続を切断した時に、Sambaサーバ側でコマンドを実行することができる。
これを使ってCD-ROMやMO(光磁気ディスク)の共有などを行うことができる。

●クライアント・ホストの制限

共有ごとに使用できるクライアント(ホスト名やIPアドレス)を制限できる。

●クライアント毎、ユーザ毎に設定ファイルを用意可能

クライアント毎やユーザ毎にアクセスできる共有名やそれぞれの設定を変更できる。(図6参照)


図6.個別設定ファイル機能

●QUOTA(ユーザ/グループ単位の容量制限)機能

UNIX/LinuxのQUOTA機能を利用することでWindows NTでは標準サポートされていないQUOTA(ユーザ/グループ単位の容量制限)機能がSambaで利用することが可能だ。(ただし、Windows 2000サーバではQUOTAをサポートしている)


(c) Sambaの制限事項およびWindows NT/2000との相違点

●NetBEUI,IPX/SPXは使用しない

先にも述べたが、Sambaが使用するプロトコルはNBTのみのため、TCP/IPが組み込まれていないWindowsクライアントと接続することはできない。

逆にクライアントにNetBEUI,IPX/SPXが組み込まれていると問題が発生するので、これらは削除した方がいい。
もちろん、NetBEUIやIPX/SPXとの混在は、設定を正しく理解し、バインドを制御することで問題なく使用できる。

●日本語の問題

Sambaは設定ファイル smb.conf にclient codepageでクライアント側で使用するコード(マイクロソフト漢字は932を指定)、coding systemでUNIX/Linux側で使用する漢字コードを指定することでリソース名として日本語を使用することができる。

smb.confの中にはcoding systemパラメータで指定した漢字コードを使って以下の日本語パラメータを記述できる。

  • 共有名
  • プリンタ名
  • 共有やプリンタの説明(コメント) 
  • NetBIOS(コンピュータ)名 

もちろん、日本語ファイル名(日本語ディレクトリ名)にも対応している。
(ファイルの中身の漢字コード変換機能や改行コード変換機能は持っていない)

coding systemパラメータには、主に以下のものが使用できる。

○sijis(シフトJIS)

Windowsが使用するものとほぼ同じコードのため、Windowsとの互換性が高い。
しかし、Windowsと完全に同一ではないし、一部のUNIXではsjisは使用できない。UNIX/Linux/FreeBSDにおいてもすべてのコンポーネントがsjisを取り扱えると検証されたわけではない。

○euc(拡張UNIXコード)

UNIX/Linux/FreeBSDで一番安全なコード体系である。
しかし、オリジナルのSambaでは、①や㈱などのWindowsでしか使用できない機種依存文字や外字を扱うことができない。
Samba日本語版では、機種依存文字や外字をEUCの外字領域にマッピングすることでほぼ対応している。
(もちろん、これらはUNIX/Linux上で表示することはできない。
外字をマッピングするにはEUC3を使用すること)

○cap

CAPやNetatalkなどを使用してマッキントッシュとファイル共有する場合に使用する。
Vine LinuxなどのディストリビューションはNetatalkでもEUCを使用するように改変されているものもあるので使用するコードは注意して欲しい。

○hex

ファイル名を16進変換して格納する。
eucやsijisが使用できない場合でも安全に使用できる。
ただし、UNIX/Linux上では16進表記になるため、ファイル名がわかりにくいが、Samba日本語版の開発にも尽力している白井氏によるFDcloneのようにCAPやHEXのファイル名に対応したツールがあるので活用すると良いだろう。

○utf8

Unicode.org の定めた国際規格の UTF-8 エンコード形式。

「1文字」を1〜3バイトで表すが、日本語の場合は基本的に3バイトで表記される。
Windows で利用されている SJIS ではもともと1文字を2バイトで指定しているため、基本的には文字数の1.5倍のバイト数になる。

現状、日本語処理だけについていうとUTF8の利点は特にない。

利用している UNIX/Linux が UTF-8に対応していない場合は、ファイル名に表示できない文字が含まれるので、文字化けが発生したり、一部の UNIX 上のツールで問題が発生する可能性がある。

ファイル名に「\(0x5c)」が含まれる可能性もあるため、扱いに注意が必要となる。

最新のSolaris, HP-UX といった商用 UNIX では、日本語の文字コードとしてUTF-8 を利用することも可能だ。
ただし、日本語対応といわれているフリーソフトウェアの場合、実際には EUC-JP にしか対応していない場合も多く、UTF-8 に対応しているものはほとんどないため、フリーソフトウェアの日本語対応機能を利用する場合は、注意が必要だ。

こうした理由により、現状 UTF-8 をファイルシステムの文字コードとして利用している実績もほとんどない。

なお、Mac OS X ではファイル名のエンコーディング形式としてUTF-8 を利用しているが、文字集合としては Samba の UTF8 パラメータ
が想定している Unicode 2.0 ではなく、Unicode 3.1 を利用しているため、一部の文字で不具合が発生してしまい、現状利用を勧められない

どのcoding systemを使用するかはユーザの運用形態に合わせて選択すべきだが、OSがサポートしていない漢字コードを使用すると、バックアップ機能などで障害が起きる可能性がある。

*注)LinuxではSamba日本語版でEUCを使用するのが一番安全なので推奨する。

●ドメイン・コントローラ機能

SambaはWindowsドメインのドメイン・コントローラになることができる。しかし、PDC(プライマリ・ドメイン・コントローラ)にしかなれず、BDC(バックアップ・ドメイン・コントローラ)になれないし、SambaのPDCに対し、WindowsサーバをBDCとすることもできない。

●WINSサーバ機能

プライマリのWINS(Windows Internet Name Service)サーバにだけなることができる。
別な(WindowsNTやSambaの)WINSサーバと(プッシュとプル)同期をとることはできない。
このため同一ドメインおよび同一セグメントに複数の(Sambaによる)WINSサーバを置くことはできない。

●暗号化パスワードの問題

SambaはWindowsNT/2000と同様に平文パスワード(plain text password)と暗号化パスワード(encrypt password)の両方で認証することができるが、暗号化パスワード(MD4ハッシュ、LANMANハッシュ)はUNIXのpasswdファイル(MD5ハッシュ)と互換性がないため、別々に管理しなければならない。

しかし、この不便を補完するためにUNIXとのパスワード同期機能や平文パスワードから暗号化パスワードへの移行機能が提供されている。

●大文字と小文字の問題

Windows 9x/NT/2000も表示に関しては、ファイル名の大文字小文字の区別があるが、アクセス時には区別がない。そのため、同一ディレクトリにABCというファイルとabcというファイルを作成することはできない。
ところが、UNIXには正確な大文字小文字の区別があるため、同一ディレクトリにABCというファイルとabcというファイルを作成することが可能だ。
Sambaサーバにこうしたファイルが存在するとアクセス時予期できない結果になることがある。

●16ビットプログラムのための8.3形式の短いファイル名の問題

Windowsは16ビットプログラムのために8.3形式の短いファイル名と255バイトまでの長いファイル名をファイルシステム(FAT,NTFS)に保持している。(ファイル作成時に決めて、2つを保存)
ところが、UNIXのファイルシステムは長いファイル名しか保持しないため、Sambaは16ビットプログラムのために8.3形式の短いファイル名をアクセス時に自動生成してクライアントに返す。(これをName Manglingという)
このため、似たような長いファイル名が複数あるとSambaはこれを正しく区別できないことがある。
(クライアントから短い名前でアクセスした時、間違ったファイルを返すことがある)

●ファイル保護機能(セキュリティ)

各共有に対するファイル保護機能(セキュリティ)は、SambaとWindowsNTで、ほぼ同等でホスト(クライアント)名に対する制限がかけられる分Sambaの方が有用でなのだが、ファイル単位の保護機能ではACL(アクセス・コントロール・リスト)をサポートするWindows NT/2000の方が細かく設定できる。(ただし、NTFSを使用した場合のみ)

Samba上のファイルもWindowsのエクスプローラで各ファイルのプロパティを使ってセキュリティ・タブが利用できるが、「所有者(owner)」「グループ(group)」「それ以外(other)」の3種類でしか制限できない。


図7.Samba上のファイルのセキュリティタブ

現在ACLをサポートしたUnix/Linux OSの上でSambaもACLが利用できるようになったが、Linuxの場合OSがまだ標準でACLをサポートしていないため、まだ制限が残っている。

●ファイル属性の取り扱い

Windowsではファイルに「読み取り専用」「隠しファイル」「アーカイブ」「システム」といった属性があるが、UNIXにはこうした属性はない。
また、UNIXでは.(ドット)で始まるファイルが隠しファイルとなるのが一般的だ。
SambaにはUNIXの特定ファイルをWindowsのファイル属性にマッピングする機能がある。
これらを正しく設定すれば、ファイルのプロパティで属性を表示したり、設定したりできる。

●隠しファイルの取り扱い

Windows NT/2000サーバにマッキントッシュ・サービスを設定するとMacintoshとWindowsでファイル共有などができるように、UNIX/Linuxマシン上でNetatalkとSambaを動作させると、MacintoshとWindowsでファイル共有することができる。

こうした場合、WindowsNT/2000ではMacintoshのリソース・フォーク・ファイルなどが見えないが、UNIX/Linux上では見えてしまう。
こうしたファイルをSambaではクライアントから隠すことができる。

また、Samba 2.2.1aからはユーザにアクセス権限のないファイルを見せなくするオプションも追加された。

●ファイル所有者の取り扱い

Windowsの場合、ディレクトリの下にファイルを作成すると誰でもアクセスできる属性がつくか、上位のディレクトリの属性を引き継ぐのだが、UNIX/Linuxの場合ファイルは作成者が所有者になるため、ある人が作成したファイルを別な人が更新できないといったことが起きることがある。
Sambaは、共有ファイルの所有者を作成者に関係なく固定ユーザ (グループ) に設定できる。

●Windows管理ツール

Winodws NTサーバに付属する「ドメイン・ユーザ・マネージャ」「サーバ・マネージャ」「WINSサーバ・マネージャ」はSambaサーバに対しては利用できない。 ただし、一部の機能は参照機能だけ利用できるものもある。


小田切 耕司