LANDISK HACKING DIARY
Since2005/8/17
TOPへ戻る

   INDEX
 
1. Samba のインストール
2. smb.conf の編集
3. swat のインストール
4. プリントサーバーの構築
5. 参考文献




 
   Samba のインストール

 

 


 さて、いよいよSambaをインストールし、ファイルサーバーとして機能させる。ゴミ箱機能が欲しくてこのLinux Box 化を始めたのだからSambaのバージョンが3.0以上でなければ意味がない。さっそく、debian.dodes.org に置いてあるSambaパッケージのバージョンを確認してみると…2.999+3.0.alpha20-1となっている。これでいいのかな?試しにインストールしてみる。

追記:debian.dodes.org ではなく、iohack に3.0.14a のパッケージが置いてあります。
参照:第11回 「各種パッケージのアップグレード

landisk:~# apt-get -s install samba

Conf samba (2.999+3.0.alpha20-1 debian.dodes.org)

landisk:~# apt-get install samba


The rest of the configuration of Samba deals with questions that affect parameters in /etc/samba/smb.conf, which is the file used to configure the Samba programs (nmbd and smbd.) If you want to be asked just a few questions then select "Yes" and continue with the configuration. If you want to have full control, select No" and configure your smb.conf manually or through SWAT.

Configure smb.conf through debconf?

<Yes>  <No>

// smb.conf を手動で編集するか、debconf で作成するか?
//手動で編集するので「No」を選択。


The Samba services (nmbd and smbd) can run as normal daemons or from inetd. Running as daemons is the recommended approach.
How do you want to run Samba?

daemons
inetd

//デーモンで起動させるか、inetd経由で起動させるか?
//daemons を選択


To be compatible with the defaults in most versions of Windows, Samba must be configured to use encrypted passwords. This requires user passwords to be stored in a file separate from /etc/passwd. This file can be created automatically, but the passwords must be added manually (by you or the user) by running smbpasswd, and you must arrange to keep it up-to-date in the future. If you do not create it, you will have to reconfigure samba (and probably your client machines) to use plaintext passwords. See /usr/share/doc/samba-doc/htmldocs/ENCRYPTION.html from the samba-doc package for more details.
Create samba password database, /etc/samba/passdb.tdb?

<Yes>  <No>

//パスワードデータベース(passdb.tdb)を作成するかどうか
//No を選択



どこに何がインストールされたかを確認してみる。

/etc/samba/smb.conf
/etc/init.d/samba
/etc/cron.daily/samba
/etc/logrotate.d/samba
/usr/sbin/smbd
/usr/sbin/nmbd
/usr/sbin/mksmbpasswd
/usr/bin/testparm




 
     Smb.conf の編集
   
設定ファイルの/etc/samba/smb.conf を編集していく。ここではあえて細かなパラメータの意味までは解説しない。他のもっと詳しいサイトを参考にしてください。LANDISKと同じようなファイルサーバー環境を作成したい場合は、debian 環境から抜けて、LANDISK上の /etc/samba.d/smb.conf を参照する。以下は元のLANDISK環境のパラメータを模倣しつつ、自分用にカスタマイズしたものです。また、あくまで動作確認のために誰でもアクセスできる共有ディレクトリを作成してみる。

[global]
      workgroup = kororo.jp
      server string = Landisk Chroot
      unix charset = UTF-8
      dos charset = CP932
      display charset = UTF-8
      netbios name = LANDISK
      guest account = nobody
      hosts allow = 172.16.50.,127.
      log file = /var/log/samba/log.%m
      max log size = 50
      security = user
      encrypt passwords = yes
      smb passwd file = /etc/samba/smbpasswd
      socket options = TCP_NODELAY SO_RCVBUF=32768 SO_SNDBUF=32768
      os level = 0
unix password sync = Yes
null passwords = Yes

# ゴミ箱機能に関する指定
      vfs objects = recycle
      recycle:repository = .recycle/%u
      recycle:keeptree = yes
      recycle:touch = yes
      recycle:versions = yes
      recycle:maxsize = 0

[public]
      comment = Public Stuff
      path = /share/iPOD
      read only = No
      create mask = 0777
      directory mask = 0777
      guest only = Yes
      guest ok = Yes

smbpasswd ファイルを作成しておく。できあがった /etc/samba/smbpasswd を開いて不要なアカウントを削除しておく。

landisk:~# mksmbpasswd < /etc/passwd > /etc/samba/smbpasswd
landisk:~# vi /etc/samba/smbpasswd

不要なアカウントの削除

landisk:~# chmod 600 /etc/samba/smbpasswd


ここまでできたらとりあえず、smb.conf の構文チェックをかけておく。ふむふむ、OKのようだ。だが、vfs objects を認識してくれなかったので、きっとゴミ箱機能が使えないバージョンなのだろう。残念。

landisk:~# testparm
Load smb config files from /etc/samba/smb.conf
Unknown parameter encountered: "vfs objects"
Ignoring unknown parameter "vfs objects"
Processing section "[homes]"
Processing section "[public]"
Processing section "[printers]"
Loaded services file OK.
Press enter to see a dump of your service definitions


それではsamba を起動してみる。なにやらたくさんのプロセスがでてきた。おかしいなと思い、ログを見てみると、Error = Address already in use というエラーが表示されている。すでに139番ポートが使われているというわけだ。きっとLANDISK上でもSamba が起動しているからなのだろうと思い、新規ターミナルを起動させ、LANDISK上のsamba を停止させてみる。その後、debian 環境に戻り、sambaを再び起動させてみる。これで準備は万端。Windowsマシンに戻って共有ディレクトリにアクセスできるか試してみたところ、public と書かれた共有ディレクトリにアクセスすることができた。以下のログはこの過程を記したものである。

# debian 環境でsambaを起動させる
landisk:~# /etc/init.d/samba start
landisk:~# ps aux | gpre smb
# ps aux | grep smb
root 585 0.0 0.2 4452 156 ? S Aug20 0:00 /usr/sbin/smbd -D -s /var/lock/smb.conf
root 587 0.0 0.8 3412 536 ? S Aug20 0:05 /usr/sbin/nmbd -D -s /var/lock/smb.conf
root 753 0.0 1.0 5028 672 ? S Aug20 0:01 /usr/sbin/smbd -D -s /var/lock/smb.conf
root 804 0.1 3.0 5084 1904 ? S Aug20 3:54 /usr/sbin/smbd -D -s /var/lock/smb.conf
root 964 1.3 2.1 5192 1364 ? S Aug21 32:42 /usr/sbin/smbd -D -s /var/lock/smb.conf
root 2809 0.0 0.7 1472 460 ? S 09:21 0:00 grep smb

# ログをみると既に139ポートが使われているというエラー
landisk:~# tail /var/log/samba/log.smbd
bind failed on port 139 socket_addr = 0.0.0.0.
Error = Address already in use
[2005/08/23 09:19:08, 0] smbd/server.c:main(788)
smbd version 2.999+3.0.alpha20-1 for Debian started.
Copyright Andrew Tridgell and the Samba Team 1992-2002
[2005/08/23 09:19:09, 0] printing/pcap.c:pcap_printer_fn(363)
Unable to open printcap file /etc/printcap for read!
[2005/08/23 09:19:09, 0] lib/util_sock.c:open_socket_in(711)
bind failed on port 139 socket_addr = 0.0.0.0.
Error = Address already in use

# LANDISK環境に戻ってsamba を停止させる
------------------ここから新規ターミナル------------------
# /etc/rc.d/rc3.d/S91samba stop
Stopping nmbd
Done
Stopping smbd
Done
# ps aux | grep smb
root 2998 0.0 0.8 1828 508 pts/1 S 19:22 0:00 grep smb
------------------ここまで新規ターミナル------------------

# Windows上からLANDISKの共有へアクセスを試みるが当然アクセスできなくなっている。
# debian 環境に戻ってsamba を起動させてみる。


landisk:~# /etc/init.d/samba start
Starting Samba daemons: nmbd smbd.
landisk:~# ps aux | egrep 'smb|nmb'
root 1514 0.0 3.1 6140 1976 ? S 03:38 0:00 /usr/sbin/nmbd -D
root 1516 0.0 3.5 7884 2224 ? S 03:38 0:00 /usr/sbin/smbd -D
root 1530 0.0 0.7 1472 460 ? S 03:39 0:00 egrep smb|nmb

# この時点でWindows側からアクセスできるか確認する。




 
     swat のインストール
   
apt-get でインストール。

landisk:~# apt-get install swat

swat を利用するには、/etc/inetd.conf を編集する。ファイルを開いたら、先頭にある「#<off>#」を取り除く。

landisk:~# vi /etc/inetd.conf
#<off># swat stream tcp nowait.400 root /usr/sbin/tcpd /usr/sbin/swat
 ↓
swat stream tcp nowait.400 root /usr/sbin/tcpd /usr/sbin/swat

inetd を再起動する。

landisk:~# /etc/init.d/inetd restart

とやれば出来ると思ったんだが、よく考えたらLANDISK環境でtelnetd と ftpd がinetd 経由で動作している。ということは、LANDISK環境のinetd デーモンを停止させるとtelnet ではログインできなくなる(SSHでログインできるから問題はないが)。ってことは、debian_start スクリプト(第4回目参照:シェルスクリプトのこと)にこう加えるわけか。

landisk:~# vi debian_start
$root/usr/sbin/chroot $root /etc/init.d/inetd restart



 
     プリントサーバーの構築
   
次にプリントサーバーを使えるようにする。ここでの方法はLANDISK上の環境と全く同じ環境を作り出していくが、ここまで徹底しなくても普通に動作するかもしれない。まずは、lpr をインストールする。

landisk:~# apt-get install lpr

landisk:~# mkdir -p /mnt/hda3/spool/samba/lp //プリンタのパス。以下後述。
landisk:~# adduser --shell /bin/false admin
landisk:~# chown admin.admin /mnt/hda3/spool/samba/lp
landisk:~# chmod 777 /mnt/hda3/spool/samba/lp
landisk:~# chmod o+t /mnt/hda3/spool/samba/lp

landisk:~# mkdir -p /mnt/hda3/spool/lpd/lp  //スプールディレクトリ
landisk:~# chown lp.lp /mnt/hda3/spool/lpd/lp
landisk:~# chmod 770 /mnt/hda3/spool/lpd/lp

landisk:~# cd /mnt ; mkdir usb1 usb2

smb.conf でプリンタの設定を追加する。

landisk:~# vi /etc/samba/smb.conf

#======================= Global Settings =====================================
# printer
load printers = yes
printing = lprng
printer admin = admin, nobody
# print command = /usr/bin/lpr -r -P%p %s
lpq command = /usr/bin/lpq -P%p %s
lprm command = /usr/bin/lprm -P%p %j

#============================ Share Definitions ==============================
[printers]
comment = USBPRINTER
path = /mnt/hda3/spool/samba/lp
printable = yes
browseable = yes


/etc/printcap に以下の記述をしておく。

landisk:~# vi /etc/printcap

# /etc/printcap for LANDISK
lp:\
:ml=0:\
:mx=0:\
:sd=/mnt/hda3/spool/lpd/lp:\
:af=/mnt/hda3/spool/lpd/lp.acct:\
:sh:\
:lp=/dev/usb/lp0


samba と lpd を再起動する。あとは、クライアントマシンにプリンタのドライバをインストールして、\\ayano\lp (または//ayano/lp)でアクセスしてみてください。それと実際にテスト印刷してみて正常に動作するか確認しておきましょう。正常に印刷されない場合は、debian環境のlpd が正しく起動していない可能性があります。lpd を起動させる前に一旦LANDISK環境のlpd を停止させておくこと。

landisk:~# /etc/init.d/samba restart
landisk:~# /etc/init.d/lpd start

SambaのすべてThe Samba Book
SambaのすべてThe Samba Book
セキュアなSambaサーバーの作り方日経BPパソコンベストムック
セキュアなSambaサーバーの作り方日経BPパソコンベストムック
徹底解説 Samba LDAPサーバ構築
徹底解説 Samba LDAPサーバ構築
Linux+SambaでWindowsファイルサーバーを構築する―無料で作るWindowsファイルサーバー
Linux+SambaでWindowsファイルサーバーを構築する―無料で作るWindowsファイルサーバー
 


 
     参考文献
   
■@IT:Samba 3.0の全貌 改訂版[前編](1-3)
■@IT:Samba 3.0の全貌 改訂版[後編](1-3)





TOPへ戻る
 
Copyright © KORO All Rights Reserved.