Red Hat Training

A Red Hat training course is available for RHEL 8

3.15. プリントサーバーとしての Samba の設定

Samba をプリントサーバーとして設定すると、ネットワーク上のクライアントが Samba を使用して印刷できます。さらに、Windows クライアントは、(Samba サーバーが設定されている場合は) Samba サーバーからドライバーをダウンロードすることもできます。

このセクションの一部は、Samba Wiki に公開されているドキュメント Setting up Samba as a Print Server に掲載されています。ライセンスは、CC BY 4.0 にあります。著者および貢献者は、Wiki ページの history タブを参照してください。

前提条件

Samba が、以下のいずれかのモードで設定されている。

3.15.1. Samba でのプリントサーバーのサポートの有効化

デフォルトでは、プリントサーバーサポートは Samba で有効になっていません。Samba をプリントサーバーとして使用するには、Samba を適切に設定する必要があります。

注記

印刷ジョブとプリンター操作には、リモートプロシージャコール (RPC) が必要です。デフォルトでは、Samba は RPC を管理するためにオンデマンドで rpcd_spoolss サービスを開始します。最初の RPC 呼び出し中、または CUPS でプリンターリストを更新するときに、Samba は CUPS からプリンター情報を取得します。これには、プリンターごとに約 1 秒かかる場合があります。そのため、プリンターが 50 台を超える場合は、rpcd_spoolss 設定を調整してください。

前提条件

  • プリンターが CUPS サーバーで設定されている。

    CUPS でプリンターを設定する方法は、プリントサーバーの CUPS Web コンソール (https://print_server_host_name:631/help) で提供されているドキュメントを参照してください。

手順

  1. /etc/samba/smb.conf ファイルを編集します。

    1. [printers] セクションを追加して、Samba で印刷バックエンドを有効にします。

      [printers]
              comment = All Printers
              path = /var/tmp/
              printable = yes
              create mask = 0600
      重要

      [printers] 共有名はハードコーディングされており、変更はできません。

    2. CUPS サーバーが別のホストまたはポートで実行されている場合は、printers セクションで設定を指定します。

      cups server = printserver.example.com:631
    3. 多数のプリンターがある場合は、待機秒数を CUPS に接続されているプリンターの数よりも大きい値に設定します。たとえば、100 台のプリンターがある場合は、[global] セクションに次のように設定します。

      rpcd_spoolss:idle_seconds = 200

      この設定が環境内でスケーリングされない場合は、[global] セクションで rpcd_spoolss ワーカーの数も増やします。

      rpcd_spoolss:num_workers = 10

      デフォルトでは、rpcd_spoolss は 5 つのワーカーを開始します。

  2. /etc/samba/smb.conf ファイルを検証します。

    # testparm
  3. firewall-cmd ユーティリティーを使用して必要なポートを開き、ファイアウォール設定を再読み込みします。

    # firewall-cmd --permanent --add-service=samba
    # firewall-cmd --reload
  4. smb サービスを再起動します。

    # systemctl restart smb

    サービスを再起動すると、Samba は CUPS バックエンドに設定したすべてのプリンターを自動的に共有します。特定のプリンターのみを手動で共有する場合は、特定のプリンターの手動共有 を参照してください。

検証

  • 印刷ジョブを送信します。たとえば、PDF ファイルを印刷するには、次のように入力します。

    # smbclient -Uuser //sambaserver.example.com/printer_name -c "print example.pdf"

3.15.2. 特定のプリンターの手動共有

Samba をプリントサーバーとして設定している場合、Samba は、デフォルトで CUPS バックエンドで設定されたプリンターをすべて共有します。以下の手順では、特定のプリンターのみを共有する方法を説明します。

前提条件

  • Samba がプリントサーバーとして設定されている。

手順

  1. /etc/samba/smb.conf ファイルを編集します。

    1. [global] セクションで、以下の設定で自動プリンター共有を無効にします。

      load printers = no
    2. 共有するプリンターごとにセクションを追加します。たとえば、Samba で CUPS バックエンドで example という名前のプリンターを Example-Printer として共有するには、以下のセクションを追加します。

      [Example-Printer]
              path = /var/tmp/
              printable = yes
              printer name = example

      各プリンターに個別のスプールディレクトリーは必要ありません。[printers] セクションに設定したのと同じ spool ディレクトリーを、プリンターの path パラメーターに設定できます。

  2. /etc/samba/smb.conf ファイルを検証します。

    # testparm
  3. Samba 設定を再読み込みします。

    # smbcontrol all reload-config