Sambaをプリントサーバとして設定する
前書き
Sambaをプリントサーバーとして設定すると、ネットワーク内のクライアントは、SMB(サーバーメッセージブロック)プロトコルを使用してSambaホストに印刷ジョブを送信できます。このドキュメントに示されている例は、バックエンドのraw のプリンタを使用しています。この構成では 、印刷ジョブがクライアント上のドライバによってフォーマットされているため、それ以上の処理やフィルタリングを行わずにプリンタで処理することができます。
サポートされているプリントサーバーのバックエンド
Sambaは、CUPSやLPRngなどの複数のプリントサーバーバックエンドをサポートしています。完全なリストについては、smb.conf(5)
のマニュアルページのprinting
パラメータを参照してください。
{{#invoke:Message box|imbox}}
バックエンドの設定方法の詳細については、プリントサーバーのマニュアルを参照してください。
Samba CUPSまたはIPRINTバックエンドのサポート
CUPSまたはIPRINTプリントサーバーのバックエンドを使用する場合、SambaはCUPSサポートを有効にしてビルドされている必要があります。確認 するには、次を入力します。
#smbd -b | grep "HAVE_CUPS" HAVE_CUPS
出力が表示されない場合:
- Sambaは
--disable-cups
パラメータを使ってビルドされました。 - Sambaの
configure
スクリプトは、CUPSサポートに必要なライブラリを見つけることができませんでした。詳細は、Sambaのビルドに必要なパッケージ依存関係を参照してください。
プリントサーバーバックエンドへのプリンタの追加
CUPS
rawプリンタをCUPSプリントサーバに追加するには:\
- ブラウザでCUPS管理Webインターフェイスを開きます。たとえば、
https://servername:631/admin
- [管理]タブを選択し、[プリンタの追加]をクリックします。
接続タイプを選択し、プリンタのキューまたはリモートプリントサーバーのキューに対応するURLを入力します。例えば:
- LPDベースのプリンタ:
lpd:// printer_name / queue
- IPP(Internet Printing Protocol)ベースのプリンタ:
ipp://printer_name/ipp/port
SMB(Server Message Block)ベースのプリンタ:
smb://ユーザー名:パスワード@ドメイン/ windows_print_server_host_name/printer_name
Windows Vista以降またはWindows Server 2008以降を実行するプリントサーバーにジョブを転送するには、認証が必要です。
- LPDベースのプリンタ:
プリンタの名前を入力します。この名前は、Sambaを使用してプリンタを共有するときにsmb.confで使用されます。
プリンタのベンダーとモデルは
raw
を選択します。設定を保存します。
LPRng
rawプリンタをLPRngプリントサーバーに追加するには:
/etc/printcap
ファイルに次の行を追加します。
printer_name:sd=/var/spool/lpd/printer_name/sh:mx=0:mc=0:rm=Printer_DNS_name_or_IP_address
プリンタ名は、Sambaを使用してプリンタを共有するときにsmb.confで使用されます。使用されるオプションの詳細については、printcap(5)のマニュアルページを参照してください。
- スプールディレクトリを作成するには、次のように入力します。
#checkpc -f
- LPRngサービスを再起動します。
spoolssdサービスの有効化
Samba spoolssdは、smbdサービスに統合されたサービスです。 Sambaをプリントサーバーとして構成した場合は、spoolssdをさらに有効にして、
- パッケージ対応のWindowsドライバをサポートします。
多数のジョブまたはプリンタでプリントサーバーのパフォーマンスを向上させます。
spoolssdがなければ、Sambaはsmbdプロセスまたは各印刷ジョブをフォークし、printcapキャッシュを初期化します。多数のプリンタの場合、キャッシュを初期化するときにsmbdサービスが複数秒間応答しなくなることがあります。 spoolssdサービスを使用すると、印刷ジョブを処理す る前処理済みのsmbdプロセスを遅延なく開始することができます。主なspoolssd smbdプロセスは、少量のメモリを使用し、子プロセスをforkし て終了します。
spoolssdサービスを有効にするには:
- smb.confファイルの[global]セクションを編集します。
- 次のパラメータを追加します。
rpc_server:spoolss = external rpc_daemon:spoolssd = fork
必要に応じて、次のパラメータを設定できます。
^ パラメータ ^ デフォルト ^ 説明 ^ | spoolssd:prefork_min_children | 5 | 子プロセスの最小数 | | spoolssd:prefork_max_children | 25 | 子プロセスの最大数 | | spoolssd:prefork_spawn_rate | 5 | 新しい接続が確立された場合、Sambaはこの数の新しい子プロセスをspoolssd:prefork_max_childrenに設定された値までフォークします | | spoolssd:prefork_max_allowed_clients | 100 | 子プロセスのクライアント数 | | spoolssd:prefork_child_min_life | 60 | 子プロセスの最小有効期間(秒単位)。 60秒が最小です。 |
- Sambaを再起動します。
再起動後、Sambaは自動的にsmbdのサブプロセスを開始します。
#ps axf ... 30903 smbd 30912 \ _ smbd 30913 \ _ smbd 30914 \ _ smbd 30915 \ _ smbd
Sambaでのプリントサーバーサポートの有効化
プリントサーバーのサポートを有効にするには:
smb.conf
ファイルの[global]
セクションのprinting
パラメータにバックエンドを設定します。 例えば:
printing = CUPS
smb.conf
に次のセクションを追加します。
[printers] path = /var/spool/samba/ printable = yes
- pathパラメータに設定されたスプールディレクトリを作成します。
#mkdir -p / var / spool / samba / #chmod 1777 / var / spool / samba /
- Sambaをリロードする:
#smbcontrol all reload-config
プリンタの共有
プリントサーバーのバックエンドで構成されたすべてのプリンタの自動共有
デフォルト設定を使用すると、プリントサーバーのバックエンドで設定されたすべてのプリンタが自動的に共有されます。
自動プリンタ共有を無効にする
自動プリンタ共有を無効にするには:
smb.conf
ファイルの[global]
セクションに次のパラメータを追加します。
load printers = no
- Sambaをリロードする:
#smbcontrol all reload-config
プリンタの手動共有
プリンタを手動で共有するには:
- 自動プリンタ共有が無効になっていることを確認します。 「自動プリンタ共有を無効にする」を参照してください。
- smb.confファイルにプリンタの共有を追加します。
[Samba_printer_name] path = / var / spool / samba / printable = yes printer name = printer_name_in_the_back_end
プリンタ名パラメータに、ローカルプリントサーバーのバックエンドで使用されているプリンタの名前を設定します。
- Sambaをリロードする:
#smbcontrol all reload-config
Windowsクライアント用のプリンタドライバの自動ダウンロードを設定する
「Windowsクライアントのプリンタドライバ自動ダウンロードの設定」を参照してください。