|
Samba 2.2 機能詳細
|
アプリケーション層 | 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クライアントに対し、プリンタ・ドライバの自動インストールができることだ。
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で印刷するという手もあるだろう。
Windowsクライアントに対し、ドメイン・ログオンを提供し、ログオン時にスクリプトを実行させることができる。
サポートするクライアントは、Windows 95/98/Me/NT 3.51/NT 4.0/XP Professionalである。
複数のSambaサーバで1つの認証サーバが利用できる。
WindowsドメインにSambaサーバをメンバ・サーバとして追加することができる。
ユーザ認証がすべてWindows NT/2000のドメインコントローラで行えるのでパスワードの2重管理が必要なくなる。
Windowsドメインにユーザを追加した場合、自動的にSambaユーザを追加する機能もある。
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も同様のことができるが、特殊なレジストリを変更しないといけない。
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.個別設定ファイル機能
UNIX/LinuxのQUOTA機能を利用することでWindows NTでは標準サポートされていないQUOTA(ユーザ/グループ単位の容量制限)機能がSambaで利用することが可能だ。(ただし、Windows 2000サーバではQUOTAをサポートしている)
先にも述べたが、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パラメータで指定した漢字コードを使って以下の日本語パラメータを記述できる。
もちろん、日本語ファイル名(日本語ディレクトリ名)にも対応している。
(ファイルの中身の漢字コード変換機能や改行コード変換機能は持っていない)
coding systemパラメータには、主に以下のものが使用できる。
Windowsが使用するものとほぼ同じコードのため、Windowsとの互換性が高い。
しかし、Windowsと完全に同一ではないし、一部のUNIXではsjisは使用できない。UNIX/Linux/FreeBSDにおいてもすべてのコンポーネントがsjisを取り扱えると検証されたわけではない。
UNIX/Linux/FreeBSDで一番安全なコード体系である。
しかし、オリジナルのSambaでは、①や㈱などのWindowsでしか使用できない機種依存文字や外字を扱うことができない。
Samba日本語版では、機種依存文字や外字をEUCの外字領域にマッピングすることでほぼ対応している。
(もちろん、これらはUNIX/Linux上で表示することはできない。
外字をマッピングするにはEUC3を使用すること)
CAPやNetatalkなどを使用してマッキントッシュとファイル共有する場合に使用する。
Vine LinuxなどのディストリビューションはNetatalkでもEUCを使用するように改変されているものもあるので使用するコードは注意して欲しい。
ファイル名を16進変換して格納する。
eucやsijisが使用できない場合でも安全に使用できる。
ただし、UNIX/Linux上では16進表記になるため、ファイル名がわかりにくいが、Samba日本語版の開発にも尽力している白井氏によるFDcloneのようにCAPやHEXのファイル名に対応したツールがあるので活用すると良いだろう。
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(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サーバにこうしたファイルが存在するとアクセス時予期できない結果になることがある。
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は、共有ファイルの所有者を作成者に関係なく固定ユーザ (グループ) に設定できる。
Winodws NTサーバに付属する「ドメイン・ユーザ・マネージャ」「サーバ・マネージャ」「WINSサーバ・マネージャ」はSambaサーバに対しては利用できない。 ただし、一部の機能は参照機能だけ利用できるものもある。
小田切 耕司