text
ファイルサーバーの構築
Sambaの構築と活用
1.ファイルサーバーとは
LAN内で複数のコンピュータを接続して使用している環境で作業をする際、同じファイルを必要とする場合がある。そのような場合、それぞれの端末にファイルをコピーして作業を行うと、データの更新時にそれぞれの端末に保存されているファイル同士でデータの不整合が発生する問題がある。 この問題に対しては、ローカルなネットワーク上のコンピュータにファイルを設置して共有することでこの種の問題についての解消が図られる。
LANの中で複数の端末間でファイルを共有するものがファイルサーバーである。ここで問題となってくるのが、サーバー/クライアントとの組み合わせだ。
例えば、ネットワークにつないでいる端末がWindowsだけならばWindowsサーバーで目的が達成される。Machintosh同士ならばAppleShareサーバーをLinuxだけならば、従来からのNFSサーバーでそれぞれ目的が達成される。
だが、Windows、Mac、Linuxが混在するネットワーク環境ならどうだろうか。それぞれのOSでのファイルシステムの扱いが異なるためにネットワーク上でのファイル共有は一筋縄ではいかなくなる。ネットワークでの利用を考える場合は、特定のOS下での稼動に限定して考えてはならない。複数の種類のOSが使われていることを前提に考えてシステムを設計する必要がある。
今回扱うSambaサーバーはUNIX及びクローンOS上でWindowsのファイル共有機能(SMB)実行されるサービスの名称で、UNIX及びクローン系サーバ/Windowsクライアント/MacOSXクライアントを実現する。
2.ファイルサーバー構築の目的
ファイルサーバー構築及び設置の利点については上記で述べた。
なぜ、ファイルサーバーをUNIXクローンOSで構築するのかをここで述べる。
サーバーを構築する際には利用状況に基づいたシステム構成を決める。ここでは便宜上システム構成をハードウェアとソフトウェアに分けて考察していく。
ハードウェアの観点で考えていくと、利用者数や利用頻度など事業所の規模で判断することが出来る。
企業ネットワーク内でサーバーを構築する場合、大規模高負荷状況下での利用になるか小規模低負荷の使用になるかが大きな分かれ目となる。
数百人規模の大規模な利用が考えられるのなら、ハードウェアは高速かつ高負荷に耐えられるサーバー専用機を選択する。その際、負荷分散や障害対策として複数台の設置も検討しておく。
部署やプロジェクト単位、または従業員数が10数人程度の小規模オフィス等での利用が前提の場合、高価なサーバー専用機ではなく安価なPCでも十分サーバー機としての要求を満たすことができる。
ソフトウェアの観点でサーバーを考察する。
本サイトでは度々UNIX及びそのクローンOSでのサーバー構築・運用を謳っているが、それ以外のOSではサーバーが構築できないわけではない。
例えば、UNIX系以外のOSとしてWindowsを題材にあげると、専門知識を必要とせずにファイルサーバーやプリントサーバー、Webサーバーにすることが出来る。あえてサーバーOSでなくともPCを購入したときにバンドルされているクライアントOSでもサーバー構築が可能だ。
クライアントOSでもサーバーとして使えるのなら、わざわざ高価なサーバーOSを購入する必要がない、と思われるだろうが幾分か制限がある。
この制約のもっとも大きな要因は使用ライセンスにある。MicrosoftはクライアントOS(=WindowsXP Pro)をクライアントOSとして販売しているためライセンス上様々な制約をつけている。
ライセンスの条項は、通常"C:\Windows\System32"にあるeula.txtというテキスト・ファイルに書かれている。これによると、ファイルとプリンタの共有・Web共有・テレフォニーの接続に限り同時接続は10台と限定している(Homeエディションの場合では5台に限定)。
同時接続数はサーバーに対してコネクションを張っているクライアントPCの台数としてカウントする。10人以下の小規模な利用ならば使用ライセンスを気にすることなく使うことが出来る。しかし、Windowsのシステム仕様ではクライアントがサーバーへ接続する時のコネクション確立時にたった1台のクライアントがUDP(137)、UDP(138)、TCP(139)の3本のコネクションを1次的に張る。サーバーへのアクセスのタイミングによっては3台しかサーバーにアクセスできない事態が発生する。この現象は、ファイルやプリンタ共有だけでなくWeb共有(=Webサーバ)でも同様に発生する。システムのバグではなくライセンス契約に基づいた正規のMicrosoftのシステム仕様でWebサーバーがIISだろうがApacheだろうが関係ない。そのためアクセスが集中するWebサイトをWindowsサーバーで構築するのは不向きだ。
クライアントOSをサーバーとして使用することはライセンス契約上想定されていないので、上記のような制約が出る。
Serverや2003 Serverの場合、サーバーOSとしての使用用途を前提としているがライセンスの本数ごとに価格が設定されている。OSの性能としては大規模ネットワークで高負荷に耐える信頼性があるが、利用者分のライセンスを取得しないとならないため、クライアントOSと同様にサーバーへ接続できるクライアント数に限りがある。そのため、Windowsサーバーの利用用途としては利用者や利用者数、使用用途が明確に把握できる社内向けのサーバーとして設置されることが主だ。
UNIX及びそのクローンOSではGNUをはじめとしたフリーライセンスの文化で発展していった背景のためかMicrosoftのような使用ライセンスが多くの場合設けられていない。同時接続数を気にすることなく無制限にクライアントを接続させることが出来る。これがとくにインターネットに公開されているサーバーにUNIX系OSが採用されている理由で著しくMicrosoftのOSが脆弱だからというわけではない。
3.ファイルサーバー手順
(1)smb.confの編集
(2)Sambaユーザーの設定
(3)デーモンの起動(smbd、nmbd)
(4)Windowsクライアントの設定
4.Sambaサーバーの基本設定
Sambaサーバーの機能には大きく分けて下記の3つがある。
・ファイルサーバー機能
・プリントサーバー機能
・ドメインコントローラー
余談だが、日本語版Sambaでは文字コードの変換機能も備わっている。
■ポートの開放
ファイウォールのルールで以下のポートを空けておく。
#vi /etc/sysconfig/iptables
Port 137:udp
138:udp
139:tcp
■/etc/samba/smb.confの設定
Sambaの設定ファイルは標準ではイジるところは、少ない。基本的に[global],[homes],[public]の3つだけ。
# vi /etc/samba/smb.conf |
Global Settingsでは以下のような設定にする。
[global] |
"workgroup = EDU "は、これは接続するPCのワークグループ設定がどうなっているのかを確認して、PCの環境に合わせる。PCのワークグループ名の設定が『WORKGROUP』になっていれば"workgroup = WORKGROUP "とする。
"hosts allow"は、アクセスを許可するネットワークの範囲を指定する。上記の例では172.18.140.*/24のネットワークに接続されている端末からのアクセスのみ許可するようになっている。それ以外のネットワークからのアクセスはすべてシャットアウトするようになっている。
Share Definitionsではそれぞれ[homes]と[public]を以下のようにしておく。
[homes] |
『comment』はどのように書いても設定には影響はない。
このセクションは各ユーザーのホームディレクトリの設定になる。各ユーザーのホームディレクトリをファイルサーバーで利用する際には必須の設定となる。
UNIXの種類によっては、"writable = yes"ではなく"read only = no"と記述されている。
[public] |
このセクションはsambaファイルサーバーにアクセスできるヒトならば誰もが利用できる、共有のサーバースペースとなる。ユーザー間で共有化しておきたい情報などをおいておくなどの用途に使われる。 『comment = Public Stuff』と2つある。どちらか一方、好きな方を設定して使えばよい。使わない方はコメントアウトしておこう。
Sambaサーバーの基本的な機能だけならば変更を掛けるのはコレだけで十分。
基本機能だけならばSambaサーバーで設定ファイルをイジるところは少ない。
Sambaサーバーにアクセスできるように簡易ファイアウォールの設定を変更する。
# vi /etc/sysconfig/iptables |
Sambaサーバーで使用するポートは137(UDP)、138(UDP)、139(TCP)の3つ。
前回、Apacheの設定時にHTTPのポート80番を開けた設定があるので、この行を3行コピーしてそれぞれ書き換える。
-A RH-Firewall-1-INPUT -m state --state NEW -m udp -p udp --dport 137 -j ACCEPT -A RH-Firewall-1-INPUT -m state --state NEW -m udp -p udp --dport 138 -j ACCEPT -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 139 -j ACCEPT |
■共有フォルダの設定とパーミッションの設定
Sambaサーバーで共有するファイルを置いておくフォルダを作成しておく。
このときフォルダのパーミッションに注意をする。FedraCoreになってからデフォルトで作成されたファイルやフォルダのパーミッションは755になっている。このパーミッションではAdminUserや所有者以外にはフォルダにファイル保存させることは出来ないで読み込みしか出来ない。よって、共有フォルダのパーミッションは777に予め設定しておく必要がある。
本実習では、共有フォルダを/home/publicとしておく。
# mkdir /home/public |
■Sambaユーザーの設定
Sambaユーザー専用の作成コマンドが用意されている。パスワードファイルが/etc/samba/paswdに作成されることから、Linuxのログインユーザーとは独立してユーザー管理されていることが伺える。
運用方針に従って、適宜実施していけばよいのだが、今回はユーザーアカウントとパスワードはLinuxのモノに一致させておく。
#smbpasswd -a admin <- 任意のユーザー名を入力 New SMB passwd : <- パスワードを入力 Retype SMB passwd : <- もう一度パスワードを入力 |
■デーモンの起動
# service smb start |
このように、コマンドをタイプすることによって、smbdとnmbdの2つのデーモンが起動する。
ファイルサーバーのサービスもサーバー機が稼動し続ける限り提供されるべくモノなので、サーバー起動時にsambaが自動起動するように設定しておく。
# chkconfig smbd on |
5.Windowsクライアントの設定
■ワークグループの設定Sambaサーバーの設定ファイルsmb.confの[globa]の設定項目にて指定されているワークグループ名を設定した端末がサーバーにアクセスできる。Sambaサーバーにアクセスさせたい端末は必ず、smb.confで指定したワークグループ名になっていることが好ましい。
■マイネットワークとワークグループ
WindowsクライアントからSambaサーバーへアクセスしてみる。
[マイネットワーク] -> (ワークグループのコンピュータ名を表示)
ユーザー認証を求められるので、上記で設定したSambaユーザ/パスワードを入力する。