# Samba 2.2 新機能紹介

2001/12/03 改定

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

1999年１月に公開されたSamba 2.0も2001年４月にSamba 2.2が公開され、US Sambaチームによる開発は終了してしまっている。

2.2.0リリース当初は2.0.7より品質が良くなかったため、ディストリビューションが採用していなかったが、２００１年７月の2.2.1aリリースにより実用レベルになり、２００１年９月にTurbo Linux 7 workstationが、２００１年１０月にRed Hat Linux 7.2がSamba 2.2を採用した。しかし、これらはオリジナルUS版のため、日本語の取り扱いに問題があったり、ドキュメントが英語であったりする。

現在、Samba 2.2.1aの日本語版はミラクル・リナックス社で開発したコードをもとに日本Sambaユーザ会で開発されており、２００１年１０月に発売されたMiracle Linux Standard Edition V2.0で採用されている。
ここでは、Samba 2.2.2およびその日本語版の機能を紹介する。

### ●PDC（プライマリ・ドメイン・コントローラ）機能

Samba 2.0ではWindows 95/98/NTクライアントに対し、ドメイン・ログオンを提供し、ログオン時にスクリプトを実行させることができるが、Samba 2.2ではこれにWindows 2000/XP も加わった。

Windows 2000からのSambaへのアクセスはSamba 2.0.7以降で可能であったが、ドメイン・ログオンは従来できなかった。

図１．ＰＤＣ機能

＊注）
Windows XPに関してはProfessionalエディションのみがドメイン・ログオンをサポートし、Homeエディションはサポートしていない。

SambaのPDCにWindows XPからドメイン ログオンするには、「コントロールパネル」の「管理ツール」から「ローカル セキュリティ ポリシー」を起動し、「ローカル ポリシー」の「セキュリティ」オプションにおいて、「ドメイン メンバ：常にセキュリティ チャネルのデータをデジタル的に暗号化または署名する」を「無効」にする。
これでWindows 2000と同じセキュリティ設定になってドメイン ログオンできる。

### ●Windows2000/NT/XP系列での、プリンタドライバの自動インストール機能

従来Samba2.0では、Windows95/98/Meのプリンタドライバの自動インストール機能が提供されていたが、Samba2.2ではWindows NT/2000/XPもサポートされるようになった。

しかし、プリンタ・ドライバのサーバへの配置方式は従来のWindowsのinfファイルをprinterdef形式に変換する方法も残っているが、Windows NT/2000/XP用のドライバを配置するには、Windowsクライアントを使用した新しい方法でおこなわなければならない。

### ●MS-DFSルートのサポート

MS-DFS（マイクロソフト分散ファイルシステム）を使用すると複数台のSambaサーバ／Windowsサーバが１台の仮想ファイルサーバとしてクライアントに見せることができ、ファイルサーバの追加などの構成変更に柔軟に対応できるようになる。

従来のSamba 2.0でMS-DFSを構築するには、Windows 2000をDFSルートにし、SambaをDFSのツリーにする必要があったが、Samba 2.2はWindows 2000がなくてもDfsルートになり、ツリーを構成することが可能になった。

図２．MS-DFS機能
\\JINJI\JINJIというSambaサーバの共有を\\WORLD\MANAGERというDFSルートの下層ツリー\\WORLD\MANAGER\JINJIとして見せることができる

### ●日本語版独自のゴミ箱パッチ

日本Sambaユーザ会のメーリングリストで希望の多かった以下のゴミ箱パッチを日本語版へ独自に取り込んでいる。

http://www.amherst.edu/~bbstone/howto/samba.html

これはユーザが誤って消してしまったファイルを復活できる機能であり、Windows NT/2000 サーバには標準で備わっていない機能だ。
US SambaチームはOSのVFS（仮想ファイルシステム）レイヤーでゴミ箱機能をサポートすべきでSambaがサポートすべきでないという見解だ。
しかし、Linuxにはこうした機能がサポートされる予定はなく、ユーザの要望は強いため、日本Sambaユーザ会独自に対応することとした。

recycle binパラメータでゴミ箱フォルダ（．で始まる隠しフォルダが良い）を指定するとクライアントからのファイル削除時に、サーバで削除せずにこのフォルダに移動する機能だ。
誤って消してしまった場合は、このフォルダから取り出せばよい。これを使う場合は日が経ったファイルを抽出して削除するような夜間のcronなどをサーバで実行するといいだろう。

### ●pam password changeのサポート

pamを通してパスワード変更が可能になった。

### ● large readwriteのサポート

Windows 2000の large file (64k) streamingのread/write optionsに対応した。
kernel 2.4 と glibc 2.2 の64bit OSの組み合わせで１０％程度の性能向上が可能である。

### ●hide unreadableのサポート

ユーザが読めないファイルはユーザに見えないように隠してしまうオプションのサポート

### ●enhanced browsingのサポート

NetBIOS名に<1B>副修飾子を持つDMB（ドメイン・マスタ・ブラウザ）の拡張Sambaブラウジング機能のサポート。

SambaのWINSサーバ機能には複製機能がないため、WindowsNT/2000サーバのように複数台のWINSサーバを運用できない。
もし、Sambaで複数のWINSサーバを運用すると別ドメインのブラウジングがうまくできないことがある。

この拡張ブラウジングは他ドメインのドメイン・マスタ・ブラウザをDMB（ドメインマスタブラウザ）に自動登録するため、さまざまなブラウジング問題を改善するだろう。

### ●quota機能の不具合修正

ユーザ／グループの容量制限機能をWindows NT/2000で使用したときの不具合が修正された。
これにより、容量制限でエラーになったとき壊れたファイルが残ることがない。

しかし、この修正が正しく機能するのはAlan Coxのカーネルを使用している場合であり、Linusのカーネルを使っているとうまく機能しない。RedHat系のカーネルを使用していれば問題ないが自分でカーネルをコンパイルしている方は注意して欲しい。

またstrict allocateパラメータを使用するとファイルのディスク割り当て方式を書き込みしたときに割り付けるUNIX方式でなく、拡張したときに割り付けるWindows方式に変更でき、容量制限をより強化できるようになった。

### ●smbcontrol コマンドの追加

smbdやnmbdなどのSambaプロセスに制御メッセージを送るコマンドが追加された。以下のようなことが可能だ。

- デバッグレベルの変更
- ブラウズマスタ選定への立候補
- pingの送信
- プロファイル設定の変更
- 「プリンタ通知」メッセージの送信
- 「共有切断」メッセージの送信

### ●disable spoolss

プリンタ共有モードをWindowsNT互換モードにしたりWindows9x互換モードにしたり切り換え可能にすることで、プリンタドライバをサーバからダウンロードさせたりクライアントで要求させたり切り換えることが可能になった。

### ●ユーザ情報をLDAPに置くためのコードが新しくなった。

### ●Sambaのファイル共有をSSLで暗号化通信するためのコードが新しくなった。

### ●printing=cupsのサポート

各プリンタで使用する印刷するコマンドに従来のBSD(lpr)、LPRNG（Red Hat 7.x系）に加えCUPS(Common UNIX Printing System)が追加された。

### ●ロック機能の改良

より頑強に改良され、32ビットCPUでも64ビットの範囲のロックが可能になった。

### ●Windowsのドメイン・ユーザ・マネージャ(USRMGR.EXE)でSambaのユーザを見ることが可能になった。

（設定変更は未対応）

### ●libnss_winsによるWINSを使った名前解決の提供

libnss_winsを使用することで、UNIX/Linuxでのホスト名の名前解決でDNSやhostsファイルに加え、WINS(Windows Internet Name Service)を使用して名前解決ができる。

通常UNIX/Linuxでのホスト名の名前解決はDNSやhostsファイルやNISが用いられ、WINSを参照しない。
そのため、WindowsのpingコマンドではWINSを参照して名前解決できるマシンもUNIX/LinuxのpingではWINSを参照しないため、名前解決できないことがある。UNIX/LinuxやWindowsサーバだけをDNSで管理すれば問題はないように見えるが、WindowsクライアントをWINSやDHCPのみで管理している場合、UNIX/LinuxマシンからWindowsクライアントの名前解決できなかったり、古いWindowsマシンではDNSによるNBT名前解決できなかったり、動的DNSが利用できないかったりして、制限事項が多かった。

libnss_winsはUNIX/Linuxの機能であるnss（ネーム・サービス・スイッチ）機能を使いUNIX/Linux上でWINSでの名前解決を提供する。

図３．libnss_wins機能

### ●pam_smbpassによる/etc/passwdとsmbpasswdの統合

pam_smbpassは、UNIX/Linuxが管理するユーザ管理ファイル/etc/passwdをSambaのユーザ管理ファイルsmbpasswdで統合する機能を提供する。

これにより以下の管理作業が軽減される。

- pm_smbは認証サーバのSambaもしくはWindowsサーバが動作していないと認証できなかったが、pasm_smbnpasswはファイルのみで認証するのでネットワークがダウンしていても認証可能。
- unix password syncを使って、UNIX/LinuxのパスワードとSambaのパスワードを同期させる必要がない。
  （unix password syncを使用するには常にSambaが起動している必要がある。）
- smbpasswdコマンドだけでﾊﾟｽﾜｰﾄﾞが変更できる。
  ただし、passwdコマンドで変更しても使用されないし、ユーザの追加はuseradd した上でsmbpasswd -aしなければならない。

### ●Windows oplock と NFS (telnet , ftp)との統合

従来はSambaで更新した内容がNFSクライアントやftpで参照できないことがあるという問題があったが、Linuxカーネル2.4.6以降との組み合わせでSamba が提供する oplock （Windowsクライアントにファイルをキャッシュする機構）と NFS (telnet , ftp などのLinuxマシン上でのアクセス)が、同じデータファイルにアクセスするとき、同じロックが使えるようになる。そのため、NFSと Sambaでファイルを共有するときの整合性が保たれるようになった。

MIRACLE LINUX V2.0およびRed Hat Linux 7.2でサポートされている。
(Turbolinux 7wとRed Hat Linux 7.1では未サポート)

### ●ACL(アクセス制御リスト)のサポート

POSIX準拠のACLをもとにSambaへWindows NT/2000のようなACLが使えるようにする機能。

しかし、これはACLをサポートしたファイルシステム（例えばSGIのXFS）やLinuxカーネルにACLパッチが必要なため、日本のディストリビューションで対応しているものは現在ない。

### ●Samba 2.2.2日本語版の機能

Samba 2.2はSamba 2.0で日本Sambaユーザ会が解決した日本語（マルチバイト）の問題をいくつか取り入れているため、オリジナルのSamba 2.2でも大きな支障なく運用は可能だ。

表１にオリジナルのSamba 2.2.1aでの日本語対応状況をあげる。

表１．オリジナルSamba 2.2.1aの日本語対応

リソース名 | 最大長（バイト） | 日本語対応 | 空白を含む名前
全角文字 | 半角カナ | 機種依存文字
ファイル名 | 255 | ○ | ○ | × | ○
ディレクトリ名 | 255 | ○ | ○ | × | ○
共有名 | 12 | ○ | ○ | × | ○
コンピュータ名 | 15 | × | × | × | ×
Windowsワークグループ名 | 15 | × | × | × | ×
Windowsドメイン名 | 15 | × | × | × | ×
説明（詳細／コメント） | 47 | ○ | ○ | × | ○
ユーザ名 | 15 | × | × | × | ×
グループ名 | 20 | × | × | × | ×
パスワード | 14 | × | × | × | ×

しかし、機種依存文字などの扱いが完全でなかったり、ドキュメントが英語だったりするため、Samba日本語版を使うのが望ましいであろう。

表２にSamba 2.2.1a日本語版での日本語対応状況をあげる。

表２．Samba 2.2.1a日本語版の日本語対応

リソース名 | 最大長（バイト） | 日本語対応 | 空白を含む名前
全角文字 | 半角カナ | 機種依存文字
ファイル名 | 255 | ○ | ○ | ○ | ○
ディレクトリ名 | 255 | ○ | ○ | ○ | ○
共有名 | 12 | ○ | ○ | × | ○
コンピュータ名 | 15 | ○ | △ | × | ×
Windowsワークグループ名 | 15 | △ | △ | × | ×
Windowsドメイン名 | 15 | △ | △ | × | ×
説明（詳細／コメント） | 47 | ○ | ○ | ○ | ○
ユーザ名 | 15 | △ | △ | △ | ○
グループ名 | 20 | × | × | × | ×
パスワード | 14 | × | × | × | ×

Samba 2.2.2日本語版ならばsmb.confに以下のような設定をすれば、機種依存文字もサーバ側でもクライアント側でも問題なく日本語を扱えるであろう。

coding system = euc client code page =932

加えてコンピュータ名やワークグループ名、ドメイン名に日本語が使えるようにSamba日本語版では改修しているが、現１０月時点ではまだ完全とはいえない。使用はあまり勧めない。

### ●Windows/Linux/Unixの認証機能の統合（現在開発中）

Winbindの機能の最終ゴールはWindowsドメイン認証やUNIXの認証がすべてWinbindで統合可能にすることだ。（図４）

図４．winbind機能のゴール

しかし、2.2.2現在のWinbindの機能はWindows NT/2000サーバのリダイレクタの機能しかもたない。（図５）
しかも、まだメモリリークのバグが残っており長時間運用に耐えない。

図５．Samba 2.2.2のwinbind機能

Samba 2.2.2のwinbindではSamba／Windows／Linuxユーザの認証をすべてWindows NT/2000サーバで行うことができる。
従来のsecuirty=domain / server と異なるのは、Linuxのユーザの(/etc/passwdや/etc/groupへの)登録がまったくいらないということだ。

小田切 耕司