Sambaの導入

Sambaの設定

smb.confの概要

Sambaのインストールが済んだら、Sambaの設定ファイル(/etc/smb.conf)を編集します。smb.confファイルはSambaシステム全体の構成ファイルで、Samba実行時の設定情報が含まれています。基本的には、ほぼデフォルト設定のまま使えます。


設定ファイルのルール

ファイルはセクションとパラメータで構成されます。1つのセクションは大かっこ ( [ ] )
でくくったセクション名で始まり、次のセクションが始まるまでが範囲となります。セクション内には '名前 =
値'という形式のパラメータを記述します。

記述ルール
  • コメント、セクション名、パラメータは別の行で指定する。
  • セクション名とパラメータ名は、大文字、小文字を区別しない。
  • 空白文字は無視される。パラメータ値の途中にある空白文字はそのまま受け付けられる。
  • セミコロンで始まる行は無視される。
  • \ で終わる行は、次の行へと続くことを指示する。
  • イコール記号 '=' の後にくるパラメータの値には、文字列、または真偽値を意味する

    真偽値は yes/no、0/1、true/false のいずれかを記述する。

セクションの説明

ここでのセクションとは、共有フォルダや、共有プリンタなどの共有リソースを設定する範囲です。

以下のセクションは、fooという名称の共有フォルダを定義しています。 ユーザは /home/bar に対して書き込み可能です。

[foo]
path = /home/bar
read only = read only = no

たとえば、下記のようにセクション名と、設定をしている1つの範囲が1セクションとなります。

[printers]
path = /usr/spool/public
writeable = no
printable = yes 

大かっこ ( [ ] ) で囲まれたセクションに、([global] セクションを除き)共有リソースの設定を記述します。セクション名は共有リソース名となり、セクション内のパラメータは、共有の
設定に利用されます。 


特殊セクションの説明

[global]
セクション

このセクション中のパラメータは、サーバ全体、またはセクションで項目が定義していないときの既定値として適用されます。そのため、一般のセクションとは違い、globalという共有リソースが作成されたりはしません。

globalセクションの例
[global]
# Windowsネットワーク設定しているワークグループ名
workgroup = WORKGROUP
# ホスト一覧などの表示する際の名称
server string = Samba Server %v
# アクセス制限(許可する範囲)
hosts allow = 192.168.1. 127.
# プリンタ一覧を表示させる必要がある際は下記設定が必要
printcap name = /etc/printcap
load printers = yes
# 暗号化パスワードを使用するか設定
encrypt passwords = yes
# クライアントから受け取った文字列をどの文字コードに変換するかを指定
coding system = euc
# クライアントが利用しているDOSコードページ
client code page = 932

[homes] セクション

'homes'と呼ばれるセクションが設定ファイル中にあると、クライアントをそのホームディレクトリに接続します。

共有名は 'homes' から、登録されているユーザ名に変更されます。設定でパスが与えられていなければ、パスはユーザのホーム・ディレクトリに設定され
ます。

もしも [homes] セクションで path= 行を使うのであれば、 %S マクロを使うのが便利です。

path=/data/pchome/%S

これは多数のクライアントにホーム・ディレクトリを提供する上で、最小の手間で簡単に早く実現する方法です。

自動で作成されるホームディレクトリの browseable フラグは、[global] の browseable
フラグから継承され、[homes] の browseable フラグからは継承されません。
従って、[homes] セクション中で browseable=no とすると、 [homes]
セクションは隠れますが、ホームディレクトリは可視になります。

[printers]
セクション

このセクションは、プリンタ用です。

[printers] セクションが記述されていれば、ユーザは printcap
ファイルに記述されたプリンタに接続可能となります。共有名が存在するプリンタ名に設定されます。サービスにゲストのアクセス許可がなく、クライアントからユーザ名が与えられていなければ、ユーザ名はプリンタの名前に設定され
ます。

[printers] サービスは、プリント可能 (printable = yes) にする必要があります。

一般的な
[printers] エントリは次のようになります。

[printers]
path = /usr/spool/public
writeable = no
guest ok = yes
printable = yes 

変数

設定ファイル中に、下記の変数を記述することができます。たとえば、オプション "path = /tmp/%u"
は、ユーザがユーザ名「john」で接続したなら "path = /tmp/john" として解釈されます。

変数名 説明
%S 現在のサービス名。
%P 現在のサービスのルート・ディレクトリ。
%u 現在のサービスのユーザ名。
%g %u の本来 (primary) のグループ名。
%U セッションのユーザ名。
%G %U の本来 (primary) のグループ名。
%H %u で与えられたユーザのホームディレクトリ。
%v Sambaのバージョン。
%h Sambaが動作しているホストの名前。
%m クライアント・マシンのNetBIOS名。
%L サーバのNetBIOS名。
%M クライアント・マシンのインターネット名。
%N NISのホームディレクトリ・サーバ名。Sambaを
--with-automount オプションなしでコンパイルしてあると、この値は %L と同じになる。
%p サーバのホームディレクトリのパス。
%R プロトコル・レベル。
CORE、COREPLUS、LANMAN1、LANMAN2、または NT1 のうち、いずれかの値を取る。
%d 現在のサーバ・プロセスのプロセス ID。
%a リモート・マシンのアーキテクチャ。 100%
確実ではなく、いくつかだけが認識される。現状では、Samba、WfWg、WinNT、Win95
のいずれかに認識される。それらでなければ「UNKNOWN」と識別される。
%I クライアント・マシンの IP アドレス。
%T 現在の日付と時刻。 

設定例

[global]セクションの設定

workgroup

Windows側と同じワークグループ名、もしくはドメイン名を記入します。

workgroup = GROUP_NAME

server string

ここで設定した値は、ブラウズリストでコンピュータ名の隣や、プリンタマネージャにおけるプリンタのコメント欄などに表示されます。

server string = Samba Server

hosts allow

このオプションはセキュリティ上重要です。この設定によって、ローカルネットワークにおけるマシンからの接続を制限
します。ホストの指定は、IPアドレスでもホスト名でも行うことができます。localhostのアドレスである 127.0.0.1 からのアクセスは、 hosts
deny オプションで明示的に禁止しない限り、常にアクセスが許可されます。

hosts allow = 192.168.0. myhost.mynet.edu.au

上記のような指定以外に、いくつかの指定方法がサポートされています。

Ex1: 150.203.*.* 内の全てのIPアドレスを許可、ただし、150.203.6.66は例外
hosts allow = 150.203. EXCEPT 150.203.6.66
Ex2: 指定した network/netmask の範囲内のホストからのアクセスを許可する
hosts allow = 150.203.15.0/255.255.255.0

guest account

ゲストアカウントが必要な場合に設定します。nobody以外を使用する場合は、/etc/passwd
にこのユーザを登録しておく必要があります。

guest account = nobody

log file

接続しているマシンごとに独立したログを残すことを指定します。

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

max log size

ログファイルのサイズに上限をもうけています。

max log size = 50

ファイル名の短縮(NAME MANGLING)の設定

古いDOSなどは、ファイル名が8文字、拡張子が3文字までに制限(8.3形式)されていました。ウインドウズは互換のために、8.3形式の短いファイル名と、255バイトまでの長いファイル名をファイルシステム
に保持しています。ところが、UNIXのファイルシステムは長いファイル名しか保持しないため、Sambaは8.3形式の短いファイル名を、クライアントのアクセス時に自動生成して返します。

ファイル名の8.3形式の問題以外にも、ファイル名の大文字・小文字の問題があります。ウインドウズはファイル名の大文字・小文字を区別しないので、たとえば同一ディレクトリにABCというファイルとabcというファイルを作成することはできません。ところが、UNIX系のOSは正確な大文字
・小文字を区別するため、Sambaサーバで問題が起きないように設定する必要があります。

以下のオプションは、すべて共有毎に設定できますが、特別な理由がなければglobalセクションで設定します。

mangled names

このパラメータは、Sambaサーバ上のDOS非互換のファイル名を、DOS互換の名前に置き換えてアクセス可能にするか、無視するかどうかを制御します。ウインドウズで制作したファイルで大文字・小文字の区別をしたり、日本語を正しく表示させるためには、globalセクションに以下のエントリを追加します。

mangled names = yes

mangle case

このパラメータは、ウインドウズの長いファイル名に対応する短縮名を作ります。よほど古いウインドウズでなければ、mangle caseの値はnoです。

mangle case = no

short preserve case

8.3形式のファイル名を、そのまま使用する(yes)か、デフォルトの設定に従う(no)かを設定します。

short preserve case = yes

case sensitive

ファイル名の大文字と小文字を異なる文字として認識するかを設定します。

case sensitive = no

default case

新規ファイルを作成する際の、デフォルトファイル名を大文字(upper)にするか、小文字(lower)にするかを設定します。デフォルトは lower です。

default case = lower

日本語の問題

Sambaは、日本語ファイル名に対応しています。たとえば、UNIX側でEUCを使うシステムの場合、Sambaで日本語を使用するには以下のように設定します。

client code page

クライアントが利用しているDOSコードページを指定します。

client code page = 932

クライアントのコードページを調べるには、クライアントPCからコマンドプロンプトを開き、chcpコマンドを入力してください。ご利用のコードページが表示されます。

WindowsXPのコマンドプロンプト例
C:\***>chcp
現在のコード ページ: 932

coding system

 このパラメータは、client code page が 932(日本語
Shift-JIS)の時のみ有効です。クライアントから受け取った文字列をどの文字コードに変換するかを指定します。SambaサーバがLinux形であればだいたいeuc、OS
Xはutf8です。

coding system = euc

※漢字コードの指定は、必ずUNIX OSの設定に合わせます。OSの文字コード設定がEUCであれば、coding
systemもEUCにします。日本語に対応していないOSを使用するときは、coding system=hexかcapに設定すると良いでしょう(capにすると、マッキントッシュとのファイル共有が可能になります)

socket options

ほとんどの場合、このオプションを設定することで、より良い性能を得ることができるでしょう。

socket options = TCP_NODELAY 

ユーザ認証用の設定

WindowsNTは平文パスワード(plain text password)とDES暗号化パスワード(encrypt
password)の両方で認証することができますが、Sambaはどちらか一方でしか認証できません。よほど古いウインドウズでなければ、
暗号化パスワードが使われますので、Sambaサーバが解読できるように、DESを利用しているクライアントの設定を変更するか、SambaサーバをDES化する必要があります。ここでは、SambaをDES化するための設定を紹介します。

encrypt passwords

暗号化パスワードを有効化します。

encrypt passwords = yes

smb passwd file

パスワードファイルの場所を指定します。

smb passwd file = /etc/smbpasswd

password level

このパラメータの値を大きくするほど、 大文字と小文字の混在したパスワードが大文字あるいは小文字のみのパスワードと一致するようになります。

password level = 0

username level

大文字・小文字が混在したUNIXユーザ名の扱いを設定します。

username level = 0

Windowsネットワークログインのサポート

security

PC上でSambaサーバと同じユーザ名を使う場合は、パラメータ値をuserにします。

security = user

local master

Sambaをネットワークにおけるマスタブラウザにするかどうかを設定します。

local master = yes

domain master

Samba にドメインマスタブラウザとなるように指示します。これによって、Samba
はサブネット間のブラウズリストの照合を行なうようになります。Windows NT
ドメインコントローラが既に存在する場合は、このオプションを使用しないでください。

# domain master = yes

domain logons

クライアントに対するドメインログオンサーバにするかどうかを設定します。

domain logons = yes

wins support

nmbdコンポーネントの、WINSサーバ機能を有効化するかどうかを設定します。

wins support = yes

関連記事