Using Samba

Using Samba

Robert Eckstein, David Collier-Brown, Peter Kelly 共著
第一版 1999 年 11 月
1-56592-449-5, 注文番号: 4495
416 ページ, 34.95 ドル

ハードコピー版(英語)を購入する

目次


Previous: 7.1 Samba への印刷ジョブの送信 Chapter 7
印刷と名前解決
Next: 7.3 Samba の名前解決
 

7.2 Windows クライアント上のプリンタへの印刷

Windows 95/98 や Windows NT 4.0 が動作しているクライアントに接続されたプリンタに対して、Samba からアクセスすることも可能である。Samba には、Windows ベースのプリンタに印刷ジョブをスプールすることが可能な smbprint というツールが同梱されている。ただし、これを用いるためには、クライアントマシン上でプリンタを共有リソースとして設定する必要がある。まだ行なっていない場合は、スタートボタンからたどれる 図 7.7のような「プリンタ」ウインドウから、設定を行なうことができる。

図 7.7: 「プリンタ」ウィンドウ

図 7.7

ローカルに接続されているプリンタを選択し(ここでは Canon のプリンタになっている)、右クリックをしてメニューを表示させ、「共有」を選択する。これで 図 7.8のような、プリンタのプロパティ中の「共有」タブが表示される。LAN 上の誰でも Windows のゲストユーザとして印刷できるようにしたい場合は、パスワードを入力しないこと。

図 7.8: プリンタの「共有」タブ

図 7.8

ここまでの作業が完了したら、プリンタを標準的なプリンタのリスト(monyo 訳注: /etc/printcap のこと)に追加することで、Samba がワークグループ内の他のPCに利用させることが可能になる。UNIX 上でのインストールを簡単にするために、Samba の配布パッケージには、2つのサンプルスクリプト: smbprint smbprint.sysvが含まれている。1つ目はBSD形式のプリンタ用で、もう1つは、System V プリンタ用に書かれたものである。

7.2.1 BSD プリンタ

BSD UNIX がリモートのプリンタを認識できるようにするには、2つのステップが必要である:

  1. /etc/printcap ファイル(もしくは同等のもの)にプリンタのエントリを記述する。

  2. /var/spool ディレクトリにプリンタ用の設定ファイルを配置する。

まず、 /etc/printcap ファイルを編集して、リモートプリンタのエントリを追加する。マシンがWindows 95/98 の場合、input フィルタ(if)のエントリには、 smbprintプログラムを設定する必要がある。以下の設定例は Linux マシン上で確認したものである:

laserjet:\
  :sd=/var/spool/lpd/laser:\         

# spool directory
  :mx#0:\                            

# maximum file size (none)
  :sh:\                              

# surpress burst header (no)
  :if=/usr/local/samba/bin/smbprint: 

# text filter

その後上記の sd パラメータで指定したスプールディレクトリに設定ファイルを作成する必要がある(ディレクトリ自体を作成する必要があるかも知れない)。ファイルは .configという名前で、以下の情報を含んでいる必要がある:

  • プリンタサーバとなっているWindowsマシンのNetBIOS名

  • プリンタを共有しているサービス名

  • サービスにアクセスするためのパスワード

後ろ二つのパラメータは、Windows マシン上の該当リソースの「共有」ダイアログで設定されたものである。今回の例では .config ファイルには、以下の3行が書き込まれる:

server = phoenix
service = CANON
password = ""

この設定を行なってから、Samba サーバのマシンを再起動し、通常のUNIXプログラムから印刷を行なってみてほしい。

7.2.2 System V プリンタ

System V UNIX システムからの印刷ジョブの送信は、少しだけ簡単である。この場合、 smbprint.sysvスクリプトを /usr/local/samba/examples/printingディレクトリに配置して、以下のように設定を行なう:

  1. スクリプト中の server, service, password パラメータを、それぞれNetBIOS名、共有されているプリンタサービス名、パスワードに変更する。例えば前述した例では、以下のように設定を行なえばよい:

server = phoenix
service = CANON
password = ""
  1. 以下のコマンドを実行して、プリンタ構成ファイル中のプリンタと関連づけを行なう。新しいUNIXプリンタのエントリがcanon_printerと名付けられていることに注意すること:

# lpadmin -p canon_printer -v /dev/null -i ./smbprint.sysv
# enable canon_printer
# accept canon_printer

この作業を行なってから、Samba デーモンを再起動して、通常のUNIXプログラムを用いて印刷を行なってみてほしい。ネットワーク経由で、Windows 上のプリンタにデータを送信することが出来るようになっている筈である。

7.2.3 Samba の印刷オプション

表 7.2 に Samba の印刷オプションをまとめてある。


表 7.2: 印刷設定オプション

オプション

パラメータ

機能

デフォルト

範囲

printing

bsd, sysv, hpux, aix, qnx, plp, softq, or lprng

UNIX システムに応じた印刷システムの形式を設定する

システムに依存する

共有

printable (print ok)

真偽値

共有をプリンタ共有として機能させる

no

共有

printer (printer name)

文字列 (UNIX のプリンタ名)

クライアントに公開するプリンタの名前を設定する

システムに依存する

共有

printer driver

文字列 (プリンタドライバ名)

プリンタにデータを送信するためにクライアントによって使われるドライバ名を指定する

なし

共有

printer driver file

文字列 (フルパス名)

プリンタドライバファイル名を設定する

なし

グローバル

printer driver location

文字列 (ネットワークパス名)

プリンタドライバの存在する共有のパス名(monyo 訳注:UNC 名)を指定する

なし

共有

lpq cache time

数値 (秒単位の時間)

Samba が lpq ステータスをキャッシュする時間を秒単位で設定する

10

グローバル

postscript

真偽値

各ファイルの先頭に、 %!を付加することで、印刷ジョブをポストスクリプトとして扱うようにする

no

共有

load printers

真偽値

printcap ファイル中の各プリンタを、プリンタ共有として自動的に設定する

no

グローバル

print command

文字列 (シェルコマンド)

印刷を行なうためのUNIXコマンドを設定する

以下を参照のこと

共有

lpq command

文字列 (シェルコマンド)

印刷キューの状況を返却するためのUNIXコマンドを設定する

以下を参照のこと

共有

lprm command

文字列 (シェルコマンド)

印刷キューからジョブを削除するためのUNIXコマンドを設定する

以下を参照のこと

共有

lppause command

文字列 (シェルコマンド)

印刷キュー上のジョブを一時停止させるためのUNIXコマンドを指定する

以下を参照のこと

共有

lpresume command

文字列 (シェルコマンド)

印刷キュー上で一時停止させたジョブを再開させるためのUNIXコマンドを設定する

以下を参照のこと

共有

printcap name

(printcap)

文字列 (フルパス名)

プリンタ構成ファイルの位置を指定する

システムに依存する

グローバル

min print space

数値 (キロバイト単位)

印刷のために必要な最低限のディスクの空き容量を設定する

0

共有

queuepause command

文字列 (シェルコマンド)

キューを一時停止させるためのUNIXのコマンドを指定する

以下を参照のこと

共有

queueresume command

文字列 (シェルコマンド)

キューを再開させるためのUNIXコマンドを指定する

以下を参照のこと

共有

7.2.3.1 printing

printing 設定オプションは、Samba に、UNIX の印刷システムに関する情報を提供する。これは印刷パーサによって利用される。UNIXには印刷や印刷のステータスを管理するためのコマンドセットが幾つか存在する。Sambaは7つの異なったタイプを提供している。これらを 表 7.3に示す。


表 7.3: 印刷タイプ

変数

定義

BSD

Berkeley UNIX システム

SYSV

System V

AIX

AIX オペレーティングシステム (IBM)

HPUX

Hewlett-Packard UNIX

QNX

QNX Realtime Operating System (QNX)

LPRNG

LPR Next Generation (Powell)

SOFTQ

SOFTQ システム

PLP

Portable Line Printer (Powell)

このオプションの値はこれらの7つの値のいずれかになる。以下に例を示す:

printing = SYSV

このオプションのデフォルト値はシステム依存であり、Samba がコンパイルされたときに決定される。多くのシステムでは、 configure スクリプトが利用する印刷システムを自動的に検出し、Samba の makefile 中で正しく設定を行なう。ただし、印刷システムが PLP, LPRNG, QNX 印刷システムの場合は、これを明示的に makefile 中かプリンタ共有で指定する必要がある。

一般的に用いられるシステムのタイプは、BSD と SYSV である。BSD UNIX サーバ上の各プリンタは、プリンタ構成ファイル - 通常 /etc/printcap で設定される。

printing設定オプションにより、少なくとも print command, lpq command, lprm commandという3つの印刷関連のオプションがそのプリンタ共有に対して自動的に設定される。Samba をこれらの印刷形式が提供されていないシステム上で動作させている場合は、単純にこれらのオプションを個々に設定すればよい。

7.2.3.2 printable

printable オプションは、共有がプリンタサービスであることを示すために、 yesに設定しなければならない。このオプションが設定されていない場合、共有はディスク共有として扱われる。このオプションは以下のように設定する:

[printer1]
	printable = yes

7.2.3.3 printer

このオプションは、しばしば printer name とも呼ばれ、共有が出力するサーバ上のプリンタ名を指定する。このオプションにデフォルト値はなく、明示的に設定ファイル中で指定する必要がある。これは、UNIXシステムがデフォルトのプリンタ名が lp 等になっている場合でも同様である。このオプションは以下のように設定する:

[deskjet]
	printer = hpdkjet1

7.2.3.4 printer driver

printer driver オプションは、SambaがWindowsクライアントに対してプリンタを通知するのに用いる文字列を設定する。オプションが正しく設定されていると、Windows のプリンタの追加ウィザードはどのプリンタを用いるかを予め知ることができるので、ダイアログボックスが一つ少なくなる分だけ、エンドユーザのインストール作業が簡単になる。この文字列は、 図 7.9でプリンタの追加ウィザードが表示している文字列と対比される。例えば、Apple の LaserWriter は通常 Apple LaserWriter という文字列、Hewlett Packard Deskjet 560C は HP DeskJet 560C Printerという文字列を用いる。

図 7.9: Windows 98 におけるプリンタの追加ウィザードのダイアログボックス

Figure 7.9

Samba でプリンタドライバを自動設定する方法については、この章の前半の Section 7.1.7, Automatically Setting Up Printer Driversで子細に記述されている。

7.2.3.5 printer driver file

このグローバルオプションは Windows 95/98 用のプリンタドライバ定義ファイルの位置を設定する。このファイルは Samba のプリンタを用いるクライアントにプリンタドライバを提供するために必要である。このオプションのデフォルト値は /usr/local/samba/lib/printers.def である。デフォルト値は、以下のようにして変更することができる:

[deskjet]
	printer driver file = /var/printers/printers.def

このオプションの詳細は、この章の前半の セクション 7.1.7で子細に記述されている。

7.2.3.6 printer driver location

このオプションは、Windows 95/98 用のプリンタドライバと定義ファイルが置かれている共有の位置を指定する。このパラメータにデフォルト値はない。位置に付いてはネットワークのパス名(monyo 訳注: UNC 形式)で記述することが可能である。一般的には以下のようにして、自分のマシン上の共有を指定する:

[deskjet]
	printer driver location = \\%L\PRINTER$

このオプションについても、この章の前半の Section 7.1.7 で子細に記述されている。

7.2.3.7 lpq cache time

グローバルな lpq cache time オプションにより Samba が現在のプリンタの状況を記憶している秒数を設定することができる。この時間が過ぎると、Samba は lpq コマンド(もしくは lpq command オプションで指定した何らかのコマンド)を発行して状況を更新する。デフォルトは10秒であるが、多数のクライアントがあったり、 lpq command の実行に非常に時間がかかっている場合は、この値を増加させることもできる。以下の例では、この時間を30秒に変更している:

[deskjet]
	lpq cache time = 30

7.2.3.8 postscript

postscript オプションにより、指定されたプリンタが送信されたすべてのデータを Postscript として扱うようになる。これは、各印刷ジョブの先頭行の最初に、 %! 文字を置くことによって行なわれる。このオプションは、通常 ^D (control-D or end-of-file mark) を PostScript ファイルの先頭に挿入してしまう PC を用いてる際に利用される。このオプションは、非 PostScript プリンタを PostScript プリンタにするものではない。このオプションのデフォルト値は noである。この値は以下のようにして変更できる:

[deskjet]
	postscript = yes

7.2.3.9 print command, lpq command, lprm command, lppause command, lpresume command

これらのオプションにより、Samba がプリンタを制御したり、データを送信したりするときに、どういった UNIX のコマンドを利用するかが指定される。関係する UNIX コマンドは、 lpr (send to Line PRinter), lpq (List Printer Queue), lprm (Line printer ReMove) およびオプションであるが、 lppause, lpresume である。システムのデフォルトを変更する必要がある場合に備えて、Samba はこれらのコマンドに因んだオプションを提供している。一例として以下の場合を考えてみよう:

lpq command = /usr/ucb/lpq %p

これにより、 lpq command /usr/ucb/lpq が設定される。同様に

lprm command = /usr/local/lprm -P%p %j

では、Samba がプリンタを削除するコマンドが /usr/local/lprm となり、 %j 変数を用いて、印刷ジョブの番号が提供される。

これらのオプションのデフォルト値は printing オプションの値に依存する。 表 7.4 では printing オプション毎のデフォルト値を表示している。最も一般的な 印刷システムは BSD である。


表 7.4: 様々な printing コマンド毎のデフォルトのコマンド

オプション

BSD, AIX, PLP, LPRNG

SYSV, HPUX

QNX

SOFTQ

print command

lpr -r -P%p %s lp -c -d%p %s; rm %s lp -r -P%p %s lp -d%p -s %s; rm %s

lpq command

lpq -P%p lpstat -o%p lpq -P%p lpstat -o%p
lprm command lprm -P%p %j cancel %p-%j cancel %p-%j cancel %p-%j
lppause command lp -i %p-%j -H hold (SYSV only) None None None
lpresume command lp -i %p-%j -H resume(SYSV のみ) None None qstat -s -j%j -r

通常 Samba においてこれらのオプションを変更する必要はないが、 print commandは例外である。このオプションは、印刷システムに -r (印刷後にジョブを削除する) オプションのあるコマンドが存在しない場合、明示的に設定する必要がある場合がある。以下その場合の例である:

/usr/local/lpr -P%p %s; /bin/rm %s

少し工夫することで、これらの smb.conf のオプションはデバッグの目的に利用することも可能である

print command = cat %s >>/tmp/printlog; lpr -r -P%p %s

一例をあげると、上記の設定はファイルが実際にSambaサーバに送信されたかどうかを確認することを可能とする。これによりすべての送信内容が /tmp/printlog ファイル中に格納される。

BSD の次に一般的な印刷システムとしては SYSV(System V) 形式の印刷システムや IBM の AIX や Hewlett-Packard の HP-UX 等幾つかの SYSV 系列の印刷システムがあげられる。これらのシステムには /etc/printcap ファイルが存在せず、代わりに printcap file オプションにより、システムに適切な lpstat コマンドを指定する(monyo 訳注: printcap ファイルの誤りか?). これにより、Samba は lpstat コマンドからプリンタのリストを入手する。別の対策として、グローバルな設定オプションである printcap name にダミーの printcap ファイル名を指定することも可能である。後者の場合、ファイルには以下のような行が含まれている必要がある:

lp|print1|My Printer 1
print2|My Printer 2
print3|My Printer 3

各行は、プリンタ名とその別名を示す。この例の場合、最初の行のプリンタは lp, print1, My Printer 1 のいずれか利用者の好みの名前で呼ぶことが可能である。先頭の名前が Samba がプリンタ関連のコマンドを実行する際に %p 変数に代入される。

Samba では、LPRNG (LPR New Generation) と PLP (Public Line Printer) という印刷システムも提供されている。これらはパブリックドメインで、オープンソースの印刷システムであり、ベンダが提供するソフトウェアの問題に対処するため、多くのサイトで用いられている。更に、SOFTQ と QNX リアルタイムオペレーティングシステムも、Samba によってサポートされている。

7.2.3.10 load printers

load printers オプションにより、Samba は すべての既知のプリンタに対する共有を作成し、それらをブラウズリストに載せるようになる。Samba は /etc/printcap (or system equivalent) 上の各プリンタ名毎にプリンタ共有を作成し、リストに追加する。例えば、 printcap ファイルが以下のようになっている場合:[2]

[2] このファイルを初めてみる読者のために、各行にコメントを付加した。

lp:\
  :sd=/var/spool/lpd/lp:\            

# spool directory
  :mx#0:\                            

# maximum file size (none)
  :sh:\                              

# surpress burst header (no)
  :lp=/dev/lp1:\                     

# device name for output
  :if=/var/spool/lpd/lp/filter:      

# text filter

laser:\
  :sd=/var/spool/lpd/laser:\         

# spool directory
  :mx#0:\                            

# maximum file size (none)
  :sh:\                              

# surpress burst header (no)
  :lp=/dev/laser:\                   

# device name for output
  :if=/var/spool/lpd/lp/filter:      

# text filter

以下のように指定することで:

load printers = yes

[lp] [laser] の共有は、Samba の起動時に利用可能なプリンタ共有として自動的に作成される。両方の共有とも、設定オプションとして [printers] セクションで指定されたものが用いられ、Samba サーバのブラウズリスト上にも表示される。

7.2.3.11 printcap name

printcap name オプション( printcapとも呼ばれる) がプリンタ共有に記述されていた場合、Samba はシステムのプリンタ構成ファイルとしてここで指定されたファイルを利用するようになる。このファイルは通常 /etc/printcap であるが、ネットワーク上で共有したいプリンタのみを含んだファイルに設定することも可能である。この値はサーバ上のプリンタ構成ファイルをさすフルパス名である必要がある:

[deskjet]
	printcap name = /usr/local/printcap

7.2.3.12 min print space

min print space オプションは、印刷が行なわれる際に必要な最低のスプール領域のサイズを設定する。これをゼロ(デフォルト値)にした場合、チェックは行なわれない。それ以外の数値にした場合は、印刷時に必要なキロバイト単位の空きスペースとなる。このオプションにより、印刷ジョブがディスクの空き領域を喰い潰してしまい、他のプロセスにも影響が及ぶ事態を避けることができる:

[deskjet]
	min print space = 4000

7.2.3.13 queuepause command

この設定オプションは、Samba に個々の印刷ジョブではなく、印刷キュー全体を一時停止させるコマンドを指定する。デフォルト値は printing type の指定に依存する。このオプションを変更する必要はないであろう。

7.2.3.14 queueresume command

この設定オプションは、Samba が印刷キュー上のあるジョブ単位ではなく、一時停止した印刷キューを再開させるコマンドを指定する。デフォルト値は printing type の指定に依存する。このオプションを変更する必要はないであろう。


Previous: 7.1 Samba への印刷ジョブの送信 目次 Next: 7.3 Samba の名前解決
7.1 Samba への印刷ジョブの送信 書籍索引 7.3 Samba の名前解決

O'Reilly Home | O'Reilly Bookstores | How to Order | O'Reilly Contacts
International | About O'Reilly | Affiliated Companies

© 1999, O'Reilly & Associates, Inc.