西村 良弘 奥田 斂 永井 英幹
2000年2月1日
これは、前報で述べた1FD-SAMBAの改良版です。
SAMBAで暗号によるユーザ認証を行えるように、いくつかのファイルを追加しました。
また、SYSLOGDと連携してlogをはくことが出来るようにSAMBAを再コンパイルしました。
しかしSYSLOGについては時間が無くまだ試していません。IDEのディスクも使えるようにwdをカーネルに追加しました。
私のところでは、外付けのRAIDディスク50GBをつけて動いていますが、IDEのディスクのミラーコントローラなどをつけると安くファイルサーバーが構築できることでしょう。
前報と基本的に同じですが、
前報と同様で特に変っていません。ユーザのパスワード認証のため/usr/local/samba/libの下にファイルが増えました。
### /bin
BIN = cat chmod cp df echo hostname kill ln ls \
mkdir mv pwd rm sh sleep stty sync test ps smbd nmbd smbclient
BIN_LK = [ -sh -u
### /sbin
SBIN = clri fsck ifconfig init mount \
newfs ping reboot route umount dset dhcpc \
# gated ripquery ospf_monitor gdc
SBIN_LK = halt mount_mfs
### /usr/bin
USRBIN = passwd login uname more bad144 gzip # netstat
USRBIN_LK = gunzip zcat
### /usr/sbin
USRSBIN = chown inetd traceroute sysctl syslogd
#以後のコマンドは今つかえなくなっています。
1)雛型起動フロッピーの作り方
ファイル名はsamba1.flpです。これから3.5インチブートフロッピーを作ります。
以下、前報と全く同様です。
dosマシンで作るなら
c>ren samba1.flp boot.flp
c>fdimage boot.flp a:
としてブートフロッピーを作ります。
freebsdマシンで作るなら
#dd if=samba1.flp of=/dev/fd0
で出来あがりです。
2)自分の環境に合わせるためファイルを設定する
雛型FDはIntel EEP100B(+)1枚とAHA2940またはNCR53c810またはIDEコントローラー(wdc)を装着したPCでSAMBAのサーバーを実現します。ホスト名はcmttt2になっています。NICの数は自由に増やせますし、NIC自身も自由に変更可能ですが、その場合はkernelの再構築が必要になります。ファイル共有されるディスクはSCSIまたはIDEのものです。
NICの変更さえなければ、それ以外の変更に必要な設定ファイルは全て、/etcの中にあります。1)で作成したフロッピーをFreeBSDマシンに入れて編集したほうが簡単です、(私の環境がそうなだけ)
とにかく、以下のように編集します。
#mount /dev/fd0 /mnt
#vi /mnt/etc/rc
.
.
.
#umount /mnt
の様に編集してください。変更すべきファイル、
rc, smb.conf resolv.conf, syslog.conf, host, fstab
rcの中身は以下のようになっています。
#!/bin/sh
PATH=/sbin:/bin:/usr/bin:/usr/sbin
export PATH
mount_mfs -s 720 -c 1 -m 0 /dev/fd0.1440 /var
mkdir /var/tmp
chmod 1755 /var/tmp
mkdir /var/locks /var/spool /var/run /var/db /var/log /var/spool/lock /var/spool
/uucp
hostname cmttt2.nimc.go.jp<--------1.PCのホスト名
ifconfig fxp0 150.29.144.26 netmask 255.255.254.0 broadcast 255.255.255.255<---2.PCのIP設定
# /sbin/dhcpc fxp0<------3.多分DHCPでも動くのだろうが、まだちゃんと試していない。
# sleep 20<-------4.DHCPを使う場合は必要かも知れない
ifconfig lo0 127.0.0.1
mount -a -t nonfs
echo "Starting inetd"
/usr/sbin/inetd
NICを変更したり、アドレスを変更する場合は2,3を変更する必要がります。(NICが変ったらkernelも再構築しなければなりません)
Fstabの中身は以下のようになっています。
/dev/fd0cはフロッピーディスクですが、これは変更する必要ありません。/dev/sd0s1はSCSIのHDDです。HDDを増設したり、IDEである場合には、それにあわせてこのファイルを変更する必要があります。
# /dev/sd0s1b none sap sw 0 0
/dev/fd0c / ufs rw 1 1
/dev/sd0s1 /mnt ufs rw 2 2
SAMBAの通常の使用法で最も重要な設定ファイル:smb.confです。機能が豊富ですので、専門書籍をご覧ください。
[global]
workgroup = nimc<----1.自分のワークグループ名にしてください
security = user<-----2.ユーザー毎の認証を行います.
encrypt passwords = yes<-----3.パスワードを暗号化する
wins server = 150.29.144.64<-----4.WINSサーバがあればそのアドレス
client code page = 932
coding system = euc
[public]
path = /tmp<---------5.共有させたいディレクトリ
public = yes
writable = yes
browseable = yes
guest only = yes
guest account = root<---------6.passwdファイルの中のroot権限で読み書きする
[homes]<---------7.ユーザー毎のホームディレクトリをpasswdファイルの中の各ユーザに公開します
public = no
writable = yes
browseable = no
hostファイルには自分のエントリーが必要です。DHCPCを使った場合どうなるか分かりませんがまだ成功していません。
150.29.154.90 cmh2
150.29.144.26 cmttt2 cmttt2.nimc.go.jp
resolv.confは設定してもしなくてもかまいませんが、sambaサーバにログインして、そこからドメインネームを引きたい場合に使用します。
domain nimc.go.jp<----変更してください
nameserver 150.29.144.64<−−−変更してください
syslog.confは、ログが必要な人は設定してください。その場合ログを受けるサーバーが別途必要になります。
3)さてブートし、立ち上がったところでルートでログインし、sambaで共有させたいディスクを/mntにmountします。
samba1.flpの中では、例としてユーザーtestuserが登録されています。グループはuser、パスワードはtest1test1、ホームディレクトリは/mnt/testuserです.
このユーザーのホームディレクトリを作成します。
# mkdir /mnt/testuser
# chown testuser.user /mnt/testuser
次にSAMBAを起動します。
#/bin/smbd -D -s /etc/smb.conf
#/bin/nmbd -D -s /etc/smb.conf
4)Windows98などで、このtestuserのアカウントを作って、再ログインしてください。
WIN95/98/NTのネットワークコンピュータからうまく見えたら、成功です。共有名publicと共有名testuserが見えるはずです。
5)SAMBAを自動的に起動したければ/etc/rcに追加するだけです。
2段階に分かれています。UNIXへのユーザー登録とSAMBAへのユーザー登録です.
1)UNIXへのユーザ登録
UNIXマシンに1fd-SAMBAのフロッピーをmountしてviによりユーザーとグループの追加を行います。
# vi /etc/master.passwd
testuser::5002:500::0:0:Mr.test:/mnt/testuser:/bin/sh を追加する。
# vi /etc/passwd
testuser:*:5002:500:Mr.test:/mnt/testuser:/bin/sh を追加する
これは、1fd-SAMBAでブートしてもechoを使っても出来ます。
さらに
# vi /etc/group
user:*:500:
としてグループを追加します。
ここから先は、1FD-SAMBAからブートして行います。
フロッピーの容量がほとんど無いのでかなりトリッキーです。
まず
# cp /kernel /mnt/kernel
# rm /kernel
として作業領域を確保します。
次に、パスワードのデータベースを作りなおします。
#cd /etc
#pwd_mkdb -d. master.passwd
次に、パスワードを設定します
# passwd sample
さらにホームディレクトリを作成します。
# mkdir /mnt/testuser
# chown testuser.user /mnt/testuser
後はディレクトリの環境設定です。
忘れていました。kernelを戻します。
# cp /mnt/kernel /
2)SAMBAへのユーザ登録
rootでログインします
インストールされているsmbpasswdを、利用するユーザ名の引数をつけて起動します。
# /bin/smbpasswd -a testuser
New SMB password:
Retype new SMB password:
Added user testuser.
Password changed for user testuser.
#
以上でユーザー登録が出来ました。
以上は1FD-SAMBAで共有できるHDDが既にあることが前提でしたが、PCに既存のHDDを一台そっくり共有専用としたり、新たにHDDを一台追加して共有するためには、それにUNIXのファイルシステムを作成する必要があります。
この方法はFreeBSDハンドブックにありますが、ここでも紹介しておきます。
SCSIディスクを増設し、そっくりFreeBSDで使う場合以下のようにします。上の例では/mnt以下のドライブを共有させるので次のようにします.
# dd if=/dev/zero of=/dev/rsd0 count=2
# disklabel /dev/rsd0 | disklabel -BrR sd0 /dev/stdin
# newfs /dev/rsd0c
# vi /etc/fstab <--- /dev/sd0c のエントリをつくる
# mount /dev/sd0 /mnt
このように/mnt以下にmountすればSAMBAでそっくり共有させることが出来ます。
# mount /dev/sd0c /mnt
1FD-SAMBAにdisklabelとnewfsを含めておいても良かったのですが、SAMBAサーバーではめったに使うコマンドではないのでFDスペース節約のため特に入れていません。
これらの作業をするときに便利なのが広大の田岡さんの作られたFreeBSDをフロッピーディスク一枚で動かすためのパッケージです。
newfsを実行できるようにbootsd,sdboot等のファイルを追加したものがemerg.flpです。まず、このFDで立ち上げてrootでログインすれば、ここで説明したコマンドが実行でき、HDDの増設等が行えます。
NICの変更は前報と特に変わっていません。以下は添付ファイルの中身でカーネル設定ファイルです。
#
machine "i386"
cpu "I386_CPU"
cpu "I486_CPU"
cpu "I586_CPU"
cpu "I686_CPU"
ident SMBSVR
maxusers 10
options INET #InterNETworking
options FFS #Berkeley Fast Filesystem
options MFS #Memory File System
options PROCFS #Process filesystem
options "COMPAT_43" #Compatible with BSD 4.3 [KEEP THIS!]
options BOUNCE_BUFFERS #include support for DMA bounce buffers
config kernel root on fd0
controller isa0
controller pci0
controller fdc0 at isa? port "IO_FD1" bio irq 6 drq 2 vector fdintr
disk fd0 at fdc0 drive 0
controller wdc0 at isa? port "IO_WD1" bio irq 14 vector wdintr<------HDDコントローラの組み込みです。
disk wd0 at wdc0 drive0
disk wd1 at wdc0 drive1
# A single entry for any of these controllers (ncr, ahb, ahc) is sufficient
# for any number of installed devices.
controller ahc0<------HDDコントローラの組み込みです。
controller scbus0
device sd0
# syscons is the default console driver, resembling an SCO console
device sc0 at isa? port "IO_KBD" tty irq 1 vector scintr
# Mandatory, don't remove
device npx0 at isa? port "IO_NPX" irq 13 vector npxintr
# Order is important here due to intrusive probes, do *not* alphabetize
# this list of network interfaces until the probes have been fixed.
# Right now it appears that the ie0 must be probed before ep0. See
# revision 1.20 of this file.
device fxp0<------NICの組み込みです。
pseudo-device loop
pseudo-device ether
pseudo-device log
pseudo-device pty 16
pseudo-device bpfilter16
pseudo-device gzip # Exec gzipped a.out's
--------------------------------------------
0)rootになります。
1)これをfreebsd2.2.8の/sys/i386/confに適当な名前で(例えばSMBSVR)コピーします。
2)/sys/i386/confで、
#config SMBSVR
とやり
3)#cd ../../compile/SMBSVRとやって
4)#make depend;makeとするとカーネルができあがります。
5)これを
#kzip kernel
とやると
6)kernel.kzができるので、これをフロッピーに書き込んでやるのです。
7)1FDーSAMBAのフロッピーをマウントして、新しいカーネルで置き換えます。
#mount /dev/fd0 /mnt
#rm /mnt/kernel<-----既存のカーネルを消さないと書き込めません。
#cp kernel.kz /mnt/kernel
#umount /mnt
8)以上で新しいカーネルの出来上がりです。
後は、前に述べたように、新しいNICの追加やその名前に合わせて/etcの下の
ファイルを変更するだけです。
以上で、自分のネットワーク環境で動作する1FD-SAMBAが出来あがりました。
このFDができて動かし始めてから2ヶ月ほどたちましたが順調に動いています。デフォルト設定ではドメインマスタブラウザを探しに行くようになっていますので、正しく指定してやるか、自分自身がそれになるようにしてやる必要があります。でないと「ドメインマスタ勿彝枝が見つからない」と言うメッセージがうるさく出てきます。
プリンタサーバをするにはlpdが必要ですが、現状では組み込んでいません。時間が無いのと、需要がどれほどあるのか疑問であるためです。