Samba

2009/1/29更新

対応バージョン: 3.3.0

Sambaパスワードが変更された際にUNIXパスワードを同期させるにはsmb.confに以下の設定を行う。

unix password sync

UNIXパスワード同期機能を有効化する。

デフォルトはno。

unix password sync = yes

passwd program

UNIXパスワード変更コマンドを指定する。

%uマクロにはユーザ名が入る。

Fedora 10の場合)

passwd program = /usr/bin/passwd %u

passwd chat

passwdコマンドとのやり取りをチャットスクリプトとして記述する。文字列が少しでも間違っているとパスワード変更が失敗するので注意すること。

*(ワイルドカード)を用いるとより汎用的な定義ができる。
.(ピリオド)は無視されるのでチャットスクリプトには記述しなくてよい。
%nマクロにはパスワードが入る。

Fedora 10の場合)

passwd chat = *New*password* %n\n *Retype*new*password* %n\n *passwd:*all*authentication*tokens*updated*successfully*

実際には以下のようなやり取りが発生する。

Changing password for user <アカウント>.
New UNIX password: <パスワード>
Retype new UNIX password: <パスワード>
passwd: all authentication tokens updated successfully.

passwd chat debug

上記やり取りのデバッグを有効にする。

passwd chat debug = yes

debug level

デバッグレベルを100以上にすることでパスワードがlog.smbdに記録される。

debug level = 100

注意点

Sambaパスワードを変更するにはsmbpasswdコマンドを使用するが、rootで実行するとローカルのパスワードファイル(/usr/local/samba/private/smbpasswd)が直接変更されるので上記の機能が有効にならない。

従って同コマンドは一般ユーザで実行し、Sambaサーバとのやり取りが発生する形で使用する。

% /usr/local/samba/bin/smbpasswd -U foo

2012/2/12更新

対応バージョン: 3.6.3

公式サイト

準備

導入に必要なもの

samba-3.6.3.tar.gz

導入OS

Ubuntu 11.10

インストール

配布ファイル展開

% tar zxvf samba-3.6.3.tar.gz
% cd samba-3.6.3/source3

make,インストール

% ./configure
% make
% sudo make install

インストール物 (man,infoは除く)

/usr/local/samba/*/*

共有ライブラリキャッシュ更新

% sudo vi /etc/ld.so.conf.d/local.conf
/usr/local/samba/lib ← 追加

% sudo ldconfig
% ldconfig -p | grep samba

各種設定

/usr/local/samba/lib/smb.confにて設定を行う。

以下、いくつかの設定項目について説明する。

全体設定(global)

Sambaサーバの全体的な設定を行う。

[global]

に続けて設定する。

ワークグループ名

例)

workgroup = WG1
NetBIOS名(コンピュータ名)

例)

netbios name = FS1

全体共有設定

アクセスしてきたユーザ全体に公開する共有の設定を行う。

[<共有名>]

に続けて設定する。

公開ディレクトリ

例)

path = /home/public
書込み可能設定
read only = no

ホームディレクトリ共有設定

アクセスしてきたユーザのホームディレクトリを公開する設定を行う。

[homes]

に続けて設定する。

共有名非表示設定
browseable = no

この設定を行うことにより「homes」という共有名は非表示にしてホームディレクトリ名のみ表示するようにできる。

書込み可能設定
read only = no

その他の設定はドキュメントを参照のこと。

設定ファイル妥当性チェック

設定ファイルの準備が終わったらtestparmコマンドを使って内容の妥当性をチェックする。

% /usr/local/samba/bin/testparm
Load smb config files from /usr/local/samba/lib/smb.conf
Processing section "[share1]"
Processing section "[homes]"
Loaded services file OK.
Server role: ROLE_STANDALONE
Press enter to see a dump of your service definitions

[global]
	workgroup = WG1
	netbios name = FS1

[share1]
	path = /home/public
	read only = No

[homes]
	read only = No
	browseable = No

問題がある場合はその箇所が示されるので設定を見直す。

Sambaアカウント設定

Sambaサーバへのアクセス用アカウントを作成する。

アカウントはすでにシステム内、あるいはディレクトリサーバ等を使用する場合は同サーバ上に存在している必要がある。

ここではSambaサーバ上のローカルアカウントを作成する。

% sudo /usr/local/samba/bin/smbpasswd -a foo
New SMB password: *****
Retype new SMB password: *****

アカウント情報は/usr/local/samba/private/passdb.tdbに保存される。

ファイアウォール設定

ファイアウォールで以下のポートをブロックしている場合はアクセスを許可しておく。

137/udp

netbios-ns(名前解決)

138/udp

netbios-dgm(ファイル/プリンタ共有)

139/tcp

netbios-ssn(セッション管理)

445/tcp

microsoft-ds(Direct Hosting of SMB)

動作確認

デーモンを起動する。

% sudo /usr/local/samba/sbin/smbd
% sudo /usr/local/samba/sbin/nmbd

% ps aux|grep samba
root 13646 ... Ss     0:00 /usr/local/samba/sbin/smbd
root 13647 ... S      0:00 /usr/local/samba/sbin/smbd
root 13676 ... Ss     0:00 /usr/local/samba/sbin/nmbd

ログを参照し、エラーが出ていないことを確認する。

/usr/local/samba/var/log.smbd
/usr/local/samba/var/log.nmbd

Windowsクライアントから接続してみる。

先に登録しておいたアカウントでSambaサーバに接続できればOKである。

うまく接続できない場合は以下の資料などを参考にして調査を行う。

Samba技術情報 - 日本Sambaユーザ会

デーモンを終了する。

単にkillすればよい。

% sudo pkill smbd
% sudo pkill nmbd

initスクリプト設置

% cd ..

% sudo install -o root -g root -m 755 packaging/Example/samba.init /etc/init.d/samba.init

% sudo update-rc.d samba.init defaults 85 15