2022年8月、ホームページを全面リニューアルしました! 情報を分かりやすくお伝えできるサイト作りを目指してまいります。

Sambaによるファイルサーバ!

SambaはLinuxマシンにあるファイルやプリンタをWindowsから共有したり、LinuxからWindowsの共有ファイルフォルダやプリンタにアクセスするためのソフトウェアだ(画面1)

画面1

また、そのほかに、Windowsドメインのサーバとなり、パスワードの管理などを行うこともできる。
Windowsネットワークでは、NetBIOSというプロトコルを利用して通信をしている。このNetBIOSプロトコルはもともとNetBEUIという下位プロトコルを利用していたが、Windows95/98/NTでは、NetBIOS over TCP/IPという技術により、TCP/IPを下位プロトコルとして利用することができる。
そして、Windowsのファイル共有は、さらにNetBIOS上のSMBプロトコルによって行われている。Sambaは、オーストラリアのAndrew Tridgell氏らによって開発された。Linux(UNlX)マシン上でNetBIOS over TCP/IPを利用し、サーバとしてWindowsの名前解決をするためのnmbdと、リソースを供給するためのsmbd、そしてクライアントとしてのsmbclientというプログラムから構成されている。


1. Sambaのインストール

最近のディストリビユーションにはSambaも含まれていることが多いのだが、オリジナルのSambaは、日本語の運用については考慮されていない。これに対し、日本語のコンピュータ名や共有名、Samba管埋ツールSWATからの日本語入力などに対応した日本語版を、たかはしもとのぶさん方々がリリースしているので、今回は、そちらを使ってみよう。 日本Sambaユーザ会 のWebページでは、コンパイル済みのバイナリファイルがRPMパッケージとして提供されている。現在提供されているディストリビユーションは、Red Hat Linux 5.2/6.0/6.1、Laser5Linux 6.0、VineLinux1.0/1.1、TurboLinux4.0/4.2などだ。これ以外のディストリビューションを使っていたり、自分の好みのディレクトリにインストールしたい場合には、自分でソースからビルドする必要がある。RPMパッケージが用意されている場合は、以下のファイルを入手してインストールする。

samba-common.2.0.5aJP2-6.i386.rpm
samba-2.0.5aJP2-6.i386.rpm
samba-client.2.0.5aJP2-6.i386.rpm

ソースからビルドしてインストールした場合と、RPMパッケージでインストールした場合では、それぞれ、Sambaに関係するファイルがインストールされる場所が異なるので注意が必要だ。
その中でも特に重要なのが、Sambaの設定ファイルであるsmb.confの位置と、パスワードファイルsmbpasswdの位置だ(表1)

表1

2. Windowsマシンでの準備

先ほど述べたように、SambaはNetBIOS overTCP/IPを利用して、Windowsネットワークと通信している。
そのため、Windowsマシンでも、NetBIOSをTCP/IP上で利用できるように設定しておく必要がある。
Windows95は、インストールしたままの状態だとTCP/IP上でNetBIOSが使えるようになっていないので、ネットワークの設定をしないとSambaが使えない。また、Windows95/NTでもTCP/IPを無効にしている場合は、Sambaを利用することはできない。
TCP/IPが有効になっているかどうかの確認は、[コントロールパネル]の[ネットワーク]、[ネットワークの設定]の「現在のネットワークコンポーネント」の中で、TCP/IPと自分の使うネットワークカードが結ぱれているか 、また[TCP/IPのプロパティ]の[バインド]タグで、[Microsoftネットワーククライアント]がチェックされているかどうかで行う(画面2)

画面2

3. Sambaの設定

Sambaの設定は、smb.confというファイルを書くことにより行うが、SWATというWebベースのGUIツールも用意されている。ただし、基本的にSWATはsmb.confを書き換えるためのフロントエンドにすぎない。したがって、SWATでの設定ができれば、smb.confの書き換えも特に問題なくできるだろう。また、SWATはよくできたツールだが、ネットワーク上をパスワードが流れるなど、セキュリティ上の問題があるので、外部に直接につながっているネットワークでは使わないほうがよいだろう。その場合は、エディタを使って直接smb.confを書くことになる。SWATを利用するためには、ネットワークの設定を変更する必要がある。
RPMパッケージをインストールした場合は、/etc/inetd.confの中から# swatで始まる行を探し、先頭にあるコメントマークの#を削除する。ソースからビルドした場合は/etc/inetd.confと/etc/servicesに次の行を追加、

# vi /etc/inetd.conf
省略
swat stream tcp nowait.400 root /usr/local/samba/bin/swat swat
省略

# vi /etc/services
省略
swat       901/tcp
省略

/etc/inetd.confを書き換えたらinetデーモンを再起動するか、Linuxをリブートする。SWATを利用するには、Linuxサーバ上のWebブラウザで、 http://localhost:901/ というURLを指定し、ユーザー認証のダイアログに対してrootアカウントとそのパスワードを入力する。するとSWATの画面が現れる(画面3)

画面3

この画面から上部のメニューをクリックし設定を行うことになる。ここではsmb.confを書き換える方法を説明し、SWATではその設定がどの部分にあるかを解説する。もっとも、RPMパッケージでインストールした場合、デフォルトのsmb.confは作られない(ソースからビルドした場合は、サンプルのファイルが作成されるので、それを利用すればよい)。一度SWATを起動すると、基本的なsmb.confが作られるので、それをひな形として使用するのもよいだろう。smb.confは、複数のセクションと、その詳細設定パラメータに分かれている。その中でも、特殊なセクションとして、[global]、[homes]、[pronter]の3つのセクションがある。[global]は全体の動作の設定、[homes]はLinuxマシンにアカウントのあるユーザーのホームディレクトリの設定、[printer]はプリンタの設定だ。セクションは”[ ]”(大カッコ)でくくり、各パラメータとその内容は”=”で結んで記述する。簡単な以下のようなsmb.confを例に解説しよう。

[global]

workgroup = RALLY

       netbios name = LEVIN

       server string = Linux Samba Server

       log file =/usr/local/samba/var/log.%m

       max log size = 50

       socket options = TCP_NODELAY

       coding system = cap

       dns proxy = No

       guest account = nobody

[homes]

       comment = Home Directories

       read only = No

       browseable = No

[printers]

       comment = All Printers

       path = /var/spool/samba

       print ok = yes

[tmp]

       comment = temp directory

       path = /tmp

       guest ok = yes

       read only = no

上記は、SWATで作成して出力されたsmb.confの例


4. 全体の設定

[global]コセクションはすべてのセクションで共通に有効になるパラメータを指定する。まず、ワークグループ名もしくはWindowsNTのドメイン名、そしてSambaの動作しているマシンの名前などを設定しよう。smb.confでは、[global]セクションの次の項目で設定する。

workgroup    ワークグループ名

netbios name  Windowsネットワークでのマシン名

server string   Windowsエクスプローラーで表示されるマシンの説明

このほかに、ゲストアカウントを許可する場合は”guest account”パラメータに、ゲストとしてログインするときのユーザーアカウントを指定する。これらの項目は、SWATでは「全体設定」の中に存在する。
なお、[global]セクションで指定したパラメータと同じパラメータが、あるセクションで再ぴ指定されていた場合は各セクションで指定したパラメータが有効になる(画面4)

画面4

5. 共有フォルダの設定

次に、共有するフォルダの設定をしよう。smb.confでは、共有フォルダごとにセクションを作成することになる。ただし、特殊な共有フォルダとしで‐、[homes]がある。[homes]セクションでは、ユーザー自身のLinux上のホームディレクトリヘのアクセスを可能にする。そのため、個別に共有フォルダ指定する必要はない。[homes]で特に指定しておきたいパラメータは、以下のものだ。

read only  noを指定しないと、書き込みができない

それ以外の便利な設定として“browseable”パラメータを“no”にしておくとよい。このパラメータを指定すると、Windowsエクスプローラで見た場合に、「homes」と「ユーザー名」の両方に同じフォルダが表示されることを避けられる。[homes]以外の共有フォルダを作成したい場合は、そのフォルダの名前のセクションを作成することになる。たとえば、次のようにすると/tmpディレクトリを共有する。

[tmp]
comment = temp directory
path = /tmp
guest ok = yes
read only = no

各項目の意味は次の通りだ。

path         Linux上の共有するディレクトリの指定。

guest ok      yesにすると、アクセスするときにパスワードが不要になる。

read only     noにすると、書き込みが可能

になる。yesなら、読み込みのみ可能。“guest ok” と同じ働きをするパラメータに“public”がある。また、“writable”“read only”と反対の働きをするパラメータだ。これらの項目は、SWATでは「共有設定」の中に存在する(画面5)

画面5

また、共有フォルダごとに使用できるユーザーを制限することができる。“invalid users”パラメータにユーザーを指定した場合、そのユーザーは確実にアクセスできなくなる。また、逆に“validusers”パラメータにユーザーを指定した場合、指定されているユーザーしかアクセスできなくなる。


6. 共有プリンタの設定

Linuxマシンのプリンタを共有プリンタとして、Windowsから使うことができる。もちろんWindows95/98でもローカルプリンタの共有はできるが、プリンタを共有しているマシンは電源を切ることができなくなるし、また大人数でプリンタサーバとして利用することはライセンス上の問題もある。プリンタの共有はサーバマシン上で行いたい。共有プリンタの設定は[printers]セクションで次のように行う。

[printers]
comment = All Printers
path = /vat/spool/samba
print ok = yes

各項目の意味は次の通り。

path      Linuxのプリントスプールディレクトリを指定する。
print ok    yesにすると、pathで指定したパスにスプールファイルを書き込む。

共有フォルダと同様に、使用できるユーザーの制限も可能だ。SWATでは、これらの項目は「プリンタ設定」に存在する(画面6)

画面6

7. アカウントの設定

Sambaはもともとは、Linuxのユーザーアカウントを利用して認証を行っていたが、Windows98/NT4.0では、パスワードをネットワークで送信する際に暗号化するようになったため、Sambaでもアクセス用に暗号化したパスワードファイルを別途作成する必要がある。初期のWindows95を使用している場合には、Sambaのユーザー認証はLinuxのアカウント情報をそのまま使用するので、ユーザーアカウントをLinux上に作れぱよい。暗号化パスワードを使用している場合は、Windows側でパスワードを暗号化しないで送る方法と、Samba側で暗号化パスワードを利用できるようにする方法がある。当然、セキュリティー的には、暗号化パスワードを使用した方が良いので、ここではそちらの方法を説明する。

1) smb.confの変更
smb.confの[global]セクションに以下の指定を行う。

security = user
encript passwords = yes

これらの項目は、SWATでは「全体設定」の中に存在する。

2) バスワードファイルの作成
パスワードファイルをLinuxのユーザー定義ファイルから作成するスクリプトが用意されているので、それを利用し、パスワードファイルを作成する。その後、パスワードファイルをスーパーユーザー以外がアクセスできないようにする。

# cat /etc/passwd | mksmbpasswd.sh > /etc/smbpasswd
# chmod 600 /etc/smbpasswd

3) ユーザーの新規登録
以下の[password]の部分は、パスワードを入力する。kenchanは、新しく登録するユーザー名。

# smbpasswd -e kenchan
New SMB password: [password]
Retype new SMB password: [password]
User kenchan enabled.

また、Windows NTが存在するならば、Windows NTのユーザー認証を利用する方法もある。ドメイン名がhogehogeでドメインコントローラとしてhoge1hoge2が存在するのであれば、smb.confの[global]セクションを以下のように設定する。

security = server
workgroup = hogehoge
password server = hoge1 hoge2

これらの項目は、SWATでは「全体設定」の中に存在する。ただし、“password server” に関しては、「詳細表示」をしないと、表示されない。


8. Sambaの起動

Sambaのファイルをインストールし、設定が終わっても、Linuxが立ち上がると自動的にSambaサーバが立ち上がるわけではない。とりあえず、起動するには、スーパーユーザー(root)になって、コマンドラインでサーバプログラムを実行する

# nmbd -D
# smbd -D

しかし、実際にSambaが動作することが確認できたら、Linuxが動いているときは常にSambaを使える状態にしておきたい。RPMパッケージからインストールした場合は、Linux.conf、ntsysv、turboserviceなどでLinuxとともにSambaも起動するようにしておこう。一方、ソースコードからビルドした場合は、/etc/rc.localの中に起動するコマンドを書いておけば、Linuxとともに自動起動するようになる。


9. その他のSambaの機能

このほかにも、SambaにはLinuxマシンからWindowsの共有ファイルにアクセスしたり、共有プリンタに印刷するクライアント機能がある。ただし、LinuxからWindowsのプリンタに印刷する場合には、ブリンタドライバがLinux側に必要となる。すなわちLinuxからWindowsのプリンタドライバを使って印刷することはできない。また、Windowsドメインのメンバサーバとなったり、WlNSサーバとして動作させることもできる。さらに、Windows95/98のためのドメインコントローラとして動作することもできる。
このほか、Windows95/98に対しては、Sambaサーバからプリンタドライバの自動インストールをすることも可能だ。詳しくは、付属のドキュメントを調べてみてほしい。


10. Sambaの問題点

最後に、いくつか注意しておきたい点をあげておこう。
まず、Linux上のファイル名は、同じスペルで大文字/小文字が違うものを作成できるが、そのディレクトリにSambaでアクセスしたときには、正常な動作をしない。たとえぱ、Linux上では“Mail”というファイルと“mail”というファィルを、同じディレクトリに置くことができる。しかし、Windowsでは、表示上は大文字/小文字を区別してファイル名を付けられるが、実際にはどちらも同じファイルとみなされ、同じディレクトリに作成することはできない。そのため、もしLinux上でこういったファイルを両方作り、Windowsからアクセスしようとすると、実際にあるファイルにアクセスできくなってしまう。
また、ファイルに対するアクセス権もWindowsNTのほうがSambaよりも細かく設定できるので、ファイル単位のアクセス権の設定をしたい場合には少々物足りないかもしれない。具体的には、WindowsNTではファイルのアクセス権を、任意のユーザーや、グルーブに対して自由に設定できるが、Linuxではそのファイルの所有者に対するアクセス権、属するグループに対するアクセス権、全員に対するアクセス権の3つしか設定できない。そのため、Sambaによる共有ファイルにもその制限が存在する。もっとも、このような問題点はSambaを使う利便性から見れば些細なことだろうが・・。

以上

コメント