Linux の 302 (Mixed Environment) 試験対策: プリント・サービス

OS の混在環境において Samba によるプリント共有の作成と管理を行う

システム管理者のための、LPIC (Linux Professional Institute Certification) の LPI-302 試験に備えるために、プリンターをセットアップして Linux クライアントと Microsoft クライアントの間で共有する方法を学んでください。

Sean A. Walberg, Senior Network Engineer

Photo of Sean WalbergSean Walberg はネットワーク・エンジニアであり、ネットワークについて 2 冊の本も書いています。これまで医療やメディアをはじめ、さまざまな業界に携わってきました。



2011年 11月 25日

この連載について

この連載は Linux システム管理タスクの学習に役立つだけでなく、LPIC-3 (Linux Professional Institute Certification レベル 3) 試験に備えるための教材にもなります。

連載の各記事についての説明とリンクについては、developerWorks の LPIC-3 ロードマップを参照してください。現在進行中のこのロードマップは、LPIC-3 試験の最新の目標 (2010年 11月) を反映しています。完成した記事はその都度ロードマップに追加されていきます。

概要

この記事では、以下の内容について学びます。

  • プリンター共有の作成と構成を行う方法
  • Samba と CUPS (Common UNIX Print System) の連携を設定する方法
  • Windows プリント・ドライバーの管理と、プリント・ドライバーをダウンロードするための設定を行う方法
  • [print$] 共有を構成する方法
  • プリント共有に起因するセキュリティー問題
  • 印刷のアカウンティングのセットアップと管理を行う方法

この記事は、LPIC-3 Specialty「302 Mixed Environment Exam」試験の主題 312 の目標 312.3 の試験対策となります。この目標の重要度は 2 です。

前提条件

この連載記事を最大限に活用するには、Linux の高度な知識と、記事に記載されたコマンドを演習できる実際の Linux システムが必要です。さらに、ファイルおよびプリント・アクセスのテストに使用できる Windows 環境を利用できることも条件となります。


プリンター共有の設定

Samba のプリンター共有を設定するには、ファイル共有を設定する場合とほとんど同じく、セクションを定義し、いくつかのパラメーターを設定し、クライアントを接続します。ただし、印刷が関連してくるため、プリンター共有とファイル共有の設定では、微妙な違いがいくつかあります。リスト 1 は、smb.conf 内でのごく一般的な設定です。

リスト 1. 一般的な印刷の設定
[global]
  load printers = yes
  printing = sysv
[printers]
  comment = Printers
  path = /var/spool/samba
  writable = no
  printable = yes

選択的な LPI-302 試験について

LPIC (Linux Professional Institute Certification) には、さまざまなレベルがあり、レベルが上がるにつれ、より深い知識と経験が必要になってくるという点で、他の多くの認定と似ています。LPI-302 試験は、LPIC レベル階層のレベル 3 に位置する選択的な Specialty 認定試験であり、Linux システム管理に関する高度な知識が求められます。

LPIC レベル 3 (LPIC-3) 認定を取得するには、2 つのレベル 1 試験 (101 と 102)、2 つのレベル 2 試験 (201 と 202)、そして LPIC-3 Core Exam (301) に合格しなければなりません。これらの試験に合格した後、LPI-302 などの選択的な Specialty 認定試験を受けることができます。

リスト 1 では、特定のプリンターを 1 つも定義していません。代わりに、Samba にシステム・プリンターのリストをロードするよう指示し、続いて [printers] という名前のテンプレート・セクションを定義しています。以前の記事で、ホーム・ディレクトリーのテンプレートとして [homes] セクションを使用したことを思い出してください。プリンターでこのセクションに相当するのが、[printers] セクションです。

グローバル・レベルでは、まず load printers パラメーターによって Samba に対し、システム・プリンターを検索して見つかったプリンターを共有プリンターとして設定するように指示をしています。次の printing = sysv は、古い SysV 印刷システムを使用することを意味します。今のところはこれで問題ありませんが、後で、これよりも新しい CUPS 印刷システムを使用するように設定する方法を説明します。

[printers] セクションでは、各プリンター共有の内容を定義します。プリンターごとに特殊なオプション (ユーザーの制限など) を指定する必要がない限り、通常はテンプレートを使用するので問題ありません。path は、Samba が使用するパスです。ユーザーが Samba プリンターに印刷する際、smbd はシステムの印刷機能にジョブを送信する前に、この path パラメーターで指定されたディレクトリーにファイルをスプールすることになります。そして、このセクションの最後で、共有が書き込み可能でないこと (writable = no)、そして印刷可能であること (printable = yes) を確実にして、Samba がプリンター共有を適切に使用できるようにします。

このように設定した後、サーバーを閲覧すると、プリンターのリストを確認できるはずです。適切なプリンター・ドライバーが Windows クライアントにインストールされていれば、そのプリンターをインストールして、ネットワークを介して使用できるようになります。


Samba と CUPS の連携

皆さん独自のフィードを作成してください

新しい記事が追加された際、あるいは内容が更新された際に通知を受けられるように、RSS、Atom、または HTML によるカスタム・フィードを作成することができます。それには、developerWorks RSS フィードにアクセスしてください。対象のゾーンとしては「Linux」を選択し、情報の種類としては「記事」を選択して、キーワードには「Linux Professional Institute」と入力します。そして最後にフィードの種類を選択します。

ほとんどの Linux ディストリビューションでは、CUPS が SysV 印刷システムに置き換わっています。SysV 印刷システムよりも柔軟でユーザー・フレンドリーな CUPS は、レガシーの印刷システムとシームレスに連携する互換レイヤーとなります。lp または lpq コマンドを使用しているとしたら、おそらく CUPS を経由しているはずです。

CUPS がレガシーの印刷システムを改良した点の 1 つに印刷ジョブの事前処理があります。例えば、PDF ファイルをプリンターに送信すると、CUPS はそのファイル・フォーマットを理解し、GhostScript のような手段を使って出力を送信し、プリンターが理解できる言語にファイルを変換することができます。かつて、このプロセスを可能にするには相当なハッキングが必要でしたが、今では CUPS がまとめて対応してくれます。

リスト 2 は、CUPS 印刷を使用可能にするために最小限必要となる設定です。

リスト 2. CUPS サポートを使用可能にするt
[global]
printing = cups
printcap = cups

リスト 2 の設定はグローバル・モードで適用されます。最初の printing では、lpr の代わりに CUPS ライブラリーを使用して印刷が行われるように指定しています。そして次の printcap では、Samba に対し、システムの printcap ファイルからではなく、CUPS デーモンからプリンターのリストを取得するように指示をしています。ただし、CUPS を使用するとしても CUPS に非対応のアプリケーションにも対応するために、printcap ファイルはそのまま残されます。

Samba に CUPS を統合した場合でも、印刷キューを管理するには CUPS ツールを使用します。CUPS についてよく知らない場合のために、特に重要なコマンドについて以下で概説しておきます。

  • lp: 出力をプリンターに送信します (通常は、例えば cat /etc/motd | lp のように、このコマンドに他のコマンドによる出力をパイプします)。
  • cupsenable および cupsdisable: それぞれプリンターを起動、停止するコマンドです (この 2 つは、プリンターをリセットする場合にも使えるコマンドです)。
  • cupsreject: プリンターに対するジョブを拒否または受け入れます (このコマンドはプリンターの状態を変更することなく、CUPS に着信ジョブを拒否するように指示します)。
  • lpadmin: プリンターの設定をするために使用することができます。例えばクォータを割り当てるなどです。
  • lpq: 指定されたプリンターのキューに入れられているエントリーを表示します。
  • lprm: ジョブをキャンセルしてプリンターから削除するために使用することができます。

RAW 印刷設定とインテリジェントな印刷設定

通常、プリンターは Adobe PostScript や PCL (Printer Command Language) などのページ記述言語 (PDL: Page Description Language) を理解します。プリンターによっては、ベンダー固有の PDL を使用する場合もあります。アプリケーションの印刷コマンドをプリンターが理解する PDL に変換するのは、Windows のプリンター・ドライバーの役目です。プリンター・ドライバーなしでは、アプリケーションが生成するコマンドが直接テキストとして印刷されることになり、印刷対象とは関係のない文字が大量に出力されてしまいます。

このようにクライアントに印刷対象の文書を処理させ、プリンターに対応するフォーマットにする方法は、RAW 印刷と呼ばれます。このモードの場合、Samba は単にクライアントからのデータをプリンターにコピーするだけに過ぎません。この手法には、以下の 2 つの欠点があります。

  • クライアントにプリンター固有のドライバーがなければ印刷することができません。
  • 例えば印刷されたページ数をログに記録する場合など、Samba がジョブの実行内容を簡単に理解することができません。

以上の欠点はありますが、RAW 印刷は簡単にセットアップすることができます。また、さらに手を加えることで、Samba サーバーからプリンター・ドライバーを配布することも可能です。


Windows クライアントへのドライバーの配布

Samba にプリンター・ドライバーを配布させるのは簡単なことではありません。最善の方法は、汎用の PostScript プリンター・ドライバーをインストールして、これをすべてのプリンターに対して使用することです。クライアントの PostScript は、CUPS のインテリジェントな印刷システムによって、プリンターが理解可能な内容に変換されます。また、この方法をネイティブ・ドライバーの代わりに使用することで、印刷されるページ数を把握できるようにもなります。

この方法を用いるには、CUPS ドライバーをダウンロードする必要があります。最新のドライバー・ファイルは cups-windows-6.0-1.i386.rpm です (「参考文献」のリンクを参照)。このパッケージは、以下のファイルを /usr/share/cups/drivers にインストールします。

  • cups6.inf
  • cups6.ini
  • cupsps6.dll
  • cupsui6.dll

CUPS ドライバーがサポートするのは、Microsoft Windows 2000 以降のクライアントだけです。通常はこれで問題ありませんが、後で使用する Samba ユーティリティーは、レガシーの Microsoft ドライバーを見つけるようにハード・コーディングされており、該当するドライバーが見つからなければ失敗します。お使いのシステムには以下のファイルがあるはずです。これらのファイルを /usr/share/cups/drivers にもコピーしてください。

  • ps5ui.dll
  • pscript5.dll
  • pscript.hlp
  • pscript.ntf

一般に、上記のファイルは C:\WINDOWS\ServicePackFiles\i386 ディレクトリーに配置されています。

これで、CUPS ドライバー・ディレクトリーに 8 個のファイルがすべて揃ったので、print$ 共有を作成する作業に取り掛かります。print$ 共有は Windows クライアントにハード・コーディングされ、プリンターのインストール時には、クライアントはここでプリンター・ドライバーを探すことになります。このプリンター共有はごく標準的な共有です (リスト 3 を参照)。

リスト 3. print$ 共有
[print$]
  comment = Printer Driver Export
  path = /etc/samba/drivers
  browseable = yes
  guest ok = no
  read only = yes
  write list = root

リスト 3 に記載されている単純な共有は、root 以外の全ユーザーに対しては読み取り専用となっています。この共有を有効にするには、忘れずに Samba を再起動してください。

最後に、cupsaddsmb コマンドを使用してプリンター・ドライバーをインストールします。Downstairs_Laser の場合は、cupsaddsmb -v Downstairs_Laser を実行するだけでインストールすることができます。促されるのに応じて root のパスワードを入力すると、画面に一連のアクティビティーが相次いで表示されます。

インストールが完了すると、クライアントは Samba サーバーを閲覧してプリンターをダブルクリックすることで、そのプリンターを使用できるようになります。プリンターを識別したり、ドライバーをインストールしたりするなどの追加のステップを行う必要はありません。

ベンダー固有のドライバー

汎用の CUPS PostScript ドライバーを使用すれば、CUPS は何の印刷が行われているのかを理解することができます。Windows ドライバーを配布することにした場合の手順は上記手順とよく似ていますが、cupsaddsmb コマンドは使用しません。また、自分でドライバーを /etc/samba/drivers にコピーしますが、ドライバー・ファイルはアーキテクチャー固有のディレクトリーに配置する必要があります (cupsaddsmb を使用すると、自動的にドライバーが配置されます)。例えば、32 ビット・ドライバーには W32X86 が使用されます。

Samba にドライバーの情報を提供するには、rpcclient コマンドを使用します。ドライバーの情報としては、プリンター・ドライバー・ファイルの名前とプリンターの正式な名前を渡す必要があります。「参考文献」から詳しい解説付きの例を参照してください。


アカウンティングとセキュリティー

プリンターに関する「アカウンティング」は、ユーザーごとのページ使用状況を追跡、制限することに尽きます。一方、「セキュリティー」とは、必要に応じてどのユーザーがプリンターを使用していて、アクセスを制限しているかを判別できることを意味します。この場合のアクセスは、プリンターへの出力が可能なアクセスである場合も、他のユーザーのジョブをキャンセルすることが可能なアクセスである場合もあります。

プリンターのセキュリティー

印刷プロセスにおける Samba の役割は、クライアントの印刷ファイル (PostScript など) を取得し、それを CUPS に送信することです。例えば印刷キューの状態をクライアントに表示する場合など、Samba は何を行うにしても、CUPS 経由で行います。CUPS はファイルをキューに入れます。つまり、CUPS がプリンターを制御し、Samba が CUPS とクライアントの間の仲介役を務めるということです。

Internet Printing Protocol を使用すれば、クライアントから直接 CUPS に印刷させるようにすることも可能ですが、Microsoft Network Neighborhood からプリンターをインストールする際の容易さを見過ごすことはできません。クライアントが直接 CUPS に接続する場合、Samba レベルで行うあらゆる制御が CUPS レベルでは無効になる可能性があることを忘れないでください。

例えば、プリンター共有を保護するために、valid users = alice, bob を設定して、2 人のユーザーだけに印刷を許可しているとします。この場合、ユーザー mallory が Samba を使用して印刷しようとしても、その要求は拒否されます。けれども、CUPS に同じような許可が設定されていない場合は、mallory は CUPS キューを介してプリンターに印刷することができます。

もう 1 つのセキュリティー上の考慮事項は、ゲスト・ユーザーの使用です。印刷操作を行う必要があるすべてのユーザーを認証できる場合には、設定ファイルの [printers] セクションに必ず guest ok = no と指定してください。これにより、認証されたユーザーだけに印刷が許可されることになります。さもなければ、不明なユーザーでもプリンターに出力できてしまいます。

プリント・クォータ

印刷ジョブの場合と同じく、アカウンティング作業に対処するのは Samba ではなく、CUPS です。CUPS では、プリンター・クォータを使用することができます。プリンター・クォータは、ユーザー 1 人あたりが特定の期間に印刷できるページ数を制限します。リスト 4 に、プリンターにクォータを設定する方法を示します。

リスト 4. プリンターにクォータを設定する
# lpadmin -p Downstairs_Laser -o job-quota-period=604800 -o job-page-limit=100 \
 job-k-limit=50000

リスト 4 は、プリンターに 3 つのオプションを設定しています。最初のオプションは、ジョブのクォータ期間で、上記の例では、604,800 秒 (1 週間) に設定されています。2 番目のオプションは、この指定のウォータ期間のページ制限です。上記の例では 100 ページに制限されています。3 番目のオプションは、印刷可能なサイズを 50MB に制限していますが、この最後のオプションは必須ではありません。この値を測定するのは難しいというのがその理由ですが、グラフィックが多用されたファイルの印刷を制限する必要がある場合には、このオプションが役立ちます。

プリンターのクォータを検証または確認するには、/etc/cups/printers.conf を調べてください。QuotaPeriodPageLimit、および KLimit オプションに、上記で追加した値がそれぞれ設定されているはずです。クォータを削除するには、値を 0 に設定します。

各印刷ジョブは、page.log という名前のファイルにログを記録します。このファイルは多くの場合、/var/log/cups に配置されています。リスト 5 に、このファイルに記録される典型的な行を記載します。

リスト 5. 典型的なページ・アカウンティング・ログ
Downstairs_Laser 755 sean [26/Apr/2011:15:02:27 -0500] 1 1 - localhost smbprn.0019.FWqosE

プリンターのアカウンティングに特に関連するのは、行の左側の部分です。これらのフィールドの内容を記載順に説明します。

  • プリンター名
  • 印刷ジョブに割り当てられたジョブ番号
  • 印刷を行ったユーザー
  • GMT 形式の日付とタイムゾーンのオフセット
  • 印刷されたページ数
  • 送信された部数

したがって、使用されたページの数は、印刷されたページ数と送信された部数を掛けた値となります。残りのフィールドについての説明は、「参考文献」を参照してください。

注: CUPS クォータに伴う最大の制約事項は、これがすべてのユーザーに適用されることです。


次回の予告

次回は LPI-302 試験の目標 312.4 に備えるために、Samba をプライマリー・ドメイン・コントローラーとバックアップ・ドメイン・コントローラーとして機能するように構成し、Microsoft のプライマリーおよびバックアップ・ドメイン・コントローラーと連携させる方法について詳しく説明します。

参考文献

学ぶために

  • Web バージョンの smb.conf の man ページは、コマンドライン・バージョンよりも使い勝手に優れています。
  • developerWorks の主題 107 に関する教材を読んで、コマンドラインによる印刷について復習してください。
  • Samba HOWTO の第 21 章で、CUPS が登場する前に使用されていた「旧式」の印刷サポートについて説明しています。このサイトには、Windows プリンター・ドライバーを追加する例と解説も記載されています。
  • Samba HOWTO の第 22 章で、CUPS と Samba の統合をさらに詳しく説明しています。
  • この記事で説明したページ・ログのフィールドの他に報告しなければならない情報がある場合には、CUPS マニュアルの page_log セクションに、ページ・ログ内のすべてのフィールドがリストされています。
  • LPIC Program サイトでは、LPI の 3 つの Linux システム管理資格認定レベルについて、詳しい目標、タスクのリスト、そして出題例を調べられます。特に、LPI-302 の具体的な目標タスクおよび出題例を調べてください。
  • developerWorks の連載「LPI exam prep」をすべて読んで、Linux の基礎を学び、2009年4月以前の LPI 試験の目標に基づくシステム管理者認定試験に備えてください。
  • Exam Preparation Resources for Revised LPIC Exams」に、LPI で管理している他の認定の教材がリストされています。
  • developerWorks Linux ゾーンで、Linux 開発者および管理者向けのハウツー記事とチュートリアル、そしてダウンロード、ディスカッション、フォーラムなど、豊富に揃った資料を探してください。
  • さまざまな IBM 製品および IT 業界についての話題に絞った developerWorks の Technical events and webcasts で時代の流れをキャッチしてください。
  • 無料の developerWorks Live! briefing に参加して、IBM の製品およびツール、そして IT 業界の傾向を素早く学んでください。
  • developerWorks の on-demand demos で、初心者向けの製品のインストールとセットアップから、熟練開発者向けの高度な機能に至るまで、さまざまに揃ったデモを見てください。
  • Twitter で developerWorks をフォローするか、developerWorks で Linux に関するツイートのフィードに登録してください。

製品や技術を入手するために

  • Windows CUPS ドライバーをダウンロードしてください。
  • Samba の最新バージョンを入手して、最新機能を追加してください。
  • ご自分に最適な方法で IBM 製品を評価してください。評価の方法としては、製品の試用版をダウンロードすることも、オンラインで製品を試してみることも、クラウド環境で製品を使用することもできます。また、SOA Sandbox では、数時間でサービス指向アーキテクチャーの実装方法を効率的に学ぶことができます。

議論するために

  • My developerWorks コミュニティーに加わってください。ここでは他の developerWorks ユーザーとのつながりを持てる他、開発者が主導するブログ、フォーラム、グループ、ウィキを調べることができます。

コメント

developerWorks: サイン・イン

必須フィールドは(*)で示されます。


IBM ID が必要ですか?
IBM IDをお忘れですか?


パスワードをお忘れですか?
パスワードの変更

「送信する」をクリックすることにより、お客様は developerWorks のご使用条件に同意したことになります。 ご使用条件を読む

 


お客様が developerWorks に初めてサインインすると、お客様のプロフィールが作成されます。会社名を非表示とする選択を行わない限り、プロフィール内の情報(名前、国/地域や会社名)は公開され、投稿するコンテンツと一緒に表示されますが、いつでもこれらの情報を更新できます。

送信されたすべての情報は安全です。

ディスプレイ・ネームを選択してください



developerWorks に初めてサインインするとプロフィールが作成されますので、その際にディスプレイ・ネームを選択する必要があります。ディスプレイ・ネームは、お客様が developerWorks に投稿するコンテンツと一緒に表示されます。

ディスプレイ・ネームは、3文字から31文字の範囲で指定し、かつ developerWorks コミュニティーでユニークである必要があります。また、プライバシー上の理由でお客様の電子メール・アドレスは使用しないでください。

必須フィールドは(*)で示されます。

3文字から31文字の範囲で指定し

「送信する」をクリックすることにより、お客様は developerWorks のご使用条件に同意したことになります。 ご使用条件を読む

 


送信されたすべての情報は安全です。


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=60
Zone=Linux
ArticleID=775782
ArticleTitle=Linux の 302 (Mixed Environment) 試験対策: プリント・サービス
publish-date=11252011