
| Sambaでファイルサーバ構築 |
Sambaを利用すれば、Windows用のファイルサーバを構築することが可能です。
これで、LAN内のWindowsマシンは、Sambaサーバを利用して簡単にファイルの共有を行なうことが
できるようになります。
ここでは、LAN内で手軽にファイル共有ができるように、パスワードなどの認証無しで接続できる
設定を行ないます。
| Sambaの設定 (認証無し) |
先ずSambaがインストールされているか確認し、無ければインストールします。
| # rpm -q samba samba-3.0.10-1.fc2 ←表示されればインストールされている # yum -y install samba ←インストールされていなかった場合 |
次に、サーバのホスト名の設定をしていない場合は、ホスト名の設定をする必要があります。
以下では、ホスト名をlinuxとして編集しています。サーバのIPアドレスは192.168.1.11の例です。
なお、hostsファイルについての説明は、当サイトではこちらで紹介しています。
| # hostname linux # vi /etc/hosts 192.168.1.11 linux chibi.name ←追加 |
Sambaの設定ファイルは、/etc/samba/smb.confになります。以下のように編集を行います。
| # vi /etc/samba/smb.conf [global] dos charset = CP932 ←追加 unix charset = CP932 ←追加 display charset = CP932 ←追加 map to guest = Bad User ←追加、guest接続の許可 ; hosts allow = 192.168.1. 192.168.2. 127. ←28行目 ↓ hosts allow = 192.168.1. 127. ←自分の環境に。LAN内に限定 // 最終行に以下を追加 [public] path = /var/ftp/pub ←共有するディレクトリのパスを指定。自分の環境に read only = No ←書き込みも可能に guest ok = Yes guest only = Yes |
globalセクションの最初で追加した3行は、Sambaサーバに接続した時に、Windowsで作成したファイル名が
文字化けしないようにする為の設定です。また、publicセクションの共有するディレクトリのパスは
自分の環境に置き換えてください。ここでは、FTPサーバ(共有編)で設定した共有ディレクトリを、
Sambaサーバでも使用するようにしてみました。なお、ここで指定したpublicが共有するディレクトリを
格納するディレクトリになります。
以上が終わりましたら、Sambaのサービスを開始します。また自動起動もオンにします。
| # service smb start # chkconfig --level 345 smb on |
また、iptables利用の場合は、Sambaで使用するポートを開放する必要があります。
Sambaで使用するポートは、UDPの137番と138番、TCPの139番と445番になります。
なお、当サイトのファイアウォールスクリプトを使用の場合は、LAN内からのアクセスは全てOKに
してますので、そのままでOKです。
| Sambaの動作を確認 + 接続 |
testparmコマンドで設定した内容の一覧を見ることができます。
# testparm
Load smb config files from /etc/samba/smb.conf
Processing section "[homes]"
Processing section "[printers]"
Processing section "[public]"
Loaded services file OK.
Server role: ROLE_STANDALONE
Press enter to see a dump of your service definitions ←Enterキーを押す
# Global parameters
[global]
dos charset = CP932
unix charset = CP932
display charset = CP932
workgroup = MYGROUP
server string = Samba Server
map to guest = Bad User
log file = /var/log/samba/%m.log
max log size = 50
socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192
printcap name = /etc/printcap
dns proxy = No
idmap uid = 16777216-33554431
idmap gid = 16777216-33554431
hosts allow = 192.168.1., 127.
[homes]
comment = Home Directories
read only = No
browseable = No
[printers]
comment = All Printers
path = /var/spool/samba
printable = Yes
browseable = No
[public]
path = /var/ftp/pub
read only = No
guest only = Yes
guest ok = Yes |
今回は、globalセクションとpublicセクションしか編集していないので、この2つの部分を見て、
ちゃんと設定した通りになっているか確認します。
次にちゃんとSambaサーバに接続できる状態になっているのか確認します。
これは、LinuxサーバとWindowsクライアントの両方で行なってみます。
Linuxサーバ側からは、nmblookupコマンドを使用します。
[root@linux ~]# nmblookup -A localhost
Looking up status of 127.0.0.1
LINUX <00> - B <ACTIVE>
LINUX <03> - B <ACTIVE>
LINUX <20> - B <ACTIVE>
..__MSBROWSE__. <01> - <GROUP> B <ACTIVE>
MYGROUP <00> - <GROUP> B <ACTIVE>
MYGROUP <1e> - <GROUP> B <ACTIVE>
MAC Address = 00-00-00-00-00-00
|
上記のように表示されれば、OKです。LINUXの部分はホスト名になります。
続いて、Windowsクライアント側からは、nbtstatコマンドを使用します。
コマンドプロンプトの開き方は、Windows XPであれば、スタート → ファイル名を指定して実行
→ cmdと入力してEnter で開くことが可能です。
C:\>nbtstat -A 192.168.1.11 ←サーバのIPアドレスを指定
ローカル エリア接続:
Node IpAddress: [192.168.1.100] Scope Id: []
NetBIOS Remote Machine Name Table
Name Type Status
---------------------------------------------
LINUX <00> UNIQUE Registered
LINUX <03> UNIQUE Registered
LINUX <20> UNIQUE Registered
..__MSBROWSE__.<01> GROUP Registered
MYGROUP <00> GROUP Registered
MYGROUP <1E> GROUP Registered
MAC Address = 00-00-00-00-00-00
|
上記のように表示されればOKです。上記のように表示されない場合で考えられる原因は、
サーバ側でポートの開放ができていないか、またWindows側でNetBIOSを無効にしてしまっている
可能性が考えられます。NetBIOSの確認は以下のようにして行なうことが可能です。
スタート → コントロールパネル → ネットワーク接続 → ローカルエリア接続を右クリックで
プロパティを選択 → インターネットプロトコルをダブルクリック → 詳細設定 → WINSタブ →
「NetBIOS over TCP/IPを有効にする」にチェックが付いているか確認する。チェックが付いていない
場合は、こちらにチェックを付けておきます。
以上の確認作業で問題が無いようであれば、接続できる状態になっているので、Windowsクライアントから
Sambaサーバに接続してみます。
ファイル名を指定して実行 → \\linux と入力してEnterキー。ここで指定しているlinuxというのは、
一番最初に設定したサーバのホスト名になります。

これで、ウィンドウが開けば接続完了です。パスワード認証などはありません。
もし、パスが見つからないなどのエラーが出た場合には、先ほどのNetBIOSの確認で使用した
ネットワーク接続の中のローカルエリア接続のプロパティで、Microsoft ネットワーク用クライアントに
チェックが付いているか確認してみてください。チャックが付いてなければ、チェックを付けます。
最後に、サーバ側で接続状況を確認するには、smbstatusコマンドを使用します。
| # smbstatus |
これで、現在どのホストから接続されているのか確認をすることができます。
最終更新 : 06/04/2005