異なるオペレーティングシステムを使用するネットワークでドメイン認証を使用する場合と使用しない場合のCUPSプリントサーバーのゼロからのセットアップ

異なるオペレーティングシステムを使用するネットワークでドメイン認証を使用する場合と使用しない場合のCUPSプリントサーバーのゼロからのセットアップ



エントリー



だから。 おそらく、CUPS印刷サービスは、企業内で一元的なプリンター管理を組織できる強力なソリューションです。 ですから、セットアッププロセス中に、特に標準のセットアップマニュアルを超えるニーズがある場合は、Googleの多くの小さな明白でない問題の解決策を探すために時間を費やす必要があります。







この記事では、稼働中のActive Directoryドメインを持つネットワーク上のUbuntuサーバーへのCUPSプリントサーバーのインストールについて説明しますが、その存在は完全にオプションであり、相互作用のセットアップ、セットアップ、および相互作用するLinuxおよびWindowsクライアントマシンのセットアップの手順を安全にスキップできますこのプリントサーバー。







手順では、ドメインはexample.comという名前になり、プリントサーバー自体はIPアドレス10.10.100.50のcupsservercupsserver.example.com )になります。クライアントマシンlinux1linux2linux3など、クライアントマシンLinuxおよびwindows1windows2windows3およびなど それぞれWindowsクライアントマシン用。







プリントサーバーのセットアップ



まず、プリントサーバーを構成します。または、プリントサーバーへの管理アクセスを構成してから、その上で印刷を構成し、クライアントマシンの構成について説明します。







便利な方法でプリントサーバーにアクセスし、そのパッケージを更新します。







root@cupsserver:~# apt update && apt uprgrade -y
      
      





次に、CUPSがサーバーにインストールされているかどうかを確認します。







 root@cupsserver:~# which cupsd
      
      





出力が次のような場合:







 /usr/bin/cupsd
      
      





次にCUPSがインストールされます。出力がない場合は、CUPSをインストールします。







 root@cupsserver:~# apt install cups -y
      
      





次に、CUPS Webインターフェースへの管理アクセスを設定します。 すべての構成ファイルは、パス/ etc / cups /にあります。 まず、念のため、メインのCUPS構成ファイルをバックアップします。







 root@cupsserver:~# cp /etc/cups/cupsd.conf /etc/cups/cupsd.conf.original root@cupsserver:~# cp /etc/cups/cups-files.conf /etc/cups/cups-files.conf.original root@cupsserver:~# cp /etc/cups/cups-browsed.conf /etc/cups/cups-browsed.conf.original
      
      





ただし、これを行わなかった場合-デフォルトでは、これらのファイルのサンプルはパス/ usr / share / cupsにあります。 次のコマンドを使用して、CUPS構成ファイルに追加されたオプションを確認できることにも言及してください。







 root@cupsserver:~# cupsd -t
      
      





何かを台無しにしたり、封印したり、CUPSでサポートされなくなったオプションを使用した場合、コマンドの出力にはこれらのエラーが反映されます。







しかし最後に、セットアップに取りかかりましょう。 / etc / cups /フォルダー内のファイルを変更したら、CUPSサービスを再起動して効果を得る必要があります。







 root@cupsserver:~# service cups restart  root@cupsserver:~# systemctl restart cups  root@cupsserver:~# /etc/init.d/cups restart
      
      





また、ファイル/etc/cups/cups-browsed.confを編集した場合、別のcups- browsedサービスがこのファイルを処理しますが、これも再起動する必要があります。







 root@cupsserver:~# service cups-browsed restart  root@cupsserver:~# systemctl restart cups-browsed  root@cupsserver:~# /etc/init.d/cups-browsed restart
      
      





コマンドを実行する







 root@cupsserver:~# nano /etc/cups/cupsd.conf
      
      





最初の非コメント化オプションは







 LogLevel warn
      
      





CUPSログの最小限の情報内容を決定します。 CUPSログファイルは/ var / log / cups /にあります。 プリントサーバーのインストール、設定、およびデバッグ時に、ログをデバッグモードにするのが賢明です。 これを行うには、warnをdebug2に変更します。







 LogLevel debug2
      
      





デフォルトでは、CUPSはlocalhostからの着信接続、つまりループバックインターフェイスのみをリッスンします。 これを確認するには、次のコマンドを実行できます







 root@cupsserver:~# netstat -plutn
      
      





行の1つは次のようになります。







 tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN 737/cupsd
      
      





さらなる行動は、あなたの妄想の程度に依存します。 ブロックに追加できます。このブロックは、条件付きでコメント#Onlyで始まり、ローカルマシンからの接続をリッスンします。CUPSが接続をリッスンできるIPアドレスまたはサブネットを持つ複数の行をリッスンします。







 # Only listen for connections from the local machine. Listen localhost:631 Listen /run/cups/cups.sock #    IP  Listen 10.10.100.67:631 #     Listen 172.16.0.0:631
      
      





または、CUPSがすべてのアドレスからの接続をリッスンできるようにすることができます







 # Only listen for connections from the local machine. Listen /run/cups/cups.sock Port 631
      
      





設定の次のポイントは、ネットワークおよび共有プリンターの検出です。







 # Show shared printers on the local network. Browsing Off BrowseLocalProtocols dnssd
      
      





私の意見では、このオプションは、プリントサーバーに接続されているプリンタに関するブロードキャスト情報をネットワーク経由で送信するかどうかを決定するため、オフのままにしておく必要があります。 しかし、彼らはすべてそれに接続されます。 それに応じて、すべてのクライアントマシンにすべてのプリンターがすぐに表示されます。 プリントサーバーは、ネットワーク上のすべてのプリンターを検索および検出する必要がありますが、ネットワーク全体に無造作に送信しないでください。







認証設定は次のとおりです。







 # Default authentication type, when authentication is required... DefaultAuthType Basic
      
      





CUPS Webインターフェースとその管理部分へのアクセス権を定義します。 ユーザーuserに CUPSを管理する権利を付与するには、 lpadminシステムグループに追加する必要があります。







 root@cupsserver:~# usermod -a -G lpadmin user
      
      





一般に、CUPSへの管理アクセスが許可されるグループは、ブロック内の設定ファイルcups-files.confで定義されます







 # Administrator user group, used to match @SYSTEM in cupsd.conf policy rules... # This cannot contain the Group value for security reasons... SystemGroup lpadmin
      
      





printadminsなどのプリントサーバーを管理する権限をLinuxユーザーの特定のグループに追加する場合は、 lpadminにスペースを入れて追加します 。 グループがドメインの場合、それはもう少し複雑であり、後で説明します。







次に、 <Location />ブロックに進みましょう。







 # Restrict access to the server... <Location /> Order allow,deny </Location>
      
      





許可、拒否は、許可が特に示されていない限り、どこからの接続も禁止されることを意味します。 つまり、IPアドレス、サブネット、ホスト、またはホストをマスク( .example.com )で「 Allow from [allowed address] *」 の形式で追加する必要があります。







 # Restrict access to the server... <Location /> Order allow,deny Allow from cupsserver #         Allow from cupsserver.example.com #       FQDN Allow from localhost #       loopback  Allow from 10.10.100.* #    Allow from linux4.example.com #     Allow from 172.168.5.125 #  , IP   </Location>
      
      





完全な信頼とデバッグのために、他のすべてを設定するまで、どこからでも印刷できるような設計のままにしておくことができます。







 # Restrict access to the server... <Location /> Order allow,deny Allow from all </Location>
      
      





プリントサーバーでCUPSへの管理アクセスを設定しましょう。 CUPSから接続するIPやサブネットを決定し、それらを<Location />ブロックと同様に追加します。







 # Restrict access to the admin pages... <Location /admin> Order allow,deny Allow from localhost Allow from 10.10.100.* Allow from admin.example.com </Location> # Restrict access to configuration files... <Location /admin/conf> Order allow,deny Allow from localhost Allow from 10.10.100.* Allow from admin.example.com </Location> # Restrict access to log files... <Location /admin/log> Order allow,deny Allow from localhost Allow from 10.10.100.* Allow from admin.example.com </Location>
      
      





また、必要に応じて、デフォルトのインターフェース言語を追加できます。 使用可能な言語のリストは、次のコマンドを使用して表示できます。







 root@cupsserver:~# ls /usr/share/cups/locale
      
      





必要なローカライズ( ruなど)の場合、 /etc / cups / cupsd.confに行を追加します







 DefaultLanguage ru
      
      





ホスト(ホスト名) からプリントサーバーcupsserver.example.comにアクセスするには、 / etc / cups /フォルダーに次の内容のclient.confファイルを作成する必要があります。







 ServerName _
      
      





最も簡単な方法では、これは次のように実行できます。







 root@cupsserver:/etc/cups# echo "ServerName $(cat /etc/hostname)" > /etc/cups/client.conf
      
      





ネットワーク内にDNSサーバーがあると想定しているため、ドメイン名( cupsserver.example.com )でプリントサーバーにアクセスできることが望ましいでしょう。 サーバーには、DNSサーバー上のprintcupsなどのCNAMEエイリアスを割り当てることもできます。 プリントサーバーがそのような呼び出しで接続を受け入れるようにするには、 / etc / cups / cupsd.confファイルに次の行を追加する必要があります。







 ServerAlias cupsserver.example.com print cups
      
      





プリントサーバーが呼び出しを受け入れるようにする場合、またはわずらわしたくない場合は、これを追加できます。







 ServerAlias *
      
      





また、 / etc / cups / cups-browsed.confファイルを確認する必要があります。 このファイルは、プリントサーバーがネットワーク上のプリンターを検索し、そのプリンターをブロードキャストする方法を制御します。 ニュースレターオプションを完全に無効にすることをお勧めします。 プリントサーバーはネットワーク上のプリンターを検索しますが、プリンターからクライアントマシンへは手動で接続されます。 以下にその理由を説明します。 それまでの間、 BrowseRemoteProtocols dnssd cupsという行を見つけます。







 # Which protocols will we use to discover printers on the network? # Can use DNSSD and/or CUPS and/or LDAP, or 'none' for neither. BrowseRemoteProtocols dnssd cups
      
      





このオプションにより、プリントサーバーはネットワーク上の共有プリンターを検索します。 プリントサーバーがネットワーク上のプリンターを検索することが私たちの利益であるため、オンのままにします。 しかし、接続されているすべてのプリンターを送信するためにプリントサーバーは絶対に必要ありません。そうしないと、多くの混乱が生じます。 このシナリオを回避するには、次の#BrowseLocalProtocols noneオプションを見つけてコメント解除します。







 # Which protocols will we use to broadcast shared local printers to the network? # Can use DNSSD and/or CUPS, or 'none' for neither. # Only CUPS is actually supported, as DNSSD is done by CUPS itself (we ignore DNSSD in this directive). BrowseLocalProtocols none
      
      





これで、プリントサーバーの構成を中断し、WindowsおよびLinuxのクライアントマシンの構成に進みます。 それらの要件は次のとおりです。印刷ジョブをプリントサーバーに送信できるようにし、ネットワークプリンターに印刷する必要がある場合にのみ(および)プリントサーバーに印刷ジョブを送信します。







例として、それぞれLinux(ホスト名linux1 )とWindows 8(ホスト名windows1 )を持つ2台のクライアントマシン間のプリントサーバーを介した印刷を設定します。 まず、 windows1をプリントサーバーからのプリントレシーバーとして設定します。 Canon i-SENSYS MF4410プリンターが接続され、正常に動作しています。 プリンター名はCanon-MF4400です。 実際、 windows1のプリントサーバーからの印刷を保証する最も簡単な方法は、 [コントロールパネル]> [プログラム]> [プログラムと機能]> [Windowsの機能の 有効化 または無効化]に移動することです。 そこで、Print and Document Services> LPD Print Serviceコンポーネントをオンにます。 これにより、 lpd:// windows1 / Canon-MF4400 addressを使用してこのプリンターをプリントサーバーに接続できます。 もちろん、問題は成熟しています。SMBを使用して接続してみませんか。 誰も禁止していません。 この方法をデバッグした場合は、この方法でプリンターを共有し、SMBプロトコルを使用してプリンターをプリントサーバーに接続できます。 私の意見では、この接続の手順はこの記事の範囲外であり、すでにかなり膨大です。 それまでの間、読者はhttp://cupsserver:631/admin



のアドレスに正常にhttp://cupsserver:631/admin



し、「新しいプリンターの追加」ボタンをクリックし、直感、ロジック、および先に読んだマニュアルに従ってLPD経由でプリンターをcupsserverに正常に接続したと考えています[例。 com]およびプリンタページはhttp://cupsserver:631/printers/Canon-MF4400



利用できます。







ここで、ホスト名がlinux1の Linuxクライアントマシンで同様の操作を実行します。 一般に、クライアントマシンには独自のCUPSサービスがあり、印刷の整理における従属的な役割を除いて、プリントサーバーとほぼ同じ方法で構成する必要があるため、この部分ははるかに大きくなります。







ホスト名によるループバックを介したCUPSへのアクセスエラーの修正



不快な瞬間があります。 linux1をドメインに入力し、これらの指示に従ってCUPSを構成すると、外部からlinux1 WEBインターフェイスにアクセスできるが、ホスト自体でこれを実行できないという不条理な状況に気付くかもしれません! また、Linux Mintのsystem-config-printerアプリケーションなど、ローカルでプリンターを構成するためのグラフィカルアプリケーションは動作しません 。 アドレスhttp://linux1:631/



で独自のCUPSに接続しようとすると、「Forbidden」または「Bad Request」というメッセージが表示されます。 これはよく知られた問題であり、多くのインターネットフォーラムで実際に解決されていない問題です。







Linuxをドメインに導入する際のほとんどの手順では、ポイントの1つは/ etc / hostsファイルを次のようにすることです。







 127.0.0.1 localhost 127.0.1.1 linux1.example.com linux1 # The following lines are desirable for IPv6 capable hosts ::1 ip6-localhost ip6-loopback fe02::2 ip6-localnet ff00::0 ip6-mcastprefix ff02::1 ip6-allnodes ff02::2 ip6-allrouters
      
      





何らかの理由で、CUPSは127.0.1.1を介して、つまりループバックインターフェイスを介して、ホスト名にコールを関連付けることができません。







このエラーは2つの方法で修正されます。 ネットワークIPアドレスが静的な場合は、 / etc / hostsファイルで、クライアントマシンの外部ネットワークインターフェイスのIPアドレスを127.0.1.1 修正します。次に例を示します。







 127.0.0.1 localhost 192.168.1.50 linux1.example.com linux1
      
      





または、Linuxをドメインに導入しているため、DHCPとActive Directory DNSサーバーがネットワーク上で実行されていると想定しています。 この場合、次の行をコメントアウトしてください。







 127.0.0.1 localhost # 127.0.1.1 linux1.example.com linux1
      
      





これまでのところ、このアクションとパフォーマンスや問題の違いは検出されていません。







LinuxクライアントマシンでのCUPS接続リスニングアドレスの構成



便利な方法でlinux1にアクセスします。 ファイル/etc/cups/cupsd.confの編集:







 user@linux1:~$ sudo nano /etc/cups/cupsd.conf
      
      





その中の行を見つけ、追加または変更します。







 DefaultLanguage ru #      /usr/share/cups/locale ServerAlias linux1.example.com linux1 [CNAME    DNS ]  ServerAlias * #      Listen /run/cups/cups.sock Listen localhost:631 #  localhost Listen 10.10.100.50:631 # IP   . Listen cupsserver:631 #   .    IP  ,    Listen linux1:631 #  Port 631 #       Listen /run/cups/cups.sock Browsing off # .       DefaultAuthType Basic #  .     Kerberos,     
      
      





CUPS接続リスニングアドレスの設定



前のブロックでは、CUPSに接続する機能を構成しました。 次に、印刷の許可の設定と、 linux1ホスト上のCUPSサービスの管理ページに進みます。 /etc/cups/cupsd.confファイルを閉じた場合は再度開き<Location /><Location / admin><Location / admin / conf><Location / admin / log>ブロックの編集に進みます。







 # Restrict access to the server... <Location /> Order allow,deny #    "  ,  " Allow from localhost #    linux1 Allow from linux1 #     .      Allow from cupsserver #  CUPS    DNS,  . ,     Allow from cupsserver.example.com # FQDN  Allow from 10.10.100.50 #     IP  **cupsserver** </Location> # Restrict access to the admin pages... <Location /admin> Order allow,deny #   Allow from localhost #      Allow from linux1 #   Allow from 10.10.101.71 # ,  IP  Allow from 10.20.50.* # ,    IT  AuthType Default #   CUPS    .   Require user @SYSTEM #     CUPS </Location> # Restrict access to configuration files... <Location /admin/conf> #   Order allow,deny #   Allow from localhost #      Allow from linux1 #   Allow from 10.10.101.71 # ,  IP  Allow from 10.20.50.* # ,    IT  AuthType Default #   CUPS    .   Require user @SYSTEM #     CUPS </Location> # Restrict access to log files... <Location /admin/log> #   Order allow,deny #   Allow from localhost #      Allow from linux1 #   Allow from 10.10.101.71 # ,  IP  Allow from 10.20.50.* # ,    IT  AuthType Default #   CUPS    .   Require user @SYSTEM #     CUPS </Location>
      
      





ネットワークプリンターの配布とブロードキャストの構成



Linuxクライアントマシン(この場合はlinux1 )でも、 / etc / cups / cups-browsed.confファイルを編集する必要があります。







 user@linux1:~$ sudo nano /etc/cups/cups-browsed.conf BrowseRemoteProtocols none #  none      . BrowseLocalProtocols cups #     . DNSSD   ,    cupsd.conf BrowseOrder Allow,Deny #   Order  cupsd.conf -   ,        BrowseAllow 10.10.100.50 # IP  BrowseAllow cupsserver #    BrowseAllow cupsserver.example.com #    
      
      





管理アクセスを構成する



プリントサーバーと任意のLinuxクライアントマシンの両方のCUPS WEBインターフェイスでの管理アクセスについてのほんの一言。 30〜50台のコンピューターを使用している場合でも、CUPSで認証を統合する必要があります。各マシンのパスワードをどこでも覚えておく必要はありません。 また、これはすべてのLinuxマシンで重要です。サーバーにプリンターを追加するには、最初にローカルにインストールする必要があるためです。 いくつかの方法があります。







最初の方法は、各Linuxシステムでprinteradminユーザーを作成し(たとえば)、 lpadminをグループに追加することです。







 user@linux1:~$ sudo usermod -a -G lpamin printeradmin
      
      





http://_:631/admin



に資格情報を使用してログインします。







2番目のオプションはほとんど同じであり、システムにグループ( printersadminsなど)を作成し 、そこに必要なCUPS管理者( printeradminuser )を追加することを提案ます







 user@linux1:~$ sudo groupadd printersadmins user@linux1:~$ sudo usermod -a -G printersadmins printeradmin user@linux1:~$ sudo usermod -a -G printersadmins user
      
      





次に、 / etc / cups / cups-files.confファイルで行を見つける必要があります







 # Administrator user group, used to match @SYSTEM in cupsd.conf policy rules... # This cannot contain the Group value for security reasons... SystemGroup lpadmin
      
      





スペースを介してCUPSを管理する権限を持つ1つ以上のユーザーグループを追加します。







 # Administrator user group, used to match @SYSTEM in cupsd.conf policy rules... # This cannot contain the Group value for security reasons... SystemGroup lpadmin printersadmins somegroup
      
      





そして最後に、3番目のオプション。 プリントサーバーとクライアントマシンのCUPSの管理者をユーザーのドメイングループにします。 これを行うには、プリントサーバーとLinuxクライアントマシンをADドメインに参加させる必要があります。 LinuxをWindowsドメインに接続する方法はいくつかありますが、私が知る限り、主な方法はwinbindとSSSD(realmd)を使用して接続することです。 これらのメソッドの説明はこの記事には含まれていないため、CUPSに特に関連する点のみに焦点を当てます。







CUPS管理のためのドメインユーザーグループの使用の構成



Linuxの中央認証システムに参加する各方法は、アプリケーションがドメインユーザーのリストを表示できる特別な「パイプ」ファイルを作成します。 CUPSがこれを実行できるように、AppArmorでパイプを使用してユーザーを認証できるようにする必要があります。 AppArmorは、アクセス制御のためのLinuxセキュリティモジュールです。 特定のプログラムを、そのポリシーにリストされているファイルのセットに制限します。 winbinddを介してCUPSにユーザーとドメイングループを使用する権利を追加するには、 / etc / apparmod.d / local / usr.sbin.cupsdファイルに次の行を追加します。







 /var/lib/samba/winbindd_privileged/pipe rw
      
      





LinuxがSSSDを介してドメインに入力される場合、パイプの場所を/etc/apparmod.d/local/usr.sbin.cupsdで指定し、そこに行を追加する必要があります。







 /var/lib/sss/pipes/private/pam rw
      
      





さらに、SSSDの場合、これにより認証(ログインしているユーザーを見つける)が許可されますが、認証(ユーザーがCUPSを管理する権利を持っているかどうかを調べる)するには、 SSSD構成ファイル/etc/sssd/sssd.confに行を追加する必要もあります:







 ad_gpo_map_interactive = +cups
      
      





これは、条件付きで言えば、CUPSにSSSDを「見る」権利を与えます。







さらに、CUPSはSSSDサービスに依存するようになったため、SSSDの後に開始する必要があることをCUPSに伝える必要があります。そうしないと、CUPSがオンになったときにオフになり、毎回手動でオンにする必要があります。







SSSDの後にブートするように、CUPSに指示を追加します。 パス/ lib / systemd / system /に沿ってcups.serviceサービスファイルを編集し、 [Unit]セクションにAfterステートメントを追加します。







 [Unit] Description=CUPS Scheduler Documentation=man:cupsd(8) After=sssd.service
      
      





したがって、CUPSは、ドメインを介した基本認証、つまり、CUPS管理特権を持つドメインユーザーのログインとパスワードを入力することによる認証のために構成されます。







承認は別の方法で構成できますが、原則(パイプファイル)は一般的に普遍的であり、類推によってLDAP、FreeIPAおよびその他のディレクトリサービス用に構成する機会があります。







Linuxでのプリンターのインストール



Linuxにプリンターをインストールすることは、特定のタスクであることが多く、ブランドやモデルによっても異なります。 したがって、プリンターのインストールについて説明する理由はなく、 linux1ホスト Kyocera-1024FPという名前のKyocera-1024FPプリンターがインストールされており、プリンターページはhttp://linux1:631/printers/Kyocera-1024FP



利用できるとhttp://linux1:631/printers/Kyocera-1024FP



ます。







Linuxサーバーとクライアントマシンが構成され、プリンターがそれらの一部に接続され、印刷するWindowsマシンもあるため、PCのいずれかのプリンターを交換する必要がある場合でも、このシステム全体が安定している必要があります、すべてではないにしても、これはすべてのPCの良い半分の再構成を伴うべきではありません。 さらに、ドライバーに関する問題をできるだけ少なくする必要があります。 そしてそれはかなり可能です。







プリンターグループ(クラス)



Canon-MF4400 c windows1 LPD. http://cupsserver:631/printers/Canon-MF4400



. cupsserver http://cupsserver:631/admin



. " " [Add Class]. . "", "", "", . . Canon-MF4400 , "" , printer-windows1 , "" "" , " ".







printer-windows1 Canon-MF4400 . Canon-MF4400http://cupsserver:631/classes/printer-windows1



.







linux1 Kyocera-1024FP. HTTP. " (http)" [Internet Printing Protocol (http)], "Generic", "IPP Everywhere". , linux1Kyocera-1024FP . http://cupsserver:631/printers/Kyocera-1024FP



. printer-windows1 printer-linux1 c Kyocera-1024FP . http://cupsserver:631/classes/printer-linux1



.







Kyocera-1024FP linux1 cupsserver windows1 Windows 8 (!) . " ". http://_c:631/classes/_



. — http://cupsserver:631/classes/printer-linux1



. "Generic", — "MS Publisher Imagesetter". , printer-linux1 http://cupsserver:631



. , Kyocera-1024FP.







Canon-MF4400 windows1 cupsserver linux1 Linux (!) . , Kyocera-1024FP cupsserver . linux1 " (http)", ( Canon-MF4400 ) — http://cupsserver:631/classes/printer-windows1



. "Generic", — "IPP Everywhere". , — printer-windows1 . linux1 http://linux1:631/printers/printer-windows1



, .







, , , , , . — , , , , . , . "IPP Everywhere" "MS Publisher Imagesetter" , .., .







おわりに



, - , . , , , , .








All Articles