山崎はるかのメモ

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)

ftp://ftp.samba.org/pub/samba/samba-latest.tar.gz

本体も 展開後も けっこうデカいんで、自分のホームディレクトリに落として、そこで展開したほうがいい。

% 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/tcp

netbios に関しては、デフォルトで入っていることが大半だが、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 swat

netbios の二つは、デフォルトでは、#でコメントアウトされていることが多い。

さあ、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 = ワークグループ名(自分のマシンのログオン時に一番下に入力する部分)
netbios name =
このマシンのネットワーク環境の名前(普通はアルファベット5文字以内)
encrypt passwords = Yes

[homes]
comment = Home Directories
read only = No
browseable = No

これで # 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

■メモエリアに戻る