Upload page content

You can upload content for the page named below. If you change the page name, you can also upload content for another page. If the page name is empty, we derive the page name from the file name.

File to load page content from
Page name
Comment

Locked History Actions

samba

samba

長年sambaを使っているが、その設定方法はいまだに謎である。 sambaがこれだけわかりずらい原因は、おそらくMSのおかしなネットワークプロトコルにあると思われる。 ここでは、最も単純な設定方法を追求してみる。

前提条件

  • サーバはCentOS6
  • クライアントはWindows7
  • サーバはLAN内にあり、外部には一切公開しない。
  • アクセスコントロールはしない。LAN内の全員が全共有にアクセス可能。
  • ドメインは使わない。ワークグループのみ。
  • LAN内の共有サーバをマスタブラウザとする。
  • LAN内にDNSサーバは無い。

準備

以下をやっておかないと、sambaの設定以外の部分で苦しむことになる。

SELinuxを切る

CentOSのデフォルトのインストールでは、これがON(enforcing)になっており、このデフォルト状態ではSamba側の設定をどうしようと共有にアクセスできない。かといって、SELinux側にどのような設定をすべきかもわからない。外部からの侵入の心配は無いので、SELinuxは切っておく。

※共有フォルダは見えるにもかかわらず、その中のファイルは見えないので、これを知らないとかなりハマる。

ファイアウォールを切る

これもデフォルトでONになっているので、切っておく。

サービスを起動する

  • chkconfig smb on
  • chkconfig nmb on
  • service smb start
  • service nmb start

以前のCentOSではsmb(共有サービス)を起動すると自動的にnmb(netbios名前解決サービス)も起動するようになっていたと記憶しているのだが、少なくともCentOS6では別途起動しないといけないらしい。

smbのみでは、共有サービス自体は有効になるのでIPアドレスでのアクセス、例えばWindows側から「dir \\192.168.0.100\public」などとするとアクセスは可能だが、ホスト名(netbios名)でのアクセス、例えば「dir \\hostname\public」はできない。

ここがsambaの妙なところである。共有サービスの設定も、名前解決サービスの設定も/etc/samba/smb.confにてひとまとめに行われるにもかかわらず、サーバプロセス自体は別なのである。

設定

以下を参考

global設定

  • guest account
    共有にゲストとしてアクセスする際のアカウント。デフォルトはnobody。

共有の設定

  • guest okあるいはpublic
    共有へのアクセスの際にパスワードを不要にする。

  • guest onlyあるいはonly guest
    guest okあるいはpublicが指定されていないと意味が無い。必ずゲストとしてアクセスする。この指定が無いと、例えばfoobarという共有にアクセスする際には、foobarというアカウントがチェックされるようだ。

  • writeable(read onlyの逆)
    yesにしておくと、書き込みが可能になる。

マスタブラウザにする

本サーバをマスタブラウザにするのに必要な設定と(一見必要そうだが)不要な設定。

  • local master
    これはデフォルトでYesであるので、Noの場合にのみ設定する意味がある。Noの場合は決してマスタブラウザにならないが、Yesの場合でもなるとは限らない。

  • preferred master
    Yesにするとnmbの起動時に若干マスタブラウザに選択される機会が増える(?)というもの。マスタブラウザに選択される決定的な要因ではない。

  • os level
    値を大きくすると、マスタブラウザに選択される機会が増加する。65あたりを指定すると必ずマスタブラウザに選定される模様。win9Xでは16、NT系列では32という数字の模様(Win9Xの場合に1というのは間違いとのこと)。

チェック

クライアント(Win7)側でのチェック

net viewコマンド

コマンドプロンプトにて「net view」を投入。 サーバ側の名前解決ができているのであれば、リストにサーバのnetbios名が表示される。

nbtstatコマンド

サーバに対して、「nbtstat -a netbios名」あるいは「nbtstat -A ipアドレス」を投入。 サーバがマスタブラウザであるかを調べることができる。

参考