OpenBSDでSambaをコンパイル

OpenBSDマシンのHDDが余ってるのでファイルサーバにしてみる。
OpenBSDにSambaを自分でコンパイルして入れてみた。

WindowsだけでなくLinuxともファイルが共有できる

事前準備

インストール方法をGoogleで探してみる。
ちょうどOpenBSDにSambaを入れてる人がいたので参考にする。
http://www.ne.jp/asahi/diver/hrk/openbsd/s-samba.html


日本Sambaユーザ会を見てみる。
http://www.samba.gr.jp/
日本語版というのは無く、日本Sambaユーザ会が本家版から問題の出る箇所を修正するパッケージを出してるらしい。
修正パッケージはこれらだが見てもよく分からない。
ftp://ftp.samba.gr.jp/pub/samba-jp/samba-3.0-ja/SOURCE/


とりあえず日本語のパッチを当てたlibiconvと本家版のSambaをインストールすればいいと予想。
以下作業工程。

libiconvのインストール

ここは自分でコンパイルしてみる。
http://www2d.biglobe.ne.jp/~msyk/software/libiconv-patch.htmlからパッチを拾ってくる。
libiconv-1.10用を使う事にする。

$ ftp http://www2d.biglobe.ne.jp/~msyk/software/libiconv/libiconv-1.10-ja-1.patch.gz


libiconv-1.10をダウンロードしてパッチを当てる。

$ ftp ftp://ftp.riken.go.jp/GNU/pub/gnu/libiconv/libiconv-1.10.tar.gz
$ tar -xzvf libiconv-1.10.tar.gz
$ cd libiconv-1.10
$ gzip -dc ../libiconv-1.10-ja-1.patch.gz | patch -p1


一般ユーザでコンパイルしてから、rootになってインストール。

$ ./configure --enable-static \
--enable-extra-encodings
$ make
$ su
# make install

Sambaのインストール

11月15日に出たばかりのSamba 3.0.23dを入れてみる事にする。
Samba 3.0.23dをダウンロードして展開する。

$ ftp ftp://ftp.samba.gr.jp/pub/samba/samba-3.0.23d.tar.gz
$ tar -xzvf samba-3.0.23d.tar.gz


インストールオプションを調べてみる。

$ cd samba-3.0.23d/source
$ ./configure --help | less


ディレクトリのオプションだけ入れてコンパイルとインストール。

$ ./configure --prefix=/usr/local/samba-3.0.23d \
--localstatedir=/var/samba --with-lockdir=/var/samba/locks \
--with-piddir=/var/run --with-logfilebase=/var/log/samba \
--with-configdir=/usr/local/etc/samba
$ make
$ su
# make install


Sambaが使うディレクトリを作っておく。

# mkdir /var/log/samba
# mkdir -p /usr/local/etc/samba


ここでは/usr/sambaを共有ディレクトリとする。

# mkdir /usr/samba
# chown ユーザ名 /usr/samba

設定

設定は/usr/local/etc/samba/smb.confに書く。
Sambaのソースに含まれてる見本とftp://ftp.samba.gr.jp/pub/samba-jp/samba-3.0-ja/smb.confを参考にする。

[global]
workgroup = MYGROUP
dos charset = CP932
unix charset = EUCJP-MS
display charset = EUCJP-MS
server string = Samba Server
hosts allow = 192.168.11. 127.0.0.1/8
load printers = no
map to guest = Bad Userers
log file = /var/log/samba/log.%m
max log size = 50
socket options = TCP_NODELAY
username map = /etc/samba/smbusers

[homes]
comment = Home Directories
browseable = no


[public]
path = /usr/samba
guest ok = yes
writeable = yes
create mask = 644
directory mask = 0755


testparmでsmb.confをチェックする。

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

[global]
        dos charset = CP932
        unix charset = EUCJP-MS
        display charset = EUCJP-MS
        workgroup = MYGROUP
        server string = Samba Server
        username map = /etc/samba/smbusers
        log file = /var/log/samba/log.%m
        max log size = 50
        load printers = No
        hosts allow = 192.168.11., 127.0.0.1/8

[homes]
        comment = Home Directories
        browseable = No

[public]
        path = /usr/samba
        read only = No
        create mask = 0644
        guest ok = Yes


smbpasswdでユーザ用のパスワードを作る。

# /usr/local/samba-3.0.23d/bin/smbpasswd -a ユーザ名

起動

smbdとnmbdの両方に「-D」オプションを付けて起動する。
次回からは自動起動するように/etc/rc.localに以下の内容を追加する。

# Samba
if [ -x /usr/local/samba-3.0.23d/sbin/smbd ]; then
   echo -n ' smbd'; /usr/local/samba-3.0.23d/sbin/smbd -D
fi

if [ -x /usr/local/samba-3.0.23d/sbin/nmbd ]; then
   echo -n ' nmbd'; /usr/local/samba-3.0.23d/sbin/nmbd -D
fi


シャットダウン時にkillするように/etc/rc.shutdownに書いておく。

kill `cat /var/run/smbd.pid`
kill `cat /var/run/nmbd.pid`