1. ユーザ管理
バージョン3になって、パスワードバックエンドがtdbsamというのが使われるようになった模様。
- 現存するUnixユーザに対してSambaのパスワードを設定
-
pdbedit -a -u [USER]
- ユーザデータベースのリストアップ
-
pdbedit -L
バージョン3になって、パスワードバックエンドがtdbsamというのが使われるようになった模様。
pdbedit -a -u [USER]
pdbedit -L
# /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の設定は必須。
ホームディレクトリと/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 も同じこと。
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 にすると、ディレクトリ階層を維持したままゴミ箱に送られる。
サーバ側がEUC-JPを使用していて、クライアント側がShiftJISの場合の例。
バージョン3からiconvを使うようで。iconvにパッチが当たっているようならeucJP-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
# /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モジュールの利用を検討してみてもいいかもしれない。
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
Samba3+OpenLDAPによるNTドメイン環境構築手順に設定方法をまとめています。