「CUPS/プリンター共有」の版間の差分
Libnumafly (トーク | 投稿記録) (→リモート管理: fix typo) |
|||
(4人の利用者による、間の11版が非表示) | |||
1行目: | 1行目: | ||
[[Category:プリンター]] |
[[Category:プリンター]] |
||
− | [[en:CUPS |
+ | [[en:CUPS/Printer sharing]] |
− | [[ru:CUPS |
+ | [[ru:CUPS/Printer sharing]] |
+ | [[zh-hans:CUPS/Printer sharing]] |
||
{{Related articles start}} |
{{Related articles start}} |
||
{{Related|Samba}} |
{{Related|Samba}} |
||
7行目: | 8行目: | ||
{{Related articles end}} |
{{Related articles end}} |
||
− | + | この記事では GNU/Linux システム間、あるいは GNU/Linux システムと Microsoft Windows の間でプリンターを共有する方法を説明しています。 |
|
+ | |||
+ | ==複数プリンターでクラスを作成== |
||
+ | |||
+ | CUPS におけるクラスはプリンターの集合を意味します。単一の CUPS サーバーに繋がる複数のプリンターがあって、それらをバランスよく使いたいことがありえます (自動的にプリントジョブが異なるプリンターに割り当てられます)。またリモートユーザーが単一のプリンターであるかのごとく操作できるのも利点です。これは、クラス内のあるプリンターを修理しなければならないときに特に便利です。管理者はクラスからそのプリンターを外すだけでよく、エンドユーザーにとっては何もかわらず、プリントジョブは CUPSサーバーによって別のプリンターに割り当てられます。CUPS のウェブインターフェイスからクラスを追加したり管理できます。 |
||
==GNU/Linux システム間== |
==GNU/Linux システム間== |
||
− | CUPS を GNU/Linux 印刷サーバーにセットアップした場合、他の GNU/Linux システムとプリンターを共有する方法としては比較的簡単なウェブインターフェイスを使うことが推奨されますが、手動で設定することもできます。 |
||
+ | サーバーはウェブインターフェイスを使用するか {{ic|/etc/cups/cupsd.conf}} を手動で編集することで設定できます。クライアントの設定については、[[CUPS#ローカルの CUPS サーバーを使わない]]を見てください。 |
||
− | cupsd を再起動する前に avahi-daemon を実行する必要があります。 |
||
− | |||
− | クライアントマシンでは Avahi の .local ホスト名解決を有効にする必要があります。有効にしていないと、クライアントは "Unable to locate printer" というエラーを表示して印刷ができません。詳しくは [[avahi#ホスト名の解決]] を見て下さい。 |
||
===ウェブインターフェイスを使う=== |
===ウェブインターフェイスを使う=== |
||
+ | サーバーのウェブインターフェイスを開いて、''Administration'' タブを選択肢、''Server'' の下にある "Share printers connected to this system" オプションを有効にしてください。''Change Settings'' ボタンを押すことで変更が保存され、サーバーは自動的に再起動します。 |
||
− | Access http://localhost:631 with a browser and the CUPS administration home page will be displayed. |
||
+ | 複雑な設定を行いたい場合、''Edit Configuration File'' を選択することで直接 {{ic|/etc/cups/cupsd.conf}} ファイルを編集できます。詳しくは[[#手動セットアップ]]を見てください。 |
||
− | Click on the ''Administration'' tab near the top, select the add printer option and it should automatically detect the connected printer. If not, try turning off the printer and then back on before another attempt. |
||
− | |||
− | Once the printer has been set up, look under the ''Server'' heading and click the checkbox for "Share printers connected to this system". Now, conclude by clicking ''change settings'' and the server will automatically restart. |
||
− | |||
− | Selecting "Edit Configuration File" allows making direct edits to the {{ic|cups.conf}} file. This is useful for allowing server access only to certain users or IP addresses, as the example shown below. |
||
===手動セットアップ=== |
===手動セットアップ=== |
||
+ | サーバー側のコンピュータ (プリンターに直接接続するコンピュータ) で、location ディレクティブを編集してサーバーへのアクセスを許可してください。例: |
||
− | On the server computer (the one directly connected to the printer) simply open up {{ic|/etc/cups/cupsd.conf}} and allow access to the server by modifying the location lines. For instance: |
||
+ | {{hc|/etc/cups/cupsd.conf| |
||
− | <Location /> |
||
+ | <Location /> |
||
Order allow,deny |
Order allow,deny |
||
Allow localhost |
Allow localhost |
||
Allow 192.168.0.* |
Allow 192.168.0.* |
||
− | + | </Location> |
|
+ | ... |
||
+ | }} |
||
+ | また、クライアントが使用する IP アドレスでサーバーが待機するようにしてください: |
||
− | Also make sure the server is listening on the IP address the client will be addressing. Add the following line after "# Listen <serverip>:631" (using the server's IP address instead of client's 192.168.0.100): |
||
+ | {{hc|/etc/cups/cupsd.conf| |
||
− | Listen 192.168.0.101:631 |
||
+ | ... |
||
+ | Listen <hostname>:631 |
||
+ | ... |
||
+ | }} |
||
+ | 自動的に設定する方法など、詳しい解説は [https://www.cups.org/doc/network.html Using Network Printers] や {{man|5|cupsd.conf}} を見てください。 |
||
− | To "Show shared printers on the local network" make sure you have the Browsing directive enabled: |
||
− | Browsing On |
||
+ | 編集したら、CUPS を再起動してください。 |
||
− | After making modifications, restart CUPS. |
||
+ | ソケットアクティベーションを使って CUPS を起動している場合、{{ic|org.cups.cupsd.socket}} の[[systemd#ドロップインファイル|ドロップインファイル]]を作成してリモート接続でもソケットアクティベーションができるようにしてください: |
||
− | On the client system, open up (create if not present) {{ic|/etc/cups/client.conf}} and add the ServerName to match the IP address or the name of the server. Add this line: |
||
+ | {{hc|/etc/systemd/system/org.cups.cupsd.socket.d/override.conf|<nowiki> |
||
− | ServerName 192.168.0.101 |
||
+ | [Socket] |
||
+ | ListenStream=631 |
||
+ | </nowiki>}} |
||
+ | ===ブラウジングの有効化=== |
||
− | There are more configuration possibilities, including automatic methods, which are described in detail in http://localhost:631/help/network.html <!-- Someone with CUPS installed could rename the link to the page title --> |
||
+ | ブラウジング (共有プリンターの探知) を有効にするには、サーバーに [[Avahi]] をインストールして起動する必要があります。プリンターの探知が必要ない場合、サーバーとクライアントには Avahi が必要ありません。 |
||
− | After making modifications, restart CUPS. |
||
+ | {{Note|cupsd が起動する前に [[Avahi]] が立ち上がっていないとブラウジングは機能しません。}} |
||
− | {{Note|When adding the printer from the client, if using the Internet Printing Protocol (IPP), put the URI as ipp://192.168.0.101:631/printers/<name-of-printer>}} |
||
+ | ブラウジングを有効にするには、ウェブインターフェイスで ''Share printers connected to this system'' を選択するか、手動で Browsing をオンにして BrowseAddress を設定してください: |
||
− | ====CUPS 1.5.x 以下のサーバーで CUPS 1.6.x クライアントを使う==== |
||
+ | {{hc|/etc/cups/cupsd.conf| |
||
+ | ... |
||
+ | Browsing On |
||
+ | BrowseAddress 192.168.0.*:631 |
||
+ | ... |
||
+ | }} |
||
+ | {{ic|cups}} サービスを[[再起動]]してください。 |
||
− | As of CUPS version 1.6, the client defaults to IPP 2.0. If the server uses CUPS <= 1.5 / IPP <= 1.1, the client does not downgrade the protocol automatically and thus cannot communicate with the server. A workaround (undocumented as of 2013-05-07, but see [http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=704238 this bug report]) is to put the following in {{ic|/etc/cups/client.conf}}: |
||
+ | |||
− | ServerName HOSTNAME-OR-IP-ADDRESS[:PORT]/version=1.1 |
||
+ | 印刷サーバーの「ブラウジング」はリモートのネットワークホストのブラウジングとは異なります。印刷サーバでは、{{ic|cupsd}} が {{ic|avahi-daemon}} で通信するための DNS-SD プロトコルのサポートを提供します。古い CUPS プロトコルを使用しなければならない場合や、他のネットワークプリンターも印刷サーバーで「ブラウジング」するのでないかぎり、印刷サーバーに {{ic|cups-browsed}} サービスは不要です。リモートのネットワークホストには、印刷サーバーのネットワーク通信を「ブラウズ」するための {{ic|cups-browsed}} サービスが必須であり、{{ic|cups-browsed}} を実行すると自動的に {{ic|cupsd}} が起動します。 |
||
+ | |||
+ | USB プリンターは接続すると {{ic|cups.service}} サービスが自動的に起動しますが、他の接続タイプでは自動的に起動するとは限りません。{{ic|cupsd}} が起動していないと {{ic|avahi-daemon}} は印刷サービスを提供することができず、その場合、systemd のサービスユニットファイルを起動時に実行するように修正する必要があります。さらに、依存関係が新しくなったらサービスを再度有効化・インストールしなければなりません。サービスファイルの {{ic|[Install]}} セクションを[[編集]]して {{ic|1=WantedBy=default.target}} を追加し、{{ic|cups.service}} サービスを[[起動]]・[[有効化]]してください。 |
||
==GNU/Linux と Windows== |
==GNU/Linux と Windows== |
||
61行目: | 77行目: | ||
===Linux サーバー - Windows クライアント=== |
===Linux サーバー - Windows クライアント=== |
||
+ | Windows クライアントを共有するには、[[#Bonjour で共有]]、[[#IPP で共有]] あるいは [[#Samba で共有]] する方法があります。 |
||
− | ====IPP で共有==== |
||
+ | 設定後、Windows コンピュータにプリンターのネイティブなプリンタードライバーをインストールしてください。CUPS のプリンタードライバーを使用するように CUPS サーバーを設定している場合、Windows クライアントでは汎用の postscript プリンターを選択します (例 'HP Color LaserJet 8500 PS' や 'Xerox DocuTech 135 PS2')。テストページを印刷してみて印刷設定をテストしてください。 |
||
− | The '''preferred way''' to connect a Windows client to a Linux print server is using [[wikipedia:Internet_Printing_Protocol|IPP]]. It is a standard printer protocol based on HTTP, allowing you all ways to profit from port forwarding, tunneling etc. |
||
− | The configuration is '''very easy''' and this way is less error-prone than using Samba. |
||
− | IPP is natively supported by Windows '''since Windows 2000'''. |
||
+ | ====Bonjour で共有==== |
||
− | To configure the server side proceed as described in the section above to enable browsing. |
||
− | |||
− | On the Windows computer, go to the printer control panel and choose to 'Add a New Printer'. Next, choose to give a URL. For the URL, type in the location of the printer: |
||
+ | [https://support.apple.com/kb/dl999 Bonjour Printing Services] を利用すると簡単に Windows クライアントを Unix プリントサーバーに [[#ブラウジングの有効化|ブラウジングを有効にして]] 接続できます。 |
||
− | http://''host_ip_address'':631/printers/''printer_name'' |
||
+ | ====IPP で共有==== |
||
− | (where ''host_ip_address'' is the GNU/Linux server's IP address and ''printer_name'' is the name of the printer being connected to, you can also use the server's fully qualified domain name, if it has one, but you may need to set {{ic|ServerAlias my_fully_qualified_domain_name}} in ''cupsd.conf'' for this to work). |
||
+ | [[wikipedia:Internet_Printing_Protocol|Internet Printing Protocol]] はOS間で広くサポートされており、設定が簡単です。ポートフォワーディングやトンネリングなどの機能があります。IPP は Windows 2000 以降の Windows でネイティブでサポートされています。 |
||
− | {{Note|The add printer dialog in windows is quite sensitive to the path to the printer, the dialogue box itself suggests: |
||
+ | {{Note|Internet Printing Client を Windows に追加する必要があるかもしれません (''Control Panel->Programs->Turn Windows features on or off->Print and Document Services'')。}} |
||
+ | まず、[[#GNU/Linux システム間]]に書かれているようにサーバーを設定してください。 |
||
− | <nowiki>http://servername:631/printers/printer_name/.printer</nowiki> |
||
+ | |||
+ | Windows コンピュータ側で、''コントロールパネル->デバイスとプリンター''から「プリンターの追加」を選択します。Windows 10 の場合は「プリンターが一覧にない場合」をクリックしてください。次に、「共有プリンターの名前で選択する」を選んでプリンターの場所を入力してください: |
||
+ | http://''hostname'':631/printers/''printer_name'' |
||
− | which will work in a web-browser but '''not''' in the add printer dialogue. (At least, not when using cups as an ipp server). The syntax suggested above: |
||
+ | ''hostname'' は GNU/Linux サーバーのホスト名や IP アドレスに、''printer_name'' は接続されているプリンターの名前に置き換えてください。サーバーの完全修飾ドメイン名を使うこともできますが、{{ic|/etc/cups/cupsd.conf}} で {{ic|ServerAlias my_fully_qualified_domain_name}} を設定する必要があります。 |
||
− | <nowiki>http://host_ip_address:631/printers/printer_name</nowiki> |
||
+ | {{Note| |
||
− | '''will''' work.}} |
||
+ | * Windows の 'Add Printer' ダイアログのパスは要注意です。ダイアログボックスが提案している形式は {{ic|<nowiki>http://computername/printers/printername/.printer</nowiki>}} ですが、この形式は使えません。代わりに、上に書かれている形式を使ってください。 |
||
− | |||
+ | * プロキシを使用している場合はプロキシの除外設定を確認してください。プロキシを無効化しても再起動しないとプリンターが追加できない場合があります (Windows 7 の場合)。}} |
||
− | After this, install the native printer drivers for your printer on the Windows computer. If the CUPS server is set up to use its own printer drivers, then you can just select a generic postscript printer for the Windows client(e.g. 'HP Color LaserJet 8500 PS' or 'Xerox DocuTech 135 PS2'). Then test the print setup by printing a test page. |
||
====Samba で共有==== |
====Samba で共有==== |
||
+ | [[Samba]] は Windows におけるファイル共有やプリンター共有プロトコルの実装で、歴史のある実装です。 |
||
− | If your client's Windows version is below Windows 2000 or if you experienced troubles with IPP you can also use Samba for sharing. |
||
+ | |||
− | Note of course that with Samba this involves another complex piece of software. This makes this way '''more difficult to configure''' and thus sometimes also '''more error-prone''', mostly due to authentication problems. |
||
+ | ただし Samba を使用したプリンター共有は、設定やメンテナンスが難しくなりがちです。 |
||
− | + | Linux サーバーの Samba を設定するために、{{ic|/etc/samba/smb.conf}} ファイルを編集してプリンターへのアクセスを許可してください。{{ic|smb.conf}} ファイルは以下のようになります: |
|
{{hc|/etc/samba/smb.conf|2= |
{{hc|/etc/samba/smb.conf|2= |
||
[global] |
[global] |
||
111行目: | 127行目: | ||
}} |
}} |
||
+ | プリンターを共有するには上記だけで十分ですが、個別のプリンターのエントリを追加するほうが好ましいでしょう: |
||
− | That should be enough to share the printer, yet adding an individual printer entry may be desirable: |
||
{{hc|/etc/samba/smb.conf|2= |
{{hc|/etc/samba/smb.conf|2= |
||
[ML1250] |
[ML1250] |
||
128行目: | 144行目: | ||
}} |
}} |
||
+ | 上記の設定を使うにはユーザーがプリンターにアクセスするためのアカウントがないといけません。公開プリンターの場合は ''guest ok'' を ''yes'' に変更して、''valid users'' 行を削除してください。アカウントを追加するには、通常の GNU/Linux アカウントをセットアップしてから、サーバーの Samba パスワードを設定してください。例: |
||
− | Please note that this assumes configuration was made so that users must have a valid account to access the printer. To have a public printer, set ''guest ok'' to ''yes'', and remove the ''valid users'' line. To add accounts, set up a regular GNU/Linux account and then set up a Samba password on the server. For instance: |
||
# useradd yourusername |
# useradd yourusername |
||
# smbpasswd -a yourusername |
# smbpasswd -a yourusername |
||
− | |||
<!-- |
<!-- |
||
After setting up all the needed user accounts, the samba spool directory also needs configuration: |
After setting up all the needed user accounts, the samba spool directory also needs configuration: |
||
156行目: | 171行目: | ||
--> |
--> |
||
+ | 設定後、Samba デーモンを再起動してください。 |
||
− | After this, restart the Samba daemon. |
||
+ | Samba の印刷サーバーの設定では様々なカスタマイズが可能です。詳しくは Samba や CUPS のドキュメントを参照してください。{{ic|smb.conf.example}} ファイルにも参考になる例があります。 |
||
− | Obviously, there are a lot of tweaks and customizations that can be done with setting up a Samba print server, so it is advised to look at the Samba and CUPS documentation for more help. The {{ic|smb.conf.example}} file also has some good samples that might warrant imitating. |
||
===Windows サーバー - Linux クライアント=== |
===Windows サーバー - Linux クライアント=== |
||
+ | {{Warning|Windows のプリンターの名前やユーザーのパスワードに空白を含む場合やプリンター URL の特殊文字は正しくエスケープする必要があり、エスケープしないと CUPS が "lpadmin: Bad device-uri" エラーを吐きます。例えば {{ic|smb://BEN-DESKTOP/HP Color LaserJet CP1510 series PCL6}} は {{ic|smb://BEN-DESKTOP/HP%20Color%20LaserJet%20CP1510%20series%20PCL6}} となります。以下のコマンドを実行することで文字列を確認できます: |
||
− | {{Warning|CUPS cannot handle spaces in printer URIs. If your Windows printer name or user passwords have spaces, CUPS will throw "lpadmin: Bad device-uri" error}} |
||
+ | $ python -c 'from urllib.parse import quote; print("smb://" + quote("BEN-DESKTOP/HP Color LaserJet CP1510 series PCL6"))' |
||
+ | }} |
||
+ | |||
====LPD で共有==== |
====LPD で共有==== |
||
− | Windows 7 |
+ | Windows 7, 8, 10 には LPD サーバーが組み込まれています。それを使うことでクライアントに ''Samba'' をインストールしたりサーバーで様々な設定を行うことなく簡単に共有が可能です。''Control Panel'' を開いて ''Programs'' -> ''Activate Windows functions'' の ''Print services'' から有効にできます。プロパティによってプリンターの ''shared'' を有効にする必要があります。共有名には空白なカンマなどの特殊文字を使用してはいけません。 |
+ | それから CUPS からプリンターを追加できます。LPD プロトコルを選択してください。プリンターアドレスは以下のようになります: |
||
− | Then the printer can be added in CUPS, choosing LPD protocol. The printer address will look like this: |
||
# lpd://windowspc/printersharename |
# lpd://windowspc/printersharename |
||
+ | プリンターを追加する前に、使用しているプリンターにあわせて適切なプリンタードライバーをインストールする必要があります。Generic PostScript や RAW ドライバーで動作するかもしれません。 |
||
− | Before adding the printer, you will most likely have to install an appropriate printer driver depending on your printer model. Generic PostScript or RAW drivers might also work. |
||
====IPP で共有==== |
====IPP で共有==== |
||
+ | 上記と同じく、プリンターを共有する際は IPP が推奨プロトコルです。ただし、下に書かれている Samba による方法よりも少しばかり難しくなります。Windows に IPP サーバーをセットアップするには労力が必要です。サーバーソフトウェアとしては一般的に Microsoft の Internet Information Services (IIS) が使われます。Windows 10 などクライアント版の Windows には IPP クライアントしか含まれていないため、IPP で共有することはできません。 |
||
− | As above, IPP is also the '''preferred''' protocol for printer sharing. However this way might be a bit '''more difficult''' than the native Samba approach below, since you need a greater effort to set up an IPP-Server on Windows. |
||
− | The commonly chosen server software is Microsoft's Internet Information Services (IIS). |
||
− | |||
− | {{Note|This section is incomplete. Here is a description how to set up ISS in Windows XP and Windows 2000, unfortunately in German [http://www.heise.de/netze/artikel/Ueberall-drucken-221652.html]}} |
||
====Samba で共有==== |
====Samba で共有==== |
||
+ | Samba 経由で Windows のネイティブのプリンター共有を使う方法はもっと簡単です。ほとんど設定が不要で、CUPS バックエンドから全て設定できます。上記の通り、何か問題が発生する場合、大抵は認証関連の問題や Windows のアクセス制限が原因です。 |
||
− | A '''much simpler way''' is using Window's native printer sharing via Samba. There is almost no configuration needed, and all of it can be done from the CUPS Backend. As above noted, if there are any problems the reason is mostly related to authentication trouble and Windows access restrictions. |
||
+ | サーバー側で使用したいプリンターの共有を有効にして、クライアント側のユーザーにプリンターにアクセスする権限を付与してください。 |
||
− | On the server side enable sharing for your desired printer and ensure that the user on the client machine has the right to access the printer. |
||
+ | 以下のセクションでは (cupsd と smbd デーモンが動作している) クライアントを設定する方法を説明します。 |
||
− | The following section describes how to set up the client, assuming that both daemons (cupsd and smbd) are running. |
||
=====ウェブインターフェイスを使って設定===== |
=====ウェブインターフェイスを使って設定===== |
||
+ | Samba の CUPS バックエンドはデフォルトで有効になっていますが、何らかの理由で有効でない場合は以下のコマンドを実行してから CUPS を再起動してください: |
||
− | The Samba CUPS back-end is enabled by default, if for any reason it is not activate it by entering the following command and restarting CUPS. |
||
# ln -s $(which smbspool) /usr/lib/cups/backend/smb |
# ln -s $(which smbspool) /usr/lib/cups/backend/smb |
||
+ | 次に、CUPS ウェブインターフェイスにログインして新しいプリンターの追加を選択してください。デバイスは "Windows Printer via SAMBA" を選択します。 |
||
− | Next, simply log in on the CUPS web interface and choose to add a new printer. As a device choose "Windows Printer via SAMBA". |
||
+ | デバイスの場所は以下のように入力: |
||
− | For the device location, enter: |
||
smb://username:password@hostname/printer_name |
smb://username:password@hostname/printer_name |
||
+ | またはパスワードを使わない場合: |
||
− | Or without a password: |
||
smb://username@hostname/printer_name |
smb://username@hostname/printer_name |
||
+ | ユーザーが Windows コンピュータのプリンターにアクセスする権限を持っていることを確認して適切なドライバーを選択してください。コンピュータがドメイン上にある場合、URI にドメインを含めてください: |
||
− | Make sure that the user actually has access to the printer on the Windows computer and select the appropriate drivers. If the computer is located on a domain, make sure the user-name includes the domain: |
||
smb://username:password@domain/hostname/printer_name |
smb://username:password@domain/hostname/printer_name |
||
− | |||
− | If the network contains many printers you might want to set a preferred printer. To do so use the web interface, go into the printer tab, choose the desired printer and select 'Set as default' from the drop-down list. |
||
=====手動設定===== |
=====手動設定===== |
||
+ | 手動で設定する場合、CUPS デーモンを停止して以下のように {{ic|/etc/cups/printers.conf}} にプリンターを追加してください: |
||
− | For manual configuration stop the CUPS daemon and add your printer to {{ic|/etc/cups/printers.conf}}, which might for example look like this |
||
{{hc|/etc/cups/printers.conf|2= |
{{hc|/etc/cups/printers.conf|2= |
||
<DefaultPrinter MyPrinter> |
<DefaultPrinter MyPrinter> |
||
229行目: | 242行目: | ||
}} |
}} |
||
+ | 設定したら CUPS デーモンを再起動してテスト印刷を行ってみてください。 |
||
− | Then restart the CUPS daemon an try to print a test page. |
||
+ | =====Windows 印刷サーバーの URI を確認===== |
||
− | To set the preferred printer use the following command |
||
− | # lpoptions -d desired_default_printer_name |
||
+ | Windows では正確なデバイス URI (デバイスの場所) が明確ではありません。CUPS でデバイスの場所を指定するときに問題が発生する場合、以下のコマンドを実行して特定の windows ユーザーから利用できる共有を確認できます: |
||
− | ===トラブルシューティング=== |
||
+ | $ smbtree -U ''windowsusername'' |
||
+ | Samba が正しく設定されていれば、上記のコマンドでローカルエリアネットワークサブネットで指定した Windows ユーザーから使える全ての共有が表示されます。以下のように出力されます: |
||
+ | {{bc|WORKGROUP |
||
+ | \\REGULATOR-PC |
||
+ | \\REGULATOR-PC\Z |
||
+ | \\REGULATOR-PC\Public |
||
+ | \\REGULATOR-PC\print$ Printer Drivers |
||
+ | \\REGULATOR-PC\G |
||
+ | \\REGULATOR-PC\EPSON Stylus CX8400 Series EPSON Stylus CX8400 Series}} |
||
+ | 上記の場合、最後の行がプリンターとわかります。上記の EPSON Stylus プリンターに印刷する場合、CUPS で使用する URI は以下のようになります: |
||
+ | smb://username.password@REGULATOR-PC/EPSON%20Stylus%20CX8400%20Series |
||
+ | ==リモート管理== |
||
− | If there are any problems, the first thing to do is enable debug information by setting |
||
− | {{bc|LogLevel debug}} in {{ic|/etc/cups/cupsd.conf}}. |
||
+ | [[#GNU/Linux システム間]]に書かれているようにサーバーをセットアップしたら、設定によってリモートで管理することができます。管理を許可するホストを {{ic|/etc/cups/cupsd.conf}} の {{ic|<Location /admin>}} ブロックに追加してください。使用する構文は[[#手動セットアップ]]で説明されているものと同じです。3つのレベルで権限を与えることができます: |
||
− | Then restart the CUPS daemon and check for error messages in {{ic|/var/log/cups/error_log}}. A convenient way to do so is |
||
− | # tail -f /var/log/cups/error_log |
||
− | which keeps printing new error messages as they occur. |
||
+ | <Location /> #access to the server |
||
− | Note: You can also use the web interface to browse this error file. |
||
+ | <Location /admin> #access to the admin pages |
||
+ | <Location /admin/conf> #access to configuration files |
||
+ | |||
+ | リモートホストに与えたいレベルにあわせて、セクションに {{ic|Allow}} ステートメントを追加してください。{{ic|Allow}} ステートメントは以下の形式で使用することができます: |
||
+ | Allow from all |
||
+ | Allow from host.domain.com |
||
+ | Allow from *.domain.com |
||
+ | Allow from ip-address |
||
+ | Allow from ip-address/netmask |
||
+ | Allow from @LOCAL |
||
+ | |||
+ | Deny ステートメントを使うこともできます。例えば、ローカルネットワークインターフェイスの全てのホストに完全な権限を与えたい場合、{{ic|/etc/cups/cupsd.conf}} を以下のように編集: |
||
+ | # Restrict access to the server... |
||
+ | # By default only localhost connections are possible |
||
+ | <Location /> |
||
+ | Order allow,deny |
||
+ | '''Allow from @LOCAL''' |
||
+ | </Location> |
||
+ | |||
+ | # Restrict access to the admin pages... |
||
+ | <Location /admin> |
||
+ | Order allow,deny |
||
+ | '''Allow from @LOCAL''' |
||
+ | </Location> |
||
+ | |||
+ | # Restrict access to configuration files... |
||
+ | <Location /admin/conf> |
||
+ | AuthType Basic |
||
+ | Require user @SYSTEM |
||
+ | Order allow,deny |
||
+ | '''Allow from @LOCAL''' |
||
+ | </Location> |
||
+ | |||
+ | 以下の設定を追加することでリモートマシンから CUPS ウェブインターフェイスを使用した場合に起こる {{ic|426 - Upgrade Required}} エラーを止めることができます: |
||
+ | |||
+ | DefaultEncryption Never |
||
+ | |||
+ | === Kerberos === |
||
+ | |||
+ | [[Kerberos]] を使ってリモートの CUPS サーバーにアクセスするユーザーを認証することができます。マシンにキータブが存在することが前提で、"HTTP" のチケットが必要です。{{ic|<nowiki>http://localhost:631</nowiki>}} の代わりに {{ic|<nowiki>https://host.example.co.uk:631</nowiki>}} を使ってください。認証するために暗号化 (https) が必要な上に Kerberos/Negotiate を機能させるために完全なホストネームが必要です。さらにサーバーの {{ic|/etc/cups/cupsd.conf}} を設定して {{ic|DefaultAuthType}} を {{ic|Negotiate}} にする必要があります。 |
||
+ | |||
+ | [[Samba]] の winbind NSS サポートを使用する場合、AD グループ名を {{ic|/etc/cups/cups-files.conf}} に追加することができます。以下の例では {{ic|sysadmin}} が AD グループです: |
||
+ | SystemGroup sys root sysadmin |
||
+ | |||
+ | ==トラブルシューティング== |
||
+ | |||
+ | 一般的なトラブルシューティングについては [[CUPS/トラブルシューティング]]を見てください。 |
||
====GTK アプリケーションで印刷できない==== |
====GTK アプリケーションで印刷できない==== |
||
− | + | GTK アプリケーションから印刷しようとすると "getting printer information failed" と表示される場合、{{ic|/etc/hosts}} に次の行を追加してください: |
|
− | + | # serverip some.name.org ServersHostname |
|
+ | |||
+ | === Samba でプリンターを追加・編集できない === |
||
+ | |||
+ | Samba を使ってプリンターを追加・編集しようとすると、インターフェイスによる CPU の使用率が 100% の状態が30秒も続いた後に以下のメッセージが表示される場合: |
||
+ | |||
+ | Unable to get list of printer drivers: Success |
||
+ | |||
+ | Gutenprint (https://bugs.archlinux.org/task/43708) の既知のバグが原因です。Gutenprint をアンインストールして foomatic-db だけをインストールしてください。次のコマンドで "Success" メッセージの代わりにドライバーのリストが返ってくるはずです: |
||
+ | |||
+ | # lpinfo -m |
||
+ | |||
+ | === Windows でパーミッションエラー === |
||
+ | |||
+ | ユーザーによっては別の構文を使うことで 'NT_STATUS_ACCESS_DENIED' エラーが解決する場合があります (Windows クライアント): |
||
+ | smb://workgroup/username:password@hostname/printer_name |
||
==他のオペレーティングシステム== |
==他のオペレーティングシステム== |
||
− | 他の印刷システムと CUPS を繋げる方法の詳細は CUPS マニュアルにあります。例: http://localhost:631/ |
+ | 他の印刷システムと CUPS を繋げる方法の詳細は CUPS マニュアルにあります。例: http://localhost:631/help/network.html |
2023年4月16日 (日) 10:23時点における最新版
この記事では GNU/Linux システム間、あるいは GNU/Linux システムと Microsoft Windows の間でプリンターを共有する方法を説明しています。
複数プリンターでクラスを作成
CUPS におけるクラスはプリンターの集合を意味します。単一の CUPS サーバーに繋がる複数のプリンターがあって、それらをバランスよく使いたいことがありえます (自動的にプリントジョブが異なるプリンターに割り当てられます)。またリモートユーザーが単一のプリンターであるかのごとく操作できるのも利点です。これは、クラス内のあるプリンターを修理しなければならないときに特に便利です。管理者はクラスからそのプリンターを外すだけでよく、エンドユーザーにとっては何もかわらず、プリントジョブは CUPSサーバーによって別のプリンターに割り当てられます。CUPS のウェブインターフェイスからクラスを追加したり管理できます。
GNU/Linux システム間
サーバーはウェブインターフェイスを使用するか /etc/cups/cupsd.conf
を手動で編集することで設定できます。クライアントの設定については、CUPS#ローカルの CUPS サーバーを使わないを見てください。
ウェブインターフェイスを使う
サーバーのウェブインターフェイスを開いて、Administration タブを選択肢、Server の下にある "Share printers connected to this system" オプションを有効にしてください。Change Settings ボタンを押すことで変更が保存され、サーバーは自動的に再起動します。
複雑な設定を行いたい場合、Edit Configuration File を選択することで直接 /etc/cups/cupsd.conf
ファイルを編集できます。詳しくは#手動セットアップを見てください。
手動セットアップ
サーバー側のコンピュータ (プリンターに直接接続するコンピュータ) で、location ディレクティブを編集してサーバーへのアクセスを許可してください。例:
/etc/cups/cupsd.conf
<Location /> Order allow,deny Allow localhost Allow 192.168.0.* </Location> ...
また、クライアントが使用する IP アドレスでサーバーが待機するようにしてください:
/etc/cups/cupsd.conf
... Listen <hostname>:631 ...
自動的に設定する方法など、詳しい解説は Using Network Printers や cupsd.conf(5) を見てください。
編集したら、CUPS を再起動してください。
ソケットアクティベーションを使って CUPS を起動している場合、org.cups.cupsd.socket
のドロップインファイルを作成してリモート接続でもソケットアクティベーションができるようにしてください:
/etc/systemd/system/org.cups.cupsd.socket.d/override.conf
[Socket] ListenStream=631
ブラウジングの有効化
ブラウジング (共有プリンターの探知) を有効にするには、サーバーに Avahi をインストールして起動する必要があります。プリンターの探知が必要ない場合、サーバーとクライアントには Avahi が必要ありません。
ブラウジングを有効にするには、ウェブインターフェイスで Share printers connected to this system を選択するか、手動で Browsing をオンにして BrowseAddress を設定してください:
/etc/cups/cupsd.conf
... Browsing On BrowseAddress 192.168.0.*:631 ...
cups
サービスを再起動してください。
印刷サーバーの「ブラウジング」はリモートのネットワークホストのブラウジングとは異なります。印刷サーバでは、cupsd
が avahi-daemon
で通信するための DNS-SD プロトコルのサポートを提供します。古い CUPS プロトコルを使用しなければならない場合や、他のネットワークプリンターも印刷サーバーで「ブラウジング」するのでないかぎり、印刷サーバーに cups-browsed
サービスは不要です。リモートのネットワークホストには、印刷サーバーのネットワーク通信を「ブラウズ」するための cups-browsed
サービスが必須であり、cups-browsed
を実行すると自動的に cupsd
が起動します。
USB プリンターは接続すると cups.service
サービスが自動的に起動しますが、他の接続タイプでは自動的に起動するとは限りません。cupsd
が起動していないと avahi-daemon
は印刷サービスを提供することができず、その場合、systemd のサービスユニットファイルを起動時に実行するように修正する必要があります。さらに、依存関係が新しくなったらサービスを再度有効化・インストールしなければなりません。サービスファイルの [Install]
セクションを編集して WantedBy=default.target
を追加し、cups.service
サービスを起動・有効化してください。
GNU/Linux と Windows
Linux サーバー - Windows クライアント
Windows クライアントを共有するには、#Bonjour で共有、#IPP で共有 あるいは #Samba で共有 する方法があります。
設定後、Windows コンピュータにプリンターのネイティブなプリンタードライバーをインストールしてください。CUPS のプリンタードライバーを使用するように CUPS サーバーを設定している場合、Windows クライアントでは汎用の postscript プリンターを選択します (例 'HP Color LaserJet 8500 PS' や 'Xerox DocuTech 135 PS2')。テストページを印刷してみて印刷設定をテストしてください。
Bonjour で共有
Bonjour Printing Services を利用すると簡単に Windows クライアントを Unix プリントサーバーに ブラウジングを有効にして 接続できます。
IPP で共有
Internet Printing Protocol はOS間で広くサポートされており、設定が簡単です。ポートフォワーディングやトンネリングなどの機能があります。IPP は Windows 2000 以降の Windows でネイティブでサポートされています。
まず、#GNU/Linux システム間に書かれているようにサーバーを設定してください。
Windows コンピュータ側で、コントロールパネル->デバイスとプリンターから「プリンターの追加」を選択します。Windows 10 の場合は「プリンターが一覧にない場合」をクリックしてください。次に、「共有プリンターの名前で選択する」を選んでプリンターの場所を入力してください:
http://hostname:631/printers/printer_name
hostname は GNU/Linux サーバーのホスト名や IP アドレスに、printer_name は接続されているプリンターの名前に置き換えてください。サーバーの完全修飾ドメイン名を使うこともできますが、/etc/cups/cupsd.conf
で ServerAlias my_fully_qualified_domain_name
を設定する必要があります。
Samba で共有
Samba は Windows におけるファイル共有やプリンター共有プロトコルの実装で、歴史のある実装です。
ただし Samba を使用したプリンター共有は、設定やメンテナンスが難しくなりがちです。
Linux サーバーの Samba を設定するために、/etc/samba/smb.conf
ファイルを編集してプリンターへのアクセスを許可してください。smb.conf
ファイルは以下のようになります:
/etc/samba/smb.conf
[global] workgroup=Heroes server string=Arch Linux Print Server security=user [printers] comment=All Printers path=/var/spool/samba browseable=yes # to allow user 'guest account' to print. guest ok=no writable=no printable=yes create mode=0700 write list=@adm root yourusername
プリンターを共有するには上記だけで十分ですが、個別のプリンターのエントリを追加するほうが好ましいでしょう:
/etc/samba/smb.conf
[ML1250] comment=Samsung ML-1250 Laser Printer printer=ml1250 path=/var/spool/samba printing=cups printable=yes printer admin=@admin root yourusername user client driver=yes # to allow user 'guest account' to print. guest ok=no writable=no write list=@adm root yourusername valid users=@adm root yourusername
上記の設定を使うにはユーザーがプリンターにアクセスするためのアカウントがないといけません。公開プリンターの場合は guest ok を yes に変更して、valid users 行を削除してください。アカウントを追加するには、通常の GNU/Linux アカウントをセットアップしてから、サーバーの Samba パスワードを設定してください。例:
# useradd yourusername # smbpasswd -a yourusername
設定後、Samba デーモンを再起動してください。
Samba の印刷サーバーの設定では様々なカスタマイズが可能です。詳しくは Samba や CUPS のドキュメントを参照してください。smb.conf.example
ファイルにも参考になる例があります。
Windows サーバー - Linux クライアント
LPD で共有
Windows 7, 8, 10 には LPD サーバーが組み込まれています。それを使うことでクライアントに Samba をインストールしたりサーバーで様々な設定を行うことなく簡単に共有が可能です。Control Panel を開いて Programs -> Activate Windows functions の Print services から有効にできます。プロパティによってプリンターの shared を有効にする必要があります。共有名には空白なカンマなどの特殊文字を使用してはいけません。
それから CUPS からプリンターを追加できます。LPD プロトコルを選択してください。プリンターアドレスは以下のようになります:
# lpd://windowspc/printersharename
プリンターを追加する前に、使用しているプリンターにあわせて適切なプリンタードライバーをインストールする必要があります。Generic PostScript や RAW ドライバーで動作するかもしれません。
IPP で共有
上記と同じく、プリンターを共有する際は IPP が推奨プロトコルです。ただし、下に書かれている Samba による方法よりも少しばかり難しくなります。Windows に IPP サーバーをセットアップするには労力が必要です。サーバーソフトウェアとしては一般的に Microsoft の Internet Information Services (IIS) が使われます。Windows 10 などクライアント版の Windows には IPP クライアントしか含まれていないため、IPP で共有することはできません。
Samba で共有
Samba 経由で Windows のネイティブのプリンター共有を使う方法はもっと簡単です。ほとんど設定が不要で、CUPS バックエンドから全て設定できます。上記の通り、何か問題が発生する場合、大抵は認証関連の問題や Windows のアクセス制限が原因です。
サーバー側で使用したいプリンターの共有を有効にして、クライアント側のユーザーにプリンターにアクセスする権限を付与してください。
以下のセクションでは (cupsd と smbd デーモンが動作している) クライアントを設定する方法を説明します。
ウェブインターフェイスを使って設定
Samba の CUPS バックエンドはデフォルトで有効になっていますが、何らかの理由で有効でない場合は以下のコマンドを実行してから CUPS を再起動してください:
# ln -s $(which smbspool) /usr/lib/cups/backend/smb
次に、CUPS ウェブインターフェイスにログインして新しいプリンターの追加を選択してください。デバイスは "Windows Printer via SAMBA" を選択します。
デバイスの場所は以下のように入力:
smb://username:password@hostname/printer_name
またはパスワードを使わない場合:
smb://username@hostname/printer_name
ユーザーが Windows コンピュータのプリンターにアクセスする権限を持っていることを確認して適切なドライバーを選択してください。コンピュータがドメイン上にある場合、URI にドメインを含めてください:
smb://username:password@domain/hostname/printer_name
手動設定
手動で設定する場合、CUPS デーモンを停止して以下のように /etc/cups/printers.conf
にプリンターを追加してください:
/etc/cups/printers.conf
<DefaultPrinter MyPrinter> AuthInfoRequired username,password Info My printer via SAMBA Location In my Office MakeModel Samsung ML-1250 - CUPS+Gutenprint v5.2.7 # <= use 'lpinfo -m' to list available models DeviceURI smb://username:password@hostname/printer_name # <= server URI as described in previous section State Idle Type 4 Accepting Yes Shared No JobSheets none none QuotaPeriod 0 PageLimit 0 KLimit 0 AllowUser yourusername # <= do not forget to change this OpPolicy default ErrorPolicy stop-printer </Printer>
設定したら CUPS デーモンを再起動してテスト印刷を行ってみてください。
Windows 印刷サーバーの URI を確認
Windows では正確なデバイス URI (デバイスの場所) が明確ではありません。CUPS でデバイスの場所を指定するときに問題が発生する場合、以下のコマンドを実行して特定の windows ユーザーから利用できる共有を確認できます:
$ smbtree -U windowsusername
Samba が正しく設定されていれば、上記のコマンドでローカルエリアネットワークサブネットで指定した Windows ユーザーから使える全ての共有が表示されます。以下のように出力されます:
WORKGROUP \\REGULATOR-PC \\REGULATOR-PC\Z \\REGULATOR-PC\Public \\REGULATOR-PC\print$ Printer Drivers \\REGULATOR-PC\G \\REGULATOR-PC\EPSON Stylus CX8400 Series EPSON Stylus CX8400 Series
上記の場合、最後の行がプリンターとわかります。上記の EPSON Stylus プリンターに印刷する場合、CUPS で使用する URI は以下のようになります:
smb://username.password@REGULATOR-PC/EPSON%20Stylus%20CX8400%20Series
リモート管理
#GNU/Linux システム間に書かれているようにサーバーをセットアップしたら、設定によってリモートで管理することができます。管理を許可するホストを /etc/cups/cupsd.conf
の <Location /admin>
ブロックに追加してください。使用する構文は#手動セットアップで説明されているものと同じです。3つのレベルで権限を与えることができます:
<Location /> #access to the server <Location /admin> #access to the admin pages <Location /admin/conf> #access to configuration files
リモートホストに与えたいレベルにあわせて、セクションに Allow
ステートメントを追加してください。Allow
ステートメントは以下の形式で使用することができます:
Allow from all Allow from host.domain.com Allow from *.domain.com Allow from ip-address Allow from ip-address/netmask Allow from @LOCAL
Deny ステートメントを使うこともできます。例えば、ローカルネットワークインターフェイスの全てのホストに完全な権限を与えたい場合、/etc/cups/cupsd.conf
を以下のように編集:
# Restrict access to the server... # By default only localhost connections are possible <Location /> Order allow,deny Allow from @LOCAL </Location> # Restrict access to the admin pages... <Location /admin> Order allow,deny Allow from @LOCAL </Location> # Restrict access to configuration files... <Location /admin/conf> AuthType Basic Require user @SYSTEM Order allow,deny Allow from @LOCAL </Location>
以下の設定を追加することでリモートマシンから CUPS ウェブインターフェイスを使用した場合に起こる 426 - Upgrade Required
エラーを止めることができます:
DefaultEncryption Never
Kerberos
Kerberos を使ってリモートの CUPS サーバーにアクセスするユーザーを認証することができます。マシンにキータブが存在することが前提で、"HTTP" のチケットが必要です。http://localhost:631
の代わりに https://host.example.co.uk:631
を使ってください。認証するために暗号化 (https) が必要な上に Kerberos/Negotiate を機能させるために完全なホストネームが必要です。さらにサーバーの /etc/cups/cupsd.conf
を設定して DefaultAuthType
を Negotiate
にする必要があります。
Samba の winbind NSS サポートを使用する場合、AD グループ名を /etc/cups/cups-files.conf
に追加することができます。以下の例では sysadmin
が AD グループです:
SystemGroup sys root sysadmin
トラブルシューティング
一般的なトラブルシューティングについては CUPS/トラブルシューティングを見てください。
GTK アプリケーションで印刷できない
GTK アプリケーションから印刷しようとすると "getting printer information failed" と表示される場合、/etc/hosts
に次の行を追加してください:
# serverip some.name.org ServersHostname
Samba でプリンターを追加・編集できない
Samba を使ってプリンターを追加・編集しようとすると、インターフェイスによる CPU の使用率が 100% の状態が30秒も続いた後に以下のメッセージが表示される場合:
Unable to get list of printer drivers: Success
Gutenprint (https://bugs.archlinux.org/task/43708) の既知のバグが原因です。Gutenprint をアンインストールして foomatic-db だけをインストールしてください。次のコマンドで "Success" メッセージの代わりにドライバーのリストが返ってくるはずです:
# lpinfo -m
Windows でパーミッションエラー
ユーザーによっては別の構文を使うことで 'NT_STATUS_ACCESS_DENIED' エラーが解決する場合があります (Windows クライアント):
smb://workgroup/username:password@hostname/printer_name
他のオペレーティングシステム
他の印刷システムと CUPS を繋げる方法の詳細は CUPS マニュアルにあります。例: http://localhost:631/help/network.html