/etc/samba/smb.conf 日本語訳

/etc/samba/smb.conf に記載されている英文コメントの日本語訳。

Debian GNU/Linux 向け Samba 環境設定ファイルの見本。

本ファイルは Samba の主設定ファイルである。ここに列記するオプションを
理解するには *smb.conf(5)* マニュアルページを読むと良い。 Samba は膨大
な数の設定オプションを持っている為、この例では一部のオプションを例示す
る。

本ファイルでは、調整を必要とする一部のオプションをコメントアウトして例
示している。

* ";" でコメントアウトされているオプションは Samba の既定動作とは異
  なる設定例である。

* "#" でコメントアウトされているオプションは Samba の既定動作と同じ
  設定例だが、重要なオプションである為例示している。

**注釈:**
本ファイルを修正した場合は [testparm](http://qiita.com/JhonnyBravo/items/e57d239a03a3263442ac) を実行し、基本的な構文
エラーが無いか確認すること。


#全体の設定

```bash
[global]
```


##閲覧と識別
Samba サーバが参加する workgroup または NT-domain の名前を設定する。

```bash
workgroup = WORKGROUP
```


##Windows Internet Name Serving Support Section

###WINS Support
Samba の NMBD 構成を指定し、 WINS サーバを有効にする。

```bash
wins support = no
```


###WINS Server
Samba の NMBD 構成を指定し、 WINS クライアントを有効にする。

**注釈:**
Samba は WINS サーバまたは WINS クライアントとして振舞うこ
とができる。ただし同時に有効にすることはできない。

```bash
wins server = w.x.y.z
```


nmbd が DNS を通じて NetBIOS 名を検索しないように設定する。

```bash
dns proxy = no
```


##ネットワーク設定
インターフェイスとネットワークを紐づける特定の組合せ。本設定はイン
ターフェイス名または IP アドレス/ネットマスクを指定することができる。
通常はインターフェイス名の指定が望ましい。

```bash
interfaces = 127.0.0.0/8 eth0
```


名前の付いたインターフェイスとネットワークのみを紐づける。上記を使
用する場合は必ず 'interfaces' オプションを使用すること。 Samba マシ
ンがファイアウォールに保護されていない場合にこの機能を有効にするこ
とを推奨する。ただしこのオプションは動的に操作することができず、
非ブロードキャストインターフェイスを正しく操作することができない。

```bash
bind interfaces only = yes
```


##デバッグと集計
接続してきたマシン毎にログファイルを分割して使用するように Samba へ
指示する。

```bash
log file = /var/log/samba/log.%m
```


個々のログファイルの容量を指定する。(KiB 単位)

```bash
max log size = 1000
```


Samba のログを syslog のみに出力したい場合に下記のパラメータを
'yes' にする。

```bash
syslog only = no
```


Samba が syslog へ記録する情報は最小量であることが望ましい。全ての
ログは /var/log/samba/log.{smbd,nmbd} へ出力するべきだ。ログを一
貫して syslog へ出力したい場合、下記のパラメータを 0 より大きい値に
設定する。

```bash
syslog = 0
```


Samba がクラッシュした場合に実行する動作:
管理者へバックトレースメールを送信する。

```bash
panic action = /usr/share/samba/panic-action %d
```


##認証
サーバの役割。 Samba がどのモードで動作するかを定義する。指定可能な値は;

* "standalone server"
* "member server"
* "classic primary domain controller"
* "classic backup domain controller"
* "active directory domain controller"

ほとんどの場合は "standalone server" または "member server" を選択
するだろう。 "active directory domain controller" として動作させる
場合は最初に "samba-tool domain provision" を実行してデータベースを
初期化し、新しいドメインを作成する必要がある。

```bash
server role = standalone server
```


暗号化されたパスワードを使用している場合、
どのパスワードデータベースタイプを使用しているのか 
Samba へ通知する必要がある。

```bash
passdb backend = tdbsam
obey pam restrictions = yes
```


この真偽値パラメータは passdb の暗号化された SMB パスワードが変更さ
れた場合に Samba が Unix パスワードと SMB パスワードの同期を試行す
るかどうかを指定する。

```bash
unix password sync = yes
```


Debian GNU/Linux システム上で動作する Unix パスワード同期は
下記のパラメータを必ず設定すること。
(Debian Sarge における passwd プログラムの正しい受渡しスクリプトは 
Ian Kahan (kahan@informatik.tu-muenchen.de) によって作成されたものである)

```bash
passwd program = /usr/bin/passwd %u
passwd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n\n *password\supdated\ssuccessfully* .
```


この真偽値は 'passwd program' に列記されたプログラムの代わりに SMB
クライアントによってパスワード変更が要求された場合に 
PAM がパスワード変更に使用されるかどうかを制御する。

```bash
pam password change = yes
```


このオプションは認証に失敗した接続を匿名の接続へ紐づけるかどうかを
制御する。

```bash
map to guest = bad user
```


##ドメイン
以下の設定は下記の場合に限り効力を持つ;

* 'server role = primary classic domain controller'
* 'server role = backup domain controller'
* 'server role = domain logons'

(クライアントから見た場合の)ユーザプロファイルディレクトリの場所を
指定する。以下は Samba サーバ上で共有を構築する為に "[profiles]" を
必要とする。

```bash
logon path = \\%N\profiles\%U
```


他の一般的な選択肢として、ユーザのホームディレクトリにプロファイル
を格納する方法がある。(これは Samba の既定動作である)

```bash
logon path = \\%N\%U\profile
```


以下の設定は 'domain logons' が設定されている場合に限り効力を持つ。
(クライアントから見た場合の)ユーザのホームディレクトリの場所を指定する。

```bash
logon drive = H:
logon home = \\%N\%U
```


以下の設定は 'domain logons' が設定されている場合に限り効力を持つ。
ログオン時に実行するスクリプトを指定する。指定したスクリプトは必ず
"[netlogon]" 共有内に格納すること。

**注釈:**
必ず 'DOS' ファイル形式で格納すること。

```bash
logon script = logon.cmd
```


ドメインコントローラ上で SAMR RPC パイプを介して Unix ユーザを作成
することを許可する。

```bash
add user script = /usr/sbin/adduser --quiet --disabled-password --gecos "" %u
```


ドメインコントローラ上で SAMR RPC パイプを介してマシンアカウントを
作成することを許可する。

```bash
add machine script  = /usr/sbin/useradd -g machines -c "%u machine account" -d /var/lib/samba -s /bin/false %u
```


ドメインコントローラ上で SAMR RPC パイプを介して Unix グループを作
成することを許可する。

```bash
add group script = /usr/sbin/addgroup --force-badname %g
```


##Misc
以下の例ではマシン単位の設定変更を有効にする。 "%m" は接続されてい
る端末の netbios 名に置換される。

```bash
include = /home/samba/etc/smb.conf.%m
```


winbind の既定値(例に示した範囲の値を使用していないことを確認すること)

```bash
idmap uid = 10000-20000
idmap gid = 10000-20000
template shell = /bin/bash
```


usershare オプションは **net usershare** によるフォルダ共有を非
root ユーザへ許可する。

usershare の最大値。 0(既定値) は usershare が無効であることを表す。

```bash
usershare max shares = 100
```


usershare 特権を付与されたユーザへ公開された共有を作成することを許可する。

```bash
usershare allow guests = yes
```


#共有定義

```bash
[homes]
comment = Home Directories
browseable = no
```


既定ではホームディレクトリは読み取り専用で公開されている。
ホームディレクトリへの書き込みを有効にしたい場合は
次のパラメータを 'no' に変更する。

```bash
read only = yes
```


ファイル作成権限はセキュリティ上の理由により 0700 に設定されている。
group=rw の権限でファイルを作成したい場合は次のパラメータを 
0775 に設定する。

```bash
create mask = 0700
```


ディレクトリ作成権限はセキュリティ上の理由により 0700 に設定されている。 
group=rw の権限でディレクトリを作成したい場合は次のパラメータを
0775 に設定する。

```bash
directory mask = 0700
```


既定では "\\server\username" 共有は Samba サーバへ接続してきた端末すべてに
接続を許可する。以下のパラメータは "username" のみが
"\\server\username" へ接続できるようにする。外部の認証スキームを
使用している場合は本パラメータの微調整が必要となる。

```bash
valid users = %S
```


ドメインログオン用の netlogon ディレクトリを作成する場合にコメントを外す。
(Samba がドメインコントローラとして振舞うように設定する必要がある)

```bash
[netlogon]
comment = Network Logon Service
path = /home/samba/netlogon
guest ok = yes
read only = yes
```


ユーザプロファイルを格納するプロファイルディレクトリを作成する場合に
コメントを外す。
(先述の "logon path" オプションを参照)
(Samba がドメインコントローラとして振舞うように設定する必要がある)
以下のパスは初回のログオン時にプロファイルディレクトリが作成される為、
全ユーザが書き込み可能であるべきだ。

```bash
[profiles]
comment = Users profiles
path = /home/samba/profiles
guest ok = no
browseable = no
create mask = 0600
directory mask = 0700

[printers]
comment = All Printers
browseable = no
path = /var/spool/samba
printable = yes
guest ok = no
read only = yes
create mask = 0700
```


Windows クライアントはダウンロード可能なプリンタドライバのソースとして
この共有名を検索する。

```bash
[print$]
comment = Printer Drivers
path = /var/lib/samba/printers
browseable = yes
read only = yes
guest ok = no
```


Windows の印刷ドライバの遠隔管理を許可する場合にコメントを外す。
'lpadmin' を管理ユーザが所属するグループの名前に置換する必要がある。
書込み権限を持つユーザの為に、ドライバーディレクトリへ
適切な Unix パーミッションを設定する必要があることに留意すること。

```bash
write list = root, @lpadmin
```