CUPS 印刷サーバーの設定および使用

Red Hat Enterprise Linux 9

CUPS サーバーとして動作するようにシステムを設定し、プリンター、印刷キュー、印刷環境を管理する

Red Hat Customer Content Services

概要

Red Hat Enterprise Linux では、Common Unix Printing System (CUPS) によって印刷を管理します。ユーザーはホスト上の CUPS でプリンターを設定して印刷します。さらに、CUPS でプリンターを共有し、ホストをプリントサーバーとして使用できます。
CUPS は次のプリンターへの印刷をサポートしています。
  • AirPrint™ および IPP Everywhere™ プリンター
  • プリンターアプリケーションを備えたネットワークおよびローカル USB プリンター
  • 従来の PostScript Printer description (PPD) ベースのドライバーを備えたネットワークおよびローカル USB プリンター

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。まずは、マスター (master)、スレーブ (slave)、ブラックリスト (blacklist)、ホワイトリスト (whitelist) の 4 つの用語の置き換えから始めます。この取り組みは膨大な作業を要するため、今後の複数のリリースで段階的に用語の置き換えを実施して参ります。詳細は、Red Hat CTO である Chris Wright のメッセージ を参照してください。

Red Hat ドキュメントへのフィードバック (英語のみ)

Red Hat ドキュメントに関するご意見やご感想をお寄せください。また、改善点があればお知らせください。

Jira からのフィードバック送信 (アカウントが必要)

  1. Jira の Web サイトにログインします。
  2. 上部のナビゲーションバーで Create をクリックします。
  3. Summary フィールドにわかりやすいタイトルを入力します。
  4. Description フィールドに、ドキュメントの改善に関するご意見を記入してください。ドキュメントの該当部分へのリンクも追加してください。
  5. ダイアログの下部にある Create をクリックします。

第1章 CUPS のインストールと設定

CUPS を使用してローカルホストから印刷できます。このホストを使用してネットワーク内でプリンターを共有し、プリントサーバーとして機能させることもできます。

手順

  1. cups パッケージをインストールします。

    # dnf install cups
  2. CUPS をプリントサーバーとして設定する場合は、/etc/cups/cupsd.conf ファイルを編集し、次の変更を加えます。

    1. CUPS をリモートで設定する場合、またはこのホストをプリントサーバーとして使用する場合は、CUPS がリッスンする IP アドレスとポートを設定します。

      Listen 192.0.2.1:631
      Listen [2001:db8:1::1]:631

      デフォルトでは、CUPS は localhost インターフェイス (127.0.0.1 および ::1) でのみリッスンします。IPv6 アドレスは角括弧で囲んで指定します。

      重要

      信頼できないネットワーク (インターネットなど) からのアクセスを許可するインターフェイスをリッスンするように CUPS を設定しないでください。

    2. <Location /> ディレクティブでそれぞれの IP 範囲を許可することで、サービスにアクセスできる IP 範囲を設定します。

      <Location />
        Allow from 192.0.2.0/24
        Allow from [2001:db8:1::1]/32
        Order allow,deny
      </Location>
    3. <Location /admin> ディレクティブで、CUPS 管理サービスにアクセスできる IP アドレスと範囲を設定します。

      <Location /admin>
        Allow from 192.0.2.15/32
        Allow from [2001:db8:1::22]/128
        Order allow,deny
      </Location>

      この設定では、IP アドレス 192.0.2.15 および 2001:db8:1::22 を持つホストのみが管理サービスにアクセスできます。

    4. オプション: Web インターフェイスで設定ファイルとログファイルへのアクセスを許可する IP アドレスと範囲を設定します。

      <Location /admin/conf>
        Allow from 192.0.2.15/32
        Allow from [2001:db8:1::22]/128
        ...
      </Location>
      
      <Location /admin/log>
        Allow from 192.0.2.15/32
        Allow from [2001:db8:1::22]/128
        ...
      </Location>
  3. firewalld サービスを実行し、CUPS へのリモートアクセスを設定する場合は、firewalld で CUPS ポートを開きます。

    # firewall-cmd --permanent --add-port=631/tcp
    # firewall-cmd --reload

    複数のインターフェイスを持つホストで CUPS を実行する場合は、必要なネットワークにアクセスを制限することを検討してください。

  4. cups サービスを有効にして起動します。

    # systemctl enable --now cups

検証

  • ブラウザーを使用して、http://<hostname>:631 にアクセスします。Web インターフェイスに接続できれば、CUPS は動作しています。

    Administration タブなどの一部の機能では、認証と HTTPS 接続が必要であることに注意してください。デフォルトでは、CUPS は HTTPS アクセスに自己署名証明書を使用するため、認証時の接続はセキュアではありません。

第2章 CUPS サーバーでの TLS 暗号化の設定

CUPS は TLS 暗号化接続をサポートしており、デフォルトでは、サービスは認証を必要とするすべてのリクエストに対して暗号化接続を強制します。証明書が設定されていない場合、CUPS は秘密鍵と自己署名証明書を作成します。これで十分なのは、ローカルホスト自体から CUPS にアクセスする場合だけです。ネットワーク経由でセキュアに接続するには、認証局 (CA) によって署名されたサーバー証明書を使用します。

警告

暗号化を使用しなかった場合、または自己署名証明書を使用した場合、中間者 (MITM) 攻撃により、次のような情報が漏洩する可能性があります。

  • Web インターフェイスを使用して CUPS を設定する際の管理者の認証情報
  • ネットワーク経由で印刷ジョブを送信する際の機密データ

前提条件

  • CUPS が設定されている
  • 秘密鍵の作成 が完了していて、その秘密鍵に対するサーバー証明書が CA から発行されている。
  • 中間証明書をサーバー証明書にアタッチしている (サーバー証明書を検証するために中間証明書が必要な場合)。
  • CUPS にはサービスが鍵を読み取るときにパスワードを入力するオプションがないため、秘密鍵はパスワードで保護されません。
  • 証明書の正規名 (CN) またはサブジェクト代替名 (SAN) フィールドが、次のいずれかと一致する。

    • CUPS サーバーの完全修飾ドメイン名 (FQDN)
    • DNS によってサーバーの IP アドレスに解決されるエイリアス
  • 秘密鍵とサーバー証明書ファイルが、Privacy Enhanced Mail (PEM) 形式を使用している。
  • クライアントが CA 証明書を信頼している。
  • サーバーが RHEL 9.2 以降を実行し、FIPS モードが有効になっている場合、クライアントが Extended Master Secret (EMS) 拡張機能をサポートしているか、TLS 1.3 を使用している必要があります。EMS を使用しない TLS 1.2 接続は失敗します。詳細は、ナレッジベースの記事 TLS extension "Extended Master Secret" enforced を参照してください。

手順

  1. /etc/cups/cups-files.conf ファイルを編集し、次の設定を追加して自己署名証明書の自動作成を無効にします。

    CreateSelfSignedCerts no
  2. 自己署名証明書と秘密鍵を削除します。

    # rm /etc/cups/ssl/<hostname>.crt /etc/cups/ssl/<hostname>.key
  3. オプション: サーバーの FQDN を表示します。

    # hostname -f
    server.example.com
  4. オプション: 証明書の CN フィールドと SAN フィールドを表示します。

    # openssl x509 -text -in /etc/cups/ssl/server.example.com.crt
    Certificate:
      Data:
        ...
        Subject: CN = server.example.com
        ...
        X509v3 extensions:
          ...
          X509v3 Subject Alternative Name:
            DNS:server.example.com
      ...
  5. サーバー証明書の CN または SAN フィールドにサーバーの FQDN とは異なるエイリアスが含まれている場合は、ServerAlias パラメーターを /etc/cups/cupsd.conf ファイルに追加します。

    ServerAlias alternative_name.example.com

    この場合、以降の手順で FQDN の代わりに代替名を使用します。

  6. 秘密鍵とサーバー証明書を /etc/cups/ssl/ ディレクトリーに保存します。次に例を示します。

    # mv /root/server.key /etc/cups/ssl/server.example.com.key
    # mv /root/server.crt /etc/cups/ssl/server.example.com.crt
    重要

    CUPS では、秘密鍵に <fqdn>.key、サーバー証明書ファイルに <fqdn>.crt という名前を付ける必要があります。エイリアスを使用する場合は、ファイルに <alias>.key および <alias>.crt という名前を付ける必要があります。

  7. root ユーザーのみがこのファイルを読み取ることができるように、秘密鍵にセキュアなパーミッションを設定します。

    # chown root:root /etc/cups/ssl/server.example.com.key
    # chmod 600 /etc/cups/ssl/server.example.com.key

    証明書は、セキュアな接続を確立する前のクライアントとサーバー間の通信の要素であるため、どのクライアントも認証なしで証明書を取得できます。したがって、サーバー証明書ファイルに厳密なパーミッションを設定する必要はありません。

  8. SELinux コンテキストを復元します。

    # restorecon -Rv /etc/cups/ssl/
  9. デフォルトでは、CUPS は、Web インターフェイスの /admin ページで管理タスクを実行する場合など、タスクで認証が必要な場合にのみ暗号化接続を強制します。

    CUPS サーバー全体の暗号化を強制するには、/etc/cups/cupsd.conf ファイル内のすべての <Location> ディレクティブに Encryption Required を追加します。次に例を示します。

    <Location />
      ...
      Encryption Required
    </Location>
  10. CUPS を再起動します。

    # systemctl restart cups

検証

  1. ブラウザーを使用して、https://<hostname>:631/admin/ にアクセスします。接続が成功すれば、CUPS で TLS 暗号化が正しく設定されています。
  2. サーバー全体の暗号化を必須とするように設定した場合は、http://<hostname>:631/ にアクセスします。この場合、CUPS は Upgrade Required というエラーを返します。

トラブルシューティング

  • cups サービスの systemd ジャーナルエントリーを表示します。

    # journalctl -u cups

    HTTPS プロトコルを使用した Web インターフェイスへの接続に失敗した後、ジャーナルに Unable to encrypt connection: Error while reading file というエラーが含まれている場合は、秘密鍵とサーバー証明書ファイルの名前を確認します。

第3章 Web インターフェイスで CUPS サーバーを管理するための管理権限の付与

デフォルトでは、sysroot、および wheel グループのメンバーは、Web インターフェイスで管理タスクを実行できます。しかし、他の特定のサービスもこれらのグループを使用します。たとえば、wheel グループのメンバーは、デフォルトで、sudo を使用して root 権限でコマンドを実行できます。CUPS 管理者が他のサービスで予期しない権限を取得しないようにするには、CUPS 管理者専用のグループを使用します。

前提条件

  • CUPS が設定されている
  • 使用するクライアントの IP アドレスに、Web インターフェイスの管理領域にアクセスする権限がある。

手順

  1. CUPS 管理者用のグループを作成します。

    # groupadd cups-admins
  2. Web インターフェイスでサービスを管理する必要があるユーザーを、cups-admins グループに追加します。

    # usermod -a -G cups-admins <username>
  3. /etc/cups/cups-files.conf ファイルの SystemGroup パラメーターの値を更新し、cups-admin グループを追加します。

    SystemGroup sys root wheel cups-admins

    cups-admin グループのみに管理アクセス権を与える必要がある場合は、パラメーターから他のグループ名を削除します。

  4. CUPS を再起動します。

    # systemctl restart cups

検証

  1. ブラウザーを使用して、https://<hostname_or_ip_address>:631/admin/ にアクセスします。

    注記

    ユーザーは HTTPS プロトコルを使用する場合のみ、Web UI の管理領域にアクセスできます。

  2. 管理タスクの実行を開始します。たとえば、Add printer をクリックします。
  3. Web インターフェイスで、ユーザー名とパスワードの入力を求められます。続行するには、cups-admins グループのメンバーであるユーザーの認証情報を使用して認証します。

    認証が成功すると、このユーザーは管理タスクを実行できます。

第4章 プリンタードライバーを含むパッケージの概要

Red Hat Enterprise Linux (RHEL) は、CUPS 用のプリンタードライバーを含むさまざまなパッケージを提供しています。これらのパッケージの概要と、パッケージに含まれるドライバーが対応するベンダーを以下に示します。

表4.1 ドライバーパッケージのリスト

パッケージ名プリンター用ドライバー

cups

Zebra、Dymo

c2esp

Kodak

foomatic

Brother、Canon、Epson、Gestetner、HP、Infotec、Kyocera、Lanier、Lexmark、NRG、Ricoh、Samsung、Savin、Sharp、Toshiba、Xerox など

gutenprint-cups

Brother、Canon、Epson、Fujitsu、HP、Infotec、Kyocera、Lanier、NRG、Oki、Minolta、Ricoh、Samsung、Savin、Xerox など

hplip

HP

pnm2ppa

HP

splix

Samsung、Xerox など

パッケージによっては、同じプリンターベンダーまたはモデル用の、異なる機能を持つドライバーが含まれている場合があることに注意してください。

必要なパッケージをインストールした後、CUPS Web インターフェイスまたは lpinfo -m コマンドを使用してドライバーのリストを表示できます。

第5章 プリンターがドライバーレス印刷をサポートしているかどうかの確認

CUPS はドライバーレス印刷をサポートしています。つまり、ハードウェア固有のソフトウェアをプリンターに提供しなくても印刷できます。ドライバーレス印刷を使用するには、プリンターからクライアントにその機能を通知し、次のいずれかの標準をプリンターで使用する必要があります。

  • AirPrint™
  • IPP Everywhere™
  • Mopria®
  • Wi-Fi Direct Print Services

ipptool ユーティリティーを使用すると、プリンターがドライバーレス印刷をサポートしているかどうかを確認できます。

前提条件

  • プリンターまたはリモートプリントサーバーが、インターネット印刷プロトコル (IPP) をサポートしている。
  • ホストが、プリンターまたはリモートプリントサーバーの IPP ポートに接続できる。デフォルトの IPP ポートは 631 です。

手順

  • ipp-versions-supported 属性と document-format-supported 属性を照会し、get-printer-attributes テストに合格することを確認します。

    • リモートプリンターの場合は、次のように入力します。

      # ipptool -tv ipp://<ip_address_or_hostname>:631/ipp/print get-printer-attributes.test | grep -E "ipp-versions-supported|document-format-supported|get-printer-attributes"
      Get printer attributes using get-printer-attributes      [PASS]
          ipp-versions-supported (1setOf keyword) = ...
          document-format-supported (1setOf mimeMediaType) = ...
    • リモートプリントサーバー上のキューの場合は、次のように入力します。

      # ipptool -tv ipp://<ip_address_or_hostname>:631/printers/<queue_name> get-printer-attributes.test | grep -E "ipp-versions-supported|document-format-supported|get-printer-attributes"
      Get printer attributes using get-printer-attributes      [PASS]
          ipp-versions-supported (1setOf keyword) = ...
          document-format-supported (1setOf mimeMediaType) = ...

    ドライバーレス印刷が機能することを確認するには、出力で次のことを確認します。

    • get-printer-attributes テストが PASS を返す。
    • プリンターがサポートする IPP バージョンが 2.0 以降である。
    • 形式のリストに次のいずれかが含まれている。

      • application/pdf
      • image/urf
      • image/pwg-raster
    • カラープリンターの場合、前述の形式のいずれかに加えて、image/jpeg が出力に含まれている。

第6章 Web インターフェイスを使用した CUPS へのプリンターの追加

ユーザーが CUPS 経由で印刷できるようにするには、事前にプリンターを追加する必要があります。ネットワークプリンターと、USB 経由などで CUPS ホストに直接接続されているプリンターの両方を使用できます。

CUPS ドライバーレス機能を使用するか、PostScript Printer Description (PPD) ファイルを使用してプリンターを追加できます。

注記

CUPS はドライバーレス印刷を優先しており、ドライバーの使用は非推奨です。

Red Hat Enterprise Linux (RHEL) は、mDNS レスポンダーにクエリーを実行することでリクエストを解決する、Name Service Switch Multicast DNS プラグイン (nss-mdns) を提供しません。そのため、RHEL では、mDNS を使用したローカルドライバーレスプリンターの自動検出とインストールは利用できません。この問題を回避するには、1 台のプリンターを手動でインストールするか、cups-browsed を使用してリモートプリントサーバーで使用可能な多数の印刷キューを自動的にインストールします。

前提条件

手順

  1. ブラウザーを使用して、https://<hostname>:631/admin/ にアクセスします。

    Web インターフェイスには HTTPS プロトコルを使用して接続する必要があります。使用しないと、セキュリティー上の理由から、CUPS が後のステップで認証できなくなります。

  2. Add printer をクリックします。
  3. ユーザーがまだ認証されていない場合、CUPS は管理ユーザーの認証情報の入力を求めます。許可されたユーザーのユーザー名とパスワードを入力します。
  4. ドライバーレス印刷を使用せず、追加するプリンターが自動的に検出された場合は、それを選択し、Continue をクリックします。
  5. プリンターが検出されなかった場合は、以下を実行します。

    1. プリンターがサポートするプロトコルを選択します。

      CUPS の印刷プロトコルの選択

      プリンターがドライバーレス印刷をサポートしており、この機能を使用する場合は、ipp または ipps プロトコルを選択します。

    2. Continue をクリックします。
    3. プリンターまたはリモートプリントサーバー上のキューへの URL を入力します。

      CUPS のプリンター URL の追加
    4. Continue をクリックします。
  6. 名前を入力し、必要に応じて説明と場所を入力します。CUPS をプリントサーバーとして使用し、他のクライアントが CUPS を介してこのプリンターで印刷できるようにする場合は、Share this printer も選択します。

    CUPS のプリンター詳細の追加
  7. Make リストからプリンターの製造元を選択します。プリンターの製造元がリストにない場合は、Generic を選択するか、プリンターの PPD ファイルをアップロードします。

    CUPS のプリンター製造元の追加
  8. Continue をクリックします。
  9. プリンターのモデルを選択します。

    • プリンターがドライバーレス印刷をサポートしている場合は、IPP Everywhere を選択します。なお、以前にプリンター固有のドライバーをローカルにインストールしていた場合は、リストに <printer_name> - IPP Everywhere などのエントリーも含まれている可能性があります。
    • プリンターがドライバーレス印刷をサポートしていない場合は、モデルを選択するか、プリンターの PPD ファイルをアップロードします。
    CUPS のプリンターモデルの追加
  10. Add Printer をクリックします。
  11. Set printer options ページの設定とタブは、ドライバーとプリンターがサポートする機能によって異なります。このページを使用して、用紙サイズなどのデフォルトのオプションを設定します。

    CUPS のプリンターデフォルト設定の追加
  12. Set default options をクリックします。

検証

  1. Web インターフェイスで Printers タブを開きます。
  2. プリンターの名前をクリックします。
  3. Maintenance リストで、Print test page を選択します。

    CUPS のテストページの印刷

トラブルシューティング

第7章 lpadmin ユーティリティーを使用した CUPS へのプリンターの追加

ユーザーが CUPS 経由で印刷できるようにするには、事前にプリンターを追加する必要があります。ネットワークプリンターと、USB 経由などで CUPS ホストに直接接続されているプリンターの両方を使用できます。

CUPS ドライバーレス機能を使用するか、PostScript Printer Description (PPD) ファイルを使用してプリンターを追加できます。

注記

CUPS はドライバーレス印刷を優先しており、ドライバーの使用は非推奨です。

Red Hat Enterprise Linux (RHEL) は、mDNS レスポンダーにクエリーを実行することでリクエストを解決する、Name Service Switch Multicast DNS プラグイン (nss-mdns) を提供しません。そのため、RHEL では、mDNS を使用したローカルドライバーレスプリンターの自動検出とインストールは利用できません。この問題を回避するには、1 台のプリンターを手動でインストールするか、cups-browsed を使用してリモートプリントサーバーで使用可能な多数の印刷キューを自動的にインストールします。

前提条件

手順

  • CUPS にプリンターを追加します。

    • ドライバーレスサポートを使用してプリンターを追加するには、次のように入力します。

      # lpadmin -p Demo-printer -E -v ipp://192.0.2.200/ipp/print -m everywhere

      お使いのプリンターで -m everything オプションが機能しない場合は、-m driverless:<uri> を試してください (例: -m driverless:ipp://192.0.2.200/ipp/print)。

    • ドライバーレスサポートを使用してリモートプリントサーバーのキューを追加するには、次のように入力します。

      # lpadmin -p Demo-printer -E -v ipp://192.0.2.201/printers/example-queue -m everywhere

      お使いのプリンターで -m everything オプションが機能しない場合は、-m driverless:<uri> を試してください (例: -m driverless:ipp://192.0.2.200/printers/example-queue)。

    • ファイル内のドライバーを使用してプリンターを追加するには、次のように入力します。

      # lpadmin -p Demo-printer -E -v socket://192.0.2.200/ -P /root/example.ppd
    • ファイル内のドライバーを使用してリモートプリントサーバーのキューを追加するには、次のように入力します。

      # lpadmin -p Demo-printer -E -v ipp://192.0.2.201/printers/example-queue -P /root/example.ppd
    • ローカルドライバーデータベース内のドライバーを使用してプリンターを追加するには、次の手順を実行します。

      1. データベース内のドライバーをリスト表示します。

        # lpinfo -m
        ...
        drv:///sample.drv/generpcl.ppd Generic PCL Laser Printer
        ...
      2. データベース内のドライバーへの URI を使用してプリンターを追加します。

        # lpadmin -p Demo-printer -E -v socket://192.0.2.200/ -m drv:///sample.drv/generpcl.ppd

    これらのコマンドでは、次のオプションを使用します。

    • -p <printer_name>: CUPS 内のプリンターの名前を設定します。
    • -E: プリンターを有効にします。CUPS はそのプリンターのジョブを受け付けます。このオプションは -p の後に指定する必要があることに注意してください。詳細は、man ページのオプションの説明を参照してください。
    • -v <uri>: プリンターまたはリモートプリントサーバーキューへの URI を設定します。
    • -m <driver_uri>: ローカルドライバーデータベースから取得した指定のドライバー URI に基づいて PPD ファイルを設定します。
    • -P <PPD_file>: PPD ファイルへのパスを設定します。

検証

  1. 使用可能なプリンターを表示します。

    # lpstat -p
    printer Demo-printer is idle. enabled since Fri 23 Jun 2023 09:36:40 AM CEST
  2. テストページを印刷します。

    # lp -d Demo-printer /usr/share/cups/data/default-testpage.pdf

第8章 Web インターフェイスを使用した CUPS プリンターのメンテナンスおよび管理タスクの実行

プリンター管理者は、場合によってはプリントサーバー上でさまざまなタスクを実行する必要があります。以下に例を示します。

  • 技術者がプリンターを修理している間のプリンターの一時停止などのメンテナンスタスク
  • プリンターのデフォルト設定の変更などの管理タスク

これらのタスクは、CUPS の Web インターフェイスを使用して実行できます。

前提条件

手順

  1. ブラウザーを使用して、https://<hostname>:631/printers/ にアクセスします。

    Web インターフェイスには HTTPS プロトコルを使用して接続する必要があります。使用しないと、セキュリティー上の理由から、CUPS が後のステップで認証できなくなります。

  2. 設定するプリンターの名前をクリックします。
  3. メンテナンスタスクを実行するか管理タスクを実行するかに応じて、対応するリストから必要なアクションを選択します。

    CUPS のプリンターのアクション
  4. ユーザーがまだ認証されていない場合、CUPS は管理ユーザーの認証情報の入力を求めます。許可されたユーザーのユーザー名とパスワードを入力します。
  5. タスクを実行します。

第9章 Samba を使用した Kerberos 認証による Windows プリントサーバーへの印刷

samba-krb5-printing ラッパーを使用すると、Red Hat Enterprise Linux (RHEL) にログインした Active Directory (AD) ユーザーは、Kerberos を使用して Active Directory (AD) に対して認証して、Windows プリントサーバーに印刷ジョブを転送するローカルの CUPS プリントサーバーに印刷を出力できます。

この設定の利点は、RHEL 上の CUPS の管理者が、設定で固定ユーザー名およびパスワードを保存する必要がないことです。CUPS は、印刷ジョブを送信するユーザーの Kerberos チケットで AD に対して認証します。

注記

Red Hat は、ローカルシステムから CUPS への印刷ジョブの送信のみをサポートしています。Samba プリントサーバー上のプリンターの再共有はサポートしていません。

前提条件

  • ローカルの CUPS インスタンスに追加するプリンターが、AD プリントサーバーで共有されている。
  • AD のメンバーとして RHEL ホストに参加している。
  • CUPS が RHEL にインストールされており、cups サービスが実行されている。
  • プリンターの PostScript Printer description (PPD) ファイルが /usr/share/cups/model/ ディレクトリーに保存されている。

手順

  1. samba-krb5-printingsamba-client、および krb5-workstation パッケージをインストールします。

    # dnf install samba-krb5-printing samba-client krb5-workstation
  2. 必要に応じて、ドメイン管理者として認証を行い、Windows プリントサーバーで共有されるプリンターの一覧を表示します。

    # smbclient -L win_print_srv.ad.example.com -U administrator@AD_KERBEROS_REALM --use-kerberos=required
    
    	Sharename       Type      Comment
    	---------       ----      -------
    	...
    	Example         Printer   Example
    	...
  3. 必要に応じて、CUPS モデルのリストを表示して、プリンターの PPD 名を指定します。

    lpinfo -m
    ...
    samsung.ppd Samsung M267x 287x Series PXL
    ...

    次のステップでプリンターを追加する場合は、PPD ファイルの名前が必要です。

  4. CUPS にプリンターを追加します。

    # lpadmin -p "example_printer" -v smb://win_print_srv.ad.example.com/Example -m samsung.ppd -o auth-info-required=negotiate -E

    このコマンドでは次のオプションを使用します。

    • -p printer_name は、CUPS にプリンターの名前を設定します。
    • -v URI_to_Windows_printer は、Windows プリンターに URI を設定します。smb://host_name/printer_share_name という形式を使用します。
    • -m PPD_file は、プリンターが使用する PPD ファイルを設定します。
    • -o auth-info-required=negotiate は、印刷ジョブをリモートサーバーに転送する際に CUPS が Kerberos 認証を使用するように設定します。
    • -E はプリンターを有効にします。CUPS はそのプリンターのジョブを受け付けます。

検証

  1. AD ドメインユーザーとして RHEL ホストにログインします。
  2. AD ドメインユーザーとして認証します。

    # kinit domain_user_name@AD_KERBEROS_REALM
  3. ローカルの CUPS プリントサーバーに追加したプリンターにファイルを出力します。

    # lp -d example_printer file

第10章 cups-browsed を使用してリモートプリントサーバーのプリンターをローカルに統合する

cups-browsed サービスは、DNS サービス検出 (DNS-SD) と CUPS ブラウジングを使用して、共有リモートプリンターのすべて、またはフィルタリング後のサブセットを、ローカルの CUPS サービスで自動的に利用できるようにします。

たとえば、管理者はワークステーションでこの機能を使用して、信頼できるプリントサーバーのプリンターのみをアプリケーションの印刷ダイアログで使用できるようにすることができます。プリントサーバーが多数のプリンターを共有している場合、リストに表示されるプリンターの数を減らすために、参照するプリンターを特定の条件でフィルタリングするように cup-browsed を設定することもできます。

注記

アプリケーションの印刷ダイアログが DNS-SD などの他のメカニズムを使用してリモートプリンターのリストを表示している場合、cups-browsed は影響を及ぼしません。また、cups-browsed サービスは、ユーザーがリストにないプリンターに手動でアクセスすることを妨げるものではありません。

前提条件

  • CUPS サービスがローカルホストで設定されている
  • リモート CUPS プリントサーバーが存在する。このサーバーには次の条件が適用されます。

    • サーバーが、クライアントからアクセス可能なインターフェイスでリッスンしている。
    • /etc/cups/cups.conf ファイル内のサーバーの <Location /> ディレクティブにある Allow from パラメーターにより、クライアントの IP アドレスからのアクセスが許可されている。
    • サーバーがプリンターを共有している。
    • ファイアウォールルールにより、クライアントからサーバーの CUPS ポートへのアクセスが許可されている。

手順

  1. /etc/cups/cups-browsed.conf ファイルを編集し、次の変更を加えます。

    1. ポーリングするリモート CUPS サーバーごとに BrowsePoll パラメーターを追加します。

      BrowsePoll remote_cups_server.example.com
      BrowsePoll 192.0.2.100:1631

      リモート CUPS サーバーが 631 とは異なるポートでリッスンする場合は、ホスト名または IP アドレスに <port> を追加します。

    2. オプション: フィルターを設定して、ローカル CUPS サービスに表示されるプリンターを制限します。たとえば、名前に sales_ が含まれるキューをフィルタリングするには、次のパラメーターを追加します。

      BrowseFilter name sales_

      さまざまなフィールド名でフィルタリングしたり、フィルターを無効にしたり、正確な値を照合したりできます。詳細は、cups-browsed.conf(5) マニュアルページのパラメーターの説明と例を参照してください。

    3. オプション: ポーリング間隔とタイムアウトを変更して、参照サイクルの数を制限します。

      BrowseInterval 1200
      BrowseTimeout 6000

      プリンターが参照リストから消えるのを避けるために、BrowseIntervalBrowseTimeout の両方を同じ比率で増やしてください。つまり、BrowseInterval の値を 5 以上の整数で乗算し、その計算結果の値を BrowseTimeout に使用します。

      デフォルトでは、cups-browsed は 60 秒ごとにリモートサーバーをポーリングし、タイムアウトは 300 秒です。ただし、キューの数が多いプリントサーバーでこれらのデフォルト値を使用すると、大量のリソースが消費される可能性があります。

  2. cups-browsed サービスを有効にして起動します。

    # systemctl enable --now cups-browsed

検証

  • 使用可能なプリンターをリスト表示します。

    # lpstat -v
    device for Demo-printer: implicitclass://Demo-printer/
    ...

    プリンターの出力に implicitclass が含まれていれば、cups-browsed が CUPS でプリンターを管理しています。

関連情報

  • cups-browsed.conf(5) man ページ

第11章 systemd ジャーナルの CUPS ログへのアクセス

デフォルトでは、CUPS はログメッセージを systemd ジャーナルに保存します。これには、以下のものが含まれます。

  • エラーメッセージ
  • アクセスログエントリー
  • ページログエントリー

手順

  • ログエントリーを表示します。

    • すべてのログエントリーを表示するには、次のように入力します。

      # journalctl -u cups
    • 特定の印刷ジョブのログエントリーを表示するには、次のように入力します。

      # journalctl -u cups JID=<print_job_id>
    • 特定の期間内のログエントリーを表示するには、次のように入力します。

      # journalectl -u cups --since=<YYYY-MM-DD> --until=<YYYY-MM-DD>

      YYYY は年に、MM は月に、DD は日に置き換えます。

関連情報

  • journalctl(1) の man ページ

第12章 systemd ジャーナルではなくファイルにログを保存するように CUPS を設定する

デフォルトでは、CUPS はログメッセージを systemd ジャーナルに保存します。ログメッセージをファイルに保存するように CUPS を設定することもできます。

手順

  1. /etc/cups/cups-files.conf ファイルを編集し、AccessLogErrorLog、および PageLog パラメーターを、これらのログファイルを保存するパスに設定します。

    AccessLog /var/log/cups/access_log
    ErrorLog /var/log/cups/error_log
    PageLog /var/log/cups/page_log
  2. /var/log/cups/ 以外のディレクトリーにログを保存するように CUPS を設定する場合は、このディレクトリーに cupd_log_t SELinux コンテキストを設定します。たとえば、次のように設定します。

    # semanage fcontext -a -t cupsd_log_t "/var/log/printing(/.*)?"
    # restorecon -Rv /var/log/printing/
  3. cups サービスを再起動します。

    # systemctl restart cups

検証

  1. ログファイルを表示します。

    # cat /var/log/cups/access_log
    # cat /var/log/cups/error_log
    # cat /var/log/cups/page_log
  2. /var/log/cups/ 以外のディレクトリーにログを保存するように CUPS を設定した場合は、ログディレクトリーの SELinux コンテキストが cupd_log_t であることを確認します。

    # ls -ldZ /var/log/printing/
    drwxr-xr-x. 2 lp sys unconfined_u:object_r:cupsd_log_t:s0 6 Jun 20 15:55 /var/log/printing/

第13章 CUPS ドキュメントへのアクセス

CUPS では、CUPS サーバーにインストールされているサービスのドキュメントにブラウザーからアクセスできます。このドキュメントには次のものが含まれます。

  • コマンドラインによるプリンターの管理やアカウンティングなどに関する管理ドキュメント
  • man ページ
  • 管理 API などのプログラミングドキュメント
  • 参考資料
  • Specifications

前提条件

手順

  1. ブラウザーを使用して、http://<hostname_or_ip_address>:631/help/ にアクセスします。

    CUPS のヘルプ
  2. Online Help Documents のエントリーを展開し、参照するドキュメントを選択します。

法律上の通知

Copyright © 2024 Red Hat, Inc.
The text of and illustrations in this document are licensed by Red Hat under a Creative Commons Attribution–Share Alike 3.0 Unported license ("CC-BY-SA"). An explanation of CC-BY-SA is available at http://creativecommons.org/licenses/by-sa/3.0/. In accordance with CC-BY-SA, if you distribute this document or an adaptation of it, you must provide the URL for the original version.
Red Hat, as the licensor of this document, waives the right to enforce, and agrees not to assert, Section 4d of CC-BY-SA to the fullest extent permitted by applicable law.
Red Hat, Red Hat Enterprise Linux, the Shadowman logo, the Red Hat logo, JBoss, OpenShift, Fedora, the Infinity logo, and RHCE are trademarks of Red Hat, Inc., registered in the United States and other countries.
Linux® is the registered trademark of Linus Torvalds in the United States and other countries.
Java® is a registered trademark of Oracle and/or its affiliates.
XFS® is a trademark of Silicon Graphics International Corp. or its subsidiaries in the United States and/or other countries.
MySQL® is a registered trademark of MySQL AB in the United States, the European Union and other countries.
Node.js® is an official trademark of Joyent. Red Hat is not formally related to or endorsed by the official Joyent Node.js open source or commercial project.
The OpenStack® Word Mark and OpenStack logo are either registered trademarks/service marks or trademarks/service marks of the OpenStack Foundation, in the United States and other countries and are used with the OpenStack Foundation's permission. We are not affiliated with, endorsed or sponsored by the OpenStack Foundation, or the OpenStack community.
All other trademarks are the property of their respective owners.