山崎はるかのメモ
FreeBSDにSambaを仕込む
- Sambaのバージョンで設定に差・資料の少なさがえらいこっちゃ -
●それはね
金食い虫としか言いようがない Windows-NTSV。
SQLをブチ込むだけでも、20万円はかかる。クライアントを増やせば 紙切れを買わされる
お金持ちには いいかもしれないが、それなりの技術を持って この世界にいる者にとっては「その腕ひとつで、すべてがタダ!」というUNIXの世界は まさにエンジニアにつきつけられた挑戦状。GUIなどとは関係なく、非常に おぼえやすい「NTサーバ」に較べて、UNIXは極めてとっつきにくい世界だが、私は 金食い虫「NTSV」に これ以上は つきあえない。
●Windows-NTSVファイル共有から Samba-UNIX共有への移行
NTでネットワークを組んでいながら、いまひとつピンとこなかったのが「WINS」というサービスだ。
マシン名などの名前解決をするDNSみたいなもんで重要らしいが...あたしゃ これを1度も使った事がない。
ネットワーク設定でも「WINSを使用しない」に設定しているが、今まで 問題が発生した事はない。だから、FreeBSDにSambaをブチ込むにしても、WINSは使わない事に決定する。
また、Windowsの「コンピュータネットワーク」のプロパティで「ネットワークの設定」に「ネットワーククライアント」と共に「Microsoftネットワーク共有サービス」を仕込んでおかねばならない。
NTSV環境では ネットワーククライアントさえあれば 共有できちゃったりするのだが、それはNTの世界だけのハナシで、一段上の層(アプリケーション層)を使用する「ネットワーク共有サービス」を入れておいたほうが安全だ。さらに、プロトコルもTCP/IPだけにする。
これまで ネットワークに ゆきかうパケットを、外部に流出(ルーティング)させないように、ローカルプロトコルであるNetBEUIとIPX/SPXをファイル共有プロトコルにしていたが、これも TCP/IPに絞る。これは Samba が、TCP/IPベースで動いているからだが...
そんなことよりも、これまで 私は、ネットワーク上に いろんなプロトコルが行き交いすぎて わけがわかんなくなっていた。
NetBEUIとIPX/SPXをクライアントに仕込むと、ブロードキャストに意味不明のパケットを放出し、なーんもない夜中でも ルータがチカチカするわ、HDDが動くわで 気色が悪い。TCP/IPでファイル共有すると、容易に外部からネットワークにアクセスできることになる。
そこで そのあたりのセキュリティは、フィルタやラッパーで排除するようにする。
なにより TCP/IPで一括して セキュリティ統括できるようになるのは かえって合理的だ。忘れてはならないのが、TCP/IPのプロパティをとって「バインド」を 両コンポーネントにかけておく。
これらの 前準備を怠ると、あとで ドツボにハマるから要注意だ。
●Sambaのインストール
クライアントの準備ができたんで、Sambaをインストールする。
クライアントをガチガチに構築しておけば、問題が発生した場合は サーバの責任として 原因を追求できるから安心だ。まずは Sambaをとってこよう。(執筆時点では Samba2.04)
本体も 展開後も けっこうデカいんで、自分のホームディレクトリに落として、そこで展開したほうがいい。
% tar xvzf samba-latest.tar.gz
んでもって Makefile を作成しコンパイルする。
% cd samba*/source
% ./configure (←SWATを日本語化するときは ./configure --with-i18n-swat )
% makeここからは root になって作業する。
# make install
インストールが完了したら、Sambaが使うロックディレクトリを作ってやる。
# mkdir /usr/local/samba/var/locks
# chmod 755 /usr/local/samba/var/locks
# touch /usr/local/samba/var/locks/STATUS..LCKここで Sambaの動くマシンが ネットワーク上を行き交う共有情報を受け取れるよう、送受信ポートを設定してやる。
# ee /etc/services
netbios-ns 137/udp netbios-ssn 139/tcp swat 901/tcpnetbios に関しては、デフォルトで入っていることが大半だが、swat に関しては 自分で書いてやらねばならない
次に Sambaが 自動起動できるように、inetd を修正する。
# ee /etc/inetd.conf
netbios-ssn stream tcp nowait root /usr/local/samba/bin/smbd smbd
netbios-ns dgram udp wait root /usr/local/samba/bin/nmbd nmbd
swat stream tcp nowait.400 root /usr/local/samba/bin/swat swatnetbios の二つは、デフォルトでは、#でコメントアウトされていることが多い。
さあ、Sambaの起動だ。
# kill -HUP `cat /var/run/inetd.pid`
これで エラーが出なければ おっけーだ。
●Sambaの設定
Sambaもver2.0以降から、swat が標準で使えるようになった...
ブラウザを使って、あたかもルータを設定しているかのように パラメータをいじくれるわけである。
起動は かんたんだ。http://SAMBAマシン:901/
例: http://192.168.0.3:901/
なお これをやると Auth でパスを聞かれるから、IDにroot PW:rootのパスワード を入れる。
ただ 私は これを使う必要がなかった。
次の文を エディタで書けば いいだけだからだ。# ee /usr/local/samba/lib/smb.conf
[global] workgroup =
ワークグループ名(自分のマシンのログオン時に一番下に入力する部分) [homes] |
これで # kill -HUP `cat /var/run/inetd.pid` を送ってやると、Windowsの端末から Sambaマシンが見えるようになる。
●利用者の設定
さあ、ここまでやって お気づきだと思うが、このままだと、ネットワークマシンをダブルクリックしても
\\マシン名\.IPC$
を聞かれてログオンできない。
なぜだ?
Windowsネットワーククライアントで ちゃんと UNIX のユーザー名・パスワードを入力して起動しているにに...じつは Samba 自体が「独立デーモン」なので これにログオンするために、Sambaにログオン用パスワードを登録しないといけないのだ。
# /usr/local/samba/bin/smbpasswd -a ユーザ名
New SMB Password: <パスワードの入力>
Repeat New SMB Password: <パスワードの再入力>なお ここで入力するユーザー名は「すでに UNIXにアカウントがある」ユーザー名を使わねばならない。
また、普通は パスワードを そのアカウントと同じものにする。
ただし、Windows側に そのアカウントが残るため、自分のマシンがハッキングされて抜かれないように、注意が必要だ。
Windows98では パスワード保存に厳密な処理がなされているらしいが、それであっても 注意を怠ってはならない。
(99/06/14・山崎はるか)
参考にするとすごくよいページ
http://www.cityfujisawa.ne.jp/%7Eodagiri/book/samba_inst.htm
http://www.cityfujisawa.ne.jp/%7Eodagiri/book/encrypt-passwd.htm
Network Diamond Apricot - SOHKA.JSC