manekineko倉金家ホームページ

趣味の部屋/サーバー構築メモ

17.ファイルサーバー Samba

2007年8月22日
ファイルサーバーSambaを導入します。
家にはWindowsマシンが3台あり、主にデータのバックアップとビデオなどを入れておくのに使っています。
ついでにインターネットでどこからでもデータにアクセスできるようにsmbwebclientというソフトも導入します。

sambaのインストールと設定
インストール
samba, samba-client, samba-common, samba-libsmbclientが入っていなければインストールします。
現在のバージョンは3.0.23dです。

設定
/etc/samba/lmhosts にサーバー名を書き加えます。
127.0.0.1 localhost
127.0.0.1 jiji

次に設定ファイル /etc/samba/smb.conf を直接編集します。
SWATというWeb編集ツールもありますがどうせ一度きりしかやらないので。
[global]
   workgroup = MyNet(Windowsワークグループ名)
     ...これはWIndowsパソコンに設定したワークグループとしっかり合わせておきます。
   server string = MyDataServer(エクスプローラに表示されるデータサーバー名)
   netbios name = jiji(Windowsネットワーク上のホスト名)
   hosts allow = 192.168.  127.(接続を許可するネットワークアドレス)
   security = user
   encrypt passwords = yes

以上で接続とセキュリティーの基本設定は完了。
続いてデータディレクトリの設定。
ユーザホームディレクトリ[homes]のところはすべて;でコメント化し使いません。
家族といえどもわけのわかっていないのにはアクセスはさせません。
その他[sambadoc]などもコメント化し、共通のデータディレクトリのみアクセスできるようにしておきます。

[printers]も使わないことにしました。
Windowsマシンに直接つないでプリントした方がはるかに早くてきれいでした。

あとはデータディレクトリの設定
[Data]
  comment = Kuraganeke Data
  path = /MyHomeData/ (データディレクトリの絶対パス)
  read only = no
  guest ok = no
  brouseable = yes
  write list = @kuragane
  read list = @kuragane
これでDataディレクトリのみkuraganeグループが読み書き可能となります。

#testparm で念のため設定内容を確認」しておきます。


起動
ためしに起動してみます。
#service smb start
SMBサービスを起動中:     [ OK ]
NMBサービスを起動中:     [ OK ]
無事起動したようです。でもまだユーザ登録をしていないのでだれもログインはできません。
ログファイル /var/log/samba を見てみます。
smpd.logにはパスワードファイルがないから作ったとかなんたらかんたら書いてありますが致命的エラーはないようです。
/etc/samba/を見ますとsmbpasswdなるファイルが作られていますが内容は空です。
nmpd.logには起動記録以外特に変なメッセージはありません。
再起動してみます。
#service smb restart
...
今度はログには起動記録のみが記されていて問題なさそうです。


ユーザ登録
新しくユーザkiyoshiを登録
#smbpasswd -a kiyoshi
New SMB password:(パスワードを入れる)
Retype new SMB password:(再度パスワードを入れる)
Added user kiyoshi.
でOK。

アクセスしてみる
Windowsマシンから
マイ ネットワーク -> ネットワーク全体 -> Microsoft Windows Network -> (ワークグループ名) と開くとServer String に設定したデータサーバー名が出てきます。
これをダブルクリックで開いてユーザ名、パスワードを入力。
無事にデータにアクセスできました。

サーバーへのショートカットをデスクトップにおいておきます。


以上でsamba本体の設定は完了です。
引き続きSmbWebClientというソフトを導入し、LANの外部からでもsambaサーバーにアクセスできるようにします。


smbwebclientのインストールと設定
ダウンロードとインストール
http://smbwebclient.sourceforge.net/ より smbwebclient-2.9.php.gz をダウンロードしました。
展開してできた smbwebclient-2.9.php を見てみます。
頭のところに標準的なインストールの仕方が書いてありますので、これを参考に自分のサイトに合わせてインストールします。

/usr/share/smbwebclient/と言うフォルダをつくり、smbwebclient-2.9.phpをsmbwebclient.phpと名前を変えていれます。

/etc/samba/にsmbwebclient.confというファイルをつくり、以下を記述。
<?php
class smbwebclient_config extends smbwebclient {
var $cfgSambaRoot = 'MyNet(Windowsワークグループ名)/jiji(ホスト名)';
var $cfgDefaultLanguage = 'ja';
// all your settings ...
}
?>

これを使いたいサイトのhttp表示ディレクトリにsambaというフォルダをつくり、ここにindex.phpをつくり、以下を記述します。
<?php
$SMBWEBCLIENT_CLASS = 'smbwebclient_config';
include '/usr/share/smbwebclient/smbwebclient.php';
include '/etc/samba/smbwebclient.conf';
$swc = new smbwebclient_config;
$swc->Run();
?>
smbwebclient.phpとsmbwebclient.confをわざわざ別のところに置くのはhttpサーバーの表示可能ディレクトリ外に置くということだな。きっと。
必要に応じて.htaccessを置きます。


接続テストと調整
さっそくつないでみます。
http://kuragane.jp(sambaを置いたサイト)/samba/
sambaに登録してあるユーザ名とパスワードを入れます。
...ファイルやディレクトリが表示されましたが日本語が見事に文字化けしています。
さっそく調整。

/usr/share/smbwebclient/smbwebclient.phpを見てみます。
var $cfgDefaultCharset = 'ISO-8859-1'; となっています。これが原因だな。
/etc/samba/smbwebclient.confに
var $cfgDefaultCharset = 'EUC-JP';
を追加します。これで文字化けはOK。

あとは好みで少々変更。
やたらと言語設定がいっぱいあるので、smbwebclient.phpの中の
var $strings = array (
....
);
の中の'ja'(日本語)と'en'(英語)以外の定義を/* */でコメントアウトしてしまいます。これで言語メニューにはJAとENしか出なくなります。


完了!