Samba

Samba3の設定をメモすることにする。
[最終更新日: 2008/10/23]

1. ユーザ管理

| INDEX

バージョン3になって、パスワードバックエンドがtdbsamというのが使われるようになった模様。

現存するUnixユーザに対してSambaのパスワードを設定
pdbedit -a -u [USER]
ユーザデータベースのリストアップ
pdbedit -L

2. 基本設定

| | INDEX
# /etc/samba/smb.conf抜粋
[global]
    workgroup = workgroup
    server string = Samba %v on %h
    socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192
    dns proxy = No
    os level = 1

    hosts deny = ALL
    hosts allow = 192.168.1.0/24 127.0.0.1

    security = user
    encrypt passwords = true

    map to guest = Never ;guestを一切拒否
;   map to guest = Bad User ;guest ok = Yes の場合にアクセス許可

    passdb backend = tdbsam

socket optionsはLinux向き設定。

hosts denyとhosts allowの設定は必須。

3. ディレクティブ関連設定

| | INDEX

ホームディレクトリと/home/shareを利用する場合の設定例。

# /etc/samba/smb.conf抜粋
[homes]
    comment = %U's Home directory
    read only = No
    browseable = No
    valid users = %S

[share]
    comment = Shared Directory
    path = /home/share
    guest ok = no
    read only = no
    force create mode = 644
    force directory mode = 755
    browseable = yes
    valid users = hoge

read only = No も writable = Yes も同じこと。

4. ゴミ箱の設定

| | INDEX

Samba3のゴミ箱設定を使ってみる。

以下の設定では、[share]/.recycleの配下にユーザ名のディレクトリが作られ、そこにユーザごとの削除ファイルが置かれる。

# /etc/samba/smb.conf抜粋
[global]
    vfs objects = recycle
[share]
    recycle:repository = .recycle/%u
    recycle:keeptree = no
    recycle:touch = yes
    recycle:versions = yes
    recycle:maxsize = 0
    recycle:exclude = *.tmp

recycle:keeptree = yes にすると、ディレクトリ階層を維持したままゴミ箱に送られる。

5. 日本語関連設定

| | INDEX

サーバ側がEUC-JPを使用していて、クライアント側がShiftJISの場合の例。

バージョン3からiconvを使うようで。iconvにパッチが当たっているようならeucJP-msとかを設定したほうが一部文字の問題が解決されていいらしい。(個人的には日本語ファイル名って使わないので、あまり関係がないが・・・)

iconvでEUC-JP-MSあたりが使える場合

iconv -l | grep -e EUC-JP-MS(EUCJP-MS?)で確認可能

# /etc/samba/smb.conf
[global]
    unix charset = eucJP-ms
    dos charset = cp932
    display charset = eucJP-ms
そのほかの場合
[global]
    display charset = CP932
    unix charset = EUC-JP
    dos charset = CP932

6. ログ関連の設定

| | INDEX
# /etc/samba/smb.conf抜粋
[global]
    log level = 2
    log file = /var/log/samba/%m.log
    max log size = 50

詳細にログが欲しい場合は、log levelを上げる。ただし、3以上はけっこう猟奇的なことに・・・。

log sizeは単位Kbで、それ以上になると[FILE].log.oldというふうにローテートされる。但し、.oldがすでに存在した場合、古い.oldファイルは消されてしまう。

なお、log levelはデバッグクラスごとに指定可能。

以下は個人的に指定していた例。

   log level = 0 all:2 printdrivers:0 tdb:1 passdb:1 auth:1

全体を0にした後、個々のレベルを指定している。(なぜかallの指定以外のデバッグクラスではファイルアクセス関連のログが取れないのだけど・・・ウチだけ?)

なんにしても、本体のログ機能はけっこう使いにくい・・・ような気がするので、解析用のログなどが欲しい場合はfull_auditモジュールの利用を検討してみてもいいかもしれない。

7. ログ関連の設定 full_audit

| | INDEX

full_auditというモジュールを指定することで、syslogにログを飛ばせる。しかも、本体のログよりも見やすくていい気がする。

設定は個々のディレクティブに書く模様。

# /etc/samba/smb.conf抜粋
[share]
   vfs objects = full_audit
   full_audit:failure = connect disconnect mkdir rmdir open rename unlink
   full_audit:success = connect disconnect mkdir rmdir open rename unlink

full_audit:failure, full_audit:successへのログ対象の指定項目は個別指定でしています。allは猟奇的だった。

ログの出力例は以下のようなものです。

Apr 19 15:03:10 HOSTNAME smbd_audit: user|192.168.1.10|connect|ok|share
Apr 19 15:03:11 HOSTNAME smbd_audit: user|192.168.1.10|open|ok|r|jpg
Apr 19 15:03:14 HOSTNAME smbd_audit: user|192.168.1.10|open|ok|r|jpg/hoge.jpg
Apr 19 15:05:53 HOSTNAME smbd_audit: user|192.168.1.10|unlink|ok|jpg/hoge.jpg

8. NTドメイン関連の設定

| INDEX

Samba3+OpenLDAPによるNTドメイン環境構築手順に設定方法をまとめています。

.