日本Sambaユーザ会:小田切 耕司、高橋 基信、はま野 賢一朗
Samba(サンバと読みます)はLinuxなどのUNIXマシンをWindowsのファイルサーバにするオープンソースソフトウェアです。
Sambaは、はじめUNIXとWindowsを接続する「異機種間ファイル共有」のためのツールでしたが、現在は「Windows NT Server を置換するためのWindowsファイルサーバ」という位置づけになってきています。
例えば、UNIXで一般的なファイル共有の機能であるNFS(ネットワークファイルシステム)は、Windowsファイルサーバとしての必須機能であるOLE 32ビットロッキングをサポートしていないため、UNIX - Windows間のデータ交換程度にしか使用できず、機能や性能面でWindows NT Server を置換することは不可能なのです。
では、なぜSambaでファイルサーバを構築するのがいいのでしょうか?
答えは簡単です。Windows NT Serverと違ってソフトウェアのライセンス費用がまったくかからなくなるからです。
<OLE 32ビット ロッキング> OLE(Object Linking Embedding)は、WordやEXCELといったマイクロソフトの製品で図やグラフを共用できるようにするために、開発されたマイクロソフトの独自仕様で、アプリケーション間でのソフトウェア共有を実現します。 OLEが持っているさまざまな機能は、クライアントOS(Windows)側に実装されているものが多いのですが、ファイルロッキング(排他制御)に関する機能は、ファイルサーバ側にも実装されるべき重要な必須機能です。 その中でもファイルの中のオフセットを指定して、データの一部部分だけをロックするOLE独自の機能は、UNIXの一般的なファイル共用機能であるNFSでは実装されていなかったり、一部分ではなくファイル全体をロックする機能で代替していたりします。 ですからこうしたNFSでマイクロソフトのオフィス製品を使うと正しくファイルロックがされずにデータが破壊されてしまうことがあります。 Sambaはこのファイル内のオフセット指定を32ビット変数で扱えるOLEの32ビット ロッキングをサポートしています。 WindowsNTはオフセット指定を64ビット変数で扱えるOLEの64ビット ロッキングをサポートしており、WindowsNTからSambaをアクセスすると問題になるかと思われますがファイルサイズが2GBを越えない限り、Linuxでは問題とはなりません。 (64ビットファイルシステムをサポートした他のOSでは問題ありません) |
ここでは、日本Sambaユーザ会のメンバであり、Samba日本語版の開発プロジェクトを進めているコアメンバによって、「SambaによるWindowsファイルサーバ構築」方法を解説したいと思います。
Samba日本語版は、オリジナルに対して以下の改良が加えられており、初心者に大変使いやすいものとなっています。
最新版は、日本Sambaユーザ会のWebページ http://www.samba.gr.jp/samba_japan/ で公開していますので、ぜひチェックをお願いします。
それでは、Samba日本語版のインストールをしましょう。
ここでは、RedHat系/Turbo Linux
に則したインストール方法を紹介します。
(LASER5 Linux , VineLinux , Kondara MNU LinuxはRedHat系でパッケージに互換性があります)
Sambaはインストール時に標準で入っていることが少なくないのですが、今回は、すでにSambaがインストールされている場合も、Samba日本語版に置き換えてしまいましょう
(以下の作業は root になって行うものとします)。
まずは、念のためインストールされているSambaを削除します。
$ su - Password: ********** <-----パスワードを入力します # rpm -qa | grep samba <-----インストールされているSambaのパッケージをリストし、すべて削除します # rpm -e samba-client <----- Linuxのディストリビューションによってパッケージの種類は異なります。 # rpm -e samba # rpm -e samba-common <----- Linuxのディストリビューションによってパッケージの種類は異なります。 # rpm -e smbfs <----- Linuxのディストリビューションによってパッケージの種類は異なります。 |
次に、本誌のCD-ROMに入っているSambaのインストールします。
# mount /dev/cdrom # cd /mnt/cdrom/samba/redhat/ <---お使いのディストリビューションにあわせて設定してください。 # rpm -ihv samba-common <----- Linuxのディストリビューションによってパッケージの種類は異なります。 # rpm -ihv samba-client <----- Linuxのディストリビューションによってパッケージの種類は異なります。 # rpm -ihv samba |
これで、Samba日本語版のインストールは終了です。
あなたの使用しているLinux用のバイナリパッケージがない場合は、以下に注意して自分でSambaをソースからコンパイルする必要があります。
以下に簡単にコンパイル手順を述べます。
(1) RPMの作成(RedHat系、Turbo系の場合)
# tar xvzf samba-2.0.5aJP2.tar,gz
<----ファイルの解凍
(ディレクトリはどこでも構いません) # cd samba-2.0.5aJP2/samba-jp/packaging/RedHat # sh makerpms.sh <----RPMを作成します |
(2) RPMのインストール
上記?の後、/usr/src/redhat/RPMS/i386/にうまくRPMが作成できたら、先に述べた方法でRPMをインストールします。
# cd /usr/src/redhat/RPMS/i386/ # rpm -ihv samba-common # rpm -ihv samba-client # rpm -ihv samba |
(3) RedHat系、Turbo系以外のSamba日本語版インストール
上記?でうまくRPMが作成できない場合、以下でインストールします。
# tar xvzf samba-2.0.5aJP2.tar,gz
<----ファイルの解凍
(ディレクトリはどこでも構いません) # cd samba-2.0.5aJP2/source # ./configure # make install |
上記の場合の、Sambaのインストール先は、/usr/local/samba/の下になり、以下の標準Linuxの構成と異なります。
以降の説明では、ファイルの場所を注意して読んで下さい。
ファイル名 | 説明 | Sambaデフォルト インストール先 | RedHat Linux系でのRPMによるインストール先 |
---|---|---|---|
smb.conf lmhosts printers.def |
設定ファイル | /usr/local/samba/lib/ | /etc/ |
smbpasswd | パスワード・ファイル | /usr/local/samba/private/ | /etc/ |
codepages | コードページ・ファイル | /usr/local/samba/lib/codepages/ | /etc/codepages/ |
log.* | ログ・ファイル | /usr/local/samba/var/ | /var/log/samba/ |
STATUS..LCK | ロック・ファイル | /usr/local/samba/var/locks/ | /var/lock/samba/ |
smbd,nmbd,swat | デーモン・プログラム | /usr/local/samba/bin/ | /usr/sbin/ |
smbclient,smbsh, その他プログラム |
コマンド | /usr/local/samba/bin/ | /usr/bin/ |
*.html | SWAT用HELPファイル | /usr/local/samba/swat/help/ | /usr/share/swat/help |
man | manファイル | /usr/local/samba/man/ | /usr/man/ |
Sambaの設定は、/etc/smb.confにパラメータを記述することで行いますが、Samba日本語版が正しくインストールできると以下のような日本語版SWAT(Samba Web 管理ツール)を使って、簡単にsmb.confの設定が可能になります。
起動方法は、 http://Sambaサーバ名:901/ です。
起動したら、ユーザ名としてrootを、パスワードとしてrootのものを入力します。
しかし、SWATはWindows版のMSIEかNetscapeで使用するようにしてください。
できる限り、Linux版のNetscapeなどを使用するのは止めましょう。
理由はNetscapeにバグがあって、設定を変更するとsmb.confが壊れてしまうことがあるからです。
一部のNetscapeは更新しても大丈夫のようですが、Linuxではドキュメントの参照程度にしましょう。
もし、SWATがまったく動かない場合は以下を確認下さい。
- /etc/servicesの確認
以下のエントリがあるか確認し、なければ追加します。
swat 901/tcp - /etc/inetd.confの確認
以下のエントリがあるか確認し、なければ追加します。 (/usr/sbin/swatがあることを確認)
(先頭に #がついていたら削除)
swat stream tcp nowait.400 root /usr/sbin/swat swat - inetd に HUP を送信
inetd をリスタートする為に, inetd のプロセスに HUP を送信します。
kill -HUP (inetdのプロセス番号)
cp samba-2.0.5aJP2/packaging/RedHat/samba.pamd /etc/pam.d/samba
Sambaの設定は画面の上部にある以下のアイコンをクリックして行います。
アイコン | 内容 |
---|---|
![]() |
SWATの表紙です。 日本語の説明や技術資料を簡単に見ることができます |
![]() |
Samba全体の設定を行う[GLOBAL]セクションの設定ができます。 セキュリティ モードもこの中で設定します。 |
![]() |
共有フォルダ毎の設定ができます。 ユーザホーム機能を提供する[homes]セクションもここで設定します。 |
![]() |
プリンタ共有の設定をします。 プリンタ共有全体を提供する[printers]セクションもここで設定します。 |
![]() |
Sambaデーモンの起動・終了ができます。 誰が共有ファイルをアクセスしているか、表示されます。 ユーザのセッションを強制切断することが可能です。 |
![]() |
smb.confの内容を表示します。 |
![]() |
ユーザの追加・削除、パスワードの変更などを行えます。 |
まず、表紙にある「導入編」にあるドキュメントは、必ず目を通しておいて下さい。
Sambaの設定に先だってまず以下の4つのセキュリティ モードから1つを選ぶ必要があります。
共有(ファイル/プリンタ)を決まった固定ユーザを使ってアクセスします。
パスワードだけで、アクセス制御できるため、新規ユーザのために新しくアカウントを作成する必要がありません。
小規模な部門サーバやSOHO用に適しています。
共有(ファイル/プリンタ)を決まった個別のユーザを使ってアクセスします。
必ずUNIXアカウントが必要ですので、新規ユーザのために新しくアカウントを作成する必要があります。
SambaだけでWindowsドメインやWindowsワークグループを作成する場合に適しています。
共有(ファイル/プリンタ)を決まった個別のユーザを使ってアクセスします。
必ずUNIXアカウントが必要ですので、新規ユーザのために新しくアカウントを作成する必要があります。
しかし、ユーザ認証はWindowsドメインにしてもらいます。
すでに、Windowsドメインが構築されていて、そこにSambaマシンを追加する場合に適しています。
共有(ファイル/プリンタ)を決まった個別のユーザを使ってアクセスします。
必ずUNIXアカウントが必要ですので、新規ユーザのために新しくアカウントを作成する必要があります。
しかし、ユーザ認証は他のWindowsサーバやSambaサーバにしてもらいます。
すでに、SambaやWindowsによるWindowsドメインやWindowsワークグループが構築されていて、そこにSambaマシンを追加する場合に適しています。
みなさんセキュリティモードは決まりましたか? では、実際の設定に移ります。
では、「全体設定 [GLOBALS] 」アイコンをクリックして、設定を開始しましょう。
パラメータはたくさんでてきますが、今回は紙面の関係上、重要なパラメータだけを解説します。
(SWATは、最初重要なパラメータまたはデフォルト以外を設定しているパラメータを表示します。
「詳細表示」ボタンを押すことですべての設定可能パラメータを表示させることができます)
全体設定 [Global]
基本オプション
Sambaの所属する(あるいはクライアントへ応答する)Windowsワークグループ名/Windowsドメイン名を指定します。
Windowsクライアントで指定するものと同じワークグループ名/ドメイン名を指定しましょう。例: workgroup = EIGYO1
「ネットワークコンピュータ一覧」で詳細表示した時、「サーバの説明」と「プリンタの説明」に表示する文字列を指定します。
文字列の中の%v は Samba バージョン番号と置換され、%h は ホスト名に置換されます。
既定値: server string = Samba %v
例: server string = Samba %v on %h Linux
このオプションは、Samba サーバが複数のインタフェイスを持つ(つまり、LANカードが2枚以上刺さっているマシンなど)場合にやSambaが正しくサブネットマスクを認識できない時に指定します。
複数のネットワーク・インターフェースを、IP アドレス/ネットマスクのペアのリストで指定します。ネットマスクはビット・マスク、またはビット長となります。
セキュリティ オプション
先に説明したセキュリティ・モードを指定します。
UNIXにユーザアカウントがない場合、guest接続を許すかどうか指定します。
設定は下記の3 種類があります。
"Never" guest接続を許しません。
既定値です。"Bad User" ユーザ名が無かった場合、ゲストログインとして扱い、 "guest account" で接続します。 "Bad Password" 不正なパスワードの場合、ゲストログインとして扱い、 "guest account" で接続します。
これは、任意のユーザがパスワードをタイプミスしたり、暗号化パスワードを設定し忘れていても、なにも言われずに "guest" としてログインしてしまうことに注意下さい。
暗号化されたパスワードを使用するかどうか、指定します。
Windows NT 4.0 SP3 以降やWindows98,Winodws2000,アップデートの適用されたWindows95では暗号化パスワードが必要になりますので、必ずyesとしましょう。
暗号化パスワードはLinuxの場合、通常 /etc/smbpasswd (または、
smb passwd file
で指定したもの)に格納します。
チューニング オプション
性能のために以下を指定することをお薦めします。
(バッファサイズ8KBはWindows NT Serverと同じ値です)socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192
ファイル名の取扱オプション
Linuxマシン側で扱うファイル名のコーディングシステムを指定します。
sjis,euc,hex,capなどが選べますが、以下の指針を参考にして下さい。
SambaをWindows NT Serverの代替として使うならば、シフトJISを使うのが便利です。
しかし、Linux上で漢字ファイル名を操作するには工夫が必要です。
クライアントに日本語Windowsを使用する時は、932を必ず指定します。
WINSオプション
セグメントが複数ある場合やマシンの台数が10台以上ある場合は、できる限りWINSサーバを設置しましょう。
Windows NT Serverがあれば、それをWINSサーバにしましょう。
なければ、SambaマシンをWINSサーバにしましょう。
WINS(Windowsインターネット名前サービス)サーバ(自身以外)のIPアドレスを指定します。
Sambaマシン自身をWINSサーバにする場合、yesにします。
必要なパラメータを入力したら、「設定」ボタンを押して確定します。
以下は設定例です。
[global] security = user workgroup = HONSYA server string = Samba %v on %h encrypt passwords = yes socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192 coding system = euc client code page = 932 wins support = yes map to guest = Bad Password |
ここでは、全体設定で「
security = user (または、domain , server)」を選択したことを前提に解説します。SWATを開き、「共有設定」のボタンを押します。
次に新規の共有名を入力し、「新規共有作成」のボタンを押すとパラメータの入力画面が出てきます。
ここでは、例として共有名を「企画」としておきましょう。
共有設定 [Share]
基本オプション
共有名のコメント(説明)を記述します。
通常のSambaでは、ここに日本語は使用できません。
Samba2.0.5aJP2だけが、日本語を使用できます。例: comment = 企画の共有フォルダ
このパラメータは、ユーザがアクセスするディレクトリを指定します。
例: path = /home/kikaku
セキュリティ オプション
更新のある共有は、read only = No とします。
Samba によって作成されるファイルに設定されるUNIX のモード・ビットのパーミッションを8進数で指定します。
Samba によって作成されるディレクトリに設定されるUNIX のモード・ビットのパーミッションを8進数で指定します。
クライアントが接続したときのユーザ名は無視され、全てのファイル操作は「強制されたユーザ
forced user
」によって実行されたことになります。
guest ok = yes の時、全てのファイル操作は guest によって実行されたことになります。
接続するときにパスワードが不要になり、guestでアクセス可能とします。
コンピュータ一覧表示オプション
net view コマンドの出力や「ネットワーク コンピュータ」の共有一覧にこの共有を見せるかどうか指定します。
ユーザホーム機能を提供する[homes]の場合は、browseable = Noとします。
既定値: browseable = Yes
パラメーターの詳細は上に示したとおりです。
これらの入力が終わったら、「設定変更」のボタンを押してください。
これで、Linux側の ディレクトリ が Windows
側に共有されることになります
今回は、公開範囲を3レベル想定し、以下に3つの例をあげます。
例1)決まったユーザ(グループ)だけが、アクセス可能な共有の設定
/home/kikaku の属性を 775(rwxrwxr-x)とし、同一のUNIXグループだけが更新でき、他のUNIXグループは参照が可能な共有を作成します。(valid
usersとinvalid usersで、更にグループ内のユーザを制限できます。)
UNIXにアカウントとパスワードの設定のないものはアクセスできません。
[企画] comment = 企画の共有フォルダ path = /home/kikaku read only = No create mode = 0664 directory mode = 0775 |
例2)UNIXにアカウントを持つユーザは誰でもアクセス可能な共有の設定
/home/kikaku の属性を 755(rwxr-xr-x)とし、ディレクトリの所有者をkikauというUNIXユーザとします。
UNIXにアカウントとパスワードの設定のあるものは、この共有に誰でもアクセス(更新・参照)できます。
しかし、UNIXにアカウントのないものはアクセスできません。
[企画] comment = 企画の共有フォルダ path = /home/kikaku read only = No force user = kikaku # 全員が、kikakuというUNIXユーザでアクセスします。 |
例3)誰でもアクセス可能な共有の設定
/home/kikaku の属性を 755(rwxr-xr-x)とし、ディレクトリの所有者をnobodyというUNIXユーザとします。
UNIXにアカウントがあっても、なくても誰でもアクセス(更新・参照)できます。
[global] map to guest = bad user # UNIXにアカウントがない場合は、guestでアクセス可能とします [企画] comment = 企画の共有フォルダ path = /home/kikaku read only = No guest only = Yes # アカウントのあるユーザもguestでアクセスさせます。 guest ok = Yes |
Sambaサーバで共有プリンタを使うには、まずLinux上でプリンタを使用できるようにする必要があります。
/etc/printcapに設定を記述してもいいですが、今回は初心者向けということで RedHat系でよく使われるprinttoolを使った方法を紹介します。
printtoolを使うには、Linuxに(GNOMEやKDEのような)X-Windowシステムをインストールする必要があります。
そうすれば、プログラムメニューに「コントロールパネル」や「プリンタ設定」がありますので、それを起動しましょう。
もし、見つけられなければ、ktermなどから、 printtool
と入力すると以下のような画面が起動するはずです。
(Linuxによっては、以下のメニューは日本語かもしれません)
新規にプリンタの作成する場合は、「Add」ボタンを押します。
マシンのパラレルポートにつながったプリンタの場合は、以下の「Local
Printer」をチェックします。
Sambaで使うプリンタに「Input Filter」は指定しては、いけません。
(設定にプリンタの型番や種類、Linuxのプリンタドライバは必要ありません)
「Suppress Headers」は、印刷セパレータを使いたい時にチェックをはずします。
以下にこれによって、生成される /etc/printcap の内容を載せます。
printtoolがない環境では、以下を /etc/printcap に記述してください。
(2行目以下の左側空白はタブでないと印刷できないので注意下さい。)
もちろん、その場合は、スプールディレクトリは自分で作成する必要があります。
lp:\ :sd=/var/spool/lpd/lp:\ :mx#0:\ :lp=/dev/lp0: |
ネットワーク上にある lpr (lpd)プリンタを使用する時は、以下のように「Remote
Unix (lpd) Queue」をチェックします。
(ここでは、プリンタにネットワークカードを指したり、プリンタボックスに接続するネットワークプリンタを想定しています)
「Remote Host」には、プリンタのホスト名かIPアドレスを、「Remote
Queue」には、キュー名(lpが一般的です)を指定します。
ローカルプリンタと同様に「Input Filter」は指定しては、いけません。
以下にこれによって、生成される /etc/printcap の内容を載せます。
printtoolがない環境では、以下を /etc/printcap に記述してください。
(2行目以下の左側空白はタブでないと印刷できないので注意下さい。)
lp0:\ :sd=/var/spool/lpd/lp0:\ :mx#0:\ :rm=lp9200sx:\ :rp=lp: |
上記は、ローカルプリンタとリモートプリンタを設定した例です。
実はこれでもうできたも同然です。SWATの「プリンタ設定」で以下を設定すればOKです。
(プリンタ毎の設定は通常必要ありません。きめ細かな設定が必要な時のみプリンタ毎に設定して下さい。
なぜなら、OS(の/etc/printcap)に設定してあるすべてのプリンタを、Sambaで公開する設定の「load
printers = yes
」はデフォルトなので通常指定する必要はないからです。
[printers] path = /var/spool/samba # このディレクトリは、chmod 777(rwxrwxrwx)に しておきます writeable = no guest ok = yes printable = yes |
SWATを使って設定がうまくいったら、引き続いて、Sambaを起動しましょう。
SWATの状態表示(STATUS)ページを開いて、smbd (ファイル共有デーモン) と nmbd (ネームサービスデーモン) を立ち上げます。
動作確認をして問題がなければ、毎回手動で立ち上げるのは大変ですから、次回起動時からはSambaが自動的に立ち上がるように設定しておきます。
Red Hat Linux/Laser5 Linux/Vine Linux /Turbo Linuxの場合は以下のコマンドで行います。
/sbin/chkconfig --add smb |
Sambaの起動スクリプトが /etc/rc.d/init.d/smb
にあることを確認下さい。
もしなければソースのパッケージディレクトリから、smb.init
ファイルをコピーします。
Sambaサーバの動作がしたら次は、ユーザーの設定をします。
Sambaのユーザーは、Linuxのユーザー設定とともにSamba独自の設定が必要となります。
まずは、既存のLinuxユーザー設定をそのままSambaの設定に移行してみましょう。
# mksmbpasswd.sh < /etc/passwd > /etc/smbpasswd # chmod 600 /etc/smbpasswd |
但し、この設定は /etc/passwd に記述してあるユーザーをSamba側にエントリされるだけでパスワードは、また個別に設定しなくては行けません。
Sambaユーザーのパスワードの設定はsmbpasswd
を用いておこないます。
(例は、hamanoというユーザのSambaのパスワードの設定をしています)
# smbpasswd hamano New SMB password: <-----パスワードを入力 Retype new SMB password: <-----再度パスワードを入力 Password changed for user hamano. |
rootなどのシステムアカウントをSambaに接続させたくないときは、/etc/smbpasswd からユーザ行を削除しましょう。
新しくSambaユーザを登録するには、まずLinuxのユーザーを登録する必要があります。
これは、Sambaに限った設定ではなく、一般的なユーザーの登録方法です。
GUIのツール(linuxconfなど)もしくはコマンド(図*)で設定してください。
この設定は、/etc/passwdに格納されます。
# /usr/sbin/useradd -m hamano |
Linuxのユーザーを登録してから、以下のようにSambaユーザを登録します。
# smbpasswd -a hamano New SMB password: <-----パスワードを入力 Retype new SMB password: <-----再度パスワードを入力 Added user hamano Password changed for user hamano. |
ここまで、一通り Samba サーバ側の設定を行ないましたので、次に Windows95/98/NT クライアント側の設定について解説します。
とはいえ、基本的に Samba
であることによる特別な設定は一切不要です。
既にクライアントを導入している場合は、基本的に何ら設定を変更することなく
Samba サーバへのアクセスが可能です。
ただし、Samba サーバにアクセスするには、各クライアントに
TCP/IP がインストールされていることが必要です。
最近は少なくなりましたが、現在のネットワーク環境で TCP/IP
を利用していない場合は、Samba
サーバにアクセスすることは出来ません。
Samba サーバの設定で新規にワークグループを構築した場合は、以下のようにワークグループ名を先程設定したものにあわせます。
Windows NT でも同様にワークグループ名を変更してください。Windows95/98の設定例
WindowsNTでの設定例
(注1)
Samba サーバを既存のワークグループに参加させた場合は、クライアント側では何も設定する必要はありません。(注2)
実際には Samba サーバにアクセスするためには、必ずしもワークグループ名が同一である必要はありません。
例えば WINS 等で名前解決が出来ていれば UNC名(\\サーバ名\共有名)を直接指定してアクセスしても構いません。再起動後「ネットワークコンピュータ」アイコンをクリックすると、Samba サーバが確認できると思います。
なお、以下のように、最新の Samba 日本語版では、コンピュータ名や共有名に日本語(半角カナは不可)を指定した場合でも、正しく表示されるようになっていますので、既存環境との親和性が更に高まっています。
更に共有フォルダアイコンをクリックすると、設定によってパスワードを求められたり、図x-2 のように、そのまま内部を見られたりするはずです。
図-x2 を御覧になれば分かるように、クライアントからは Windows マシンにアクセスしているのか、Samba サーバにアクセスしているのかは全く分かりません。
Sambaのプリンタをクライアントから使用するには、(Linux側にプリンタドライバは必要なく)クライアント側にプリンタドライバが必要です。
プリンタを設定するには、「ネットワークコンピュータ」からSambaマシンをクリックして、現れるプリンタアイコンをダブルクリックするだけでインストールが開始されます。
プリンタドライバの場所を聞いてきますので、プリンタに付属していたものやインターネットで最新のWindows用のものをダウンロードして使用して下さい。
共有の表示時に、クライアントのユーザ名を共有名としてマッピングして表示する機能です。
たとえば、yamadaというアカウントでSambaマシンをアクセス(ネットワーク・コンピュータをクリック)した場合、UNIX上の/home/yamadaが共有名yamadaとして表示され、また、suzukiというアカウントでSambaマシンをアクセス(ネットワーク・コンピュータをクリック)した場合はUNIX上の/home/suzukiが共有名suzukiとして表示されます。
これによってユーザごとの専用のディレクトリを提供し、他人のディレクトリをアクセスするのが防げます。
(Linuxに登録した)Sambaユーザ名とWindows(にログオンする時の)ユーザ名が1対1で対応する場合
[global] security = USER encrypt passwords = Yes |
# SWATの「全体設定」で指定します。 # security = DOMAINまたはSERVERでも構いません |
---|---|
[homes] comment = %U さん専用の共有です valid users = %S read only = No browseable = No |
# SWATの「共有設定」でhomesという共有を作成します。 # 日本語は、Samba2.0.5aJP2でないと使用できません # 該当ユーザ以外はアクセスさせない # 更新可能にします # homes共有を見せずに、ユーザホームを見せます |
(Linuxに登録した)Sambaユーザ名とWindows(にログオンする時の)ユーザ名が1対1で対応しない場合
[global] security = SHARE encrypt passwords = Yes |
# SWATの「全体設定」で指定します。 # security = SHAREでないと共有設定のusernameは使用できません |
---|---|
[homes] comment = %U さん専用の共有です username = %S only user = Yes read only = No browseable = No |
# SWATの「共有設定」でhomesという共有を作成します。 # 日本語は、Samba2.0.5aJP2でないと使用できません # 共有名とユーザ名をマッピングさせます # 該当ユーザ以外はアクセスさせない # 更新可能にします # homes共有を見せずに、ユーザホームを見せます |
上記の設定では、「\\sambaサーバ名\ユーザ名」で、Windows 95/98からログインしたものと違うユーザで接続できます。
企業内ネットワークで Samba サーバを利用するときは、既存の Windows ドメインの一部として、クライアントに Samba サーバであることを感じさせずに運用を行なっていきたいところだと思います。
Samba 2.0 以降では,NT Workstation のようにWindowsドメインに参加することが可能になりました。
ドメインに参加することで、認証を Windows
ドメインに統合して、よりシームレスな運用が可能になります。
それでは実際に設定方法を見ていきましょう。
まず下準備として Windows NT Serverの "サーバマネージャ"(svrmgr.exe) を使ってSambaマシンをWindows NT WorkstatonとしてWindowsドメインに追加しておいて下さい。
その後 Samba マシン上でドメイン参加の手続きを行ないます。
この作業は SWAT では行なえませんが、SWAT の "ホーム" から参照できる DOMAIN_MEMBER.txt に詳しく書かれていますので、併せてご一読ください。
参加するWindowsドメインの名前が DOMNAME , PDC(プライマリ・ドメイン・コントローラ) のコンピュータ名が DOMPDC の場合の方法は以下の通りです。Windowsドメインへの参加 (#はrootユーザのプロンプトです)
# /etc/rc.d/init.d/smb stop <-- Samba サーバの停止
# smbpasswd -j DOMNAME -r DOMPDC
smbpasswd: Joined domain DOMAIN. <-- 成功したときに表示されるメッセージ事前に忘れずに Samba サーバを停止させておいてください。
また、-r オプションでは、必ず PDC のコンピュータ名(上記の例では DOMPDC)で PDC を指定出来る必要があります。
良く分からない方は、PDC のコンピュータ名と IP アドレスを /etc/hosts に記述しておいてください。成功すると /etc に ドメイン名.マシン名.mac というファイルができているはずです。
これを確認したら、以下のように security パラメータを DOMAIN にして、Samba サーバを起動します。
起動に成功すれば,晴れて Samba もWindowsドメインのメンバです。SWATで設定するsmb.confの内容
[global]
security = DOMAIN
encrypt passwords = Yes
workgroup=DOMNAME # ドメイン名を指定します
password server = DOMPDC # Samba 2.0.6以降ではここは、* を指定します。
Samba サーバをWindowsドメインのメンバにしたことで、Windowsドメインにログオンしたユーザであれば Samba サーバにもシームレスにアクセスできるようになりました。
そこで更に一歩進んで、Samba サーバ上でのアカウントのメンテナンスを自動化する方法を解説します。まず、一例として以下のようなスクリプトを /usr/local/sbin に作成します。
スクリプト( /usr/local/sbin/smb-useradd.sh ) の例
#!/bin/sh
/usr/sbin/useradd -m $1
mkdir ~$1/public_html # これは、ApacheのためのWebホームディレクトリですスクリプト( /usr/local/sbin/smb-userdel.sh ) の例
#!/bin/sh
/usr/sbin/userdel -r $1次にSWATでsmb.confに、以下の、add user script と del user script パラメータを設定します。
smb.confの設定
[global]
add user script = /usr/local/sbin/smb-useradd.sh %u
delete user script = /usr/local/sbin/smb-userdel.sh %u(注1) add user script パラメータは security = server でも設定可能です
(注2)NTのユーザグループとLinuxのグループをマッチングさせたい方は、以下を参照下さい。
http://plaza22.mbn.or.jp/~momokuri/samba/index-j.htmlこれで、Windows ドメインにアカウントがあるが、Samba サーバにはアカウントがないユーザで Windows ドメインにログオン後、Samba サーバにアクセスすると、自動的ユーザが登録されホームディレクトリが表示されます。
add user script を設定すると、Windowsドメインで認証されているにも関わらず、Samba サーバに存在しないユーザでアクセスがあったときに、add user script で指定したスクリプトを実行してユーザを自動的に作成することが出来るのです。
del user script は、同様にユーザがWindowsドメインに存在しなくなったときに自動的に消去するためのスクリプトです。
これらを活用することで、Windowsドメイン上でのユーザの追加/ 削除のみで、Samba サーバ上に自動でユーザの作成/ 削除を行なうが可能になり、管理コストが大幅に削減されると思います。
Sambaは Windows 95/98 に対して、Winodwsドメインコントローラとして機能することが可能になっています。
企業などで、これから Windows
ドメインを採用すべきか検討を行なっている場合には、Samba
サーバによるWindowsドメインコントローラの構築も現実的な選択肢ではないかと考えます。
なお、記事の執筆時点ではまだリリースされていませんが、3月頃にリリース予定の Samba 3.0 では、Windows ドメインコントローラ機能も正式にサポートされる予定です。
まず、SWATの「全体設定」で smb.conf を設定して下さい。
[global]
security = USER
encrypt passwords = Yes
domain logons = Yes
domain master = yes
wins support = yes
local master = yes
preferred master = yes
os level = 65
workgroup=ドメイン名
logon script=%U.bat# [全体設定]
# セキュリティモード
# 暗号化パスワード設定
# ドメインコントローラ設定
# ドメインマスタブラウザ設定
# WINSサーバ設定
次に「共有設定」で[netlogon]共有を作成し、以下のように設定します。
[netlogon]
path = /home/samba/netlogon
writeable = no
guest ok = yes# ログオンスクリプトを格納する共有の作成
動作確認のために、Windows クライアント上で 以下のようなログオンスクリプトを記述し,Samba サーバの [netlogon] 共有にユーザ名.batという名前で配置しておきましょう。
net use * \\サーバ名\ユーザ名 Windows 9xクライアントの側では,[コントロールパネル] - [ネットワーク]- [Microsoft ネットワーククライアント] のプロパティを以下のように設定してください。
また Windowsドメインでの設定と同様に、[コントロールパネル] -[パスワード] の"ユーザ別の設定" タブで,以下のように,ユーザ別の設定" をチェックしておくことで、ユーザプロファイルの利用も可能です。
設定を行なったら、Windows クライアントをリブートして下さい。
リブート後起動したら,設定したWindowsドメインにログオンして下さい。
ログオンスクリプトが動作すれば、設定は正しく動いています。
Samba サーバが複数台ある時は、一台のサーバをWindowsドメインコントローラとして設定し、残りのサーバは security パラメータを server にして、認証サーバとしてドメインコントローラの Samba サーバを指定すれば、Windows ドメイン環境のように、一度認証を受ければ、すべての Samba サーバにアクセスできるようになります。
Sambaを使ってWindowsの共有フォルダをLinuxのファイルシステムとしてマウントすることが出来ます。
ここでは、その使用方法について紹介します。
例として、 Windows(名前は"Nt1")の「kikaku」という共有フォルダをLinux側の
/home2 に共有することにしましょう。
特に今回は、簡単のためユーザー「hamano」が持つWindows上での権限をそのままLinux側で実現することにします。
Linux側でrootになり、ディレクトリ /home2 を作り、smbmountコマンドを以下のように実行します。
パスワードが要求されるので、ユーザー「hamano」のWindows側でのパスワードを入力します。
# mkdir /home2 # smbmount //Nt1/kikaku /home2 -U hamano Password: ********* (← hamano のパスワードを入力) |
これで、マウントの設定は終わりです。
実際にマウントされているかどうかを df
コマンドを使って確かめて下さい。
マウントされた共有は、通常のファイルシステム同様に cd や ls
などのコマンドを使って操作することができます。
# df ファイルシステム Kバイト 使用済 使用可 使用率 マウント場所 /dev/hda2 3958767 1767546 1986394 47% / /dev/hda6 1232895 559948 609243 45% /usr /dev/hda7 257598 164542 79752 64% /var //Nt1/D-Drive 1124896 422176 702720 38% /home2 |
smbclientコマンドを使用するとFTPコマンドのようなインタフェースでLinuxからWindowsのファイルをアクセスできます。
使用方法は以下の通りです。
smbclient service <password> [-p port] [-d debuglevel] [-l log] [-t termcode] 引数とその意味: -p port ポート番号を指定します -d debuglevel デバッグレベルを設定します -l log basename. ログまたはデバッグ・ファイル名を指定します -n netbios name. NetBIOSでのマシン名を指定します -N パスワードの問い合わせを抑止します -P プリンタに接続する時に指定します。 -M host ポップアップ(winpopup)メッセージをマシンに送ります -m max protocol 最大プロトコルレベルを指定します -L host 利用可能な共用資源一覧を表示さいます -I dest IP 接続先のIPアドレスを指定します -E メッセージを標準出力(stdout)ではなく、エラー出力(stderr)に出します -U username 接続時のユーザ名を指定します -W workgroup 接続時のワークグループ名を指定します -c command string コマンドを区切りのセミコロンを指定します -t terminal code 漢字コードを {sjis|euc|jis7|jis8|junet|hex} で指定します -T<c|x>IXgbNa tarコマンドを実行します -D directory 初期ディレクトリを指定します
使用例1) 一番簡単な方法、commonという共有名に接続します。
smbclient \\\\nt1\\common |
使用例2) NetBIOS名とTCP/IPのホスト名が違う時
smbclient \\\\nt1\\common -I 10.23.45.67 |
使用例3) 接続先のユーザ名を指定する
smbclient \\\\nt1\\common -U odagiri |
使用例4) プリンタに接続する
smbclient \\\\nt1\\epson1 -P |
接続に成功すると、smb: \>というプロンプトが現れます。ここからは以下のコマンドが利用できます。
SAMBAを使えば、WindowsファイルをUnixマシンにつながっているバックアップ装置でバックップすることができます。
注)ここでいうバックアップはユーザデータのバックアップです。
UNIXからWindowsシステムのバックアップをしたり、WindowsからUNIXシステムのOSのバックアップはできません。
これは、ファイルとして、OSディレクトリの下をバックアップすることは可能なのですが、OSがクラッシュした場合、リストアすることができないためです。
これには、smbtarというシェルコマンドが使用できます。
Unix側からSAMBAを使って、Windowsのファイルをテープなどにtar形式でバックアップできます。
smbtar [<options] [<include/exclude files] |
Options: | 意味 | 規定値 |
-r | テープからPCへリストアします | PCからテープへセーブします |
-i | 増分(Incremental)モード | フル・バックアップ・モード |
-v | コマンドをエコーします | エコーしません |
-s <server> | PCサーバ名を指定します | |
-p <password> | PC側のパスワードを指定します | |
-x <share> | PCの共有名を指定します | backup |
-X | 専有(Exclude)モードにします | 共有(Include) |
-N <newer> | 指定日付より新しいものをセーブします | |
-b <blocksize> | テープのブロックサイズを指定します | |
-d <dir> | 共有名の中のディレクトリを指定します | |
-l <log> | SAMBAのログレベルを指定します | 2 |
-u <user> | ユーザ名を指定します | |
-t <tape> | テープデバイス名を指定します | tar.out |
・Unixからのバックアップの例)
nt1というWindowsマシンの共有kikakuをtar.outというファイルにバックアップします。
(共有のパスワードは、kikakuとします)
smbtar -s nt1 -x kikaku -p kikaku |
日本Sambaユーザ会の紹介ここで簡単に日本Sambaユーザ会を紹介したいと思います。 日本Sambaユーザ会(略称:Samba-JP) http://www.samba.gr.jp/1999年11月12日に「Sambaの研究開発、国際化および普及促進を図る」「 Sambaに関する情報の収集と公開、技術移転の促進」「会員相互および外部との技術的・人間的交流を図る」ためにユーザ会が発足しました。 個人ユーザを対象とした一般会員はもちろん、企業やユーザ団体を対象にした賛助会員も随時募集していますので、よろしくお願いします。 Sambaについてもっと知りたい方は、日本Sambaユーザ会のWebページ( http://www.samba.gr.jp/ )をぜひご覧下さい。 ユーザ会メーリングリストもいくつか運営されており、初心者の方も安心して参加できます。 もちろん、上級者向けSamba日本語版開発プロジェクト メーリングリストもあり、開発に参加することもできます。 では、メーリング リストでお待ちしています。(^_^)/~~~ |