Sambaをプリントサーバとして設定する

提供: 雑廉堂Wiki

前書き

Sambaをプリントサーバーとして設定すると、ネットワーク内のクライアントは、SMB(サーバーメッセージブロック)プロトコルを使用してSambaホストに印刷ジョブを送信できます。このドキュメントに示されている例は、バックエンドのraw のプリンタを使用しています。この構成では 、印刷ジョブがクライアント上のドライバによってフォーマットされているため、それ以上の処理やフィルタリングを行わずにプリンタで処理することができます。

サポートされているプリントサーバーのバックエンド

Sambaは、CUPSLPRngなどの複数のプリントサーバーバックエンドをサポートしています。完全なリストについては、smb.conf(5)のマニュアルページのprintingパラメータを参照してください。

バックエンドの設定方法の詳細については、プリントサーバーのマニュアルを参照してください。

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以降を実行するプリントサーバーにジョブを転送するには、認証が必要です。

  • プリンタの名前を入力します。この名前は、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プロセスは、少量のメモリを使用し、子プロセスをフォークして終了します。

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

printer nameパラメータに、ローカルプリントサーバーのバックエンドで使用されているプリンタの名前を設定します。

  • Sambaをリロードする:
# smbcontrol all reload-config

Windowsクライアント用のプリンタドライバの自動ダウンロードを設定する

Windowsクライアント用の自動プリンタドライバのダウンロードをセットアップする」を参照してください。