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