# pkgadd -d samba-1.9.18p10-Sol2.6のようにすれば/usr/local/samba/以下にインストールされます.インストールされるディレクトリは-Rオプションで変えられますが,設定ファイルなどをそれにあわせて書き換える必要があります.
でinetdのPIDを確認し,
# kill -HUP inetのPID
でinetdを再起動させてください.これで完了です.またこの場合,smb.confを変更すると自動で再読込してくれます.
# /etc/rc3.d/S87samba start
とするとsambaが起動し常駐します.以降はSolarisのboot時に自動で起動されます.またrun levelを2以下にすると自動的に停止されます.この場合,smb.confを変更しても再読込はしてくれないようなので,変更した場合はHUPコードを送って再起動させてください.
% smbclient -L localhost
と入力するとパスワードを聞かれるので,入力すると図1のような出力が見られます.最初のブロックはsambaを載せたUNIX上で公開されている共有資源です.先に示したsmb.confを使っているならば,IPC$とホームディレクトリと全てのプリンタが表示されるはずです.
# chmod 0500 /usr/local/samba/private
次にSolarisのパスワードファイルからsamba用のパスワードファイルを作ります.そのためにsambaにはmksmbpasswd.shというスクリプトがついてきます.これはsambaを展開したディレクトリのsource以下にあるので,それを以下のように実行してください.
# cat /etc/passwd | mksmbpasswd.sh >/usr/local/samba/private/smbpasswd
さらにこのsmbpasswdファイルのパーミッションを0600にします.
# chmod 0600 /usr/local/samba/private/smbpasswd
最後にsmb.confの[global]セクションに
デーモンとして常駐させる場合
sambaを展開したディレクトリ以下のexamples/svr4-startup/samba.serverというファイルを使います.これはデフォルトではsambaが/opt/sambaにインストールされていることになっているので,まずそこを修正します.修正すべき行をリスト6に示します.このパスを自分がインストールしたパスに書き換えてください.また-sオプションで設定ファイルの位置を指定しているので,設定ファイルを標準の場所(${BASEDIR}/lib/smb.conf)以外に置いている場合は自分の環境に合わせ書き換えてください.また-lでログファイルの位置を指定していますが,これは設定ファイルで指定できるのでここで設定する必要はありません.カットしましょう.またうっかり"-D"を消したりしないようにしてください.これはこの場合必須です.ちなみにバイナリパッケージを用いた場合は,同等のファイルがS87sambaという名前で付属してきますので,それをそのまま使えます.
以上の修正ができましたら,このファイルを/etc/rc3.d/以下にS87sambaというファイル名でコピーします.ついでに/etc/rc[012].d/以下にK02sambaという名前でリンクをはっておきましょう.その後rootで確認
ここまで出来たらば動作確認してみましょう.確認にはまず${BASEDIR}/bin/smbclientを使います.
このような出力が得られたなら,Windowsの「ネットワークコンピュータ」からsambaを載せたSolarisマシンが普通のWindowsマシンのように見え,共有資源も問題なく使えるはずです(注6).
ただしWindows95OSR2以降・Windows98・WindowsNT4SP3・WindowsNT5.0からは,標準の
暗号化パスワードの問題
状態ではネットワ−クコンピュータから見えないはずです.直接共有資源をUNCで指定して使おうとしても,「そのアカウントは、このワークステーションからのログインを許可されていません」というエラーが出ます.
これらのOSは,デフォルトでは暗号化されていないパスワードによる認証を受け入れません.一方sambaはデフォルトではパスワードの暗号化に対応していないのです.したがってこれらのOSでsambaにアクセスしようとするとはねられるわけです.
解決法は二つあり,上記のOSで暗号化されないパスワードを受け付けてくれるようにするか,sambaが暗号化パスワードに対応するようにするかです.前者は該当する全てのクライアントの設定を変更する必要があり,クライアントの数が多いと面倒です.一方後者ではsambaマシンの設定を変更するだけで済みますが,パスワードが二重になる(後述)のでパスワードの管理が面倒になります.
(1)OSを非暗号化パスワード(プレインパスワード)に対応させる
Sambaを展開したディレクトリのdocs/以下にWin95_PlainPassword.regとNT4_PlainPassword.regというファイルがあります.前者はWindows 95/98を,後者はWindows NT 4.0SP3を,それぞれプレインパスワードに対応させるためのレジストリの変更を記述したファイルです.これを目的のマシンに転送しダブルクリックすれば,自動的に必要なレジストリが書き変わります.その後再起動すればsambaマシンにアクセスできるようになっているはずです.
(2)sambaを暗号化パスワードに対応させる
sambaを暗号化させると,基本的にsamba用のパスワードとUNIX上のパスワードを二重に別々に管理することになります.つまりWindowsマシンからファイル共有をする場合のパスワードと,telnetなどでloginするときのパスワードとが別々のものになるのです.
まずはsamba用のパスワードファイルをおくディレクトリを作成します(以下の作業はすべてroot権限で行ってください).これは${BASEDIR}/private/というディレクトリにするのが標準的です.たとえばデフォルト通り/usr/local/samba以下にsambaをインストールした場合は/usr/local/samba/privateというディレクトリを作ります.さらにそのパーミッションを0500にします.
encrypt passwords = yes
を付け加えてください.
次は${BASEDIR}/bin/smbpasswdというプログラムを使って,samba用のパスワードを設定します.基本的にこのsmbpasswdで変更されるのはsamba用のパスワードで,UNIXにloginするためのパスワードは変更されません.つまりsmbpasswdでパスワードを変更した場合,Windowsマシンからファイル共有のパスワードはその新しいパスワードですが,telnetなどでloginするときには相変わらず古いパスワードのままということになります.
これら二つのパスワードをsmbpasswdで両方を同時に変更するような設定も出来ますが,なぜか私の環境(Solaris2.5.1 on SS20)では動かなかったので,ここでは説明できません.設定方法はsmb.confのmanの"passwd program","passwd chat","unix password sync"のパラメータの説明と,samba付属のENCRYPTION.txtを参照にしてください(日本語訳もhttp://samba.bento.ad.jp/pub/docs/ENCRYPTION.txtにあります).(付記(1999年6月29日):原因らしきモノが判明しました.)
ドメインコントローラ
先に書いたとおり,sambaはドメインコントローラになることが出来ます.本当であればNT serverを購入しないとドメインを構成できないのですが,sambaでほぼ代替出来るのです.ただし先に書いたとおり,Windows NTをドメインのメンバーにすることは出来ません.よってWindows NTを含めてドメインを作りたいのであれば,今のところNT serverを購入する以外に手はありません.
暗号化パスワードへの対応
ドメインコントローラになるには暗号化パスワードに対応していなければならないので(対応していなくても出来ますが,ドキュメントによると不都合が出る可能性があるようです),まず上記の説明をもとに暗号化パスワードに対応させます.
smb.confの設定
それができたらsmb.confをリスト7に示すように修正します.[global]セクションに設定を追加し,さらに新しく[netlogon]セクションを作ります.
ログオンスクリプトの設定
次にlogon scriptをおく場所を用意します.logon scriptは95/98マシンがドメインにログオンしたときに自動的に実行されるバッチファイルです.リスト4の設定では/usr/local/samba/netlogonというディレクトリに置くことになっているので,まずこのディレクトリを作成します.さらにその下にあるstartup.batというバッチファイルがログオン時に95/98上で実行されるので,そのファイルを用意します.ここで注意しなければならないのは,Solrais上でこのバッチファイルを作成・修正する場合,エディタによっては改行コードがLFのみになってしまい,改行コードがCR/LFであるWindowsマシン上ではうまく実行できなくなってしまいます.Mule/Xemacsなど改行コードを変更できるエディタを使用するか,Windowsマシン上で作成・修正するなどしてください.
ちなみにここで示した設定では,ユーザーはログオンスクリプトを修正・書き込みが出来ないようにしています.しかし"write list"で指定したユーザーやグループは修正・書き込みができるので,ログオンスクリプトを修正するユーザーやグループをここにリストアップしておくといいでしょう.
またこの例では全てのユーザーで同じログオンスクリプトを使うようにしていますが,一人一人に異なるログオンスクリプトを割り当てるという運用も可能です.その場合はsmb.confのlogon scriptの項目をリスト7に説明があるように変更します.ここで%Uという部分がそれぞれのユーザー名に自動的に置き換えられるので,/usr/local/samba/netlogonディレクトリ以下に「ユーザー名.bat」というファイル名で全ユーザー分のログオンスクリプトを用意してください.
WINSサーヴァー
最初に述べたWINSサーヴァー機能ですが,samba側で特に設定しなくてもデフォルトで使えるようになってます.Windows95/98/NTのWINSサーヴァーの設定でsambaを動かしているSolarisマシンのIPアドレスを指定してください.ただしWindows NT serverのWINSサーヴァーのpush/pullの機能は実装されていないので,他のWINSサーヴァーとのWINSデータの同期などは出来ません.
逆にsambaのWINSサーヴァー機能を使わずに別のWINSサーヴァーを参照させるようにしたいという場合は,smb.confの[global]セクションに以下の内容を付け加え,WINSサーヴァーのアドレスを指定してください.
wins support = no
wins server = WINSサーヴァーのアドレスを指定
WINSとDNSの連携
Windows NT serverに付属のMS社のDNSサーヴァーは,WINSで得られたホスト名−IPアドレスの対応をDNSに登録することが出来ます.Samba自体はSolaris上で動くDNSサーヴァーとのこういった連携機能は当然持っていません.しかしsambaが保持しているWINSのデータは,${BASEDIR}/var/locks/wins.datというファイルににテキストで格納されているので,それをもとにDNSの設定ファイルを生成すればMS-DNSのようなWINS-DNS連携機能が可能です(注7).
wins.datをDNSの正引き・逆引きファイルに変換する,へたくそな(笑)Perl5スクリプトの例をリスト8に挙げます.このスクリプトの冒頭部分を環境に合わせ書き換えてください.Perl5用ですが,特有の機能は使っていないので,29行目と38行目の"¥@"と"@"に書き換えればPerl4でも動くでしょう.これにwins.datを読み込ませれば,その内容が設定したファイルにbindの設定ファイルの形式で書き出されます.それをnamedに再読込させればWINSデータベースの内容がDNSで参照できるというわけです.ここで挙げたスクリプトではシリアル番号は固定なので,セカンダリにゾーンを転送するといったことは出来ません.が,MS-DNSでもWINSと連携するとセカンダリにゾーン転送できないようなので(http://www.ocn.ad.jp/setup/dns/a-win.html#q2-3参照),これで同等です:-p.どうしてもセカンダリにゾーン転送したい場合は,スクリプトを改造して,更新の度にシリアル番号を1づつ増やすようにすればいいでしょう.RFC1982によるとシリアル番号の最大値は約43億なので,相当頻繁に更新しても桁あふれはなさそうです.ただしこの方法は当方で長時間の動作確認を行ったわけではないので,at your own riskで使用してください.
Windows NT Serverとの比較・sambaの今後
以上でsambaをWindows NT serverと置き換えるべく説明をしてきましたが,今のところsambaで実現できないNT serverの機能がどうしてもあります.文中でも幾つか触れてきましたが,改めて列挙しますと
といったものです(DHCPやMacintosh向けのファイルサーヴァー機能など,samba以外のアプリケーションで実現される機能は除いています).これらの機能を使う必要がないのであれば,sambaで十分NT serverの代わりをこなせることになります.
最後に,sambaのこれらの機能への対応への予定・(私の)予想を述べてこの原稿を終わりにしましょう.
これまでは1の機能と2の機能を組み合わせて,一つの組織内の複数のドメインの連携を取っていたわけです.しかし今後のMicrosoftの方針としては,これまでのドメインのシステムに代えてActive Directory Serviceを導入するようですし,WINSもDNSで置換する方向のようです.したがって今後これらの機能の必要性は減少していくでしょうから,おそらくこれらの機能がsambaに追加されることはないでしょう.ちなみにsambaのActive Directory Serviceへの対応は,ヴァージョン2.1で予定されています.
3の機能は新versionの2.0で取り入れる予定でしたが,現在βテスト中の2.0.0への実装は見送られる模様です.開発自体は続けられていますので,近いうちに実装されることでしょう(と言ってもどの程度近いうちかはわかりませんが).
All right reserved Copyright
(C) ISHIDA Tsubasa <tbs-i@mtg.biglobe.ne.jp>