初稿 : 2001.03.10
第2稿 : 2001.05.05
SAMBAのインストールと設定
SAMBAは最新日本語版がきれいに国際化され、swatというWebフロントエンドもヘルプまで日本語化されているため使い勝手が良い。
だもんでこれもソースから作る事にする。swatも日本語ヘルプも要らん、俺はman片手に手で設定しなければ気が済まん!という方はpackagesにあるのでそれもいいでしょう。本来オレもこの口なんだけど。(笑)
http://www.samba.gr.jp/日本Sambaユーザ会から日本語最新版のソース(2001/02/22現在2.0.7-ja-2.2)をgetして/usr/src/以下に展開。
$ tar -xvzf samba-2.0.7-ja-2.2.tar.gz -C /usr/src/ $ rm samba-2.0.7-ja-2.2.tar.gz $ cd /usr/src/samba-2.0.7-ja-2.2/source/ $ ./configure --with-netatalk --with-i18n-swat $ make $ su # make install # exit $ make clean
以下のエントリを追加。
$ su # vi /etc/services (最下行に) swat 901/tcp
以下のエントリを追加。
# vi /etc/inetd.conf (最下行に) swat stream tcp nowait.400 root /usr/local/samba/bin/swat swatt
inetd をリスタート
# /etc/rc.d/inetd restart
Sambaの設定ファイルを編集。
# vi /usr/local/samba/lib/smb.conf
# Samba config file created using SWAT
# from 192.168.0.14 (192.168.0.14)
# Date: 2001/02/25 01:42:27
# Global parameters
[global]
coding system = EUC
client code page = 932
server string = Samba %v
encrypt passwords = Yes
update encrypted = Yes
map to guest = Bad Password
socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192
os level = 2
dns proxy = No
hide files = /.*/DesktopFolderDB/TheVolumeSettingsFolder/Icon*/Network Trash Folder/resource.frk/
[LC475BSD]
comment = Samba %v on %h@NetBSD
path = /usr/users/share
writeable = Yes
guest only = Yes
guest ok = Yes
ポイントは[global]属性の
hide files = /.*/DesktopFolderDB/TheVolumeSettingsFolder/Icon*/Network Trash Folder/resource.frk/
だ。これにより後述のNetatalkと同一のディレクトリ(この場合/usr/users/share)を共有してもMac独自のアイコンやリソースフォーク、デスクトップファイルなどがWindows側に見えてしまうことを防ぐ。
また、家庭内LAN内での手軽なフォルダ共有が目的なのでパスワード無しのアクセスを全開で許可、クライアントがWindows2000なので暗号化パスワードをアクティブにしている。
共有ディレクトリを作成
# mkdir /usr/users/share # chmod 0777 /usr/users/share
パスワードディレクトリの作成
# mkdir /usr/local/samba/private
最後に、
# /usr/local/samba/bin/testparm
で、smb.confの設定に異常がないか確認。
Webブラウザからswatへの接続確認
http://localhost:901/
swat設定ページが出たらrootでログインして各種設定とサーバのスタート、動作確認を行う。
swatやこれ以上の細かい設定についてはここでは触れない。日本Sambaユーザ会のWeb Site(http://www.samba.gr.jp/)には膨大で詳細な解説があるのでそちらを参考にして欲しい。また、swatには日本語マニュアルが付属、設定の各セクションごとに詳細な解説と設定例が含まれているので、大いに参考になる。
稼働テストと基本設定がすんでしまえば、いじることも稀なので/etc/services、/etc/inetd.confに追加したエントリをコメントアウトしてroot権限を使用するswatは殺しておくのもいいだろう。
さらに以下のスクリプトを用意する。
# vi /usr/local/samba/bin/smbctl
#!/bin/sh
#
# Samba Server Control
#
SMBD=/usr/local/samba/bin/smbd
NMBD=/usr/local/samba/bin/nmbd
killproc()
{
pid=`ps ax | grep $1 | grep -v grep | awk '{print $1}'`
[ "$pid" != "" ] && kill $pid && echo "$1 killed."
}
start_samba()
{
if [ -x "${SMBD}" ]; then
if [ -x "${NMBD}" ] ; then
echo -n 'Starting Samba Services : '
ss=`ps ax | grep $SMBD | grep -v grep | awk '{print $1}'`
if [ "$ss" = "" ]; then
`$SMBD -D`
echo -n 'smbd '
else
echo -n 'smbd is already running... '
fi
ns=`ps ax | grep $NMBD | grep -v grep | awk '{print $1}'`
if [ "$ns" = "" ]; then
`$NMBD -D`
echo 'nmbd'
else
echo 'nmbd is already running...'
fi
fi
fi
}
stop_samba()
{
killproc $SMBD
killproc $NMBD
}
case "$1" in
start) start_samba ;;
stop) stop_samba ;;
restart) stop_samba
start_samba ;;
*) echo "usage: $0 {start|stop|restart}";;
esac
exit
# chmod u+x /usr/local/samba/bin/smbctl
これで/usr/local/samba/bin/smbctl [start | stop | restart]でsmbdとnmbdの起動、停止、再起動がコンソールからも簡単に行えるようになる。
動作の確認が取れたら、自動起動するようにrc.localに登録する。
# vi /etc/rc.local
(省略)
#
# Starting Samba Services
#
if [ -x /usr/local/samba/bin/smbctl ]; then
/usr/local/samba/bin/smbctl start
fi
以上。
Netatalkのインストールと設定
netatalk-1.4b2+asun2.1.3 は、1.4b2 をベースに AppleShareIP 対応が行なわれたバージョン。
幸いこいつはPackagesに最新版があるので、それを使おう。(パッチをかき集めるのが面倒なので‥‥^^;)
$ su # pkg_add netatalk-asun-2.1.3nb4.tgz
設定ファイルのコピー
# cp -r /usr/pkg/share/examples/netatalk /etc/
ネットワークカードの設定
# vi /etc/netatalk/atalkd.conf # Format of lines in this file: ae0 -phase 2
ホームディレクトリと共有ディレクトリの設定
# vi /etc/netatalk/AppleVolumes.default /usr/users/share LC475_BSD
起動用のシェルスクリプトが用意されているので、それを用いてNetatalkを起動。
# /usr/pkg/etc/rc.d/netatalk.sh
このスクリプトは起動しか出来ないので、設定変更など手入れするとき楽なようにシェルスクリプトを組んでおく。Sambaと同様、Apachectlの動作をパクっているので、netatalkctlとしておこうか。
#vi /usr/pkg/etc/rc.d/netatalkctl
#!/bin/sh
killproc()
{
pid=`ps ax | grep $1 | grep -v grep | awk '{print $1}'`
[ "kill$pid" != "kill" ] && kill $pid && echo "$1 killed."
}
start_netatalk()
{
echo -n 'starting appletalk daemons:'
if [ -x /usr/pkg/sbin/atalkd ]; then
/usr/pkg/sbin/atalkd
echo -n ' atalkd'
fi
if [ -x /usr/pkg/bin/nbprgstr ]; then
/usr/pkg/bin/nbprgstr -p 4 `hostname -s |sed 's/¥..*$//'`:Workstation
/usr/pkg/bin/nbprgstr -p 4 `hostname -s |sed 's/¥..*$//'`:netatalk
echo -n ' nbprgstr'
fi
if [ -x /usr/pkg/sbin/papd -a /etc/netatalk/papd.conf ]; then
/usr/pkg/sbin/papd
echo -n ' papd'
fi
if [ -x /usr/pkg/sbin/afpd -a /etc/netatalk/AppleVolumes.system ]; then
/usr/pkg/sbin/afpd
echo -n ' afpd'
fi
echo '.'
}
stop_netatalk()
{
killproc /usr/pkg/sbin/atalkd
killproc /usr/pkg/bin/nbprgstr
killproc /usr/pkg/sbin/papd
killproc /usr/pkg/sbin/afpd
}
case "$1" in
start) start_netatalk ;;
stop) stop_netatalk ;;
restart) stop_netatalk
start_netatalk ;;
*) echo "usage: $0 {start|stop|restart}";;
esac
exit
例によってnetatalkctl [start | stop | restart]でNatatalkの起動、停止、再起動が出来るので、動作の確認が取れたら、自動起動するようにrc.localに登録する。
# vi /etc/rc.local
(省略)
#
# Starting Netatalk Services
#
if [ -x /usr/pkg/etc/rc.d/netatalkctl ]; then
/usr/pkg/etc/rc.d/netatalkctl start
fi
以上
とりあえず
ここまでで自宅共有ファイルサーバ、及びローカルWWWサーバとしての設定は一通り完了した。
ただし、/rec/rc./以下に置くスクリプトはNetBSD-1.5からの正規のシェルスクリプティングではないので、スクリプトについては暫定措置と考えてほしい。スクリプトやドキュメントを読み解く労力を惜しんだ結果なのだが、おかしなことにはならないように組んであるので、LANでの使用であれば問題はないだろう。実際、ウチでも既に二カ月、ノンストップで稼働しているしサービスがおかしくなったことも皆無だ。
このコーナーに記した設定で問題や情報があればmiki777@you-wing.comまでお知らせいただければ、対処するつもりでいます。
以上。